diff --git a/src/Routing/.gitignore b/src/Routing/.gitignore index 5f8dfa9f48..74fb35463f 100644 --- a/src/Routing/.gitignore +++ b/src/Routing/.gitignore @@ -8,6 +8,7 @@ packages/ artifacts/ PublishProfiles/ .vs/ +.vscode/ .build/ .testPublish/ bower_components/ @@ -39,3 +40,5 @@ node_modules *launchSettings.json global.json BenchmarkDotNet.Artifacts/ +*.etl.zip +*.etl \ No newline at end of file diff --git a/src/Routing/Directory.Build.props b/src/Routing/Directory.Build.props index f1986d9953..2755b484ef 100644 --- a/src/Routing/Directory.Build.props +++ b/src/Routing/Directory.Build.props @@ -14,7 +14,7 @@ $(MSBuildThisFileDirectory) $(MSBuildThisFileDirectory)build\Key.snk true - true true + 7.3 diff --git a/src/Routing/Directory.Build.targets b/src/Routing/Directory.Build.targets index 53b3f6e1da..78626b773e 100644 --- a/src/Routing/Directory.Build.targets +++ b/src/Routing/Directory.Build.targets @@ -1,7 +1,10 @@ - + $(MicrosoftNETCoreApp20PackageVersion) $(MicrosoftNETCoreApp21PackageVersion) + $(MicrosoftNETCoreApp22PackageVersion) $(NETStandardLibrary20PackageVersion) + + 99.9 diff --git a/src/Routing/README.md b/src/Routing/README.md index 3c0794570b..b3202c355a 100644 --- a/src/Routing/README.md +++ b/src/Routing/README.md @@ -1,9 +1,9 @@ ASP.NET Routing === -AppVeyor: [![AppVeyor](https://ci.appveyor.com/api/projects/status/fe4o5h1s9ve86nyv/branch/dev?svg=true)](https://ci.appveyor.com/project/aspnetci/Routing/branch/dev) +AppVeyor: [![AppVeyor](https://ci.appveyor.com/api/projects/status/fe4o5h1s9ve86nyv/branch/master?svg=true)](https://ci.appveyor.com/project/aspnetci/Routing/branch/master) -Travis: [![Travis](https://travis-ci.org/aspnet/Routing.svg?branch=dev)](https://travis-ci.org/aspnet/Routing) +Travis: [![Travis](https://travis-ci.org/aspnet/Routing.svg?branch=master)](https://travis-ci.org/aspnet/Routing) Contains routing middleware for routing requests to application logic. diff --git a/src/Routing/Routing.sln b/src/Routing/Routing.sln index 13657187fa..e66b8e858f 100644 --- a/src/Routing/Routing.sln +++ b/src/Routing/Routing.sln @@ -1,3 +1,4 @@ + Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.27106.3000 @@ -18,10 +19,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Routin EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Routing.Tests", "test\Microsoft.AspNetCore.Routing.Tests\Microsoft.AspNetCore.Routing.Tests.csproj", "{636D79ED-7B32-487C-BDA5-D2A1AAA97371}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RoutingSample.Web", "samples\RoutingSample.Web\RoutingSample.Web.csproj", "{DB94E647-C73A-4F52-A126-AA7544CCF33B}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{C430C499-382D-47BD-B351-CF8F89C08CD2}" ProjectSection(SolutionItems) = preProject + build\dependencies.props = build\dependencies.props global.json = global.json NuGet.config = NuGet.config EndProjectSection @@ -45,6 +45,23 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Routin EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmarks", "benchmarks", "{D5F39F59-5725-4127-82E7-67028D006185}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmarkapps", "benchmarkapps", "{7F5914E2-C63F-4759-898E-462804357C90}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Benchmarks", "benchmarkapps\Benchmarks\Benchmarks.csproj", "{91F47A60-9A78-4968-B10D-157D9BFAC37F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{6824486A-3EFF-45D1-BEE8-8B137639C890}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Swaggatherer", "tools\Swaggatherer\Swaggatherer.csproj", "{B8516771-E850-4724-BEC3-63FC00C2AE57}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebSites", "WebSites", "{8E5E51D4-6B03-4FC6-9F34-6E9FA24702BD}" + ProjectSection(SolutionItems) = preProject + test\WebSites\Directory.Build.props = test\WebSites\Directory.Build.props + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RoutingWebSite", "test\WebSites\RoutingWebSite\RoutingWebSite.csproj", "{E91EC5EC-30A8-45EC-9B2F-67E2D6C39D74}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RoutingSandbox", "samples\RoutingSandbox\RoutingSandbox.csproj", "{89317AF8-1893-4F40-BCE2-7FB52E5A5033}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -75,16 +92,6 @@ Global {636D79ED-7B32-487C-BDA5-D2A1AAA97371}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {636D79ED-7B32-487C-BDA5-D2A1AAA97371}.Release|Mixed Platforms.Build.0 = Release|Any CPU {636D79ED-7B32-487C-BDA5-D2A1AAA97371}.Release|x86.ActiveCfg = Release|Any CPU - {DB94E647-C73A-4F52-A126-AA7544CCF33B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DB94E647-C73A-4F52-A126-AA7544CCF33B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DB94E647-C73A-4F52-A126-AA7544CCF33B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {DB94E647-C73A-4F52-A126-AA7544CCF33B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {DB94E647-C73A-4F52-A126-AA7544CCF33B}.Debug|x86.ActiveCfg = Debug|Any CPU - {DB94E647-C73A-4F52-A126-AA7544CCF33B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DB94E647-C73A-4F52-A126-AA7544CCF33B}.Release|Any CPU.Build.0 = Release|Any CPU - {DB94E647-C73A-4F52-A126-AA7544CCF33B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {DB94E647-C73A-4F52-A126-AA7544CCF33B}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {DB94E647-C73A-4F52-A126-AA7544CCF33B}.Release|x86.ActiveCfg = Release|Any CPU {09C2933C-23AC-41B7-994D-E8A5184A629C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {09C2933C-23AC-41B7-994D-E8A5184A629C}.Debug|Any CPU.Build.0 = Debug|Any CPU {09C2933C-23AC-41B7-994D-E8A5184A629C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -145,6 +152,54 @@ Global {F3D86714-4E64-41A6-9B36-A47B3683CF5D}.Release|Mixed Platforms.Build.0 = Release|Any CPU {F3D86714-4E64-41A6-9B36-A47B3683CF5D}.Release|x86.ActiveCfg = Release|Any CPU {F3D86714-4E64-41A6-9B36-A47B3683CF5D}.Release|x86.Build.0 = Release|Any CPU + {91F47A60-9A78-4968-B10D-157D9BFAC37F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {91F47A60-9A78-4968-B10D-157D9BFAC37F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {91F47A60-9A78-4968-B10D-157D9BFAC37F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {91F47A60-9A78-4968-B10D-157D9BFAC37F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {91F47A60-9A78-4968-B10D-157D9BFAC37F}.Debug|x86.ActiveCfg = Debug|Any CPU + {91F47A60-9A78-4968-B10D-157D9BFAC37F}.Debug|x86.Build.0 = Debug|Any CPU + {91F47A60-9A78-4968-B10D-157D9BFAC37F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {91F47A60-9A78-4968-B10D-157D9BFAC37F}.Release|Any CPU.Build.0 = Release|Any CPU + {91F47A60-9A78-4968-B10D-157D9BFAC37F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {91F47A60-9A78-4968-B10D-157D9BFAC37F}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {91F47A60-9A78-4968-B10D-157D9BFAC37F}.Release|x86.ActiveCfg = Release|Any CPU + {91F47A60-9A78-4968-B10D-157D9BFAC37F}.Release|x86.Build.0 = Release|Any CPU + {B8516771-E850-4724-BEC3-63FC00C2AE57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B8516771-E850-4724-BEC3-63FC00C2AE57}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B8516771-E850-4724-BEC3-63FC00C2AE57}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B8516771-E850-4724-BEC3-63FC00C2AE57}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {B8516771-E850-4724-BEC3-63FC00C2AE57}.Debug|x86.ActiveCfg = Debug|Any CPU + {B8516771-E850-4724-BEC3-63FC00C2AE57}.Debug|x86.Build.0 = Debug|Any CPU + {B8516771-E850-4724-BEC3-63FC00C2AE57}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B8516771-E850-4724-BEC3-63FC00C2AE57}.Release|Any CPU.Build.0 = Release|Any CPU + {B8516771-E850-4724-BEC3-63FC00C2AE57}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {B8516771-E850-4724-BEC3-63FC00C2AE57}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {B8516771-E850-4724-BEC3-63FC00C2AE57}.Release|x86.ActiveCfg = Release|Any CPU + {B8516771-E850-4724-BEC3-63FC00C2AE57}.Release|x86.Build.0 = Release|Any CPU + {E91EC5EC-30A8-45EC-9B2F-67E2D6C39D74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E91EC5EC-30A8-45EC-9B2F-67E2D6C39D74}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E91EC5EC-30A8-45EC-9B2F-67E2D6C39D74}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {E91EC5EC-30A8-45EC-9B2F-67E2D6C39D74}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {E91EC5EC-30A8-45EC-9B2F-67E2D6C39D74}.Debug|x86.ActiveCfg = Debug|Any CPU + {E91EC5EC-30A8-45EC-9B2F-67E2D6C39D74}.Debug|x86.Build.0 = Debug|Any CPU + {E91EC5EC-30A8-45EC-9B2F-67E2D6C39D74}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E91EC5EC-30A8-45EC-9B2F-67E2D6C39D74}.Release|Any CPU.Build.0 = Release|Any CPU + {E91EC5EC-30A8-45EC-9B2F-67E2D6C39D74}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {E91EC5EC-30A8-45EC-9B2F-67E2D6C39D74}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {E91EC5EC-30A8-45EC-9B2F-67E2D6C39D74}.Release|x86.ActiveCfg = Release|Any CPU + {E91EC5EC-30A8-45EC-9B2F-67E2D6C39D74}.Release|x86.Build.0 = Release|Any CPU + {89317AF8-1893-4F40-BCE2-7FB52E5A5033}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {89317AF8-1893-4F40-BCE2-7FB52E5A5033}.Debug|Any CPU.Build.0 = Debug|Any CPU + {89317AF8-1893-4F40-BCE2-7FB52E5A5033}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {89317AF8-1893-4F40-BCE2-7FB52E5A5033}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {89317AF8-1893-4F40-BCE2-7FB52E5A5033}.Debug|x86.ActiveCfg = Debug|Any CPU + {89317AF8-1893-4F40-BCE2-7FB52E5A5033}.Debug|x86.Build.0 = Debug|Any CPU + {89317AF8-1893-4F40-BCE2-7FB52E5A5033}.Release|Any CPU.ActiveCfg = Release|Any CPU + {89317AF8-1893-4F40-BCE2-7FB52E5A5033}.Release|Any CPU.Build.0 = Release|Any CPU + {89317AF8-1893-4F40-BCE2-7FB52E5A5033}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {89317AF8-1893-4F40-BCE2-7FB52E5A5033}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {89317AF8-1893-4F40-BCE2-7FB52E5A5033}.Release|x86.ActiveCfg = Release|Any CPU + {89317AF8-1893-4F40-BCE2-7FB52E5A5033}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -152,12 +207,16 @@ Global GlobalSection(NestedProjects) = preSolution {1EE54D32-6CED-4206-ACF5-3DC1DD39D228} = {0E966C37-7334-4D96-AAF6-9F49FBD166E3} {636D79ED-7B32-487C-BDA5-D2A1AAA97371} = {95359B4B-4C85-4B44-A75B-0621905C4CF6} - {DB94E647-C73A-4F52-A126-AA7544CCF33B} = {C3ADD55B-B9C7-4061-8AD4-6A70D1AE3B2E} {09C2933C-23AC-41B7-994D-E8A5184A629C} = {95359B4B-4C85-4B44-A75B-0621905C4CF6} {ED253B01-24F1-43D1-AA0B-079391E105A9} = {0E966C37-7334-4D96-AAF6-9F49FBD166E3} {741B0B05-CE96-473B-B962-6B0A347DF79A} = {95359B4B-4C85-4B44-A75B-0621905C4CF6} {5C73140B-41F3-466F-A07B-3614E4D80DF9} = {95359B4B-4C85-4B44-A75B-0621905C4CF6} {F3D86714-4E64-41A6-9B36-A47B3683CF5D} = {D5F39F59-5725-4127-82E7-67028D006185} + {91F47A60-9A78-4968-B10D-157D9BFAC37F} = {7F5914E2-C63F-4759-898E-462804357C90} + {B8516771-E850-4724-BEC3-63FC00C2AE57} = {6824486A-3EFF-45D1-BEE8-8B137639C890} + {8E5E51D4-6B03-4FC6-9F34-6E9FA24702BD} = {95359B4B-4C85-4B44-A75B-0621905C4CF6} + {E91EC5EC-30A8-45EC-9B2F-67E2D6C39D74} = {8E5E51D4-6B03-4FC6-9F34-6E9FA24702BD} + {89317AF8-1893-4F40-BCE2-7FB52E5A5033} = {C3ADD55B-B9C7-4061-8AD4-6A70D1AE3B2E} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {36C8D815-B7F1-479D-894B-E606FB8DECDA} diff --git a/src/Routing/Settings.StyleCop b/src/Routing/Settings.StyleCop new file mode 100644 index 0000000000..fc82ca344b --- /dev/null +++ b/src/Routing/Settings.StyleCop @@ -0,0 +1,430 @@ + + + NoMerge + + + + + False + + + + + + + + + False + + + + + False + + + + + + as + db + dc + do + ef + id + if + in + is + my + no + on + sl + to + ui + vs + + + + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + True + True + + + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + + + + Copyright (c) .NET Foundation. All rights reserved. See License.txt in the project root for license information. + + + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + + + + + + False + + + + + False + + + + + False + + + + + False + + + + + + + + + + False + + + + + False + + + + + False + + + + + False + + + + + False + + + + + + + + + + False + + + + + + + False + + + + + False + + + + + + + + + Copyright (c) .NET Foundation. All rights reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + + + + + + 120 + + + + \ No newline at end of file diff --git a/src/Routing/THIRD-PARTY-NOTICES b/src/Routing/THIRD-PARTY-NOTICES new file mode 100644 index 0000000000..3a984c8673 --- /dev/null +++ b/src/Routing/THIRD-PARTY-NOTICES @@ -0,0 +1,21 @@ +.NET Core uses third-party libraries or other resources that may be +distributed under licenses different than the .NET Core software. + +In the event that we accidentally failed to list a required notice, please +bring it to our attention. Post an issue or email us: + + dotnet@microsoft.com + +The attached notices are provided for information only. + +License notice for viz.js +------------------------------------ + +Copyright (c) 2014-2018 Michael Daines + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/src/Routing/benchmarkapps/Benchmarks/Benchmarks.csproj b/src/Routing/benchmarkapps/Benchmarks/Benchmarks.csproj new file mode 100644 index 0000000000..3c5753cc64 --- /dev/null +++ b/src/Routing/benchmarkapps/Benchmarks/Benchmarks.csproj @@ -0,0 +1,22 @@ + + + + netcoreapp2.2 + $(BenchmarksTargetFramework) + true + + + + + + + + + + + + + + + + diff --git a/src/Routing/benchmarkapps/Benchmarks/Program.cs b/src/Routing/benchmarkapps/Benchmarks/Program.cs new file mode 100644 index 0000000000..4e832df4a2 --- /dev/null +++ b/src/Routing/benchmarkapps/Benchmarks/Program.cs @@ -0,0 +1,53 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; + +namespace Benchmarks +{ + public class Program + { + public static void Main(string[] args) + { + GetWebHostBuilder(args).Build().Run(); + } + + public static IWebHostBuilder GetWebHostBuilder(string[] args) + { + var config = new ConfigurationBuilder() + .AddCommandLine(args) + .AddEnvironmentVariables(prefix: "RoutingBenchmarks_") + .Build(); + + // Consoler logger has a major impact on perf results, so do not use + // default builder. + + var webHostBuilder = new WebHostBuilder() + .UseConfiguration(config) + .UseKestrel(); + + var scenario = config["scenarios"]?.ToLower(); + if (scenario == "plaintextdispatcher" || scenario == "plaintextendpointrouting") + { + webHostBuilder.UseStartup(); + // for testing + webHostBuilder.UseSetting("Startup", nameof(StartupUsingEndpointRouting)); + } + else if (scenario == "plaintextrouting" || scenario == "plaintextrouter") + { + webHostBuilder.UseStartup(); + // for testing + webHostBuilder.UseSetting("Startup", nameof(StartupUsingRouter)); + } + else + { + throw new InvalidOperationException( + $"Invalid scenario '{scenario}'. Allowed scenarios are PlaintextEndpointRouting and PlaintextRouter"); + } + + return webHostBuilder; + } + } +} diff --git a/src/Routing/benchmarkapps/Benchmarks/StartupUsingEndpointRouting.cs b/src/Routing/benchmarkapps/Benchmarks/StartupUsingEndpointRouting.cs new file mode 100644 index 0000000000..2814badc32 --- /dev/null +++ b/src/Routing/benchmarkapps/Benchmarks/StartupUsingEndpointRouting.cs @@ -0,0 +1,50 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Text; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Internal; +using Microsoft.AspNetCore.Routing; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; + +namespace Benchmarks +{ + public class StartupUsingEndpointRouting + { + private static readonly byte[] _helloWorldPayload = Encoding.UTF8.GetBytes("Hello, World!"); + + public void ConfigureServices(IServiceCollection services) + { + services.AddRouting(); + + var endpointDataSource = new DefaultEndpointDataSource(new[] + { + new RouteEndpoint( + requestDelegate: (httpContext) => + { + var response = httpContext.Response; + var payloadLength = _helloWorldPayload.Length; + response.StatusCode = 200; + response.ContentType = "text/plain"; + response.ContentLength = payloadLength; + return response.Body.WriteAsync(_helloWorldPayload, 0, payloadLength); + }, + routePattern: RoutePatternFactory.Parse("/plaintext"), + order: 0, + metadata: EndpointMetadataCollection.Empty, + displayName: "Plaintext"), + }); + + services.TryAddEnumerable(ServiceDescriptor.Singleton(endpointDataSource)); + } + + public void Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder app) + { + app.UseEndpointRouting(); + + app.UseEndpoint(); + } + } +} \ No newline at end of file diff --git a/src/Routing/benchmarkapps/Benchmarks/StartupUsingRouter.cs b/src/Routing/benchmarkapps/Benchmarks/StartupUsingRouter.cs new file mode 100644 index 0000000000..ef1528bf1b --- /dev/null +++ b/src/Routing/benchmarkapps/Benchmarks/StartupUsingRouter.cs @@ -0,0 +1,36 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.DependencyInjection; +using System.Text; + +namespace Benchmarks +{ + public class StartupUsingRouter + { + private static readonly byte[] _helloWorldPayload = Encoding.UTF8.GetBytes("Hello, World!"); + + public void ConfigureServices(IServiceCollection services) + { + services.AddRouting(); + } + + public void Configure(IApplicationBuilder app) + { + app.UseRouter(routes => + { + routes.MapRoute("/plaintext", (httpContext) => + { + var response = httpContext.Response; + var payloadLength = _helloWorldPayload.Length; + response.StatusCode = 200; + response.ContentType = "text/plain"; + response.ContentLength = payloadLength; + return response.Body.WriteAsync(_helloWorldPayload, 0, payloadLength); + }); + }); + } + } +} \ No newline at end of file diff --git a/src/Routing/benchmarkapps/Benchmarks/benchmarks.json b/src/Routing/benchmarkapps/Benchmarks/benchmarks.json new file mode 100644 index 0000000000..1779a80c8c --- /dev/null +++ b/src/Routing/benchmarkapps/Benchmarks/benchmarks.json @@ -0,0 +1,28 @@ +{ + "Default": { + "Client": "Wrk", + "PresetHeaders": "Plaintext", + "ClientProperties": { + "ScriptName": "pipeline", + "PipelineDepth": 16 + }, + "Source": { + "Repository": "https://github.com/aspnet/routing.git", + "BranchOrCommit": "release/2.2", + "Project": "benchmarkapps/Benchmarks/Benchmarks.csproj" + }, + "Port": 8080 + }, + "PlaintextRouting": { + "Path": "/plaintext" + }, + "PlaintextRouter": { + "Path": "/plaintext" + }, + "PlaintextDispatcher": { + "Path": "/plaintext" + }, + "PlaintextEndpointRouting": { + "Path": "/plaintext" + } +} diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Configs/CoreConfig.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Configs/CoreConfig.cs deleted file mode 100644 index bbeb805e6d..0000000000 --- a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Configs/CoreConfig.cs +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using BenchmarkDotNet.Columns; -using BenchmarkDotNet.Configs; -using BenchmarkDotNet.Diagnosers; -using BenchmarkDotNet.Engines; -using BenchmarkDotNet.Jobs; -using BenchmarkDotNet.Validators; - -namespace Microsoft.AspNetCore.Routing.Performance -{ - public class CoreConfig : ManualConfig - { - public CoreConfig() - { - Add(JitOptimizationsValidator.FailOnError); - Add(MemoryDiagnoser.Default); - Add(StatisticColumn.OperationsPerSecond); - - Add(Job.Default - .With(BenchmarkDotNet.Environments.Runtime.Core) - .WithRemoveOutliers(false) - .With(new GcMode() { Server = true }) - .With(RunStrategy.Throughput) - .WithLaunchCount(3) - .WithWarmupCount(5) - .WithTargetCount(10)); - } - } -} \ No newline at end of file diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/EndpointMetadataCollectionBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/EndpointMetadataCollectionBenchmark.cs new file mode 100644 index 0000000000..3e5492b8a2 --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/EndpointMetadataCollectionBenchmark.cs @@ -0,0 +1,128 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using BenchmarkDotNet.Attributes; +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing +{ + public class EndpointMetadataCollectionBenchmark + { + private object[] _items; + private EndpointMetadataCollection _collection; + + [Params(3, 10, 25)] + public int Count { get; set; } + + [GlobalSetup] + public void Setup() + { + var seeds = new Type[] + { + typeof(Metadata1), + typeof(Metadata2), + typeof(Metadata3), + typeof(Metadata4), + typeof(Metadata5), + typeof(Metadata6), + typeof(Metadata7), + typeof(Metadata8), + typeof(Metadata9), + }; + + _items = new object[Count]; + for (var i = 0; i < _items.Length; i++) + { + _items[i] = seeds[i % seeds.Length]; + } + + _collection = new EndpointMetadataCollection(_items); + } + + // This is a synthetic baseline that visits each item and does an as-cast. + [Benchmark(Baseline = true, OperationsPerInvoke = 5)] + public void Baseline() + { + var items = _items; + for (var i = items.Length - 1; i >= 0; i--) + { + GC.KeepAlive(_items[i] as IMetadata1); + } + + for (var i = items.Length - 1; i >= 0; i--) + { + GC.KeepAlive(_items[i] as IMetadata2); + } + + for (var i = items.Length - 1; i >= 0; i--) + { + GC.KeepAlive(_items[i] as IMetadata3); + } + + for (var i = items.Length - 1; i >= 0; i--) + { + GC.KeepAlive(_items[i] as IMetadata4); + } + + for (var i = items.Length - 1; i >= 0; i--) + { + GC.KeepAlive(_items[i] as IMetadata5); + } + } + + [Benchmark(OperationsPerInvoke = 5)] + public void GetMetadata() + { + GC.KeepAlive(_collection.GetMetadata()); + GC.KeepAlive(_collection.GetMetadata()); + GC.KeepAlive(_collection.GetMetadata()); + GC.KeepAlive(_collection.GetMetadata()); + GC.KeepAlive(_collection.GetMetadata()); + } + + [Benchmark(OperationsPerInvoke = 5)] + public void GetOrderedMetadata() + { + foreach (var item in _collection.GetOrderedMetadata()) + { + GC.KeepAlive(item); + } + + foreach (var item in _collection.GetOrderedMetadata()) + { + GC.KeepAlive(item); + } + + foreach (var item in _collection.GetOrderedMetadata()) + { + GC.KeepAlive(item); + } + + foreach (var item in _collection.GetOrderedMetadata()) + { + GC.KeepAlive(item); + } + + foreach (var item in _collection.GetOrderedMetadata()) + { + GC.KeepAlive(item); + } + } + + private interface IMetadata1 { } + private interface IMetadata2 { } + private interface IMetadata3 { } + private interface IMetadata4 { } + private interface IMetadata5 { } + private class Metadata1 : IMetadata1 { } + private class Metadata2 : IMetadata2 { } + private class Metadata3 : IMetadata3 { } + private class Metadata4 : IMetadata4 { } + private class Metadata5 : IMetadata5 { } + private class Metadata6 : IMetadata1, IMetadata2 { } + private class Metadata7 : IMetadata2, IMetadata3 { } + private class Metadata8 : IMetadata4, IMetadata5 { } + private class Metadata9 : IMetadata1, IMetadata2 { } + } +} diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/EndpointRoutingBenchmarkBase.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/EndpointRoutingBenchmarkBase.cs new file mode 100644 index 0000000000..58c50f1225 --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/EndpointRoutingBenchmarkBase.cs @@ -0,0 +1,156 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; +using Microsoft.AspNetCore.Routing.Matching; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.AspNetCore.Routing.Template; +using Microsoft.AspNetCore.Routing.Tree; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; +using Microsoft.Extensions.ObjectPool; + +namespace Microsoft.AspNetCore.Routing +{ + public abstract class EndpointRoutingBenchmarkBase + { + private protected RouteEndpoint[] Endpoints; + private protected HttpContext[] Requests; + + private protected void SetupEndpoints(params RouteEndpoint[] endpoints) + { + Endpoints = endpoints; + } + + // The older routing implementations retrieve services when they first execute. + private protected IServiceProvider CreateServices() + { + var services = new ServiceCollection(); + services.AddSingleton(); + services.AddLogging(); + services.AddOptions(); + services.AddRouting(); + + services.TryAddEnumerable( + ServiceDescriptor.Singleton(new DefaultEndpointDataSource(Endpoints))); + + return services.BuildServiceProvider(); + } + + private protected DfaMatcherBuilder CreateDfaMatcherBuilder() + { + return CreateServices().GetRequiredService(); + } + + private protected static int[] SampleRequests(int endpointCount, int count) + { + // This isn't very high tech, but it's at least regular distribution. + // We sort the route templates by precedence, so this should result in + // an even distribution of the 'complexity' of the routes that are exercised. + var frequency = endpointCount / count; + if (frequency < 2) + { + throw new InvalidOperationException( + "The sample count is too high. This won't produce an accurate sampling" + + "of the request data."); + } + + var samples = new int[count]; + for (var i = 0; i < samples.Length; i++) + { + samples[i] = i * frequency; + } + + return samples; + } + + [MethodImpl(MethodImplOptions.NoInlining)] + private protected void Validate(HttpContext httpContext, Endpoint expected, Endpoint actual) + { + if (!object.ReferenceEquals(expected, actual)) + { + var message = new StringBuilder(); + message.AppendLine($"Validation failed for request {Array.IndexOf(Requests, httpContext)}"); + message.AppendLine($"{httpContext.Request.Method} {httpContext.Request.Path}"); + message.AppendLine($"expected: '{((RouteEndpoint)expected)?.DisplayName ?? "null"}'"); + message.AppendLine($"actual: '{((RouteEndpoint)actual)?.DisplayName ?? "null"}'"); + throw new InvalidOperationException(message.ToString()); + } + } + + protected void AssertUrl(string expectedUrl, string actualUrl) + { + AssertUrl(expectedUrl, actualUrl, StringComparison.Ordinal); + } + + protected void AssertUrl(string expectedUrl, string actualUrl, StringComparison stringComparison) + { + if (!string.Equals(expectedUrl, actualUrl, stringComparison)) + { + throw new InvalidOperationException($"Expected: {expectedUrl}, Actual: {actualUrl}"); + } + } + + protected RouteEndpoint CreateEndpoint(string template, string httpMethod) + { + return CreateEndpoint(template, metadata: new object[] + { + new HttpMethodMetadata(new string[]{ httpMethod, }), + }); + } + + protected RouteEndpoint CreateEndpoint( + string template, + object defaults = null, + object constraints = null, + object requiredValues = null, + int order = 0, + string displayName = null, + string routeName = null, + params object[] metadata) + { + var endpointMetadata = new List(metadata ?? Array.Empty()); + endpointMetadata.Add(new RouteValuesAddressMetadata(routeName, new RouteValueDictionary(requiredValues))); + + return new RouteEndpoint( + (context) => Task.CompletedTask, + RoutePatternFactory.Parse(template, defaults, constraints), + order, + new EndpointMetadataCollection(endpointMetadata), + displayName); + } + + protected (HttpContext httpContext, RouteValueDictionary ambientValues) CreateCurrentRequestContext( + object ambientValues = null) + { + var feature = new EndpointSelectorContext { RouteValues = new RouteValueDictionary(ambientValues) }; + var context = new DefaultHttpContext(); + context.Features.Set(feature); + context.Features.Set(feature); + + return (context, feature.RouteValues); + } + + protected void CreateOutboundRouteEntry(TreeRouteBuilder treeRouteBuilder, RouteEndpoint endpoint) + { + var routeValuesAddressMetadata = endpoint.Metadata.GetMetadata(); + var requiredValues = routeValuesAddressMetadata?.RequiredValues ?? new RouteValueDictionary(); + + treeRouteBuilder.MapOutbound( + NullRouter.Instance, + new RouteTemplate(RoutePatternFactory.Parse( + endpoint.RoutePattern.RawText, + defaults: endpoint.RoutePattern.Defaults, + parameterPolicies: null)), + requiredLinkValues: new RouteValueDictionary(requiredValues), + routeName: null, + order: 0); + } + } +} diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/LinkGeneration/LinkGenerationGithubBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/LinkGeneration/LinkGenerationGithubBenchmark.cs new file mode 100644 index 0000000000..32e05549c2 --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/LinkGeneration/LinkGenerationGithubBenchmark.cs @@ -0,0 +1,75 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using BenchmarkDotNet.Attributes; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Tree; +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.AspNetCore.Routing.LinkGeneration +{ + public partial class LinkGenerationGithubBenchmark + { + private LinkGenerator _linkGenerator; + private TreeRouter _treeRouter; + private (HttpContext HttpContext, RouteValueDictionary AmbientValues) _requestContext; + private RouteValueDictionary _lookUpValues; + + [GlobalSetup] + public void Setup() + { + SetupEndpoints(); + + var services = CreateServices(); + _linkGenerator = services.GetRequiredService(); + + // Attribute routing related + var treeRouteBuilder = services.GetRequiredService(); + foreach (var endpoint in Endpoints) + { + CreateOutboundRouteEntry(treeRouteBuilder, endpoint); + } + _treeRouter = treeRouteBuilder.Build(); + + _requestContext = CreateCurrentRequestContext(); + + // Get the endpoint to test and pre-populate the lookup values with the defaults + // (as they are dynamically generated) and update with other required parameter values. + // /repos/{owner}/{repo}/issues/comments/{commentId} + var endpointToTest = Endpoints[176]; + _lookUpValues = new RouteValueDictionary(endpointToTest.RoutePattern.Defaults); + _lookUpValues["owner"] = "aspnet"; + _lookUpValues["repo"] = "routing"; + _lookUpValues["commentId"] = "20202"; + } + + [Benchmark(Baseline = true)] + public void Baseline() + { + var url = $"/repos/{_lookUpValues["owner"]}/{_lookUpValues["repo"]}/issues/comments/{_lookUpValues["commentId"]}"; + AssertUrl("/repos/aspnet/routing/issues/comments/20202", url); + } + + [Benchmark] + public void TreeRouter() + { + var virtualPathData = _treeRouter.GetVirtualPath(new VirtualPathContext( + _requestContext.HttpContext, + ambientValues: _requestContext.AmbientValues, + values: new RouteValueDictionary(_lookUpValues))); + + AssertUrl("/repos/aspnet/routing/issues/comments/20202", virtualPathData?.VirtualPath); + } + + [Benchmark] + public void EndpointRouting() + { + var actualUrl = _linkGenerator.GetPathByRouteValues( + _requestContext.HttpContext, + routeName: null, + values: _lookUpValues); + + AssertUrl("/repos/aspnet/routing/issues/comments/20202", actualUrl); + } + } +} diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/LinkGeneration/LinkGenerationGithubBenchmark.generated.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/LinkGeneration/LinkGenerationGithubBenchmark.generated.cs new file mode 100644 index 0000000000..2da180b1d2 --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/LinkGeneration/LinkGenerationGithubBenchmark.generated.cs @@ -0,0 +1,1519 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Matching; + +namespace Microsoft.AspNetCore.Routing.LinkGeneration +{ + // This code was generated by the Swaggatherer + public partial class LinkGenerationGithubBenchmark : EndpointRoutingBenchmarkBase + { + private const int EndpointCount = 243; + + private void SetupEndpoints() + { + Endpoints = new RouteEndpoint[243]; + Endpoints[0] = CreateEndpoint("/emojis", "Controller1", "Action1", "GET"); + Endpoints[1] = CreateEndpoint("/events", "Controller2", "Action1", "GET"); + Endpoints[2] = CreateEndpoint("/feeds", "Controller3", "Action1", "GET"); + Endpoints[3] = CreateEndpoint("/gists", "Controller4", "Action1", "GET"); + Endpoints[4] = CreateEndpoint("/gists", "Controller4", "Action2", "POST"); + Endpoints[5] = CreateEndpoint("/issues", "Controller5", "Action1", "GET"); + Endpoints[6] = CreateEndpoint("/markdown", "Controller6", "Action1", "POST"); + Endpoints[7] = CreateEndpoint("/meta", "Controller7", "Action1", "GET"); + Endpoints[8] = CreateEndpoint("/notifications", "Controller8", "Action1", "GET"); + Endpoints[9] = CreateEndpoint("/notifications", "Controller8", "Action2", "PUT"); + Endpoints[10] = CreateEndpoint("/rate_limit", "Controller9", "Action1", "GET"); + Endpoints[11] = CreateEndpoint("/repositories", "Controller10", "Action1", "GET"); + Endpoints[12] = CreateEndpoint("/user", "Controller11", "Action1", "GET"); + Endpoints[13] = CreateEndpoint("/user", "Controller11", "Action2", "PATCH"); + Endpoints[14] = CreateEndpoint("/users", "Controller12", "Action1", "GET"); + Endpoints[15] = CreateEndpoint("/gists/public", "Controller13", "Action1", "GET"); + Endpoints[16] = CreateEndpoint("/gists/starred", "Controller14", "Action1", "GET"); + Endpoints[17] = CreateEndpoint("/gitignore/templates", "Controller15", "Action1", "GET"); + Endpoints[18] = CreateEndpoint("/markdown/raw", "Controller16", "Action1", "POST"); + Endpoints[19] = CreateEndpoint("/search/code", "Controller17", "Action1", "GET"); + Endpoints[20] = CreateEndpoint("/search/issues", "Controller18", "Action1", "GET"); + Endpoints[21] = CreateEndpoint("/search/repositories", "Controller19", "Action1", "GET"); + Endpoints[22] = CreateEndpoint("/search/users", "Controller20", "Action1", "GET"); + Endpoints[23] = CreateEndpoint("/user/emails", "Controller21", "Action1", "GET"); + Endpoints[24] = CreateEndpoint("/user/emails", "Controller21", "Action2", "DELETE"); + Endpoints[25] = CreateEndpoint("/user/emails", "Controller21", "Action3", "POST"); + Endpoints[26] = CreateEndpoint("/user/followers", "Controller22", "Action1", "GET"); + Endpoints[27] = CreateEndpoint("/user/following", "Controller23", "Action1", "GET"); + Endpoints[28] = CreateEndpoint("/user/issues", "Controller24", "Action1", "GET"); + Endpoints[29] = CreateEndpoint("/user/keys", "Controller25", "Action1", "POST"); + Endpoints[30] = CreateEndpoint("/user/keys", "Controller25", "Action2", "GET"); + Endpoints[31] = CreateEndpoint("/user/orgs", "Controller26", "Action1", "GET"); + Endpoints[32] = CreateEndpoint("/user/repos", "Controller27", "Action1", "GET"); + Endpoints[33] = CreateEndpoint("/user/repos", "Controller27", "Action2", "POST"); + Endpoints[34] = CreateEndpoint("/user/starred", "Controller28", "Action1", "GET"); + Endpoints[35] = CreateEndpoint("/user/subscriptions", "Controller29", "Action1", "GET"); + Endpoints[36] = CreateEndpoint("/user/teams", "Controller30", "Action1", "GET"); + Endpoints[37] = CreateEndpoint("/legacy/repos/search/{keyword}", "Controller31", "Action1", "GET"); + Endpoints[38] = CreateEndpoint("/legacy/user/email/{email}", "Controller32", "Action1", "GET"); + Endpoints[39] = CreateEndpoint("/legacy/user/search/{keyword}", "Controller33", "Action1", "GET"); + Endpoints[40] = CreateEndpoint("/legacy/issues/search/{owner}/{repository}/{state}/{keyword}", "Controller34", "Action1", "GET"); + Endpoints[41] = CreateEndpoint("/gitignore/templates/{language}", "Controller35", "Action1", "GET"); + Endpoints[42] = CreateEndpoint("/notifications/threads/{id}", "Controller36", "Action1", "GET"); + Endpoints[43] = CreateEndpoint("/notifications/threads/{id}", "Controller36", "Action2", "PATCH"); + Endpoints[44] = CreateEndpoint("/user/following/{username}", "Controller37", "Action1", "DELETE"); + Endpoints[45] = CreateEndpoint("/user/following/{username}", "Controller37", "Action2", "GET"); + Endpoints[46] = CreateEndpoint("/user/following/{username}", "Controller37", "Action3", "PUT"); + Endpoints[47] = CreateEndpoint("/user/keys/{keyId}", "Controller38", "Action1", "DELETE"); + Endpoints[48] = CreateEndpoint("/user/keys/{keyId}", "Controller38", "Action2", "GET"); + Endpoints[49] = CreateEndpoint("/notifications/threads/{id}/subscription", "Controller39", "Action1", "DELETE"); + Endpoints[50] = CreateEndpoint("/notifications/threads/{id}/subscription", "Controller39", "Action2", "GET"); + Endpoints[51] = CreateEndpoint("/notifications/threads/{id}/subscription", "Controller39", "Action3", "PUT"); + Endpoints[52] = CreateEndpoint("/user/starred/{owner}/{repo}", "Controller40", "Action1", "PUT"); + Endpoints[53] = CreateEndpoint("/user/starred/{owner}/{repo}", "Controller40", "Action2", "GET"); + Endpoints[54] = CreateEndpoint("/user/starred/{owner}/{repo}", "Controller40", "Action3", "DELETE"); + Endpoints[55] = CreateEndpoint("/user/subscriptions/{owner}/{repo}", "Controller41", "Action1", "PUT"); + Endpoints[56] = CreateEndpoint("/user/subscriptions/{owner}/{repo}", "Controller41", "Action2", "GET"); + Endpoints[57] = CreateEndpoint("/user/subscriptions/{owner}/{repo}", "Controller41", "Action3", "DELETE"); + Endpoints[58] = CreateEndpoint("/gists/{id}", "Controller42", "Action1", "GET"); + Endpoints[59] = CreateEndpoint("/gists/{id}", "Controller42", "Action2", "PATCH"); + Endpoints[60] = CreateEndpoint("/gists/{id}", "Controller42", "Action3", "DELETE"); + Endpoints[61] = CreateEndpoint("/orgs/{org}", "Controller43", "Action1", "PATCH"); + Endpoints[62] = CreateEndpoint("/orgs/{org}", "Controller43", "Action2", "GET"); + Endpoints[63] = CreateEndpoint("/teams/{teamId}", "Controller44", "Action1", "PATCH"); + Endpoints[64] = CreateEndpoint("/teams/{teamId}", "Controller44", "Action2", "GET"); + Endpoints[65] = CreateEndpoint("/teams/{teamId}", "Controller44", "Action3", "DELETE"); + Endpoints[66] = CreateEndpoint("/users/{username}", "Controller45", "Action1", "GET"); + Endpoints[67] = CreateEndpoint("/gists/{id}/comments", "Controller46", "Action1", "GET"); + Endpoints[68] = CreateEndpoint("/gists/{id}/comments", "Controller46", "Action2", "POST"); + Endpoints[69] = CreateEndpoint("/gists/{id}/forks", "Controller47", "Action1", "POST"); + Endpoints[70] = CreateEndpoint("/gists/{id}/star", "Controller48", "Action1", "DELETE"); + Endpoints[71] = CreateEndpoint("/gists/{id}/star", "Controller48", "Action2", "GET"); + Endpoints[72] = CreateEndpoint("/gists/{id}/star", "Controller48", "Action3", "PUT"); + Endpoints[73] = CreateEndpoint("/orgs/{org}/events", "Controller49", "Action1", "GET"); + Endpoints[74] = CreateEndpoint("/orgs/{org}/issues", "Controller50", "Action1", "GET"); + Endpoints[75] = CreateEndpoint("/orgs/{org}/members", "Controller51", "Action1", "GET"); + Endpoints[76] = CreateEndpoint("/orgs/{org}/public_members", "Controller52", "Action1", "GET"); + Endpoints[77] = CreateEndpoint("/orgs/{org}/repos", "Controller53", "Action1", "GET"); + Endpoints[78] = CreateEndpoint("/orgs/{org}/repos", "Controller53", "Action2", "POST"); + Endpoints[79] = CreateEndpoint("/orgs/{org}/teams", "Controller54", "Action1", "POST"); + Endpoints[80] = CreateEndpoint("/orgs/{org}/teams", "Controller54", "Action2", "GET"); + Endpoints[81] = CreateEndpoint("/teams/{teamId}/members", "Controller55", "Action1", "GET"); + Endpoints[82] = CreateEndpoint("/teams/{teamId}/repos", "Controller56", "Action1", "GET"); + Endpoints[83] = CreateEndpoint("/users/{username}/events", "Controller57", "Action1", "GET"); + Endpoints[84] = CreateEndpoint("/users/{username}/followers", "Controller58", "Action1", "GET"); + Endpoints[85] = CreateEndpoint("/users/{username}/gists", "Controller59", "Action1", "GET"); + Endpoints[86] = CreateEndpoint("/users/{username}/keys", "Controller60", "Action1", "GET"); + Endpoints[87] = CreateEndpoint("/users/{username}/orgs", "Controller61", "Action1", "GET"); + Endpoints[88] = CreateEndpoint("/users/{username}/received_events", "Controller62", "Action1", "GET"); + Endpoints[89] = CreateEndpoint("/users/{username}/repos", "Controller63", "Action1", "GET"); + Endpoints[90] = CreateEndpoint("/users/{username}/starred", "Controller64", "Action1", "GET"); + Endpoints[91] = CreateEndpoint("/users/{username}/subscriptions", "Controller65", "Action1", "GET"); + Endpoints[92] = CreateEndpoint("/users/{username}/received_events/public", "Controller66", "Action1", "GET"); + Endpoints[93] = CreateEndpoint("/users/{username}/events/orgs/{org}", "Controller67", "Action1", "GET"); + Endpoints[94] = CreateEndpoint("/gists/{id}/comments/{commentId}", "Controller68", "Action1", "DELETE"); + Endpoints[95] = CreateEndpoint("/gists/{id}/comments/{commentId}", "Controller68", "Action2", "GET"); + Endpoints[96] = CreateEndpoint("/gists/{id}/comments/{commentId}", "Controller68", "Action3", "PATCH"); + Endpoints[97] = CreateEndpoint("/orgs/{org}/members/{username}", "Controller69", "Action1", "DELETE"); + Endpoints[98] = CreateEndpoint("/orgs/{org}/members/{username}", "Controller69", "Action2", "GET"); + Endpoints[99] = CreateEndpoint("/orgs/{org}/public_members/{username}", "Controller70", "Action1", "PUT"); + Endpoints[100] = CreateEndpoint("/orgs/{org}/public_members/{username}", "Controller70", "Action2", "GET"); + Endpoints[101] = CreateEndpoint("/orgs/{org}/public_members/{username}", "Controller70", "Action3", "DELETE"); + Endpoints[102] = CreateEndpoint("/teams/{teamId}/members/{username}", "Controller71", "Action1", "GET"); + Endpoints[103] = CreateEndpoint("/teams/{teamId}/members/{username}", "Controller71", "Action2", "PUT"); + Endpoints[104] = CreateEndpoint("/teams/{teamId}/members/{username}", "Controller71", "Action3", "DELETE"); + Endpoints[105] = CreateEndpoint("/teams/{teamId}/memberships/{username}", "Controller72", "Action1", "DELETE"); + Endpoints[106] = CreateEndpoint("/teams/{teamId}/memberships/{username}", "Controller72", "Action2", "PUT"); + Endpoints[107] = CreateEndpoint("/teams/{teamId}/memberships/{username}", "Controller72", "Action3", "GET"); + Endpoints[108] = CreateEndpoint("/users/{username}/following/{targetUser}", "Controller73", "Action1", "GET"); + Endpoints[109] = CreateEndpoint("/teams/{teamId}/repos/{org}/{repo}", "Controller74", "Action1", "PUT"); + Endpoints[110] = CreateEndpoint("/teams/{teamId}/repos/{owner}/{repo}", "Controller75", "Action1", "DELETE"); + Endpoints[111] = CreateEndpoint("/teams/{teamId}/repos/{owner}/{repo}", "Controller75", "Action2", "GET"); + Endpoints[112] = CreateEndpoint("/repos/{owner}/{repo}", "Controller76", "Action1", "PATCH"); + Endpoints[113] = CreateEndpoint("/repos/{owner}/{repo}", "Controller76", "Action2", "DELETE"); + Endpoints[114] = CreateEndpoint("/repos/{owner}/{repo}", "Controller76", "Action3", "GET"); + Endpoints[115] = CreateEndpoint("/networks/{owner}/{repo}/events", "Controller77", "Action1", "GET"); + Endpoints[116] = CreateEndpoint("/repos/{owner}/{repo}/assignees", "Controller78", "Action1", "GET"); + Endpoints[117] = CreateEndpoint("/repos/{owner}/{repo}/branches", "Controller79", "Action1", "GET"); + Endpoints[118] = CreateEndpoint("/repos/{owner}/{repo}/collaborators", "Controller80", "Action1", "GET"); + Endpoints[119] = CreateEndpoint("/repos/{owner}/{repo}/comments", "Controller81", "Action1", "GET"); + Endpoints[120] = CreateEndpoint("/repos/{owner}/{repo}/commits", "Controller82", "Action1", "GET"); + Endpoints[121] = CreateEndpoint("/repos/{owner}/{repo}/contributors", "Controller83", "Action1", "GET"); + Endpoints[122] = CreateEndpoint("/repos/{owner}/{repo}/deployments", "Controller84", "Action1", "GET"); + Endpoints[123] = CreateEndpoint("/repos/{owner}/{repo}/deployments", "Controller84", "Action2", "POST"); + Endpoints[124] = CreateEndpoint("/repos/{owner}/{repo}/downloads", "Controller85", "Action1", "GET"); + Endpoints[125] = CreateEndpoint("/repos/{owner}/{repo}/events", "Controller86", "Action1", "GET"); + Endpoints[126] = CreateEndpoint("/repos/{owner}/{repo}/forks", "Controller87", "Action1", "GET"); + Endpoints[127] = CreateEndpoint("/repos/{owner}/{repo}/forks", "Controller87", "Action2", "POST"); + Endpoints[128] = CreateEndpoint("/repos/{owner}/{repo}/hooks", "Controller88", "Action1", "POST"); + Endpoints[129] = CreateEndpoint("/repos/{owner}/{repo}/hooks", "Controller88", "Action2", "GET"); + Endpoints[130] = CreateEndpoint("/repos/{owner}/{repo}/issues", "Controller89", "Action1", "GET"); + Endpoints[131] = CreateEndpoint("/repos/{owner}/{repo}/issues", "Controller89", "Action2", "POST"); + Endpoints[132] = CreateEndpoint("/repos/{owner}/{repo}/keys", "Controller90", "Action1", "GET"); + Endpoints[133] = CreateEndpoint("/repos/{owner}/{repo}/keys", "Controller90", "Action2", "POST"); + Endpoints[134] = CreateEndpoint("/repos/{owner}/{repo}/labels", "Controller91", "Action1", "GET"); + Endpoints[135] = CreateEndpoint("/repos/{owner}/{repo}/labels", "Controller91", "Action2", "POST"); + Endpoints[136] = CreateEndpoint("/repos/{owner}/{repo}/languages", "Controller92", "Action1", "GET"); + Endpoints[137] = CreateEndpoint("/repos/{owner}/{repo}/merges", "Controller93", "Action1", "POST"); + Endpoints[138] = CreateEndpoint("/repos/{owner}/{repo}/milestones", "Controller94", "Action1", "GET"); + Endpoints[139] = CreateEndpoint("/repos/{owner}/{repo}/milestones", "Controller94", "Action2", "POST"); + Endpoints[140] = CreateEndpoint("/repos/{owner}/{repo}/notifications", "Controller95", "Action1", "PUT"); + Endpoints[141] = CreateEndpoint("/repos/{owner}/{repo}/notifications", "Controller95", "Action2", "GET"); + Endpoints[142] = CreateEndpoint("/repos/{owner}/{repo}/pulls", "Controller96", "Action1", "POST"); + Endpoints[143] = CreateEndpoint("/repos/{owner}/{repo}/pulls", "Controller96", "Action2", "GET"); + Endpoints[144] = CreateEndpoint("/repos/{owner}/{repo}/readme", "Controller97", "Action1", "GET"); + Endpoints[145] = CreateEndpoint("/repos/{owner}/{repo}/releases", "Controller98", "Action1", "POST"); + Endpoints[146] = CreateEndpoint("/repos/{owner}/{repo}/releases", "Controller98", "Action2", "GET"); + Endpoints[147] = CreateEndpoint("/repos/{owner}/{repo}/stargazers", "Controller99", "Action1", "GET"); + Endpoints[148] = CreateEndpoint("/repos/{owner}/{repo}/subscribers", "Controller100", "Action1", "GET"); + Endpoints[149] = CreateEndpoint("/repos/{owner}/{repo}/subscription", "Controller101", "Action1", "PUT"); + Endpoints[150] = CreateEndpoint("/repos/{owner}/{repo}/subscription", "Controller101", "Action2", "GET"); + Endpoints[151] = CreateEndpoint("/repos/{owner}/{repo}/subscription", "Controller101", "Action3", "DELETE"); + Endpoints[152] = CreateEndpoint("/repos/{owner}/{repo}/tags", "Controller102", "Action1", "GET"); + Endpoints[153] = CreateEndpoint("/repos/{owner}/{repo}/teams", "Controller103", "Action1", "GET"); + Endpoints[154] = CreateEndpoint("/repos/{owner}/{repo}/watchers", "Controller104", "Action1", "GET"); + Endpoints[155] = CreateEndpoint("/repos/{owner}/{repo}/git/blobs", "Controller105", "Action1", "POST"); + Endpoints[156] = CreateEndpoint("/repos/{owner}/{repo}/git/commits", "Controller106", "Action1", "POST"); + Endpoints[157] = CreateEndpoint("/repos/{owner}/{repo}/git/refs", "Controller107", "Action1", "GET"); + Endpoints[158] = CreateEndpoint("/repos/{owner}/{repo}/git/refs", "Controller107", "Action2", "POST"); + Endpoints[159] = CreateEndpoint("/repos/{owner}/{repo}/git/tags", "Controller108", "Action1", "POST"); + Endpoints[160] = CreateEndpoint("/repos/{owner}/{repo}/git/trees", "Controller109", "Action1", "POST"); + Endpoints[161] = CreateEndpoint("/repos/{owner}/{repo}/issues/comments", "Controller110", "Action1", "GET"); + Endpoints[162] = CreateEndpoint("/repos/{owner}/{repo}/issues/events", "Controller111", "Action1", "GET"); + Endpoints[163] = CreateEndpoint("/repos/{owner}/{repo}/pulls/comments", "Controller112", "Action1", "GET"); + Endpoints[164] = CreateEndpoint("/repos/{owner}/{repo}/stats/code_frequency", "Controller113", "Action1", "GET"); + Endpoints[165] = CreateEndpoint("/repos/{owner}/{repo}/stats/commit_activity", "Controller114", "Action1", "GET"); + Endpoints[166] = CreateEndpoint("/repos/{owner}/{repo}/stats/contributors", "Controller115", "Action1", "GET"); + Endpoints[167] = CreateEndpoint("/repos/{owner}/{repo}/stats/participation", "Controller116", "Action1", "GET"); + Endpoints[168] = CreateEndpoint("/repos/{owner}/{repo}/stats/punch_card", "Controller117", "Action1", "GET"); + Endpoints[169] = CreateEndpoint("/repos/{owner}/{repo}/git/blobs/{shaCode}", "Controller118", "Action1", "GET"); + Endpoints[170] = CreateEndpoint("/repos/{owner}/{repo}/git/commits/{shaCode}", "Controller119", "Action1", "GET"); + Endpoints[171] = CreateEndpoint("/repos/{owner}/{repo}/git/refs/{ref}", "Controller120", "Action1", "DELETE"); + Endpoints[172] = CreateEndpoint("/repos/{owner}/{repo}/git/refs/{ref}", "Controller120", "Action2", "PATCH"); + Endpoints[173] = CreateEndpoint("/repos/{owner}/{repo}/git/refs/{ref}", "Controller120", "Action3", "GET"); + Endpoints[174] = CreateEndpoint("/repos/{owner}/{repo}/git/tags/{shaCode}", "Controller121", "Action1", "GET"); + Endpoints[175] = CreateEndpoint("/repos/{owner}/{repo}/git/trees/{shaCode}", "Controller122", "Action1", "GET"); + Endpoints[176] = CreateEndpoint("/repos/{owner}/{repo}/issues/comments/{commentId}", "Controller123", "Action1", "GET"); + Endpoints[177] = CreateEndpoint("/repos/{owner}/{repo}/issues/comments/{commentId}", "Controller123", "Action2", "PATCH"); + Endpoints[178] = CreateEndpoint("/repos/{owner}/{repo}/issues/comments/{commentId}", "Controller123", "Action3", "DELETE"); + Endpoints[179] = CreateEndpoint("/repos/{owner}/{repo}/issues/events/{eventId}", "Controller124", "Action1", "GET"); + Endpoints[180] = CreateEndpoint("/repos/{owner}/{repo}/pulls/comments/{commentId}", "Controller125", "Action1", "PATCH"); + Endpoints[181] = CreateEndpoint("/repos/{owner}/{repo}/pulls/comments/{commentId}", "Controller125", "Action2", "GET"); + Endpoints[182] = CreateEndpoint("/repos/{owner}/{repo}/pulls/comments/{commentId}", "Controller125", "Action3", "DELETE"); + Endpoints[183] = CreateEndpoint("/repos/{owner}/{repo}/releases/assets/{id}", "Controller126", "Action1", "PATCH"); + Endpoints[184] = CreateEndpoint("/repos/{owner}/{repo}/releases/assets/{id}", "Controller126", "Action2", "DELETE"); + Endpoints[185] = CreateEndpoint("/repos/{owner}/{repo}/releases/assets/{id}", "Controller126", "Action3", "GET"); + Endpoints[186] = CreateEndpoint("/repos/{owner}/{repo}/assignees/{assignee}", "Controller127", "Action1", "GET"); + Endpoints[187] = CreateEndpoint("/repos/{owner}/{repo}/branches/{branch}", "Controller128", "Action1", "GET"); + Endpoints[188] = CreateEndpoint("/repos/{owner}/{repo}/collaborators/{user}", "Controller129", "Action1", "PUT"); + Endpoints[189] = CreateEndpoint("/repos/{owner}/{repo}/collaborators/{user}", "Controller129", "Action2", "DELETE"); + Endpoints[190] = CreateEndpoint("/repos/{owner}/{repo}/collaborators/{user}", "Controller129", "Action3", "GET"); + Endpoints[191] = CreateEndpoint("/repos/{owner}/{repo}/comments/{commentId}", "Controller130", "Action1", "DELETE"); + Endpoints[192] = CreateEndpoint("/repos/{owner}/{repo}/comments/{commentId}", "Controller130", "Action2", "GET"); + Endpoints[193] = CreateEndpoint("/repos/{owner}/{repo}/comments/{commentId}", "Controller130", "Action3", "PATCH"); + Endpoints[194] = CreateEndpoint("/repos/{owner}/{repo}/commits/{shaCode}", "Controller131", "Action1", "GET"); + Endpoints[195] = CreateEndpoint("/repos/{owner}/{repo}/contents/{path}", "Controller132", "Action1", "GET"); + Endpoints[196] = CreateEndpoint("/repos/{owner}/{repo}/contents/{path}", "Controller132", "Action2", "DELETE"); + Endpoints[197] = CreateEndpoint("/repos/{owner}/{repo}/contents/{path}", "Controller132", "Action3", "PUT"); + Endpoints[198] = CreateEndpoint("/repos/{owner}/{repo}/downloads/{downloadId}", "Controller133", "Action1", "GET"); + Endpoints[199] = CreateEndpoint("/repos/{owner}/{repo}/downloads/{downloadId}", "Controller133", "Action2", "DELETE"); + Endpoints[200] = CreateEndpoint("/repos/{owner}/{repo}/hooks/{hookId}", "Controller134", "Action1", "DELETE"); + Endpoints[201] = CreateEndpoint("/repos/{owner}/{repo}/hooks/{hookId}", "Controller134", "Action2", "GET"); + Endpoints[202] = CreateEndpoint("/repos/{owner}/{repo}/hooks/{hookId}", "Controller134", "Action3", "PATCH"); + Endpoints[203] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}", "Controller135", "Action1", "GET"); + Endpoints[204] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}", "Controller135", "Action2", "PATCH"); + Endpoints[205] = CreateEndpoint("/repos/{owner}/{repo}/keys/{keyId}", "Controller136", "Action1", "GET"); + Endpoints[206] = CreateEndpoint("/repos/{owner}/{repo}/keys/{keyId}", "Controller136", "Action2", "DELETE"); + Endpoints[207] = CreateEndpoint("/repos/{owner}/{repo}/labels/{name}", "Controller137", "Action1", "GET"); + Endpoints[208] = CreateEndpoint("/repos/{owner}/{repo}/labels/{name}", "Controller137", "Action2", "PATCH"); + Endpoints[209] = CreateEndpoint("/repos/{owner}/{repo}/labels/{name}", "Controller137", "Action3", "DELETE"); + Endpoints[210] = CreateEndpoint("/repos/{owner}/{repo}/milestones/{number}", "Controller138", "Action1", "PATCH"); + Endpoints[211] = CreateEndpoint("/repos/{owner}/{repo}/milestones/{number}", "Controller138", "Action2", "GET"); + Endpoints[212] = CreateEndpoint("/repos/{owner}/{repo}/milestones/{number}", "Controller138", "Action3", "DELETE"); + Endpoints[213] = CreateEndpoint("/repos/{owner}/{repo}/pulls/{number}", "Controller139", "Action1", "GET"); + Endpoints[214] = CreateEndpoint("/repos/{owner}/{repo}/pulls/{number}", "Controller139", "Action2", "PATCH"); + Endpoints[215] = CreateEndpoint("/repos/{owner}/{repo}/releases/{id}", "Controller140", "Action1", "PATCH"); + Endpoints[216] = CreateEndpoint("/repos/{owner}/{repo}/releases/{id}", "Controller140", "Action2", "GET"); + Endpoints[217] = CreateEndpoint("/repos/{owner}/{repo}/releases/{id}", "Controller140", "Action3", "DELETE"); + Endpoints[218] = CreateEndpoint("/repos/{owner}/{repo}/statuses/{ref}", "Controller141", "Action1", "GET"); + Endpoints[219] = CreateEndpoint("/repos/{owner}/{repo}/statuses/{ref}", "Controller141", "Action2", "POST"); + Endpoints[220] = CreateEndpoint("/repos/{owner}/{repo}/commits/{ref}/status", "Controller142", "Action1", "GET"); + Endpoints[221] = CreateEndpoint("/repos/{owner}/{repo}/commits/{shaCode}/comments", "Controller143", "Action1", "GET"); + Endpoints[222] = CreateEndpoint("/repos/{owner}/{repo}/commits/{shaCode}/comments", "Controller143", "Action2", "POST"); + Endpoints[223] = CreateEndpoint("/repos/{owner}/{repo}/deployments/{id}/statuses", "Controller144", "Action1", "GET"); + Endpoints[224] = CreateEndpoint("/repos/{owner}/{repo}/deployments/{id}/statuses", "Controller144", "Action2", "POST"); + Endpoints[225] = CreateEndpoint("/repos/{owner}/{repo}/hooks/{hookId}/tests", "Controller145", "Action1", "POST"); + Endpoints[226] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}/comments", "Controller146", "Action1", "POST"); + Endpoints[227] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}/comments", "Controller146", "Action2", "GET"); + Endpoints[228] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}/events", "Controller147", "Action1", "GET"); + Endpoints[229] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}/labels", "Controller148", "Action1", "POST"); + Endpoints[230] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}/labels", "Controller148", "Action2", "GET"); + Endpoints[231] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}/labels", "Controller148", "Action3", "PUT"); + Endpoints[232] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}/labels", "Controller148", "Action4", "DELETE"); + Endpoints[233] = CreateEndpoint("/repos/{owner}/{repo}/milestones/{number}/labels", "Controller149", "Action1", "GET"); + Endpoints[234] = CreateEndpoint("/repos/{owner}/{repo}/pulls/{number}/comments", "Controller150", "Action1", "GET"); + Endpoints[235] = CreateEndpoint("/repos/{owner}/{repo}/pulls/{number}/comments", "Controller150", "Action2", "POST"); + Endpoints[236] = CreateEndpoint("/repos/{owner}/{repo}/pulls/{number}/commits", "Controller151", "Action1", "GET"); + Endpoints[237] = CreateEndpoint("/repos/{owner}/{repo}/pulls/{number}/files", "Controller152", "Action1", "GET"); + Endpoints[238] = CreateEndpoint("/repos/{owner}/{repo}/pulls/{number}/merge", "Controller153", "Action1", "PUT"); + Endpoints[239] = CreateEndpoint("/repos/{owner}/{repo}/pulls/{number}/merge", "Controller153", "Action2", "GET"); + Endpoints[240] = CreateEndpoint("/repos/{owner}/{repo}/releases/{id}/assets", "Controller154", "Action1", "GET"); + Endpoints[241] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}/labels/{name}", "Controller155", "Action1", "DELETE"); + Endpoints[242] = CreateEndpoint("/repos/{owner}/{repo}/{archive_format}/{path}", "Controller156", "Action1", "GET"); + } + + private void SetupRequests() + { + Requests = new HttpContext[243]; + Requests[0] = new DefaultHttpContext(); + Requests[0].RequestServices = CreateServices(); + Requests[0].Request.Method = "GET"; + Requests[0].Request.Path = "/emojis"; + Requests[1] = new DefaultHttpContext(); + Requests[1].RequestServices = CreateServices(); + Requests[1].Request.Method = "GET"; + Requests[1].Request.Path = "/events"; + Requests[2] = new DefaultHttpContext(); + Requests[2].RequestServices = CreateServices(); + Requests[2].Request.Method = "GET"; + Requests[2].Request.Path = "/feeds"; + Requests[3] = new DefaultHttpContext(); + Requests[3].RequestServices = CreateServices(); + Requests[3].Request.Method = "GET"; + Requests[3].Request.Path = "/gists"; + Requests[4] = new DefaultHttpContext(); + Requests[4].RequestServices = CreateServices(); + Requests[4].Request.Method = "POST"; + Requests[4].Request.Path = "/gists"; + Requests[5] = new DefaultHttpContext(); + Requests[5].RequestServices = CreateServices(); + Requests[5].Request.Method = "GET"; + Requests[5].Request.Path = "/issues"; + Requests[6] = new DefaultHttpContext(); + Requests[6].RequestServices = CreateServices(); + Requests[6].Request.Method = "POST"; + Requests[6].Request.Path = "/markdown"; + Requests[7] = new DefaultHttpContext(); + Requests[7].RequestServices = CreateServices(); + Requests[7].Request.Method = "GET"; + Requests[7].Request.Path = "/meta"; + Requests[8] = new DefaultHttpContext(); + Requests[8].RequestServices = CreateServices(); + Requests[8].Request.Method = "GET"; + Requests[8].Request.Path = "/notifications"; + Requests[9] = new DefaultHttpContext(); + Requests[9].RequestServices = CreateServices(); + Requests[9].Request.Method = "PUT"; + Requests[9].Request.Path = "/notifications"; + Requests[10] = new DefaultHttpContext(); + Requests[10].RequestServices = CreateServices(); + Requests[10].Request.Method = "GET"; + Requests[10].Request.Path = "/rate_limit"; + Requests[11] = new DefaultHttpContext(); + Requests[11].RequestServices = CreateServices(); + Requests[11].Request.Method = "GET"; + Requests[11].Request.Path = "/repositories"; + Requests[12] = new DefaultHttpContext(); + Requests[12].RequestServices = CreateServices(); + Requests[12].Request.Method = "GET"; + Requests[12].Request.Path = "/user"; + Requests[13] = new DefaultHttpContext(); + Requests[13].RequestServices = CreateServices(); + Requests[13].Request.Method = "PATCH"; + Requests[13].Request.Path = "/user"; + Requests[14] = new DefaultHttpContext(); + Requests[14].RequestServices = CreateServices(); + Requests[14].Request.Method = "GET"; + Requests[14].Request.Path = "/users"; + Requests[15] = new DefaultHttpContext(); + Requests[15].RequestServices = CreateServices(); + Requests[15].Request.Method = "GET"; + Requests[15].Request.Path = "/gists/public"; + Requests[16] = new DefaultHttpContext(); + Requests[16].RequestServices = CreateServices(); + Requests[16].Request.Method = "GET"; + Requests[16].Request.Path = "/gists/starred"; + Requests[17] = new DefaultHttpContext(); + Requests[17].RequestServices = CreateServices(); + Requests[17].Request.Method = "GET"; + Requests[17].Request.Path = "/gitignore/templates"; + Requests[18] = new DefaultHttpContext(); + Requests[18].RequestServices = CreateServices(); + Requests[18].Request.Method = "POST"; + Requests[18].Request.Path = "/markdown/raw"; + Requests[19] = new DefaultHttpContext(); + Requests[19].RequestServices = CreateServices(); + Requests[19].Request.Method = "GET"; + Requests[19].Request.Path = "/search/code"; + Requests[20] = new DefaultHttpContext(); + Requests[20].RequestServices = CreateServices(); + Requests[20].Request.Method = "GET"; + Requests[20].Request.Path = "/search/issues"; + Requests[21] = new DefaultHttpContext(); + Requests[21].RequestServices = CreateServices(); + Requests[21].Request.Method = "GET"; + Requests[21].Request.Path = "/search/repositories"; + Requests[22] = new DefaultHttpContext(); + Requests[22].RequestServices = CreateServices(); + Requests[22].Request.Method = "GET"; + Requests[22].Request.Path = "/search/users"; + Requests[23] = new DefaultHttpContext(); + Requests[23].RequestServices = CreateServices(); + Requests[23].Request.Method = "GET"; + Requests[23].Request.Path = "/user/emails"; + Requests[24] = new DefaultHttpContext(); + Requests[24].RequestServices = CreateServices(); + Requests[24].Request.Method = "DELETE"; + Requests[24].Request.Path = "/user/emails"; + Requests[25] = new DefaultHttpContext(); + Requests[25].RequestServices = CreateServices(); + Requests[25].Request.Method = "POST"; + Requests[25].Request.Path = "/user/emails"; + Requests[26] = new DefaultHttpContext(); + Requests[26].RequestServices = CreateServices(); + Requests[26].Request.Method = "GET"; + Requests[26].Request.Path = "/user/followers"; + Requests[27] = new DefaultHttpContext(); + Requests[27].RequestServices = CreateServices(); + Requests[27].Request.Method = "GET"; + Requests[27].Request.Path = "/user/following"; + Requests[28] = new DefaultHttpContext(); + Requests[28].RequestServices = CreateServices(); + Requests[28].Request.Method = "GET"; + Requests[28].Request.Path = "/user/issues"; + Requests[29] = new DefaultHttpContext(); + Requests[29].RequestServices = CreateServices(); + Requests[29].Request.Method = "POST"; + Requests[29].Request.Path = "/user/keys"; + Requests[30] = new DefaultHttpContext(); + Requests[30].RequestServices = CreateServices(); + Requests[30].Request.Method = "GET"; + Requests[30].Request.Path = "/user/keys"; + Requests[31] = new DefaultHttpContext(); + Requests[31].RequestServices = CreateServices(); + Requests[31].Request.Method = "GET"; + Requests[31].Request.Path = "/user/orgs"; + Requests[32] = new DefaultHttpContext(); + Requests[32].RequestServices = CreateServices(); + Requests[32].Request.Method = "GET"; + Requests[32].Request.Path = "/user/repos"; + Requests[33] = new DefaultHttpContext(); + Requests[33].RequestServices = CreateServices(); + Requests[33].Request.Method = "POST"; + Requests[33].Request.Path = "/user/repos"; + Requests[34] = new DefaultHttpContext(); + Requests[34].RequestServices = CreateServices(); + Requests[34].Request.Method = "GET"; + Requests[34].Request.Path = "/user/starred"; + Requests[35] = new DefaultHttpContext(); + Requests[35].RequestServices = CreateServices(); + Requests[35].Request.Method = "GET"; + Requests[35].Request.Path = "/user/subscriptions"; + Requests[36] = new DefaultHttpContext(); + Requests[36].RequestServices = CreateServices(); + Requests[36].Request.Method = "GET"; + Requests[36].Request.Path = "/user/teams"; + Requests[37] = new DefaultHttpContext(); + Requests[37].RequestServices = CreateServices(); + Requests[37].Request.Method = "GET"; + Requests[37].Request.Path = "/legacy/repos/search/d50aacc"; + Requests[38] = new DefaultHttpContext(); + Requests[38].RequestServices = CreateServices(); + Requests[38].Request.Method = "GET"; + Requests[38].Request.Path = "/legacy/user/email/8341f"; + Requests[39] = new DefaultHttpContext(); + Requests[39].RequestServices = CreateServices(); + Requests[39].Request.Method = "GET"; + Requests[39].Request.Path = "/legacy/user/search/24fa852"; + Requests[40] = new DefaultHttpContext(); + Requests[40].RequestServices = CreateServices(); + Requests[40].Request.Method = "GET"; + Requests[40].Request.Path = "/legacy/issues/search/f8f51/b60908a1-4/7e0c7/30ea8fe"; + Requests[41] = new DefaultHttpContext(); + Requests[41].RequestServices = CreateServices(); + Requests[41].Request.Method = "GET"; + Requests[41].Request.Path = "/gitignore/templates/a2ba346f"; + Requests[42] = new DefaultHttpContext(); + Requests[42].RequestServices = CreateServices(); + Requests[42].Request.Method = "GET"; + Requests[42].Request.Path = "/notifications/threads/1df78"; + Requests[43] = new DefaultHttpContext(); + Requests[43].RequestServices = CreateServices(); + Requests[43].Request.Method = "PATCH"; + Requests[43].Request.Path = "/notifications/threads/24a82"; + Requests[44] = new DefaultHttpContext(); + Requests[44].RequestServices = CreateServices(); + Requests[44].Request.Method = "DELETE"; + Requests[44].Request.Path = "/user/following/770fc247"; + Requests[45] = new DefaultHttpContext(); + Requests[45].RequestServices = CreateServices(); + Requests[45].Request.Method = "GET"; + Requests[45].Request.Path = "/user/following/5ac246a4"; + Requests[46] = new DefaultHttpContext(); + Requests[46].RequestServices = CreateServices(); + Requests[46].Request.Method = "PUT"; + Requests[46].Request.Path = "/user/following/20904d4a"; + Requests[47] = new DefaultHttpContext(); + Requests[47].RequestServices = CreateServices(); + Requests[47].Request.Method = "DELETE"; + Requests[47].Request.Path = "/user/keys/2cb10"; + Requests[48] = new DefaultHttpContext(); + Requests[48].RequestServices = CreateServices(); + Requests[48].Request.Method = "GET"; + Requests[48].Request.Path = "/user/keys/37adb"; + Requests[49] = new DefaultHttpContext(); + Requests[49].RequestServices = CreateServices(); + Requests[49].Request.Method = "DELETE"; + Requests[49].Request.Path = "/notifications/threads/6d635/subscription"; + Requests[50] = new DefaultHttpContext(); + Requests[50].RequestServices = CreateServices(); + Requests[50].Request.Method = "GET"; + Requests[50].Request.Path = "/notifications/threads/8117f/subscription"; + Requests[51] = new DefaultHttpContext(); + Requests[51].RequestServices = CreateServices(); + Requests[51].Request.Method = "PUT"; + Requests[51].Request.Path = "/notifications/threads/6ca24/subscription"; + Requests[52] = new DefaultHttpContext(); + Requests[52].RequestServices = CreateServices(); + Requests[52].Request.Method = "PUT"; + Requests[52].Request.Path = "/user/starred/348ac/b0848"; + Requests[53] = new DefaultHttpContext(); + Requests[53].RequestServices = CreateServices(); + Requests[53].Request.Method = "GET"; + Requests[53].Request.Path = "/user/starred/92490/2ff1b"; + Requests[54] = new DefaultHttpContext(); + Requests[54].RequestServices = CreateServices(); + Requests[54].Request.Method = "DELETE"; + Requests[54].Request.Path = "/user/starred/0670e/5ca5b"; + Requests[55] = new DefaultHttpContext(); + Requests[55].RequestServices = CreateServices(); + Requests[55].Request.Method = "PUT"; + Requests[55].Request.Path = "/user/subscriptions/a7cee/6440a"; + Requests[56] = new DefaultHttpContext(); + Requests[56].RequestServices = CreateServices(); + Requests[56].Request.Method = "GET"; + Requests[56].Request.Path = "/user/subscriptions/0f395/79a07"; + Requests[57] = new DefaultHttpContext(); + Requests[57].RequestServices = CreateServices(); + Requests[57].Request.Method = "DELETE"; + Requests[57].Request.Path = "/user/subscriptions/6df5e/ee72b"; + Requests[58] = new DefaultHttpContext(); + Requests[58].RequestServices = CreateServices(); + Requests[58].Request.Method = "GET"; + Requests[58].Request.Path = "/gists/bc994"; + Requests[59] = new DefaultHttpContext(); + Requests[59].RequestServices = CreateServices(); + Requests[59].Request.Method = "PATCH"; + Requests[59].Request.Path = "/gists/16fd7"; + Requests[60] = new DefaultHttpContext(); + Requests[60].RequestServices = CreateServices(); + Requests[60].Request.Method = "DELETE"; + Requests[60].Request.Path = "/gists/26a18"; + Requests[61] = new DefaultHttpContext(); + Requests[61].RequestServices = CreateServices(); + Requests[61].Request.Method = "PATCH"; + Requests[61].Request.Path = "/orgs/0843c"; + Requests[62] = new DefaultHttpContext(); + Requests[62].RequestServices = CreateServices(); + Requests[62].Request.Method = "GET"; + Requests[62].Request.Path = "/orgs/58d34"; + Requests[63] = new DefaultHttpContext(); + Requests[63].RequestServices = CreateServices(); + Requests[63].Request.Method = "PATCH"; + Requests[63].Request.Path = "/teams/9daee4"; + Requests[64] = new DefaultHttpContext(); + Requests[64].RequestServices = CreateServices(); + Requests[64].Request.Method = "GET"; + Requests[64].Request.Path = "/teams/9814e3"; + Requests[65] = new DefaultHttpContext(); + Requests[65].RequestServices = CreateServices(); + Requests[65].Request.Method = "DELETE"; + Requests[65].Request.Path = "/teams/1b5067"; + Requests[66] = new DefaultHttpContext(); + Requests[66].RequestServices = CreateServices(); + Requests[66].Request.Method = "GET"; + Requests[66].Request.Path = "/users/16a15e92"; + Requests[67] = new DefaultHttpContext(); + Requests[67].RequestServices = CreateServices(); + Requests[67].Request.Method = "GET"; + Requests[67].Request.Path = "/gists/8bfc9/comments"; + Requests[68] = new DefaultHttpContext(); + Requests[68].RequestServices = CreateServices(); + Requests[68].Request.Method = "POST"; + Requests[68].Request.Path = "/gists/8a24e/comments"; + Requests[69] = new DefaultHttpContext(); + Requests[69].RequestServices = CreateServices(); + Requests[69].Request.Method = "POST"; + Requests[69].Request.Path = "/gists/b269a/forks"; + Requests[70] = new DefaultHttpContext(); + Requests[70].RequestServices = CreateServices(); + Requests[70].Request.Method = "DELETE"; + Requests[70].Request.Path = "/gists/6fa8c/star"; + Requests[71] = new DefaultHttpContext(); + Requests[71].RequestServices = CreateServices(); + Requests[71].Request.Method = "GET"; + Requests[71].Request.Path = "/gists/31eb2/star"; + Requests[72] = new DefaultHttpContext(); + Requests[72].RequestServices = CreateServices(); + Requests[72].Request.Method = "PUT"; + Requests[72].Request.Path = "/gists/cf969/star"; + Requests[73] = new DefaultHttpContext(); + Requests[73].RequestServices = CreateServices(); + Requests[73].Request.Method = "GET"; + Requests[73].Request.Path = "/orgs/b92c3/events"; + Requests[74] = new DefaultHttpContext(); + Requests[74].RequestServices = CreateServices(); + Requests[74].Request.Method = "GET"; + Requests[74].Request.Path = "/orgs/afa76/issues"; + Requests[75] = new DefaultHttpContext(); + Requests[75].RequestServices = CreateServices(); + Requests[75].Request.Method = "GET"; + Requests[75].Request.Path = "/orgs/81b06/members"; + Requests[76] = new DefaultHttpContext(); + Requests[76].RequestServices = CreateServices(); + Requests[76].Request.Method = "GET"; + Requests[76].Request.Path = "/orgs/e9b92/public_members"; + Requests[77] = new DefaultHttpContext(); + Requests[77].RequestServices = CreateServices(); + Requests[77].Request.Method = "GET"; + Requests[77].Request.Path = "/orgs/96108/repos"; + Requests[78] = new DefaultHttpContext(); + Requests[78].RequestServices = CreateServices(); + Requests[78].Request.Method = "POST"; + Requests[78].Request.Path = "/orgs/7ef10/repos"; + Requests[79] = new DefaultHttpContext(); + Requests[79].RequestServices = CreateServices(); + Requests[79].Request.Method = "POST"; + Requests[79].Request.Path = "/orgs/91838/teams"; + Requests[80] = new DefaultHttpContext(); + Requests[80].RequestServices = CreateServices(); + Requests[80].Request.Method = "GET"; + Requests[80].Request.Path = "/orgs/c1602/teams"; + Requests[81] = new DefaultHttpContext(); + Requests[81].RequestServices = CreateServices(); + Requests[81].Request.Method = "GET"; + Requests[81].Request.Path = "/teams/ae1fcf/members"; + Requests[82] = new DefaultHttpContext(); + Requests[82].RequestServices = CreateServices(); + Requests[82].Request.Method = "GET"; + Requests[82].Request.Path = "/teams/82e12b/repos"; + Requests[83] = new DefaultHttpContext(); + Requests[83].RequestServices = CreateServices(); + Requests[83].Request.Method = "GET"; + Requests[83].Request.Path = "/users/c5b5ee96/events"; + Requests[84] = new DefaultHttpContext(); + Requests[84].RequestServices = CreateServices(); + Requests[84].Request.Method = "GET"; + Requests[84].Request.Path = "/users/3ebe3c63/followers"; + Requests[85] = new DefaultHttpContext(); + Requests[85].RequestServices = CreateServices(); + Requests[85].Request.Method = "GET"; + Requests[85].Request.Path = "/users/7eb8ee04/gists"; + Requests[86] = new DefaultHttpContext(); + Requests[86].RequestServices = CreateServices(); + Requests[86].Request.Method = "GET"; + Requests[86].Request.Path = "/users/ce5247f6/keys"; + Requests[87] = new DefaultHttpContext(); + Requests[87].RequestServices = CreateServices(); + Requests[87].Request.Method = "GET"; + Requests[87].Request.Path = "/users/4e212684/orgs"; + Requests[88] = new DefaultHttpContext(); + Requests[88].RequestServices = CreateServices(); + Requests[88].Request.Method = "GET"; + Requests[88].Request.Path = "/users/25bd0823/received_events"; + Requests[89] = new DefaultHttpContext(); + Requests[89].RequestServices = CreateServices(); + Requests[89].Request.Method = "GET"; + Requests[89].Request.Path = "/users/b5cdb182/repos"; + Requests[90] = new DefaultHttpContext(); + Requests[90].RequestServices = CreateServices(); + Requests[90].Request.Method = "GET"; + Requests[90].Request.Path = "/users/0926f1ee/starred"; + Requests[91] = new DefaultHttpContext(); + Requests[91].RequestServices = CreateServices(); + Requests[91].Request.Method = "GET"; + Requests[91].Request.Path = "/users/52fd945f/subscriptions"; + Requests[92] = new DefaultHttpContext(); + Requests[92].RequestServices = CreateServices(); + Requests[92].Request.Method = "GET"; + Requests[92].Request.Path = "/users/c079f122/received_events/public"; + Requests[93] = new DefaultHttpContext(); + Requests[93].RequestServices = CreateServices(); + Requests[93].Request.Method = "GET"; + Requests[93].Request.Path = "/users/f3d3f90a/events/orgs/b877e"; + Requests[94] = new DefaultHttpContext(); + Requests[94].RequestServices = CreateServices(); + Requests[94].Request.Method = "DELETE"; + Requests[94].Request.Path = "/gists/1425f/comments/3a1b3cd3-"; + Requests[95] = new DefaultHttpContext(); + Requests[95].RequestServices = CreateServices(); + Requests[95].Request.Method = "GET"; + Requests[95].Request.Path = "/gists/f885b/comments/1f24dd6a-"; + Requests[96] = new DefaultHttpContext(); + Requests[96].RequestServices = CreateServices(); + Requests[96].Request.Method = "PATCH"; + Requests[96].Request.Path = "/gists/0b9be/comments/3f237cca-"; + Requests[97] = new DefaultHttpContext(); + Requests[97].RequestServices = CreateServices(); + Requests[97].Request.Method = "DELETE"; + Requests[97].Request.Path = "/orgs/97bbf/members/3b77a2e7"; + Requests[98] = new DefaultHttpContext(); + Requests[98].RequestServices = CreateServices(); + Requests[98].Request.Method = "GET"; + Requests[98].Request.Path = "/orgs/c7fdb/members/76a43729"; + Requests[99] = new DefaultHttpContext(); + Requests[99].RequestServices = CreateServices(); + Requests[99].Request.Method = "PUT"; + Requests[99].Request.Path = "/orgs/191ee/public_members/119c87f1"; + Requests[100] = new DefaultHttpContext(); + Requests[100].RequestServices = CreateServices(); + Requests[100].Request.Method = "GET"; + Requests[100].Request.Path = "/orgs/ee407/public_members/8ff12154"; + Requests[101] = new DefaultHttpContext(); + Requests[101].RequestServices = CreateServices(); + Requests[101].Request.Method = "DELETE"; + Requests[101].Request.Path = "/orgs/4d9da/public_members/446d97e9"; + Requests[102] = new DefaultHttpContext(); + Requests[102].RequestServices = CreateServices(); + Requests[102].Request.Method = "GET"; + Requests[102].Request.Path = "/teams/fa75fc/members/978bd8d5"; + Requests[103] = new DefaultHttpContext(); + Requests[103].RequestServices = CreateServices(); + Requests[103].Request.Method = "PUT"; + Requests[103].Request.Path = "/teams/cbcdd2/members/d55986df"; + Requests[104] = new DefaultHttpContext(); + Requests[104].RequestServices = CreateServices(); + Requests[104].Request.Method = "DELETE"; + Requests[104].Request.Path = "/teams/cade8a/members/f83610eb"; + Requests[105] = new DefaultHttpContext(); + Requests[105].RequestServices = CreateServices(); + Requests[105].Request.Method = "DELETE"; + Requests[105].Request.Path = "/teams/1d5e29/memberships/5f9d213c"; + Requests[106] = new DefaultHttpContext(); + Requests[106].RequestServices = CreateServices(); + Requests[106].Request.Method = "PUT"; + Requests[106].Request.Path = "/teams/17d43f/memberships/5a2f444c"; + Requests[107] = new DefaultHttpContext(); + Requests[107].RequestServices = CreateServices(); + Requests[107].Request.Method = "GET"; + Requests[107].Request.Path = "/teams/12e975/memberships/8bb2fd20"; + Requests[108] = new DefaultHttpContext(); + Requests[108].RequestServices = CreateServices(); + Requests[108].Request.Method = "GET"; + Requests[108].Request.Path = "/users/c2ccdc27/following/85519b02-f"; + Requests[109] = new DefaultHttpContext(); + Requests[109].RequestServices = CreateServices(); + Requests[109].Request.Method = "PUT"; + Requests[109].Request.Path = "/teams/0c0a5a/repos/1f88c/6b60f"; + Requests[110] = new DefaultHttpContext(); + Requests[110].RequestServices = CreateServices(); + Requests[110].Request.Method = "DELETE"; + Requests[110].Request.Path = "/teams/6529ef/repos/ac003/62dd8"; + Requests[111] = new DefaultHttpContext(); + Requests[111].RequestServices = CreateServices(); + Requests[111].Request.Method = "GET"; + Requests[111].Request.Path = "/teams/101239/repos/51df9/aa3f3"; + Requests[112] = new DefaultHttpContext(); + Requests[112].RequestServices = CreateServices(); + Requests[112].Request.Method = "PATCH"; + Requests[112].Request.Path = "/repos/df7c9/ffcbe"; + Requests[113] = new DefaultHttpContext(); + Requests[113].RequestServices = CreateServices(); + Requests[113].Request.Method = "DELETE"; + Requests[113].Request.Path = "/repos/1f316/0f4ec"; + Requests[114] = new DefaultHttpContext(); + Requests[114].RequestServices = CreateServices(); + Requests[114].Request.Method = "GET"; + Requests[114].Request.Path = "/repos/08c95/7adde"; + Requests[115] = new DefaultHttpContext(); + Requests[115].RequestServices = CreateServices(); + Requests[115].Request.Method = "GET"; + Requests[115].Request.Path = "/networks/468be/29a19/events"; + Requests[116] = new DefaultHttpContext(); + Requests[116].RequestServices = CreateServices(); + Requests[116].Request.Method = "GET"; + Requests[116].Request.Path = "/repos/db561/2d460/assignees"; + Requests[117] = new DefaultHttpContext(); + Requests[117].RequestServices = CreateServices(); + Requests[117].Request.Method = "GET"; + Requests[117].Request.Path = "/repos/0eb0c/ec96b/branches"; + Requests[118] = new DefaultHttpContext(); + Requests[118].RequestServices = CreateServices(); + Requests[118].Request.Method = "GET"; + Requests[118].Request.Path = "/repos/8d58d/a31da/collaborators"; + Requests[119] = new DefaultHttpContext(); + Requests[119].RequestServices = CreateServices(); + Requests[119].Request.Method = "GET"; + Requests[119].Request.Path = "/repos/9d638/100e1/comments"; + Requests[120] = new DefaultHttpContext(); + Requests[120].RequestServices = CreateServices(); + Requests[120].Request.Method = "GET"; + Requests[120].Request.Path = "/repos/2afda/40624/commits"; + Requests[121] = new DefaultHttpContext(); + Requests[121].RequestServices = CreateServices(); + Requests[121].Request.Method = "GET"; + Requests[121].Request.Path = "/repos/583f1/f2f56/contributors"; + Requests[122] = new DefaultHttpContext(); + Requests[122].RequestServices = CreateServices(); + Requests[122].Request.Method = "GET"; + Requests[122].Request.Path = "/repos/96246/cf112/deployments"; + Requests[123] = new DefaultHttpContext(); + Requests[123].RequestServices = CreateServices(); + Requests[123].Request.Method = "POST"; + Requests[123].Request.Path = "/repos/af325/068fe/deployments"; + Requests[124] = new DefaultHttpContext(); + Requests[124].RequestServices = CreateServices(); + Requests[124].Request.Method = "GET"; + Requests[124].Request.Path = "/repos/726c3/22a16/downloads"; + Requests[125] = new DefaultHttpContext(); + Requests[125].RequestServices = CreateServices(); + Requests[125].Request.Method = "GET"; + Requests[125].Request.Path = "/repos/bc0e4/44660/events"; + Requests[126] = new DefaultHttpContext(); + Requests[126].RequestServices = CreateServices(); + Requests[126].Request.Method = "GET"; + Requests[126].Request.Path = "/repos/e8481/456ae/forks"; + Requests[127] = new DefaultHttpContext(); + Requests[127].RequestServices = CreateServices(); + Requests[127].Request.Method = "POST"; + Requests[127].Request.Path = "/repos/fa493/a87f8/forks"; + Requests[128] = new DefaultHttpContext(); + Requests[128].RequestServices = CreateServices(); + Requests[128].Request.Method = "POST"; + Requests[128].Request.Path = "/repos/e5328/77db0/hooks"; + Requests[129] = new DefaultHttpContext(); + Requests[129].RequestServices = CreateServices(); + Requests[129].Request.Method = "GET"; + Requests[129].Request.Path = "/repos/d219e/a06cf/hooks"; + Requests[130] = new DefaultHttpContext(); + Requests[130].RequestServices = CreateServices(); + Requests[130].Request.Method = "GET"; + Requests[130].Request.Path = "/repos/7a830/48c99/issues"; + Requests[131] = new DefaultHttpContext(); + Requests[131].RequestServices = CreateServices(); + Requests[131].Request.Method = "POST"; + Requests[131].Request.Path = "/repos/62103/40680/issues"; + Requests[132] = new DefaultHttpContext(); + Requests[132].RequestServices = CreateServices(); + Requests[132].Request.Method = "GET"; + Requests[132].Request.Path = "/repos/6b1aa/de4d3/keys"; + Requests[133] = new DefaultHttpContext(); + Requests[133].RequestServices = CreateServices(); + Requests[133].Request.Method = "POST"; + Requests[133].Request.Path = "/repos/47645/65364/keys"; + Requests[134] = new DefaultHttpContext(); + Requests[134].RequestServices = CreateServices(); + Requests[134].Request.Method = "GET"; + Requests[134].Request.Path = "/repos/f252f/d0dc5/labels"; + Requests[135] = new DefaultHttpContext(); + Requests[135].RequestServices = CreateServices(); + Requests[135].Request.Method = "POST"; + Requests[135].Request.Path = "/repos/8436b/fea30/labels"; + Requests[136] = new DefaultHttpContext(); + Requests[136].RequestServices = CreateServices(); + Requests[136].Request.Method = "GET"; + Requests[136].Request.Path = "/repos/d5058/668a7/languages"; + Requests[137] = new DefaultHttpContext(); + Requests[137].RequestServices = CreateServices(); + Requests[137].Request.Method = "POST"; + Requests[137].Request.Path = "/repos/a9546/9b556/merges"; + Requests[138] = new DefaultHttpContext(); + Requests[138].RequestServices = CreateServices(); + Requests[138].Request.Method = "GET"; + Requests[138].Request.Path = "/repos/5258b/6f2cd/milestones"; + Requests[139] = new DefaultHttpContext(); + Requests[139].RequestServices = CreateServices(); + Requests[139].Request.Method = "POST"; + Requests[139].Request.Path = "/repos/5f70d/513b2/milestones"; + Requests[140] = new DefaultHttpContext(); + Requests[140].RequestServices = CreateServices(); + Requests[140].Request.Method = "PUT"; + Requests[140].Request.Path = "/repos/90aa5/bdde5/notifications"; + Requests[141] = new DefaultHttpContext(); + Requests[141].RequestServices = CreateServices(); + Requests[141].Request.Method = "GET"; + Requests[141].Request.Path = "/repos/5f672/af6ff/notifications"; + Requests[142] = new DefaultHttpContext(); + Requests[142].RequestServices = CreateServices(); + Requests[142].Request.Method = "POST"; + Requests[142].Request.Path = "/repos/9277e/8e49c/pulls"; + Requests[143] = new DefaultHttpContext(); + Requests[143].RequestServices = CreateServices(); + Requests[143].Request.Method = "GET"; + Requests[143].Request.Path = "/repos/a4973/6dbf0/pulls"; + Requests[144] = new DefaultHttpContext(); + Requests[144].RequestServices = CreateServices(); + Requests[144].Request.Method = "GET"; + Requests[144].Request.Path = "/repos/a53d8/0627b/readme"; + Requests[145] = new DefaultHttpContext(); + Requests[145].RequestServices = CreateServices(); + Requests[145].Request.Method = "POST"; + Requests[145].Request.Path = "/repos/2bc2b/0a7aa/releases"; + Requests[146] = new DefaultHttpContext(); + Requests[146].RequestServices = CreateServices(); + Requests[146].Request.Method = "GET"; + Requests[146].Request.Path = "/repos/4bb1f/8220c/releases"; + Requests[147] = new DefaultHttpContext(); + Requests[147].RequestServices = CreateServices(); + Requests[147].Request.Method = "GET"; + Requests[147].Request.Path = "/repos/7a4e8/d54f8/stargazers"; + Requests[148] = new DefaultHttpContext(); + Requests[148].RequestServices = CreateServices(); + Requests[148].Request.Method = "GET"; + Requests[148].Request.Path = "/repos/63547/0d37c/subscribers"; + Requests[149] = new DefaultHttpContext(); + Requests[149].RequestServices = CreateServices(); + Requests[149].Request.Method = "PUT"; + Requests[149].Request.Path = "/repos/6cdda/a402c/subscription"; + Requests[150] = new DefaultHttpContext(); + Requests[150].RequestServices = CreateServices(); + Requests[150].Request.Method = "GET"; + Requests[150].Request.Path = "/repos/60320/4381b/subscription"; + Requests[151] = new DefaultHttpContext(); + Requests[151].RequestServices = CreateServices(); + Requests[151].Request.Method = "DELETE"; + Requests[151].Request.Path = "/repos/ed808/292c1/subscription"; + Requests[152] = new DefaultHttpContext(); + Requests[152].RequestServices = CreateServices(); + Requests[152].Request.Method = "GET"; + Requests[152].Request.Path = "/repos/74160/84ba7/tags"; + Requests[153] = new DefaultHttpContext(); + Requests[153].RequestServices = CreateServices(); + Requests[153].Request.Method = "GET"; + Requests[153].Request.Path = "/repos/ef45e/30a80/teams"; + Requests[154] = new DefaultHttpContext(); + Requests[154].RequestServices = CreateServices(); + Requests[154].Request.Method = "GET"; + Requests[154].Request.Path = "/repos/02825/d5092/watchers"; + Requests[155] = new DefaultHttpContext(); + Requests[155].RequestServices = CreateServices(); + Requests[155].Request.Method = "POST"; + Requests[155].Request.Path = "/repos/be33a/5f87e/git/blobs"; + Requests[156] = new DefaultHttpContext(); + Requests[156].RequestServices = CreateServices(); + Requests[156].Request.Method = "POST"; + Requests[156].Request.Path = "/repos/1a46d/093a4/git/commits"; + Requests[157] = new DefaultHttpContext(); + Requests[157].RequestServices = CreateServices(); + Requests[157].Request.Method = "GET"; + Requests[157].Request.Path = "/repos/14024/d64d2/git/refs"; + Requests[158] = new DefaultHttpContext(); + Requests[158].RequestServices = CreateServices(); + Requests[158].Request.Method = "POST"; + Requests[158].Request.Path = "/repos/d361c/fea9a/git/refs"; + Requests[159] = new DefaultHttpContext(); + Requests[159].RequestServices = CreateServices(); + Requests[159].Request.Method = "POST"; + Requests[159].Request.Path = "/repos/9a774/6a8ce/git/tags"; + Requests[160] = new DefaultHttpContext(); + Requests[160].RequestServices = CreateServices(); + Requests[160].Request.Method = "POST"; + Requests[160].Request.Path = "/repos/630e1/6a452/git/trees"; + Requests[161] = new DefaultHttpContext(); + Requests[161].RequestServices = CreateServices(); + Requests[161].Request.Method = "GET"; + Requests[161].Request.Path = "/repos/27ccf/49922/issues/comments"; + Requests[162] = new DefaultHttpContext(); + Requests[162].RequestServices = CreateServices(); + Requests[162].Request.Method = "GET"; + Requests[162].Request.Path = "/repos/1e557/77fad/issues/events"; + Requests[163] = new DefaultHttpContext(); + Requests[163].RequestServices = CreateServices(); + Requests[163].Request.Method = "GET"; + Requests[163].Request.Path = "/repos/297e9/11542/pulls/comments"; + Requests[164] = new DefaultHttpContext(); + Requests[164].RequestServices = CreateServices(); + Requests[164].Request.Method = "GET"; + Requests[164].Request.Path = "/repos/3c261/5719e/stats/code_frequency"; + Requests[165] = new DefaultHttpContext(); + Requests[165].RequestServices = CreateServices(); + Requests[165].Request.Method = "GET"; + Requests[165].Request.Path = "/repos/74b31/45543/stats/commit_activity"; + Requests[166] = new DefaultHttpContext(); + Requests[166].RequestServices = CreateServices(); + Requests[166].Request.Method = "GET"; + Requests[166].Request.Path = "/repos/909d8/56712/stats/contributors"; + Requests[167] = new DefaultHttpContext(); + Requests[167].RequestServices = CreateServices(); + Requests[167].Request.Method = "GET"; + Requests[167].Request.Path = "/repos/b8ecd/2a142/stats/participation"; + Requests[168] = new DefaultHttpContext(); + Requests[168].RequestServices = CreateServices(); + Requests[168].Request.Method = "GET"; + Requests[168].Request.Path = "/repos/72fcd/e0d41/stats/punch_card"; + Requests[169] = new DefaultHttpContext(); + Requests[169].RequestServices = CreateServices(); + Requests[169].Request.Method = "GET"; + Requests[169].Request.Path = "/repos/f8e07/b0719/git/blobs/a82e41d"; + Requests[170] = new DefaultHttpContext(); + Requests[170].RequestServices = CreateServices(); + Requests[170].Request.Method = "GET"; + Requests[170].Request.Path = "/repos/22ba5/326c5/git/commits/9fd2dd7"; + Requests[171] = new DefaultHttpContext(); + Requests[171].RequestServices = CreateServices(); + Requests[171].Request.Method = "DELETE"; + Requests[171].Request.Path = "/repos/6052c/2b5e3/git/refs/f9a94"; + Requests[172] = new DefaultHttpContext(); + Requests[172].RequestServices = CreateServices(); + Requests[172].Request.Method = "PATCH"; + Requests[172].Request.Path = "/repos/2de37/f89e9/git/refs/cda61"; + Requests[173] = new DefaultHttpContext(); + Requests[173].RequestServices = CreateServices(); + Requests[173].Request.Method = "GET"; + Requests[173].Request.Path = "/repos/66069/dcb46/git/refs/f682e"; + Requests[174] = new DefaultHttpContext(); + Requests[174].RequestServices = CreateServices(); + Requests[174].Request.Method = "GET"; + Requests[174].Request.Path = "/repos/cab0e/a64fa/git/tags/507f4b6"; + Requests[175] = new DefaultHttpContext(); + Requests[175].RequestServices = CreateServices(); + Requests[175].Request.Method = "GET"; + Requests[175].Request.Path = "/repos/76633/6d2b3/git/trees/a45672d"; + Requests[176] = new DefaultHttpContext(); + Requests[176].RequestServices = CreateServices(); + Requests[176].Request.Method = "GET"; + Requests[176].Request.Path = "/repos/611e5/14e81/issues/comments/70d5316a-"; + Requests[177] = new DefaultHttpContext(); + Requests[177].RequestServices = CreateServices(); + Requests[177].Request.Method = "PATCH"; + Requests[177].Request.Path = "/repos/d4bb1/0e97d/issues/comments/f03032b3-"; + Requests[178] = new DefaultHttpContext(); + Requests[178].RequestServices = CreateServices(); + Requests[178].Request.Method = "DELETE"; + Requests[178].Request.Path = "/repos/221b6/f1cdb/issues/comments/a769f3b6-"; + Requests[179] = new DefaultHttpContext(); + Requests[179].RequestServices = CreateServices(); + Requests[179].Request.Method = "GET"; + Requests[179].Request.Path = "/repos/7ad51/f85f2/issues/events/cec2e88"; + Requests[180] = new DefaultHttpContext(); + Requests[180].RequestServices = CreateServices(); + Requests[180].Request.Method = "PATCH"; + Requests[180].Request.Path = "/repos/5ad14/2c490/pulls/comments/0ce89290-"; + Requests[181] = new DefaultHttpContext(); + Requests[181].RequestServices = CreateServices(); + Requests[181].Request.Method = "GET"; + Requests[181].Request.Path = "/repos/13ba8/30bb3/pulls/comments/e643400f-"; + Requests[182] = new DefaultHttpContext(); + Requests[182].RequestServices = CreateServices(); + Requests[182].Request.Method = "DELETE"; + Requests[182].Request.Path = "/repos/cd3a3/d6224/pulls/comments/c225e938-"; + Requests[183] = new DefaultHttpContext(); + Requests[183].RequestServices = CreateServices(); + Requests[183].Request.Method = "PATCH"; + Requests[183].Request.Path = "/repos/33c72/2f2bd/releases/assets/d06f4"; + Requests[184] = new DefaultHttpContext(); + Requests[184].RequestServices = CreateServices(); + Requests[184].Request.Method = "DELETE"; + Requests[184].Request.Path = "/repos/18b7c/c3d06/releases/assets/97762"; + Requests[185] = new DefaultHttpContext(); + Requests[185].RequestServices = CreateServices(); + Requests[185].Request.Method = "GET"; + Requests[185].Request.Path = "/repos/38549/7ae63/releases/assets/2498e"; + Requests[186] = new DefaultHttpContext(); + Requests[186].RequestServices = CreateServices(); + Requests[186].Request.Method = "GET"; + Requests[186].Request.Path = "/repos/2cd8e/bb684/assignees/04058a9c"; + Requests[187] = new DefaultHttpContext(); + Requests[187].RequestServices = CreateServices(); + Requests[187].Request.Method = "GET"; + Requests[187].Request.Path = "/repos/ab58d/4a13e/branches/c48dc6"; + Requests[188] = new DefaultHttpContext(); + Requests[188].RequestServices = CreateServices(); + Requests[188].Request.Method = "PUT"; + Requests[188].Request.Path = "/repos/a856e/bf188/collaborators/5af36"; + Requests[189] = new DefaultHttpContext(); + Requests[189].RequestServices = CreateServices(); + Requests[189].Request.Method = "DELETE"; + Requests[189].Request.Path = "/repos/b17c0/6051b/collaborators/0b415"; + Requests[190] = new DefaultHttpContext(); + Requests[190].RequestServices = CreateServices(); + Requests[190].Request.Method = "GET"; + Requests[190].Request.Path = "/repos/e4fc3/95a37/collaborators/9bd1b"; + Requests[191] = new DefaultHttpContext(); + Requests[191].RequestServices = CreateServices(); + Requests[191].Request.Method = "DELETE"; + Requests[191].Request.Path = "/repos/fa150/ca148/comments/02b69539-"; + Requests[192] = new DefaultHttpContext(); + Requests[192].RequestServices = CreateServices(); + Requests[192].Request.Method = "GET"; + Requests[192].Request.Path = "/repos/6d3cc/5ad75/comments/c6a0df3f-"; + Requests[193] = new DefaultHttpContext(); + Requests[193].RequestServices = CreateServices(); + Requests[193].Request.Method = "PATCH"; + Requests[193].Request.Path = "/repos/883ad/d79a0/comments/edac8612-"; + Requests[194] = new DefaultHttpContext(); + Requests[194].RequestServices = CreateServices(); + Requests[194].Request.Method = "GET"; + Requests[194].Request.Path = "/repos/59b5d/9ffbe/commits/d6d94ac"; + Requests[195] = new DefaultHttpContext(); + Requests[195].RequestServices = CreateServices(); + Requests[195].Request.Method = "GET"; + Requests[195].Request.Path = "/repos/19be8/61e28/contents/f4c5a"; + Requests[196] = new DefaultHttpContext(); + Requests[196].RequestServices = CreateServices(); + Requests[196].Request.Method = "DELETE"; + Requests[196].Request.Path = "/repos/6e29a/43f51/contents/52ffe"; + Requests[197] = new DefaultHttpContext(); + Requests[197].RequestServices = CreateServices(); + Requests[197].Request.Method = "PUT"; + Requests[197].Request.Path = "/repos/a3605/bf28b/contents/a8fe5"; + Requests[198] = new DefaultHttpContext(); + Requests[198].RequestServices = CreateServices(); + Requests[198].Request.Method = "GET"; + Requests[198].Request.Path = "/repos/a869c/dd5fa/downloads/f1808e48-0"; + Requests[199] = new DefaultHttpContext(); + Requests[199].RequestServices = CreateServices(); + Requests[199].Request.Method = "DELETE"; + Requests[199].Request.Path = "/repos/94d90/ae933/downloads/f9e25b5f-6"; + Requests[200] = new DefaultHttpContext(); + Requests[200].RequestServices = CreateServices(); + Requests[200].Request.Method = "DELETE"; + Requests[200].Request.Path = "/repos/0fe83/e2353/hooks/a83a19"; + Requests[201] = new DefaultHttpContext(); + Requests[201].RequestServices = CreateServices(); + Requests[201].Request.Method = "GET"; + Requests[201].Request.Path = "/repos/648c3/fc66e/hooks/04b461"; + Requests[202] = new DefaultHttpContext(); + Requests[202].RequestServices = CreateServices(); + Requests[202].Request.Method = "PATCH"; + Requests[202].Request.Path = "/repos/3ac61/92269/hooks/79e4df"; + Requests[203] = new DefaultHttpContext(); + Requests[203].RequestServices = CreateServices(); + Requests[203].Request.Method = "GET"; + Requests[203].Request.Path = "/repos/8d523/ba527/issues/9a222a"; + Requests[204] = new DefaultHttpContext(); + Requests[204].RequestServices = CreateServices(); + Requests[204].Request.Method = "PATCH"; + Requests[204].Request.Path = "/repos/9ed96/f6553/issues/4df9d5"; + Requests[205] = new DefaultHttpContext(); + Requests[205].RequestServices = CreateServices(); + Requests[205].Request.Method = "GET"; + Requests[205].Request.Path = "/repos/472ec/16a4a/keys/84edc"; + Requests[206] = new DefaultHttpContext(); + Requests[206].RequestServices = CreateServices(); + Requests[206].Request.Method = "DELETE"; + Requests[206].Request.Path = "/repos/1a88d/4c019/keys/b3e45"; + Requests[207] = new DefaultHttpContext(); + Requests[207].RequestServices = CreateServices(); + Requests[207].Request.Method = "GET"; + Requests[207].Request.Path = "/repos/334fe/0c9d7/labels/4c1ee"; + Requests[208] = new DefaultHttpContext(); + Requests[208].RequestServices = CreateServices(); + Requests[208].Request.Method = "PATCH"; + Requests[208].Request.Path = "/repos/5dcde/f973d/labels/80435"; + Requests[209] = new DefaultHttpContext(); + Requests[209].RequestServices = CreateServices(); + Requests[209].Request.Method = "DELETE"; + Requests[209].Request.Path = "/repos/00a37/12e4b/labels/d7158"; + Requests[210] = new DefaultHttpContext(); + Requests[210].RequestServices = CreateServices(); + Requests[210].Request.Method = "PATCH"; + Requests[210].Request.Path = "/repos/e24fa/a168e/milestones/a38b20"; + Requests[211] = new DefaultHttpContext(); + Requests[211].RequestServices = CreateServices(); + Requests[211].Request.Method = "GET"; + Requests[211].Request.Path = "/repos/24592/f8af1/milestones/8e871e"; + Requests[212] = new DefaultHttpContext(); + Requests[212].RequestServices = CreateServices(); + Requests[212].Request.Method = "DELETE"; + Requests[212].Request.Path = "/repos/c5ee0/38414/milestones/da7976"; + Requests[213] = new DefaultHttpContext(); + Requests[213].RequestServices = CreateServices(); + Requests[213].Request.Method = "GET"; + Requests[213].Request.Path = "/repos/912e9/c81d6/pulls/ce677a"; + Requests[214] = new DefaultHttpContext(); + Requests[214].RequestServices = CreateServices(); + Requests[214].Request.Method = "PATCH"; + Requests[214].Request.Path = "/repos/aef6c/5ec7e/pulls/633b87"; + Requests[215] = new DefaultHttpContext(); + Requests[215].RequestServices = CreateServices(); + Requests[215].Request.Method = "PATCH"; + Requests[215].Request.Path = "/repos/6085e/ff8aa/releases/dcda3"; + Requests[216] = new DefaultHttpContext(); + Requests[216].RequestServices = CreateServices(); + Requests[216].Request.Method = "GET"; + Requests[216].Request.Path = "/repos/4d7f4/ceafa/releases/97fd7"; + Requests[217] = new DefaultHttpContext(); + Requests[217].RequestServices = CreateServices(); + Requests[217].Request.Method = "DELETE"; + Requests[217].Request.Path = "/repos/1f81e/89e6a/releases/6b744"; + Requests[218] = new DefaultHttpContext(); + Requests[218].RequestServices = CreateServices(); + Requests[218].Request.Method = "GET"; + Requests[218].Request.Path = "/repos/8b417/ad4a5/statuses/08833"; + Requests[219] = new DefaultHttpContext(); + Requests[219].RequestServices = CreateServices(); + Requests[219].Request.Method = "POST"; + Requests[219].Request.Path = "/repos/b7600/1d17b/statuses/9de98"; + Requests[220] = new DefaultHttpContext(); + Requests[220].RequestServices = CreateServices(); + Requests[220].Request.Method = "GET"; + Requests[220].Request.Path = "/repos/ceff2/ff6ae/commits/ae429/status"; + Requests[221] = new DefaultHttpContext(); + Requests[221].RequestServices = CreateServices(); + Requests[221].Request.Method = "GET"; + Requests[221].Request.Path = "/repos/13588/5ba9b/commits/534a9aa/comments"; + Requests[222] = new DefaultHttpContext(); + Requests[222].RequestServices = CreateServices(); + Requests[222].Request.Method = "POST"; + Requests[222].Request.Path = "/repos/ba059/a94ca/commits/dfc6938/comments"; + Requests[223] = new DefaultHttpContext(); + Requests[223].RequestServices = CreateServices(); + Requests[223].Request.Method = "GET"; + Requests[223].Request.Path = "/repos/39532/6e5f6/deployments/f41d0/statuses"; + Requests[224] = new DefaultHttpContext(); + Requests[224].RequestServices = CreateServices(); + Requests[224].Request.Method = "POST"; + Requests[224].Request.Path = "/repos/18373/23ac8/deployments/392c1/statuses"; + Requests[225] = new DefaultHttpContext(); + Requests[225].RequestServices = CreateServices(); + Requests[225].Request.Method = "POST"; + Requests[225].Request.Path = "/repos/73148/9d526/hooks/59adb8/tests"; + Requests[226] = new DefaultHttpContext(); + Requests[226].RequestServices = CreateServices(); + Requests[226].Request.Method = "POST"; + Requests[226].Request.Path = "/repos/19a36/91f69/issues/765c82/comments"; + Requests[227] = new DefaultHttpContext(); + Requests[227].RequestServices = CreateServices(); + Requests[227].Request.Method = "GET"; + Requests[227].Request.Path = "/repos/ffa54/61a37/issues/710513/comments"; + Requests[228] = new DefaultHttpContext(); + Requests[228].RequestServices = CreateServices(); + Requests[228].Request.Method = "GET"; + Requests[228].Request.Path = "/repos/fcb0f/0c8e2/issues/de0d38/events"; + Requests[229] = new DefaultHttpContext(); + Requests[229].RequestServices = CreateServices(); + Requests[229].Request.Method = "POST"; + Requests[229].Request.Path = "/repos/158d7/00bed/issues/9bc6b6/labels"; + Requests[230] = new DefaultHttpContext(); + Requests[230].RequestServices = CreateServices(); + Requests[230].Request.Method = "GET"; + Requests[230].Request.Path = "/repos/67c56/41fd8/issues/6b6858/labels"; + Requests[231] = new DefaultHttpContext(); + Requests[231].RequestServices = CreateServices(); + Requests[231].Request.Method = "PUT"; + Requests[231].Request.Path = "/repos/b8194/06cc6/issues/effa3d/labels"; + Requests[232] = new DefaultHttpContext(); + Requests[232].RequestServices = CreateServices(); + Requests[232].Request.Method = "DELETE"; + Requests[232].Request.Path = "/repos/57423/979fd/issues/6d3fce/labels"; + Requests[233] = new DefaultHttpContext(); + Requests[233].RequestServices = CreateServices(); + Requests[233].Request.Method = "GET"; + Requests[233].Request.Path = "/repos/d799e/53e56/milestones/80ebe2/labels"; + Requests[234] = new DefaultHttpContext(); + Requests[234].RequestServices = CreateServices(); + Requests[234].Request.Method = "GET"; + Requests[234].Request.Path = "/repos/55311/56e4a/pulls/666fa7/comments"; + Requests[235] = new DefaultHttpContext(); + Requests[235].RequestServices = CreateServices(); + Requests[235].Request.Method = "POST"; + Requests[235].Request.Path = "/repos/c9cd2/f3e91/pulls/ae901f/comments"; + Requests[236] = new DefaultHttpContext(); + Requests[236].RequestServices = CreateServices(); + Requests[236].Request.Method = "GET"; + Requests[236].Request.Path = "/repos/3195c/e552e/pulls/6b6d2b/commits"; + Requests[237] = new DefaultHttpContext(); + Requests[237].RequestServices = CreateServices(); + Requests[237].Request.Method = "GET"; + Requests[237].Request.Path = "/repos/2d6b6/77639/pulls/3423c6/files"; + Requests[238] = new DefaultHttpContext(); + Requests[238].RequestServices = CreateServices(); + Requests[238].Request.Method = "PUT"; + Requests[238].Request.Path = "/repos/6c6d3/3a6b0/pulls/1da47f/merge"; + Requests[239] = new DefaultHttpContext(); + Requests[239].RequestServices = CreateServices(); + Requests[239].Request.Method = "GET"; + Requests[239].Request.Path = "/repos/b144c/c707e/pulls/a5fcb2/merge"; + Requests[240] = new DefaultHttpContext(); + Requests[240].RequestServices = CreateServices(); + Requests[240].Request.Method = "GET"; + Requests[240].Request.Path = "/repos/81459/8618d/releases/65289/assets"; + Requests[241] = new DefaultHttpContext(); + Requests[241].RequestServices = CreateServices(); + Requests[241].Request.Method = "DELETE"; + Requests[241].Request.Path = "/repos/3c5a4/a7525/issues/e93fff/labels/cd7b0"; + Requests[242] = new DefaultHttpContext(); + Requests[242].RequestServices = CreateServices(); + Requests[242].Request.Method = "GET"; + Requests[242].Request.Path = "/repos/85bd9/70da2/2dc44fe9-83b9-/01762"; + } + + private Matcher SetupMatcher(MatcherBuilder builder) + { + builder.AddEndpoint(Endpoints[0]); + builder.AddEndpoint(Endpoints[1]); + builder.AddEndpoint(Endpoints[2]); + builder.AddEndpoint(Endpoints[3]); + builder.AddEndpoint(Endpoints[4]); + builder.AddEndpoint(Endpoints[5]); + builder.AddEndpoint(Endpoints[6]); + builder.AddEndpoint(Endpoints[7]); + builder.AddEndpoint(Endpoints[8]); + builder.AddEndpoint(Endpoints[9]); + builder.AddEndpoint(Endpoints[10]); + builder.AddEndpoint(Endpoints[11]); + builder.AddEndpoint(Endpoints[12]); + builder.AddEndpoint(Endpoints[13]); + builder.AddEndpoint(Endpoints[14]); + builder.AddEndpoint(Endpoints[15]); + builder.AddEndpoint(Endpoints[16]); + builder.AddEndpoint(Endpoints[17]); + builder.AddEndpoint(Endpoints[18]); + builder.AddEndpoint(Endpoints[19]); + builder.AddEndpoint(Endpoints[20]); + builder.AddEndpoint(Endpoints[21]); + builder.AddEndpoint(Endpoints[22]); + builder.AddEndpoint(Endpoints[23]); + builder.AddEndpoint(Endpoints[24]); + builder.AddEndpoint(Endpoints[25]); + builder.AddEndpoint(Endpoints[26]); + builder.AddEndpoint(Endpoints[27]); + builder.AddEndpoint(Endpoints[28]); + builder.AddEndpoint(Endpoints[29]); + builder.AddEndpoint(Endpoints[30]); + builder.AddEndpoint(Endpoints[31]); + builder.AddEndpoint(Endpoints[32]); + builder.AddEndpoint(Endpoints[33]); + builder.AddEndpoint(Endpoints[34]); + builder.AddEndpoint(Endpoints[35]); + builder.AddEndpoint(Endpoints[36]); + builder.AddEndpoint(Endpoints[37]); + builder.AddEndpoint(Endpoints[38]); + builder.AddEndpoint(Endpoints[39]); + builder.AddEndpoint(Endpoints[40]); + builder.AddEndpoint(Endpoints[41]); + builder.AddEndpoint(Endpoints[42]); + builder.AddEndpoint(Endpoints[43]); + builder.AddEndpoint(Endpoints[44]); + builder.AddEndpoint(Endpoints[45]); + builder.AddEndpoint(Endpoints[46]); + builder.AddEndpoint(Endpoints[47]); + builder.AddEndpoint(Endpoints[48]); + builder.AddEndpoint(Endpoints[49]); + builder.AddEndpoint(Endpoints[50]); + builder.AddEndpoint(Endpoints[51]); + builder.AddEndpoint(Endpoints[52]); + builder.AddEndpoint(Endpoints[53]); + builder.AddEndpoint(Endpoints[54]); + builder.AddEndpoint(Endpoints[55]); + builder.AddEndpoint(Endpoints[56]); + builder.AddEndpoint(Endpoints[57]); + builder.AddEndpoint(Endpoints[58]); + builder.AddEndpoint(Endpoints[59]); + builder.AddEndpoint(Endpoints[60]); + builder.AddEndpoint(Endpoints[61]); + builder.AddEndpoint(Endpoints[62]); + builder.AddEndpoint(Endpoints[63]); + builder.AddEndpoint(Endpoints[64]); + builder.AddEndpoint(Endpoints[65]); + builder.AddEndpoint(Endpoints[66]); + builder.AddEndpoint(Endpoints[67]); + builder.AddEndpoint(Endpoints[68]); + builder.AddEndpoint(Endpoints[69]); + builder.AddEndpoint(Endpoints[70]); + builder.AddEndpoint(Endpoints[71]); + builder.AddEndpoint(Endpoints[72]); + builder.AddEndpoint(Endpoints[73]); + builder.AddEndpoint(Endpoints[74]); + builder.AddEndpoint(Endpoints[75]); + builder.AddEndpoint(Endpoints[76]); + builder.AddEndpoint(Endpoints[77]); + builder.AddEndpoint(Endpoints[78]); + builder.AddEndpoint(Endpoints[79]); + builder.AddEndpoint(Endpoints[80]); + builder.AddEndpoint(Endpoints[81]); + builder.AddEndpoint(Endpoints[82]); + builder.AddEndpoint(Endpoints[83]); + builder.AddEndpoint(Endpoints[84]); + builder.AddEndpoint(Endpoints[85]); + builder.AddEndpoint(Endpoints[86]); + builder.AddEndpoint(Endpoints[87]); + builder.AddEndpoint(Endpoints[88]); + builder.AddEndpoint(Endpoints[89]); + builder.AddEndpoint(Endpoints[90]); + builder.AddEndpoint(Endpoints[91]); + builder.AddEndpoint(Endpoints[92]); + builder.AddEndpoint(Endpoints[93]); + builder.AddEndpoint(Endpoints[94]); + builder.AddEndpoint(Endpoints[95]); + builder.AddEndpoint(Endpoints[96]); + builder.AddEndpoint(Endpoints[97]); + builder.AddEndpoint(Endpoints[98]); + builder.AddEndpoint(Endpoints[99]); + builder.AddEndpoint(Endpoints[100]); + builder.AddEndpoint(Endpoints[101]); + builder.AddEndpoint(Endpoints[102]); + builder.AddEndpoint(Endpoints[103]); + builder.AddEndpoint(Endpoints[104]); + builder.AddEndpoint(Endpoints[105]); + builder.AddEndpoint(Endpoints[106]); + builder.AddEndpoint(Endpoints[107]); + builder.AddEndpoint(Endpoints[108]); + builder.AddEndpoint(Endpoints[109]); + builder.AddEndpoint(Endpoints[110]); + builder.AddEndpoint(Endpoints[111]); + builder.AddEndpoint(Endpoints[112]); + builder.AddEndpoint(Endpoints[113]); + builder.AddEndpoint(Endpoints[114]); + builder.AddEndpoint(Endpoints[115]); + builder.AddEndpoint(Endpoints[116]); + builder.AddEndpoint(Endpoints[117]); + builder.AddEndpoint(Endpoints[118]); + builder.AddEndpoint(Endpoints[119]); + builder.AddEndpoint(Endpoints[120]); + builder.AddEndpoint(Endpoints[121]); + builder.AddEndpoint(Endpoints[122]); + builder.AddEndpoint(Endpoints[123]); + builder.AddEndpoint(Endpoints[124]); + builder.AddEndpoint(Endpoints[125]); + builder.AddEndpoint(Endpoints[126]); + builder.AddEndpoint(Endpoints[127]); + builder.AddEndpoint(Endpoints[128]); + builder.AddEndpoint(Endpoints[129]); + builder.AddEndpoint(Endpoints[130]); + builder.AddEndpoint(Endpoints[131]); + builder.AddEndpoint(Endpoints[132]); + builder.AddEndpoint(Endpoints[133]); + builder.AddEndpoint(Endpoints[134]); + builder.AddEndpoint(Endpoints[135]); + builder.AddEndpoint(Endpoints[136]); + builder.AddEndpoint(Endpoints[137]); + builder.AddEndpoint(Endpoints[138]); + builder.AddEndpoint(Endpoints[139]); + builder.AddEndpoint(Endpoints[140]); + builder.AddEndpoint(Endpoints[141]); + builder.AddEndpoint(Endpoints[142]); + builder.AddEndpoint(Endpoints[143]); + builder.AddEndpoint(Endpoints[144]); + builder.AddEndpoint(Endpoints[145]); + builder.AddEndpoint(Endpoints[146]); + builder.AddEndpoint(Endpoints[147]); + builder.AddEndpoint(Endpoints[148]); + builder.AddEndpoint(Endpoints[149]); + builder.AddEndpoint(Endpoints[150]); + builder.AddEndpoint(Endpoints[151]); + builder.AddEndpoint(Endpoints[152]); + builder.AddEndpoint(Endpoints[153]); + builder.AddEndpoint(Endpoints[154]); + builder.AddEndpoint(Endpoints[155]); + builder.AddEndpoint(Endpoints[156]); + builder.AddEndpoint(Endpoints[157]); + builder.AddEndpoint(Endpoints[158]); + builder.AddEndpoint(Endpoints[159]); + builder.AddEndpoint(Endpoints[160]); + builder.AddEndpoint(Endpoints[161]); + builder.AddEndpoint(Endpoints[162]); + builder.AddEndpoint(Endpoints[163]); + builder.AddEndpoint(Endpoints[164]); + builder.AddEndpoint(Endpoints[165]); + builder.AddEndpoint(Endpoints[166]); + builder.AddEndpoint(Endpoints[167]); + builder.AddEndpoint(Endpoints[168]); + builder.AddEndpoint(Endpoints[169]); + builder.AddEndpoint(Endpoints[170]); + builder.AddEndpoint(Endpoints[171]); + builder.AddEndpoint(Endpoints[172]); + builder.AddEndpoint(Endpoints[173]); + builder.AddEndpoint(Endpoints[174]); + builder.AddEndpoint(Endpoints[175]); + builder.AddEndpoint(Endpoints[176]); + builder.AddEndpoint(Endpoints[177]); + builder.AddEndpoint(Endpoints[178]); + builder.AddEndpoint(Endpoints[179]); + builder.AddEndpoint(Endpoints[180]); + builder.AddEndpoint(Endpoints[181]); + builder.AddEndpoint(Endpoints[182]); + builder.AddEndpoint(Endpoints[183]); + builder.AddEndpoint(Endpoints[184]); + builder.AddEndpoint(Endpoints[185]); + builder.AddEndpoint(Endpoints[186]); + builder.AddEndpoint(Endpoints[187]); + builder.AddEndpoint(Endpoints[188]); + builder.AddEndpoint(Endpoints[189]); + builder.AddEndpoint(Endpoints[190]); + builder.AddEndpoint(Endpoints[191]); + builder.AddEndpoint(Endpoints[192]); + builder.AddEndpoint(Endpoints[193]); + builder.AddEndpoint(Endpoints[194]); + builder.AddEndpoint(Endpoints[195]); + builder.AddEndpoint(Endpoints[196]); + builder.AddEndpoint(Endpoints[197]); + builder.AddEndpoint(Endpoints[198]); + builder.AddEndpoint(Endpoints[199]); + builder.AddEndpoint(Endpoints[200]); + builder.AddEndpoint(Endpoints[201]); + builder.AddEndpoint(Endpoints[202]); + builder.AddEndpoint(Endpoints[203]); + builder.AddEndpoint(Endpoints[204]); + builder.AddEndpoint(Endpoints[205]); + builder.AddEndpoint(Endpoints[206]); + builder.AddEndpoint(Endpoints[207]); + builder.AddEndpoint(Endpoints[208]); + builder.AddEndpoint(Endpoints[209]); + builder.AddEndpoint(Endpoints[210]); + builder.AddEndpoint(Endpoints[211]); + builder.AddEndpoint(Endpoints[212]); + builder.AddEndpoint(Endpoints[213]); + builder.AddEndpoint(Endpoints[214]); + builder.AddEndpoint(Endpoints[215]); + builder.AddEndpoint(Endpoints[216]); + builder.AddEndpoint(Endpoints[217]); + builder.AddEndpoint(Endpoints[218]); + builder.AddEndpoint(Endpoints[219]); + builder.AddEndpoint(Endpoints[220]); + builder.AddEndpoint(Endpoints[221]); + builder.AddEndpoint(Endpoints[222]); + builder.AddEndpoint(Endpoints[223]); + builder.AddEndpoint(Endpoints[224]); + builder.AddEndpoint(Endpoints[225]); + builder.AddEndpoint(Endpoints[226]); + builder.AddEndpoint(Endpoints[227]); + builder.AddEndpoint(Endpoints[228]); + builder.AddEndpoint(Endpoints[229]); + builder.AddEndpoint(Endpoints[230]); + builder.AddEndpoint(Endpoints[231]); + builder.AddEndpoint(Endpoints[232]); + builder.AddEndpoint(Endpoints[233]); + builder.AddEndpoint(Endpoints[234]); + builder.AddEndpoint(Endpoints[235]); + builder.AddEndpoint(Endpoints[236]); + builder.AddEndpoint(Endpoints[237]); + builder.AddEndpoint(Endpoints[238]); + builder.AddEndpoint(Endpoints[239]); + builder.AddEndpoint(Endpoints[240]); + builder.AddEndpoint(Endpoints[241]); + builder.AddEndpoint(Endpoints[242]); + return builder.Build(); + } + + private RouteEndpoint CreateEndpoint(string template, string controllerName, string actionName, string httpMethod) + { + var requiredValues = new + { + area = (string)null, + controller = controllerName, + action = actionName, + page = (string)null + }; + var defaults = new + { + area = (string)null, + controller = controllerName, + action = actionName, + page = (string)null + }; + + var metadata = new List(); + if (httpMethod != null) + { + metadata.Add(new HttpMethodMetadata(new string[] { httpMethod })); + } + + return CreateEndpoint( + template, + defaults: defaults, + requiredValues: requiredValues, + metadata: metadata, + routeName: controllerName); + } + } +} \ No newline at end of file diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/LinkGeneration/SingleRouteRouteValuesAddressSchemeBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/LinkGeneration/SingleRouteRouteValuesAddressSchemeBenchmark.cs new file mode 100644 index 0000000000..d6295f890e --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/LinkGeneration/SingleRouteRouteValuesAddressSchemeBenchmark.cs @@ -0,0 +1,74 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using BenchmarkDotNet.Attributes; +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.AspNetCore.Routing.LinkGeneration +{ + public class SingleRouteRouteValuesAddressSchemeBenchmark : EndpointRoutingBenchmarkBase + { + private IEndpointAddressScheme _implementation; + private TestAddressScheme _baseline; + private (HttpContext HttpContext, RouteValueDictionary AmbientValues) _requestContext; + + [GlobalSetup] + public void Setup() + { + var template = "Products/Details"; + var defaults = new { controller = "Products", action = "Details" }; + var requiredValues = new { controller = "Products", action = "Details" }; + + SetupEndpoints(CreateEndpoint(template, defaults, requiredValues: requiredValues, routeName: "ProductDetails")); + var services = CreateServices(); + _implementation = services.GetRequiredService>(); + _baseline = new TestAddressScheme(Endpoints[0]); + + _requestContext = CreateCurrentRequestContext(); + } + + [Benchmark(Baseline = true)] + public void Baseline() + { + var actual = _baseline.FindEndpoints(address: 0); + } + + [Benchmark] + public void RouteValues() + { + var actual = _implementation.FindEndpoints(new RouteValuesAddress + { + AmbientValues = _requestContext.AmbientValues, + ExplicitValues = new RouteValueDictionary(new { controller = "Products", action = "Details" }), + RouteName = null + }); + } + + [Benchmark] + public void RouteName() + { + var actual = _implementation.FindEndpoints(new RouteValuesAddress + { + AmbientValues = _requestContext.AmbientValues, + RouteName = "ProductDetails" + }); + } + + private class TestAddressScheme : IEndpointAddressScheme + { + private readonly Endpoint _endpoint; + + public TestAddressScheme(Endpoint endpoint) + { + _endpoint = endpoint; + } + + public IEnumerable FindEndpoints(int address) + { + return new[] { _endpoint }; + } + } + } +} diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/LinkGeneration/SingleRouteWithConstraintsBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/LinkGeneration/SingleRouteWithConstraintsBenchmark.cs new file mode 100644 index 0000000000..204966e46d --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/LinkGeneration/SingleRouteWithConstraintsBenchmark.cs @@ -0,0 +1,74 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using BenchmarkDotNet.Attributes; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Tree; +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.AspNetCore.Routing.LinkGeneration +{ + public class SingleRouteWithConstraintsBenchmark : EndpointRoutingBenchmarkBase + { + private TreeRouter _treeRouter; + private LinkGenerator _linkGenerator; + private (HttpContext HttpContext, RouteValueDictionary AmbientValues) _requestContext; + + [GlobalSetup] + public void Setup() + { + var template = "Customers/Details/{category}/{region}/{id:int}"; + var defaults = new { controller = "Customers", action = "Details" }; + var requiredValues = new { controller = "Customers", action = "Details" }; + + // Endpoint routing related + SetupEndpoints(CreateEndpoint(template, defaults, requiredValues: requiredValues)); + var services = CreateServices(); + _linkGenerator = services.GetRequiredService(); + + // Attribute routing related + var treeRouteBuilder = services.GetRequiredService(); + CreateOutboundRouteEntry(treeRouteBuilder, Endpoints[0]); + _treeRouter = treeRouteBuilder.Build(); + + _requestContext = CreateCurrentRequestContext(); + } + + [Benchmark(Baseline = true)] + public void TreeRouter() + { + var virtualPathData = _treeRouter.GetVirtualPath(new VirtualPathContext( + _requestContext.HttpContext, + ambientValues: _requestContext.AmbientValues, + values: new RouteValueDictionary( + new + { + controller = "Customers", + action = "Details", + category = "Administration", + region = "US", + id = 10 + }))); + + AssertUrl("/Customers/Details/Administration/US/10", virtualPathData?.VirtualPath); + } + + [Benchmark] + public void EndpointRouting() + { + var actualUrl = _linkGenerator.GetPathByRouteValues( + _requestContext.HttpContext, + routeName: null, + values: new + { + controller = "Customers", + action = "Details", + category = "Administration", + region = "US", + id = 10 + }); + + AssertUrl("/Customers/Details/Administration/US/10", actualUrl); + } + } +} diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/LinkGeneration/SingleRouteWithNoParametersBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/LinkGeneration/SingleRouteWithNoParametersBenchmark.cs new file mode 100644 index 0000000000..6b46a5acfe --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/LinkGeneration/SingleRouteWithNoParametersBenchmark.cs @@ -0,0 +1,68 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using BenchmarkDotNet.Attributes; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Tree; +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.AspNetCore.Routing.LinkGeneration +{ + public class SingleRouteWithNoParametersBenchmark : EndpointRoutingBenchmarkBase + { + private TreeRouter _treeRouter; + private LinkGenerator _linkGenerator; + private (HttpContext HttpContext, RouteValueDictionary AmbientValues) _requestContext; + + [GlobalSetup] + public void Setup() + { + var template = "Products/Details"; + var defaults = new { controller = "Products", action = "Details" }; + var requiredValues = new { controller = "Products", action = "Details" }; + + // Endpoint routing related + SetupEndpoints(CreateEndpoint(template, defaults, requiredValues: requiredValues)); + var services = CreateServices(); + _linkGenerator = services.GetRequiredService(); + + // Attribute routing related + var treeRouteBuilder = services.GetRequiredService(); + CreateOutboundRouteEntry(treeRouteBuilder, Endpoints[0]); + _treeRouter = treeRouteBuilder.Build(); + + _requestContext = CreateCurrentRequestContext(); + } + + [Benchmark(Baseline = true)] + public void TreeRouter() + { + var virtualPathData = _treeRouter.GetVirtualPath(new VirtualPathContext( + _requestContext.HttpContext, + ambientValues: _requestContext.AmbientValues, + values: new RouteValueDictionary( + new + { + controller = "Products", + action = "Details", + }))); + + AssertUrl("/Products/Details", virtualPathData?.VirtualPath); + } + + [Benchmark] + public void EndpointRouting() + { + var actualUrl = _linkGenerator.GetPathByRouteValues( + _requestContext.HttpContext, + routeName: null, + values: new + { + controller = "Products", + action = "Details", + }); + + AssertUrl("/Products/Details", actualUrl); + } + } +} diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/LinkGeneration/SingleRouteWithParametersBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/LinkGeneration/SingleRouteWithParametersBenchmark.cs new file mode 100644 index 0000000000..6037924e9a --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/LinkGeneration/SingleRouteWithParametersBenchmark.cs @@ -0,0 +1,74 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using BenchmarkDotNet.Attributes; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Tree; +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.AspNetCore.Routing.LinkGeneration +{ + public class SingleRouteWithParametersBenchmark : EndpointRoutingBenchmarkBase + { + private TreeRouter _treeRouter; + private LinkGenerator _linkGenerator; + private (HttpContext HttpContext, RouteValueDictionary AmbientValues) _requestContext; + + [GlobalSetup] + public void Setup() + { + var template = "Customers/Details/{category}/{region}/{id}"; + var defaults = new { controller = "Customers", action = "Details" }; + var requiredValues = new { controller = "Customers", action = "Details" }; + + // Endpoint routing related + SetupEndpoints(CreateEndpoint(template, defaults, requiredValues: requiredValues)); + var services = CreateServices(); + _linkGenerator = services.GetRequiredService(); + + // Attribute routing related + var treeRouteBuilder = services.GetRequiredService(); + CreateOutboundRouteEntry(treeRouteBuilder, Endpoints[0]); + _treeRouter = treeRouteBuilder.Build(); + + _requestContext = CreateCurrentRequestContext(); + } + + [Benchmark(Baseline = true)] + public void TreeRouter() + { + var virtualPathData = _treeRouter.GetVirtualPath(new VirtualPathContext( + _requestContext.HttpContext, + ambientValues: _requestContext.AmbientValues, + values: new RouteValueDictionary( + new + { + controller = "Customers", + action = "Details", + category = "Administration", + region = "US", + id = 10 + }))); + + AssertUrl("/Customers/Details/Administration/US/10", virtualPathData?.VirtualPath); + } + + [Benchmark] + public void EndpointRouting() + { + var actualUrl = _linkGenerator.GetPathByRouteValues( + _requestContext.HttpContext, + routeName: null, + values: new + { + controller = "Customers", + action = "Details", + category = "Administration", + region = "US", + id = 10 + }); + + AssertUrl("/Customers/Details/Administration/US/10", actualUrl); + } + } +} diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/FastPathTokenizerBenchmarkBase.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/FastPathTokenizerBenchmarkBase.cs new file mode 100644 index 0000000000..e7470f690f --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/FastPathTokenizerBenchmarkBase.cs @@ -0,0 +1,34 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public abstract class FastPathTokenizerBenchmarkBase + { + internal unsafe void NaiveBaseline(string path, PathSegment* segments, int maxCount) + { + int count = 0; + int start = 1; // Paths always start with a leading / + int end; + while ((end = path.IndexOf('/', start)) >= 0 && count < maxCount) + { + segments[count++] = new PathSegment(start, end - start); + start = end + 1; // resume search after the current character + } + + // Residue + var length = path.Length - start; + if (length > 0 && count < maxCount) + { + segments[count++] = new PathSegment(start, length); + } + } + + internal unsafe void MinimalBaseline(string path, PathSegment* segments, int maxCount) + { + var start = 1; + var length = path.Length - start; + segments[0] = new PathSegment(start, length); + } + } +} diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/FastPathTokenizerEmptyBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/FastPathTokenizerEmptyBenchmark.cs new file mode 100644 index 0000000000..6777205f59 --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/FastPathTokenizerEmptyBenchmark.cs @@ -0,0 +1,33 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using BenchmarkDotNet.Attributes; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class FastPathTokenizerEmptyBenchmark : FastPathTokenizerBenchmarkBase + { + private const int MaxCount = 32; + private static readonly string Input = "/"; + + // This is super hardcoded implementation for comparison, we dont't expect to do better. + [Benchmark(Baseline = true)] + public unsafe void Baseline() + { + var path = Input; + var segments = stackalloc PathSegment[MaxCount]; + + MinimalBaseline(path, segments, MaxCount); + } + + [Benchmark] + public void Implementation() + { + var path = Input; + Span segments = stackalloc PathSegment[MaxCount]; + + FastPathTokenizer.Tokenize(path, segments); + } + } +} diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/FastPathTokenizerLargeBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/FastPathTokenizerLargeBenchmark.cs new file mode 100644 index 0000000000..edb5e427ab --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/FastPathTokenizerLargeBenchmark.cs @@ -0,0 +1,37 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using BenchmarkDotNet.Attributes; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class FastPathTokenizerLargeBenchmark : FastPathTokenizerBenchmarkBase + { + private static readonly int MaxCount = 32; + private static readonly string Input = + "/heeeeeeeeeeyyyyyyyyyyy/this/is/a/string/with/lots/of/segments" + + "/hoooooooooooooooooooooooooooooooooow long/do you think it should be?/I think" + + "/like/32/segments/is /a/goood/number/dklfl/20303/dlflkf" + + "/Im/tired/of/thinking/of/more/things/to/so"; + + // This is a naive reference implementation. We expect to do better. + [Benchmark(Baseline = true)] + public unsafe void Baseline() + { + var path = Input; + var segments = stackalloc PathSegment[MaxCount]; + + NaiveBaseline(path, segments, MaxCount); + } + + [Benchmark] + public void Implementation() + { + var path = Input; + Span segments = stackalloc PathSegment[MaxCount]; + + FastPathTokenizer.Tokenize(path, segments); + } + } +} diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/FastPathTokenizerPlaintextBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/FastPathTokenizerPlaintextBenchmark.cs new file mode 100644 index 0000000000..d3a5c14349 --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/FastPathTokenizerPlaintextBenchmark.cs @@ -0,0 +1,33 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using BenchmarkDotNet.Attributes; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class FastPathTokenizerPlaintextBenchmark : FastPathTokenizerBenchmarkBase + { + private const int MaxCount = 32; + private static readonly string Input = "/plaintext"; + + // This is super hardcoded implementation for comparison, we dont't expect to do better. + [Benchmark(Baseline = true)] + public unsafe void Baseline() + { + var path = Input; + var segments = stackalloc PathSegment[MaxCount]; + + MinimalBaseline(path, segments, MaxCount); + } + + [Benchmark] + public void Implementation() + { + var path = Input; + Span segments = stackalloc PathSegment[MaxCount]; + + FastPathTokenizer.Tokenize(path, segments); + } + } +} diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/FastPathTokenizerSmallBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/FastPathTokenizerSmallBenchmark.cs new file mode 100644 index 0000000000..eeac746021 --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/FastPathTokenizerSmallBenchmark.cs @@ -0,0 +1,33 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using BenchmarkDotNet.Attributes; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class FastPathTokenizerSmallBenchmark : FastPathTokenizerBenchmarkBase + { + private const int MaxCount = 32; + private static readonly string Input = "/hello/world/cool"; + + // This is a naive reference implementation. We expect to do better. + [Benchmark(Baseline = true)] + public unsafe void Baseline() + { + var path = Input; + var segments = stackalloc PathSegment[MaxCount]; + + NaiveBaseline(path, segments, MaxCount); + } + + [Benchmark] + public void Implementation() + { + var path = Input; + Span segments = stackalloc PathSegment[MaxCount]; + + FastPathTokenizer.Tokenize(path, segments); + } + } +} diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/JumpTableMultipleEntryBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/JumpTableMultipleEntryBenchmark.cs new file mode 100644 index 0000000000..b3a6855025 --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/JumpTableMultipleEntryBenchmark.cs @@ -0,0 +1,177 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using BenchmarkDotNet.Attributes; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class JumpTableMultipleEntryBenchmark + { + private string[] _strings; + private PathSegment[] _segments; + + private JumpTable _linearSearch; + private JumpTable _dictionary; + private JumpTable _trie; + private JumpTable _vectorTrie; + + // All factors of 100 to support sampling + [Params(2, 5, 10, 25, 50, 100)] + public int Count; + + [GlobalSetup] + public void Setup() + { + _strings = GetStrings(100); + _segments = new PathSegment[100]; + + for (var i = 0; i < _strings.Length; i++) + { + _segments[i] = new PathSegment(0, _strings[i].Length); + } + + var samples = new int[Count]; + for (var i = 0; i < samples.Length; i++) + { + samples[i] = i * (_strings.Length / Count); + } + + var entries = new List<(string text, int _)>(); + for (var i = 0; i < samples.Length; i++) + { + entries.Add((_strings[samples[i]], i)); + } + + _linearSearch = new LinearSearchJumpTable(0, -1, entries.ToArray()); + _dictionary = new DictionaryJumpTable(0, -1, entries.ToArray()); + _trie = new ILEmitTrieJumpTable(0, -1, entries.ToArray(), vectorize: false, _dictionary); + _vectorTrie = new ILEmitTrieJumpTable(0, -1, entries.ToArray(), vectorize: true, _dictionary); + } + + // This baseline is similar to SingleEntryJumpTable. We just want + // something stable to compare against. + [Benchmark(Baseline = true, OperationsPerInvoke = 100)] + public int Baseline() + { + var strings = _strings; + var segments = _segments; + + var destination = 0; + for (var i = 0; i < strings.Length; i++) + { + var @string = strings[i]; + var segment = segments[i]; + + if (segment.Length == 0) + { + destination = -1; + } + else if (segment.Length != @string.Length) + { + destination = 1; + } + else + { + destination = string.Compare( + @string, + segment.Start, + @string, + 0, + segment.Length, + StringComparison.OrdinalIgnoreCase); + } + } + + return destination; + } + + [Benchmark(OperationsPerInvoke = 100)] + public int LinearSearch() + { + var strings = _strings; + var segments = _segments; + + var destination = 0; + for (var i = 0; i < strings.Length; i++) + { + destination = _linearSearch.GetDestination(strings[i], segments[i]); + } + + return destination; + } + + [Benchmark(OperationsPerInvoke = 100)] + public int Dictionary() + { + var strings = _strings; + var segments = _segments; + + var destination = 0; + for (var i = 0; i < strings.Length; i++) + { + destination = _dictionary.GetDestination(strings[i], segments[i]); + } + + return destination; + } + + [Benchmark(OperationsPerInvoke = 100)] + public int Trie() + { + var strings = _strings; + var segments = _segments; + + var destination = 0; + for (var i = 0; i < strings.Length; i++) + { + destination = _trie.GetDestination(strings[i], segments[i]); + } + + return destination; + } + + [Benchmark(OperationsPerInvoke = 100)] + public int VectorTrie() + { + var strings = _strings; + var segments = _segments; + + var destination = 0; + for (var i = 0; i < strings.Length; i++) + { + destination = _vectorTrie.GetDestination(strings[i], segments[i]); + } + + return destination; + } + + private static string[] GetStrings(int count) + { + var strings = new string[count]; + for (var i = 0; i < count; i++) + { + var guid = Guid.NewGuid().ToString(); + + // Between 5 and 36 characters + var text = guid.Substring(0, Math.Max(5, Math.Min(i, 36))); + if (char.IsDigit(text[0])) + { + // Convert first character to a letter. + text = ((char)(text[0] + ('G' - '0'))) + text.Substring(1); + } + + if (i % 2 == 0) + { + // Lowercase half of them + text = text.ToLowerInvariant(); + } + + strings[i] = text; + } + + return strings; + } + } +} diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/JumpTableSingleEntryBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/JumpTableSingleEntryBenchmark.cs new file mode 100644 index 0000000000..99f774620c --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/JumpTableSingleEntryBenchmark.cs @@ -0,0 +1,142 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using BenchmarkDotNet.Attributes; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class JumpTableSingleEntryBenchmark + { + private JumpTable _default; + private JumpTable _trie; + private JumpTable _vectorTrie; + private JumpTable _ascii; + + private string[] _strings; + private PathSegment[] _segments; + + [GlobalSetup] + public void Setup() + { + _default = new SingleEntryJumpTable(0, -1, "hello-world", 1); + _trie = new ILEmitTrieJumpTable(0, -1, new[] { ("hello-world", 1), }, vectorize: false, _default); + _vectorTrie = new ILEmitTrieJumpTable(0, -1, new[] { ("hello-world", 1), }, vectorize: true, _default); + _ascii = new SingleEntryAsciiJumpTable(0, -1, "hello-world", 1); + + _strings = new string[] + { + "index/foo/2", + "index/hello-world1/2", + "index/hello-world/2", + "index//2", + "index/hillo-goodbye/2", + }; + _segments = new PathSegment[] + { + new PathSegment(6, 3), + new PathSegment(6, 12), + new PathSegment(6, 11), + new PathSegment(6, 0), + new PathSegment(6, 13), + }; + } + + [Benchmark(Baseline = true, OperationsPerInvoke = 5)] + public int Baseline() + { + var strings = _strings; + var segments = _segments; + + int destination = 0; + for (var i = 0; i < strings.Length; i++) + { + var @string = strings[i]; + var segment = segments[i]; + + if (segment.Length == 0) + { + destination = -1; + } + else if (segment.Length != "hello-world".Length) + { + destination = 1; + } + else + { + destination = string.Compare( + @string, + segment.Start, + "hello-world", + 0, + segment.Length, + StringComparison.OrdinalIgnoreCase); + } + } + + return destination; + } + + [Benchmark(OperationsPerInvoke = 5)] + public int Default() + { + var strings = _strings; + var segments = _segments; + + var destination = 0; + for (var i = 0; i < strings.Length; i++) + { + destination = _default.GetDestination(strings[i], segments[i]); + } + + return destination; + } + + [Benchmark(OperationsPerInvoke = 5)] + public int Ascii() + { + var strings = _strings; + var segments = _segments; + + var destination = 0; + for (var i = 0; i < strings.Length; i++) + { + destination = _ascii.GetDestination(strings[i], segments[i]); + } + + return destination; + } + + [Benchmark(OperationsPerInvoke = 5)] + public int Trie() + { + var strings = _strings; + var segments = _segments; + + var destination = 0; + for (var i = 0; i < strings.Length; i++) + { + destination = _trie.GetDestination(strings[i], segments[i]); + } + + return destination; + } + + [Benchmark(OperationsPerInvoke = 5)] + public int VectorTrie() + { + var strings = _strings; + var segments = _segments; + + var destination = 0; + for (var i = 0; i < strings.Length; i++) + { + destination = _vectorTrie.GetDestination(strings[i], segments[i]); + } + + return destination; + } + } +} diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/JumpTableZeroEntryBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/JumpTableZeroEntryBenchmark.cs new file mode 100644 index 0000000000..337011de72 --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/JumpTableZeroEntryBenchmark.cs @@ -0,0 +1,66 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using BenchmarkDotNet.Attributes; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class JumpTableZeroEntryBenchmark + { + private JumpTable _table; + private string[] _strings; + private PathSegment[] _segments; + + [GlobalSetup] + public void Setup() + { + _table = new ZeroEntryJumpTable(0, -1); + _strings = new string[] + { + "index/foo/2", + "index/hello-world1/2", + "index/hello-world/2", + "index//2", + "index/hillo-goodbye/2", + }; + _segments = new PathSegment[] + { + new PathSegment(6, 3), + new PathSegment(6, 12), + new PathSegment(6, 11), + new PathSegment(6, 0), + new PathSegment(6, 13), + }; + } + + [Benchmark(Baseline=true, OperationsPerInvoke = 5)] + public int Baseline() + { + var strings = _strings; + var segments = _segments; + + var destination = 0; + for (var i = 0; i < strings.Length; i++) + { + destination = segments[i].Length == 0 ? -1 : 0; + } + + return destination; + } + + [Benchmark(OperationsPerInvoke = 5)] + public int Implementation() + { + var strings = _strings; + var segments = _segments; + + var destination = 0; + for (var i = 0; i < strings.Length; i++) + { + destination = _table.GetDestination(strings[i], segments[i]); + } + + return destination; + } + } +} diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherAzureBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherAzureBenchmark.cs new file mode 100644 index 0000000000..5f437fad33 --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherAzureBenchmark.cs @@ -0,0 +1,63 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading.Tasks; +using BenchmarkDotNet.Attributes; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // Generated from https://github.com/Azure/azure-rest-api-specs + public class MatcherAzureBenchmark : MatcherAzureBenchmarkBase + { + private const int SampleCount = 100; + + private BarebonesMatcher _baseline; + private Matcher _dfa; + + private int[] _samples; + private EndpointSelectorContext _feature; + + [GlobalSetup] + public void Setup() + { + SetupEndpoints(); + + SetupRequests(); + + // The perf is kinda slow for these benchmarks, so we do some sampling + // of the request data. + _samples = SampleRequests(EndpointCount, SampleCount); + + _baseline = (BarebonesMatcher)SetupMatcher(new BarebonesMatcherBuilder()); + _dfa = SetupMatcher(CreateDfaMatcherBuilder()); + + _feature = new EndpointSelectorContext(); + } + + [Benchmark(Baseline = true, OperationsPerInvoke = SampleCount)] + public async Task Baseline() + { + var feature = _feature; + for (var i = 0; i < SampleCount; i++) + { + var sample = _samples[i]; + var httpContext = Requests[sample]; + await _baseline.Matchers[sample].MatchAsync(httpContext, feature); + Validate(httpContext, Endpoints[sample], feature.Endpoint); + } + } + + [Benchmark(OperationsPerInvoke = SampleCount)] + public async Task Dfa() + { + var feature = _feature; + for (var i = 0; i < SampleCount; i++) + { + var sample = _samples[i]; + var httpContext = Requests[sample]; + await _dfa.MatchAsync(httpContext, feature); + Validate(httpContext, Endpoints[sample], feature.Endpoint); + } + } + } +} \ No newline at end of file diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherAzureBenchmarkBase.generated.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherAzureBenchmarkBase.generated.cs new file mode 100644 index 0000000000..1dc30336e3 --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherAzureBenchmarkBase.generated.cs @@ -0,0 +1,30989 @@ + +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // This code was generated by the Swaggatherer + public abstract partial class MatcherAzureBenchmarkBase : EndpointRoutingBenchmarkBase + { + private protected const int EndpointCount = 5160; + + private protected void SetupEndpoints() + { + Endpoints = new RouteEndpoint[5160]; + Endpoints[0] = CreateEndpoint("/account", "GET"); + Endpoints[1] = CreateEndpoint("/analyze", "POST"); + Endpoints[2] = CreateEndpoint("/apis", "GET"); + Endpoints[3] = CreateEndpoint("/Applications", "GET"); + Endpoints[4] = CreateEndpoint("/ApplicationTypes", "GET"); + Endpoints[5] = CreateEndpoint("/apps/", "GET"); + Endpoints[6] = CreateEndpoint("/apps/", "POST"); + Endpoints[7] = CreateEndpoint("/authorizationServers", "GET"); + Endpoints[8] = CreateEndpoint("/backends", "GET"); + Endpoints[9] = CreateEndpoint("/BuildJob", "POST"); + Endpoints[10] = CreateEndpoint("/certificates", "POST"); + Endpoints[11] = CreateEndpoint("/certificates", "GET"); + Endpoints[12] = CreateEndpoint("/ComposeDeployments", "GET"); + Endpoints[13] = CreateEndpoint("/datasources", "POST"); + Endpoints[14] = CreateEndpoint("/datasources", "GET"); + Endpoints[15] = CreateEndpoint("/deletedcertificates", "GET"); + Endpoints[16] = CreateEndpoint("/deletedkeys", "GET"); + Endpoints[17] = CreateEndpoint("/deletedsecrets", "GET"); + Endpoints[18] = CreateEndpoint("/deletedstorage", "GET"); + Endpoints[19] = CreateEndpoint("/describe", "POST"); + Endpoints[20] = CreateEndpoint("/detect", "POST"); + Endpoints[21] = CreateEndpoint("/domains", "GET"); + Endpoints[22] = CreateEndpoint("/entities", "GET"); + Endpoints[23] = CreateEndpoint("/facelists", "GET"); + Endpoints[24] = CreateEndpoint("/Faults/", "GET"); + Endpoints[25] = CreateEndpoint("/findsimilars", "POST"); + Endpoints[26] = CreateEndpoint("/generateThumbnail", "POST"); + Endpoints[27] = CreateEndpoint("/group", "POST"); + Endpoints[28] = CreateEndpoint("/groups", "GET"); + Endpoints[29] = CreateEndpoint("/identify", "POST"); + Endpoints[30] = CreateEndpoint("/identityProviders", "GET"); + Endpoints[31] = CreateEndpoint("/ImageStore", "GET"); + Endpoints[32] = CreateEndpoint("/indexers", "POST"); + Endpoints[33] = CreateEndpoint("/indexers", "GET"); + Endpoints[34] = CreateEndpoint("/indexes", "GET"); + Endpoints[35] = CreateEndpoint("/indexes", "POST"); + Endpoints[36] = CreateEndpoint("/jobs", "POST"); + Endpoints[37] = CreateEndpoint("/Jobs", "GET"); + Endpoints[38] = CreateEndpoint("/jobschedules", "POST"); + Endpoints[39] = CreateEndpoint("/jobschedules", "GET"); + Endpoints[40] = CreateEndpoint("/keys", "GET"); + Endpoints[41] = CreateEndpoint("/lifetimejobstats", "GET"); + Endpoints[42] = CreateEndpoint("/lifetimepoolstats", "GET"); + Endpoints[43] = CreateEndpoint("/loggers", "GET"); + Endpoints[44] = CreateEndpoint("/models", "GET"); + Endpoints[45] = CreateEndpoint("/news", "GET"); + Endpoints[46] = CreateEndpoint("/nodeagentskus", "GET"); + Endpoints[47] = CreateEndpoint("/nodecounts", "GET"); + Endpoints[48] = CreateEndpoint("/Nodes", "GET"); + Endpoints[49] = CreateEndpoint("/ocr", "POST"); + Endpoints[50] = CreateEndpoint("/offers", "GET"); + Endpoints[51] = CreateEndpoint("/openidConnectProviders", "GET"); + Endpoints[52] = CreateEndpoint("/persongroups", "GET"); + Endpoints[53] = CreateEndpoint("/pipelines", "GET"); + Endpoints[54] = CreateEndpoint("/policies", "GET"); + Endpoints[55] = CreateEndpoint("/policySnippets", "GET"); + Endpoints[56] = CreateEndpoint("/pools", "GET"); + Endpoints[57] = CreateEndpoint("/pools", "POST"); + Endpoints[58] = CreateEndpoint("/poolusagemetrics", "GET"); + Endpoints[59] = CreateEndpoint("/products", "GET"); + Endpoints[60] = CreateEndpoint("/projects", "POST"); + Endpoints[61] = CreateEndpoint("/projects", "GET"); + Endpoints[62] = CreateEndpoint("/properties", "GET"); + Endpoints[63] = CreateEndpoint("/recognizeText", "POST"); + Endpoints[64] = CreateEndpoint("/recurrences", "GET"); + Endpoints[65] = CreateEndpoint("/regions", "GET"); + Endpoints[66] = CreateEndpoint("/search", "GET"); + Endpoints[67] = CreateEndpoint("/secrets", "GET"); + Endpoints[68] = CreateEndpoint("/servicestats", "GET"); + Endpoints[69] = CreateEndpoint("/spellcheck", "POST"); + Endpoints[70] = CreateEndpoint("/storage", "GET"); + Endpoints[71] = CreateEndpoint("/subscriptions", "GET"); + Endpoints[72] = CreateEndpoint("/synonymmaps", "POST"); + Endpoints[73] = CreateEndpoint("/synonymmaps", "GET"); + Endpoints[74] = CreateEndpoint("/tag", "POST"); + Endpoints[75] = CreateEndpoint("/templates", "GET"); + Endpoints[76] = CreateEndpoint("/tenants", "GET"); + Endpoints[77] = CreateEndpoint("/users", "GET"); + Endpoints[78] = CreateEndpoint("/verify", "POST"); + Endpoints[79] = CreateEndpoint("/$/CancelRepairTask", "POST"); + Endpoints[80] = CreateEndpoint("/$/CreateRepairTask", "POST"); + Endpoints[81] = CreateEndpoint("/$/DeleteRepairTask", "POST"); + Endpoints[82] = CreateEndpoint("/$/ForceApproveRepairTask", "POST"); + Endpoints[83] = CreateEndpoint("/$/GetAadMetadata", "GET"); + Endpoints[84] = CreateEndpoint("/$/GetClusterConfiguration", "GET"); + Endpoints[85] = CreateEndpoint("/$/GetClusterConfigurationUpgradeStatus", "GET"); + Endpoints[86] = CreateEndpoint("/$/GetClusterHealth", "GET"); + Endpoints[87] = CreateEndpoint("/$/GetClusterHealth", "POST"); + Endpoints[88] = CreateEndpoint("/$/GetClusterHealthChunk", "POST"); + Endpoints[89] = CreateEndpoint("/$/GetClusterHealthChunk", "GET"); + Endpoints[90] = CreateEndpoint("/$/GetClusterManifest", "GET"); + Endpoints[91] = CreateEndpoint("/$/GetLoadInformation", "GET"); + Endpoints[92] = CreateEndpoint("/$/GetProvisionedCodeVersions", "GET"); + Endpoints[93] = CreateEndpoint("/$/GetProvisionedConfigVersions", "GET"); + Endpoints[94] = CreateEndpoint("/$/GetRepairTaskList", "GET"); + Endpoints[95] = CreateEndpoint("/$/GetUpgradeOrchestrationServiceState", "GET"); + Endpoints[96] = CreateEndpoint("/$/GetUpgradeProgress", "GET"); + Endpoints[97] = CreateEndpoint("/$/InvokeInfrastructureCommand", "POST"); + Endpoints[98] = CreateEndpoint("/$/InvokeInfrastructureQuery", "GET"); + Endpoints[99] = CreateEndpoint("/$/MoveToNextUpgradeDomain", "POST"); + Endpoints[100] = CreateEndpoint("/$/Provision", "POST"); + Endpoints[101] = CreateEndpoint("/$/RecoverAllPartitions", "POST"); + Endpoints[102] = CreateEndpoint("/$/RecoverSystemPartitions", "POST"); + Endpoints[103] = CreateEndpoint("/$/ReportClusterHealth", "POST"); + Endpoints[104] = CreateEndpoint("/$/RollbackUpgrade", "POST"); + Endpoints[105] = CreateEndpoint("/$/SetUpgradeOrchestrationServiceState", "POST"); + Endpoints[106] = CreateEndpoint("/$/StartClusterConfigurationUpgrade", "POST"); + Endpoints[107] = CreateEndpoint("/$/Unprovision", "POST"); + Endpoints[108] = CreateEndpoint("/$/UpdateRepairExecutionState", "POST"); + Endpoints[109] = CreateEndpoint("/$/UpdateRepairTaskHealthPolicy", "POST"); + Endpoints[110] = CreateEndpoint("/$/UpdateUpgrade", "POST"); + Endpoints[111] = CreateEndpoint("/$/Upgrade", "POST"); + Endpoints[112] = CreateEndpoint("/api/events", "POST"); + Endpoints[113] = CreateEndpoint("/apps/assistants", "GET"); + Endpoints[114] = CreateEndpoint("/apps/cultures", "GET"); + Endpoints[115] = CreateEndpoint("/apps/customprebuiltdomains", "POST"); + Endpoints[116] = CreateEndpoint("/apps/customprebuiltdomains", "GET"); + Endpoints[117] = CreateEndpoint("/apps/domains", "GET"); + Endpoints[118] = CreateEndpoint("/apps/import", "POST"); + Endpoints[119] = CreateEndpoint("/apps/usagescenarios", "GET"); + Endpoints[120] = CreateEndpoint("/BackupRestore/BackupPolicies", "GET"); + Endpoints[121] = CreateEndpoint("/certificates/contacts", "GET"); + Endpoints[122] = CreateEndpoint("/certificates/contacts", "DELETE"); + Endpoints[123] = CreateEndpoint("/certificates/contacts", "PUT"); + Endpoints[124] = CreateEndpoint("/certificates/issuers", "GET"); + Endpoints[125] = CreateEndpoint("/docs/$count", "GET"); + Endpoints[126] = CreateEndpoint("/docs/autocomplete", "POST"); + Endpoints[127] = CreateEndpoint("/docs/autocomplete", "GET"); + Endpoints[128] = CreateEndpoint("/images/details", "GET"); + Endpoints[129] = CreateEndpoint("/images/search", "GET"); + Endpoints[130] = CreateEndpoint("/images/trending", "GET"); + Endpoints[131] = CreateEndpoint("/images/visualsearch", "POST"); + Endpoints[132] = CreateEndpoint("/keys/restore", "POST"); + Endpoints[133] = CreateEndpoint("/news/search", "GET"); + Endpoints[134] = CreateEndpoint("/news/trendingtopics", "GET"); + Endpoints[135] = CreateEndpoint("/portalsettings/delegation", "PUT"); + Endpoints[136] = CreateEndpoint("/portalsettings/delegation", "PATCH"); + Endpoints[137] = CreateEndpoint("/portalsettings/delegation", "GET"); + Endpoints[138] = CreateEndpoint("/portalsettings/signin", "PUT"); + Endpoints[139] = CreateEndpoint("/portalsettings/signin", "PATCH"); + Endpoints[140] = CreateEndpoint("/portalsettings/signin", "GET"); + Endpoints[141] = CreateEndpoint("/portalsettings/signup", "PATCH"); + Endpoints[142] = CreateEndpoint("/portalsettings/signup", "GET"); + Endpoints[143] = CreateEndpoint("/portalsettings/signup", "PUT"); + Endpoints[144] = CreateEndpoint("/reports/byApi", "GET"); + Endpoints[145] = CreateEndpoint("/reports/byGeo", "GET"); + Endpoints[146] = CreateEndpoint("/reports/byOperation", "GET"); + Endpoints[147] = CreateEndpoint("/reports/byProduct", "GET"); + Endpoints[148] = CreateEndpoint("/reports/byRequest", "GET"); + Endpoints[149] = CreateEndpoint("/reports/bySubscription", "GET"); + Endpoints[150] = CreateEndpoint("/reports/byTime", "GET"); + Endpoints[151] = CreateEndpoint("/reports/byUser", "GET"); + Endpoints[152] = CreateEndpoint("/secrets/restore", "POST"); + Endpoints[153] = CreateEndpoint("/storage/restore", "POST"); + Endpoints[154] = CreateEndpoint("/Tools/Chaos", "GET"); + Endpoints[155] = CreateEndpoint("/v2.0/entities", "POST"); + Endpoints[156] = CreateEndpoint("/v2.0/keyPhrases", "POST"); + Endpoints[157] = CreateEndpoint("/v2.0/languages", "POST"); + Endpoints[158] = CreateEndpoint("/v2.0/sentiment", "POST"); + Endpoints[159] = CreateEndpoint("/videos/details", "GET"); + Endpoints[160] = CreateEndpoint("/videos/search", "GET"); + Endpoints[161] = CreateEndpoint("/videos/trending", "GET"); + Endpoints[162] = CreateEndpoint("/Applications/$/Create", "POST"); + Endpoints[163] = CreateEndpoint("/ApplicationTypes/$/Provision", "POST"); + Endpoints[164] = CreateEndpoint("/BackupRestore/$/GetBackups", "POST"); + Endpoints[165] = CreateEndpoint("/catalog/usql/acl", "GET"); + Endpoints[166] = CreateEndpoint("/catalog/usql/databases", "GET"); + Endpoints[167] = CreateEndpoint("/ComposeDeployments/$/Create", "PUT"); + Endpoints[168] = CreateEndpoint("/EventsStore/Applications/Events", "GET"); + Endpoints[169] = CreateEndpoint("/EventsStore/Cluster/Events", "GET"); + Endpoints[170] = CreateEndpoint("/EventsStore/Containers/Events", "GET"); + Endpoints[171] = CreateEndpoint("/EventsStore/Nodes/Events", "GET"); + Endpoints[172] = CreateEndpoint("/EventsStore/Partitions/Events", "GET"); + Endpoints[173] = CreateEndpoint("/EventsStore/Services/Events", "GET"); + Endpoints[174] = CreateEndpoint("/Faults/$/Cancel", "POST"); + Endpoints[175] = CreateEndpoint("/ImageStore/$/CommitUploadSession", "POST"); + Endpoints[176] = CreateEndpoint("/ImageStore/$/Copy", "POST"); + Endpoints[177] = CreateEndpoint("/ImageStore/$/DeleteUploadSession", "DELETE"); + Endpoints[178] = CreateEndpoint("/ImageStore/$/GetUploadSession", "GET"); + Endpoints[179] = CreateEndpoint("/Names/$/Create", "POST"); + Endpoints[180] = CreateEndpoint("/providers/Microsoft.AAD/operations", "GET"); + Endpoints[181] = CreateEndpoint("/providers/Microsoft.Addons/operations", "GET"); + Endpoints[182] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices", "POST"); + Endpoints[183] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices", "GET"); + Endpoints[184] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/configuration", "PATCH"); + Endpoints[185] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/configuration", "GET"); + Endpoints[186] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/configuration", "POST"); + Endpoints[187] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/operations", "GET"); + Endpoints[188] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services", "POST"); + Endpoints[189] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services", "GET"); + Endpoints[190] = CreateEndpoint("/providers/Microsoft.Advisor/operations", "GET"); + Endpoints[191] = CreateEndpoint("/providers/Microsoft.AnalysisServices/operations", "GET"); + Endpoints[192] = CreateEndpoint("/providers/Microsoft.ApiManagement/operations", "GET"); + Endpoints[193] = CreateEndpoint("/providers/Microsoft.Authorization/policyDefinitions", "GET"); + Endpoints[194] = CreateEndpoint("/providers/Microsoft.Authorization/policySetDefinitions", "GET"); + Endpoints[195] = CreateEndpoint("/providers/Microsoft.Authorization/providerOperations", "GET"); + Endpoints[196] = CreateEndpoint("/providers/Microsoft.Automation/operations", "GET"); + Endpoints[197] = CreateEndpoint("/providers/Microsoft.AzureStack/operations", "GET"); + Endpoints[198] = CreateEndpoint("/providers/Microsoft.Backup.Admin/operations", "GET"); + Endpoints[199] = CreateEndpoint("/providers/Microsoft.Batch/operations", "GET"); + Endpoints[200] = CreateEndpoint("/providers/Microsoft.BatchAI/operations", "GET"); + Endpoints[201] = CreateEndpoint("/providers/Microsoft.Billing/enrollmentAccounts", "GET"); + Endpoints[202] = CreateEndpoint("/providers/Microsoft.Billing/operations", "GET"); + Endpoints[203] = CreateEndpoint("/providers/Microsoft.BotService/operations", "GET"); + Endpoints[204] = CreateEndpoint("/providers/Microsoft.Cache/operations", "GET"); + Endpoints[205] = CreateEndpoint("/providers/Microsoft.Capacity/operations", "GET"); + Endpoints[206] = CreateEndpoint("/providers/Microsoft.Capacity/reservationOrders", "GET"); + Endpoints[207] = CreateEndpoint("/providers/Microsoft.Cdn/checkNameAvailability", "POST"); + Endpoints[208] = CreateEndpoint("/providers/Microsoft.Cdn/edgenodes", "GET"); + Endpoints[209] = CreateEndpoint("/providers/Microsoft.Cdn/operations", "GET"); + Endpoints[210] = CreateEndpoint("/providers/Microsoft.CertificateRegistration/operations", "GET"); + Endpoints[211] = CreateEndpoint("/providers/Microsoft.CognitiveServices/operations", "GET"); + Endpoints[212] = CreateEndpoint("/providers/Microsoft.Commerce.Admin/operations", "GET"); + Endpoints[213] = CreateEndpoint("/providers/Microsoft.Compute.Admin/operations", "GET"); + Endpoints[214] = CreateEndpoint("/providers/Microsoft.Compute/operations", "GET"); + Endpoints[215] = CreateEndpoint("/providers/Microsoft.Consumption/operations", "GET"); + Endpoints[216] = CreateEndpoint("/providers/Microsoft.ContainerInstance/operations", "GET"); + Endpoints[217] = CreateEndpoint("/providers/Microsoft.ContainerRegistry/operations", "GET"); + Endpoints[218] = CreateEndpoint("/providers/Microsoft.ContainerService/operations", "GET"); + Endpoints[219] = CreateEndpoint("/providers/Microsoft.CustomerInsights/operations", "GET"); + Endpoints[220] = CreateEndpoint("/providers/Microsoft.DataBox/operations", "GET"); + Endpoints[221] = CreateEndpoint("/providers/Microsoft.Databricks/operations", "GET"); + Endpoints[222] = CreateEndpoint("/providers/Microsoft.DataCatalog/operations", "GET"); + Endpoints[223] = CreateEndpoint("/providers/Microsoft.DataFactory/operations", "GET"); + Endpoints[224] = CreateEndpoint("/providers/Microsoft.DataLakeAnalytics/operations", "GET"); + Endpoints[225] = CreateEndpoint("/providers/Microsoft.DataLakeStore/operations", "GET"); + Endpoints[226] = CreateEndpoint("/providers/Microsoft.DataMigration/operations", "GET"); + Endpoints[227] = CreateEndpoint("/providers/Microsoft.DBforMySQL/operations", "GET"); + Endpoints[228] = CreateEndpoint("/providers/Microsoft.DBforPostgreSQL/operations", "GET"); + Endpoints[229] = CreateEndpoint("/providers/Microsoft.Devices/operations", "GET"); + Endpoints[230] = CreateEndpoint("/providers/Microsoft.DevTestLab/operations", "GET"); + Endpoints[231] = CreateEndpoint("/providers/Microsoft.DocumentDB/operations", "GET"); + Endpoints[232] = CreateEndpoint("/providers/Microsoft.DomainRegistration/operations", "GET"); + Endpoints[233] = CreateEndpoint("/providers/Microsoft.EventGrid/operations", "GET"); + Endpoints[234] = CreateEndpoint("/providers/Microsoft.EventGrid/topicTypes", "GET"); + Endpoints[235] = CreateEndpoint("/providers/Microsoft.EventHub/operations", "GET"); + Endpoints[236] = CreateEndpoint("/providers/Microsoft.Fabric.Admin/operations", "GET"); + Endpoints[237] = CreateEndpoint("/providers/Microsoft.Gallery.Admin/operations", "GET"); + Endpoints[238] = CreateEndpoint("/providers/Microsoft.HanaOnAzure/operations", "GET"); + Endpoints[239] = CreateEndpoint("/providers/Microsoft.HDInsight/operations", "GET"); + Endpoints[240] = CreateEndpoint("/providers/Microsoft.ImportExport/locations", "GET"); + Endpoints[241] = CreateEndpoint("/providers/Microsoft.ImportExport/operations", "GET"); + Endpoints[242] = CreateEndpoint("/providers/Microsoft.InfrastructureInsights.Admin/operations", "GET"); + Endpoints[243] = CreateEndpoint("/providers/microsoft.insights/eventcategories", "GET"); + Endpoints[244] = CreateEndpoint("/providers/microsoft.insights/operations", "GET"); + Endpoints[245] = CreateEndpoint("/providers/Microsoft.Intune/locations", "GET"); + Endpoints[246] = CreateEndpoint("/providers/Microsoft.IoTCentral/operations", "GET"); + Endpoints[247] = CreateEndpoint("/providers/Microsoft.IoTSpaces/operations", "GET"); + Endpoints[248] = CreateEndpoint("/providers/Microsoft.KeyVault.Admin/operations", "GET"); + Endpoints[249] = CreateEndpoint("/providers/Microsoft.KeyVault/operations", "GET"); + Endpoints[250] = CreateEndpoint("/providers/Microsoft.Logic/operations", "GET"); + Endpoints[251] = CreateEndpoint("/providers/Microsoft.MachineLearning/operations", "GET"); + Endpoints[252] = CreateEndpoint("/providers/Microsoft.MachineLearningCompute/operations", "GET"); + Endpoints[253] = CreateEndpoint("/providers/Microsoft.MachineLearningExperimentation/operations", "GET"); + Endpoints[254] = CreateEndpoint("/providers/Microsoft.MachineLearningServices/operations", "GET"); + Endpoints[255] = CreateEndpoint("/providers/Microsoft.ManagedIdentity/operations", "GET"); + Endpoints[256] = CreateEndpoint("/providers/Microsoft.Management/checkNameAvailability", "POST"); + Endpoints[257] = CreateEndpoint("/providers/Microsoft.Management/getEntities", "POST"); + Endpoints[258] = CreateEndpoint("/providers/Microsoft.Management/managementGroups", "GET"); + Endpoints[259] = CreateEndpoint("/providers/Microsoft.Management/operations", "GET"); + Endpoints[260] = CreateEndpoint("/providers/Microsoft.Management/startTenantBackfill", "POST"); + Endpoints[261] = CreateEndpoint("/providers/Microsoft.Management/tenantBackfillStatus", "POST"); + Endpoints[262] = CreateEndpoint("/providers/Microsoft.ManagementPartner/operations", "GET"); + Endpoints[263] = CreateEndpoint("/providers/Microsoft.Maps/operations", "GET"); + Endpoints[264] = CreateEndpoint("/providers/Microsoft.MarketplaceOrdering/operations", "GET"); + Endpoints[265] = CreateEndpoint("/providers/Microsoft.Media/operations", "GET"); + Endpoints[266] = CreateEndpoint("/providers/Microsoft.Migrate/operations", "GET"); + Endpoints[267] = CreateEndpoint("/providers/Microsoft.Network/checkTrafficManagerNameAvailability", "POST"); + Endpoints[268] = CreateEndpoint("/providers/Microsoft.Network/operations", "GET"); + Endpoints[269] = CreateEndpoint("/providers/Microsoft.NotificationHubs/operations", "GET"); + Endpoints[270] = CreateEndpoint("/providers/Microsoft.OperationalInsights/operations", "GET"); + Endpoints[271] = CreateEndpoint("/providers/Microsoft.OperationsManagement/operations", "GET"); + Endpoints[272] = CreateEndpoint("/providers/Microsoft.PolicyInsights/operations", "GET"); + Endpoints[273] = CreateEndpoint("/providers/Microsoft.PowerBI/operations", "GET"); + Endpoints[274] = CreateEndpoint("/providers/Microsoft.PowerBIDedicated/operations", "GET"); + Endpoints[275] = CreateEndpoint("/providers/Microsoft.RecoveryServices/operations", "GET"); + Endpoints[276] = CreateEndpoint("/providers/Microsoft.Relay/operations", "GET"); + Endpoints[277] = CreateEndpoint("/providers/Microsoft.ResourceHealth/operations", "GET"); + Endpoints[278] = CreateEndpoint("/providers/Microsoft.Search/operations", "GET"); + Endpoints[279] = CreateEndpoint("/providers/Microsoft.Security/operations", "GET"); + Endpoints[280] = CreateEndpoint("/providers/Microsoft.ServiceBus/operations", "GET"); + Endpoints[281] = CreateEndpoint("/providers/Microsoft.ServiceFabric/operations", "GET"); + Endpoints[282] = CreateEndpoint("/providers/Microsoft.SignalRService/operations", "GET"); + Endpoints[283] = CreateEndpoint("/providers/Microsoft.Sql/operations", "GET"); + Endpoints[284] = CreateEndpoint("/providers/Microsoft.Storage.Admin/operations", "GET"); + Endpoints[285] = CreateEndpoint("/providers/Microsoft.Storage/operations", "GET"); + Endpoints[286] = CreateEndpoint("/providers/Microsoft.StorSimple/operations", "GET"); + Endpoints[287] = CreateEndpoint("/providers/Microsoft.StreamAnalytics/operations", "GET"); + Endpoints[288] = CreateEndpoint("/providers/Microsoft.Subscription/operations", "GET"); + Endpoints[289] = CreateEndpoint("/providers/Microsoft.Subscription/subscriptionDefinitions", "GET"); + Endpoints[290] = CreateEndpoint("/providers/Microsoft.Subscription/subscriptionOperations", "GET"); + Endpoints[291] = CreateEndpoint("/providers/Microsoft.Subscriptions.Admin/operations", "GET"); + Endpoints[292] = CreateEndpoint("/providers/Microsoft.Subscriptions/operations", "GET"); + Endpoints[293] = CreateEndpoint("/providers/Microsoft.TimeSeriesInsights/operations", "GET"); + Endpoints[294] = CreateEndpoint("/providers/Microsoft.Update.Admin/operations", "GET"); + Endpoints[295] = CreateEndpoint("/providers/microsoft.visualstudio/operations", "GET"); + Endpoints[296] = CreateEndpoint("/providers/Microsoft.Web/availableStacks", "GET"); + Endpoints[297] = CreateEndpoint("/providers/Microsoft.Web/operations", "GET"); + Endpoints[298] = CreateEndpoint("/providers/Microsoft.Web/sourcecontrols", "GET"); + Endpoints[299] = CreateEndpoint("/Tools/Chaos/Events", "GET"); + Endpoints[300] = CreateEndpoint("/Tools/Chaos/Schedule", "GET"); + Endpoints[301] = CreateEndpoint("/Tools/Chaos/Schedule", "POST"); + Endpoints[302] = CreateEndpoint("/BackupRestore/BackupPolicies/$/Create", "POST"); + Endpoints[303] = CreateEndpoint("/contentmoderator/lists/v1.0/imagelists", "POST"); + Endpoints[304] = CreateEndpoint("/contentmoderator/lists/v1.0/imagelists", "GET"); + Endpoints[305] = CreateEndpoint("/contentmoderator/lists/v1.0/termlists", "GET"); + Endpoints[306] = CreateEndpoint("/contentmoderator/lists/v1.0/termlists", "POST"); + Endpoints[307] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices/premiumCheck", "GET"); + Endpoints[308] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/premiumCheck", "GET"); + Endpoints[309] = CreateEndpoint("/providers/Microsoft.BotService/botServices/checkNameAvailability", "GET"); + Endpoints[310] = CreateEndpoint("/providers/Microsoft.Intune/locations/hostName", "GET"); + Endpoints[311] = CreateEndpoint("/providers/Microsoft.Network/trafficManagerGeographicHierarchies/default", "GET"); + Endpoints[312] = CreateEndpoint("/providers/Microsoft.Web/publishingUsers/web", "PUT"); + Endpoints[313] = CreateEndpoint("/providers/Microsoft.Web/publishingUsers/web", "GET"); + Endpoints[314] = CreateEndpoint("/Tools/Chaos/$/Report", "GET"); + Endpoints[315] = CreateEndpoint("/Tools/Chaos/$/Start", "POST"); + Endpoints[316] = CreateEndpoint("/Tools/Chaos/$/Stop", "POST"); + Endpoints[317] = CreateEndpoint("/contentmoderator/moderate/v1.0/ProcessImage/Evaluate", "POST"); + Endpoints[318] = CreateEndpoint("/contentmoderator/moderate/v1.0/ProcessImage/FindFaces", "POST"); + Endpoints[319] = CreateEndpoint("/contentmoderator/moderate/v1.0/ProcessImage/Match", "POST"); + Endpoints[320] = CreateEndpoint("/contentmoderator/moderate/v1.0/ProcessImage/OCR", "POST"); + Endpoints[321] = CreateEndpoint("/contentmoderator/moderate/v1.0/ProcessText/DetectLanguage", "POST"); + Endpoints[322] = CreateEndpoint("/contentmoderator/moderate/v1.0/ProcessText/Screen/", "POST"); + Endpoints[323] = CreateEndpoint("/providers/microsoft.insights/eventtypes/management/values", "GET"); + Endpoints[324] = CreateEndpoint("/contentmoderator/lists/v1.0/imagelists/{listId}", "GET"); + Endpoints[325] = CreateEndpoint("/contentmoderator/lists/v1.0/imagelists/{listId}", "PUT"); + Endpoints[326] = CreateEndpoint("/contentmoderator/lists/v1.0/imagelists/{listId}", "DELETE"); + Endpoints[327] = CreateEndpoint("/contentmoderator/lists/v1.0/termlists/{listId}", "GET"); + Endpoints[328] = CreateEndpoint("/contentmoderator/lists/v1.0/termlists/{listId}", "DELETE"); + Endpoints[329] = CreateEndpoint("/contentmoderator/lists/v1.0/termlists/{listId}", "PUT"); + Endpoints[330] = CreateEndpoint("/contentmoderator/lists/v1.0/imagelists/{listId}/images", "POST"); + Endpoints[331] = CreateEndpoint("/contentmoderator/lists/v1.0/imagelists/{listId}/images", "GET"); + Endpoints[332] = CreateEndpoint("/contentmoderator/lists/v1.0/imagelists/{listId}/images", "DELETE"); + Endpoints[333] = CreateEndpoint("/contentmoderator/lists/v1.0/imagelists/{listId}/RefreshIndex", "POST"); + Endpoints[334] = CreateEndpoint("/contentmoderator/lists/v1.0/termlists/{listId}/RefreshIndex", "POST"); + Endpoints[335] = CreateEndpoint("/contentmoderator/lists/v1.0/termlists/{listId}/terms", "GET"); + Endpoints[336] = CreateEndpoint("/contentmoderator/lists/v1.0/termlists/{listId}/terms", "DELETE"); + Endpoints[337] = CreateEndpoint("/contentmoderator/review/v1.0/teams/{teamName}/jobs", "POST"); + Endpoints[338] = CreateEndpoint("/contentmoderator/review/v1.0/teams/{teamName}/reviews", "POST"); + Endpoints[339] = CreateEndpoint("/contentmoderator/lists/v1.0/imagelists/{listId}/images/{ImageId}", "DELETE"); + Endpoints[340] = CreateEndpoint("/contentmoderator/lists/v1.0/termlists/{listId}/terms/{term}", "POST"); + Endpoints[341] = CreateEndpoint("/contentmoderator/lists/v1.0/termlists/{listId}/terms/{term}", "DELETE"); + Endpoints[342] = CreateEndpoint("/contentmoderator/review/v1.0/teams/{teamName}/jobs/{JobId}", "GET"); + Endpoints[343] = CreateEndpoint("/contentmoderator/review/v1.0/teams/{teamName}/reviews/{reviewId}", "GET"); + Endpoints[344] = CreateEndpoint("/contentmoderator/review/v1.0/teams/{teamName}/reviews/{reviewId}/frames", "POST"); + Endpoints[345] = CreateEndpoint("/contentmoderator/review/v1.0/teams/{teamName}/reviews/{reviewId}/frames", "GET"); + Endpoints[346] = CreateEndpoint("/contentmoderator/review/v1.0/teams/{teamName}/reviews/{reviewId}/publish", "POST"); + Endpoints[347] = CreateEndpoint("/contentmoderator/review/v1.0/teams/{teamName}/reviews/{reviewId}/transcript", "PUT"); + Endpoints[348] = CreateEndpoint("/contentmoderator/review/v1.0/teams/{teamName}/reviews/{reviewId}/transcriptmoderationresult", "PUT"); + Endpoints[349] = CreateEndpoint("/catalog/usql/databases/{databaseName}", "GET"); + Endpoints[350] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices/{serviceName}", "GET"); + Endpoints[351] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices/{serviceName}", "PATCH"); + Endpoints[352] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices/{serviceName}", "DELETE"); + Endpoints[353] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}", "PATCH"); + Endpoints[354] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}", "DELETE"); + Endpoints[355] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}", "GET"); + Endpoints[356] = CreateEndpoint("/providers/Microsoft.Authorization/policyDefinitions/{policyDefinitionName}", "GET"); + Endpoints[357] = CreateEndpoint("/providers/Microsoft.Authorization/policySetDefinitions/{policySetDefinitionName}", "GET"); + Endpoints[358] = CreateEndpoint("/providers/Microsoft.Authorization/providerOperations/{resourceProviderNamespace}", "GET"); + Endpoints[359] = CreateEndpoint("/providers/Microsoft.Billing/enrollmentAccounts/{name}", "GET"); + Endpoints[360] = CreateEndpoint("/providers/Microsoft.Capacity/reservationOrders/{reservationOrderId}", "GET"); + Endpoints[361] = CreateEndpoint("/providers/Microsoft.DocumentDB/databaseAccountNames/{accountName}", "HEAD"); + Endpoints[362] = CreateEndpoint("/providers/Microsoft.EventGrid/topicTypes/{topicTypeName}", "GET"); + Endpoints[363] = CreateEndpoint("/providers/Microsoft.ImportExport/locations/{locationName}", "GET"); + Endpoints[364] = CreateEndpoint("/providers/Microsoft.Management/managementGroups/{groupId}", "GET"); + Endpoints[365] = CreateEndpoint("/providers/Microsoft.Management/managementGroups/{groupId}", "PUT"); + Endpoints[366] = CreateEndpoint("/providers/Microsoft.Management/managementGroups/{groupId}", "PATCH"); + Endpoints[367] = CreateEndpoint("/providers/Microsoft.Management/managementGroups/{groupId}", "DELETE"); + Endpoints[368] = CreateEndpoint("/providers/Microsoft.ManagementPartner/partners/{partnerId}", "GET"); + Endpoints[369] = CreateEndpoint("/providers/Microsoft.ManagementPartner/partners/{partnerId}", "DELETE"); + Endpoints[370] = CreateEndpoint("/providers/Microsoft.ManagementPartner/partners/{partnerId}", "PUT"); + Endpoints[371] = CreateEndpoint("/providers/Microsoft.ManagementPartner/partners/{partnerId}", "PATCH"); + Endpoints[372] = CreateEndpoint("/providers/Microsoft.Subscription/subscriptionDefinitions/{subscriptionDefinitionName}", "GET"); + Endpoints[373] = CreateEndpoint("/providers/Microsoft.Subscription/subscriptionDefinitions/{subscriptionDefinitionName}", "PUT"); + Endpoints[374] = CreateEndpoint("/providers/Microsoft.Subscription/subscriptionOperations/{operationId}", "GET"); + Endpoints[375] = CreateEndpoint("/providers/Microsoft.Web/sourcecontrols/{sourceControlType}", "PUT"); + Endpoints[376] = CreateEndpoint("/providers/Microsoft.Web/sourcecontrols/{sourceControlType}", "GET"); + Endpoints[377] = CreateEndpoint("/catalog/usql/databases/{databaseName}/acl", "GET"); + Endpoints[378] = CreateEndpoint("/catalog/usql/databases/{databaseName}/assemblies", "GET"); + Endpoints[379] = CreateEndpoint("/catalog/usql/databases/{databaseName}/credentials", "GET"); + Endpoints[380] = CreateEndpoint("/catalog/usql/databases/{databaseName}/externaldatasources", "GET"); + Endpoints[381] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas", "GET"); + Endpoints[382] = CreateEndpoint("/catalog/usql/databases/{databaseName}/secrets", "DELETE"); + Endpoints[383] = CreateEndpoint("/catalog/usql/databases/{databaseName}/statistics", "GET"); + Endpoints[384] = CreateEndpoint("/catalog/usql/databases/{databaseName}/tables", "GET"); + Endpoints[385] = CreateEndpoint("/catalog/usql/databases/{databaseName}/tablevaluedfunctions", "GET"); + Endpoints[386] = CreateEndpoint("/catalog/usql/databases/{databaseName}/views", "GET"); + Endpoints[387] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices/{serviceName}/addomainservicemembers", "GET"); + Endpoints[388] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices/{serviceName}/addsservicemembers", "GET"); + Endpoints[389] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices/{serviceName}/alerts", "GET"); + Endpoints[390] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices/{serviceName}/configuration", "GET"); + Endpoints[391] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices/{serviceName}/forestsummary", "GET"); + Endpoints[392] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices/{serviceName}/metricmetadata", "GET"); + Endpoints[393] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices/{serviceName}/replicationstatus", "GET"); + Endpoints[394] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices/{serviceName}/replicationsummary", "GET"); + Endpoints[395] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/alerts", "GET"); + Endpoints[396] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/exportstatus", "GET"); + Endpoints[397] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/metricmetadata", "GET"); + Endpoints[398] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/monitoringconfiguration", "PATCH"); + Endpoints[399] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/monitoringconfigurations", "GET"); + Endpoints[400] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/servicemembers", "GET"); + Endpoints[401] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/servicemembers", "POST"); + Endpoints[402] = CreateEndpoint("/providers/Microsoft.Capacity/reservationOrders/{reservationOrderId}/merge", "POST"); + Endpoints[403] = CreateEndpoint("/providers/Microsoft.Capacity/reservationOrders/{reservationOrderId}/reservations", "GET"); + Endpoints[404] = CreateEndpoint("/providers/Microsoft.Capacity/reservationOrders/{reservationOrderId}/split", "POST"); + Endpoints[405] = CreateEndpoint("/providers/Microsoft.EventGrid/topicTypes/{topicTypeName}/eventTypes", "GET"); + Endpoints[406] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/androidPolicies", "GET"); + Endpoints[407] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/apps", "GET"); + Endpoints[408] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/flaggedUsers", "GET"); + Endpoints[409] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/iosPolicies", "GET"); + Endpoints[410] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/operationResults", "GET"); + Endpoints[411] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/exporterrors/counts", "GET"); + Endpoints[412] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/exporterrors/listV2", "GET"); + Endpoints[413] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/statuses/default", "GET"); + Endpoints[414] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/feedbacktype/alerts/feedback", "POST"); + Endpoints[415] = CreateEndpoint("/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.Consumption/balances", "GET"); + Endpoints[416] = CreateEndpoint("/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.Consumption/costTags", "PUT"); + Endpoints[417] = CreateEndpoint("/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.Consumption/costTags", "GET"); + Endpoints[418] = CreateEndpoint("/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.Consumption/marketplaces", "GET"); + Endpoints[419] = CreateEndpoint("/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.Consumption/usageDetails", "GET"); + Endpoints[420] = CreateEndpoint("/providers/Microsoft.Billing/departments/{departmentId}/providers/Microsoft.Consumption/marketplaces", "GET"); + Endpoints[421] = CreateEndpoint("/providers/Microsoft.Billing/departments/{departmentId}/providers/Microsoft.Consumption/usageDetails", "GET"); + Endpoints[422] = CreateEndpoint("/providers/Microsoft.Billing/enrollmentAccounts/{enrollmentAccountId}/providers/Microsoft.Consumption/marketplaces", "GET"); + Endpoints[423] = CreateEndpoint("/providers/Microsoft.Billing/enrollmentAccounts/{enrollmentAccountId}/providers/Microsoft.Consumption/usageDetails", "GET"); + Endpoints[424] = CreateEndpoint("/providers/Microsoft.Billing/enrollmentAccounts/{enrollmentAccountName}/providers/Microsoft.Subscription/createSubscription", "POST"); + Endpoints[425] = CreateEndpoint("/providers/Microsoft.Capacity/reservationorders/{reservationOrderId}/providers/Microsoft.Consumption/reservationDetails", "GET"); + Endpoints[426] = CreateEndpoint("/providers/Microsoft.Capacity/reservationorders/{reservationOrderId}/providers/Microsoft.Consumption/reservationSummaries", "GET"); + Endpoints[427] = CreateEndpoint("/providers/Microsoft.CostManagement/billingAccounts/{billingAccountId}/providers/Microsoft.Consumption/tags", "GET"); + Endpoints[428] = CreateEndpoint("/providers/Microsoft.Management/managementgroups/{managementGroupId}/providers/Microsoft.Authorization/policyDefinitions", "GET"); + Endpoints[429] = CreateEndpoint("/providers/Microsoft.Management/managementgroups/{managementGroupId}/providers/Microsoft.Authorization/policySetDefinitions", "GET"); + Endpoints[430] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/reports/badpassword/details/user", "GET"); + Endpoints[431] = CreateEndpoint("/providers/Microsoft.Management/managementgroups/{managementGroupId}/providers/Microsoft.Authorization/policyDefinitions/{policyDefinitionName}", "DELETE"); + Endpoints[432] = CreateEndpoint("/providers/Microsoft.Management/managementgroups/{managementGroupId}/providers/Microsoft.Authorization/policyDefinitions/{policyDefinitionName}", "PUT"); + Endpoints[433] = CreateEndpoint("/providers/Microsoft.Management/managementgroups/{managementGroupId}/providers/Microsoft.Authorization/policyDefinitions/{policyDefinitionName}", "GET"); + Endpoints[434] = CreateEndpoint("/providers/Microsoft.Management/managementgroups/{managementGroupId}/providers/Microsoft.Authorization/policySetDefinitions/{policySetDefinitionName}", "PUT"); + Endpoints[435] = CreateEndpoint("/providers/Microsoft.Management/managementgroups/{managementGroupId}/providers/Microsoft.Authorization/policySetDefinitions/{policySetDefinitionName}", "GET"); + Endpoints[436] = CreateEndpoint("/providers/Microsoft.Management/managementgroups/{managementGroupId}/providers/Microsoft.Authorization/policySetDefinitions/{policySetDefinitionName}", "DELETE"); + Endpoints[437] = CreateEndpoint("/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}/providers/Microsoft.Consumption/balances", "GET"); + Endpoints[438] = CreateEndpoint("/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}/providers/Microsoft.Consumption/marketplaces", "GET"); + Endpoints[439] = CreateEndpoint("/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}/providers/Microsoft.Consumption/usageDetails", "GET"); + Endpoints[440] = CreateEndpoint("/providers/Microsoft.Billing/departments/{departmentId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}/providers/Microsoft.Consumption/marketplaces", "GET"); + Endpoints[441] = CreateEndpoint("/providers/Microsoft.Billing/departments/{departmentId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}/providers/Microsoft.Consumption/usageDetails", "GET"); + Endpoints[442] = CreateEndpoint("/providers/Microsoft.Billing/enrollmentAccounts/{enrollmentAccountId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}/providers/Microsoft.Consumption/marketplaces", "GET"); + Endpoints[443] = CreateEndpoint("/providers/Microsoft.Billing/enrollmentAccounts/{enrollmentAccountId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}/providers/Microsoft.Consumption/usageDetails", "GET"); + Endpoints[444] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/feedbacktype/alerts/{shortName}/alertfeedback", "GET"); + Endpoints[445] = CreateEndpoint("/catalog/usql/databases/{databaseName}/assemblies/{assemblyName}", "GET"); + Endpoints[446] = CreateEndpoint("/catalog/usql/databases/{databaseName}/credentials/{credentialName}", "PATCH"); + Endpoints[447] = CreateEndpoint("/catalog/usql/databases/{databaseName}/credentials/{credentialName}", "GET"); + Endpoints[448] = CreateEndpoint("/catalog/usql/databases/{databaseName}/credentials/{credentialName}", "PUT"); + Endpoints[449] = CreateEndpoint("/catalog/usql/databases/{databaseName}/credentials/{credentialName}", "POST"); + Endpoints[450] = CreateEndpoint("/catalog/usql/databases/{databaseName}/externaldatasources/{externalDataSourceName}", "GET"); + Endpoints[451] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}", "GET"); + Endpoints[452] = CreateEndpoint("/catalog/usql/databases/{databaseName}/secrets/{secretName}", "PUT"); + Endpoints[453] = CreateEndpoint("/catalog/usql/databases/{databaseName}/secrets/{secretName}", "GET"); + Endpoints[454] = CreateEndpoint("/catalog/usql/databases/{databaseName}/secrets/{secretName}", "PATCH"); + Endpoints[455] = CreateEndpoint("/catalog/usql/databases/{databaseName}/secrets/{secretName}", "DELETE"); + Endpoints[456] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices/{serviceName}/dimensions/{dimension}", "GET"); + Endpoints[457] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices/{serviceName}/metricmetadata/{metricName}", "GET"); + Endpoints[458] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/checkServiceFeatureAvailibility/{featureName}", "GET"); + Endpoints[459] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/metricmetadata/{metricName}", "GET"); + Endpoints[460] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/servicemembers/{serviceMemberId}", "DELETE"); + Endpoints[461] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/servicemembers/{serviceMemberId}", "GET"); + Endpoints[462] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/TenantWhitelisting/{featureName}", "GET"); + Endpoints[463] = CreateEndpoint("/providers/Microsoft.Capacity/reservationOrders/{reservationOrderId}/reservations/{reservationId}", "GET"); + Endpoints[464] = CreateEndpoint("/providers/Microsoft.Capacity/reservationOrders/{reservationOrderId}/reservations/{reservationId}", "PATCH"); + Endpoints[465] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/androidPolicies/{policyName}", "GET"); + Endpoints[466] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/androidPolicies/{policyName}", "PUT"); + Endpoints[467] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/androidPolicies/{policyName}", "PATCH"); + Endpoints[468] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/androidPolicies/{policyName}", "DELETE"); + Endpoints[469] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/flaggedUsers/{userName}", "GET"); + Endpoints[470] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/iosPolicies/{policyName}", "GET"); + Endpoints[471] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/iosPolicies/{policyName}", "PUT"); + Endpoints[472] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/iosPolicies/{policyName}", "PATCH"); + Endpoints[473] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/iosPolicies/{policyName}", "DELETE"); + Endpoints[474] = CreateEndpoint("/providers/Microsoft.Management/managementGroups/{groupId}/subscriptions/{subscriptionId}", "DELETE"); + Endpoints[475] = CreateEndpoint("/providers/Microsoft.Management/managementGroups/{groupId}/subscriptions/{subscriptionId}", "PUT"); + Endpoints[476] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/packages", "GET"); + Endpoints[477] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/procedures", "GET"); + Endpoints[478] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/statistics", "GET"); + Endpoints[479] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/tables", "GET"); + Endpoints[480] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/tabletypes", "GET"); + Endpoints[481] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/tablevaluedfunctions", "GET"); + Endpoints[482] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/types", "GET"); + Endpoints[483] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/views", "GET"); + Endpoints[484] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices/{serviceName}/servicemembers/{serviceMemberId}/alerts", "GET"); + Endpoints[485] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/service/{serviceName}/servicemembers/{serviceMemberId}/connectors", "GET"); + Endpoints[486] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/servicemembers/{serviceMemberId}/alerts", "GET"); + Endpoints[487] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/servicemembers/{serviceMemberId}/credentials", "GET"); + Endpoints[488] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/servicemembers/{serviceMemberId}/data", "DELETE"); + Endpoints[489] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/servicemembers/{serviceMemberId}/datafreshness", "GET"); + Endpoints[490] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/servicemembers/{serviceMemberId}/exportstatus", "GET"); + Endpoints[491] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/servicemembers/{serviceMemberId}/globalconfiguration", "GET"); + Endpoints[492] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/servicemembers/{serviceMemberId}/serviceconfiguration", "GET"); + Endpoints[493] = CreateEndpoint("/providers/Microsoft.Capacity/reservationOrders/{reservationOrderId}/reservations/{reservationId}/revisions", "GET"); + Endpoints[494] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/AndroidPolicies/{policyName}/apps", "GET"); + Endpoints[495] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/androidPolicies/{policyName}/groups", "GET"); + Endpoints[496] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/flaggedUsers/{userName}/flaggedEnrolledApps", "GET"); + Endpoints[497] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/iosPolicies/{policyName}/apps", "GET"); + Endpoints[498] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/iosPolicies/{policyName}/groups", "GET"); + Endpoints[499] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/users/{userName}/devices", "GET"); + Endpoints[500] = CreateEndpoint("/providers/Microsoft.Capacity/reservationorders/{reservationOrderId}/reservations/{reservationId}/providers/Microsoft.Consumption/reservationDetails", "GET"); + Endpoints[501] = CreateEndpoint("/providers/Microsoft.Capacity/reservationorders/{reservationOrderId}/reservations/{reservationId}/providers/Microsoft.Consumption/reservationSummaries", "GET"); + Endpoints[502] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/packages/{packageName}", "GET"); + Endpoints[503] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/procedures/{procedureName}", "GET"); + Endpoints[504] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/tables/{tableName}", "GET"); + Endpoints[505] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/tabletypes/{tableTypeName}", "GET"); + Endpoints[506] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/tablevaluedfunctions/{tableValuedFunctionName}", "GET"); + Endpoints[507] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/views/{viewName}", "GET"); + Endpoints[508] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices/{serviceName}/metricmetadata/{metricName}/groups/{groupName}", "GET"); + Endpoints[509] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/metricmetadata/{metricName}/groups/{groupName}", "GET"); + Endpoints[510] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/androidPolicies/{policyName}/apps/{appName}", "PUT"); + Endpoints[511] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/androidPolicies/{policyName}/apps/{appName}", "DELETE"); + Endpoints[512] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/androidPolicies/{policyName}/groups/{groupId}", "PUT"); + Endpoints[513] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/androidPolicies/{policyName}/groups/{groupId}", "DELETE"); + Endpoints[514] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/iosPolicies/{policyName}/apps/{appName}", "DELETE"); + Endpoints[515] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/iosPolicies/{policyName}/apps/{appName}", "PUT"); + Endpoints[516] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/iosPolicies/{policyName}/groups/{groupId}", "DELETE"); + Endpoints[517] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/iosPolicies/{policyName}/groups/{groupId}", "PUT"); + Endpoints[518] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/users/{userName}/devices/{deviceName}", "GET"); + Endpoints[519] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/tables/{tableName}/partitions", "GET"); + Endpoints[520] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/tables/{tableName}/previewrows", "GET"); + Endpoints[521] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/tables/{tableName}/statistics", "GET"); + Endpoints[522] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/tables/{tableName}/tablefragments", "GET"); + Endpoints[523] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices/{serviceName}/metrics/{metricName}/groups/{groupName}/average", "GET"); + Endpoints[524] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/addsservices/{serviceName}/metrics/{metricName}/groups/{groupName}/sum", "GET"); + Endpoints[525] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/metrics/{metricName}/groups/{groupName}/average", "GET"); + Endpoints[526] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/metrics/{metricName}/groups/{groupName}/sum", "GET"); + Endpoints[527] = CreateEndpoint("/providers/Microsoft.Intune/locations/{hostName}/users/{userName}/devices/{deviceName}/wipe", "POST"); + Endpoints[528] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/tables/{tableName}/partitions/{partitionName}", "GET"); + Endpoints[529] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/tables/{tableName}/statistics/{statisticsName}", "GET"); + Endpoints[530] = CreateEndpoint("/providers/Microsoft.ADHybridHealthService/services/{serviceName}/servicemembers/{serviceMemberId}/metrics/{metricName}/groups/{groupName}", "GET"); + Endpoints[531] = CreateEndpoint("/catalog/usql/databases/{databaseName}/schemas/{schemaName}/tables/{tableName}/partitions/{partitionName}/previewrows", "GET"); + Endpoints[532] = CreateEndpoint("/apps/customprebuiltdomains/{culture}", "GET"); + Endpoints[533] = CreateEndpoint("/BackupRestore/BackupPolicies/{backupPolicyName}", "GET"); + Endpoints[534] = CreateEndpoint("/certificates/issuers/{issuer-name}", "DELETE"); + Endpoints[535] = CreateEndpoint("/certificates/issuers/{issuer-name}", "PUT"); + Endpoints[536] = CreateEndpoint("/certificates/issuers/{issuer-name}", "GET"); + Endpoints[537] = CreateEndpoint("/certificates/issuers/{issuer-name}", "PATCH"); + Endpoints[538] = CreateEndpoint("/webhdfs/v1/{directFilePath}", "POST"); + Endpoints[539] = CreateEndpoint("/webhdfs/v1/{filePath}", "DELETE"); + Endpoints[540] = CreateEndpoint("/webhdfs/v1/{path}", "GET"); + Endpoints[541] = CreateEndpoint("/webhdfs/v1/{setPermissionFilePath}", "PUT"); + Endpoints[542] = CreateEndpoint("/webhdfs/va/{getContentSummaryFilePath}", "GET"); + Endpoints[543] = CreateEndpoint("/BackupRestore/BackupPolicies/{backupPolicyName}/$/Delete", "POST"); + Endpoints[544] = CreateEndpoint("/BackupRestore/BackupPolicies/{backupPolicyName}/$/GetBackupEnabledEntities", "GET"); + Endpoints[545] = CreateEndpoint("/BackupRestore/BackupPolicies/{backupPolicyName}/$/Update", "POST"); + Endpoints[546] = CreateEndpoint("/EventsStore/Applications/{applicationId}/$/Events", "GET"); + Endpoints[547] = CreateEndpoint("/EventsStore/CorrelatedEvents/{eventInstanceId}/$/Events", "GET"); + Endpoints[548] = CreateEndpoint("/EventsStore/Nodes/{nodeName}/$/Events", "GET"); + Endpoints[549] = CreateEndpoint("/EventsStore/Partitions/{partitionId}/$/Events", "GET"); + Endpoints[550] = CreateEndpoint("/EventsStore/Services/{serviceId}/$/Events", "GET"); + Endpoints[551] = CreateEndpoint("/Faults/Nodes/{nodeName}/$/GetTransitionProgress", "GET"); + Endpoints[552] = CreateEndpoint("/Faults/Nodes/{nodeName}/$/StartTransition/", "POST"); + Endpoints[553] = CreateEndpoint("/EventsStore/Partitions/{partitionId}/$/Replicas/Events", "GET"); + Endpoints[554] = CreateEndpoint("/Services/$/{serviceId}/$/GetPartitions/$/Recover", "POST"); + Endpoints[555] = CreateEndpoint("/EventsStore/Partitions/{partitionId}/$/Replicas/{replicaId}/$/Events", "GET"); + Endpoints[556] = CreateEndpoint("/Faults/Services/{serviceId}/$/GetPartitions/{partitionId}/$/GetDataLossProgress", "GET"); + Endpoints[557] = CreateEndpoint("/Faults/Services/{serviceId}/$/GetPartitions/{partitionId}/$/GetQuorumLossProgress", "GET"); + Endpoints[558] = CreateEndpoint("/Faults/Services/{serviceId}/$/GetPartitions/{partitionId}/$/GetRestartProgress", "GET"); + Endpoints[559] = CreateEndpoint("/Faults/Services/{serviceId}/$/GetPartitions/{partitionId}/$/StartDataLoss", "POST"); + Endpoints[560] = CreateEndpoint("/Faults/Services/{serviceId}/$/GetPartitions/{partitionId}/$/StartQuorumLoss", "POST"); + Endpoints[561] = CreateEndpoint("/Faults/Services/{serviceId}/$/GetPartitions/{partitionId}/$/StartRestart", "POST"); + Endpoints[562] = CreateEndpoint("/apis/{apiId}", "GET"); + Endpoints[563] = CreateEndpoint("/apis/{apiId}", "PUT"); + Endpoints[564] = CreateEndpoint("/apis/{apiId}", "PATCH"); + Endpoints[565] = CreateEndpoint("/apis/{apiId}", "DELETE"); + Endpoints[566] = CreateEndpoint("/Applications/{applicationId}", "GET"); + Endpoints[567] = CreateEndpoint("/ApplicationTypes/{applicationTypeName}", "GET"); + Endpoints[568] = CreateEndpoint("/apps/{appId}", "PUT"); + Endpoints[569] = CreateEndpoint("/apps/{appId}", "GET"); + Endpoints[570] = CreateEndpoint("/apps/{appId}", "DELETE"); + Endpoints[571] = CreateEndpoint("/authorizationServers/{authsid}", "PUT"); + Endpoints[572] = CreateEndpoint("/authorizationServers/{authsid}", "PATCH"); + Endpoints[573] = CreateEndpoint("/authorizationServers/{authsid}", "DELETE"); + Endpoints[574] = CreateEndpoint("/authorizationServers/{authsid}", "GET"); + Endpoints[575] = CreateEndpoint("/backends/{backendid}", "PUT"); + Endpoints[576] = CreateEndpoint("/backends/{backendid}", "PATCH"); + Endpoints[577] = CreateEndpoint("/backends/{backendid}", "DELETE"); + Endpoints[578] = CreateEndpoint("/backends/{backendid}", "GET"); + Endpoints[579] = CreateEndpoint("/certificates/{certificateId}", "GET"); + Endpoints[580] = CreateEndpoint("/certificates/{certificateId}", "PUT"); + Endpoints[581] = CreateEndpoint("/certificates/{certificate-name}", "DELETE"); + Endpoints[582] = CreateEndpoint("/ComposeDeployments/{deploymentName}", "GET"); + Endpoints[583] = CreateEndpoint("/deletedcertificates/{certificate-name}", "GET"); + Endpoints[584] = CreateEndpoint("/deletedcertificates/{certificate-name}", "DELETE"); + Endpoints[585] = CreateEndpoint("/deletedkeys/{key-name}", "DELETE"); + Endpoints[586] = CreateEndpoint("/deletedkeys/{key-name}", "GET"); + Endpoints[587] = CreateEndpoint("/deletedsecrets/{secret-name}", "DELETE"); + Endpoints[588] = CreateEndpoint("/deletedsecrets/{secret-name}", "GET"); + Endpoints[589] = CreateEndpoint("/deletedstorage/{storage-account-name}", "DELETE"); + Endpoints[590] = CreateEndpoint("/deletedstorage/{storage-account-name}", "GET"); + Endpoints[591] = CreateEndpoint("/domains/{domainId}", "GET"); + Endpoints[592] = CreateEndpoint("/facelists/{faceListId}", "PATCH"); + Endpoints[593] = CreateEndpoint("/facelists/{faceListId}", "DELETE"); + Endpoints[594] = CreateEndpoint("/facelists/{faceListId}", "PUT"); + Endpoints[595] = CreateEndpoint("/facelists/{faceListId}", "GET"); + Endpoints[596] = CreateEndpoint("/groups/{groupId}", "PATCH"); + Endpoints[597] = CreateEndpoint("/groups/{groupId}", "PUT"); + Endpoints[598] = CreateEndpoint("/groups/{groupId}", "GET"); + Endpoints[599] = CreateEndpoint("/groups/{groupId}", "DELETE"); + Endpoints[600] = CreateEndpoint("/identityProviders/{identityProviderName}", "DELETE"); + Endpoints[601] = CreateEndpoint("/identityProviders/{identityProviderName}", "GET"); + Endpoints[602] = CreateEndpoint("/identityProviders/{identityProviderName}", "PUT"); + Endpoints[603] = CreateEndpoint("/identityProviders/{identityProviderName}", "PATCH"); + Endpoints[604] = CreateEndpoint("/ImageStore/{contentPath}", "PUT"); + Endpoints[605] = CreateEndpoint("/ImageStore/{contentPath}", "DELETE"); + Endpoints[606] = CreateEndpoint("/ImageStore/{contentPath}", "GET"); + Endpoints[607] = CreateEndpoint("/jobs/{jobId}", "DELETE"); + Endpoints[608] = CreateEndpoint("/jobs/{jobIdentity}", "PATCH"); + Endpoints[609] = CreateEndpoint("/Jobs/{jobIdentity}", "PUT"); + Endpoints[610] = CreateEndpoint("/Jobs/{jobIdentity}", "GET"); + Endpoints[611] = CreateEndpoint("/jobschedules/{jobScheduleId}", "HEAD"); + Endpoints[612] = CreateEndpoint("/jobschedules/{jobScheduleId}", "PATCH"); + Endpoints[613] = CreateEndpoint("/jobschedules/{jobScheduleId}", "DELETE"); + Endpoints[614] = CreateEndpoint("/jobschedules/{jobScheduleId}", "GET"); + Endpoints[615] = CreateEndpoint("/jobschedules/{jobScheduleId}", "PUT"); + Endpoints[616] = CreateEndpoint("/keys/{key-name}", "PUT"); + Endpoints[617] = CreateEndpoint("/keys/{key-name}", "DELETE"); + Endpoints[618] = CreateEndpoint("/loggers/{loggerid}", "DELETE"); + Endpoints[619] = CreateEndpoint("/loggers/{loggerid}", "PATCH"); + Endpoints[620] = CreateEndpoint("/loggers/{loggerid}", "PUT"); + Endpoints[621] = CreateEndpoint("/loggers/{loggerid}", "GET"); + Endpoints[622] = CreateEndpoint("/Names/{nameId}", "GET"); + Endpoints[623] = CreateEndpoint("/Names/{nameId}", "DELETE"); + Endpoints[624] = CreateEndpoint("/Nodes/{nodeName}", "GET"); + Endpoints[625] = CreateEndpoint("/openidConnectProviders/{opid}", "PATCH"); + Endpoints[626] = CreateEndpoint("/openidConnectProviders/{opid}", "PUT"); + Endpoints[627] = CreateEndpoint("/openidConnectProviders/{opid}", "GET"); + Endpoints[628] = CreateEndpoint("/openidConnectProviders/{opid}", "DELETE"); + Endpoints[629] = CreateEndpoint("/Partitions/{partitionId}", "GET"); + Endpoints[630] = CreateEndpoint("/persongroups/{personGroupId}", "PUT"); + Endpoints[631] = CreateEndpoint("/persongroups/{personGroupId}", "GET"); + Endpoints[632] = CreateEndpoint("/persongroups/{personGroupId}", "PATCH"); + Endpoints[633] = CreateEndpoint("/persongroups/{personGroupId}", "DELETE"); + Endpoints[634] = CreateEndpoint("/pipelines/{pipelineIdentity}", "GET"); + Endpoints[635] = CreateEndpoint("/policies/{policyId}", "GET"); + Endpoints[636] = CreateEndpoint("/policies/{policyId}", "PUT"); + Endpoints[637] = CreateEndpoint("/policies/{policyId}", "DELETE"); + Endpoints[638] = CreateEndpoint("/pools/{poolId}", "PATCH"); + Endpoints[639] = CreateEndpoint("/pools/{poolId}", "DELETE"); + Endpoints[640] = CreateEndpoint("/pools/{poolId}", "HEAD"); + Endpoints[641] = CreateEndpoint("/pools/{poolId}", "GET"); + Endpoints[642] = CreateEndpoint("/products/{productId}", "PATCH"); + Endpoints[643] = CreateEndpoint("/products/{productId}", "PUT"); + Endpoints[644] = CreateEndpoint("/products/{productId}", "DELETE"); + Endpoints[645] = CreateEndpoint("/products/{productId}", "GET"); + Endpoints[646] = CreateEndpoint("/projects/{projectId}", "PATCH"); + Endpoints[647] = CreateEndpoint("/projects/{projectId}", "DELETE"); + Endpoints[648] = CreateEndpoint("/projects/{projectId}", "GET"); + Endpoints[649] = CreateEndpoint("/properties/{propId}", "DELETE"); + Endpoints[650] = CreateEndpoint("/properties/{propId}", "PATCH"); + Endpoints[651] = CreateEndpoint("/properties/{propId}", "PUT"); + Endpoints[652] = CreateEndpoint("/properties/{propId}", "GET"); + Endpoints[653] = CreateEndpoint("/quotas/{quotaCounterKey}", "GET"); + Endpoints[654] = CreateEndpoint("/quotas/{quotaCounterKey}", "PATCH"); + Endpoints[655] = CreateEndpoint("/recurrences/{recurrenceIdentity}", "GET"); + Endpoints[656] = CreateEndpoint("/secrets/{secret-name}", "PUT"); + Endpoints[657] = CreateEndpoint("/secrets/{secret-name}", "DELETE"); + Endpoints[658] = CreateEndpoint("/storage/{storage-account-name}", "PATCH"); + Endpoints[659] = CreateEndpoint("/storage/{storage-account-name}", "PUT"); + Endpoints[660] = CreateEndpoint("/storage/{storage-account-name}", "GET"); + Endpoints[661] = CreateEndpoint("/storage/{storage-account-name}", "DELETE"); + Endpoints[662] = CreateEndpoint("/subscriptions/{sid}", "PATCH"); + Endpoints[663] = CreateEndpoint("/subscriptions/{subscriptionId}", "GET"); + Endpoints[664] = CreateEndpoint("/subscriptions/{subscriptionId}", "DELETE"); + Endpoints[665] = CreateEndpoint("/subscriptions/{subscriptionId}", "PUT"); + Endpoints[666] = CreateEndpoint("/templates/{templateName}", "PATCH"); + Endpoints[667] = CreateEndpoint("/templates/{templateName}", "PUT"); + Endpoints[668] = CreateEndpoint("/templates/{templateName}", "GET"); + Endpoints[669] = CreateEndpoint("/templates/{templateName}", "DELETE"); + Endpoints[670] = CreateEndpoint("/tenant/{accessName}", "GET"); + Endpoints[671] = CreateEndpoint("/tenant/{accessName}", "PATCH"); + Endpoints[672] = CreateEndpoint("/textOperations/{operationId}", "GET"); + Endpoints[673] = CreateEndpoint("/users/{uid}", "GET"); + Endpoints[674] = CreateEndpoint("/users/{uid}", "PUT"); + Endpoints[675] = CreateEndpoint("/users/{uid}", "PATCH"); + Endpoints[676] = CreateEndpoint("/users/{uid}", "DELETE"); + Endpoints[677] = CreateEndpoint("/WebHdfsExt/{path}", "PUT"); + Endpoints[678] = CreateEndpoint("/WebHdfsExt/{path}", "POST"); + Endpoints[679] = CreateEndpoint("/apis/{apiId}/operations", "GET"); + Endpoints[680] = CreateEndpoint("/apis/{apiId}/policies", "GET"); + Endpoints[681] = CreateEndpoint("/apis/{apiId}/products", "GET"); + Endpoints[682] = CreateEndpoint("/apis/{apiId}/schemas", "GET"); + Endpoints[683] = CreateEndpoint("/apps/{appId}/endpoints", "GET"); + Endpoints[684] = CreateEndpoint("/apps/{appId}/metrics", "POST"); + Endpoints[685] = CreateEndpoint("/apps/{appId}/permissions", "DELETE"); + Endpoints[686] = CreateEndpoint("/apps/{appId}/permissions", "GET"); + Endpoints[687] = CreateEndpoint("/apps/{appId}/permissions", "POST"); + Endpoints[688] = CreateEndpoint("/apps/{appId}/permissions", "PUT"); + Endpoints[689] = CreateEndpoint("/apps/{appId}/publish", "POST"); + Endpoints[690] = CreateEndpoint("/apps/{appId}/publishsettings", "GET"); + Endpoints[691] = CreateEndpoint("/apps/{appId}/publishsettings", "PUT"); + Endpoints[692] = CreateEndpoint("/apps/{appId}/query", "GET"); + Endpoints[693] = CreateEndpoint("/apps/{appId}/query", "POST"); + Endpoints[694] = CreateEndpoint("/apps/{appId}/querylogs", "GET"); + Endpoints[695] = CreateEndpoint("/apps/{appId}/settings", "GET"); + Endpoints[696] = CreateEndpoint("/apps/{appId}/settings", "PUT"); + Endpoints[697] = CreateEndpoint("/apps/{appId}/versions", "GET"); + Endpoints[698] = CreateEndpoint("/certificates/{certificate-name}/create", "POST"); + Endpoints[699] = CreateEndpoint("/certificates/{certificate-name}/import", "POST"); + Endpoints[700] = CreateEndpoint("/certificates/{certificate-name}/pending", "PATCH"); + Endpoints[701] = CreateEndpoint("/certificates/{certificate-name}/pending", "GET"); + Endpoints[702] = CreateEndpoint("/certificates/{certificate-name}/pending", "DELETE"); + Endpoints[703] = CreateEndpoint("/certificates/{certificate-name}/policy", "GET"); + Endpoints[704] = CreateEndpoint("/certificates/{certificate-name}/policy", "PATCH"); + Endpoints[705] = CreateEndpoint("/certificates/{certificate-name}/versions", "GET"); + Endpoints[706] = CreateEndpoint("/delegatedProviders/{delegatedProviderId}/offers", "GET"); + Endpoints[707] = CreateEndpoint("/deletedcertificates/{certificate-name}/recover", "POST"); + Endpoints[708] = CreateEndpoint("/deletedkeys/{key-name}/recover", "POST"); + Endpoints[709] = CreateEndpoint("/deletedsecrets/{secret-name}/recover", "POST"); + Endpoints[710] = CreateEndpoint("/deletedstorage/{storage-account-name}/recover", "POST"); + Endpoints[711] = CreateEndpoint("/deletedstorage/{storage-account-name}/sas", "GET"); + Endpoints[712] = CreateEndpoint("/facelists/{faceListId}/persistedFaces", "POST"); + Endpoints[713] = CreateEndpoint("/groups/{groupId}/users", "GET"); + Endpoints[714] = CreateEndpoint("/jobs/{jobId}/addtaskcollection", "POST"); + Endpoints[715] = CreateEndpoint("/jobs/{jobId}/disable", "POST"); + Endpoints[716] = CreateEndpoint("/jobs/{jobId}/enable", "POST"); + Endpoints[717] = CreateEndpoint("/jobs/{jobId}/jobpreparationandreleasetaskstatus", "GET"); + Endpoints[718] = CreateEndpoint("/jobs/{jobId}/taskcounts", "GET"); + Endpoints[719] = CreateEndpoint("/jobs/{jobId}/tasks", "GET"); + Endpoints[720] = CreateEndpoint("/jobs/{jobId}/tasks", "POST"); + Endpoints[721] = CreateEndpoint("/jobs/{jobId}/terminate", "POST"); + Endpoints[722] = CreateEndpoint("/Jobs/{jobIdentity}/CancelJob", "POST"); + Endpoints[723] = CreateEndpoint("/Jobs/{jobIdentity}/GetDebugDataPath", "POST"); + Endpoints[724] = CreateEndpoint("/Jobs/{jobIdentity}/GetDebugDataPath", "GET"); + Endpoints[725] = CreateEndpoint("/Jobs/{jobIdentity}/GetStatistics", "GET"); + Endpoints[726] = CreateEndpoint("/Jobs/{jobIdentity}/GetStatistics", "POST"); + Endpoints[727] = CreateEndpoint("/jobs/{jobIdentity}/YieldJob", "POST"); + Endpoints[728] = CreateEndpoint("/jobschedules/{jobScheduleId}/disable", "POST"); + Endpoints[729] = CreateEndpoint("/jobschedules/{jobScheduleId}/enable", "POST"); + Endpoints[730] = CreateEndpoint("/jobschedules/{jobScheduleId}/jobs", "GET"); + Endpoints[731] = CreateEndpoint("/jobschedules/{jobScheduleId}/terminate", "POST"); + Endpoints[732] = CreateEndpoint("/keys/{key-name}/backup", "POST"); + Endpoints[733] = CreateEndpoint("/keys/{key-name}/create", "POST"); + Endpoints[734] = CreateEndpoint("/keys/{key-name}/versions", "GET"); + Endpoints[735] = CreateEndpoint("/models/{model}/analyze", "POST"); + Endpoints[736] = CreateEndpoint("/persongroups/{personGroupId}/persons", "POST"); + Endpoints[737] = CreateEndpoint("/persongroups/{personGroupId}/persons", "GET"); + Endpoints[738] = CreateEndpoint("/persongroups/{personGroupId}/train", "POST"); + Endpoints[739] = CreateEndpoint("/persongroups/{personGroupId}/training", "GET"); + Endpoints[740] = CreateEndpoint("/pools/{poolId}/disableautoscale", "POST"); + Endpoints[741] = CreateEndpoint("/pools/{poolId}/enableautoscale", "POST"); + Endpoints[742] = CreateEndpoint("/pools/{poolId}/evaluateautoscale", "POST"); + Endpoints[743] = CreateEndpoint("/pools/{poolId}/nodes", "GET"); + Endpoints[744] = CreateEndpoint("/pools/{poolId}/removenodes", "POST"); + Endpoints[745] = CreateEndpoint("/pools/{poolId}/resize", "POST"); + Endpoints[746] = CreateEndpoint("/pools/{poolId}/stopresize", "POST"); + Endpoints[747] = CreateEndpoint("/pools/{poolId}/updateproperties", "POST"); + Endpoints[748] = CreateEndpoint("/pools/{poolId}/upgradeos", "POST"); + Endpoints[749] = CreateEndpoint("/products/{productId}/apis", "GET"); + Endpoints[750] = CreateEndpoint("/products/{productId}/groups", "GET"); + Endpoints[751] = CreateEndpoint("/products/{productId}/policies", "GET"); + Endpoints[752] = CreateEndpoint("/products/{productId}/subscriptions", "GET"); + Endpoints[753] = CreateEndpoint("/projects/{projectId}/images", "DELETE"); + Endpoints[754] = CreateEndpoint("/projects/{projectId}/images", "POST"); + Endpoints[755] = CreateEndpoint("/projects/{projectId}/iterations", "GET"); + Endpoints[756] = CreateEndpoint("/projects/{projectId}/predictions", "DELETE"); + Endpoints[757] = CreateEndpoint("/projects/{projectId}/tags", "POST"); + Endpoints[758] = CreateEndpoint("/projects/{projectId}/tags", "GET"); + Endpoints[759] = CreateEndpoint("/projects/{projectId}/train", "POST"); + Endpoints[760] = CreateEndpoint("/providers/{resourceProviderNamespace}/operations", "GET"); + Endpoints[761] = CreateEndpoint("/secrets/{secret-name}/backup", "POST"); + Endpoints[762] = CreateEndpoint("/secrets/{secret-name}/versions", "GET"); + Endpoints[763] = CreateEndpoint("/storage/{storage-account-name}/backup", "POST"); + Endpoints[764] = CreateEndpoint("/storage/{storage-account-name}/regeneratekey", "POST"); + Endpoints[765] = CreateEndpoint("/storage/{storage-account-name}/sas", "GET"); + Endpoints[766] = CreateEndpoint("/subscriptions/{sid}/regeneratePrimaryKey", "POST"); + Endpoints[767] = CreateEndpoint("/subscriptions/{sid}/regenerateSecondaryKey", "POST"); + Endpoints[768] = CreateEndpoint("/subscriptions/{subscriptionId}/locations", "GET"); + Endpoints[769] = CreateEndpoint("/subscriptions/{subscriptionId}/providers", "GET"); + Endpoints[770] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups", "GET"); + Endpoints[771] = CreateEndpoint("/subscriptions/{subscriptionId}/resources", "GET"); + Endpoints[772] = CreateEndpoint("/subscriptions/{subscriptionId}/tagNames", "GET"); + Endpoints[773] = CreateEndpoint("/tenant/{accessName}/git", "GET"); + Endpoints[774] = CreateEndpoint("/tenant/{accessName}/regeneratePrimaryKey", "POST"); + Endpoints[775] = CreateEndpoint("/tenant/{accessName}/regenerateSecondaryKey", "POST"); + Endpoints[776] = CreateEndpoint("/tenant/{configurationName}/deploy", "POST"); + Endpoints[777] = CreateEndpoint("/tenant/{configurationName}/save", "POST"); + Endpoints[778] = CreateEndpoint("/tenant/{configurationName}/syncState", "GET"); + Endpoints[779] = CreateEndpoint("/tenant/{configurationName}/validate", "POST"); + Endpoints[780] = CreateEndpoint("/users/{uid}/generateSsoUrl", "POST"); + Endpoints[781] = CreateEndpoint("/users/{uid}/groups", "GET"); + Endpoints[782] = CreateEndpoint("/users/{uid}/identities", "GET"); + Endpoints[783] = CreateEndpoint("/users/{uid}/subscriptions", "GET"); + Endpoints[784] = CreateEndpoint("/users/{uid}/token", "POST"); + Endpoints[785] = CreateEndpoint("/workspaces/{workspaceId}/query", "GET"); + Endpoints[786] = CreateEndpoint("/workspaces/{workspaceId}/query", "POST"); + Endpoints[787] = CreateEndpoint("/Applications/{applicationId}/$/Delete", "POST"); + Endpoints[788] = CreateEndpoint("/Applications/{applicationId}/$/DisableBackup", "POST"); + Endpoints[789] = CreateEndpoint("/Applications/{applicationId}/$/EnableBackup", "POST"); + Endpoints[790] = CreateEndpoint("/Applications/{applicationId}/$/GetBackupConfigurationInfo", "GET"); + Endpoints[791] = CreateEndpoint("/Applications/{applicationId}/$/GetBackups", "GET"); + Endpoints[792] = CreateEndpoint("/Applications/{applicationId}/$/GetHealth", "POST"); + Endpoints[793] = CreateEndpoint("/Applications/{applicationId}/$/GetHealth", "GET"); + Endpoints[794] = CreateEndpoint("/Applications/{applicationId}/$/GetLoadInformation", "GET"); + Endpoints[795] = CreateEndpoint("/Applications/{applicationId}/$/GetServices", "GET"); + Endpoints[796] = CreateEndpoint("/Applications/{applicationId}/$/GetUpgradeProgress", "GET"); + Endpoints[797] = CreateEndpoint("/Applications/{applicationId}/$/MoveToNextUpgradeDomain", "POST"); + Endpoints[798] = CreateEndpoint("/Applications/{applicationId}/$/ReportHealth", "POST"); + Endpoints[799] = CreateEndpoint("/Applications/{applicationId}/$/ResumeBackup", "POST"); + Endpoints[800] = CreateEndpoint("/Applications/{applicationId}/$/RollbackUpgrade", "POST"); + Endpoints[801] = CreateEndpoint("/Applications/{applicationId}/$/SuspendBackup", "POST"); + Endpoints[802] = CreateEndpoint("/Applications/{applicationId}/$/UpdateUpgrade", "POST"); + Endpoints[803] = CreateEndpoint("/Applications/{applicationId}/$/Upgrade", "POST"); + Endpoints[804] = CreateEndpoint("/Applications/{applicationName}/$/MoveNextUpgradeDomain", "POST"); + Endpoints[805] = CreateEndpoint("/ApplicationTypes/{applicationTypeName}/$/GetApplicationManifest", "GET"); + Endpoints[806] = CreateEndpoint("/ApplicationTypes/{applicationTypeName}/$/GetServiceManifest", "GET"); + Endpoints[807] = CreateEndpoint("/ApplicationTypes/{applicationTypeName}/$/GetServiceTypes", "GET"); + Endpoints[808] = CreateEndpoint("/ApplicationTypes/{applicationTypeName}/$/Unprovision", "POST"); + Endpoints[809] = CreateEndpoint("/apps/{appId}/events/$metadata", "GET"); + Endpoints[810] = CreateEndpoint("/apps/{appId}/metrics/metadata", "GET"); + Endpoints[811] = CreateEndpoint("/apps/{appId}/query/schema", "GET"); + Endpoints[812] = CreateEndpoint("/apps/{appId}/versions/import", "POST"); + Endpoints[813] = CreateEndpoint("/certificates/{certificate-name}/pending/merge", "POST"); + Endpoints[814] = CreateEndpoint("/ComposeDeployments/{deploymentName}/$/Delete", "POST"); + Endpoints[815] = CreateEndpoint("/ComposeDeployments/{deploymentName}/$/GetUpgradeProgress", "GET"); + Endpoints[816] = CreateEndpoint("/ComposeDeployments/{deploymentName}/$/Upgrade", "POST"); + Endpoints[817] = CreateEndpoint("/ImageStore/{contentPath}/$/GetUploadSession", "GET"); + Endpoints[818] = CreateEndpoint("/ImageStore/{contentPath}/$/UploadChunk", "PUT"); + Endpoints[819] = CreateEndpoint("/Names/{nameId}/$/GetProperties", "GET"); + Endpoints[820] = CreateEndpoint("/Names/{nameId}/$/GetProperty", "DELETE"); + Endpoints[821] = CreateEndpoint("/Names/{nameId}/$/GetProperty", "PUT"); + Endpoints[822] = CreateEndpoint("/Names/{nameId}/$/GetProperty", "GET"); + Endpoints[823] = CreateEndpoint("/Names/{nameId}/$/GetSubNames", "GET"); + Endpoints[824] = CreateEndpoint("/Nodes/{nodeName}/$/Activate", "POST"); + Endpoints[825] = CreateEndpoint("/Nodes/{nodeName}/$/Deactivate", "POST"); + Endpoints[826] = CreateEndpoint("/Nodes/{nodeName}/$/DeployServicePackage", "POST"); + Endpoints[827] = CreateEndpoint("/Nodes/{nodeName}/$/GetApplications", "GET"); + Endpoints[828] = CreateEndpoint("/Nodes/{nodeName}/$/GetHealth", "GET"); + Endpoints[829] = CreateEndpoint("/Nodes/{nodeName}/$/GetHealth", "POST"); + Endpoints[830] = CreateEndpoint("/Nodes/{nodeName}/$/GetLoadInformation", "GET"); + Endpoints[831] = CreateEndpoint("/Nodes/{nodeName}/$/RemoveNodeState", "POST"); + Endpoints[832] = CreateEndpoint("/Nodes/{nodeName}/$/ReportHealth", "POST"); + Endpoints[833] = CreateEndpoint("/Nodes/{nodeName}/$/Restart", "POST"); + Endpoints[834] = CreateEndpoint("/Nodes/{nodeName}/$/Start", "POST"); + Endpoints[835] = CreateEndpoint("/Nodes/{nodeName}/$/Stop", "POST"); + Endpoints[836] = CreateEndpoint("/Partitions/{partitionId}/$/Backup", "POST"); + Endpoints[837] = CreateEndpoint("/Partitions/{partitionId}/$/DisableBackup", "POST"); + Endpoints[838] = CreateEndpoint("/Partitions/{partitionId}/$/EnableBackup", "POST"); + Endpoints[839] = CreateEndpoint("/Partitions/{partitionId}/$/GetBackupConfigurationInfo", "GET"); + Endpoints[840] = CreateEndpoint("/Partitions/{partitionId}/$/GetBackupProgress", "GET"); + Endpoints[841] = CreateEndpoint("/Partitions/{partitionId}/$/GetBackups", "GET"); + Endpoints[842] = CreateEndpoint("/Partitions/{partitionId}/$/GetHealth", "POST"); + Endpoints[843] = CreateEndpoint("/Partitions/{partitionId}/$/GetHealth", "GET"); + Endpoints[844] = CreateEndpoint("/Partitions/{partitionId}/$/GetLoadInformation", "GET"); + Endpoints[845] = CreateEndpoint("/Partitions/{partitionId}/$/GetReplicas", "GET"); + Endpoints[846] = CreateEndpoint("/Partitions/{partitionId}/$/GetRestoreProgress", "GET"); + Endpoints[847] = CreateEndpoint("/Partitions/{partitionId}/$/GetServiceName", "GET"); + Endpoints[848] = CreateEndpoint("/Partitions/{partitionId}/$/Recover", "POST"); + Endpoints[849] = CreateEndpoint("/Partitions/{partitionId}/$/ReportHealth", "POST"); + Endpoints[850] = CreateEndpoint("/Partitions/{partitionId}/$/ResetLoad", "POST"); + Endpoints[851] = CreateEndpoint("/Partitions/{partitionId}/$/Restore", "POST"); + Endpoints[852] = CreateEndpoint("/Partitions/{partitionId}/$/ResumeBackup", "POST"); + Endpoints[853] = CreateEndpoint("/Partitions/{partitionId}/$/SuspendBackup", "POST"); + Endpoints[854] = CreateEndpoint("/projects/{projectId}/images/files", "POST"); + Endpoints[855] = CreateEndpoint("/projects/{projectId}/images/id", "GET"); + Endpoints[856] = CreateEndpoint("/projects/{projectId}/images/predictions", "POST"); + Endpoints[857] = CreateEndpoint("/projects/{projectId}/images/regions", "DELETE"); + Endpoints[858] = CreateEndpoint("/projects/{projectId}/images/regions", "POST"); + Endpoints[859] = CreateEndpoint("/projects/{projectId}/images/tagged", "GET"); + Endpoints[860] = CreateEndpoint("/projects/{projectId}/images/tags", "DELETE"); + Endpoints[861] = CreateEndpoint("/projects/{projectId}/images/tags", "POST"); + Endpoints[862] = CreateEndpoint("/projects/{projectId}/images/untagged", "GET"); + Endpoints[863] = CreateEndpoint("/projects/{projectId}/images/urls", "POST"); + Endpoints[864] = CreateEndpoint("/projects/{projectId}/predictions/query", "POST"); + Endpoints[865] = CreateEndpoint("/projects/{projectId}/quicktest/image", "POST"); + Endpoints[866] = CreateEndpoint("/projects/{projectId}/quicktest/url", "POST"); + Endpoints[867] = CreateEndpoint("/Services/{serviceId}/$/Delete", "POST"); + Endpoints[868] = CreateEndpoint("/Services/{serviceId}/$/DisableBackup", "POST"); + Endpoints[869] = CreateEndpoint("/Services/{serviceId}/$/EnableBackup", "POST"); + Endpoints[870] = CreateEndpoint("/Services/{serviceId}/$/GetApplicationName", "GET"); + Endpoints[871] = CreateEndpoint("/Services/{serviceId}/$/GetBackupConfigurationInfo", "GET"); + Endpoints[872] = CreateEndpoint("/Services/{serviceId}/$/GetBackups", "GET"); + Endpoints[873] = CreateEndpoint("/Services/{serviceId}/$/GetDescription", "GET"); + Endpoints[874] = CreateEndpoint("/Services/{serviceId}/$/GetHealth", "POST"); + Endpoints[875] = CreateEndpoint("/Services/{serviceId}/$/GetHealth", "GET"); + Endpoints[876] = CreateEndpoint("/Services/{serviceId}/$/GetPartitions", "GET"); + Endpoints[877] = CreateEndpoint("/Services/{serviceId}/$/ReportHealth", "POST"); + Endpoints[878] = CreateEndpoint("/Services/{serviceId}/$/ResolvePartition", "GET"); + Endpoints[879] = CreateEndpoint("/Services/{serviceId}/$/ResumeBackup", "POST"); + Endpoints[880] = CreateEndpoint("/Services/{serviceId}/$/SuspendBackup", "POST"); + Endpoints[881] = CreateEndpoint("/Services/{serviceId}/$/Update", "POST"); + Endpoints[882] = CreateEndpoint("/tenant/{accessName}/git/regeneratePrimaryKey", "POST"); + Endpoints[883] = CreateEndpoint("/tenant/{accessName}/git/regenerateSecondaryKey", "POST"); + Endpoints[884] = CreateEndpoint("/projects/{projectId}/images/tagged/count", "GET"); + Endpoints[885] = CreateEndpoint("/projects/{projectId}/images/untagged/count", "GET"); + Endpoints[886] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.AAD/domainServices", "GET"); + Endpoints[887] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/configurations", "GET"); + Endpoints[888] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/configurations", "PUT"); + Endpoints[889] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/generateRecommendations", "POST"); + Endpoints[890] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/recommendations", "GET"); + Endpoints[891] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/suppressions", "GET"); + Endpoints[892] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.AnalysisServices/servers", "GET"); + Endpoints[893] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.AnalysisServices/skus", "GET"); + Endpoints[894] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ApiManagement/checkNameAvailability", "POST"); + Endpoints[895] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ApiManagement/service", "GET"); + Endpoints[896] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/classicAdministrators", "GET"); + Endpoints[897] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/locks", "GET"); + Endpoints[898] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyAssignments", "GET"); + Endpoints[899] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyDefinitions", "GET"); + Endpoints[900] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policySetDefinitions", "GET"); + Endpoints[901] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleAssignments", "GET"); + Endpoints[902] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Automation/automationAccounts", "GET"); + Endpoints[903] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Batch/batchAccounts", "GET"); + Endpoints[904] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.BatchAI/clusters", "GET"); + Endpoints[905] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.BatchAI/fileServers", "GET"); + Endpoints[906] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.BatchAI/jobs", "GET"); + Endpoints[907] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.BatchAI/workspaces", "GET"); + Endpoints[908] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Billing/billingPeriods", "GET"); + Endpoints[909] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Billing/invoices", "GET"); + Endpoints[910] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.BotService/botServices", "GET"); + Endpoints[911] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Cache/CheckNameAvailability", "POST"); + Endpoints[912] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Cache/Redis", "GET"); + Endpoints[913] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Capacity/appliedReservations", "GET"); + Endpoints[914] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Capacity/catalogs", "GET"); + Endpoints[915] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Cdn/checkNameAvailability", "POST"); + Endpoints[916] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Cdn/checkResourceUsage", "POST"); + Endpoints[917] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Cdn/profiles", "GET"); + Endpoints[918] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Cdn/validateProbe", "POST"); + Endpoints[919] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.CertificateRegistration/certificateOrders", "GET"); + Endpoints[920] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.CertificateRegistration/validateCertificateRegistrationInformation", "POST"); + Endpoints[921] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.CognitiveServices/accounts", "GET"); + Endpoints[922] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.CognitiveServices/skus", "GET"); + Endpoints[923] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Commerce.Admin/subscriberUsageAggregates", "GET"); + Endpoints[924] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Commerce.Admin/updateEncryption", "POST"); + Endpoints[925] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Commerce/RateCard", "GET"); + Endpoints[926] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Commerce/UsageAggregates", "GET"); + Endpoints[927] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/disks", "GET"); + Endpoints[928] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/galleries", "GET"); + Endpoints[929] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/images", "GET"); + Endpoints[930] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/skus", "GET"); + Endpoints[931] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/snapshots", "GET"); + Endpoints[932] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/virtualMachines", "GET"); + Endpoints[933] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/virtualMachineScaleSets", "GET"); + Endpoints[934] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/budgets", "GET"); + Endpoints[935] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/forecasts", "GET"); + Endpoints[936] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/marketplaces", "GET"); + Endpoints[937] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/reservationRecommendations", "GET"); + Endpoints[938] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/usageDetails", "GET"); + Endpoints[939] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ContainerInstance/containerGroups", "GET"); + Endpoints[940] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ContainerRegistry/checkNameAvailability", "POST"); + Endpoints[941] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ContainerRegistry/registries", "GET"); + Endpoints[942] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ContainerService/containerServices", "GET"); + Endpoints[943] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ContainerService/managedClusters", "GET"); + Endpoints[944] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.CustomerInsights/hubs", "GET"); + Endpoints[945] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DataBox/jobs", "GET"); + Endpoints[946] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Databricks/workspaces", "GET"); + Endpoints[947] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DataFactory/factories", "GET"); + Endpoints[948] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DataLakeAnalytics/accounts", "GET"); + Endpoints[949] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DataLakeStore/accounts", "GET"); + Endpoints[950] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DataMigration/services", "GET"); + Endpoints[951] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DataMigration/skus", "GET"); + Endpoints[952] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DBforMySQL/checkNameAvailability", "POST"); + Endpoints[953] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DBforMySQL/performanceTiers", "GET"); + Endpoints[954] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DBforMySQL/servers", "GET"); + Endpoints[955] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DBforPostgreSQL/checkNameAvailability", "POST"); + Endpoints[956] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DBforPostgreSQL/performanceTiers", "GET"); + Endpoints[957] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DBforPostgreSQL/servers", "GET"); + Endpoints[958] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Devices/checkNameAvailability", "POST"); + Endpoints[959] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Devices/checkProvisioningServiceNameAvailability", "POST"); + Endpoints[960] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Devices/IotHubs", "GET"); + Endpoints[961] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Devices/provisioningServices", "GET"); + Endpoints[962] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Devices/usages", "GET"); + Endpoints[963] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DevTestLab/labs", "GET"); + Endpoints[964] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DevTestLab/schedules", "GET"); + Endpoints[965] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DocumentDB/databaseAccounts", "GET"); + Endpoints[966] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DomainRegistration/checkDomainAvailability", "POST"); + Endpoints[967] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DomainRegistration/domains", "GET"); + Endpoints[968] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DomainRegistration/generateSsoRequest", "POST"); + Endpoints[969] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DomainRegistration/listDomainRecommendations", "POST"); + Endpoints[970] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DomainRegistration/topLevelDomains", "GET"); + Endpoints[971] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DomainRegistration/validateDomainRegistrationInformation", "POST"); + Endpoints[972] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.EventGrid/eventSubscriptions", "GET"); + Endpoints[973] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.EventGrid/topics", "GET"); + Endpoints[974] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.EventHub/CheckNameAvailability", "POST"); + Endpoints[975] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.EventHub/CheckNamespaceAvailability", "POST"); + Endpoints[976] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.EventHub/namespaces", "GET"); + Endpoints[977] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Features/features", "GET"); + Endpoints[978] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/microsoft.gallery.admin/galleryItems", "POST"); + Endpoints[979] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/microsoft.gallery.admin/galleryItems", "GET"); + Endpoints[980] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.HanaOnAzure/hanaInstances", "GET"); + Endpoints[981] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.HDInsight/clusters", "GET"); + Endpoints[982] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ImportExport/jobs", "GET"); + Endpoints[983] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/microsoft.insights/actionGroups", "GET"); + Endpoints[984] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/microsoft.insights/activityLogAlerts", "GET"); + Endpoints[985] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Insights/components", "GET"); + Endpoints[986] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/microsoft.insights/listMigrationdate", "POST"); + Endpoints[987] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/microsoft.insights/logprofiles", "GET"); + Endpoints[988] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Insights/metricAlerts", "GET"); + Endpoints[989] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/microsoft.insights/migrateToNewPricingModel", "POST"); + Endpoints[990] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/microsoft.insights/rollbackToLegacyPricingModel", "POST"); + Endpoints[991] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/microsoft.insights/scheduledQueryRules", "GET"); + Endpoints[992] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Insights/webtests", "GET"); + Endpoints[993] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.IoTCentral/checkNameAvailability", "POST"); + Endpoints[994] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.IoTCentral/IoTApps", "GET"); + Endpoints[995] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.IoTSpaces/checkNameAvailability", "POST"); + Endpoints[996] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.IoTSpaces/Graph", "GET"); + Endpoints[997] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.KeyVault/checkNameAvailability", "POST"); + Endpoints[998] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.KeyVault/deletedVaults", "GET"); + Endpoints[999] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.KeyVault/vaults", "GET"); + Endpoints[1000] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Logic/integrationAccounts", "GET"); + Endpoints[1001] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Logic/workflows", "GET"); + Endpoints[1002] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.MachineLearning/commitmentPlans", "GET"); + Endpoints[1003] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.MachineLearning/skus", "GET"); + Endpoints[1004] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.MachineLearning/webServices", "GET"); + Endpoints[1005] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.MachineLearning/workspaces", "GET"); + Endpoints[1006] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.MachineLearningCompute/operationalizationClusters", "GET"); + Endpoints[1007] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.MachineLearningExperimentation/accounts", "GET"); + Endpoints[1008] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.MachineLearningServices/workspaces", "GET"); + Endpoints[1009] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ManagedIdentity/userAssignedIdentities", "GET"); + Endpoints[1010] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Maps/accounts", "GET"); + Endpoints[1011] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Media/CheckNameAvailability", "POST"); + Endpoints[1012] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Media/mediaservices", "GET"); + Endpoints[1013] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network.Admin/adminLoadBalancers", "GET"); + Endpoints[1014] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network.Admin/adminOverview", "GET"); + Endpoints[1015] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network.Admin/adminPublicIpAddresses", "GET"); + Endpoints[1016] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network.Admin/adminVirtualNetworks", "GET"); + Endpoints[1017] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableWafRuleSets", "GET"); + Endpoints[1018] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGateways", "GET"); + Endpoints[1019] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationSecurityGroups", "GET"); + Endpoints[1020] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/bgpServiceCommunities", "GET"); + Endpoints[1021] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/ddosProtectionPlans", "GET"); + Endpoints[1022] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/dnszones", "GET"); + Endpoints[1023] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteCircuits", "GET"); + Endpoints[1024] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteCrossConnections", "GET"); + Endpoints[1025] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteServiceProviders", "GET"); + Endpoints[1026] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/loadBalancers", "GET"); + Endpoints[1027] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkInterfaces", "GET"); + Endpoints[1028] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkSecurityGroups", "GET"); + Endpoints[1029] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkWatchers", "GET"); + Endpoints[1030] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/publicIPAddresses", "GET"); + Endpoints[1031] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/routeFilters", "GET"); + Endpoints[1032] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/routeTables", "GET"); + Endpoints[1033] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/trafficmanagerprofiles", "GET"); + Endpoints[1034] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/trafficManagerUserMetricsKeys", "DELETE"); + Endpoints[1035] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/trafficManagerUserMetricsKeys", "PUT"); + Endpoints[1036] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/trafficManagerUserMetricsKeys", "GET"); + Endpoints[1037] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualNetworks", "GET"); + Endpoints[1038] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.NotificationHubs/checkNamespaceAvailability", "POST"); + Endpoints[1039] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.NotificationHubs/namespaces", "GET"); + Endpoints[1040] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.OperationalInsights/linkTargets", "GET"); + Endpoints[1041] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.OperationalInsights/workspaces", "GET"); + Endpoints[1042] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.OperationsManagement/ManagementAssociations", "GET"); + Endpoints[1043] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.OperationsManagement/ManagementConfigurations", "GET"); + Endpoints[1044] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.OperationsManagement/solutions", "GET"); + Endpoints[1045] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.PowerBI/workspaceCollections", "GET"); + Endpoints[1046] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.PowerBIDedicated/capacities", "GET"); + Endpoints[1047] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.PowerBIDedicated/skus", "GET"); + Endpoints[1048] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/vaults", "GET"); + Endpoints[1049] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Relay/checkNameAvailability", "POST"); + Endpoints[1050] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Relay/namespaces", "GET"); + Endpoints[1051] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ResourceHealth/availabilityStatuses", "GET"); + Endpoints[1052] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Resources/links", "GET"); + Endpoints[1053] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Scheduler/jobCollections", "GET"); + Endpoints[1054] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Search/checkNameAvailability", "POST"); + Endpoints[1055] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/alerts", "GET"); + Endpoints[1056] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/autoProvisioningSettings", "GET"); + Endpoints[1057] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/discoveredSecuritySolutions", "GET"); + Endpoints[1058] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/externalSecuritySolutions", "GET"); + Endpoints[1059] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/jitNetworkAccessPolicies", "GET"); + Endpoints[1060] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations", "GET"); + Endpoints[1061] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/pricings", "GET"); + Endpoints[1062] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/securityContacts", "GET"); + Endpoints[1063] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/tasks", "GET"); + Endpoints[1064] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/workspaceSettings", "GET"); + Endpoints[1065] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ServerManagement/gateways", "GET"); + Endpoints[1066] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ServerManagement/nodes", "GET"); + Endpoints[1067] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ServiceBus/CheckNameAvailability", "POST"); + Endpoints[1068] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ServiceBus/CheckNameSpaceAvailability", "POST"); + Endpoints[1069] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ServiceBus/namespaces", "GET"); + Endpoints[1070] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ServiceBus/premiumMessagingRegions", "GET"); + Endpoints[1071] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/clusters", "GET"); + Endpoints[1072] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.SignalRService/SignalR", "GET"); + Endpoints[1073] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Solutions/appliances", "GET"); + Endpoints[1074] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Solutions/applications", "GET"); + Endpoints[1075] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Sql/checkNameAvailability", "POST"); + Endpoints[1076] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Sql/managedInstances", "GET"); + Endpoints[1077] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Sql/servers", "GET"); + Endpoints[1078] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Storage/checkNameAvailability", "POST"); + Endpoints[1079] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Storage/skus", "GET"); + Endpoints[1080] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Storage/storageAccounts", "GET"); + Endpoints[1081] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Storage/usages", "GET"); + Endpoints[1082] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.StorSimple/managers", "GET"); + Endpoints[1083] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.StreamAnalytics/streamingjobs", "GET"); + Endpoints[1084] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/checkNameAvailability", "POST"); + Endpoints[1085] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/delegatedProviders", "GET"); + Endpoints[1086] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/locations", "GET"); + Endpoints[1087] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/moveSubscriptions", "POST"); + Endpoints[1088] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/offers", "GET"); + Endpoints[1089] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/plans", "GET"); + Endpoints[1090] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/restoreData", "POST"); + Endpoints[1091] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/subscriptions", "GET"); + Endpoints[1092] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/updateEncryption", "POST"); + Endpoints[1093] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/validateMoveSubscriptions", "POST"); + Endpoints[1094] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.TimeSeriesInsights/environments", "GET"); + Endpoints[1095] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/microsoft.visualstudio/checkNameAvailability", "POST"); + Endpoints[1096] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/availableStacks", "GET"); + Endpoints[1097] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/billingMeters", "GET"); + Endpoints[1098] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/certificates", "GET"); + Endpoints[1099] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/checknameavailability", "POST"); + Endpoints[1100] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/classicMobileServices", "GET"); + Endpoints[1101] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/connectionGateways", "GET"); + Endpoints[1102] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/customApis", "GET"); + Endpoints[1103] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/deletedSites", "GET"); + Endpoints[1104] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/deploymentLocations", "GET"); + Endpoints[1105] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/geoRegions", "GET"); + Endpoints[1106] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/hostingEnvironments", "GET"); + Endpoints[1107] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/ishostingenvironmentnameavailable", "GET"); + Endpoints[1108] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/listSitesAssignedToHostName", "POST"); + Endpoints[1109] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/managedHostingEnvironments", "GET"); + Endpoints[1110] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/premieraddonoffers", "GET"); + Endpoints[1111] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/publishingCredentials", "GET"); + Endpoints[1112] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/publishingCredentials", "PUT"); + Endpoints[1113] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/recommendations", "GET"); + Endpoints[1114] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/resourceHealthMetadata", "GET"); + Endpoints[1115] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/serverfarms", "GET"); + Endpoints[1116] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/sites", "GET"); + Endpoints[1117] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/skus", "GET"); + Endpoints[1118] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/verifyHostingEnvironmentVnet", "POST"); + Endpoints[1119] = CreateEndpoint("/Applications/{applicationId}/$/GetServices/$/Create", "POST"); + Endpoints[1120] = CreateEndpoint("/Applications/{applicationId}/$/GetServices/$/CreateFromTemplate", "POST"); + Endpoints[1121] = CreateEndpoint("/Applications/{applicationName}/$/GetServiceGroups/$/CreateServiceGroupFromTemplate", "POST"); + Endpoints[1122] = CreateEndpoint("/Applications/{applicationName}/$/GetServices/$/CreateServiceGroup", "POST"); + Endpoints[1123] = CreateEndpoint("/Names/{nameId}/$/GetProperties/$/SubmitBatch", "POST"); + Endpoints[1124] = CreateEndpoint("/Services/{serviceName}/$/GetPartitions/$/Recover", "POST"); + Endpoints[1125] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Billing/invoices/latest", "GET"); + Endpoints[1126] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/pricesheets/default", "GET"); + Endpoints[1127] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default", "GET"); + Endpoints[1128] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/recommendations/reset", "POST"); + Endpoints[1129] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Addons/supportProviders/canonical/listSupportPlanInfo", "POST"); + Endpoints[1130] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/microsoft.insights/eventtypes/management/values", "GET"); + Endpoints[1131] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies", "GET"); + Endpoints[1132] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies/{predefinedPolicyName}", "GET"); + Endpoints[1133] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Advisor/generateRecommendations/{operationId}", "GET"); + Endpoints[1134] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/locks/{lockName}", "PUT"); + Endpoints[1135] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/locks/{lockName}", "GET"); + Endpoints[1136] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/locks/{lockName}", "DELETE"); + Endpoints[1137] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policydefinitions/{policyDefinitionName}", "DELETE"); + Endpoints[1138] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policydefinitions/{policyDefinitionName}", "GET"); + Endpoints[1139] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policydefinitions/{policyDefinitionName}", "PUT"); + Endpoints[1140] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policySetDefinitions/{policySetDefinitionName}", "GET"); + Endpoints[1141] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policySetDefinitions/{policySetDefinitionName}", "DELETE"); + Endpoints[1142] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policySetDefinitions/{policySetDefinitionName}", "PUT"); + Endpoints[1143] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}", "GET"); + Endpoints[1144] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Billing/invoices/{invoiceName}", "GET"); + Endpoints[1145] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/budgets/{budgetName}", "GET"); + Endpoints[1146] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/budgets/{budgetName}", "PUT"); + Endpoints[1147] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/budgets/{budgetName}", "DELETE"); + Endpoints[1148] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DomainRegistration/topLevelDomains/{name}", "GET"); + Endpoints[1149] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/microsoft.gallery.admin/galleryItems/{galleryItemName}", "DELETE"); + Endpoints[1150] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/microsoft.gallery.admin/galleryItems/{galleryItemName}", "GET"); + Endpoints[1151] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/microsoft.insights/logprofiles/{logProfileName}", "PUT"); + Endpoints[1152] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/microsoft.insights/logprofiles/{logProfileName}", "GET"); + Endpoints[1153] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/microsoft.insights/logprofiles/{logProfileName}", "DELETE"); + Endpoints[1154] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/microsoft.insights/logprofiles/{logProfileName}", "PATCH"); + Endpoints[1155] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Media/mediaservices/{accountName}", "GET"); + Endpoints[1156] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/autoProvisioningSettings/{settingName}", "PUT"); + Endpoints[1157] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/autoProvisioningSettings/{settingName}", "GET"); + Endpoints[1158] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations/{ascLocation}", "GET"); + Endpoints[1159] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/pricings/{pricingName}", "PUT"); + Endpoints[1160] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/pricings/{pricingName}", "GET"); + Endpoints[1161] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/workspaceSettings/{workspaceSettingName}", "PATCH"); + Endpoints[1162] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/workspaceSettings/{workspaceSettingName}", "PUT"); + Endpoints[1163] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/workspaceSettings/{workspaceSettingName}", "GET"); + Endpoints[1164] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/delegatedProviders/{delegatedProvider}", "GET"); + Endpoints[1165] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/locations/{location}", "DELETE"); + Endpoints[1166] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/locations/{location}", "PUT"); + Endpoints[1167] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/locations/{location}", "GET"); + Endpoints[1168] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/subscriptions/{subscription}", "GET"); + Endpoints[1169] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/subscriptions/{subscription}", "PUT"); + Endpoints[1170] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/subscriptions/{subscription}", "DELETE"); + Endpoints[1171] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/ishostingenvironmentnameavailable/{name}", "GET"); + Endpoints[1172] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Addons/supportProviders/{providerName}/supportPlanTypes", "GET"); + Endpoints[1173] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.AnalysisServices/locations/{location}/checkNameAvailability", "POST"); + Endpoints[1174] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Batch/locations/{locationName}/checkNameAvailability", "POST"); + Endpoints[1175] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Batch/locations/{locationName}/quotas", "GET"); + Endpoints[1176] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.BatchAI/locations/{location}/usages", "GET"); + Endpoints[1177] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.CognitiveServices/locations/{location}/checkSkuAvailability", "POST"); + Endpoints[1178] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute.Admin/locations/{location}/quotas", "GET"); + Endpoints[1179] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers", "GET"); + Endpoints[1180] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/runCommands", "GET"); + Endpoints[1181] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/usages", "GET"); + Endpoints[1182] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/vmSizes", "GET"); + Endpoints[1183] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ContainerInstance/locations/{location}/usages", "GET"); + Endpoints[1184] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ContainerService/locations/{location}/orchestrators", "GET"); + Endpoints[1185] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DataBox/locations/{location}/availableSkus", "POST"); + Endpoints[1186] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DataBox/locations/{location}/validateAddress", "POST"); + Endpoints[1187] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DataFactory/locations/{locationId}/configureFactoryRepo", "POST"); + Endpoints[1188] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DataLakeAnalytics/locations/{location}/capability", "GET"); + Endpoints[1189] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DataLakeAnalytics/locations/{location}/checkNameAvailability", "POST"); + Endpoints[1190] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DataLakeStore/locations/{location}/capability", "GET"); + Endpoints[1191] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DataLakeStore/locations/{location}/checkNameAvailability", "POST"); + Endpoints[1192] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DataMigration/locations/{location}/checkNameAvailability", "POST"); + Endpoints[1193] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DataMigration/locations/{location}/usages", "GET"); + Endpoints[1194] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DBforMySQL/locations/{locationName}/performanceTiers", "GET"); + Endpoints[1195] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DBforPostgreSQL/locations/{locationName}/performanceTiers", "GET"); + Endpoints[1196] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DomainRegistration/topLevelDomains/{name}/listAgreements", "POST"); + Endpoints[1197] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.EventGrid/locations/{location}/eventSubscriptions", "GET"); + Endpoints[1198] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.EventGrid/topicTypes/{topicTypeName}/eventSubscriptions", "GET"); + Endpoints[1199] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.EventHub/sku/{sku}/regions", "GET"); + Endpoints[1200] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Features/providers/{resourceProviderNamespace}/features", "GET"); + Endpoints[1201] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.HDInsight/locations/{location}/capabilities", "GET"); + Endpoints[1202] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.KeyVault.Admin/locations/{location}/quotas", "GET"); + Endpoints[1203] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Media/locations/{locationName}/checkNameAvailability", "POST"); + Endpoints[1204] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network.Admin/locations/{location}/quotas", "GET"); + Endpoints[1205] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/CheckDnsNameAvailability", "GET"); + Endpoints[1206] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/usages", "GET"); + Endpoints[1207] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/virtualNetworkAvailableEndpointServices", "GET"); + Endpoints[1208] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/{policyEventsResource}/queryResults", "POST"); + Endpoints[1209] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/{policyStatesResource}/queryResults", "POST"); + Endpoints[1210] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/{policyStatesSummaryResource}/summarize", "POST"); + Endpoints[1211] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.PowerBI/locations/{location}/checkNameAvailability", "POST"); + Endpoints[1212] = CreateEndpoint("/Subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/locations/{azureRegion}/backupPreValidateProtection", "POST"); + Endpoints[1213] = CreateEndpoint("/Subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/locations/{azureRegion}/backupStatus", "POST"); + Endpoints[1214] = CreateEndpoint("/Subscriptions/{subscriptionId}/providers/Microsoft.RecoveryServices/locations/{azureRegion}/backupValidateFeatures", "POST"); + Endpoints[1215] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations/{ascLocation}/alerts", "GET"); + Endpoints[1216] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations/{ascLocation}/discoveredSecuritySolutions", "GET"); + Endpoints[1217] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations/{ascLocation}/ExternalSecuritySolutions", "GET"); + Endpoints[1218] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations/{ascLocation}/jitNetworkAccessPolicies", "GET"); + Endpoints[1219] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations/{ascLocation}/tasks", "GET"); + Endpoints[1220] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ServiceBus/sku/{sku}/regions", "GET"); + Endpoints[1221] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/clusterVersions", "GET"); + Endpoints[1222] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.SignalRService/locations/{location}/checkNameAvailability", "POST"); + Endpoints[1223] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationName}/capabilities", "GET"); + Endpoints[1224] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationName}/longTermRetentionBackups", "GET"); + Endpoints[1225] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationName}/syncDatabaseIds", "GET"); + Endpoints[1226] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationName}/usages", "GET"); + Endpoints[1227] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Storage.Admin/locations/{location}/quotas", "GET"); + Endpoints[1228] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Storage/locations/{location}/usages", "GET"); + Endpoints[1229] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.StreamAnalytics/locations/{location}/quotas", "GET"); + Endpoints[1230] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/delegatedProviders/{delegatedProviderSubscriptionId}/offers", "GET"); + Endpoints[1231] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/locations/{location}/quotas", "GET"); + Endpoints[1232] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/subscriptions/{targetSubscriptionId}/acquiredPlans", "GET"); + Endpoints[1233] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/locations/{location}/connectionGatewayInstallations", "GET"); + Endpoints[1234] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/locations/{location}/extractApiDefinitionFromWsdl", "POST"); + Endpoints[1235] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/locations/{location}/listWsdlInterfaces", "POST"); + Endpoints[1236] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/locations/{location}/managedApis", "GET"); + Endpoints[1237] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/recommendations/{name}/disable", "POST"); + Endpoints[1238] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute.Admin/locations/{location}/artifactTypes/platformImage", "GET"); + Endpoints[1239] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute.Admin/locations/{location}/artifactTypes/VMExtension", "GET"); + Endpoints[1240] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}/providers/Microsoft.Consumption/marketplaces", "GET"); + Endpoints[1241] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}/providers/Microsoft.Consumption/usageDetails", "GET"); + Endpoints[1242] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/logAnalytics/apiAccess/getRequestRateByInterval", "POST"); + Endpoints[1243] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/logAnalytics/apiAccess/getThrottledRequests", "POST"); + Endpoints[1244] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}/providers/Microsoft.Consumption/pricesheets/default", "GET"); + Endpoints[1245] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute.Admin/locations/{location}/artifactTypes/VMExtension/publishers/{publisher}/types/{type}/versions/{version}", "PUT"); + Endpoints[1246] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute.Admin/locations/{location}/artifactTypes/VMExtension/publishers/{publisher}/types/{type}/versions/{version}", "DELETE"); + Endpoints[1247] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute.Admin/locations/{location}/artifactTypes/VMExtension/publishers/{publisher}/types/{type}/versions/{version}", "GET"); + Endpoints[1248] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute.Admin/locations/{location}/artifactTypes/platformImage/publishers/{publisher}/offers/{offer}/skus/{sku}/versions/{version}", "DELETE"); + Endpoints[1249] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute.Admin/locations/{location}/artifactTypes/platformImage/publishers/{publisher}/offers/{offer}/skus/{sku}/versions/{version}", "GET"); + Endpoints[1250] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute.Admin/locations/{location}/artifactTypes/platformImage/publishers/{publisher}/offers/{offer}/skus/{sku}/versions/{version}", "PUT"); + Endpoints[1251] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Addons/supportProviders/{providerName}/supportPlanTypes/{planTypeName}", "PUT"); + Endpoints[1252] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Addons/supportProviders/{providerName}/supportPlanTypes/{planTypeName}", "DELETE"); + Endpoints[1253] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Addons/supportProviders/{providerName}/supportPlanTypes/{planTypeName}", "GET"); + Endpoints[1254] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.AnalysisServices/locations/{location}/operationresults/{operationId}", "GET"); + Endpoints[1255] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.AnalysisServices/locations/{location}/operationstatuses/{operationId}", "GET"); + Endpoints[1256] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute.Admin/locations/{location}/quotas/{quotaName}", "PUT"); + Endpoints[1257] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute.Admin/locations/{location}/quotas/{quotaName}", "GET"); + Endpoints[1258] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute.Admin/locations/{location}/quotas/{quotaName}", "DELETE"); + Endpoints[1259] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/runCommands/{commandId}", "GET"); + Endpoints[1260] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.DevTestLab/locations/{locationName}/operations/{name}", "GET"); + Endpoints[1261] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Features/providers/{resourceProviderNamespace}/features/{featureName}", "GET"); + Endpoints[1262] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.KeyVault/locations/{location}/deletedVaults/{vaultName}", "GET"); + Endpoints[1263] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network.Admin/locations/{location}/quotas/{resourceName}", "GET"); + Endpoints[1264] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network.Admin/locations/{location}/quotas/{resourceName}", "DELETE"); + Endpoints[1265] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Network.Admin/locations/{location}/quotas/{resourceName}", "PUT"); + Endpoints[1266] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations/{ascLocation}/alerts/{alertName}", "GET"); + Endpoints[1267] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations/{ascLocation}/tasks/{taskName}", "GET"); + Endpoints[1268] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/clusterVersions/{clusterVersion}", "GET"); + Endpoints[1269] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationName}/usages/{usageName}", "GET"); + Endpoints[1270] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Storage.Admin/locations/{location}/quotas/{quotaName}", "DELETE"); + Endpoints[1271] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Storage.Admin/locations/{location}/quotas/{quotaName}", "GET"); + Endpoints[1272] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Storage.Admin/locations/{location}/quotas/{quotaName}", "PUT"); + Endpoints[1273] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/delegatedProviders/{delegatedProviderSubscriptionId}/offers/{offer}", "GET"); + Endpoints[1274] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/locations/{location}/quotas/{quota}", "GET"); + Endpoints[1275] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/subscriptions/{targetSubscriptionId}/acquiredPlans/{planAcquisitionId}", "DELETE"); + Endpoints[1276] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/subscriptions/{targetSubscriptionId}/acquiredPlans/{planAcquisitionId}", "PUT"); + Endpoints[1277] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Subscriptions.Admin/subscriptions/{targetSubscriptionId}/acquiredPlans/{planAcquisitionId}", "GET"); + Endpoints[1278] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/locations/{location}/connectionGatewayInstallations/{gatewayId}", "GET"); + Endpoints[1279] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Web/locations/{location}/managedApis/{apiName}", "GET"); + Endpoints[1280] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.EventGrid/locations/{location}/topicTypes/{topicTypeName}/eventSubscriptions", "GET"); + Endpoints[1281] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Features/providers/{resourceProviderNamespace}/features/{featureName}/register", "POST"); + Endpoints[1282] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.KeyVault/locations/{location}/deletedVaults/{vaultName}/purge", "POST"); + Endpoints[1283] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/environments/{environment}/clusterVersions", "GET"); + Endpoints[1284] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationName}/longTermRetentionServers/{longTermRetentionServerName}/longTermRetentionBackups", "GET"); + Endpoints[1285] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationName}/managedDatabaseRestoreAzureAsyncOperation/{operationId}/completeRestore", "POST"); + Endpoints[1286] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmextension/types", "GET"); + Endpoints[1287] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers", "GET"); + Endpoints[1288] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmextension/types/{type}/versions", "GET"); + Endpoints[1289] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers/{offer}/skus", "GET"); + Endpoints[1290] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmextension/types/{type}/versions/{version}", "GET"); + Endpoints[1291] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers/{offer}/skus/{skus}/versions", "GET"); + Endpoints[1292] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers/{offer}/skus/{skus}/versions/{version}", "GET"); + Endpoints[1293] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/environments/{environment}/clusterVersions/{clusterVersion}", "GET"); + Endpoints[1294] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationName}/longTermRetentionServers/{longTermRetentionServerName}/longTermRetentionDatabases/{longTermRetentionDatabaseName}/longTermRetentionBackups", "GET"); + Endpoints[1295] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationName}/longTermRetentionServers/{longTermRetentionServerName}/longTermRetentionDatabases/{longTermRetentionDatabaseName}/longTermRetentionBackups/{backupName}", "GET"); + Endpoints[1296] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Sql/locations/{locationName}/longTermRetentionServers/{longTermRetentionServerName}/longTermRetentionDatabases/{longTermRetentionDatabaseName}/longTermRetentionBackups/{backupName}", "DELETE"); + Endpoints[1297] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.MarketplaceOrdering/offerTypes/{offerType}/publishers/{publisherId}/offers/{offerId}/plans/{planId}/agreements/current", "GET"); + Endpoints[1298] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.MarketplaceOrdering/offerTypes/{offerType}/publishers/{publisherId}/offers/{offerId}/plans/{planId}/agreements/current", "PUT"); + Endpoints[1299] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations/{ascLocation}/alerts/{alertName}/{alertUpdateActionType}", "POST"); + Endpoints[1300] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations/{ascLocation}/tasks/{taskName}/{taskUpdateActionType}", "POST"); + Endpoints[1301] = CreateEndpoint("/Applications/{applicationId}/$/GetServices/{serviceId}", "GET"); + Endpoints[1302] = CreateEndpoint("/ApplicationTypes/{applicationTypeName}/$/GetServiceTypes/{serviceTypeName}", "GET"); + Endpoints[1303] = CreateEndpoint("/Nodes/{nodeName}/$/GetApplications/{applicationId}", "GET"); + Endpoints[1304] = CreateEndpoint("/Partitions/{partitionId}/$/GetReplicas/{replicaId}", "GET"); + Endpoints[1305] = CreateEndpoint("/Services/{serviceName}/$/GetPartitions/{partitionId}", "GET"); + Endpoints[1306] = CreateEndpoint("/Applications/{applicationName}/$/GetServiceGroups/{serviceName}/$/Delete", "POST"); + Endpoints[1307] = CreateEndpoint("/Applications/{applicationName}/$/GetServices/{serviceName}/$/GetServiceGroupDescription", "GET"); + Endpoints[1308] = CreateEndpoint("/Applications/{applicationName}/$/GetServices/{serviceName}/$/GetServiceGroupMembers", "GET"); + Endpoints[1309] = CreateEndpoint("/Applications/{applicationName}/$/GetServices/{serviceName}/$/UpdateServiceGroup", "POST"); + Endpoints[1310] = CreateEndpoint("/Nodes/{nodeName}/$/GetApplications/{applicationId}/$/GetCodePackages", "GET"); + Endpoints[1311] = CreateEndpoint("/Nodes/{nodeName}/$/GetApplications/{applicationId}/$/GetHealth", "GET"); + Endpoints[1312] = CreateEndpoint("/Nodes/{nodeName}/$/GetApplications/{applicationId}/$/GetHealth", "POST"); + Endpoints[1313] = CreateEndpoint("/Nodes/{nodeName}/$/GetApplications/{applicationId}/$/GetReplicas", "GET"); + Endpoints[1314] = CreateEndpoint("/Nodes/{nodeName}/$/GetApplications/{applicationId}/$/GetServicePackages", "GET"); + Endpoints[1315] = CreateEndpoint("/Nodes/{nodeName}/$/GetApplications/{applicationId}/$/GetServiceTypes", "GET"); + Endpoints[1316] = CreateEndpoint("/Nodes/{nodeName}/$/GetApplications/{applicationId}/$/ReportHealth", "POST"); + Endpoints[1317] = CreateEndpoint("/Nodes/{nodeName}/$/GetPartitions/{partitionId}/$/GetReplicas", "GET"); + Endpoints[1318] = CreateEndpoint("/Partitions/{partitionId}/$/GetReplicas/{replicaId}/$/GetHealth", "POST"); + Endpoints[1319] = CreateEndpoint("/Partitions/{partitionId}/$/GetReplicas/{replicaId}/$/GetHealth", "GET"); + Endpoints[1320] = CreateEndpoint("/Partitions/{partitionId}/$/GetReplicas/{replicaId}/$/GetLoadInformation", "GET"); + Endpoints[1321] = CreateEndpoint("/Partitions/{partitionId}/$/GetReplicas/{replicaId}/$/ReportHealth", "POST"); + Endpoints[1322] = CreateEndpoint("/Nodes/{nodeName}/$/GetApplications/{applicationId}/$/GetCodePackages/$/ContainerApi", "POST"); + Endpoints[1323] = CreateEndpoint("/Nodes/{nodeName}/$/GetApplications/{applicationId}/$/GetCodePackages/$/ContainerLogs", "GET"); + Endpoints[1324] = CreateEndpoint("/Nodes/{nodeName}/$/GetApplications/{applicationId}/$/GetCodePackages/$/Restart", "POST"); + Endpoints[1325] = CreateEndpoint("/Nodes/{nodeName}/$/GetApplications/{applicationId}/$/GetServicePackages/{servicePackageName}", "GET"); + Endpoints[1326] = CreateEndpoint("/Nodes/{nodeName}/$/GetApplications/{applicationId}/$/GetServiceTypes/{serviceTypeName}", "GET"); + Endpoints[1327] = CreateEndpoint("/Nodes/{nodeName}/$/GetApplications/{applicationId}/$/GetServicePackages/{servicePackageName}/$/GetHealth", "GET"); + Endpoints[1328] = CreateEndpoint("/Nodes/{nodeName}/$/GetApplications/{applicationId}/$/GetServicePackages/{servicePackageName}/$/GetHealth", "POST"); + Endpoints[1329] = CreateEndpoint("/Nodes/{nodeName}/$/GetApplications/{applicationId}/$/GetServicePackages/{servicePackageName}/$/ReportHealth", "POST"); + Endpoints[1330] = CreateEndpoint("/Nodes/{nodeName}/$/GetPartitions/{partitionId}/$/GetReplicas/{replicaId}/$/Delete", "POST"); + Endpoints[1331] = CreateEndpoint("/Nodes/{nodeName}/$/GetPartitions/{partitionId}/$/GetReplicas/{replicaId}/$/GetDetail", "GET"); + Endpoints[1332] = CreateEndpoint("/Nodes/{nodeName}/$/GetPartitions/{partitionId}/$/GetReplicas/{replicaId}/$/Restart", "POST"); + Endpoints[1333] = CreateEndpoint("/apis/{apiId}/operations/{operationId}", "DELETE"); + Endpoints[1334] = CreateEndpoint("/apis/{apiId}/operations/{operationId}", "GET"); + Endpoints[1335] = CreateEndpoint("/apis/{apiId}/operations/{operationId}", "PATCH"); + Endpoints[1336] = CreateEndpoint("/apis/{apiId}/operations/{operationId}", "PUT"); + Endpoints[1337] = CreateEndpoint("/apis/{apiId}/policies/{policyId}", "GET"); + Endpoints[1338] = CreateEndpoint("/apis/{apiId}/policies/{policyId}", "PUT"); + Endpoints[1339] = CreateEndpoint("/apis/{apiId}/policies/{policyId}", "DELETE"); + Endpoints[1340] = CreateEndpoint("/apis/{apiId}/schemas/{schemaId}", "DELETE"); + Endpoints[1341] = CreateEndpoint("/apis/{apiId}/schemas/{schemaId}", "PUT"); + Endpoints[1342] = CreateEndpoint("/apis/{apiId}/schemas/{schemaId}", "GET"); + Endpoints[1343] = CreateEndpoint("/apps/{appId}/events/{eventType}", "GET"); + Endpoints[1344] = CreateEndpoint("/apps/{appId}/metrics/{metricId}", "GET"); + Endpoints[1345] = CreateEndpoint("/apps/{appId}/versions/{versionId}/", "DELETE"); + Endpoints[1346] = CreateEndpoint("/apps/{appId}/versions/{versionId}/", "PUT"); + Endpoints[1347] = CreateEndpoint("/apps/{appId}/versions/{versionId}/", "GET"); + Endpoints[1348] = CreateEndpoint("/delegatedProviders/{delegatedProviderId}/offers/{offerName}", "GET"); + Endpoints[1349] = CreateEndpoint("/deletedstorage/{storage-account-name}/sas/{sas-definition-name}", "GET"); + Endpoints[1350] = CreateEndpoint("/facelists/{faceListId}/persistedFaces/{persistedFaceId}", "DELETE"); + Endpoints[1351] = CreateEndpoint("/groups/{groupId}/users/{uid}", "PUT"); + Endpoints[1352] = CreateEndpoint("/groups/{groupId}/users/{uid}", "DELETE"); + Endpoints[1353] = CreateEndpoint("/jobs/{jobId}/tasks/{taskId}", "GET"); + Endpoints[1354] = CreateEndpoint("/jobs/{jobId}/tasks/{taskId}", "DELETE"); + Endpoints[1355] = CreateEndpoint("/jobs/{jobId}/tasks/{taskId}", "PUT"); + Endpoints[1356] = CreateEndpoint("/persongroups/{personGroupId}/persons/{personId}", "GET"); + Endpoints[1357] = CreateEndpoint("/persongroups/{personGroupId}/persons/{personId}", "PATCH"); + Endpoints[1358] = CreateEndpoint("/persongroups/{personGroupId}/persons/{personId}", "DELETE"); + Endpoints[1359] = CreateEndpoint("/pools/{poolId}/nodes/{nodeId}", "GET"); + Endpoints[1360] = CreateEndpoint("/products/{productId}/apis/{apiId}", "DELETE"); + Endpoints[1361] = CreateEndpoint("/products/{productId}/apis/{apiId}", "PUT"); + Endpoints[1362] = CreateEndpoint("/products/{productId}/groups/{groupId}", "PUT"); + Endpoints[1363] = CreateEndpoint("/products/{productId}/groups/{groupId}", "DELETE"); + Endpoints[1364] = CreateEndpoint("/products/{productId}/policies/{policyId}", "PUT"); + Endpoints[1365] = CreateEndpoint("/products/{productId}/policies/{policyId}", "GET"); + Endpoints[1366] = CreateEndpoint("/products/{productId}/policies/{policyId}", "DELETE"); + Endpoints[1367] = CreateEndpoint("/projects/{projectId}/iterations/{iterationId}", "DELETE"); + Endpoints[1368] = CreateEndpoint("/projects/{projectId}/iterations/{iterationId}", "PATCH"); + Endpoints[1369] = CreateEndpoint("/projects/{projectId}/iterations/{iterationId}", "GET"); + Endpoints[1370] = CreateEndpoint("/projects/{projectId}/tags/{tagId}", "DELETE"); + Endpoints[1371] = CreateEndpoint("/projects/{projectId}/tags/{tagId}", "PATCH"); + Endpoints[1372] = CreateEndpoint("/projects/{projectId}/tags/{tagId}", "GET"); + Endpoints[1373] = CreateEndpoint("/storage/{storage-account-name}/sas/{sas-definition-name}", "PATCH"); + Endpoints[1374] = CreateEndpoint("/storage/{storage-account-name}/sas/{sas-definition-name}", "PUT"); + Endpoints[1375] = CreateEndpoint("/storage/{storage-account-name}/sas/{sas-definition-name}", "DELETE"); + Endpoints[1376] = CreateEndpoint("/storage/{storage-account-name}/sas/{sas-definition-name}", "GET"); + Endpoints[1377] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}", "GET"); + Endpoints[1378] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}", "HEAD"); + Endpoints[1379] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}", "PATCH"); + Endpoints[1380] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}", "GET"); + Endpoints[1381] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}", "PUT"); + Endpoints[1382] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}", "DELETE"); + Endpoints[1383] = CreateEndpoint("/subscriptions/{subscriptionId}/tagNames/{tagName}", "DELETE"); + Endpoints[1384] = CreateEndpoint("/subscriptions/{subscriptionId}/tagNames/{tagName}", "PUT"); + Endpoints[1385] = CreateEndpoint("/apis/{apiId}/operations/{operationId}/policies", "GET"); + Endpoints[1386] = CreateEndpoint("/apps/{appId}/versions/{versionId}/clone", "POST"); + Endpoints[1387] = CreateEndpoint("/apps/{appId}/versions/{versionId}/closedlists", "GET"); + Endpoints[1388] = CreateEndpoint("/apps/{appId}/versions/{versionId}/closedlists", "POST"); + Endpoints[1389] = CreateEndpoint("/apps/{appId}/versions/{versionId}/compositeentities", "POST"); + Endpoints[1390] = CreateEndpoint("/apps/{appId}/versions/{versionId}/compositeentities", "GET"); + Endpoints[1391] = CreateEndpoint("/apps/{appId}/versions/{versionId}/customprebuiltdomains", "POST"); + Endpoints[1392] = CreateEndpoint("/apps/{appId}/versions/{versionId}/customprebuiltentities", "POST"); + Endpoints[1393] = CreateEndpoint("/apps/{appId}/versions/{versionId}/customprebuiltentities", "GET"); + Endpoints[1394] = CreateEndpoint("/apps/{appId}/versions/{versionId}/customprebuiltintents", "POST"); + Endpoints[1395] = CreateEndpoint("/apps/{appId}/versions/{versionId}/customprebuiltintents", "GET"); + Endpoints[1396] = CreateEndpoint("/apps/{appId}/versions/{versionId}/customprebuiltmodels", "GET"); + Endpoints[1397] = CreateEndpoint("/apps/{appId}/versions/{versionId}/entities", "GET"); + Endpoints[1398] = CreateEndpoint("/apps/{appId}/versions/{versionId}/entities", "POST"); + Endpoints[1399] = CreateEndpoint("/apps/{appId}/versions/{versionId}/example", "POST"); + Endpoints[1400] = CreateEndpoint("/apps/{appId}/versions/{versionId}/examples", "POST"); + Endpoints[1401] = CreateEndpoint("/apps/{appId}/versions/{versionId}/examples", "GET"); + Endpoints[1402] = CreateEndpoint("/apps/{appId}/versions/{versionId}/export", "GET"); + Endpoints[1403] = CreateEndpoint("/apps/{appId}/versions/{versionId}/features", "GET"); + Endpoints[1404] = CreateEndpoint("/apps/{appId}/versions/{versionId}/hierarchicalentities", "GET"); + Endpoints[1405] = CreateEndpoint("/apps/{appId}/versions/{versionId}/hierarchicalentities", "POST"); + Endpoints[1406] = CreateEndpoint("/apps/{appId}/versions/{versionId}/intents", "POST"); + Endpoints[1407] = CreateEndpoint("/apps/{appId}/versions/{versionId}/intents", "GET"); + Endpoints[1408] = CreateEndpoint("/apps/{appId}/versions/{versionId}/listprebuilts", "GET"); + Endpoints[1409] = CreateEndpoint("/apps/{appId}/versions/{versionId}/models", "GET"); + Endpoints[1410] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternanyentities", "POST"); + Endpoints[1411] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternanyentities", "GET"); + Endpoints[1412] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternrule", "POST"); + Endpoints[1413] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternrules", "GET"); + Endpoints[1414] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternrules", "DELETE"); + Endpoints[1415] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternrules", "PUT"); + Endpoints[1416] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternrules", "POST"); + Endpoints[1417] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patterns", "GET"); + Endpoints[1418] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patterns", "POST"); + Endpoints[1419] = CreateEndpoint("/apps/{appId}/versions/{versionId}/phraselists", "POST"); + Endpoints[1420] = CreateEndpoint("/apps/{appId}/versions/{versionId}/phraselists", "GET"); + Endpoints[1421] = CreateEndpoint("/apps/{appId}/versions/{versionId}/prebuilts", "POST"); + Endpoints[1422] = CreateEndpoint("/apps/{appId}/versions/{versionId}/prebuilts", "GET"); + Endpoints[1423] = CreateEndpoint("/apps/{appId}/versions/{versionId}/regexentities", "GET"); + Endpoints[1424] = CreateEndpoint("/apps/{appId}/versions/{versionId}/regexentities", "POST"); + Endpoints[1425] = CreateEndpoint("/apps/{appId}/versions/{versionId}/suggest", "DELETE"); + Endpoints[1426] = CreateEndpoint("/apps/{appId}/versions/{versionId}/train", "POST"); + Endpoints[1427] = CreateEndpoint("/apps/{appId}/versions/{versionId}/train", "GET"); + Endpoints[1428] = CreateEndpoint("/deletedstorage/{storage-account-name}/sas/{sas-definition-name}/recover", "POST"); + Endpoints[1429] = CreateEndpoint("/jobs/{jobId}/tasks/{taskId}/files", "GET"); + Endpoints[1430] = CreateEndpoint("/jobs/{jobId}/tasks/{taskId}/reactivate", "POST"); + Endpoints[1431] = CreateEndpoint("/jobs/{jobId}/tasks/{taskId}/subtasksinfo", "GET"); + Endpoints[1432] = CreateEndpoint("/jobs/{jobId}/tasks/{taskId}/terminate", "POST"); + Endpoints[1433] = CreateEndpoint("/persongroups/{personGroupId}/persons/{personId}/persistedFaces", "POST"); + Endpoints[1434] = CreateEndpoint("/pools/{poolId}/nodes/{nodeId}/disablescheduling", "POST"); + Endpoints[1435] = CreateEndpoint("/pools/{poolId}/nodes/{nodeId}/enablescheduling", "POST"); + Endpoints[1436] = CreateEndpoint("/pools/{poolId}/nodes/{nodeId}/files", "GET"); + Endpoints[1437] = CreateEndpoint("/pools/{poolId}/nodes/{nodeId}/rdp", "GET"); + Endpoints[1438] = CreateEndpoint("/pools/{poolId}/nodes/{nodeId}/reboot", "POST"); + Endpoints[1439] = CreateEndpoint("/pools/{poolId}/nodes/{nodeId}/reimage", "POST"); + Endpoints[1440] = CreateEndpoint("/pools/{poolId}/nodes/{nodeId}/remoteloginsettings", "GET"); + Endpoints[1441] = CreateEndpoint("/pools/{poolId}/nodes/{nodeId}/uploadbatchservicelogs", "POST"); + Endpoints[1442] = CreateEndpoint("/pools/{poolId}/nodes/{nodeId}/users", "POST"); + Endpoints[1443] = CreateEndpoint("/projects/{projectId}/iterations/{iterationId}/export", "POST"); + Endpoints[1444] = CreateEndpoint("/projects/{projectId}/iterations/{iterationId}/export", "GET"); + Endpoints[1445] = CreateEndpoint("/projects/{projectId}/iterations/{iterationId}/performance", "GET"); + Endpoints[1446] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/register", "POST"); + Endpoints[1447] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/unregister", "POST"); + Endpoints[1448] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/exportTemplate", "POST"); + Endpoints[1449] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/moveResources", "POST"); + Endpoints[1450] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/resources", "GET"); + Endpoints[1451] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/validateMoveResources", "POST"); + Endpoints[1452] = CreateEndpoint("/projects/{projectId}/iterations/{iterationId}/performance/images", "GET"); + Endpoints[1453] = CreateEndpoint("/projects/{projectId}/iterations/{iterationId}/performance/images/count", "GET"); + Endpoints[1454] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroup/{resourceGroupName}/providers/microsoft.insights/workbooks", "GET"); + Endpoints[1455] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services", "GET"); + Endpoints[1456] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Advisor/configurations", "GET"); + Endpoints[1457] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Advisor/configurations", "PUT"); + Endpoints[1458] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroup}/providers/Microsoft.AzureBridge.Admin/activations", "GET"); + Endpoints[1459] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.AzureStack/registrations", "GET"); + Endpoints[1460] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AAD/domainServices", "GET"); + Endpoints[1461] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AnalysisServices/servers", "GET"); + Endpoints[1462] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service", "GET"); + Endpoints[1463] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/locks", "GET"); + Endpoints[1464] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Authorization/permissions", "GET"); + Endpoints[1465] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments", "GET"); + Endpoints[1466] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments", "GET"); + Endpoints[1467] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts", "GET"); + Endpoints[1468] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Backup.Admin/backupLocations", "GET"); + Endpoints[1469] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts", "GET"); + Endpoints[1470] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/clusters", "GET"); + Endpoints[1471] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/fileServers", "GET"); + Endpoints[1472] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/jobs", "GET"); + Endpoints[1473] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces", "GET"); + Endpoints[1474] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices", "GET"); + Endpoints[1475] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis", "GET"); + Endpoints[1476] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles", "GET"); + Endpoints[1477] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CertificateRegistration/certificateOrders", "GET"); + Endpoints[1478] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts", "GET"); + Endpoints[1479] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets", "GET"); + Endpoints[1480] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disks", "GET"); + Endpoints[1481] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries", "GET"); + Endpoints[1482] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/images", "GET"); + Endpoints[1483] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/snapshots", "GET"); + Endpoints[1484] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines", "GET"); + Endpoints[1485] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets", "GET"); + Endpoints[1486] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Consumption/budgets", "GET"); + Endpoints[1487] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerInstance/containerGroups", "GET"); + Endpoints[1488] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries", "GET"); + Endpoints[1489] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/containerServices", "GET"); + Endpoints[1490] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters", "GET"); + Endpoints[1491] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs", "GET"); + Endpoints[1492] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataBox/jobs", "GET"); + Endpoints[1493] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Databricks/workspaces", "GET"); + Endpoints[1494] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataCatalog/catalogs", "GET"); + Endpoints[1495] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories", "GET"); + Endpoints[1496] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts", "GET"); + Endpoints[1497] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts", "GET"); + Endpoints[1498] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers", "GET"); + Endpoints[1499] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers", "GET"); + Endpoints[1500] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs", "GET"); + Endpoints[1501] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/provisioningServices", "GET"); + Endpoints[1502] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs", "GET"); + Endpoints[1503] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/schedules", "GET"); + Endpoints[1504] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts", "GET"); + Endpoints[1505] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DomainRegistration/domains", "GET"); + Endpoints[1506] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventGrid/eventSubscriptions", "GET"); + Endpoints[1507] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventGrid/topics", "GET"); + Endpoints[1508] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/clusters", "GET"); + Endpoints[1509] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces", "GET"); + Endpoints[1510] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations", "PUT"); + Endpoints[1511] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations", "GET"); + Endpoints[1512] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HanaOnAzure/hanaInstances", "GET"); + Endpoints[1513] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters", "GET"); + Endpoints[1514] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ImportExport/jobs", "GET"); + Endpoints[1515] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.InfrastructureInsights.Admin/regionHealths", "GET"); + Endpoints[1516] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/actionGroups", "GET"); + Endpoints[1517] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/activityLogAlerts", "GET"); + Endpoints[1518] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.insights/alertrules", "GET"); + Endpoints[1519] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.insights/autoscalesettings", "GET"); + Endpoints[1520] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components", "GET"); + Endpoints[1521] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/metricAlerts", "GET"); + Endpoints[1522] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.insights/scheduledQueryRules", "GET"); + Endpoints[1523] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/webtests", "GET"); + Endpoints[1524] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.IoTCentral/IoTApps", "GET"); + Endpoints[1525] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.IoTSpaces/Graph", "GET"); + Endpoints[1526] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults", "GET"); + Endpoints[1527] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts", "GET"); + Endpoints[1528] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows", "GET"); + Endpoints[1529] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/commitmentPlans", "GET"); + Endpoints[1530] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/webServices", "GET"); + Endpoints[1531] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/workspaces", "GET"); + Endpoints[1532] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningCompute/operationalizationClusters", "GET"); + Endpoints[1533] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningExperimentation/accounts", "GET"); + Endpoints[1534] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningServices/workspaces", "GET"); + Endpoints[1535] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities", "GET"); + Endpoints[1536] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Maps/accounts", "GET"); + Endpoints[1537] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices", "GET"); + Endpoints[1538] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Migrate/projects", "GET"); + Endpoints[1539] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways", "GET"); + Endpoints[1540] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups", "GET"); + Endpoints[1541] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections", "GET"); + Endpoints[1542] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans", "GET"); + Endpoints[1543] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones", "GET"); + Endpoints[1544] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits", "GET"); + Endpoints[1545] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections", "GET"); + Endpoints[1546] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers", "GET"); + Endpoints[1547] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways", "GET"); + Endpoints[1548] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces", "GET"); + Endpoints[1549] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups", "GET"); + Endpoints[1550] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers", "GET"); + Endpoints[1551] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses", "GET"); + Endpoints[1552] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters", "GET"); + Endpoints[1553] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables", "GET"); + Endpoints[1554] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficmanagerprofiles", "GET"); + Endpoints[1555] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways", "GET"); + Endpoints[1556] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks", "GET"); + Endpoints[1557] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces", "GET"); + Endpoints[1558] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces", "GET"); + Endpoints[1559] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationsManagement/solutions", "GET"); + Endpoints[1560] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBI/workspaceCollections", "GET"); + Endpoints[1561] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBIDedicated/capacities", "GET"); + Endpoints[1562] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/operations", "GET"); + Endpoints[1563] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults", "GET"); + Endpoints[1564] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces", "GET"); + Endpoints[1565] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ResourceHealth/availabilityStatuses", "GET"); + Endpoints[1566] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/", "GET"); + Endpoints[1567] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Scheduler/jobCollections", "GET"); + Endpoints[1568] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Search/searchServices", "GET"); + Endpoints[1569] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/alerts", "GET"); + Endpoints[1570] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/jitNetworkAccessPolicies", "GET"); + Endpoints[1571] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/pricings", "GET"); + Endpoints[1572] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/securityContacts", "GET"); + Endpoints[1573] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/workspaceSettings", "GET"); + Endpoints[1574] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/gateways", "GET"); + Endpoints[1575] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/nodes", "GET"); + Endpoints[1576] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces", "GET"); + Endpoints[1577] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters", "GET"); + Endpoints[1578] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/SignalR", "GET"); + Endpoints[1579] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Solutions/applianceDefinitions", "GET"); + Endpoints[1580] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Solutions/appliances", "GET"); + Endpoints[1581] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Solutions/applicationDefinitions", "GET"); + Endpoints[1582] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Solutions/applications", "GET"); + Endpoints[1583] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances", "GET"); + Endpoints[1584] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers", "GET"); + Endpoints[1585] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms", "GET"); + Endpoints[1586] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts", "GET"); + Endpoints[1587] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers", "GET"); + Endpoints[1588] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs", "GET"); + Endpoints[1589] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/directoryTenants", "GET"); + Endpoints[1590] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/offers", "GET"); + Endpoints[1591] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/plans", "GET"); + Endpoints[1592] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments", "GET"); + Endpoints[1593] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Update.Admin/updateLocations/", "GET"); + Endpoints[1594] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.visualstudio/account", "GET"); + Endpoints[1595] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/certificates", "GET"); + Endpoints[1596] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/classicMobileServices", "GET"); + Endpoints[1597] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/connectionGateways", "GET"); + Endpoints[1598] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/connections", "GET"); + Endpoints[1599] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/csrs", "GET"); + Endpoints[1600] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/customApis", "GET"); + Endpoints[1601] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/deletedSites", "GET"); + Endpoints[1602] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments", "GET"); + Endpoints[1603] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/managedHostingEnvironments", "GET"); + Endpoints[1604] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/resourceHealthMetadata", "GET"); + Endpoints[1605] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms", "GET"); + Endpoints[1606] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites", "GET"); + Endpoints[1607] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/validate", "POST"); + Endpoints[1608] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/BotServices/listServiceProviders", "POST"); + Endpoints[1609] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroup/{resourceGroupName}/providers/microsoft.insights/workbooks/{resourceName}", "DELETE"); + Endpoints[1610] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroup/{resourceGroupName}/providers/microsoft.insights/workbooks/{resourceName}", "PATCH"); + Endpoints[1611] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroup/{resourceGroupName}/providers/microsoft.insights/workbooks/{resourceName}", "PUT"); + Endpoints[1612] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroup/{resourceGroupName}/providers/microsoft.insights/workbooks/{resourceName}", "GET"); + Endpoints[1613] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}", "GET"); + Endpoints[1614] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}", "PATCH"); + Endpoints[1615] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}", "PARAMETERS"); + Endpoints[1616] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}", "PUT"); + Endpoints[1617] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}", "DELETE"); + Endpoints[1618] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroup}/providers/Microsoft.AzureBridge.Admin/activations/{activationName}", "DELETE"); + Endpoints[1619] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroup}/providers/Microsoft.AzureBridge.Admin/activations/{activationName}", "PUT"); + Endpoints[1620] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroup}/providers/Microsoft.AzureBridge.Admin/activations/{activationName}", "GET"); + Endpoints[1621] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.AzureStack/registrations/{registrationName}", "DELETE"); + Endpoints[1622] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.AzureStack/registrations/{registrationName}", "PUT"); + Endpoints[1623] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.AzureStack/registrations/{registrationName}", "GET"); + Endpoints[1624] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AAD/domainServices/{domainServiceName}", "GET"); + Endpoints[1625] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AAD/domainServices/{domainServiceName}", "DELETE"); + Endpoints[1626] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AAD/domainServices/{domainServiceName}", "PUT"); + Endpoints[1627] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AAD/domainServices/{domainServiceName}", "PATCH"); + Endpoints[1628] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AnalysisServices/servers/{serverName}", "PATCH"); + Endpoints[1629] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AnalysisServices/servers/{serverName}", "GET"); + Endpoints[1630] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AnalysisServices/servers/{serverName}", "PUT"); + Endpoints[1631] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AnalysisServices/servers/{serverName}", "DELETE"); + Endpoints[1632] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}", "DELETE"); + Endpoints[1633] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}", "PUT"); + Endpoints[1634] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}", "GET"); + Endpoints[1635] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}", "PATCH"); + Endpoints[1636] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/locks/{lockName}", "DELETE"); + Endpoints[1637] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/locks/{lockName}", "PUT"); + Endpoints[1638] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/locks/{lockName}", "GET"); + Endpoints[1639] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}", "PATCH"); + Endpoints[1640] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}", "DELETE"); + Endpoints[1641] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}", "PUT"); + Endpoints[1642] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}", "GET"); + Endpoints[1643] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Backup.Admin/backupLocations/{location}", "GET"); + Endpoints[1644] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Backup.Admin/backupLocations/{location}", "PUT"); + Endpoints[1645] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}", "GET"); + Endpoints[1646] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}", "DELETE"); + Endpoints[1647] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}", "PATCH"); + Endpoints[1648] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}", "PUT"); + Endpoints[1649] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/clusters/{clusterName}", "GET"); + Endpoints[1650] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/clusters/{clusterName}", "DELETE"); + Endpoints[1651] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/clusters/{clusterName}", "PATCH"); + Endpoints[1652] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/clusters/{clusterName}", "PUT"); + Endpoints[1653] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/fileServers/{fileServerName}", "DELETE"); + Endpoints[1654] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/fileServers/{fileServerName}", "PUT"); + Endpoints[1655] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/fileServers/{fileServerName}", "GET"); + Endpoints[1656] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/jobs/{jobName}", "GET"); + Endpoints[1657] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/jobs/{jobName}", "PUT"); + Endpoints[1658] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/jobs/{jobName}", "DELETE"); + Endpoints[1659] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}", "PUT"); + Endpoints[1660] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}", "DELETE"); + Endpoints[1661] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}", "GET"); + Endpoints[1662] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}", "GET"); + Endpoints[1663] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}", "PATCH"); + Endpoints[1664] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}", "PUT"); + Endpoints[1665] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}", "DELETE"); + Endpoints[1666] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}", "DELETE"); + Endpoints[1667] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}", "PUT"); + Endpoints[1668] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}", "GET"); + Endpoints[1669] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}", "PATCH"); + Endpoints[1670] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}", "DELETE"); + Endpoints[1671] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}", "GET"); + Endpoints[1672] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}", "PUT"); + Endpoints[1673] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}", "PATCH"); + Endpoints[1674] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CertificateRegistration/certificateOrders/{name}", "PATCH"); + Endpoints[1675] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CertificateRegistration/certificateOrders/{name}", "DELETE"); + Endpoints[1676] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CertificateRegistration/certificateOrders/{name}", "PUT"); + Endpoints[1677] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CertificateRegistration/certificateOrders/{name}", "GET"); + Endpoints[1678] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}", "PATCH"); + Endpoints[1679] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}", "GET"); + Endpoints[1680] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}", "DELETE"); + Endpoints[1681] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}", "PUT"); + Endpoints[1682] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}", "GET"); + Endpoints[1683] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}", "DELETE"); + Endpoints[1684] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}", "PATCH"); + Endpoints[1685] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}", "PUT"); + Endpoints[1686] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disks/{diskName}", "PATCH"); + Endpoints[1687] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disks/{diskName}", "PUT"); + Endpoints[1688] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disks/{diskName}", "GET"); + Endpoints[1689] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disks/{diskName}", "DELETE"); + Endpoints[1690] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}", "PUT"); + Endpoints[1691] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}", "GET"); + Endpoints[1692] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}", "DELETE"); + Endpoints[1693] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/images/{imageName}", "GET"); + Endpoints[1694] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/images/{imageName}", "DELETE"); + Endpoints[1695] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/images/{imageName}", "PATCH"); + Endpoints[1696] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/images/{imageName}", "PUT"); + Endpoints[1697] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/snapshots/{snapshotName}", "DELETE"); + Endpoints[1698] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/snapshots/{snapshotName}", "GET"); + Endpoints[1699] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/snapshots/{snapshotName}", "PUT"); + Endpoints[1700] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/snapshots/{snapshotName}", "PATCH"); + Endpoints[1701] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}", "PATCH"); + Endpoints[1702] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}", "GET"); + Endpoints[1703] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}", "DELETE"); + Endpoints[1704] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}", "PUT"); + Endpoints[1705] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}", "GET"); + Endpoints[1706] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}", "DELETE"); + Endpoints[1707] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}", "PATCH"); + Endpoints[1708] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}", "PUT"); + Endpoints[1709] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Consumption/budgets/{budgetName}", "GET"); + Endpoints[1710] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Consumption/budgets/{budgetName}", "PUT"); + Endpoints[1711] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Consumption/budgets/{budgetName}", "DELETE"); + Endpoints[1712] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerInstance/containerGroups/{containerGroupName}", "GET"); + Endpoints[1713] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerInstance/containerGroups/{containerGroupName}", "PATCH"); + Endpoints[1714] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerInstance/containerGroups/{containerGroupName}", "PUT"); + Endpoints[1715] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerInstance/containerGroups/{containerGroupName}", "DELETE"); + Endpoints[1716] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}", "GET"); + Endpoints[1717] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}", "PUT"); + Endpoints[1718] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}", "DELETE"); + Endpoints[1719] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}", "PATCH"); + Endpoints[1720] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/containerServices/{containerServiceName}", "GET"); + Endpoints[1721] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/containerServices/{containerServiceName}", "DELETE"); + Endpoints[1722] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/containerServices/{containerServiceName}", "PUT"); + Endpoints[1723] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}", "PUT"); + Endpoints[1724] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}", "GET"); + Endpoints[1725] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}", "DELETE"); + Endpoints[1726] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}", "PUT"); + Endpoints[1727] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}", "PATCH"); + Endpoints[1728] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}", "DELETE"); + Endpoints[1729] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}", "GET"); + Endpoints[1730] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataBox/jobs/{jobName}", "GET"); + Endpoints[1731] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataBox/jobs/{jobName}", "PUT"); + Endpoints[1732] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataBox/jobs/{jobName}", "DELETE"); + Endpoints[1733] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataBox/jobs/{jobName}", "PATCH"); + Endpoints[1734] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Databricks/workspaces/{workspaceName}", "PUT"); + Endpoints[1735] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Databricks/workspaces/{workspaceName}", "DELETE"); + Endpoints[1736] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Databricks/workspaces/{workspaceName}", "GET"); + Endpoints[1737] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Databricks/workspaces/{workspaceName}", "PATCH"); + Endpoints[1738] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataCatalog/catalogs/{catalogName}", "PATCH"); + Endpoints[1739] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataCatalog/catalogs/{catalogName}", "GET"); + Endpoints[1740] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataCatalog/catalogs/{catalogName}", "DELETE"); + Endpoints[1741] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataCatalog/catalogs/{catalogName}", "PUT"); + Endpoints[1742] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}", "PUT"); + Endpoints[1743] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}", "PATCH"); + Endpoints[1744] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}", "GET"); + Endpoints[1745] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}", "DELETE"); + Endpoints[1746] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}", "PATCH"); + Endpoints[1747] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}", "GET"); + Endpoints[1748] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}", "DELETE"); + Endpoints[1749] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}", "PUT"); + Endpoints[1750] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}", "PUT"); + Endpoints[1751] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}", "DELETE"); + Endpoints[1752] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}", "PATCH"); + Endpoints[1753] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}", "GET"); + Endpoints[1754] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}", "DELETE"); + Endpoints[1755] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}", "PATCH"); + Endpoints[1756] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}", "GET"); + Endpoints[1757] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}", "PUT"); + Endpoints[1758] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}", "GET"); + Endpoints[1759] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}", "PUT"); + Endpoints[1760] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}", "DELETE"); + Endpoints[1761] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}", "PATCH"); + Endpoints[1762] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}", "PUT"); + Endpoints[1763] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}", "DELETE"); + Endpoints[1764] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}", "PATCH"); + Endpoints[1765] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}", "GET"); + Endpoints[1766] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/provisioningServices/{provisioningServiceName}", "PATCH"); + Endpoints[1767] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/provisioningServices/{provisioningServiceName}", "GET"); + Endpoints[1768] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/provisioningServices/{provisioningServiceName}", "DELETE"); + Endpoints[1769] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/provisioningServices/{provisioningServiceName}", "PUT"); + Endpoints[1770] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{name}", "PUT"); + Endpoints[1771] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{name}", "GET"); + Endpoints[1772] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{name}", "PATCH"); + Endpoints[1773] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{name}", "DELETE"); + Endpoints[1774] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/schedules/{name}", "GET"); + Endpoints[1775] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/schedules/{name}", "PUT"); + Endpoints[1776] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/schedules/{name}", "DELETE"); + Endpoints[1777] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/schedules/{name}", "PATCH"); + Endpoints[1778] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}", "DELETE"); + Endpoints[1779] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}", "PUT"); + Endpoints[1780] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}", "GET"); + Endpoints[1781] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}", "PATCH"); + Endpoints[1782] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DomainRegistration/domains/{domainName}", "GET"); + Endpoints[1783] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DomainRegistration/domains/{domainName}", "DELETE"); + Endpoints[1784] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DomainRegistration/domains/{domainName}", "PATCH"); + Endpoints[1785] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DomainRegistration/domains/{domainName}", "PUT"); + Endpoints[1786] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventGrid/topics/{topicName}", "PATCH"); + Endpoints[1787] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventGrid/topics/{topicName}", "DELETE"); + Endpoints[1788] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventGrid/topics/{topicName}", "PUT"); + Endpoints[1789] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventGrid/topics/{topicName}", "GET"); + Endpoints[1790] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/clusters/{clusterName}", "GET"); + Endpoints[1791] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/clusters/{clusterName}", "PATCH"); + Endpoints[1792] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}", "GET"); + Endpoints[1793] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}", "DELETE"); + Endpoints[1794] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}", "PUT"); + Endpoints[1795] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}", "PATCH"); + Endpoints[1796] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{fabricLocation}", "GET"); + Endpoints[1797] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HanaOnAzure/hanaInstances/{hanaInstanceName}", "GET"); + Endpoints[1798] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}", "PUT"); + Endpoints[1799] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}", "PATCH"); + Endpoints[1800] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}", "DELETE"); + Endpoints[1801] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}", "GET"); + Endpoints[1802] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ImportExport/jobs/{jobName}", "PATCH"); + Endpoints[1803] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ImportExport/jobs/{jobName}", "PUT"); + Endpoints[1804] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ImportExport/jobs/{jobName}", "DELETE"); + Endpoints[1805] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ImportExport/jobs/{jobName}", "GET"); + Endpoints[1806] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.InfrastructureInsights.Admin/regionHealths/{location}", "GET"); + Endpoints[1807] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/actionGroups/{actionGroupName}", "PUT"); + Endpoints[1808] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/actionGroups/{actionGroupName}", "GET"); + Endpoints[1809] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/actionGroups/{actionGroupName}", "DELETE"); + Endpoints[1810] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/actionGroups/{actionGroupName}", "PATCH"); + Endpoints[1811] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/activityLogAlerts/{activityLogAlertName}", "DELETE"); + Endpoints[1812] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/activityLogAlerts/{activityLogAlertName}", "PATCH"); + Endpoints[1813] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/activityLogAlerts/{activityLogAlertName}", "GET"); + Endpoints[1814] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/activityLogAlerts/{activityLogAlertName}", "PUT"); + Endpoints[1815] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.insights/alertrules/{ruleName}", "PUT"); + Endpoints[1816] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.insights/alertrules/{ruleName}", "DELETE"); + Endpoints[1817] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.insights/alertrules/{ruleName}", "PATCH"); + Endpoints[1818] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.insights/alertrules/{ruleName}", "GET"); + Endpoints[1819] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.insights/autoscalesettings/{autoscaleSettingName}", "PATCH"); + Endpoints[1820] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.insights/autoscalesettings/{autoscaleSettingName}", "DELETE"); + Endpoints[1821] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.insights/autoscalesettings/{autoscaleSettingName}", "PUT"); + Endpoints[1822] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.insights/autoscalesettings/{autoscaleSettingName}", "GET"); + Endpoints[1823] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}", "GET"); + Endpoints[1824] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}", "PATCH"); + Endpoints[1825] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}", "PUT"); + Endpoints[1826] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}", "DELETE"); + Endpoints[1827] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/metricAlerts/{ruleName}", "DELETE"); + Endpoints[1828] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/metricAlerts/{ruleName}", "PATCH"); + Endpoints[1829] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/metricAlerts/{ruleName}", "PUT"); + Endpoints[1830] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/metricAlerts/{ruleName}", "GET"); + Endpoints[1831] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.insights/scheduledQueryRules/{ruleName}", "GET"); + Endpoints[1832] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.insights/scheduledQueryRules/{ruleName}", "DELETE"); + Endpoints[1833] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.insights/scheduledQueryRules/{ruleName}", "PUT"); + Endpoints[1834] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/webtests/{webTestName}", "GET"); + Endpoints[1835] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/webtests/{webTestName}", "DELETE"); + Endpoints[1836] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/webtests/{webTestName}", "PATCH"); + Endpoints[1837] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/webtests/{webTestName}", "PUT"); + Endpoints[1838] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.IoTCentral/IoTApps/{resourceName}", "GET"); + Endpoints[1839] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.IoTCentral/IoTApps/{resourceName}", "PUT"); + Endpoints[1840] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.IoTCentral/IoTApps/{resourceName}", "PATCH"); + Endpoints[1841] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.IoTCentral/IoTApps/{resourceName}", "DELETE"); + Endpoints[1842] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.IoTSpaces/Graph/{resourceName}", "DELETE"); + Endpoints[1843] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.IoTSpaces/Graph/{resourceName}", "GET"); + Endpoints[1844] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.IoTSpaces/Graph/{resourceName}", "PUT"); + Endpoints[1845] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.IoTSpaces/Graph/{resourceName}", "PATCH"); + Endpoints[1846] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}", "GET"); + Endpoints[1847] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}", "DELETE"); + Endpoints[1848] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}", "PATCH"); + Endpoints[1849] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}", "PUT"); + Endpoints[1850] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}", "PATCH"); + Endpoints[1851] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}", "DELETE"); + Endpoints[1852] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}", "PUT"); + Endpoints[1853] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}", "GET"); + Endpoints[1854] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}", "PUT"); + Endpoints[1855] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}", "GET"); + Endpoints[1856] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}", "DELETE"); + Endpoints[1857] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}", "PATCH"); + Endpoints[1858] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/commitmentPlans/{commitmentPlanName}", "PATCH"); + Endpoints[1859] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/commitmentPlans/{commitmentPlanName}", "GET"); + Endpoints[1860] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/commitmentPlans/{commitmentPlanName}", "DELETE"); + Endpoints[1861] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/commitmentPlans/{commitmentPlanName}", "PARAMETERS"); + Endpoints[1862] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/commitmentPlans/{commitmentPlanName}", "PUT"); + Endpoints[1863] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/webServices/{webServiceName}", "PUT"); + Endpoints[1864] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/webServices/{webServiceName}", "GET"); + Endpoints[1865] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/webServices/{webServiceName}", "PATCH"); + Endpoints[1866] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/webServices/{webServiceName}", "DELETE"); + Endpoints[1867] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/workspaces/{workspaceName}", "DELETE"); + Endpoints[1868] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/workspaces/{workspaceName}", "PUT"); + Endpoints[1869] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/workspaces/{workspaceName}", "GET"); + Endpoints[1870] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/workspaces/{workspaceName}", "PATCH"); + Endpoints[1871] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningCompute/operationalizationClusters/{clusterName}", "PUT"); + Endpoints[1872] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningCompute/operationalizationClusters/{clusterName}", "GET"); + Endpoints[1873] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningCompute/operationalizationClusters/{clusterName}", "PATCH"); + Endpoints[1874] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningCompute/operationalizationClusters/{clusterName}", "DELETE"); + Endpoints[1875] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningExperimentation/accounts/{accountName}", "DELETE"); + Endpoints[1876] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningExperimentation/accounts/{accountName}", "GET"); + Endpoints[1877] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningExperimentation/accounts/{accountName}", "PUT"); + Endpoints[1878] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningExperimentation/accounts/{accountName}", "PATCH"); + Endpoints[1879] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningServices/workspaces/{workspaceName}", "GET"); + Endpoints[1880] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningServices/workspaces/{workspaceName}", "PUT"); + Endpoints[1881] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningServices/workspaces/{workspaceName}", "DELETE"); + Endpoints[1882] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningServices/workspaces/{workspaceName}", "PATCH"); + Endpoints[1883] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{resourceName}", "PUT"); + Endpoints[1884] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{resourceName}", "PATCH"); + Endpoints[1885] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{resourceName}", "GET"); + Endpoints[1886] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{resourceName}", "DELETE"); + Endpoints[1887] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Maps/accounts/{accountName}", "DELETE"); + Endpoints[1888] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Maps/accounts/{accountName}", "GET"); + Endpoints[1889] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Maps/accounts/{accountName}", "PUT"); + Endpoints[1890] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Maps/accounts/{accountName}", "PATCH"); + Endpoints[1891] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{mediaServiceName}", "GET"); + Endpoints[1892] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{mediaServiceName}", "PUT"); + Endpoints[1893] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{mediaServiceName}", "DELETE"); + Endpoints[1894] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{mediaServiceName}", "PATCH"); + Endpoints[1895] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}", "GET"); + Endpoints[1896] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}", "PUT"); + Endpoints[1897] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}", "PATCH"); + Endpoints[1898] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}", "DELETE"); + Endpoints[1899] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}", "DELETE"); + Endpoints[1900] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}", "GET"); + Endpoints[1901] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}", "PUT"); + Endpoints[1902] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}", "PATCH"); + Endpoints[1903] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}", "GET"); + Endpoints[1904] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}", "PUT"); + Endpoints[1905] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationSecurityGroups/{applicationSecurityGroupName}", "DELETE"); + Endpoints[1906] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}", "PATCH"); + Endpoints[1907] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}", "DELETE"); + Endpoints[1908] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}", "PUT"); + Endpoints[1909] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}", "GET"); + Endpoints[1910] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}", "PUT"); + Endpoints[1911] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}", "GET"); + Endpoints[1912] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/ddosProtectionPlans/{ddosProtectionPlanName}", "DELETE"); + Endpoints[1913] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones/{zoneName}", "PATCH"); + Endpoints[1914] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones/{zoneName}", "GET"); + Endpoints[1915] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones/{zoneName}", "DELETE"); + Endpoints[1916] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones/{zoneName}", "PUT"); + Endpoints[1917] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}", "PATCH"); + Endpoints[1918] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}", "PUT"); + Endpoints[1919] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}", "GET"); + Endpoints[1920] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}", "DELETE"); + Endpoints[1921] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}", "GET"); + Endpoints[1922] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}", "PATCH"); + Endpoints[1923] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}", "PUT"); + Endpoints[1924] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}", "DELETE"); + Endpoints[1925] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}", "PUT"); + Endpoints[1926] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}", "PATCH"); + Endpoints[1927] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}", "GET"); + Endpoints[1928] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}", "PATCH"); + Endpoints[1929] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}", "GET"); + Endpoints[1930] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}", "PUT"); + Endpoints[1931] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}", "DELETE"); + Endpoints[1932] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}", "PATCH"); + Endpoints[1933] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}", "PUT"); + Endpoints[1934] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}", "GET"); + Endpoints[1935] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}", "DELETE"); + Endpoints[1936] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}", "DELETE"); + Endpoints[1937] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}", "PATCH"); + Endpoints[1938] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}", "PUT"); + Endpoints[1939] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}", "GET"); + Endpoints[1940] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}", "GET"); + Endpoints[1941] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}", "PATCH"); + Endpoints[1942] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}", "PUT"); + Endpoints[1943] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}", "DELETE"); + Endpoints[1944] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}", "GET"); + Endpoints[1945] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}", "PATCH"); + Endpoints[1946] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}", "PUT"); + Endpoints[1947] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}", "DELETE"); + Endpoints[1948] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}", "DELETE"); + Endpoints[1949] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}", "PATCH"); + Endpoints[1950] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}", "GET"); + Endpoints[1951] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}", "PUT"); + Endpoints[1952] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}", "PATCH"); + Endpoints[1953] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}", "PUT"); + Endpoints[1954] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}", "DELETE"); + Endpoints[1955] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}", "GET"); + Endpoints[1956] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficmanagerprofiles/{profileName}", "PATCH"); + Endpoints[1957] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficmanagerprofiles/{profileName}", "DELETE"); + Endpoints[1958] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficmanagerprofiles/{profileName}", "PUT"); + Endpoints[1959] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficmanagerprofiles/{profileName}", "GET"); + Endpoints[1960] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}", "PUT"); + Endpoints[1961] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}", "DELETE"); + Endpoints[1962] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}", "PATCH"); + Endpoints[1963] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}", "GET"); + Endpoints[1964] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}", "GET"); + Endpoints[1965] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}", "DELETE"); + Endpoints[1966] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}", "PUT"); + Endpoints[1967] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}", "PATCH"); + Endpoints[1968] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}", "DELETE"); + Endpoints[1969] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}", "PATCH"); + Endpoints[1970] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}", "PUT"); + Endpoints[1971] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}", "GET"); + Endpoints[1972] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}", "GET"); + Endpoints[1973] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}", "PATCH"); + Endpoints[1974] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}", "PUT"); + Endpoints[1975] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}", "DELETE"); + Endpoints[1976] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationsManagement/ManagementConfigurations/{managementConfigurationName}", "GET"); + Endpoints[1977] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationsManagement/ManagementConfigurations/{managementConfigurationName}", "DELETE"); + Endpoints[1978] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationsManagement/ManagementConfigurations/{managementConfigurationName}", "PUT"); + Endpoints[1979] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationsManagement/solutions/{solutionName}", "PUT"); + Endpoints[1980] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationsManagement/solutions/{solutionName}", "DELETE"); + Endpoints[1981] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationsManagement/solutions/{solutionName}", "GET"); + Endpoints[1982] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBI/workspaceCollections/{workspaceCollectionName}", "PUT"); + Endpoints[1983] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBI/workspaceCollections/{workspaceCollectionName}", "PATCH"); + Endpoints[1984] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBI/workspaceCollections/{workspaceCollectionName}", "DELETE"); + Endpoints[1985] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBI/workspaceCollections/{workspaceCollectionName}", "GET"); + Endpoints[1986] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBIDedicated/capacities/{dedicatedCapacityName}", "PATCH"); + Endpoints[1987] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBIDedicated/capacities/{dedicatedCapacityName}", "DELETE"); + Endpoints[1988] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBIDedicated/capacities/{dedicatedCapacityName}", "GET"); + Endpoints[1989] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBIDedicated/capacities/{dedicatedCapacityName}", "PUT"); + Endpoints[1990] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}", "GET"); + Endpoints[1991] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}", "PUT"); + Endpoints[1992] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}", "DELETE"); + Endpoints[1993] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}", "PATCH"); + Endpoints[1994] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}", "PUT"); + Endpoints[1995] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}", "DELETE"); + Endpoints[1996] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}", "GET"); + Endpoints[1997] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}", "PATCH"); + Endpoints[1998] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}", "GET"); + Endpoints[1999] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}", "DELETE"); + Endpoints[2000] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}", "HEAD"); + Endpoints[2001] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}", "PUT"); + Endpoints[2002] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Scheduler/jobCollections/{jobCollectionName}", "PATCH"); + Endpoints[2003] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Scheduler/jobCollections/{jobCollectionName}", "PUT"); + Endpoints[2004] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Scheduler/jobCollections/{jobCollectionName}", "DELETE"); + Endpoints[2005] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Scheduler/jobCollections/{jobCollectionName}", "GET"); + Endpoints[2006] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Search/searchServices/{searchServiceName}", "DELETE"); + Endpoints[2007] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Search/searchServices/{searchServiceName}", "PATCH"); + Endpoints[2008] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Search/searchServices/{searchServiceName}", "PUT"); + Endpoints[2009] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Search/searchServices/{searchServiceName}", "GET"); + Endpoints[2010] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/pricings/{pricingName}", "PUT"); + Endpoints[2011] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/pricings/{pricingName}", "GET"); + Endpoints[2012] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/securityContacts/{securityContactName}", "PUT"); + Endpoints[2013] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/securityContacts/{securityContactName}", "GET"); + Endpoints[2014] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/securityContacts/{securityContactName}", "PATCH"); + Endpoints[2015] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/securityContacts/{securityContactName}", "DELETE"); + Endpoints[2016] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/workspaceSettings/{workspaceSettingName}", "GET"); + Endpoints[2017] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/workspaceSettings/{workspaceSettingName}", "PUT"); + Endpoints[2018] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/workspaceSettings/{workspaceSettingName}", "DELETE"); + Endpoints[2019] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/workspaceSettings/{workspaceSettingName}", "PATCH"); + Endpoints[2020] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/gateways/{gatewayName}", "PUT"); + Endpoints[2021] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/gateways/{gatewayName}", "DELETE"); + Endpoints[2022] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/gateways/{gatewayName}", "PATCH"); + Endpoints[2023] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/gateways/{gatewayName}", "GET"); + Endpoints[2024] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/nodes/{nodeName}", "DELETE"); + Endpoints[2025] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/nodes/{nodeName}", "GET"); + Endpoints[2026] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/nodes/{nodeName}", "PATCH"); + Endpoints[2027] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/nodes/{nodeName}", "PUT"); + Endpoints[2028] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}", "GET"); + Endpoints[2029] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}", "PUT"); + Endpoints[2030] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}", "PATCH"); + Endpoints[2031] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}", "DELETE"); + Endpoints[2032] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}", "GET"); + Endpoints[2033] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}", "DELETE"); + Endpoints[2034] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}", "PUT"); + Endpoints[2035] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}", "PATCH"); + Endpoints[2036] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/SignalR/{resourceName}", "GET"); + Endpoints[2037] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/SignalR/{resourceName}", "DELETE"); + Endpoints[2038] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/SignalR/{resourceName}", "PATCH"); + Endpoints[2039] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/SignalR/{resourceName}", "PUT"); + Endpoints[2040] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Solutions/applianceDefinitions/{applianceDefinitionName}", "DELETE"); + Endpoints[2041] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Solutions/applianceDefinitions/{applianceDefinitionName}", "GET"); + Endpoints[2042] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Solutions/applianceDefinitions/{applianceDefinitionName}", "PUT"); + Endpoints[2043] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Solutions/appliances/{applianceName}", "GET"); + Endpoints[2044] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Solutions/appliances/{applianceName}", "DELETE"); + Endpoints[2045] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Solutions/appliances/{applianceName}", "PUT"); + Endpoints[2046] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Solutions/appliances/{applianceName}", "PATCH"); + Endpoints[2047] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Solutions/applicationDefinitions/{applicationDefinitionName}", "GET"); + Endpoints[2048] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Solutions/applicationDefinitions/{applicationDefinitionName}", "PUT"); + Endpoints[2049] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Solutions/applicationDefinitions/{applicationDefinitionName}", "DELETE"); + Endpoints[2050] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Solutions/applications/{applicationName}", "PUT"); + Endpoints[2051] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Solutions/applications/{applicationName}", "GET"); + Endpoints[2052] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Solutions/applications/{applicationName}", "PATCH"); + Endpoints[2053] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Solutions/applications/{applicationName}", "DELETE"); + Endpoints[2054] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}", "GET"); + Endpoints[2055] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}", "PUT"); + Endpoints[2056] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}", "DELETE"); + Endpoints[2057] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}", "PATCH"); + Endpoints[2058] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}", "PUT"); + Endpoints[2059] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}", "PATCH"); + Endpoints[2060] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}", "DELETE"); + Endpoints[2061] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}", "GET"); + Endpoints[2062] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}", "PUT"); + Endpoints[2063] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}", "GET"); + Endpoints[2064] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}", "PATCH"); + Endpoints[2065] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}", "PUT"); + Endpoints[2066] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}", "DELETE"); + Endpoints[2067] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}", "GET"); + Endpoints[2068] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}", "PATCH"); + Endpoints[2069] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}", "GET"); + Endpoints[2070] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}", "PUT"); + Endpoints[2071] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}", "DELETE"); + Endpoints[2072] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}", "PATCH"); + Endpoints[2073] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}", "PUT"); + Endpoints[2074] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}", "PATCH"); + Endpoints[2075] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}", "GET"); + Endpoints[2076] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}", "DELETE"); + Endpoints[2077] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/directoryTenants/{tenant}", "GET"); + Endpoints[2078] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/directoryTenants/{tenant}", "PUT"); + Endpoints[2079] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/directoryTenants/{tenant}", "DELETE"); + Endpoints[2080] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/offers/{offer}", "GET"); + Endpoints[2081] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/offers/{offer}", "PUT"); + Endpoints[2082] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/offers/{offer}", "DELETE"); + Endpoints[2083] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/plans/{plan}", "DELETE"); + Endpoints[2084] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/plans/{plan}", "PUT"); + Endpoints[2085] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/plans/{plan}", "GET"); + Endpoints[2086] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}", "PUT"); + Endpoints[2087] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}", "GET"); + Endpoints[2088] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}", "PATCH"); + Endpoints[2089] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}", "DELETE"); + Endpoints[2090] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Update.Admin/updateLocations/{updateLocation}", "GET"); + Endpoints[2091] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{resourceName}", "PUT"); + Endpoints[2092] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{resourceName}", "DELETE"); + Endpoints[2093] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{resourceName}", "GET"); + Endpoints[2094] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/certificates/{name}", "DELETE"); + Endpoints[2095] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/certificates/{name}", "PUT"); + Endpoints[2096] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/certificates/{name}", "GET"); + Endpoints[2097] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/certificates/{name}", "PATCH"); + Endpoints[2098] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/classicMobileServices/{name}", "DELETE"); + Endpoints[2099] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/classicMobileServices/{name}", "GET"); + Endpoints[2100] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/connectionGateways/{connectionGatewayName}", "GET"); + Endpoints[2101] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/connectionGateways/{connectionGatewayName}", "PATCH"); + Endpoints[2102] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/connectionGateways/{connectionGatewayName}", "PUT"); + Endpoints[2103] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/connectionGateways/{connectionGatewayName}", "DELETE"); + Endpoints[2104] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/connections/{connectionName}", "PUT"); + Endpoints[2105] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/connections/{connectionName}", "GET"); + Endpoints[2106] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/connections/{connectionName}", "PATCH"); + Endpoints[2107] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/connections/{connectionName}", "DELETE"); + Endpoints[2108] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/csrs/{name}", "PATCH"); + Endpoints[2109] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/csrs/{name}", "PUT"); + Endpoints[2110] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/csrs/{name}", "GET"); + Endpoints[2111] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/csrs/{name}", "DELETE"); + Endpoints[2112] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/customApis/{apiName}", "PATCH"); + Endpoints[2113] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/customApis/{apiName}", "GET"); + Endpoints[2114] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/customApis/{apiName}", "PUT"); + Endpoints[2115] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/customApis/{apiName}", "DELETE"); + Endpoints[2116] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}", "GET"); + Endpoints[2117] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}", "PATCH"); + Endpoints[2118] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}", "DELETE"); + Endpoints[2119] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}", "PUT"); + Endpoints[2120] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/managedHostingEnvironments/{name}", "PUT"); + Endpoints[2121] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/managedHostingEnvironments/{name}", "GET"); + Endpoints[2122] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/managedHostingEnvironments/{name}", "DELETE"); + Endpoints[2123] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}", "GET"); + Endpoints[2124] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}", "PUT"); + Endpoints[2125] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}", "DELETE"); + Endpoints[2126] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}", "PATCH"); + Endpoints[2127] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}", "DELETE"); + Endpoints[2128] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}", "GET"); + Endpoints[2129] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}", "PUT"); + Endpoints[2130] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}", "PATCH"); + Endpoints[2131] = CreateEndpoint("/providers/{managementGroupsNamespace}/managementGroups/{managementGroupName}/providers/Microsoft.PolicyInsights/policyEvents/{policyEventsResource}/queryResults", "POST"); + Endpoints[2132] = CreateEndpoint("/providers/{managementGroupsNamespace}/managementGroups/{managementGroupName}/providers/Microsoft.PolicyInsights/policyStates/{policyStatesResource}/queryResults", "POST"); + Endpoints[2133] = CreateEndpoint("/providers/{managementGroupsNamespace}/managementGroups/{managementGroupName}/providers/Microsoft.PolicyInsights/policyStates/{policyStatesSummaryResource}/summarize", "POST"); + Endpoints[2134] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroup/{resourceGroupName}/providers/Microsoft.MachineLearningServices/workspaces/{workspaceName}/computes", "GET"); + Endpoints[2135] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}/checkNameAvailability", "POST"); + Endpoints[2136] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}/checkStatus", "POST"); + Endpoints[2137] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}/projects", "GET"); + Endpoints[2138] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}/skus", "GET"); + Endpoints[2139] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}/start", "POST"); + Endpoints[2140] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}/stop", "POST"); + Endpoints[2141] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroup}/providers/Microsoft.AzureBridge.Admin/activations/{activationName}/downloadedProducts", "GET"); + Endpoints[2142] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroup}/providers/Microsoft.AzureBridge.Admin/activations/{activationName}/products", "GET"); + Endpoints[2143] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.AzureStack/registrations/{registrationName}/customerSubscriptions", "GET"); + Endpoints[2144] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.AzureStack/registrations/{registrationName}/getactivationkey", "POST"); + Endpoints[2145] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.AzureStack/registrations/{registrationName}/products", "GET"); + Endpoints[2146] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AnalysisServices/servers/{serverName}/dissociateGateway", "POST"); + Endpoints[2147] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AnalysisServices/servers/{serverName}/listGatewayStatus", "POST"); + Endpoints[2148] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AnalysisServices/servers/{serverName}/resume", "POST"); + Endpoints[2149] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AnalysisServices/servers/{serverName}/skus", "GET"); + Endpoints[2150] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AnalysisServices/servers/{serverName}/suspend", "POST"); + Endpoints[2151] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis", "GET"); + Endpoints[2152] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apisByTags", "GET"); + Endpoints[2153] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/api-version-sets", "GET"); + Endpoints[2154] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/api-version-sets", "PARAMETERS"); + Endpoints[2155] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/applynetworkconfigurationupdates", "POST"); + Endpoints[2156] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/authorizationServers", "GET"); + Endpoints[2157] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/backends", "GET"); + Endpoints[2158] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/backup", "POST"); + Endpoints[2159] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/certificates", "GET"); + Endpoints[2160] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/diagnostics", "GET"); + Endpoints[2161] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/getssotoken", "GET"); + Endpoints[2162] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/getssotoken", "POST"); + Endpoints[2163] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/groups", "GET"); + Endpoints[2164] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/identityProviders", "GET"); + Endpoints[2165] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/issues", "GET"); + Endpoints[2166] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/loggers", "GET"); + Endpoints[2167] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/managedeployments", "POST"); + Endpoints[2168] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/networkstatus", "GET"); + Endpoints[2169] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/notifications", "GET"); + Endpoints[2170] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/openidConnectProviders", "GET"); + Endpoints[2171] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/policies", "GET"); + Endpoints[2172] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/policySnippets", "GET"); + Endpoints[2173] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products", "GET"); + Endpoints[2174] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/properties", "GET"); + Endpoints[2175] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/regions", "GET"); + Endpoints[2176] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/restore", "POST"); + Endpoints[2177] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/subscriptions", "GET"); + Endpoints[2178] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tagResources", "GET"); + Endpoints[2179] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tags", "GET"); + Endpoints[2180] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/templates", "GET"); + Endpoints[2181] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/updatecertificate", "POST"); + Endpoints[2182] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/updatehostname", "POST"); + Endpoints[2183] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/uploadcertificate", "POST"); + Endpoints[2184] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/users", "GET"); + Endpoints[2185] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/agentRegistrationInformation", "GET"); + Endpoints[2186] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/certificates", "GET"); + Endpoints[2187] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/compilationjobs", "GET"); + Endpoints[2188] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/configurations", "GET"); + Endpoints[2189] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/connections", "GET"); + Endpoints[2190] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/connectionTypes", "GET"); + Endpoints[2191] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/credentials", "GET"); + Endpoints[2192] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/hybridRunbookWorkerGroups", "GET"); + Endpoints[2193] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/jobs", "GET"); + Endpoints[2194] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/jobSchedules", "GET"); + Endpoints[2195] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/linkedWorkspace", "GET"); + Endpoints[2196] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/listKeys", "POST"); + Endpoints[2197] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/modules", "GET"); + Endpoints[2198] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/nodeConfigurations", "GET"); + Endpoints[2199] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/nodes", "GET"); + Endpoints[2200] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/runbooks", "GET"); + Endpoints[2201] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/schedules", "GET"); + Endpoints[2202] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/softwareUpdateConfigurationMachineRuns", "GET"); + Endpoints[2203] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/softwareUpdateConfigurationRuns", "GET"); + Endpoints[2204] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/softwareUpdateConfigurations", "GET"); + Endpoints[2205] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/sourceControls", "GET"); + Endpoints[2206] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/statistics", "GET"); + Endpoints[2207] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/usages", "GET"); + Endpoints[2208] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/variables", "GET"); + Endpoints[2209] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/watchers", "GET"); + Endpoints[2210] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/webhooks", "GET"); + Endpoints[2211] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Backup.Admin/backupLocations/{location}/backups", "GET"); + Endpoints[2212] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Backup.Admin/backupLocations/{location}/createBackup", "POST"); + Endpoints[2213] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/applications", "GET"); + Endpoints[2214] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/certificates", "GET"); + Endpoints[2215] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/listKeys", "POST"); + Endpoints[2216] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/pools", "GET"); + Endpoints[2217] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/regenerateKeys", "POST"); + Endpoints[2218] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/syncAutoStorageKeys", "POST"); + Endpoints[2219] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/clusters/{clusterName}/listRemoteLoginInformation", "POST"); + Endpoints[2220] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/jobs/{jobName}/listOutputFiles", "POST"); + Endpoints[2221] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/jobs/{jobName}/listRemoteLoginInformation", "POST"); + Endpoints[2222] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/jobs/{jobName}/terminate", "POST"); + Endpoints[2223] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/clusters", "GET"); + Endpoints[2224] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/experiments", "GET"); + Endpoints[2225] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/fileServers", "GET"); + Endpoints[2226] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}/channels", "GET"); + Endpoints[2227] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}/connections", "GET"); + Endpoints[2228] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{cacheName}/firewallRules", "GET"); + Endpoints[2229] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{cacheName}/patchSchedules", "GET"); + Endpoints[2230] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}/export", "POST"); + Endpoints[2231] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}/forceReboot", "POST"); + Endpoints[2232] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}/import", "POST"); + Endpoints[2233] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}/linkedServers", "GET"); + Endpoints[2234] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}/listKeys", "POST"); + Endpoints[2235] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}/listUpgradeNotifications", "GET"); + Endpoints[2236] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}/regenerateKey", "POST"); + Endpoints[2237] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/checkResourceUsage", "POST"); + Endpoints[2238] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints", "GET"); + Endpoints[2239] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/generateSsoUri", "POST"); + Endpoints[2240] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/getSupportedOptimizationTypes", "POST"); + Endpoints[2241] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CertificateRegistration/certificateOrders/{certificateOrderName}/certificates", "GET"); + Endpoints[2242] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CertificateRegistration/certificateOrders/{certificateOrderName}/resendRequestEmails", "POST"); + Endpoints[2243] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CertificateRegistration/certificateOrders/{certificateOrderName}/retrieveSiteSeal", "POST"); + Endpoints[2244] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CertificateRegistration/certificateOrders/{name}/reissue", "POST"); + Endpoints[2245] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CertificateRegistration/certificateOrders/{name}/renew", "POST"); + Endpoints[2246] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CertificateRegistration/certificateOrders/{name}/resendEmail", "POST"); + Endpoints[2247] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CertificateRegistration/certificateOrders/{name}/retrieveCertificateActions", "POST"); + Endpoints[2248] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CertificateRegistration/certificateOrders/{name}/retrieveEmailHistory", "POST"); + Endpoints[2249] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CertificateRegistration/certificateOrders/{name}/verifyDomainOwnership", "POST"); + Endpoints[2250] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/listKeys", "POST"); + Endpoints[2251] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/regenerateKey", "POST"); + Endpoints[2252] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/skus", "GET"); + Endpoints[2253] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/usages", "GET"); + Endpoints[2254] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}/vmSizes", "GET"); + Endpoints[2255] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disks/{diskName}/beginGetAccess", "POST"); + Endpoints[2256] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disks/{diskName}/endGetAccess", "POST"); + Endpoints[2257] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/images", "GET"); + Endpoints[2258] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/snapshots/{snapshotName}/beginGetAccess", "POST"); + Endpoints[2259] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/snapshots/{snapshotName}/endGetAccess", "POST"); + Endpoints[2260] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/capture", "POST"); + Endpoints[2261] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/convertToManagedDisks", "POST"); + Endpoints[2262] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/deallocate", "POST"); + Endpoints[2263] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/extensions", "GET"); + Endpoints[2264] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/generalize", "POST"); + Endpoints[2265] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/instanceView", "GET"); + Endpoints[2266] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/performMaintenance", "POST"); + Endpoints[2267] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/powerOff", "POST"); + Endpoints[2268] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/redeploy", "POST"); + Endpoints[2269] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/restart", "POST"); + Endpoints[2270] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/runCommand", "POST"); + Endpoints[2271] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/start", "POST"); + Endpoints[2272] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/vmSizes", "GET"); + Endpoints[2273] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/networkInterfaces", "GET"); + Endpoints[2274] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/publicipaddresses", "GET"); + Endpoints[2275] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines", "GET"); + Endpoints[2276] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/deallocate", "POST"); + Endpoints[2277] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/delete", "POST"); + Endpoints[2278] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/extensions", "GET"); + Endpoints[2279] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/forceRecoveryServiceFabricPlatformUpdateDomainWalk", "POST"); + Endpoints[2280] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/instanceView", "GET"); + Endpoints[2281] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/manualupgrade", "POST"); + Endpoints[2282] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/osRollingUpgrade", "POST"); + Endpoints[2283] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/osUpgradeHistory", "GET"); + Endpoints[2284] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/performMaintenance", "POST"); + Endpoints[2285] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/poweroff", "POST"); + Endpoints[2286] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/redeploy", "POST"); + Endpoints[2287] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/reimage", "POST"); + Endpoints[2288] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/reimageall", "POST"); + Endpoints[2289] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/restart", "POST"); + Endpoints[2290] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/skus", "GET"); + Endpoints[2291] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/start", "POST"); + Endpoints[2292] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/builds", "GET"); + Endpoints[2293] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/buildTasks", "GET"); + Endpoints[2294] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/getBuildSourceUploadUrl", "POST"); + Endpoints[2295] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/getCredentials", "POST"); + Endpoints[2296] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/importImage", "POST"); + Endpoints[2297] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/listCredentials", "POST"); + Endpoints[2298] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/listUsages", "GET"); + Endpoints[2299] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/queueBuild", "POST"); + Endpoints[2300] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/regenerateCredential", "POST"); + Endpoints[2301] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/regenerateCredentials", "POST"); + Endpoints[2302] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/replications", "GET"); + Endpoints[2303] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/webhooks", "GET"); + Endpoints[2304] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/authorizationPolicies", "GET"); + Endpoints[2305] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/connectors", "GET"); + Endpoints[2306] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/interactions", "GET"); + Endpoints[2307] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/kpi", "GET"); + Endpoints[2308] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/links", "GET"); + Endpoints[2309] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/predictions", "GET"); + Endpoints[2310] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/profiles", "GET"); + Endpoints[2311] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/relationshipLinks", "GET"); + Endpoints[2312] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/relationships", "GET"); + Endpoints[2313] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/roleAssignments", "GET"); + Endpoints[2314] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/roles", "GET"); + Endpoints[2315] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/views", "GET"); + Endpoints[2316] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/widgetTypes", "GET"); + Endpoints[2317] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataBox/jobs/{jobName}/bookShipmentPickUp", "POST"); + Endpoints[2318] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataBox/jobs/{jobName}/cancel", "POST"); + Endpoints[2319] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataBox/jobs/{jobName}/copyLogsUri", "POST"); + Endpoints[2320] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataBox/jobs/{jobName}/downloadShippingLabel", "POST"); + Endpoints[2321] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataBox/jobs/{jobName}/listSecrets", "POST"); + Endpoints[2322] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataBox/jobs/{jobName}/reportIssue", "POST"); + Endpoints[2323] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/datasets", "GET"); + Endpoints[2324] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes", "GET"); + Endpoints[2325] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/linkedservices", "GET"); + Endpoints[2326] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/pipelineruns", "POST"); + Endpoints[2327] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/pipelines", "GET"); + Endpoints[2328] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/triggers", "GET"); + Endpoints[2329] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/computePolicies", "GET"); + Endpoints[2330] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/dataLakeStoreAccounts", "GET"); + Endpoints[2331] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/firewallRules", "GET"); + Endpoints[2332] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/storageAccounts", "GET"); + Endpoints[2333] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}/enableKeyVault", "POST"); + Endpoints[2334] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}/firewallRules", "GET"); + Endpoints[2335] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}/trustedIdProviders", "GET"); + Endpoints[2336] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}/virtualNetworkRules", "GET"); + Endpoints[2337] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/configurations", "GET"); + Endpoints[2338] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/databases", "GET"); + Endpoints[2339] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/firewallRules", "GET"); + Endpoints[2340] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/logFiles", "GET"); + Endpoints[2341] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/virtualNetworkRules", "GET"); + Endpoints[2342] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}/configurations", "GET"); + Endpoints[2343] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}/databases", "GET"); + Endpoints[2344] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}/firewallRules", "GET"); + Endpoints[2345] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}/logFiles", "GET"); + Endpoints[2346] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}/virtualNetworkRules", "GET"); + Endpoints[2347] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{iotHubName}/routingEndpointsHealth", "GET"); + Endpoints[2348] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/certificates", "GET"); + Endpoints[2349] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/exportDevices", "POST"); + Endpoints[2350] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/importDevices", "POST"); + Endpoints[2351] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/IotHubStats", "GET"); + Endpoints[2352] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/jobs", "GET"); + Endpoints[2353] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/listkeys", "POST"); + Endpoints[2354] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/quotaMetrics", "GET"); + Endpoints[2355] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/skus", "GET"); + Endpoints[2356] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/provisioningServices/{provisioningServiceName}/certificates", "GET"); + Endpoints[2357] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/provisioningServices/{provisioningServiceName}/listkeys", "POST"); + Endpoints[2358] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/provisioningServices/{provisioningServiceName}/skus", "GET"); + Endpoints[2359] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources", "GET"); + Endpoints[2360] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/costinsights", "GET"); + Endpoints[2361] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/costs", "GET"); + Endpoints[2362] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/customimages", "GET"); + Endpoints[2363] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/formulas", "GET"); + Endpoints[2364] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/galleryimages", "GET"); + Endpoints[2365] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/notificationchannels", "GET"); + Endpoints[2366] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/schedules", "GET"); + Endpoints[2367] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/servicerunners", "GET"); + Endpoints[2368] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users", "GET"); + Endpoints[2369] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines", "GET"); + Endpoints[2370] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualnetworks", "GET"); + Endpoints[2371] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{name}/claimAnyVm", "POST"); + Endpoints[2372] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{name}/createEnvironment", "POST"); + Endpoints[2373] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{name}/exportResourceUsage", "POST"); + Endpoints[2374] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{name}/generateUploadUri", "POST"); + Endpoints[2375] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{name}/listVhds", "POST"); + Endpoints[2376] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/schedules/{name}/execute", "POST"); + Endpoints[2377] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/schedules/{name}/retarget", "POST"); + Endpoints[2378] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/failoverPriorityChange", "POST"); + Endpoints[2379] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/listConnectionStrings", "POST"); + Endpoints[2380] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/listKeys", "POST"); + Endpoints[2381] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/metricDefinitions", "GET"); + Endpoints[2382] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/metrics", "GET"); + Endpoints[2383] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/offlineRegion", "POST"); + Endpoints[2384] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/onlineRegion", "POST"); + Endpoints[2385] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/readonlykeys", "GET"); + Endpoints[2386] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/regenerateKey", "POST"); + Endpoints[2387] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/usages", "GET"); + Endpoints[2388] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DomainRegistration/domains/{domainName}/domainOwnershipIdentifiers", "GET"); + Endpoints[2389] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DomainRegistration/domains/{domainName}/renew", "POST"); + Endpoints[2390] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventGrid/locations/{location}/eventSubscriptions", "GET"); + Endpoints[2391] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventGrid/topics/{topicName}/listKeys", "POST"); + Endpoints[2392] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventGrid/topics/{topicName}/regenerateKey", "POST"); + Endpoints[2393] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventGrid/topicTypes/{topicTypeName}/eventSubscriptions", "GET"); + Endpoints[2394] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/AuthorizationRules", "POST"); + Endpoints[2395] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/AuthorizationRules", "GET"); + Endpoints[2396] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/disasterRecoveryConfigs", "GET"); + Endpoints[2397] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/eventhubs", "GET"); + Endpoints[2398] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/messagingplan", "GET"); + Endpoints[2399] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/edgeGatewayPools", "GET"); + Endpoints[2400] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/edgeGateways", "GET"); + Endpoints[2401] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/fileShares", "GET"); + Endpoints[2402] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/infraRoleInstances", "GET"); + Endpoints[2403] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/infraRoles", "GET"); + Endpoints[2404] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/ipPools", "GET"); + Endpoints[2405] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/logicalNetworks", "GET"); + Endpoints[2406] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/macAddressPools", "GET"); + Endpoints[2407] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/scaleUnitNodes", "GET"); + Endpoints[2408] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/scaleUnits", "GET"); + Endpoints[2409] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/slbMuxInstances", "GET"); + Endpoints[2410] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/storageSubSystems", "GET"); + Endpoints[2411] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/applications", "GET"); + Endpoints[2412] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/executeScriptActions", "POST"); + Endpoints[2413] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/scriptActions", "GET"); + Endpoints[2414] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/scriptExecutionHistory", "GET"); + Endpoints[2415] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ImportExport/jobs/{jobName}/listBitLockerKeys", "POST"); + Endpoints[2416] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.InfrastructureInsights.Admin/regionHealths/{location}/alerts", "GET"); + Endpoints[2417] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.InfrastructureInsights.Admin/regionHealths/{location}/serviceHealths", "GET"); + Endpoints[2418] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/actionGroups/{actionGroupName}/subscribe", "POST"); + Endpoints[2419] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.insights/alertrules/{ruleName}/incidents", "GET"); + Endpoints[2420] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{componentName}/webtests", "GET"); + Endpoints[2421] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/Annotations", "PUT"); + Endpoints[2422] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/Annotations", "GET"); + Endpoints[2423] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/ApiKeys", "GET"); + Endpoints[2424] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/ApiKeys", "POST"); + Endpoints[2425] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/currentbillingfeatures", "PUT"); + Endpoints[2426] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/currentbillingfeatures", "GET"); + Endpoints[2427] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/DefaultWorkItemConfig", "GET"); + Endpoints[2428] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/exportconfiguration", "POST"); + Endpoints[2429] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/exportconfiguration", "GET"); + Endpoints[2430] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/favorites", "GET"); + Endpoints[2431] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/featurecapabilities", "GET"); + Endpoints[2432] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/getavailablebillingfeatures", "GET"); + Endpoints[2433] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/ProactiveDetectionConfigs", "GET"); + Endpoints[2434] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/purge", "POST"); + Endpoints[2435] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/quotastatus", "GET"); + Endpoints[2436] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/syntheticmonitorlocations", "GET"); + Endpoints[2437] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/WorkItemConfigs", "GET"); + Endpoints[2438] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/WorkItemConfigs", "POST"); + Endpoints[2439] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/metricAlerts/{ruleName}/status", "GET"); + Endpoints[2440] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}/secrets", "GET"); + Endpoints[2441] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/agreements", "GET"); + Endpoints[2442] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/assemblies", "GET"); + Endpoints[2443] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/batchConfigurations", "GET"); + Endpoints[2444] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/certificates", "GET"); + Endpoints[2445] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/listCallbackUrl", "POST"); + Endpoints[2446] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/listKeyVaultKeys", "POST"); + Endpoints[2447] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/logTrackingEvents", "POST"); + Endpoints[2448] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/maps", "GET"); + Endpoints[2449] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/partners", "GET"); + Endpoints[2450] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/regenerateAccessKey", "POST"); + Endpoints[2451] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/schemas", "GET"); + Endpoints[2452] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/sessions", "GET"); + Endpoints[2453] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/accessKeys", "GET"); + Endpoints[2454] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/disable", "POST"); + Endpoints[2455] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/enable", "POST"); + Endpoints[2456] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/generateUpgradedDefinition", "POST"); + Endpoints[2457] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/listCallbackUrl", "POST"); + Endpoints[2458] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/listSwagger", "POST"); + Endpoints[2459] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/move", "POST"); + Endpoints[2460] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/regenerateAccessKey", "POST"); + Endpoints[2461] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/run", "POST"); + Endpoints[2462] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs", "GET"); + Endpoints[2463] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/triggers/", "GET"); + Endpoints[2464] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/validate", "POST"); + Endpoints[2465] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/versions", "GET"); + Endpoints[2466] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/commitmentPlans/{commitmentPlanName}/commitmentAssociations", "GET"); + Endpoints[2467] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/commitmentPlans/{commitmentPlanName}/usageHistory", "GET"); + Endpoints[2468] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/webServices/{webServiceName}/CreateRegionalBlob", "POST"); + Endpoints[2469] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/webServices/{webServiceName}/listKeys", "GET"); + Endpoints[2470] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/workspaces/{workspaceName}/listWorkspaceKeys", "POST"); + Endpoints[2471] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/workspaces/{workspaceName}/resyncStorageKeys", "POST"); + Endpoints[2472] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningCompute/operationalizationClusters/{clusterName}/checkSystemServicesUpdatesAvailable", "POST"); + Endpoints[2473] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningCompute/operationalizationClusters/{clusterName}/checkUpdate", "POST"); + Endpoints[2474] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningCompute/operationalizationClusters/{clusterName}/listKeys", "POST"); + Endpoints[2475] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningCompute/operationalizationClusters/{clusterName}/updateSystem", "POST"); + Endpoints[2476] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningCompute/operationalizationClusters/{clusterName}/updateSystemServices", "POST"); + Endpoints[2477] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningExperimentation/accounts/{accountName}/workspaces", "GET"); + Endpoints[2478] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningServices/workspaces/{workspaceName}/listKeys", "POST"); + Endpoints[2479] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningServices/workspaces/{workspaceName}/resyncKeys", "POST"); + Endpoints[2480] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Maps/accounts/{accountName}/listKeys", "POST"); + Endpoints[2481] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Maps/accounts/{accountName}/regenerateKey", "POST"); + Endpoints[2482] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/assets", "GET"); + Endpoints[2483] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/contentKeyPolicies", "GET"); + Endpoints[2484] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/liveEvents", "GET"); + Endpoints[2485] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/streamingEndpoints", "GET"); + Endpoints[2486] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/streamingLocators", "GET"); + Endpoints[2487] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/streamingPolicies", "GET"); + Endpoints[2488] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/transforms", "GET"); + Endpoints[2489] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{mediaServiceName}/listKeys", "POST"); + Endpoints[2490] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{mediaServiceName}/regenerateKey", "POST"); + Endpoints[2491] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{mediaServiceName}/syncStorageKeys", "POST"); + Endpoints[2492] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/assessments", "GET"); + Endpoints[2493] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/groups", "GET"); + Endpoints[2494] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/keys", "POST"); + Endpoints[2495] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/machines", "GET"); + Endpoints[2496] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendhealth", "POST"); + Endpoints[2497] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/start", "POST"); + Endpoints[2498] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/stop", "POST"); + Endpoints[2499] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey", "GET"); + Endpoints[2500] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey", "PUT"); + Endpoints[2501] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/vpndeviceconfigurationscript", "POST"); + Endpoints[2502] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones/{zoneName}/all", "GET"); + Endpoints[2503] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones/{zoneName}/recordsets", "GET"); + Endpoints[2504] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/arpTable", "GET"); + Endpoints[2505] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations", "GET"); + Endpoints[2506] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings", "GET"); + Endpoints[2507] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/routesTable", "GET"); + Endpoints[2508] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/stats", "GET"); + Endpoints[2509] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings", "GET"); + Endpoints[2510] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools", "GET"); + Endpoints[2511] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/frontendIPConfigurations", "GET"); + Endpoints[2512] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules", "GET"); + Endpoints[2513] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/loadBalancingRules", "GET"); + Endpoints[2514] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/networkInterfaces", "GET"); + Endpoints[2515] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/probes", "GET"); + Endpoints[2516] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/effectiveNetworkSecurityGroups", "POST"); + Endpoints[2517] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/effectiveRouteTable", "POST"); + Endpoints[2518] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/ipConfigurations", "GET"); + Endpoints[2519] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/loadBalancers", "GET"); + Endpoints[2520] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/defaultSecurityRules", "GET"); + Endpoints[2521] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules", "GET"); + Endpoints[2522] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/availableProvidersList", "POST"); + Endpoints[2523] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/azureReachabilityReport", "POST"); + Endpoints[2524] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/configureFlowLog", "POST"); + Endpoints[2525] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors", "GET"); + Endpoints[2526] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectivityCheck", "POST"); + Endpoints[2527] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/ipFlowVerify", "POST"); + Endpoints[2528] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/nextHop", "POST"); + Endpoints[2529] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures", "GET"); + Endpoints[2530] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/queryFlowLogStatus", "POST"); + Endpoints[2531] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/queryTroubleshootResult", "POST"); + Endpoints[2532] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/securityGroupView", "POST"); + Endpoints[2533] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/topology", "POST"); + Endpoints[2534] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/troubleshoot", "POST"); + Endpoints[2535] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules", "GET"); + Endpoints[2536] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes", "GET"); + Endpoints[2537] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/connections", "GET"); + Endpoints[2538] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/generatevpnclientpackage", "POST"); + Endpoints[2539] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/generatevpnprofile", "POST"); + Endpoints[2540] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getAdvertisedRoutes", "POST"); + Endpoints[2541] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getBgpPeerStatus", "POST"); + Endpoints[2542] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getLearnedRoutes", "POST"); + Endpoints[2543] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getvpnclientipsecparameters", "POST"); + Endpoints[2544] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getvpnprofilepackageurl", "POST"); + Endpoints[2545] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/reset", "POST"); + Endpoints[2546] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/setvpnclientipsecparameters", "POST"); + Endpoints[2547] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/supportedvpndevices", "POST"); + Endpoints[2548] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/CheckIPAddressAvailability", "GET"); + Endpoints[2549] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets", "GET"); + Endpoints[2550] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/usages", "GET"); + Endpoints[2551] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings", "GET"); + Endpoints[2552] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/AuthorizationRules", "POST"); + Endpoints[2553] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/AuthorizationRules", "GET"); + Endpoints[2554] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/checkNotificationHubAvailability", "POST"); + Endpoints[2555] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs", "GET"); + Endpoints[2556] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataSources", "GET"); + Endpoints[2557] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/intelligencePacks", "GET"); + Endpoints[2558] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedServices", "GET"); + Endpoints[2559] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/managementGroups", "GET"); + Endpoints[2560] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/purge", "POST"); + Endpoints[2561] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/savedSearches", "GET"); + Endpoints[2562] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/schema", "POST"); + Endpoints[2563] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/search", "POST"); + Endpoints[2564] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/sharedKeys", "POST"); + Endpoints[2565] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/storageInsightConfigs", "GET"); + Endpoints[2566] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/usages", "GET"); + Endpoints[2567] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyEvents/{policyEventsResource}/queryResults", "POST"); + Endpoints[2568] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/{policyStatesResource}/queryResults", "POST"); + Endpoints[2569] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/{policyStatesSummaryResource}/summarize", "POST"); + Endpoints[2570] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBI/workspaceCollections/{workspaceCollectionName}/listKeys", "POST"); + Endpoints[2571] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBI/workspaceCollections/{workspaceCollectionName}/regenerateKey", "POST"); + Endpoints[2572] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBI/workspaceCollections/{workspaceCollectionName}/workspaces", "GET"); + Endpoints[2573] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBIDedicated/capacities/{dedicatedCapacityName}/resume", "POST"); + Endpoints[2574] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBIDedicated/capacities/{dedicatedCapacityName}/skus", "GET"); + Endpoints[2575] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBIDedicated/capacities/{dedicatedCapacityName}/suspend", "POST"); + Endpoints[2576] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationAlertSettings", "GET"); + Endpoints[2577] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationEvents", "GET"); + Endpoints[2578] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics", "GET"); + Endpoints[2579] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationJobs", "GET"); + Endpoints[2580] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationNetworkMappings", "GET"); + Endpoints[2581] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationNetworks", "GET"); + Endpoints[2582] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationPolicies", "GET"); + Endpoints[2583] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationProtectedItems", "GET"); + Endpoints[2584] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationProtectionContainerMappings", "GET"); + Endpoints[2585] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationProtectionContainers", "GET"); + Endpoints[2586] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationRecoveryPlans", "GET"); + Endpoints[2587] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationRecoveryServicesProviders", "GET"); + Endpoints[2588] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationStorageClassificationMappings", "GET"); + Endpoints[2589] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationStorageClassifications", "GET"); + Endpoints[2590] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationVaultHealth", "GET"); + Endpoints[2591] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationvCenters", "GET"); + Endpoints[2592] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupEngines", "GET"); + Endpoints[2593] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupJobs", "GET"); + Endpoints[2594] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupJobsExport", "POST"); + Endpoints[2595] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupPolicies", "GET"); + Endpoints[2596] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupProtectableItems", "GET"); + Endpoints[2597] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupProtectedItems", "GET"); + Endpoints[2598] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupProtectionContainers", "GET"); + Endpoints[2599] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupSecurityPIN", "POST"); + Endpoints[2600] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupUsageSummaries", "GET"); + Endpoints[2601] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/replicationUsages", "GET"); + Endpoints[2602] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/usages", "GET"); + Endpoints[2603] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/authorizationRules", "GET"); + Endpoints[2604] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/AuthorizationRules", "POST"); + Endpoints[2605] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/hybridConnections", "GET"); + Endpoints[2606] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/wcfRelays", "GET"); + Endpoints[2607] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel", "POST"); + Endpoints[2608] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate", "POST"); + Endpoints[2609] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/validate", "POST"); + Endpoints[2610] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Scheduler/jobCollections/{jobCollectionName}/disable", "POST"); + Endpoints[2611] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Scheduler/jobCollections/{jobCollectionName}/enable", "POST"); + Endpoints[2612] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Scheduler/jobCollections/{jobCollectionName}/jobs", "GET"); + Endpoints[2613] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Search/searchServices/{searchServiceName}/listAdminKeys", "POST"); + Endpoints[2614] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Search/searchServices/{searchServiceName}/listQueryKeys", "GET"); + Endpoints[2615] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/alerts", "GET"); + Endpoints[2616] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/jitNetworkAccessPolicies", "GET"); + Endpoints[2617] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/tasks", "GET"); + Endpoints[2618] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/gateways/{gatewayName}/profile", "POST"); + Endpoints[2619] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/gateways/{gatewayName}/regenerateprofile", "POST"); + Endpoints[2620] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/gateways/{gatewayName}/upgradetolatest", "POST"); + Endpoints[2621] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/AuthorizationRules", "POST"); + Endpoints[2622] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/AuthorizationRules", "GET"); + Endpoints[2623] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/disasterRecoveryConfigs", "GET"); + Endpoints[2624] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/eventhubs", "GET"); + Endpoints[2625] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/messagingplan", "GET"); + Endpoints[2626] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/messagingplan", "PUT"); + Endpoints[2627] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/migrationConfigurations", "GET"); + Endpoints[2628] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/queues", "GET"); + Endpoints[2629] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics", "GET"); + Endpoints[2630] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications", "GET"); + Endpoints[2631] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes", "GET"); + Endpoints[2632] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/SignalR/{resourceName}/listKeys", "POST"); + Endpoints[2633] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/SignalR/{resourceName}/regenerateKey", "POST"); + Endpoints[2634] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/locations/{locationName}/instanceFailoverGroups", "GET"); + Endpoints[2635] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}/databases", "GET"); + Endpoints[2636] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/administrators", "GET"); + Endpoints[2637] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/advisors", "GET"); + Endpoints[2638] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/auditingPolicies", "GET"); + Endpoints[2639] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/backupLongTermRetentionVaults", "GET"); + Endpoints[2640] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/communicationLinks", "GET"); + Endpoints[2641] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases", "GET"); + Endpoints[2642] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/disasterRecoveryConfiguration", "GET"); + Endpoints[2643] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/dnsAliases", "GET"); + Endpoints[2644] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/elasticPools", "GET"); + Endpoints[2645] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/encryptionProtector", "GET"); + Endpoints[2646] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/failoverGroups", "GET"); + Endpoints[2647] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/firewallRules", "PUT"); + Endpoints[2648] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/firewallRules", "GET"); + Endpoints[2649] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/import", "POST"); + Endpoints[2650] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents", "GET"); + Endpoints[2651] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/keys", "GET"); + Endpoints[2652] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/recommendedElasticPools", "GET"); + Endpoints[2653] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/recoverableDatabases", "GET"); + Endpoints[2654] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/restorableDroppedDatabases", "GET"); + Endpoints[2655] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/serviceObjectives", "GET"); + Endpoints[2656] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/syncAgents", "GET"); + Endpoints[2657] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/usages", "GET"); + Endpoints[2658] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/virtualNetworkRules", "GET"); + Endpoints[2659] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/acquisitions", "GET"); + Endpoints[2660] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/metricdefinitions", "GET"); + Endpoints[2661] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/metrics", "GET"); + Endpoints[2662] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/ondemandgc", "POST"); + Endpoints[2663] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/shares", "GET"); + Endpoints[2664] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/storageaccounts", "GET"); + Endpoints[2665] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/ListAccountSas", "POST"); + Endpoints[2666] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/listKeys", "POST"); + Endpoints[2667] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/ListServiceSas", "POST"); + Endpoints[2668] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/regenerateKey", "POST"); + Endpoints[2669] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/accessControlRecords", "GET"); + Endpoints[2670] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/alerts", "GET"); + Endpoints[2671] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/bandwidthSettings", "GET"); + Endpoints[2672] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/clearAlerts", "POST"); + Endpoints[2673] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/cloudApplianceConfigurations", "GET"); + Endpoints[2674] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/configureDevice", "POST"); + Endpoints[2675] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices", "GET"); + Endpoints[2676] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/features", "GET"); + Endpoints[2677] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/jobs", "GET"); + Endpoints[2678] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/listActivationKey", "POST"); + Endpoints[2679] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/listPublicEncryptionKey", "POST"); + Endpoints[2680] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/metrics", "GET"); + Endpoints[2681] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/metricsDefinitions", "GET"); + Endpoints[2682] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/provisionCloudAppliance", "POST"); + Endpoints[2683] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/regenerateActivationKey", "POST"); + Endpoints[2684] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/storageAccountCredentials", "GET"); + Endpoints[2685] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/functions", "GET"); + Endpoints[2686] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/inputs", "GET"); + Endpoints[2687] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/outputs", "GET"); + Endpoints[2688] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/start", "POST"); + Endpoints[2689] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/stop", "POST"); + Endpoints[2690] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/offers/{offer}/link", "POST"); + Endpoints[2691] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/offers/{offer}/MetricDefinitions", "GET"); + Endpoints[2692] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/offers/{offer}/Metrics", "GET"); + Endpoints[2693] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/offers/{offer}/offerDelegations", "GET"); + Endpoints[2694] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/offers/{offer}/unlink", "POST"); + Endpoints[2695] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/plans/{plan}/MetricDefinitions", "GET"); + Endpoints[2696] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/plans/{plan}/Metrics", "GET"); + Endpoints[2697] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}/accessPolicies", "GET"); + Endpoints[2698] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}/eventSources", "GET"); + Endpoints[2699] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}/referenceDataSets", "GET"); + Endpoints[2700] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Update.Admin/updateLocations/{updateLocation}/updates", "GET"); + Endpoints[2701] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{accountResourceName}/extension", "GET"); + Endpoints[2702] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{rootResourceName}/project", "GET"); + Endpoints[2703] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web.Admin/environments/{environmentName}/usage", "GET"); + Endpoints[2704] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/connections/{connectionName}/confirmConsentCode", "POST"); + Endpoints[2705] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/connections/{connectionName}/listConnectionKeys", "POST"); + Endpoints[2706] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/connections/{connectionName}/listConsentLinks", "POST"); + Endpoints[2707] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/customApis/{apiName}/move", "POST"); + Endpoints[2708] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/changeVirtualNetwork", "POST"); + Endpoints[2709] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/detectors", "GET"); + Endpoints[2710] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/diagnostics", "GET"); + Endpoints[2711] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/metricdefinitions", "GET"); + Endpoints[2712] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/metrics", "GET"); + Endpoints[2713] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools", "GET"); + Endpoints[2714] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/operations", "GET"); + Endpoints[2715] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/reboot", "POST"); + Endpoints[2716] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/resume", "POST"); + Endpoints[2717] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/serverfarms", "GET"); + Endpoints[2718] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/sites", "GET"); + Endpoints[2719] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/suspend", "POST"); + Endpoints[2720] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/syncVirtualNetwork", "POST"); + Endpoints[2721] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/usages", "GET"); + Endpoints[2722] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/webhostingplans", "GET"); + Endpoints[2723] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools", "GET"); + Endpoints[2724] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/managedHostingEnvironments/{name}/serverfarms", "GET"); + Endpoints[2725] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/managedHostingEnvironments/{name}/sites", "GET"); + Endpoints[2726] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/managedHostingEnvironments/{name}/webhostingplans", "GET"); + Endpoints[2727] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/capabilities", "GET"); + Endpoints[2728] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/hybridConnectionRelays", "GET"); + Endpoints[2729] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/metricdefinitions", "GET"); + Endpoints[2730] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/metrics", "GET"); + Endpoints[2731] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/restartSites", "POST"); + Endpoints[2732] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/sites", "GET"); + Endpoints[2733] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/skus", "GET"); + Endpoints[2734] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/usages", "GET"); + Endpoints[2735] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/virtualNetworkConnections", "GET"); + Endpoints[2736] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/analyzeCustomHostname", "GET"); + Endpoints[2737] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/applySlotConfig", "POST"); + Endpoints[2738] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/backup", "POST"); + Endpoints[2739] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/backups", "GET"); + Endpoints[2740] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config", "GET"); + Endpoints[2741] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/containerlogs", "POST"); + Endpoints[2742] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/continuouswebjobs", "GET"); + Endpoints[2743] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/deployments", "GET"); + Endpoints[2744] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/domainOwnershipIdentifiers", "GET"); + Endpoints[2745] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/functions", "GET"); + Endpoints[2746] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hostNameBindings", "GET"); + Endpoints[2747] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridconnection", "GET"); + Endpoints[2748] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridConnectionRelays", "GET"); + Endpoints[2749] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances", "GET"); + Endpoints[2750] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/iscloneable", "POST"); + Endpoints[2751] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/listsyncfunctiontriggerstatus", "POST"); + Endpoints[2752] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/metricdefinitions", "GET"); + Endpoints[2753] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/metrics", "GET"); + Endpoints[2754] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/migrate", "PUT"); + Endpoints[2755] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/migratemysql", "POST"); + Endpoints[2756] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/newpassword", "POST"); + Endpoints[2757] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/perfcounters", "GET"); + Endpoints[2758] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/phplogging", "GET"); + Endpoints[2759] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/premieraddons", "GET"); + Endpoints[2760] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/processes", "GET"); + Endpoints[2761] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/publicCertificates", "GET"); + Endpoints[2762] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/publishxml", "POST"); + Endpoints[2763] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/recover", "POST"); + Endpoints[2764] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/resetSlotConfig", "POST"); + Endpoints[2765] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/resourceHealthMetadata", "GET"); + Endpoints[2766] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/restart", "POST"); + Endpoints[2767] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/restoreFromBackupBlob", "POST"); + Endpoints[2768] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/restoreFromDeletedApp", "POST"); + Endpoints[2769] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/restoreSnapshot", "POST"); + Endpoints[2770] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/siteextensions", "GET"); + Endpoints[2771] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots", "GET"); + Endpoints[2772] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slotsdiffs", "POST"); + Endpoints[2773] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slotsswap", "POST"); + Endpoints[2774] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/snapshots", "GET"); + Endpoints[2775] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/snapshots", "PUT"); + Endpoints[2776] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/start", "POST"); + Endpoints[2777] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/stop", "POST"); + Endpoints[2778] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/sync", "POST"); + Endpoints[2779] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/syncfunctiontriggers", "POST"); + Endpoints[2780] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/triggeredwebjobs", "GET"); + Endpoints[2781] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/usages", "GET"); + Endpoints[2782] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/virtualNetworkConnections", "GET"); + Endpoints[2783] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/webjobs", "GET"); + Endpoints[2784] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/detectors", "GET"); + Endpoints[2785] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/diagnostics", "GET"); + Endpoints[2786] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/recommendationHistory", "GET"); + Endpoints[2787] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/recommendations", "GET"); + Endpoints[2788] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/portalsettings/delegation", "PUT"); + Endpoints[2789] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/portalsettings/delegation", "PATCH"); + Endpoints[2790] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/portalsettings/delegation", "HEAD"); + Endpoints[2791] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/portalsettings/delegation", "GET"); + Endpoints[2792] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/portalsettings/signin", "PATCH"); + Endpoints[2793] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/portalsettings/signin", "PUT"); + Endpoints[2794] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/portalsettings/signin", "GET"); + Endpoints[2795] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/portalsettings/signin", "HEAD"); + Endpoints[2796] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/portalsettings/signup", "PUT"); + Endpoints[2797] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/portalsettings/signup", "GET"); + Endpoints[2798] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/portalsettings/signup", "HEAD"); + Endpoints[2799] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/portalsettings/signup", "PATCH"); + Endpoints[2800] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/reports/byApi", "GET"); + Endpoints[2801] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/reports/byGeo", "GET"); + Endpoints[2802] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/reports/byOperation", "GET"); + Endpoints[2803] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/reports/byProduct", "GET"); + Endpoints[2804] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/reports/byRequest", "GET"); + Endpoints[2805] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/reports/bySubscription", "GET"); + Endpoints[2806] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/reports/byTime", "GET"); + Endpoints[2807] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/reports/byUser", "GET"); + Endpoints[2808] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/access", "GET"); + Endpoints[2809] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/access", "PATCH"); + Endpoints[2810] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/policy", "GET"); + Endpoints[2811] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/policy", "DELETE"); + Endpoints[2812] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/policy", "PUT"); + Endpoints[2813] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/agentRegistrationInformation/regenerateKey", "POST"); + Endpoints[2814] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/webhooks/generateUri", "POST"); + Endpoints[2815] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}/patchSchedules/default", "PUT"); + Endpoints[2816] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}/patchSchedules/default", "DELETE"); + Endpoints[2817] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}/patchSchedules/default", "GET"); + Endpoints[2818] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/rollingUpgrades/cancel", "POST"); + Endpoints[2819] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/rollingUpgrades/latest", "GET"); + Endpoints[2820] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/upgradeProfiles/default", "GET"); + Endpoints[2821] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/images/getDataImageUploadUrl", "POST"); + Endpoints[2822] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/images/getEntityTypeImageUploadUrl", "POST"); + Endpoints[2823] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/percentile/metrics", "GET"); + Endpoints[2824] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/clusters/{clusterName}/quotaConfiguration/default", "PATCH"); + Endpoints[2825] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/clusters/{clusterName}/quotaConfiguration/default", "GET"); + Endpoints[2826] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/disasterRecoveryConfigs/CheckNameAvailability", "POST"); + Endpoints[2827] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/extensions/clustermonitoring", "GET"); + Endpoints[2828] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/extensions/clustermonitoring", "PUT"); + Endpoints[2829] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/extensions/clustermonitoring", "DELETE"); + Endpoints[2830] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/components/{resourceName}/pricingPlans/current", "PATCH"); + Endpoints[2831] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/components/{resourceName}/pricingPlans/current", "PUT"); + Endpoints[2832] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/components/{resourceName}/pricingPlans/current", "GET"); + Endpoints[2833] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey/reset", "POST"); + Endpoints[2834] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationJobs/export", "POST"); + Endpoints[2835] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupconfig/vaultconfig", "GET"); + Endpoints[2836] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupconfig/vaultconfig", "PATCH"); + Endpoints[2837] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupstorageconfig/vaultstorageconfig", "PATCH"); + Endpoints[2838] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupstorageconfig/vaultstorageconfig", "GET"); + Endpoints[2839] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo", "PATCH"); + Endpoints[2840] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo", "PUT"); + Endpoints[2841] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo", "GET"); + Endpoints[2842] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/disasterRecoveryConfigs/CheckNameAvailability", "POST"); + Endpoints[2843] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/automaticTuning/current", "GET"); + Endpoints[2844] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/automaticTuning/current", "PATCH"); + Endpoints[2845] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/encryptionSettings/default", "GET"); + Endpoints[2846] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/extendedInformation/vaultExtendedInfo", "DELETE"); + Endpoints[2847] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/extendedInformation/vaultExtendedInfo", "PATCH"); + Endpoints[2848] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/extendedInformation/vaultExtendedInfo", "PUT"); + Endpoints[2849] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/extendedInformation/vaultExtendedInfo", "GET"); + Endpoints[2850] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/capacities/compute", "GET"); + Endpoints[2851] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/capacities/virtualip", "GET"); + Endpoints[2852] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools/default", "PUT"); + Endpoints[2853] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools/default", "PATCH"); + Endpoints[2854] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools/default", "GET"); + Endpoints[2855] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/managedHostingEnvironments/{name}/capacities/virtualip", "GET"); + Endpoints[2856] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/hybridConnectionPlanLimits/limit", "GET"); + Endpoints[2857] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/backups/discover", "PUT"); + Endpoints[2858] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/appsettings", "PUT"); + Endpoints[2859] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/authsettings", "PUT"); + Endpoints[2860] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/backup", "DELETE"); + Endpoints[2861] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/backup", "PUT"); + Endpoints[2862] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/connectionstrings", "PUT"); + Endpoints[2863] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/logs", "PUT"); + Endpoints[2864] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/logs", "GET"); + Endpoints[2865] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/metadata", "PUT"); + Endpoints[2866] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/pushsettings", "PUT"); + Endpoints[2867] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/slotConfigNames", "PUT"); + Endpoints[2868] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/slotConfigNames", "GET"); + Endpoints[2869] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/web", "PUT"); + Endpoints[2870] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/web", "GET"); + Endpoints[2871] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/web", "PATCH"); + Endpoints[2872] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/extensions/MSDeploy", "PUT"); + Endpoints[2873] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/extensions/MSDeploy", "GET"); + Endpoints[2874] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/migratemysql/status", "GET"); + Endpoints[2875] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkTrace/start", "POST"); + Endpoints[2876] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkTrace/stop", "POST"); + Endpoints[2877] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/privateAccess/virtualNetworks", "PUT"); + Endpoints[2878] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/privateAccess/virtualNetworks", "GET"); + Endpoints[2879] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/resourceHealthMetadata/default", "GET"); + Endpoints[2880] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/sourcecontrols/web", "PATCH"); + Endpoints[2881] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/sourcecontrols/web", "DELETE"); + Endpoints[2882] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/sourcecontrols/web", "GET"); + Endpoints[2883] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/sourcecontrols/web", "PUT"); + Endpoints[2884] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/recommendations/disable", "POST"); + Endpoints[2885] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/recommendations/reset", "POST"); + Endpoints[2886] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/access/git", "GET"); + Endpoints[2887] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/access/regeneratePrimaryKey", "POST"); + Endpoints[2888] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/access/regenerateSecondaryKey", "POST"); + Endpoints[2889] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/configuration/deploy", "POST"); + Endpoints[2890] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/configuration/save", "POST"); + Endpoints[2891] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/configuration/syncState", "GET"); + Endpoints[2892] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/configuration/validate", "POST"); + Endpoints[2893] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{iotHubName}/routing/routes/$testall", "POST"); + Endpoints[2894] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{iotHubName}/routing/routes/$testnew", "POST"); + Endpoints[2895] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/generateMap", "POST"); + Endpoints[2896] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machineGroups", "GET"); + Endpoints[2897] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machineGroups", "POST"); + Endpoints[2898] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machines", "GET"); + Endpoints[2899] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationVaultHealth/default/refresh", "POST"); + Endpoints[2900] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers", "GET"); + Endpoints[2901] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools/default/metricdefinitions", "GET"); + Endpoints[2902] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools/default/metrics", "GET"); + Endpoints[2903] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools/default/skus", "GET"); + Endpoints[2904] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools/default/usages", "GET"); + Endpoints[2905] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/appsettings/list", "POST"); + Endpoints[2906] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/authsettings/list", "POST"); + Endpoints[2907] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/backup/list", "POST"); + Endpoints[2908] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/connectionstrings/list", "POST"); + Endpoints[2909] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/metadata/list", "POST"); + Endpoints[2910] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/publishingcredentials/list", "POST"); + Endpoints[2911] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/pushsettings/list", "POST"); + Endpoints[2912] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/web/snapshots", "GET"); + Endpoints[2913] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/containerlogs/zip/download", "POST"); + Endpoints[2914] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/extensions/MSDeploy/log", "GET"); + Endpoints[2915] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/functions/admin/token", "GET"); + Endpoints[2916] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/access/git/regeneratePrimaryKey", "POST"); + Endpoints[2917] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/access/git/regenerateSecondaryKey", "POST"); + Endpoints[2918] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/summaries/machines", "GET"); + Endpoints[2919] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/clientGroups/{clientGroupName}", "GET"); + Endpoints[2920] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machineGroups/{machineGroupName}", "GET"); + Endpoints[2921] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machineGroups/{machineGroupName}", "DELETE"); + Endpoints[2922] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machineGroups/{machineGroupName}", "PUT"); + Endpoints[2923] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machines/{machineName}", "GET"); + Endpoints[2924] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}", "PATCH"); + Endpoints[2925] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}", "GET"); + Endpoints[2926] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}", "DELETE"); + Endpoints[2927] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}", "PUT"); + Endpoints[2928] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/web/snapshots/{snapshotId}", "GET"); + Endpoints[2929] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/clientGroups/{clientGroupName}/members", "GET"); + Endpoints[2930] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/clientGroups/{clientGroupName}/membersCount", "GET"); + Endpoints[2931] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machines/{machineName}/connections", "GET"); + Endpoints[2932] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machines/{machineName}/liveness", "GET"); + Endpoints[2933] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machines/{machineName}/machineGroups", "GET"); + Endpoints[2934] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machines/{machineName}/ports", "GET"); + Endpoints[2935] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machines/{machineName}/processes", "GET"); + Endpoints[2936] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/clearLegalHold", "POST"); + Endpoints[2937] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/setLegalHold", "POST"); + Endpoints[2938] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools/default/instances/{instance}/metricdefinitions", "GET"); + Endpoints[2939] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/multiRolePools/default/instances/{instance}/metrics", "GET"); + Endpoints[2940] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/web/snapshots/{snapshotId}/recover", "POST"); + Endpoints[2941] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies/default/extend", "POST"); + Endpoints[2942] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies/default/lock", "POST"); + Endpoints[2943] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machines/{machineName}/ports/{portName}", "GET"); + Endpoints[2944] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machines/{machineName}/processes/{processName}", "GET"); + Endpoints[2945] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies/{immutabilityPolicyName}", "GET"); + Endpoints[2946] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies/{immutabilityPolicyName}", "PUT"); + Endpoints[2947] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies/{immutabilityPolicyName}", "DELETE"); + Endpoints[2948] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machines/{machineName}/ports/{portName}/acceptingProcesses", "GET"); + Endpoints[2949] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machines/{machineName}/ports/{portName}/connections", "GET"); + Endpoints[2950] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machines/{machineName}/ports/{portName}/liveness", "GET"); + Endpoints[2951] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machines/{machineName}/processes/{processName}/acceptingPorts", "GET"); + Endpoints[2952] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machines/{machineName}/processes/{processName}/connections", "GET"); + Endpoints[2953] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/features/serviceMap/machines/{machineName}/processes/{processName}/liveness", "GET"); + Endpoints[2954] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupJobs/operationResults/{operationId}", "GET"); + Endpoints[2955] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/shares/operationresults/{operationId}", "POST"); + Endpoints[2956] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/shares/operationresults/{operationId}", "GET"); + Endpoints[2957] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroup/{resourceGroupName}/providers/Microsoft.MachineLearningServices/workspaces/{workspaceName}/computes/{computeName}", "PUT"); + Endpoints[2958] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroup/{resourceGroupName}/providers/Microsoft.MachineLearningServices/workspaces/{workspaceName}/computes/{computeName}", "DELETE"); + Endpoints[2959] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroup/{resourceGroupName}/providers/Microsoft.MachineLearningServices/workspaces/{workspaceName}/computes/{computeName}", "GET"); + Endpoints[2960] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}/projects/{projectName}", "PATCH"); + Endpoints[2961] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}/projects/{projectName}", "DELETE"); + Endpoints[2962] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}/projects/{projectName}", "GET"); + Endpoints[2963] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}/projects/{projectName}", "PUT"); + Endpoints[2964] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}/projects/{projectName}", "PARAMETERS"); + Endpoints[2965] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroup}/providers/Microsoft.AzureBridge.Admin/activations/{activationName}/downloadedProducts/{productName}", "GET"); + Endpoints[2966] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroup}/providers/Microsoft.AzureBridge.Admin/activations/{activationName}/downloadedProducts/{productName}", "DELETE"); + Endpoints[2967] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroup}/providers/Microsoft.AzureBridge.Admin/activations/{activationName}/products/{productName}", "GET"); + Endpoints[2968] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.AzureStack/registrations/{registrationName}/customerSubscriptions/{customerSubscriptionName}", "PUT"); + Endpoints[2969] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.AzureStack/registrations/{registrationName}/customerSubscriptions/{customerSubscriptionName}", "GET"); + Endpoints[2970] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.AzureStack/registrations/{registrationName}/customerSubscriptions/{customerSubscriptionName}", "DELETE"); + Endpoints[2971] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.AzureStack/registrations/{registrationName}/products/{productName}", "GET"); + Endpoints[2972] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}", "PATCH"); + Endpoints[2973] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}", "DELETE"); + Endpoints[2974] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}", "HEAD"); + Endpoints[2975] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}", "GET"); + Endpoints[2976] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}", "PUT"); + Endpoints[2977] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/api-version-sets/{versionSetId}", "HEAD"); + Endpoints[2978] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/api-version-sets/{versionSetId}", "DELETE"); + Endpoints[2979] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/api-version-sets/{versionSetId}", "GET"); + Endpoints[2980] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/api-version-sets/{versionSetId}", "PUT"); + Endpoints[2981] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/api-version-sets/{versionSetId}", "PATCH"); + Endpoints[2982] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/api-version-sets/{versionSetId}", "PARAMETERS"); + Endpoints[2983] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/authorizationServers/{authsid}", "HEAD"); + Endpoints[2984] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/authorizationServers/{authsid}", "GET"); + Endpoints[2985] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/authorizationServers/{authsid}", "DELETE"); + Endpoints[2986] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/authorizationServers/{authsid}", "PATCH"); + Endpoints[2987] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/authorizationServers/{authsid}", "PUT"); + Endpoints[2988] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/backends/{backendid}", "PUT"); + Endpoints[2989] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/backends/{backendid}", "GET"); + Endpoints[2990] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/backends/{backendid}", "PATCH"); + Endpoints[2991] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/backends/{backendid}", "DELETE"); + Endpoints[2992] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/backends/{backendid}", "HEAD"); + Endpoints[2993] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/certificates/{certificateId}", "HEAD"); + Endpoints[2994] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/certificates/{certificateId}", "GET"); + Endpoints[2995] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/certificates/{certificateId}", "PUT"); + Endpoints[2996] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/certificates/{certificateId}", "DELETE"); + Endpoints[2997] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/diagnostics/{diagnosticId}", "HEAD"); + Endpoints[2998] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/diagnostics/{diagnosticId}", "GET"); + Endpoints[2999] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/diagnostics/{diagnosticId}", "PUT"); + Endpoints[3000] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/diagnostics/{diagnosticId}", "PATCH"); + Endpoints[3001] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/diagnostics/{diagnosticId}", "DELETE"); + Endpoints[3002] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/groups/{groupId}", "DELETE"); + Endpoints[3003] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/groups/{groupId}", "PATCH"); + Endpoints[3004] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/groups/{groupId}", "HEAD"); + Endpoints[3005] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/groups/{groupId}", "GET"); + Endpoints[3006] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/groups/{groupId}", "PUT"); + Endpoints[3007] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/identityProviders/{identityProviderName}", "HEAD"); + Endpoints[3008] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/identityProviders/{identityProviderName}", "GET"); + Endpoints[3009] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/identityProviders/{identityProviderName}", "DELETE"); + Endpoints[3010] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/identityProviders/{identityProviderName}", "PUT"); + Endpoints[3011] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/identityProviders/{identityProviderName}", "PATCH"); + Endpoints[3012] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/loggers/{loggerid}", "PUT"); + Endpoints[3013] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/loggers/{loggerid}", "GET"); + Endpoints[3014] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/loggers/{loggerid}", "HEAD"); + Endpoints[3015] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/loggers/{loggerid}", "PATCH"); + Endpoints[3016] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/loggers/{loggerid}", "DELETE"); + Endpoints[3017] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/notifications/{notificationName}", "PUT"); + Endpoints[3018] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/notifications/{notificationName}", "GET"); + Endpoints[3019] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/openidConnectProviders/{opid}", "GET"); + Endpoints[3020] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/openidConnectProviders/{opid}", "HEAD"); + Endpoints[3021] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/openidConnectProviders/{opid}", "PUT"); + Endpoints[3022] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/openidConnectProviders/{opid}", "PATCH"); + Endpoints[3023] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/openidConnectProviders/{opid}", "DELETE"); + Endpoints[3024] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/policies/{policyId}", "DELETE"); + Endpoints[3025] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/policies/{policyId}", "GET"); + Endpoints[3026] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/policies/{policyId}", "HEAD"); + Endpoints[3027] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/policies/{policyId}", "PUT"); + Endpoints[3028] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}", "DELETE"); + Endpoints[3029] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}", "PUT"); + Endpoints[3030] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}", "PATCH"); + Endpoints[3031] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}", "GET"); + Endpoints[3032] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}", "HEAD"); + Endpoints[3033] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/properties/{propId}", "GET"); + Endpoints[3034] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/properties/{propId}", "PUT"); + Endpoints[3035] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/properties/{propId}", "PATCH"); + Endpoints[3036] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/properties/{propId}", "DELETE"); + Endpoints[3037] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/properties/{propId}", "HEAD"); + Endpoints[3038] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/quotas/{quotaCounterKey}", "GET"); + Endpoints[3039] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/quotas/{quotaCounterKey}", "PATCH"); + Endpoints[3040] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/reports/{aggregation}", "GET"); + Endpoints[3041] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/subscriptions/{sid}", "DELETE"); + Endpoints[3042] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/subscriptions/{sid}", "HEAD"); + Endpoints[3043] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/subscriptions/{sid}", "GET"); + Endpoints[3044] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/subscriptions/{sid}", "PUT"); + Endpoints[3045] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/subscriptions/{sid}", "PATCH"); + Endpoints[3046] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tags/{tagId}", "HEAD"); + Endpoints[3047] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tags/{tagId}", "GET"); + Endpoints[3048] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tags/{tagId}", "DELETE"); + Endpoints[3049] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tags/{tagId}", "PATCH"); + Endpoints[3050] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tags/{tagId}", "PUT"); + Endpoints[3051] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/templates/{templateName}", "PATCH"); + Endpoints[3052] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/templates/{templateName}", "GET"); + Endpoints[3053] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/templates/{templateName}", "HEAD"); + Endpoints[3054] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/templates/{templateName}", "DELETE"); + Endpoints[3055] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/templates/{templateName}", "PUT"); + Endpoints[3056] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{accessName}", "GET"); + Endpoints[3057] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{accessName}", "PATCH"); + Endpoints[3058] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/users/{uid}", "DELETE"); + Endpoints[3059] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/users/{uid}", "PATCH"); + Endpoints[3060] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/users/{uid}", "HEAD"); + Endpoints[3061] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/users/{uid}", "GET"); + Endpoints[3062] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/users/{uid}", "PUT"); + Endpoints[3063] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/certificates/{certificateName}", "DELETE"); + Endpoints[3064] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/certificates/{certificateName}", "GET"); + Endpoints[3065] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/certificates/{certificateName}", "PUT"); + Endpoints[3066] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/certificates/{certificateName}", "PATCH"); + Endpoints[3067] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/compilationjobs/{compilationJobName}", "PUT"); + Endpoints[3068] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/compilationjobs/{compilationJobName}", "GET"); + Endpoints[3069] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/configurations/{configurationName}", "DELETE"); + Endpoints[3070] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/configurations/{configurationName}", "GET"); + Endpoints[3071] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/configurations/{configurationName}", "PUT"); + Endpoints[3072] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/configurations/{configurationName}", "PATCH"); + Endpoints[3073] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/connections/{connectionName}", "GET"); + Endpoints[3074] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/connections/{connectionName}", "PATCH"); + Endpoints[3075] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/connections/{connectionName}", "PUT"); + Endpoints[3076] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/connections/{connectionName}", "DELETE"); + Endpoints[3077] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/connectionTypes/{connectionTypeName}", "PUT"); + Endpoints[3078] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/connectionTypes/{connectionTypeName}", "DELETE"); + Endpoints[3079] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/connectionTypes/{connectionTypeName}", "GET"); + Endpoints[3080] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/credentials/{credentialName}", "PATCH"); + Endpoints[3081] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/credentials/{credentialName}", "GET"); + Endpoints[3082] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/credentials/{credentialName}", "DELETE"); + Endpoints[3083] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/credentials/{credentialName}", "PUT"); + Endpoints[3084] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/hybridRunbookWorkerGroups/{hybridRunbookWorkerGroupName}", "PATCH"); + Endpoints[3085] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/hybridRunbookWorkerGroups/{hybridRunbookWorkerGroupName}", "GET"); + Endpoints[3086] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/hybridRunbookWorkerGroups/{hybridRunbookWorkerGroupName}", "DELETE"); + Endpoints[3087] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/jobs/{jobId}", "PUT"); + Endpoints[3088] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/jobs/{jobId}", "GET"); + Endpoints[3089] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/jobSchedules/{jobScheduleId}", "GET"); + Endpoints[3090] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/jobSchedules/{jobScheduleId}", "PUT"); + Endpoints[3091] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/jobSchedules/{jobScheduleId}", "DELETE"); + Endpoints[3092] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/modules/{moduleName}", "GET"); + Endpoints[3093] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/modules/{moduleName}", "PUT"); + Endpoints[3094] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/modules/{moduleName}", "DELETE"); + Endpoints[3095] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/modules/{moduleName}", "PATCH"); + Endpoints[3096] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/nodeConfigurations/{nodeConfigurationName}", "GET"); + Endpoints[3097] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/nodeConfigurations/{nodeConfigurationName}", "DELETE"); + Endpoints[3098] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/nodeConfigurations/{nodeConfigurationName}", "PUT"); + Endpoints[3099] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/nodecounts/{countType}", "GET"); + Endpoints[3100] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/nodes/{nodeId}", "GET"); + Endpoints[3101] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/nodes/{nodeId}", "DELETE"); + Endpoints[3102] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/nodes/{nodeId}", "PATCH"); + Endpoints[3103] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/runbooks/{runbookName}", "GET"); + Endpoints[3104] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/runbooks/{runbookName}", "PUT"); + Endpoints[3105] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/runbooks/{runbookName}", "DELETE"); + Endpoints[3106] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/runbooks/{runbookName}", "PATCH"); + Endpoints[3107] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/schedules/{scheduleName}", "DELETE"); + Endpoints[3108] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/schedules/{scheduleName}", "GET"); + Endpoints[3109] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/schedules/{scheduleName}", "PATCH"); + Endpoints[3110] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/schedules/{scheduleName}", "PUT"); + Endpoints[3111] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/softwareUpdateConfigurationMachineRuns/{softwareUpdateConfigurationMachineRunId}", "GET"); + Endpoints[3112] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/softwareUpdateConfigurationRuns/{softwareUpdateConfigurationRunId}", "GET"); + Endpoints[3113] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/softwareUpdateConfigurations/{softwareUpdateConfigurationName}", "PUT"); + Endpoints[3114] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/softwareUpdateConfigurations/{softwareUpdateConfigurationName}", "GET"); + Endpoints[3115] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/softwareUpdateConfigurations/{softwareUpdateConfigurationName}", "DELETE"); + Endpoints[3116] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/sourceControls/{sourceControlName}", "GET"); + Endpoints[3117] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/sourceControls/{sourceControlName}", "PUT"); + Endpoints[3118] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/sourceControls/{sourceControlName}", "DELETE"); + Endpoints[3119] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/sourceControls/{sourceControlName}", "PATCH"); + Endpoints[3120] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/variables/{variableName}", "PATCH"); + Endpoints[3121] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/variables/{variableName}", "GET"); + Endpoints[3122] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/variables/{variableName}", "PUT"); + Endpoints[3123] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/variables/{variableName}", "DELETE"); + Endpoints[3124] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/watchers/{watcherName}", "DELETE"); + Endpoints[3125] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/watchers/{watcherName}", "PATCH"); + Endpoints[3126] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/watchers/{watcherName}", "GET"); + Endpoints[3127] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/watchers/{watcherName}", "PUT"); + Endpoints[3128] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/webhooks/{webhookName}", "PUT"); + Endpoints[3129] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/webhooks/{webhookName}", "GET"); + Endpoints[3130] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/webhooks/{webhookName}", "PATCH"); + Endpoints[3131] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/webhooks/{webhookName}", "DELETE"); + Endpoints[3132] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Backup.Admin/backupLocations/{location}/backups/{backup}", "GET"); + Endpoints[3133] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/applications/{applicationId}", "PATCH"); + Endpoints[3134] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/applications/{applicationId}", "GET"); + Endpoints[3135] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/applications/{applicationId}", "DELETE"); + Endpoints[3136] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/applications/{applicationId}", "PUT"); + Endpoints[3137] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/certificates/{certificateName}", "PATCH"); + Endpoints[3138] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/certificates/{certificateName}", "GET"); + Endpoints[3139] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/certificates/{certificateName}", "DELETE"); + Endpoints[3140] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/certificates/{certificateName}", "PUT"); + Endpoints[3141] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/pools/{poolName}", "GET"); + Endpoints[3142] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/pools/{poolName}", "PATCH"); + Endpoints[3143] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/pools/{poolName}", "PUT"); + Endpoints[3144] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/pools/{poolName}", "DELETE"); + Endpoints[3145] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/clusters/{clusterName}", "PUT"); + Endpoints[3146] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/clusters/{clusterName}", "PATCH"); + Endpoints[3147] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/clusters/{clusterName}", "GET"); + Endpoints[3148] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/clusters/{clusterName}", "DELETE"); + Endpoints[3149] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/experiments/{experimentName}", "GET"); + Endpoints[3150] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/experiments/{experimentName}", "DELETE"); + Endpoints[3151] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/experiments/{experimentName}", "PUT"); + Endpoints[3152] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/fileServers/{fileServerName}", "PUT"); + Endpoints[3153] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/fileServers/{fileServerName}", "GET"); + Endpoints[3154] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/fileServers/{fileServerName}", "DELETE"); + Endpoints[3155] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}/channels/{channelName}", "GET"); + Endpoints[3156] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}/channels/{channelName}", "DELETE"); + Endpoints[3157] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}/channels/{channelName}", "PUT"); + Endpoints[3158] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}/channels/{channelName}", "PATCH"); + Endpoints[3159] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}/Connections/{connectionName}", "PUT"); + Endpoints[3160] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}/Connections/{connectionName}", "GET"); + Endpoints[3161] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}/Connections/{connectionName}", "PATCH"); + Endpoints[3162] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}/Connections/{connectionName}", "DELETE"); + Endpoints[3163] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{cacheName}/firewallRules/{ruleName}", "GET"); + Endpoints[3164] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{cacheName}/firewallRules/{ruleName}", "PUT"); + Endpoints[3165] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{cacheName}/firewallRules/{ruleName}", "DELETE"); + Endpoints[3166] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}/linkedServers/{linkedServerName}", "PUT"); + Endpoints[3167] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}/linkedServers/{linkedServerName}", "GET"); + Endpoints[3168] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}/linkedServers/{linkedServerName}", "DELETE"); + Endpoints[3169] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}/patchSchedules/{default}", "GET"); + Endpoints[3170] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}/patchSchedules/{default}", "DELETE"); + Endpoints[3171] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cache/Redis/{name}/patchSchedules/{default}", "PUT"); + Endpoints[3172] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}", "GET"); + Endpoints[3173] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}", "PUT"); + Endpoints[3174] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}", "DELETE"); + Endpoints[3175] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}", "PATCH"); + Endpoints[3176] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CertificateRegistration/certificateOrders/{certificateOrderName}/certificates/{name}", "GET"); + Endpoints[3177] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CertificateRegistration/certificateOrders/{certificateOrderName}/certificates/{name}", "PUT"); + Endpoints[3178] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CertificateRegistration/certificateOrders/{certificateOrderName}/certificates/{name}", "DELETE"); + Endpoints[3179] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CertificateRegistration/certificateOrders/{certificateOrderName}/certificates/{name}", "PATCH"); + Endpoints[3180] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/images/{galleryImageName}", "GET"); + Endpoints[3181] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/images/{galleryImageName}", "DELETE"); + Endpoints[3182] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/images/{galleryImageName}", "PUT"); + Endpoints[3183] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/extensions/{vmExtensionName}", "PUT"); + Endpoints[3184] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/extensions/{vmExtensionName}", "PATCH"); + Endpoints[3185] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/extensions/{vmExtensionName}", "DELETE"); + Endpoints[3186] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/extensions/{vmExtensionName}", "GET"); + Endpoints[3187] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/extensions/{vmssExtensionName}", "PUT"); + Endpoints[3188] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/extensions/{vmssExtensionName}", "DELETE"); + Endpoints[3189] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/extensions/{vmssExtensionName}", "GET"); + Endpoints[3190] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}", "PUT"); + Endpoints[3191] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}", "DELETE"); + Endpoints[3192] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}", "GET"); + Endpoints[3193] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/builds/{buildId}", "PATCH"); + Endpoints[3194] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/builds/{buildId}", "GET"); + Endpoints[3195] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/buildTasks/{buildTaskName}", "PATCH"); + Endpoints[3196] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/buildTasks/{buildTaskName}", "DELETE"); + Endpoints[3197] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/buildTasks/{buildTaskName}", "PUT"); + Endpoints[3198] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/buildTasks/{buildTaskName}", "GET"); + Endpoints[3199] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/replications/{replicationName}", "PATCH"); + Endpoints[3200] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/replications/{replicationName}", "PUT"); + Endpoints[3201] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/replications/{replicationName}", "GET"); + Endpoints[3202] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/replications/{replicationName}", "DELETE"); + Endpoints[3203] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/webhooks/{webhookName}", "DELETE"); + Endpoints[3204] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/webhooks/{webhookName}", "GET"); + Endpoints[3205] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/webhooks/{webhookName}", "PUT"); + Endpoints[3206] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/webhooks/{webhookName}", "PATCH"); + Endpoints[3207] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/accessProfiles/{roleName}", "GET"); + Endpoints[3208] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/authorizationPolicies/{authorizationPolicyName}", "PUT"); + Endpoints[3209] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/authorizationPolicies/{authorizationPolicyName}", "GET"); + Endpoints[3210] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/connectors/{connectorName}", "DELETE"); + Endpoints[3211] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/connectors/{connectorName}", "PUT"); + Endpoints[3212] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/connectors/{connectorName}", "GET"); + Endpoints[3213] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/interactions/{interactionName}", "PUT"); + Endpoints[3214] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/interactions/{interactionName}", "GET"); + Endpoints[3215] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/kpi/{kpiName}", "DELETE"); + Endpoints[3216] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/kpi/{kpiName}", "PUT"); + Endpoints[3217] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/kpi/{kpiName}", "GET"); + Endpoints[3218] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/links/{linkName}", "PUT"); + Endpoints[3219] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/links/{linkName}", "GET"); + Endpoints[3220] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/links/{linkName}", "DELETE"); + Endpoints[3221] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/predictions/{predictionName}", "DELETE"); + Endpoints[3222] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/predictions/{predictionName}", "PUT"); + Endpoints[3223] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/predictions/{predictionName}", "GET"); + Endpoints[3224] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/profiles/{profileName}", "GET"); + Endpoints[3225] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/profiles/{profileName}", "DELETE"); + Endpoints[3226] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/profiles/{profileName}", "PUT"); + Endpoints[3227] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/relationshipLinks/{relationshipLinkName}", "GET"); + Endpoints[3228] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/relationshipLinks/{relationshipLinkName}", "DELETE"); + Endpoints[3229] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/relationshipLinks/{relationshipLinkName}", "PUT"); + Endpoints[3230] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/relationships/{relationshipName}", "GET"); + Endpoints[3231] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/relationships/{relationshipName}", "DELETE"); + Endpoints[3232] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/relationships/{relationshipName}", "PUT"); + Endpoints[3233] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/roleAssignments/{assignmentName}", "DELETE"); + Endpoints[3234] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/roleAssignments/{assignmentName}", "PUT"); + Endpoints[3235] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/roleAssignments/{assignmentName}", "GET"); + Endpoints[3236] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/views/{viewName}", "GET"); + Endpoints[3237] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/views/{viewName}", "DELETE"); + Endpoints[3238] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/views/{viewName}", "PUT"); + Endpoints[3239] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/widgetTypes/{widgetTypeName}", "GET"); + Endpoints[3240] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/cancelpipelinerun/{runId}", "POST"); + Endpoints[3241] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/datasets/{datasetName}", "DELETE"); + Endpoints[3242] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/datasets/{datasetName}", "PUT"); + Endpoints[3243] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/datasets/{datasetName}", "GET"); + Endpoints[3244] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}", "GET"); + Endpoints[3245] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}", "PATCH"); + Endpoints[3246] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}", "DELETE"); + Endpoints[3247] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}", "PUT"); + Endpoints[3248] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/linkedservices/{linkedServiceName}", "GET"); + Endpoints[3249] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/linkedservices/{linkedServiceName}", "DELETE"); + Endpoints[3250] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/linkedservices/{linkedServiceName}", "PUT"); + Endpoints[3251] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/pipelineruns/{runId}", "GET"); + Endpoints[3252] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/pipelines/{pipelineName}", "GET"); + Endpoints[3253] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/pipelines/{pipelineName}", "PUT"); + Endpoints[3254] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/pipelines/{pipelineName}", "DELETE"); + Endpoints[3255] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/triggers/{triggerName}", "GET"); + Endpoints[3256] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/triggers/{triggerName}", "DELETE"); + Endpoints[3257] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/triggers/{triggerName}", "PUT"); + Endpoints[3258] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/computePolicies/{computePolicyName}", "PUT"); + Endpoints[3259] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/computePolicies/{computePolicyName}", "GET"); + Endpoints[3260] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/computePolicies/{computePolicyName}", "PATCH"); + Endpoints[3261] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/computePolicies/{computePolicyName}", "DELETE"); + Endpoints[3262] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/dataLakeStoreAccounts/{dataLakeStoreAccountName}", "GET"); + Endpoints[3263] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/dataLakeStoreAccounts/{dataLakeStoreAccountName}", "PUT"); + Endpoints[3264] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/dataLakeStoreAccounts/{dataLakeStoreAccountName}", "DELETE"); + Endpoints[3265] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/firewallRules/{firewallRuleName}", "PUT"); + Endpoints[3266] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/firewallRules/{firewallRuleName}", "GET"); + Endpoints[3267] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/firewallRules/{firewallRuleName}", "PATCH"); + Endpoints[3268] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/firewallRules/{firewallRuleName}", "DELETE"); + Endpoints[3269] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/storageAccounts/{storageAccountName}", "PUT"); + Endpoints[3270] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/storageAccounts/{storageAccountName}", "PATCH"); + Endpoints[3271] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/storageAccounts/{storageAccountName}", "GET"); + Endpoints[3272] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/storageAccounts/{storageAccountName}", "DELETE"); + Endpoints[3273] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}/firewallRules/{firewallRuleName}", "GET"); + Endpoints[3274] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}/firewallRules/{firewallRuleName}", "PUT"); + Endpoints[3275] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}/firewallRules/{firewallRuleName}", "DELETE"); + Endpoints[3276] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}/firewallRules/{firewallRuleName}", "PATCH"); + Endpoints[3277] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}/trustedIdProviders/{trustedIdProviderName}", "PATCH"); + Endpoints[3278] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}/trustedIdProviders/{trustedIdProviderName}", "GET"); + Endpoints[3279] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}/trustedIdProviders/{trustedIdProviderName}", "PUT"); + Endpoints[3280] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}/trustedIdProviders/{trustedIdProviderName}", "DELETE"); + Endpoints[3281] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}/virtualNetworkRules/{virtualNetworkRuleName}", "PUT"); + Endpoints[3282] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}/virtualNetworkRules/{virtualNetworkRuleName}", "GET"); + Endpoints[3283] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}/virtualNetworkRules/{virtualNetworkRuleName}", "DELETE"); + Endpoints[3284] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeStore/accounts/{accountName}/virtualNetworkRules/{virtualNetworkRuleName}", "PATCH"); + Endpoints[3285] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/configurations/{configurationName}", "PUT"); + Endpoints[3286] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/configurations/{configurationName}", "GET"); + Endpoints[3287] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/databases/{databaseName}", "DELETE"); + Endpoints[3288] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/databases/{databaseName}", "GET"); + Endpoints[3289] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/databases/{databaseName}", "PUT"); + Endpoints[3290] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/firewallRules/{firewallRuleName}", "DELETE"); + Endpoints[3291] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/firewallRules/{firewallRuleName}", "GET"); + Endpoints[3292] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/firewallRules/{firewallRuleName}", "PUT"); + Endpoints[3293] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/virtualNetworkRules/{virtualNetworkRuleName}", "DELETE"); + Endpoints[3294] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/virtualNetworkRules/{virtualNetworkRuleName}", "PUT"); + Endpoints[3295] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}/virtualNetworkRules/{virtualNetworkRuleName}", "GET"); + Endpoints[3296] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}/configurations/{configurationName}", "PUT"); + Endpoints[3297] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}/configurations/{configurationName}", "GET"); + Endpoints[3298] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}/databases/{databaseName}", "GET"); + Endpoints[3299] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}/databases/{databaseName}", "DELETE"); + Endpoints[3300] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}/databases/{databaseName}", "PUT"); + Endpoints[3301] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}/firewallRules/{firewallRuleName}", "PUT"); + Endpoints[3302] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}/firewallRules/{firewallRuleName}", "GET"); + Endpoints[3303] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}/firewallRules/{firewallRuleName}", "DELETE"); + Endpoints[3304] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}/securityAlertPolicies/{securityAlertPolicyName}", "PUT"); + Endpoints[3305] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}/securityAlertPolicies/{securityAlertPolicyName}", "GET"); + Endpoints[3306] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}/virtualNetworkRules/{virtualNetworkRuleName}", "GET"); + Endpoints[3307] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}/virtualNetworkRules/{virtualNetworkRuleName}", "DELETE"); + Endpoints[3308] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}/virtualNetworkRules/{virtualNetworkRuleName}", "PUT"); + Endpoints[3309] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/certificates/{certificateName}", "GET"); + Endpoints[3310] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/certificates/{certificateName}", "PUT"); + Endpoints[3311] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/certificates/{certificateName}", "DELETE"); + Endpoints[3312] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/jobs/{jobId}", "GET"); + Endpoints[3313] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/provisioningServices/{provisioningServiceName}/certificates/{certificateName}", "GET"); + Endpoints[3314] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/provisioningServices/{provisioningServiceName}/certificates/{certificateName}", "PUT"); + Endpoints[3315] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/provisioningServices/{provisioningServiceName}/certificates/{certificateName}", "DELETE"); + Endpoints[3316] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/provisioningServices/{provisioningServiceName}/operationresults/{operationId}", "GET"); + Endpoints[3317] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{name}", "PATCH"); + Endpoints[3318] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{name}", "DELETE"); + Endpoints[3319] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{name}", "PUT"); + Endpoints[3320] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{name}", "GET"); + Endpoints[3321] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/costinsights/{name}", "GET"); + Endpoints[3322] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/costs/{name}", "GET"); + Endpoints[3323] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/costs/{name}", "PUT"); + Endpoints[3324] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/customimages/{name}", "GET"); + Endpoints[3325] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/customimages/{name}", "DELETE"); + Endpoints[3326] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/customimages/{name}", "PUT"); + Endpoints[3327] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/formulas/{name}", "GET"); + Endpoints[3328] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/formulas/{name}", "PUT"); + Endpoints[3329] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/formulas/{name}", "DELETE"); + Endpoints[3330] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/notificationchannels/{name}", "DELETE"); + Endpoints[3331] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/notificationchannels/{name}", "PUT"); + Endpoints[3332] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/notificationchannels/{name}", "GET"); + Endpoints[3333] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/notificationchannels/{name}", "PATCH"); + Endpoints[3334] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/schedules/{name}", "GET"); + Endpoints[3335] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/schedules/{name}", "PUT"); + Endpoints[3336] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/schedules/{name}", "DELETE"); + Endpoints[3337] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/schedules/{name}", "PATCH"); + Endpoints[3338] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/servicerunners/{name}", "PUT"); + Endpoints[3339] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/servicerunners/{name}", "GET"); + Endpoints[3340] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/servicerunners/{name}", "DELETE"); + Endpoints[3341] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{name}", "GET"); + Endpoints[3342] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{name}", "PUT"); + Endpoints[3343] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{name}", "DELETE"); + Endpoints[3344] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{name}", "PATCH"); + Endpoints[3345] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{name}", "DELETE"); + Endpoints[3346] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{name}", "PATCH"); + Endpoints[3347] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{name}", "GET"); + Endpoints[3348] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{name}", "PUT"); + Endpoints[3349] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualnetworks/{name}", "DELETE"); + Endpoints[3350] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualnetworks/{name}", "GET"); + Endpoints[3351] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualnetworks/{name}", "PUT"); + Endpoints[3352] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualnetworks/{name}", "PATCH"); + Endpoints[3353] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DomainRegistration/domains/{domainName}/domainOwnershipIdentifiers/{name}", "PUT"); + Endpoints[3354] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DomainRegistration/domains/{domainName}/domainOwnershipIdentifiers/{name}", "GET"); + Endpoints[3355] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DomainRegistration/domains/{domainName}/domainOwnershipIdentifiers/{name}", "PATCH"); + Endpoints[3356] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DomainRegistration/domains/{domainName}/domainOwnershipIdentifiers/{name}", "DELETE"); + Endpoints[3357] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DomainRegistration/domains/{domainName}/operationresults/{operationId}", "GET"); + Endpoints[3358] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}", "GET"); + Endpoints[3359] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}", "PUT"); + Endpoints[3360] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}", "POST"); + Endpoints[3361] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}", "DELETE"); + Endpoints[3362] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/disasterRecoveryConfigs/{alias}", "DELETE"); + Endpoints[3363] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/disasterRecoveryConfigs/{alias}", "GET"); + Endpoints[3364] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/disasterRecoveryConfigs/{alias}", "PUT"); + Endpoints[3365] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/eventhubs/{eventHubName}", "GET"); + Endpoints[3366] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/eventhubs/{eventHubName}", "DELETE"); + Endpoints[3367] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/eventhubs/{eventHubName}", "PUT"); + Endpoints[3368] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/edgeGatewayPools/{edgeGatewayPool}", "GET"); + Endpoints[3369] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/edgeGateways/{edgeGateway}", "GET"); + Endpoints[3370] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/fileShares/{fileShare}", "GET"); + Endpoints[3371] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/infraRoleInstances/{infraRoleInstance}", "GET"); + Endpoints[3372] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/infraRoles/{infraRole}", "GET"); + Endpoints[3373] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/ipPools/{ipPool}", "PUT"); + Endpoints[3374] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/ipPools/{ipPool}", "GET"); + Endpoints[3375] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/logicalNetworks/{logicalNetwork}", "GET"); + Endpoints[3376] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/macAddressPools/{macAddressPool}", "GET"); + Endpoints[3377] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/scaleUnitNodes/{scaleUnitNode}", "GET"); + Endpoints[3378] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/scaleUnits/{scaleUnit}", "GET"); + Endpoints[3379] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/slbMuxInstances/{slbMuxInstance}", "GET"); + Endpoints[3380] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/storageSubSystems/{storageSubSystem}", "GET"); + Endpoints[3381] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/applications/{applicationName}", "DELETE"); + Endpoints[3382] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/applications/{applicationName}", "PUT"); + Endpoints[3383] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/applications/{applicationName}", "GET"); + Endpoints[3384] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/configurations/{configurationName}", "POST"); + Endpoints[3385] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/configurations/{configurationName}", "GET"); + Endpoints[3386] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/extensions/{extensionName}", "PUT"); + Endpoints[3387] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/extensions/{extensionName}", "GET"); + Endpoints[3388] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/extensions/{extensionName}", "DELETE"); + Endpoints[3389] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/scriptActions/{scriptName}", "DELETE"); + Endpoints[3390] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/scriptExecutionHistory/{scriptExecutionId}", "GET"); + Endpoints[3391] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.InfrastructureInsights.Admin/regionHealths/{location}/alerts/{alertName}", "GET"); + Endpoints[3392] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.InfrastructureInsights.Admin/regionHealths/{location}/alerts/{alertName}", "PUT"); + Endpoints[3393] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.InfrastructureInsights.Admin/regionHealths/{location}/serviceHealths/{serviceHealth}", "GET"); + Endpoints[3394] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.insights/alertrules/{ruleName}/incidents/{incidentName}", "GET"); + Endpoints[3395] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/Annotations/{annotationId}", "DELETE"); + Endpoints[3396] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/Annotations/{annotationId}", "GET"); + Endpoints[3397] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/APIKeys/{keyId}", "GET"); + Endpoints[3398] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/APIKeys/{keyId}", "DELETE"); + Endpoints[3399] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/exportconfiguration/{exportId}", "GET"); + Endpoints[3400] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/exportconfiguration/{exportId}", "DELETE"); + Endpoints[3401] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/exportconfiguration/{exportId}", "PUT"); + Endpoints[3402] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/favorites/{favoriteId}", "PATCH"); + Endpoints[3403] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/favorites/{favoriteId}", "GET"); + Endpoints[3404] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/favorites/{favoriteId}", "PUT"); + Endpoints[3405] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/favorites/{favoriteId}", "DELETE"); + Endpoints[3406] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/ProactiveDetectionConfigs/{ConfigurationId}", "GET"); + Endpoints[3407] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/ProactiveDetectionConfigs/{ConfigurationId}", "PUT"); + Endpoints[3408] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/components/{resourceName}/WorkItemConfigs/{workItemConfigId}", "DELETE"); + Endpoints[3409] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/metricAlerts/{ruleName}/status/{statusName}", "GET"); + Endpoints[3410] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}/accessPolicies/{operationKind}", "PUT"); + Endpoints[3411] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}/secrets/{secretName}", "PUT"); + Endpoints[3412] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}/secrets/{secretName}", "GET"); + Endpoints[3413] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}/secrets/{secretName}", "PATCH"); + Endpoints[3414] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/agreements/{agreementName}", "DELETE"); + Endpoints[3415] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/agreements/{agreementName}", "PUT"); + Endpoints[3416] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/agreements/{agreementName}", "GET"); + Endpoints[3417] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/assemblies/{assemblyArtifactName}", "GET"); + Endpoints[3418] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/assemblies/{assemblyArtifactName}", "PUT"); + Endpoints[3419] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/assemblies/{assemblyArtifactName}", "DELETE"); + Endpoints[3420] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/batchConfigurations/{batchConfigurationName}", "GET"); + Endpoints[3421] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/batchConfigurations/{batchConfigurationName}", "PUT"); + Endpoints[3422] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/batchConfigurations/{batchConfigurationName}", "DELETE"); + Endpoints[3423] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/certificates/{certificateName}", "PUT"); + Endpoints[3424] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/certificates/{certificateName}", "GET"); + Endpoints[3425] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/certificates/{certificateName}", "DELETE"); + Endpoints[3426] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/maps/{mapName}", "PUT"); + Endpoints[3427] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/maps/{mapName}", "DELETE"); + Endpoints[3428] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/maps/{mapName}", "GET"); + Endpoints[3429] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/partners/{partnerName}", "PUT"); + Endpoints[3430] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/partners/{partnerName}", "DELETE"); + Endpoints[3431] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/partners/{partnerName}", "GET"); + Endpoints[3432] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/schemas/{schemaName}", "GET"); + Endpoints[3433] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/schemas/{schemaName}", "PUT"); + Endpoints[3434] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/schemas/{schemaName}", "DELETE"); + Endpoints[3435] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/sessions/{sessionName}", "GET"); + Endpoints[3436] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/sessions/{sessionName}", "PUT"); + Endpoints[3437] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/sessions/{sessionName}", "DELETE"); + Endpoints[3438] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/accessKeys/{accessKeyName}", "GET"); + Endpoints[3439] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/accessKeys/{accessKeyName}", "PUT"); + Endpoints[3440] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/accessKeys/{accessKeyName}", "DELETE"); + Endpoints[3441] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs/{runName}", "GET"); + Endpoints[3442] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/triggers/{triggerName}", "GET"); + Endpoints[3443] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/versions/{versionId}", "GET"); + Endpoints[3444] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/commitmentPlans/{commitmentPlanName}/commitmentAssociations/{commitmentAssociationName}", "GET"); + Endpoints[3445] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningExperimentation/accounts/{accountName}/workspaces/{workspaceName}", "DELETE"); + Endpoints[3446] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningExperimentation/accounts/{accountName}/workspaces/{workspaceName}", "PATCH"); + Endpoints[3447] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningExperimentation/accounts/{accountName}/workspaces/{workspaceName}", "PUT"); + Endpoints[3448] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningExperimentation/accounts/{accountName}/workspaces/{workspaceName}", "GET"); + Endpoints[3449] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/assets/{assetName}", "DELETE"); + Endpoints[3450] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/assets/{assetName}", "GET"); + Endpoints[3451] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/assets/{assetName}", "PUT"); + Endpoints[3452] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/assets/{assetName}", "PATCH"); + Endpoints[3453] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/contentKeyPolicies/{contentKeyPolicyName}", "PUT"); + Endpoints[3454] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/contentKeyPolicies/{contentKeyPolicyName}", "PATCH"); + Endpoints[3455] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/contentKeyPolicies/{contentKeyPolicyName}", "DELETE"); + Endpoints[3456] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/contentKeyPolicies/{contentKeyPolicyName}", "GET"); + Endpoints[3457] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/liveEvents/{liveEventName}", "PUT"); + Endpoints[3458] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/liveEvents/{liveEventName}", "DELETE"); + Endpoints[3459] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/liveEvents/{liveEventName}", "PATCH"); + Endpoints[3460] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/liveEvents/{liveEventName}", "GET"); + Endpoints[3461] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/streamingEndpoints/{streamingEndpointName}", "GET"); + Endpoints[3462] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/streamingEndpoints/{streamingEndpointName}", "PUT"); + Endpoints[3463] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/streamingEndpoints/{streamingEndpointName}", "DELETE"); + Endpoints[3464] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/streamingEndpoints/{streamingEndpointName}", "PATCH"); + Endpoints[3465] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/streamingLocators/{streamingLocatorName}", "DELETE"); + Endpoints[3466] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/streamingLocators/{streamingLocatorName}", "GET"); + Endpoints[3467] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/streamingLocators/{streamingLocatorName}", "PUT"); + Endpoints[3468] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/streamingPolicies/{streamingPolicyName}", "DELETE"); + Endpoints[3469] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/streamingPolicies/{streamingPolicyName}", "GET"); + Endpoints[3470] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/streamingPolicies/{streamingPolicyName}", "PUT"); + Endpoints[3471] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/transforms/{transformName}", "PUT"); + Endpoints[3472] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/transforms/{transformName}", "GET"); + Endpoints[3473] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/transforms/{transformName}", "DELETE"); + Endpoints[3474] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/transforms/{transformName}", "PATCH"); + Endpoints[3475] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/groups/{groupName}", "GET"); + Endpoints[3476] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/groups/{groupName}", "DELETE"); + Endpoints[3477] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/groups/{groupName}", "PUT"); + Endpoints[3478] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/machines/{machineName}", "GET"); + Endpoints[3479] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}", "PUT"); + Endpoints[3480] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}", "DELETE"); + Endpoints[3481] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}", "GET"); + Endpoints[3482] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}", "GET"); + Endpoints[3483] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}", "PUT"); + Endpoints[3484] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}", "DELETE"); + Endpoints[3485] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}", "PUT"); + Endpoints[3486] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}", "GET"); + Endpoints[3487] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}", "DELETE"); + Endpoints[3488] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/backendAddressPools/{backendAddressPoolName}", "GET"); + Endpoints[3489] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/frontendIPConfigurations/{frontendIPConfigurationName}", "GET"); + Endpoints[3490] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}", "DELETE"); + Endpoints[3491] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}", "PUT"); + Endpoints[3492] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/inboundNatRules/{inboundNatRuleName}", "GET"); + Endpoints[3493] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/loadBalancingRules/{loadBalancingRuleName}", "GET"); + Endpoints[3494] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/probes/{probeName}", "GET"); + Endpoints[3495] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}/ipConfigurations/{ipConfigurationName}", "GET"); + Endpoints[3496] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/defaultSecurityRules/{defaultSecurityRuleName}", "GET"); + Endpoints[3497] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}", "PUT"); + Endpoints[3498] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}", "GET"); + Endpoints[3499] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}", "DELETE"); + Endpoints[3500] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}", "GET"); + Endpoints[3501] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}", "PUT"); + Endpoints[3502] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}", "DELETE"); + Endpoints[3503] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}", "DELETE"); + Endpoints[3504] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}", "PUT"); + Endpoints[3505] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}", "GET"); + Endpoints[3506] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}", "PATCH"); + Endpoints[3507] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}", "PUT"); + Endpoints[3508] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}", "GET"); + Endpoints[3509] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeFilters/{routeFilterName}/routeFilterRules/{ruleName}", "DELETE"); + Endpoints[3510] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}", "DELETE"); + Endpoints[3511] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}", "GET"); + Endpoints[3512] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}", "PUT"); + Endpoints[3513] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficmanagerprofiles/{profileName}/heatMaps/{heatMapType}", "GET"); + Endpoints[3514] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}", "PUT"); + Endpoints[3515] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}", "DELETE"); + Endpoints[3516] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}", "GET"); + Endpoints[3517] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}", "PUT"); + Endpoints[3518] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}", "GET"); + Endpoints[3519] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/virtualNetworkPeerings/{virtualNetworkPeeringName}", "DELETE"); + Endpoints[3520] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}", "GET"); + Endpoints[3521] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}", "POST"); + Endpoints[3522] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}", "PUT"); + Endpoints[3523] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}", "DELETE"); + Endpoints[3524] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}", "GET"); + Endpoints[3525] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}", "PUT"); + Endpoints[3526] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}", "DELETE"); + Endpoints[3527] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataSources/{dataSourceName}", "PUT"); + Endpoints[3528] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataSources/{dataSourceName}", "DELETE"); + Endpoints[3529] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataSources/{dataSourceName}", "GET"); + Endpoints[3530] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedServices/{linkedServiceName}", "GET"); + Endpoints[3531] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedServices/{linkedServiceName}", "DELETE"); + Endpoints[3532] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedServices/{linkedServiceName}", "PUT"); + Endpoints[3533] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/savedSearches/{savedSearchName}", "PUT"); + Endpoints[3534] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/savedSearches/{savedSearchName}", "GET"); + Endpoints[3535] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/savedSearches/{savedSearchName}", "DELETE"); + Endpoints[3536] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/search/{id}", "POST"); + Endpoints[3537] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/storageInsightConfigs/{storageInsightName}", "GET"); + Endpoints[3538] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/storageInsightConfigs/{storageInsightName}", "PUT"); + Endpoints[3539] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/storageInsightConfigs/{storageInsightName}", "DELETE"); + Endpoints[3540] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationAlertSettings/{alertSettingName}", "GET"); + Endpoints[3541] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationAlertSettings/{alertSettingName}", "PUT"); + Endpoints[3542] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationEvents/{eventName}", "GET"); + Endpoints[3543] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}", "DELETE"); + Endpoints[3544] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}", "PUT"); + Endpoints[3545] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}", "GET"); + Endpoints[3546] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationJobs/{jobName}", "GET"); + Endpoints[3547] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationPolicies/{policyName}", "GET"); + Endpoints[3548] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationPolicies/{policyName}", "DELETE"); + Endpoints[3549] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationPolicies/{policyName}", "PUT"); + Endpoints[3550] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationPolicies/{policyName}", "PATCH"); + Endpoints[3551] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationRecoveryPlans/{recoveryPlanName}", "GET"); + Endpoints[3552] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationRecoveryPlans/{recoveryPlanName}", "PUT"); + Endpoints[3553] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationRecoveryPlans/{recoveryPlanName}", "DELETE"); + Endpoints[3554] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationRecoveryPlans/{recoveryPlanName}", "PATCH"); + Endpoints[3555] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupEngines/{backupEngineName}", "GET"); + Endpoints[3556] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupJobs/{jobName}", "GET"); + Endpoints[3557] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupOperationResults/{operationId}", "GET"); + Endpoints[3558] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupOperations/{operationId}", "GET"); + Endpoints[3559] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupPolicies/{policyName}", "DELETE"); + Endpoints[3560] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupPolicies/{policyName}", "PUT"); + Endpoints[3561] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupPolicies/{policyName}", "GET"); + Endpoints[3562] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/certificates/{certificateName}", "PUT"); + Endpoints[3563] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/registeredIdentities/{identityName}", "DELETE"); + Endpoints[3564] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/authorizationRules/{authorizationRuleName}", "PUT"); + Endpoints[3565] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/authorizationRules/{authorizationRuleName}", "DELETE"); + Endpoints[3566] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/authorizationRules/{authorizationRuleName}", "GET"); + Endpoints[3567] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}", "POST"); + Endpoints[3568] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/hybridConnections/{hybridConnectionName}", "PUT"); + Endpoints[3569] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/hybridConnections/{hybridConnectionName}", "DELETE"); + Endpoints[3570] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/hybridConnections/{hybridConnectionName}", "GET"); + Endpoints[3571] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/wcfRelays/{relayName}", "GET"); + Endpoints[3572] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/wcfRelays/{relayName}", "DELETE"); + Endpoints[3573] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/wcfRelays/{relayName}", "PUT"); + Endpoints[3574] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Scheduler/jobCollections/{jobCollectionName}/jobs/{jobName}", "PATCH"); + Endpoints[3575] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Scheduler/jobCollections/{jobCollectionName}/jobs/{jobName}", "GET"); + Endpoints[3576] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Scheduler/jobCollections/{jobCollectionName}/jobs/{jobName}", "DELETE"); + Endpoints[3577] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Scheduler/jobCollections/{jobCollectionName}/jobs/{jobName}", "PUT"); + Endpoints[3578] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Search/searchServices/{searchServiceName}/createQueryKey/{name}", "POST"); + Endpoints[3579] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Search/searchServices/{searchServiceName}/deleteQueryKey/{key}", "DELETE"); + Endpoints[3580] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Search/searchServices/{searchServiceName}/regenerateAdminKey/{keyKind}", "POST"); + Endpoints[3581] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/alerts/{alertName}", "GET"); + Endpoints[3582] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/discoveredSecuritySolutions/{discoveredSecuritySolutionName}", "GET"); + Endpoints[3583] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/ExternalSecuritySolutions/{externalSecuritySolutionsName}", "GET"); + Endpoints[3584] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/jitNetworkAccessPolicies/{jitNetworkAccessPolicyName}", "PUT"); + Endpoints[3585] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/jitNetworkAccessPolicies/{jitNetworkAccessPolicyName}", "GET"); + Endpoints[3586] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/jitNetworkAccessPolicies/{jitNetworkAccessPolicyName}", "DELETE"); + Endpoints[3587] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/tasks/{taskName}", "GET"); + Endpoints[3588] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/nodes/{nodeName}/sessions/{session}", "GET"); + Endpoints[3589] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/nodes/{nodeName}/sessions/{session}", "DELETE"); + Endpoints[3590] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/nodes/{nodeName}/sessions/{session}", "PUT"); + Endpoints[3591] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}", "PUT"); + Endpoints[3592] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}", "DELETE"); + Endpoints[3593] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}", "GET"); + Endpoints[3594] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}", "POST"); + Endpoints[3595] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/disasterRecoveryConfigs/{alias}", "GET"); + Endpoints[3596] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/disasterRecoveryConfigs/{alias}", "DELETE"); + Endpoints[3597] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/disasterRecoveryConfigs/{alias}", "PUT"); + Endpoints[3598] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/migrationConfigurations/{configName}", "DELETE"); + Endpoints[3599] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/migrationConfigurations/{configName}", "GET"); + Endpoints[3600] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/migrationConfigurations/{configName}", "PUT"); + Endpoints[3601] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/queues/{queueName}", "GET"); + Endpoints[3602] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/queues/{queueName}", "DELETE"); + Endpoints[3603] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/queues/{queueName}", "PUT"); + Endpoints[3604] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics/{topicName}", "DELETE"); + Endpoints[3605] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics/{topicName}", "PUT"); + Endpoints[3606] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics/{topicName}", "GET"); + Endpoints[3607] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}", "DELETE"); + Endpoints[3608] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}", "PATCH"); + Endpoints[3609] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}", "PUT"); + Endpoints[3610] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}", "GET"); + Endpoints[3611] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}", "GET"); + Endpoints[3612] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}", "PUT"); + Endpoints[3613] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}", "DELETE"); + Endpoints[3614] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/locations/{locationName}/instanceFailoverGroups/{failoverGroupName}", "PUT"); + Endpoints[3615] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/locations/{locationName}/instanceFailoverGroups/{failoverGroupName}", "GET"); + Endpoints[3616] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/locations/{locationName}/instanceFailoverGroups/{failoverGroupName}", "DELETE"); + Endpoints[3617] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}/databases/{databaseName}", "PUT"); + Endpoints[3618] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}/databases/{databaseName}", "PATCH"); + Endpoints[3619] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}/databases/{databaseName}", "DELETE"); + Endpoints[3620] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}/databases/{databaseName}", "GET"); + Endpoints[3621] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/administrators/{administratorName}", "GET"); + Endpoints[3622] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/administrators/{administratorName}", "DELETE"); + Endpoints[3623] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/administrators/{administratorName}", "PUT"); + Endpoints[3624] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/advisors/{advisorName}", "GET"); + Endpoints[3625] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/advisors/{advisorName}", "PATCH"); + Endpoints[3626] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/advisors/{advisorName}", "PUT"); + Endpoints[3627] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/auditingPolicies/{tableAuditingPolicyName}", "PUT"); + Endpoints[3628] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/auditingPolicies/{tableAuditingPolicyName}", "GET"); + Endpoints[3629] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/backupLongTermRetentionVaults/{backupLongTermRetentionVaultName}", "PUT"); + Endpoints[3630] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/backupLongTermRetentionVaults/{backupLongTermRetentionVaultName}", "GET"); + Endpoints[3631] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/communicationLinks/{communicationLinkName}", "DELETE"); + Endpoints[3632] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/communicationLinks/{communicationLinkName}", "PUT"); + Endpoints[3633] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/communicationLinks/{communicationLinkName}", "GET"); + Endpoints[3634] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/connectionPolicies/{connectionPolicyName}", "GET"); + Endpoints[3635] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/connectionPolicies/{connectionPolicyName}", "PUT"); + Endpoints[3636] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}", "PATCH"); + Endpoints[3637] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}", "GET"); + Endpoints[3638] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}", "DELETE"); + Endpoints[3639] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}", "PUT"); + Endpoints[3640] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/disasterRecoveryConfiguration/{disasterRecoveryConfigurationName}", "PUT"); + Endpoints[3641] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/disasterRecoveryConfiguration/{disasterRecoveryConfigurationName}", "GET"); + Endpoints[3642] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/disasterRecoveryConfiguration/{disasterRecoveryConfigurationName}", "DELETE"); + Endpoints[3643] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/dnsAliases/{dnsAliasName}", "GET"); + Endpoints[3644] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/dnsAliases/{dnsAliasName}", "PUT"); + Endpoints[3645] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/dnsAliases/{dnsAliasName}", "DELETE"); + Endpoints[3646] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/elasticPools/{elasticPoolName}", "GET"); + Endpoints[3647] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/elasticPools/{elasticPoolName}", "DELETE"); + Endpoints[3648] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/elasticPools/{elasticPoolName}", "PUT"); + Endpoints[3649] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/elasticPools/{elasticPoolName}", "PATCH"); + Endpoints[3650] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/encryptionProtector/{encryptionProtectorName}", "GET"); + Endpoints[3651] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/encryptionProtector/{encryptionProtectorName}", "PUT"); + Endpoints[3652] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/failoverGroups/{failoverGroupName}", "PATCH"); + Endpoints[3653] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/failoverGroups/{failoverGroupName}", "DELETE"); + Endpoints[3654] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/failoverGroups/{failoverGroupName}", "PUT"); + Endpoints[3655] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/failoverGroups/{failoverGroupName}", "GET"); + Endpoints[3656] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/firewallRules/{firewallRuleName}", "DELETE"); + Endpoints[3657] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/firewallRules/{firewallRuleName}", "GET"); + Endpoints[3658] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/firewallRules/{firewallRuleName}", "PUT"); + Endpoints[3659] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}", "GET"); + Endpoints[3660] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}", "PATCH"); + Endpoints[3661] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}", "DELETE"); + Endpoints[3662] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}", "PUT"); + Endpoints[3663] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/keys/{keyName}", "DELETE"); + Endpoints[3664] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/keys/{keyName}", "PUT"); + Endpoints[3665] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/keys/{keyName}", "GET"); + Endpoints[3666] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/recommendedElasticPools/{recommendedElasticPoolName}", "GET"); + Endpoints[3667] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/recoverableDatabases/{databaseName}", "GET"); + Endpoints[3668] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/restorableDroppedDatabases/{restorableDroppededDatabaseId}", "GET"); + Endpoints[3669] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/serviceObjectives/{serviceObjectiveName}", "GET"); + Endpoints[3670] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/syncAgents/{syncAgentName}", "DELETE"); + Endpoints[3671] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/syncAgents/{syncAgentName}", "GET"); + Endpoints[3672] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/syncAgents/{syncAgentName}", "PUT"); + Endpoints[3673] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/virtualNetworkRules/{virtualNetworkRuleName}", "DELETE"); + Endpoints[3674] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/virtualNetworkRules/{virtualNetworkRuleName}", "PUT"); + Endpoints[3675] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/virtualNetworkRules/{virtualNetworkRuleName}", "GET"); + Endpoints[3676] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/blobservices/{serviceType}", "GET"); + Endpoints[3677] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/operationresults/{operationId}", "GET"); + Endpoints[3678] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/queueservices/{serviceType}", "GET"); + Endpoints[3679] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/shares/{shareName}", "GET"); + Endpoints[3680] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/storageaccounts/{accountId}", "POST"); + Endpoints[3681] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/storageaccounts/{accountId}", "GET"); + Endpoints[3682] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/tableservices/{serviceType}", "GET"); + Endpoints[3683] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/managementPolicies/{managementPolicyName}", "DELETE"); + Endpoints[3684] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/managementPolicies/{managementPolicyName}", "GET"); + Endpoints[3685] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/managementPolicies/{managementPolicyName}", "PUT"); + Endpoints[3686] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/accessControlRecords/{accessControlRecordName}", "DELETE"); + Endpoints[3687] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/accessControlRecords/{accessControlRecordName}", "PUT"); + Endpoints[3688] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/accessControlRecords/{accessControlRecordName}", "GET"); + Endpoints[3689] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/bandwidthSettings/{bandwidthSettingName}", "DELETE"); + Endpoints[3690] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/bandwidthSettings/{bandwidthSettingName}", "GET"); + Endpoints[3691] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/bandwidthSettings/{bandwidthSettingName}", "PUT"); + Endpoints[3692] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}", "DELETE"); + Endpoints[3693] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}", "GET"); + Endpoints[3694] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}", "PATCH"); + Endpoints[3695] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/storageAccountCredentials/{storageAccountCredentialName}", "GET"); + Endpoints[3696] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/storageAccountCredentials/{storageAccountCredentialName}", "PUT"); + Endpoints[3697] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/storageAccountCredentials/{storageAccountCredentialName}", "DELETE"); + Endpoints[3698] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/functions/{functionName}", "PATCH"); + Endpoints[3699] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/functions/{functionName}", "GET"); + Endpoints[3700] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/functions/{functionName}", "DELETE"); + Endpoints[3701] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/functions/{functionName}", "PUT"); + Endpoints[3702] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/inputs/{inputName}", "GET"); + Endpoints[3703] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/inputs/{inputName}", "DELETE"); + Endpoints[3704] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/inputs/{inputName}", "PATCH"); + Endpoints[3705] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/inputs/{inputName}", "PUT"); + Endpoints[3706] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/outputs/{outputName}", "GET"); + Endpoints[3707] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/outputs/{outputName}", "PUT"); + Endpoints[3708] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/outputs/{outputName}", "DELETE"); + Endpoints[3709] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/outputs/{outputName}", "PATCH"); + Endpoints[3710] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/transformations/{transformationName}", "GET"); + Endpoints[3711] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/transformations/{transformationName}", "PATCH"); + Endpoints[3712] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/transformations/{transformationName}", "PUT"); + Endpoints[3713] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/offers/{offer}/offerDelegations/{offerDelegationName}", "DELETE"); + Endpoints[3714] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/offers/{offer}/offerDelegations/{offerDelegationName}", "PUT"); + Endpoints[3715] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Subscriptions.Admin/offers/{offer}/offerDelegations/{offerDelegationName}", "GET"); + Endpoints[3716] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}/accessPolicies/{accessPolicyName}", "DELETE"); + Endpoints[3717] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}/accessPolicies/{accessPolicyName}", "PATCH"); + Endpoints[3718] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}/accessPolicies/{accessPolicyName}", "GET"); + Endpoints[3719] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}/accessPolicies/{accessPolicyName}", "PUT"); + Endpoints[3720] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}/eventSources/{eventSourceName}", "PUT"); + Endpoints[3721] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}/eventSources/{eventSourceName}", "GET"); + Endpoints[3722] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}/eventSources/{eventSourceName}", "PATCH"); + Endpoints[3723] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}/eventSources/{eventSourceName}", "DELETE"); + Endpoints[3724] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}/referenceDataSets/{referenceDataSetName}", "PUT"); + Endpoints[3725] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}/referenceDataSets/{referenceDataSetName}", "GET"); + Endpoints[3726] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}/referenceDataSets/{referenceDataSetName}", "DELETE"); + Endpoints[3727] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.TimeSeriesInsights/environments/{environmentName}/referenceDataSets/{referenceDataSetName}", "PATCH"); + Endpoints[3728] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Update.Admin/updateLocations/{updateLocation}/updates/{updateName}", "GET"); + Endpoints[3729] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{accountResourceName}/extension/{extensionResourceName}", "DELETE"); + Endpoints[3730] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{accountResourceName}/extension/{extensionResourceName}", "GET"); + Endpoints[3731] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{accountResourceName}/extension/{extensionResourceName}", "PATCH"); + Endpoints[3732] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{accountResourceName}/extension/{extensionResourceName}", "PUT"); + Endpoints[3733] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{rootResourceName}/project/{resourceName}", "PATCH"); + Endpoints[3734] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{rootResourceName}/project/{resourceName}", "GET"); + Endpoints[3735] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{rootResourceName}/project/{resourceName}", "PUT"); + Endpoints[3736] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/detectors/{detectorName}", "GET"); + Endpoints[3737] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/diagnostics/{diagnosticsName}", "GET"); + Endpoints[3738] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/operations/{operationId}", "GET"); + Endpoints[3739] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools/{workerPoolName}", "PATCH"); + Endpoints[3740] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools/{workerPoolName}", "GET"); + Endpoints[3741] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools/{workerPoolName}", "PUT"); + Endpoints[3742] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/managedHostingEnvironments/{name}/operations/{operationId}", "GET"); + Endpoints[3743] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/operationresults/{operationId}", "GET"); + Endpoints[3744] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/virtualNetworkConnections/{vnetName}", "GET"); + Endpoints[3745] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/backups/{backupId}", "GET"); + Endpoints[3746] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/backups/{backupId}", "DELETE"); + Endpoints[3747] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/continuouswebjobs/{webJobName}", "GET"); + Endpoints[3748] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/continuouswebjobs/{webJobName}", "DELETE"); + Endpoints[3749] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/deployments/{id}", "GET"); + Endpoints[3750] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/deployments/{id}", "DELETE"); + Endpoints[3751] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/deployments/{id}", "PUT"); + Endpoints[3752] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/domainOwnershipIdentifiers/{domainOwnershipIdentifierName}", "PATCH"); + Endpoints[3753] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/domainOwnershipIdentifiers/{domainOwnershipIdentifierName}", "GET"); + Endpoints[3754] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/domainOwnershipIdentifiers/{domainOwnershipIdentifierName}", "PUT"); + Endpoints[3755] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/domainOwnershipIdentifiers/{domainOwnershipIdentifierName}", "DELETE"); + Endpoints[3756] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/functions/{functionName}", "DELETE"); + Endpoints[3757] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/functions/{functionName}", "GET"); + Endpoints[3758] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/functions/{functionName}", "PUT"); + Endpoints[3759] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hostNameBindings/{hostName}", "DELETE"); + Endpoints[3760] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hostNameBindings/{hostName}", "PUT"); + Endpoints[3761] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hostNameBindings/{hostName}", "GET"); + Endpoints[3762] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridconnection/{entityName}", "PATCH"); + Endpoints[3763] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridconnection/{entityName}", "DELETE"); + Endpoints[3764] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridconnection/{entityName}", "PUT"); + Endpoints[3765] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridconnection/{entityName}", "GET"); + Endpoints[3766] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkFeatures/{view}", "GET"); + Endpoints[3767] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/operationresults/{operationId}", "GET"); + Endpoints[3768] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/premieraddons/{premierAddOnName}", "PUT"); + Endpoints[3769] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/premieraddons/{premierAddOnName}", "DELETE"); + Endpoints[3770] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/premieraddons/{premierAddOnName}", "GET"); + Endpoints[3771] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/processes/{processId}", "DELETE"); + Endpoints[3772] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/processes/{processId}", "GET"); + Endpoints[3773] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/publicCertificates/{publicCertificateName}", "DELETE"); + Endpoints[3774] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/publicCertificates/{publicCertificateName}", "PUT"); + Endpoints[3775] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/publicCertificates/{publicCertificateName}", "GET"); + Endpoints[3776] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/siteextensions/{siteExtensionId}", "PUT"); + Endpoints[3777] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/siteextensions/{siteExtensionId}", "GET"); + Endpoints[3778] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/siteextensions/{siteExtensionId}", "DELETE"); + Endpoints[3779] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}", "GET"); + Endpoints[3780] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}", "PUT"); + Endpoints[3781] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}", "DELETE"); + Endpoints[3782] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}", "PATCH"); + Endpoints[3783] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/triggeredwebjobs/{webJobName}", "GET"); + Endpoints[3784] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/triggeredwebjobs/{webJobName}", "DELETE"); + Endpoints[3785] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/virtualNetworkConnections/{vnetName}", "PATCH"); + Endpoints[3786] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/virtualNetworkConnections/{vnetName}", "DELETE"); + Endpoints[3787] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/virtualNetworkConnections/{vnetName}", "PUT"); + Endpoints[3788] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/virtualNetworkConnections/{vnetName}", "GET"); + Endpoints[3789] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/webjobs/{webJobName}", "GET"); + Endpoints[3790] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/detectors/{detectorName}", "GET"); + Endpoints[3791] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/diagnostics/{diagnosticCategory}", "GET"); + Endpoints[3792] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/recommendations/{name}", "GET"); + Endpoints[3793] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroup/{resourceGroupName}/providers/Microsoft.MachineLearningServices/workspaces/{workspaceName}/computes/{computeName}/listKeys", "POST"); + Endpoints[3794] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}/projects/{projectName}/tasks", "GET"); + Endpoints[3795] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroup}/providers/Microsoft.AzureBridge.Admin/activations/{activationName}/products/{productName}/download", "POST"); + Endpoints[3796] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.AzureStack/registrations/{registrationName}/products/{productName}/listDetails", "POST"); + Endpoints[3797] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/diagnostics", "GET"); + Endpoints[3798] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues", "GET"); + Endpoints[3799] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations", "GET"); + Endpoints[3800] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operationsByTags", "GET"); + Endpoints[3801] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/policies", "GET"); + Endpoints[3802] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/policy", "PUT"); + Endpoints[3803] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/policy", "DELETE"); + Endpoints[3804] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/policy", "GET"); + Endpoints[3805] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/products", "GET"); + Endpoints[3806] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/releases", "PARAMETERS"); + Endpoints[3807] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/releases", "GET"); + Endpoints[3808] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/revisions", "PARAMETERS"); + Endpoints[3809] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/revisions", "GET"); + Endpoints[3810] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/schemas", "GET"); + Endpoints[3811] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/tagDescriptions", "GET"); + Endpoints[3812] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/tags", "GET"); + Endpoints[3813] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/backends/{backendid}/reconnect", "POST"); + Endpoints[3814] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/diagnostics/{diagnosticId}/loggers", "GET"); + Endpoints[3815] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/groups/{groupId}/users", "GET"); + Endpoints[3816] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/locations/{locationName}/networkstatus", "GET"); + Endpoints[3817] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/notifications/{notificationName}/recipientEmails", "GET"); + Endpoints[3818] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/notifications/{notificationName}/recipientUsers", "GET"); + Endpoints[3819] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/apis", "GET"); + Endpoints[3820] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/groups", "GET"); + Endpoints[3821] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/policies", "GET"); + Endpoints[3822] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/policy", "PUT"); + Endpoints[3823] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/policy", "GET"); + Endpoints[3824] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/policy", "DELETE"); + Endpoints[3825] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/subscriptions", "GET"); + Endpoints[3826] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/tags", "GET"); + Endpoints[3827] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/subscriptions/{sid}/regeneratePrimaryKey", "POST"); + Endpoints[3828] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/subscriptions/{sid}/regenerateSecondaryKey", "POST"); + Endpoints[3829] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{accessName}/git", "GET"); + Endpoints[3830] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{accessName}/regeneratePrimaryKey", "POST"); + Endpoints[3831] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{accessName}/regenerateSecondaryKey", "POST"); + Endpoints[3832] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{configurationName}/deploy", "POST"); + Endpoints[3833] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{configurationName}/save", "POST"); + Endpoints[3834] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{configurationName}/syncState", "GET"); + Endpoints[3835] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{configurationName}/validate", "POST"); + Endpoints[3836] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/users/{uid}/generateSsoUrl", "POST"); + Endpoints[3837] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/users/{uid}/groups", "GET"); + Endpoints[3838] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/users/{uid}/identities", "GET"); + Endpoints[3839] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/users/{uid}/subscriptions", "GET"); + Endpoints[3840] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/users/{uid}/token", "POST"); + Endpoints[3841] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/compilationjobs/{jobId}/streams", "GET"); + Endpoints[3842] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/configurations/{configurationName}/content", "GET"); + Endpoints[3843] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/jobs/{jobId}/output", "GET"); + Endpoints[3844] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/jobs/{jobId}/resume", "POST"); + Endpoints[3845] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/jobs/{jobId}/runbookContent", "GET"); + Endpoints[3846] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/jobs/{jobId}/stop", "POST"); + Endpoints[3847] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/jobs/{jobId}/streams", "GET"); + Endpoints[3848] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/jobs/{jobId}/suspend", "POST"); + Endpoints[3849] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/modules/{moduleName}/activities", "GET"); + Endpoints[3850] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/nodes/{nodeId}/reports", "GET"); + Endpoints[3851] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/objectDataTypes/{typeName}/fields", "GET"); + Endpoints[3852] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/runbooks/{runbookName}/content", "GET"); + Endpoints[3853] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/runbooks/{runbookName}/draft", "GET"); + Endpoints[3854] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/sourceControls/{sourceControlName}/sourceControlSyncJobs", "GET"); + Endpoints[3855] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/watchers/{watcherName}/start", "POST"); + Endpoints[3856] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/watchers/{watcherName}/stop", "POST"); + Endpoints[3857] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Backup.Admin/backupLocations/{location}/backups/{backup}/restore", "POST"); + Endpoints[3858] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/certificates/{certificateName}/cancelDelete", "POST"); + Endpoints[3859] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/pools/{poolName}/disableAutoScale", "POST"); + Endpoints[3860] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/pools/{poolName}/stopResize", "POST"); + Endpoints[3861] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/clusters/{clusterName}/listRemoteLoginInformation", "POST"); + Endpoints[3862] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/experiments/{experimentName}/jobs", "GET"); + Endpoints[3863] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}/channels/{channelName}/listChannelWithKeys", "POST"); + Endpoints[3864] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{resourceName}/Connections/{connectionName}/listWithSecrets", "POST"); + Endpoints[3865] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/checkResourceUsage", "POST"); + Endpoints[3866] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/customDomains", "GET"); + Endpoints[3867] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/load", "POST"); + Endpoints[3868] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/origins", "GET"); + Endpoints[3869] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/purge", "POST"); + Endpoints[3870] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/start", "POST"); + Endpoints[3871] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/stop", "POST"); + Endpoints[3872] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/validateCustomDomain", "POST"); + Endpoints[3873] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/images/{galleryImageName}/versions", "GET"); + Endpoints[3874] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces", "GET"); + Endpoints[3875] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/deallocate", "POST"); + Endpoints[3876] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/instanceView", "GET"); + Endpoints[3877] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/performMaintenance", "POST"); + Endpoints[3878] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/poweroff", "POST"); + Endpoints[3879] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/redeploy", "POST"); + Endpoints[3880] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/reimage", "POST"); + Endpoints[3881] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/reimageall", "POST"); + Endpoints[3882] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/restart", "POST"); + Endpoints[3883] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/start", "POST"); + Endpoints[3884] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerInstance/containerGroups/{containerGroupName}/containers/{containerName}/exec", "POST"); + Endpoints[3885] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerInstance/containerGroups/{containerGroupName}/containers/{containerName}/logs", "GET"); + Endpoints[3886] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/builds/{buildId}/cancel", "POST"); + Endpoints[3887] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/builds/{buildId}/getLogLink", "POST"); + Endpoints[3888] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/buildTasks/{buildTaskName}/listSourceRepositoryProperties", "POST"); + Endpoints[3889] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/buildTasks/{buildTaskName}/steps", "GET"); + Endpoints[3890] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/webhooks/{webhookName}/getCallbackConfig", "POST"); + Endpoints[3891] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/webhooks/{webhookName}/listEvents", "POST"); + Endpoints[3892] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/webhooks/{webhookName}/ping", "POST"); + Endpoints[3893] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/accessProfiles/{roleName}/listCredential", "POST"); + Endpoints[3894] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/authorizationPolicies/{authorizationPolicyName}/regeneratePrimaryKey", "POST"); + Endpoints[3895] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/authorizationPolicies/{authorizationPolicyName}/regenerateSecondaryKey", "POST"); + Endpoints[3896] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/connectors/{connectorName}/mappings", "GET"); + Endpoints[3897] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/interactions/{interactionName}/suggestRelationshipLinks", "POST"); + Endpoints[3898] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/kpi/{kpiName}/reprocess", "POST"); + Endpoints[3899] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/predictions/{predictionName}/getModelStatus", "POST"); + Endpoints[3900] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/predictions/{predictionName}/getTrainingResults", "POST"); + Endpoints[3901] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/predictions/{predictionName}/modelStatus", "POST"); + Endpoints[3902] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/profiles/{profileName}/getEnrichingKpis", "POST"); + Endpoints[3903] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}/getConnectionInfo", "POST"); + Endpoints[3904] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}/getStatus", "POST"); + Endpoints[3905] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}/listAuthKeys", "POST"); + Endpoints[3906] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}/monitoringData", "POST"); + Endpoints[3907] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}/regenerateAuthKey", "POST"); + Endpoints[3908] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}/removeNode", "POST"); + Endpoints[3909] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}/start", "POST"); + Endpoints[3910] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}/stop", "POST"); + Endpoints[3911] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}/syncCredentials", "POST"); + Endpoints[3912] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}/upgrade", "POST"); + Endpoints[3913] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/pipelineruns/{runId}/activityruns", "GET"); + Endpoints[3914] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/pipelines/{pipelineName}/createRun", "POST"); + Endpoints[3915] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/triggers/{triggerName}/start", "POST"); + Endpoints[3916] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/triggers/{triggerName}/stop", "POST"); + Endpoints[3917] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/triggers/{triggerName}/triggerruns", "GET"); + Endpoints[3918] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/storageAccounts/{storageAccountName}/containers", "GET"); + Endpoints[3919] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/certificates/{certificateName}/generateVerificationCode", "POST"); + Endpoints[3920] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/certificates/{certificateName}/verify", "POST"); + Endpoints[3921] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/eventHubEndpoints/{eventHubEndpointName}/ConsumerGroups", "GET"); + Endpoints[3922] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/IotHubKeys/{keyName}/listkeys", "POST"); + Endpoints[3923] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/provisioningServices/{provisioningServiceName}/certificates/{certificateName}/generateVerificationCode", "POST"); + Endpoints[3924] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/provisioningServices/{provisioningServiceName}/certificates/{certificateName}/verify", "POST"); + Endpoints[3925] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/provisioningServices/{provisioningServiceName}/keys/{keyName}/listkeys", "POST"); + Endpoints[3926] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{artifactSourceName}/armtemplates", "GET"); + Endpoints[3927] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{artifactSourceName}/artifacts", "GET"); + Endpoints[3928] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/costinsights/{name}/refreshData", "POST"); + Endpoints[3929] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/costs/{name}/refreshData", "POST"); + Endpoints[3930] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/notificationchannels/{name}/notify", "POST"); + Endpoints[3931] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/policysets/{name}/evaluatePolicies", "POST"); + Endpoints[3932] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/policysets/{policySetName}/policies", "GET"); + Endpoints[3933] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/schedules/{name}/execute", "POST"); + Endpoints[3934] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/schedules/{name}/listApplicable", "POST"); + Endpoints[3935] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{userName}/disks", "GET"); + Endpoints[3936] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{userName}/environments", "GET"); + Endpoints[3937] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{userName}/secrets", "GET"); + Endpoints[3938] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{name}/addDataDisk", "POST"); + Endpoints[3939] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{name}/applyArtifacts", "POST"); + Endpoints[3940] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{name}/claim", "POST"); + Endpoints[3941] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{name}/detachDataDisk", "POST"); + Endpoints[3942] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{name}/listApplicableSchedules", "POST"); + Endpoints[3943] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{name}/start", "POST"); + Endpoints[3944] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{name}/stop", "POST"); + Endpoints[3945] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{virtualMachineName}/schedules", "GET"); + Endpoints[3946] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/databases/{databaseRid}/metricDefinitions", "GET"); + Endpoints[3947] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/databases/{databaseRid}/metrics", "GET"); + Endpoints[3948] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/databases/{databaseRid}/usages", "GET"); + Endpoints[3949] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/region/{region}/metrics", "GET"); + Endpoints[3950] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventGrid/locations/{location}/topicTypes/{topicTypeName}/eventSubscriptions", "GET"); + Endpoints[3951] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}/listKeys", "POST"); + Endpoints[3952] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}/regenerateKeys", "POST"); + Endpoints[3953] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/disasterRecoveryConfigs/{alias}/AuthorizationRules", "GET"); + Endpoints[3954] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/disasterRecoveryConfigs/{alias}/breakPairing", "POST"); + Endpoints[3955] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/disasterRecoveryConfigs/{alias}/failover", "POST"); + Endpoints[3956] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/eventhubs/{eventHubName}/authorizationRules", "GET"); + Endpoints[3957] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/eventhubs/{eventHubName}/consumergroups", "GET"); + Endpoints[3958] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/infraRoleInstances/{infraRoleInstance}/PowerOff", "POST"); + Endpoints[3959] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/infraRoleInstances/{infraRoleInstance}/PowerOn", "POST"); + Endpoints[3960] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/infraRoleInstances/{infraRoleInstance}/Reboot", "POST"); + Endpoints[3961] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/infraRoleInstances/{infraRoleInstance}/Shutdown", "POST"); + Endpoints[3962] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/infraRoles/{infraRole}/Restart", "POST"); + Endpoints[3963] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/logicalNetworks/{logicalNetwork}/logicalSubnets", "GET"); + Endpoints[3964] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/scaleUnitNodes/{scaleUnitNode}/PowerOff", "POST"); + Endpoints[3965] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/scaleUnitNodes/{scaleUnitNode}/PowerOn", "POST"); + Endpoints[3966] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/scaleUnitNodes/{scaleUnitNode}/Repair", "POST"); + Endpoints[3967] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/scaleUnitNodes/{scaleUnitNode}/Shutdown", "POST"); + Endpoints[3968] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/scaleUnitNodes/{scaleUnitNode}/StartMaintenanceMode", "POST"); + Endpoints[3969] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/scaleUnitNodes/{scaleUnitNode}/StopMaintenanceMode", "POST"); + Endpoints[3970] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/scaleUnits/{scaleUnit}/ScaleOut", "POST"); + Endpoints[3971] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/storageSubSystems/{storageSubSystem}/storagePools", "GET"); + Endpoints[3972] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/roles/{roleName}/resize", "POST"); + Endpoints[3973] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/scriptExecutionHistory/{scriptExecutionId}/promote", "POST"); + Endpoints[3974] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.InfrastructureInsights.Admin/regionHealths/{location}/serviceHealths/{serviceRegistrationId}/resourceHealths", "GET"); + Endpoints[3975] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/agreements/{agreementName}/listContentCallbackUrl", "POST"); + Endpoints[3976] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/assemblies/{assemblyArtifactName}/listContentCallbackUrl", "POST"); + Endpoints[3977] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/maps/{mapName}/listContentCallbackUrl", "POST"); + Endpoints[3978] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/partners/{partnerName}/listContentCallbackUrl", "POST"); + Endpoints[3979] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationAccounts/{integrationAccountName}/schemas/{schemaName}/listContentCallbackUrl", "POST"); + Endpoints[3980] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/locations/{location}/workflows/{workflowName}/validate", "POST"); + Endpoints[3981] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/accessKeys/{accessKeyName}/list", "POST"); + Endpoints[3982] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/accessKeys/{accessKeyName}/regenerate", "POST"); + Endpoints[3983] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs/{runName}/actions", "GET"); + Endpoints[3984] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs/{runName}/cancel", "POST"); + Endpoints[3985] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/triggers/{triggerName}/histories", "GET"); + Endpoints[3986] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/triggers/{triggerName}/listCallbackUrl", "POST"); + Endpoints[3987] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/triggers/{triggerName}/reset", "POST"); + Endpoints[3988] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/triggers/{triggerName}/run", "POST"); + Endpoints[3989] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/triggers/{triggerName}/setState", "POST"); + Endpoints[3990] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearning/commitmentPlans/{commitmentPlanName}/commitmentAssociations/{commitmentAssociationName}/move", "POST"); + Endpoints[3991] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/assets/{assetName}/getEncryptionKey", "POST"); + Endpoints[3992] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/assets/{assetName}/listContainerSas", "POST"); + Endpoints[3993] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/contentKeyPolicies/{contentKeyPolicyName}/getPolicyPropertiesWithSecrets", "POST"); + Endpoints[3994] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/liveEvents/{liveEventName}/liveOutputs", "GET"); + Endpoints[3995] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/liveEvents/{liveEventName}/reset", "POST"); + Endpoints[3996] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/liveEvents/{liveEventName}/start", "POST"); + Endpoints[3997] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/liveEvents/{liveEventName}/stop", "POST"); + Endpoints[3998] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/streamingEndpoints/{streamingEndpointName}/scale", "POST"); + Endpoints[3999] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/streamingEndpoints/{streamingEndpointName}/start", "POST"); + Endpoints[4000] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/streamingEndpoints/{streamingEndpointName}/stop", "POST"); + Endpoints[4001] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/streamingLocators/{streamingLocatorName}/listContentKeys", "POST"); + Endpoints[4002] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/streamingLocators/{streamingLocatorName}/listPaths", "POST"); + Endpoints[4003] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/transforms/{transformName}/jobs", "GET"); + Endpoints[4004] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/groups/{groupName}/assessments", "GET"); + Endpoints[4005] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/stats", "GET"); + Endpoints[4006] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/query", "POST"); + Endpoints[4007] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/start", "POST"); + Endpoints[4008] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/connectionMonitors/{connectionMonitorName}/stop", "POST"); + Endpoints[4009] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}/queryStatus", "POST"); + Endpoints[4010] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}/stop", "POST"); + Endpoints[4011] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}/listKeys", "POST"); + Endpoints[4012] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}/regenerateKeys", "POST"); + Endpoints[4013] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/AuthorizationRules", "POST"); + Endpoints[4014] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/AuthorizationRules", "GET"); + Endpoints[4015] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/pnsCredentials", "POST"); + Endpoints[4016] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/intelligencePacks/{intelligencePackName}/Disable", "POST"); + Endpoints[4017] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/intelligencePacks/{intelligencePackName}/Enable", "POST"); + Endpoints[4018] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/savedSearches/{savedSearchName}/results", "GET"); + Endpoints[4019] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/checkConsistency", "POST"); + Endpoints[4020] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/migratetoaad", "POST"); + Endpoints[4021] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/reassociateGateway", "POST"); + Endpoints[4022] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/remove", "POST"); + Endpoints[4023] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/renewCertificate", "POST"); + Endpoints[4024] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationLogicalNetworks", "GET"); + Endpoints[4025] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationNetworks", "GET"); + Endpoints[4026] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers", "GET"); + Endpoints[4027] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationRecoveryServicesProviders", "GET"); + Endpoints[4028] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationStorageClassifications", "GET"); + Endpoints[4029] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationvCenters", "GET"); + Endpoints[4030] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationJobs/{jobName}/cancel", "POST"); + Endpoints[4031] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationJobs/{jobName}/restart", "POST"); + Endpoints[4032] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationJobs/{jobName}/resume", "POST"); + Endpoints[4033] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationRecoveryPlans/{recoveryPlanName}/failoverCommit", "POST"); + Endpoints[4034] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationRecoveryPlans/{recoveryPlanName}/plannedFailover", "POST"); + Endpoints[4035] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationRecoveryPlans/{recoveryPlanName}/reProtect", "POST"); + Endpoints[4036] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationRecoveryPlans/{recoveryPlanName}/testFailover", "POST"); + Endpoints[4037] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationRecoveryPlans/{recoveryPlanName}/testFailoverCleanup", "POST"); + Endpoints[4038] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationRecoveryPlans/{recoveryPlanName}/unplannedFailover", "POST"); + Endpoints[4039] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectableContainers", "GET"); + Endpoints[4040] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/refreshContainers", "POST"); + Endpoints[4041] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupJobs/{jobName}/cancel", "POST"); + Endpoints[4042] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/authorizationRules/{authorizationRuleName}/listKeys", "POST"); + Endpoints[4043] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/authorizationRules/{authorizationRuleName}/regenerateKeys", "POST"); + Endpoints[4044] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/hybridConnections/{hybridConnectionName}/authorizationRules", "GET"); + Endpoints[4045] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/HybridConnections/{hybridConnectionName}/authorizationRules", "POST"); + Endpoints[4046] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/wcfRelays/{relayName}/authorizationRules", "GET"); + Endpoints[4047] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/WcfRelays/{relayName}/authorizationRules", "POST"); + Endpoints[4048] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Scheduler/jobCollections/{jobCollectionName}/jobs/{jobName}/history", "GET"); + Endpoints[4049] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Scheduler/jobCollections/{jobCollectionName}/jobs/{jobName}/run", "POST"); + Endpoints[4050] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}/listKeys", "POST"); + Endpoints[4051] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/AuthorizationRules/{authorizationRuleName}/regenerateKeys", "POST"); + Endpoints[4052] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/disasterRecoveryConfigs/{alias}/AuthorizationRules", "GET"); + Endpoints[4053] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/disasterRecoveryConfigs/{alias}/breakPairing", "POST"); + Endpoints[4054] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/disasterRecoveryConfigs/{alias}/failover", "POST"); + Endpoints[4055] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/eventhubs/{eventhubName}/authorizationRules", "GET"); + Endpoints[4056] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/migrationConfigurations/{configName}/revert", "POST"); + Endpoints[4057] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/migrationConfigurations/{configName}/upgrade", "POST"); + Endpoints[4058] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/queues/{queueName}/authorizationRules", "GET"); + Endpoints[4059] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics/{topicName}/authorizationRules", "GET"); + Endpoints[4060] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics/{topicName}/subscriptions", "GET"); + Endpoints[4061] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services", "GET"); + Endpoints[4062] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions", "GET"); + Endpoints[4063] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/locations/{locationName}/instanceFailoverGroups/{failoverGroupName}/failover", "POST"); + Endpoints[4064] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/locations/{locationName}/instanceFailoverGroups/{failoverGroupName}/forceFailoverAllowDataLoss", "POST"); + Endpoints[4065] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/advisors", "GET"); + Endpoints[4066] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/auditingPolicies", "GET"); + Endpoints[4067] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/backupLongTermRetentionPolicies", "GET"); + Endpoints[4068] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/export", "POST"); + Endpoints[4069] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/extensions", "GET"); + Endpoints[4070] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/geoBackupPolicies", "GET"); + Endpoints[4071] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/metricDefinitions", "GET"); + Endpoints[4072] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/metrics", "GET"); + Endpoints[4073] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/move", "POST"); + Endpoints[4074] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/operations", "GET"); + Endpoints[4075] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/pause", "POST"); + Endpoints[4076] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/replicationLinks", "GET"); + Endpoints[4077] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/restorePoints", "POST"); + Endpoints[4078] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/restorePoints", "GET"); + Endpoints[4079] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/resume", "POST"); + Endpoints[4080] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/serviceTierAdvisors", "GET"); + Endpoints[4081] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/syncGroups", "GET"); + Endpoints[4082] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/topQueries", "GET"); + Endpoints[4083] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/transparentDataEncryption", "GET"); + Endpoints[4084] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/upgradeDataWarehouse", "POST"); + Endpoints[4085] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/usages", "GET"); + Endpoints[4086] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/disasterRecoveryConfiguration/{disasterRecoveryConfigurationName}/failover", "POST"); + Endpoints[4087] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/disasterRecoveryConfiguration/{disasterRecoveryConfigurationName}/forceFailoverAllowDataLoss", "POST"); + Endpoints[4088] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/dnsAliases/{dnsAliasName}/acquire", "POST"); + Endpoints[4089] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/elasticPools/{elasticPoolName}/databases", "GET"); + Endpoints[4090] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/elasticPools/{elasticPoolName}/elasticPoolActivity", "GET"); + Endpoints[4091] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/elasticPools/{elasticPoolName}/elasticPoolDatabaseActivity", "GET"); + Endpoints[4092] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/elasticPools/{elasticPoolName}/metricDefinitions", "GET"); + Endpoints[4093] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/elasticPools/{elasticPoolName}/metrics", "GET"); + Endpoints[4094] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/elasticPools/{elasticPoolName}/operations", "GET"); + Endpoints[4095] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/failoverGroups/{failoverGroupName}/failover", "POST"); + Endpoints[4096] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/failoverGroups/{failoverGroupName}/forceFailoverAllowDataLoss", "POST"); + Endpoints[4097] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/credentials", "GET"); + Endpoints[4098] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/executions", "GET"); + Endpoints[4099] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs", "GET"); + Endpoints[4100] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/targetGroups", "GET"); + Endpoints[4101] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/recommendedElasticPools/{recommendedElasticPoolName}/databases", "GET"); + Endpoints[4102] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/recommendedElasticPools/{recommendedElasticPoolName}/metrics", "GET"); + Endpoints[4103] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/syncAgents/{syncAgentName}/generateKey", "POST"); + Endpoints[4104] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/syncAgents/{syncAgentName}/linkedDatabases", "GET"); + Endpoints[4105] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/blobservices/{serviceType}/metricdefinitions", "GET"); + Endpoints[4106] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/blobservices/{serviceType}/metrics", "GET"); + Endpoints[4107] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/queueservices/{serviceType}/metricdefinitions", "GET"); + Endpoints[4108] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/queueservices/{serviceType}/metrics", "GET"); + Endpoints[4109] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/shares/{shareName}/containers", "GET"); + Endpoints[4110] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/shares/{shareName}/destinationshares", "GET"); + Endpoints[4111] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/shares/{shareName}/metricdefinitions", "GET"); + Endpoints[4112] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/shares/{shareName}/metrics", "GET"); + Endpoints[4113] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/shares/{shareName}/migrate", "POST"); + Endpoints[4114] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/tableservices/{serviceType}/metricdefinitions", "GET"); + Endpoints[4115] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Storage.Admin/farms/{farmId}/tableservices/{serviceType}/metrics", "GET"); + Endpoints[4116] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/authorizeForServiceEncryptionKeyRollover", "POST"); + Endpoints[4117] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/backupPolicies", "GET"); + Endpoints[4118] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/backups", "GET"); + Endpoints[4119] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/deactivate", "POST"); + Endpoints[4120] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/hardwareComponentGroups", "GET"); + Endpoints[4121] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/installUpdates", "POST"); + Endpoints[4122] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/jobs", "GET"); + Endpoints[4123] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/listFailoverSets", "POST"); + Endpoints[4124] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/metrics", "GET"); + Endpoints[4125] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/metricsDefinitions", "GET"); + Endpoints[4126] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/publicEncryptionKey", "POST"); + Endpoints[4127] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/scanForUpdates", "POST"); + Endpoints[4128] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/sendTestAlertEmail", "POST"); + Endpoints[4129] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/volumeContainers", "GET"); + Endpoints[4130] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/volumes", "GET"); + Endpoints[4131] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{sourceDeviceName}/failover", "POST"); + Endpoints[4132] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{sourceDeviceName}/listFailoverTargets", "POST"); + Endpoints[4133] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/functions/{functionName}/RetrieveDefaultDefinition", "POST"); + Endpoints[4134] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/functions/{functionName}/test", "POST"); + Endpoints[4135] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/inputs/{inputName}/test", "POST"); + Endpoints[4136] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobName}/outputs/{outputName}/test", "POST"); + Endpoints[4137] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Update.Admin/updateLocations/{updateLocation}/updates/{updateName}/Apply", "POST"); + Endpoints[4138] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Update.Admin/updateLocations/{updateLocation}/updates/{updateName}/updateRuns", "GET"); + Endpoints[4139] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools/{workerPoolName}/metricdefinitions", "GET"); + Endpoints[4140] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools/{workerPoolName}/metrics", "GET"); + Endpoints[4141] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools/{workerPoolName}/skus", "GET"); + Endpoints[4142] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools/{workerPoolName}/usages", "GET"); + Endpoints[4143] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/virtualNetworkConnections/{vnetName}/routes", "GET"); + Endpoints[4144] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/workers/{workerName}/reboot", "POST"); + Endpoints[4145] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/backups/{backupId}/list", "POST"); + Endpoints[4146] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/backups/{backupId}/restore", "POST"); + Endpoints[4147] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/continuouswebjobs/{webJobName}/start", "POST"); + Endpoints[4148] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/continuouswebjobs/{webJobName}/stop", "POST"); + Endpoints[4149] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/deployments/{id}/log", "GET"); + Endpoints[4150] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/functions/{functionName}/listsecrets", "POST"); + Endpoints[4151] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/deployments", "GET"); + Endpoints[4152] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/processes", "GET"); + Endpoints[4153] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/processes/{processId}/dump", "GET"); + Endpoints[4154] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/processes/{processId}/modules", "GET"); + Endpoints[4155] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/processes/{processId}/threads", "GET"); + Endpoints[4156] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/analyzeCustomHostname", "GET"); + Endpoints[4157] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/applySlotConfig", "POST"); + Endpoints[4158] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/backup", "POST"); + Endpoints[4159] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/backups", "GET"); + Endpoints[4160] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config", "GET"); + Endpoints[4161] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/containerlogs", "POST"); + Endpoints[4162] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/continuouswebjobs", "GET"); + Endpoints[4163] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/deployments", "GET"); + Endpoints[4164] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/domainOwnershipIdentifiers", "GET"); + Endpoints[4165] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/functions", "GET"); + Endpoints[4166] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hostNameBindings", "GET"); + Endpoints[4167] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridconnection", "GET"); + Endpoints[4168] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridConnectionRelays", "GET"); + Endpoints[4169] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances", "GET"); + Endpoints[4170] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/iscloneable", "POST"); + Endpoints[4171] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/listsyncfunctiontriggerstatus", "POST"); + Endpoints[4172] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/metricdefinitions", "GET"); + Endpoints[4173] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/metrics", "GET"); + Endpoints[4174] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/newpassword", "POST"); + Endpoints[4175] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/perfcounters", "GET"); + Endpoints[4176] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/phplogging", "GET"); + Endpoints[4177] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/premieraddons", "GET"); + Endpoints[4178] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/processes", "GET"); + Endpoints[4179] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/publicCertificates", "GET"); + Endpoints[4180] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/publishxml", "POST"); + Endpoints[4181] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/recover", "POST"); + Endpoints[4182] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/resetSlotConfig", "POST"); + Endpoints[4183] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/resourceHealthMetadata", "GET"); + Endpoints[4184] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/restart", "POST"); + Endpoints[4185] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/restoreFromBackupBlob", "POST"); + Endpoints[4186] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/restoreFromDeletedApp", "POST"); + Endpoints[4187] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/restoreSnapshot", "POST"); + Endpoints[4188] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/siteextensions", "GET"); + Endpoints[4189] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/slotsdiffs", "POST"); + Endpoints[4190] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/slotsswap", "POST"); + Endpoints[4191] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/snapshots", "GET"); + Endpoints[4192] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/snapshots", "PUT"); + Endpoints[4193] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/start", "POST"); + Endpoints[4194] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/stop", "POST"); + Endpoints[4195] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/sync", "POST"); + Endpoints[4196] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/syncfunctiontriggers", "POST"); + Endpoints[4197] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/triggeredwebjobs", "GET"); + Endpoints[4198] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/usages", "GET"); + Endpoints[4199] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/virtualNetworkConnections", "GET"); + Endpoints[4200] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/webjobs", "GET"); + Endpoints[4201] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/triggeredwebjobs/{webJobName}/history", "GET"); + Endpoints[4202] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/triggeredwebjobs/{webJobName}/run", "POST"); + Endpoints[4203] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/diagnostics/{diagnosticCategory}/analyses", "GET"); + Endpoints[4204] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/diagnostics/{diagnosticCategory}/detectors", "GET"); + Endpoints[4205] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/recommendations/{name}/disable", "POST"); + Endpoints[4206] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slot}/detectors", "GET"); + Endpoints[4207] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slot}/diagnostics", "GET"); + Endpoints[4208] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{accessName}/git/regeneratePrimaryKey", "POST"); + Endpoints[4209] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/{accessName}/git/regenerateSecondaryKey", "POST"); + Endpoints[4210] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/runbooks/{runbookName}/draft/content", "PUT"); + Endpoints[4211] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/runbooks/{runbookName}/draft/content", "GET"); + Endpoints[4212] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/runbooks/{runbookName}/draft/publish", "POST"); + Endpoints[4213] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/runbooks/{runbookName}/draft/testJob", "GET"); + Endpoints[4214] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/runbooks/{runbookName}/draft/testJob", "PUT"); + Endpoints[4215] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/runbooks/{runbookName}/draft/undoEdit", "POST"); + Endpoints[4216] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/targetRegion/{targetRegion}/percentile/metrics", "GET"); + Endpoints[4217] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/triggers/{triggerName}/schemas/json", "GET"); + Endpoints[4218] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/automaticTuning/current", "GET"); + Endpoints[4219] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/automaticTuning/current", "PATCH"); + Endpoints[4220] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/alertSettings/default", "GET"); + Endpoints[4221] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/alertSettings/default", "PUT"); + Endpoints[4222] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/networkSettings/default", "GET"); + Endpoints[4223] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/networkSettings/default", "PATCH"); + Endpoints[4224] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/securitySettings/default", "GET"); + Endpoints[4225] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/securitySettings/default", "PATCH"); + Endpoints[4226] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/timeSettings/default", "GET"); + Endpoints[4227] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/timeSettings/default", "PUT"); + Endpoints[4228] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/updateSummary/default", "GET"); + Endpoints[4229] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/extensions/MSDeploy", "PUT"); + Endpoints[4230] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/extensions/MSDeploy", "GET"); + Endpoints[4231] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/backups/discover", "PUT"); + Endpoints[4232] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/appsettings", "PUT"); + Endpoints[4233] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/authsettings", "PUT"); + Endpoints[4234] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/backup", "DELETE"); + Endpoints[4235] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/backup", "PUT"); + Endpoints[4236] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/connectionstrings", "PUT"); + Endpoints[4237] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/logs", "GET"); + Endpoints[4238] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/logs", "PUT"); + Endpoints[4239] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/metadata", "PUT"); + Endpoints[4240] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/pushsettings", "PUT"); + Endpoints[4241] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/web", "GET"); + Endpoints[4242] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/web", "PUT"); + Endpoints[4243] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/web", "PATCH"); + Endpoints[4244] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/extensions/MSDeploy", "GET"); + Endpoints[4245] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/extensions/MSDeploy", "PUT"); + Endpoints[4246] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/migratemysql/status", "GET"); + Endpoints[4247] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkTrace/start", "POST"); + Endpoints[4248] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkTrace/stop", "POST"); + Endpoints[4249] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/privateAccess/virtualNetworks", "GET"); + Endpoints[4250] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/privateAccess/virtualNetworks", "PUT"); + Endpoints[4251] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/resourceHealthMetadata/default", "GET"); + Endpoints[4252] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/sourcecontrols/web", "PUT"); + Endpoints[4253] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/sourcecontrols/web", "GET"); + Endpoints[4254] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/sourcecontrols/web", "DELETE"); + Endpoints[4255] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/sourcecontrols/web", "PATCH"); + Endpoints[4256] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/runbooks/{runbookName}/draft/testJob/resume", "POST"); + Endpoints[4257] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/runbooks/{runbookName}/draft/testJob/stop", "POST"); + Endpoints[4258] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/runbooks/{runbookName}/draft/testJob/streams", "GET"); + Endpoints[4259] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/runbooks/{runbookName}/draft/testJob/suspend", "POST"); + Endpoints[4260] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/nodes/{nodeName}/sessions/{session}/features/powerShellConsole/pssessions", "GET"); + Endpoints[4261] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/securitySettings/default/syncRemoteManagementCertificate", "POST"); + Endpoints[4262] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/extensions/MSDeploy/log", "GET"); + Endpoints[4263] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/appsettings/list", "POST"); + Endpoints[4264] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/authsettings/list", "POST"); + Endpoints[4265] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/backup/list", "POST"); + Endpoints[4266] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/connectionstrings/list", "POST"); + Endpoints[4267] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/metadata/list", "POST"); + Endpoints[4268] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/publishingcredentials/list", "POST"); + Endpoints[4269] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/pushsettings/list", "POST"); + Endpoints[4270] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/web/snapshots", "GET"); + Endpoints[4271] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/containerlogs/zip/download", "POST"); + Endpoints[4272] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/extensions/MSDeploy/log", "GET"); + Endpoints[4273] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/functions/admin/token", "GET"); + Endpoints[4274] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/runbooks/{runbookName}/draft/testJob/streams/{jobStreamId}", "GET"); + Endpoints[4275] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/nodes/{nodeName}/sessions/{session}/features/powerShellConsole/pssessions/{pssession}", "PUT"); + Endpoints[4276] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/nodes/{nodeName}/sessions/{session}/features/powerShellConsole/pssessions/{pssession}", "GET"); + Endpoints[4277] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/nodes/{nodeName}/sessions/{session}/features/powerShellConsole/pssessions/{pssession}", "PATCH"); + Endpoints[4278] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/web/snapshots/{snapshotId}", "GET"); + Endpoints[4279] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/nodes/{nodeName}/sessions/{session}/features/powerShellConsole/pssessions/{pssession}/cancel", "POST"); + Endpoints[4280] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/nodes/{nodeName}/sessions/{session}/features/powerShellConsole/pssessions/{pssession}/invokeCommand", "POST"); + Endpoints[4281] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServerManagement/nodes/{nodeName}/sessions/{session}/features/powerShellConsole/pssessions/{pssession}/tab", "POST"); + Endpoints[4282] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/web/snapshots/{snapshotId}/recover", "POST"); + Endpoints[4283] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}/projects/{projectName}/tasks/{taskName}", "DELETE"); + Endpoints[4284] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}/projects/{projectName}/tasks/{taskName}", "PATCH"); + Endpoints[4285] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}/projects/{projectName}/tasks/{taskName}", "GET"); + Endpoints[4286] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}/projects/{projectName}/tasks/{taskName}", "PUT"); + Endpoints[4287] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}/projects/{projectName}/tasks/{taskName}", "PARAMETERS"); + Endpoints[4288] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/diagnostics/{diagnosticId}", "HEAD"); + Endpoints[4289] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/diagnostics/{diagnosticId}", "PUT"); + Endpoints[4290] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/diagnostics/{diagnosticId}", "PATCH"); + Endpoints[4291] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/diagnostics/{diagnosticId}", "DELETE"); + Endpoints[4292] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/diagnostics/{diagnosticId}", "GET"); + Endpoints[4293] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}", "PUT"); + Endpoints[4294] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}", "GET"); + Endpoints[4295] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}", "HEAD"); + Endpoints[4296] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}", "DELETE"); + Endpoints[4297] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}", "PUT"); + Endpoints[4298] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}", "GET"); + Endpoints[4299] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}", "HEAD"); + Endpoints[4300] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}", "DELETE"); + Endpoints[4301] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}", "PATCH"); + Endpoints[4302] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/policies/{policyId}", "DELETE"); + Endpoints[4303] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/policies/{policyId}", "GET"); + Endpoints[4304] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/policies/{policyId}", "HEAD"); + Endpoints[4305] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/policies/{policyId}", "PUT"); + Endpoints[4306] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/releases/{releaseId}", "PATCH"); + Endpoints[4307] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/releases/{releaseId}", "PUT"); + Endpoints[4308] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/releases/{releaseId}", "GET"); + Endpoints[4309] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/releases/{releaseId}", "DELETE"); + Endpoints[4310] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/releases/{releaseId}", "PARAMETERS"); + Endpoints[4311] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/releases/{releaseId}", "HEAD"); + Endpoints[4312] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/schemas/{schemaId}", "HEAD"); + Endpoints[4313] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/schemas/{schemaId}", "GET"); + Endpoints[4314] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/schemas/{schemaId}", "PUT"); + Endpoints[4315] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/schemas/{schemaId}", "DELETE"); + Endpoints[4316] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/tagDescriptions/{tagId}", "PUT"); + Endpoints[4317] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/tagDescriptions/{tagId}", "GET"); + Endpoints[4318] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/tagDescriptions/{tagId}", "HEAD"); + Endpoints[4319] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/tagDescriptions/{tagId}", "DELETE"); + Endpoints[4320] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/tags/{tagId}", "DELETE"); + Endpoints[4321] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/tags/{tagId}", "PUT"); + Endpoints[4322] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/tags/{tagId}", "GET"); + Endpoints[4323] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/tags/{tagId}", "HEAD"); + Endpoints[4324] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/diagnostics/{diagnosticId}/loggers/{loggerid}", "DELETE"); + Endpoints[4325] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/diagnostics/{diagnosticId}/loggers/{loggerid}", "HEAD"); + Endpoints[4326] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/diagnostics/{diagnosticId}/loggers/{loggerid}", "PUT"); + Endpoints[4327] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/groups/{groupId}/users/{uid}", "PUT"); + Endpoints[4328] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/groups/{groupId}/users/{uid}", "HEAD"); + Endpoints[4329] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/groups/{groupId}/users/{uid}", "DELETE"); + Endpoints[4330] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/notifications/{notificationName}/recipientEmails/{email}", "HEAD"); + Endpoints[4331] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/notifications/{notificationName}/recipientEmails/{email}", "PUT"); + Endpoints[4332] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/notifications/{notificationName}/recipientEmails/{email}", "DELETE"); + Endpoints[4333] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/notifications/{notificationName}/recipientUsers/{uid}", "HEAD"); + Endpoints[4334] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/notifications/{notificationName}/recipientUsers/{uid}", "DELETE"); + Endpoints[4335] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/notifications/{notificationName}/recipientUsers/{uid}", "PUT"); + Endpoints[4336] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/apis/{apiId}", "DELETE"); + Endpoints[4337] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/apis/{apiId}", "HEAD"); + Endpoints[4338] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/apis/{apiId}", "PUT"); + Endpoints[4339] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/groups/{groupId}", "PUT"); + Endpoints[4340] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/groups/{groupId}", "HEAD"); + Endpoints[4341] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/groups/{groupId}", "DELETE"); + Endpoints[4342] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/policies/{policyId}", "GET"); + Endpoints[4343] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/policies/{policyId}", "HEAD"); + Endpoints[4344] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/policies/{policyId}", "DELETE"); + Endpoints[4345] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/policies/{policyId}", "PUT"); + Endpoints[4346] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/tags/{tagId}", "DELETE"); + Endpoints[4347] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/tags/{tagId}", "HEAD"); + Endpoints[4348] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/tags/{tagId}", "PUT"); + Endpoints[4349] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/tags/{tagId}", "GET"); + Endpoints[4350] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/quotas/{quotaCounterKey}/periods/{quotaPeriodKey}", "PATCH"); + Endpoints[4351] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/quotas/{quotaCounterKey}/periods/{quotaPeriodKey}", "GET"); + Endpoints[4352] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/compilationjobs/{jobId}/streams/{jobStreamId}", "GET"); + Endpoints[4353] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/jobs/{jobId}/streams/{jobStreamId}", "GET"); + Endpoints[4354] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/modules/{moduleName}/activities/{activityName}", "GET"); + Endpoints[4355] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/nodes/{nodeId}/reports/{reportId}", "GET"); + Endpoints[4356] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/sourceControls/{sourceControlName}/sourceControlSyncJobs/{sourceControlSyncJobId}", "GET"); + Endpoints[4357] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/sourceControls/{sourceControlName}/sourceControlSyncJobs/{sourceControlSyncJobId}", "PUT"); + Endpoints[4358] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/applications/{applicationId}/versions/{version}", "GET"); + Endpoints[4359] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/applications/{applicationId}/versions/{version}", "PUT"); + Endpoints[4360] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/applications/{applicationId}/versions/{version}", "DELETE"); + Endpoints[4361] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/experiments/{experimentName}/jobs/{jobName}", "GET"); + Endpoints[4362] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/experiments/{experimentName}/jobs/{jobName}", "PUT"); + Endpoints[4363] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/experiments/{experimentName}/jobs/{jobName}", "DELETE"); + Endpoints[4364] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/customDomains/{customDomainName}", "GET"); + Endpoints[4365] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/customDomains/{customDomainName}", "PUT"); + Endpoints[4366] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/customDomains/{customDomainName}", "DELETE"); + Endpoints[4367] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/customDomains/{customDomainName}", "PATCH"); + Endpoints[4368] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/origins/{originName}", "DELETE"); + Endpoints[4369] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/origins/{originName}", "PATCH"); + Endpoints[4370] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/origins/{originName}", "GET"); + Endpoints[4371] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/origins/{originName}", "PUT"); + Endpoints[4372] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/images/{galleryImageName}/versions/{galleryImageVersionName}", "PUT"); + Endpoints[4373] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/images/{galleryImageName}/versions/{galleryImageVersionName}", "GET"); + Endpoints[4374] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/images/{galleryImageName}/versions/{galleryImageVersionName}", "DELETE"); + Endpoints[4375] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}", "GET"); + Endpoints[4376] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/buildTasks/{buildTaskName}/steps/{stepName}", "PATCH"); + Endpoints[4377] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/buildTasks/{buildTaskName}/steps/{stepName}", "GET"); + Endpoints[4378] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/buildTasks/{buildTaskName}/steps/{stepName}", "PUT"); + Endpoints[4379] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/buildTasks/{buildTaskName}/steps/{stepName}", "DELETE"); + Endpoints[4380] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/connectors/{connectorName}/mappings/{mappingName}", "PUT"); + Endpoints[4381] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/connectors/{connectorName}/mappings/{mappingName}", "GET"); + Endpoints[4382] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomerInsights/hubs/{hubName}/connectors/{connectorName}/mappings/{mappingName}", "DELETE"); + Endpoints[4383] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}/nodes/{nodeName}", "PATCH"); + Endpoints[4384] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}/nodes/{nodeName}", "DELETE"); + Endpoints[4385] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/storageAccounts/{storageAccountName}/containers/{containerName}", "GET"); + Endpoints[4386] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/eventHubEndpoints/{eventHubEndpointName}/ConsumerGroups/{name}", "GET"); + Endpoints[4387] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/eventHubEndpoints/{eventHubEndpointName}/ConsumerGroups/{name}", "PUT"); + Endpoints[4388] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}/eventHubEndpoints/{eventHubEndpointName}/ConsumerGroups/{name}", "DELETE"); + Endpoints[4389] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{artifactSourceName}/armtemplates/{name}", "GET"); + Endpoints[4390] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{artifactSourceName}/artifacts/{name}", "GET"); + Endpoints[4391] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/policysets/{policySetName}/policies/{name}", "GET"); + Endpoints[4392] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/policysets/{policySetName}/policies/{name}", "PUT"); + Endpoints[4393] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/policysets/{policySetName}/policies/{name}", "DELETE"); + Endpoints[4394] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/policysets/{policySetName}/policies/{name}", "PATCH"); + Endpoints[4395] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{userName}/disks/{name}", "PUT"); + Endpoints[4396] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{userName}/disks/{name}", "DELETE"); + Endpoints[4397] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{userName}/disks/{name}", "GET"); + Endpoints[4398] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{userName}/environments/{name}", "DELETE"); + Endpoints[4399] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{userName}/environments/{name}", "GET"); + Endpoints[4400] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{userName}/environments/{name}", "PUT"); + Endpoints[4401] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{userName}/secrets/{name}", "GET"); + Endpoints[4402] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{userName}/secrets/{name}", "PUT"); + Endpoints[4403] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{userName}/secrets/{name}", "DELETE"); + Endpoints[4404] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{virtualMachineName}/schedules/{name}", "GET"); + Endpoints[4405] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{virtualMachineName}/schedules/{name}", "PUT"); + Endpoints[4406] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{virtualMachineName}/schedules/{name}", "DELETE"); + Endpoints[4407] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{virtualMachineName}/schedules/{name}", "PATCH"); + Endpoints[4408] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/disasterRecoveryConfigs/{alias}/AuthorizationRules/{authorizationRuleName}", "GET"); + Endpoints[4409] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/eventhubs/{eventHubName}/authorizationRules/{authorizationRuleName}", "PUT"); + Endpoints[4410] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/eventhubs/{eventHubName}/authorizationRules/{authorizationRuleName}", "GET"); + Endpoints[4411] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/eventhubs/{eventHubName}/authorizationRules/{authorizationRuleName}", "DELETE"); + Endpoints[4412] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/eventhubs/{eventHubName}/authorizationRules/{authorizationRuleName}", "POST"); + Endpoints[4413] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/eventhubs/{eventHubName}/consumergroups/{consumerGroupName}", "PUT"); + Endpoints[4414] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/eventhubs/{eventHubName}/consumergroups/{consumerGroupName}", "DELETE"); + Endpoints[4415] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/eventhubs/{eventHubName}/consumergroups/{consumerGroupName}", "GET"); + Endpoints[4416] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/logicalNetworks/{logicalNetwork}/logicalSubnets/{logicalSubnet}", "GET"); + Endpoints[4417] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/storageSubSystems/{storageSubSystem}/storagePools/{storagePool}", "GET"); + Endpoints[4418] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.InfrastructureInsights.Admin/regionHealths/{location}/serviceHealths/{serviceRegistrationId}/resourceHealths/{resourceRegistrationId}", "GET"); + Endpoints[4419] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs/{runName}/actions/{actionName}", "GET"); + Endpoints[4420] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs/{runName}/operations/{operationId}", "GET"); + Endpoints[4421] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/triggers/{triggerName}/histories/{historyName}", "GET"); + Endpoints[4422] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningExperimentation/accounts/{accountName}/workspaces/{workspaceName}/projects/{projectName}", "PATCH"); + Endpoints[4423] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningExperimentation/accounts/{accountName}/workspaces/{workspaceName}/projects/{projectName}", "DELETE"); + Endpoints[4424] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningExperimentation/accounts/{accountName}/workspaces/{workspaceName}/projects/{projectName}", "GET"); + Endpoints[4425] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningExperimentation/accounts/{accountName}/workspaces/{workspaceName}/projects/{projectName}", "PUT"); + Endpoints[4426] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/liveEvents/{liveEventName}/liveOutputs/{liveOutputName}", "PUT"); + Endpoints[4427] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/liveEvents/{liveEventName}/liveOutputs/{liveOutputName}", "DELETE"); + Endpoints[4428] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaservices/{accountName}/liveEvents/{liveEventName}/liveOutputs/{liveOutputName}", "GET"); + Endpoints[4429] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/transforms/{transformName}/jobs/{jobName}", "DELETE"); + Endpoints[4430] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/transforms/{transformName}/jobs/{jobName}", "GET"); + Endpoints[4431] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/transforms/{transformName}/jobs/{jobName}", "PUT"); + Endpoints[4432] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/groups/{groupName}/assessments/{assessmentName}", "GET"); + Endpoints[4433] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/groups/{groupName}/assessments/{assessmentName}", "PUT"); + Endpoints[4434] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/groups/{groupName}/assessments/{assessmentName}", "DELETE"); + Endpoints[4435] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/arpTables/{devicePath}", "POST"); + Endpoints[4436] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}", "DELETE"); + Endpoints[4437] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}", "PUT"); + Endpoints[4438] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/connections/{connectionName}", "GET"); + Endpoints[4439] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/routeTables/{devicePath}", "POST"); + Endpoints[4440] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}/routeTablesSummary/{devicePath}", "POST"); + Endpoints[4441] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/arpTables/{devicePath}", "POST"); + Endpoints[4442] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/routeTables/{devicePath}", "POST"); + Endpoints[4443] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}/peerings/{peeringName}/routeTablesSummary/{devicePath}", "POST"); + Endpoints[4444] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/AuthorizationRules/{authorizationRuleName}", "PUT"); + Endpoints[4445] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/AuthorizationRules/{authorizationRuleName}", "POST"); + Endpoints[4446] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/AuthorizationRules/{authorizationRuleName}", "DELETE"); + Endpoints[4447] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/AuthorizationRules/{authorizationRuleName}", "GET"); + Endpoints[4448] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationLogicalNetworks/{logicalNetworkName}", "GET"); + Endpoints[4449] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationNetworks/{networkName}", "GET"); + Endpoints[4450] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}", "GET"); + Endpoints[4451] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}", "PUT"); + Endpoints[4452] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationRecoveryServicesProviders/{providerName}", "GET"); + Endpoints[4453] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationRecoveryServicesProviders/{providerName}", "DELETE"); + Endpoints[4454] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationStorageClassifications/{storageClassificationName}", "GET"); + Endpoints[4455] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationvCenters/{vCenterName}", "PUT"); + Endpoints[4456] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationvCenters/{vCenterName}", "PATCH"); + Endpoints[4457] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationvCenters/{vCenterName}", "DELETE"); + Endpoints[4458] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationvCenters/{vCenterName}", "GET"); + Endpoints[4459] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/backupProtectionIntent/{intentObjectName}", "PUT"); + Endpoints[4460] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/operationResults/{operationId}", "GET"); + Endpoints[4461] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}", "DELETE"); + Endpoints[4462] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}", "PUT"); + Endpoints[4463] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}", "GET"); + Endpoints[4464] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupJobs/{jobName}/operationResults/{operationId}", "GET"); + Endpoints[4465] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupPolicies/{policyName}/operationResults/{operationId}", "GET"); + Endpoints[4466] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupPolicies/{policyName}/operations/{operationId}", "GET"); + Endpoints[4467] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/hybridConnections/{hybridConnectionName}/authorizationRules/{authorizationRuleName}", "GET"); + Endpoints[4468] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/hybridConnections/{hybridConnectionName}/authorizationRules/{authorizationRuleName}", "DELETE"); + Endpoints[4469] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/hybridConnections/{hybridConnectionName}/authorizationRules/{authorizationRuleName}", "PUT"); + Endpoints[4470] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/HybridConnections/{hybridConnectionName}/authorizationRules/{authorizationRuleName}", "POST"); + Endpoints[4471] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/wcfRelays/{relayName}/authorizationRules/{authorizationRuleName}", "GET"); + Endpoints[4472] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/wcfRelays/{relayName}/authorizationRules/{authorizationRuleName}", "PUT"); + Endpoints[4473] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/wcfRelays/{relayName}/authorizationRules/{authorizationRuleName}", "DELETE"); + Endpoints[4474] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/WcfRelays/{relayName}/authorizationRules/{authorizationRuleName}", "POST"); + Endpoints[4475] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/disasterRecoveryConfigs/{alias}/AuthorizationRules/{authorizationRuleName}", "GET"); + Endpoints[4476] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/eventhubs/{eventhubName}/authorizationRules/{authorizationRuleName}", "GET"); + Endpoints[4477] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/queues/{queueName}/authorizationRules/{authorizationRuleName}", "GET"); + Endpoints[4478] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/queues/{queueName}/authorizationRules/{authorizationRuleName}", "POST"); + Endpoints[4479] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/queues/{queueName}/authorizationRules/{authorizationRuleName}", "DELETE"); + Endpoints[4480] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/queues/{queueName}/authorizationRules/{authorizationRuleName}", "PUT"); + Endpoints[4481] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics/{topicName}/authorizationRules/{authorizationRuleName}", "PUT"); + Endpoints[4482] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics/{topicName}/authorizationRules/{authorizationRuleName}", "GET"); + Endpoints[4483] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics/{topicName}/authorizationRules/{authorizationRuleName}", "DELETE"); + Endpoints[4484] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics/{topicName}/authorizationRules/{authorizationRuleName}", "POST"); + Endpoints[4485] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics/{topicName}/subscriptions/{subscriptionName}", "PUT"); + Endpoints[4486] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics/{topicName}/subscriptions/{subscriptionName}", "GET"); + Endpoints[4487] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics/{topicName}/subscriptions/{subscriptionName}", "DELETE"); + Endpoints[4488] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}", "PATCH"); + Endpoints[4489] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}", "DELETE"); + Endpoints[4490] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}", "PUT"); + Endpoints[4491] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}", "GET"); + Endpoints[4492] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}", "GET"); + Endpoints[4493] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}", "PUT"); + Endpoints[4494] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}", "DELETE"); + Endpoints[4495] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/advisors/{advisorName}", "GET"); + Endpoints[4496] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/advisors/{advisorName}", "PATCH"); + Endpoints[4497] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/advisors/{advisorName}", "PUT"); + Endpoints[4498] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/auditingPolicies/{tableAuditingPolicyName}", "GET"); + Endpoints[4499] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/auditingPolicies/{tableAuditingPolicyName}", "PUT"); + Endpoints[4500] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/auditingSettings/{blobAuditingPolicyName}", "GET"); + Endpoints[4501] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/auditingSettings/{blobAuditingPolicyName}", "PUT"); + Endpoints[4502] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/backupLongTermRetentionPolicies/{backupLongTermRetentionPolicyName}", "GET"); + Endpoints[4503] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/backupLongTermRetentionPolicies/{backupLongTermRetentionPolicyName}", "PUT"); + Endpoints[4504] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/backupShortTermRetentionPolicies/{policyName}", "PATCH"); + Endpoints[4505] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/backupShortTermRetentionPolicies/{policyName}", "PUT"); + Endpoints[4506] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/backupShortTermRetentionPolicies/{policyName}", "GET"); + Endpoints[4507] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/connectionPolicies/{connectionPolicyName}", "GET"); + Endpoints[4508] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/connectionPolicies/{connectionPolicyName}", "PUT"); + Endpoints[4509] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/dataMaskingPolicies/{dataMaskingPolicyName}", "GET"); + Endpoints[4510] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/dataMaskingPolicies/{dataMaskingPolicyName}", "PUT"); + Endpoints[4511] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/dataWarehouseUserActivities/{dataWarehouseUserActivityName}", "GET"); + Endpoints[4512] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/extensions/{extensionName}", "PUT"); + Endpoints[4513] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/geoBackupPolicies/{geoBackupPolicyName}", "GET"); + Endpoints[4514] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/geoBackupPolicies/{geoBackupPolicyName}", "PUT"); + Endpoints[4515] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/replicationLinks/{linkId}", "GET"); + Endpoints[4516] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/replicationLinks/{linkId}", "DELETE"); + Endpoints[4517] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/restorePoints/{restorePointName}", "DELETE"); + Endpoints[4518] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/restorePoints/{restorePointName}", "GET"); + Endpoints[4519] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/securityAlertPolicies/{securityAlertPolicyName}", "PUT"); + Endpoints[4520] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/securityAlertPolicies/{securityAlertPolicyName}", "GET"); + Endpoints[4521] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/serviceTierAdvisors/{serviceTierAdvisorName}", "GET"); + Endpoints[4522] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/syncGroups/{syncGroupName}", "GET"); + Endpoints[4523] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/syncGroups/{syncGroupName}", "PATCH"); + Endpoints[4524] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/syncGroups/{syncGroupName}", "DELETE"); + Endpoints[4525] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/syncGroups/{syncGroupName}", "PUT"); + Endpoints[4526] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/transparentDataEncryption/{transparentDataEncryptionName}", "PUT"); + Endpoints[4527] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/transparentDataEncryption/{transparentDataEncryptionName}", "GET"); + Endpoints[4528] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/vulnerabilityAssessments/{vulnerabilityAssessmentName}", "PUT"); + Endpoints[4529] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/vulnerabilityAssessments/{vulnerabilityAssessmentName}", "DELETE"); + Endpoints[4530] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/vulnerabilityAssessments/{vulnerabilityAssessmentName}", "GET"); + Endpoints[4531] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/elasticPools/{elasticPoolName}/databases/{databaseName}", "GET"); + Endpoints[4532] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/credentials/{credentialName}", "DELETE"); + Endpoints[4533] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/credentials/{credentialName}", "PUT"); + Endpoints[4534] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/credentials/{credentialName}", "GET"); + Endpoints[4535] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}", "GET"); + Endpoints[4536] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}", "PUT"); + Endpoints[4537] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}", "DELETE"); + Endpoints[4538] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/targetGroups/{targetGroupName}", "PUT"); + Endpoints[4539] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/targetGroups/{targetGroupName}", "DELETE"); + Endpoints[4540] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/targetGroups/{targetGroupName}", "GET"); + Endpoints[4541] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/recommendedElasticPools/{recommendedElasticPoolName}/databases/{databaseName}", "GET"); + Endpoints[4542] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/backupPolicies/{backupPolicyName}", "GET"); + Endpoints[4543] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/backupPolicies/{backupPolicyName}", "PUT"); + Endpoints[4544] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/backupPolicies/{backupPolicyName}", "DELETE"); + Endpoints[4545] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/backups/{backupName}", "DELETE"); + Endpoints[4546] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/jobs/{jobName}", "GET"); + Endpoints[4547] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/volumeContainers/{volumeContainerName}", "DELETE"); + Endpoints[4548] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/volumeContainers/{volumeContainerName}", "PUT"); + Endpoints[4549] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/volumeContainers/{volumeContainerName}", "GET"); + Endpoints[4550] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Update.Admin/updateLocations/{updateLocation}/updates/{updateName}/updateRuns/{runName}", "GET"); + Endpoints[4551] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}", "GET"); + Endpoints[4552] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}", "DELETE"); + Endpoints[4553] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/virtualNetworkConnections/{vnetName}/gateways/{gatewayName}", "GET"); + Endpoints[4554] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/virtualNetworkConnections/{vnetName}/gateways/{gatewayName}", "PUT"); + Endpoints[4555] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/virtualNetworkConnections/{vnetName}/routes/{routeName}", "PATCH"); + Endpoints[4556] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/virtualNetworkConnections/{vnetName}/routes/{routeName}", "GET"); + Endpoints[4557] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/virtualNetworkConnections/{vnetName}/routes/{routeName}", "DELETE"); + Endpoints[4558] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/virtualNetworkConnections/{vnetName}/routes/{routeName}", "PUT"); + Endpoints[4559] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}", "GET"); + Endpoints[4560] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}", "DELETE"); + Endpoints[4561] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}", "PUT"); + Endpoints[4562] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}", "PATCH"); + Endpoints[4563] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/deployments/{id}", "DELETE"); + Endpoints[4564] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/deployments/{id}", "GET"); + Endpoints[4565] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/deployments/{id}", "PUT"); + Endpoints[4566] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/processes/{processId}", "GET"); + Endpoints[4567] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/processes/{processId}", "DELETE"); + Endpoints[4568] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/processes/{processId}/modules/{baseAddress}", "GET"); + Endpoints[4569] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/processes/{processId}/threads/{threadId}", "GET"); + Endpoints[4570] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/backups/{backupId}", "DELETE"); + Endpoints[4571] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/backups/{backupId}", "GET"); + Endpoints[4572] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/continuouswebjobs/{webJobName}", "GET"); + Endpoints[4573] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/continuouswebjobs/{webJobName}", "DELETE"); + Endpoints[4574] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/deployments/{id}", "GET"); + Endpoints[4575] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/deployments/{id}", "PUT"); + Endpoints[4576] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/deployments/{id}", "DELETE"); + Endpoints[4577] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/domainOwnershipIdentifiers/{domainOwnershipIdentifierName}", "PUT"); + Endpoints[4578] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/domainOwnershipIdentifiers/{domainOwnershipIdentifierName}", "PATCH"); + Endpoints[4579] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/domainOwnershipIdentifiers/{domainOwnershipIdentifierName}", "DELETE"); + Endpoints[4580] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/domainOwnershipIdentifiers/{domainOwnershipIdentifierName}", "GET"); + Endpoints[4581] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/functions/{functionName}", "PUT"); + Endpoints[4582] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/functions/{functionName}", "GET"); + Endpoints[4583] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/functions/{functionName}", "DELETE"); + Endpoints[4584] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hostNameBindings/{hostName}", "GET"); + Endpoints[4585] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hostNameBindings/{hostName}", "PUT"); + Endpoints[4586] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hostNameBindings/{hostName}", "DELETE"); + Endpoints[4587] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridconnection/{entityName}", "GET"); + Endpoints[4588] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridconnection/{entityName}", "PUT"); + Endpoints[4589] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridconnection/{entityName}", "DELETE"); + Endpoints[4590] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridconnection/{entityName}", "PATCH"); + Endpoints[4591] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkFeatures/{view}", "GET"); + Endpoints[4592] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/operationresults/{operationId}", "GET"); + Endpoints[4593] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/premieraddons/{premierAddOnName}", "DELETE"); + Endpoints[4594] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/premieraddons/{premierAddOnName}", "PUT"); + Endpoints[4595] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/premieraddons/{premierAddOnName}", "GET"); + Endpoints[4596] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/processes/{processId}", "DELETE"); + Endpoints[4597] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/processes/{processId}", "GET"); + Endpoints[4598] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/publicCertificates/{publicCertificateName}", "DELETE"); + Endpoints[4599] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/publicCertificates/{publicCertificateName}", "PUT"); + Endpoints[4600] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/publicCertificates/{publicCertificateName}", "GET"); + Endpoints[4601] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/siteextensions/{siteExtensionId}", "PUT"); + Endpoints[4602] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/siteextensions/{siteExtensionId}", "GET"); + Endpoints[4603] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/siteextensions/{siteExtensionId}", "DELETE"); + Endpoints[4604] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/triggeredwebjobs/{webJobName}", "GET"); + Endpoints[4605] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/triggeredwebjobs/{webJobName}", "DELETE"); + Endpoints[4606] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/virtualNetworkConnections/{vnetName}", "PATCH"); + Endpoints[4607] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/virtualNetworkConnections/{vnetName}", "DELETE"); + Endpoints[4608] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/virtualNetworkConnections/{vnetName}", "PUT"); + Endpoints[4609] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/virtualNetworkConnections/{vnetName}", "GET"); + Endpoints[4610] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/webjobs/{webJobName}", "GET"); + Endpoints[4611] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/triggeredwebjobs/{webJobName}/history/{id}", "GET"); + Endpoints[4612] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/virtualNetworkConnections/{vnetName}/gateways/{gatewayName}", "GET"); + Endpoints[4613] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/virtualNetworkConnections/{vnetName}/gateways/{gatewayName}", "PUT"); + Endpoints[4614] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/virtualNetworkConnections/{vnetName}/gateways/{gatewayName}", "PATCH"); + Endpoints[4615] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/diagnostics/{diagnosticCategory}/analyses/{analysisName}", "GET"); + Endpoints[4616] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/diagnostics/{diagnosticCategory}/detectors/{detectorName}", "GET"); + Endpoints[4617] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slot}/detectors/{detectorName}", "GET"); + Endpoints[4618] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slot}/diagnostics/{diagnosticCategory}", "GET"); + Endpoints[4619] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}/projects/{projectName}/tasks/{taskName}/cancel", "POST"); + Endpoints[4620] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/diagnostics/{diagnosticId}/loggers", "GET"); + Endpoints[4621] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}/attachments", "GET"); + Endpoints[4622] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}/comments", "GET"); + Endpoints[4623] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}/policies", "GET"); + Endpoints[4624] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}/policy", "PUT"); + Endpoints[4625] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}/policy", "GET"); + Endpoints[4626] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}/policy", "DELETE"); + Endpoints[4627] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}/tags", "GET"); + Endpoints[4628] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/modules/{moduleName}/objectDataTypes/{typeName}/fields", "GET"); + Endpoints[4629] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/modules/{moduleName}/types/{typeName}/fields", "GET"); + Endpoints[4630] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/nodes/{nodeId}/reports/{reportId}/content", "GET"); + Endpoints[4631] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/sourceControls/{sourceControlName}/sourceControlSyncJobs/{sourceControlSyncJobId}/streams", "GET"); + Endpoints[4632] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/applications/{applicationId}/versions/{version}/activate", "POST"); + Endpoints[4633] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/experiments/{experimentName}/jobs/{jobName}/listOutputFiles", "POST"); + Endpoints[4634] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/experiments/{experimentName}/jobs/{jobName}/listRemoteLoginInformation", "POST"); + Endpoints[4635] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BatchAI/workspaces/{workspaceName}/experiments/{experimentName}/jobs/{jobName}/terminate", "POST"); + Endpoints[4636] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/customDomains/{customDomainName}/disableCustomHttps", "POST"); + Endpoints[4637] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/customDomains/{customDomainName}/enableCustomHttps", "POST"); + Endpoints[4638] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipConfigurations", "GET"); + Endpoints[4639] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/buildTasks/{buildTaskName}/steps/{stepName}/listBuildArguments", "POST"); + Endpoints[4640] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/integrationRuntimes/{integrationRuntimeName}/nodes/{nodeName}/ipAddress", "POST"); + Endpoints[4641] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/storageAccounts/{storageAccountName}/containers/{containerName}/listSasTokens", "POST"); + Endpoints[4642] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{artifactSourceName}/artifacts/{name}/generateArmTemplate", "POST"); + Endpoints[4643] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{userName}/disks/{name}/attach", "POST"); + Endpoints[4644] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/users/{userName}/disks/{name}/detach", "POST"); + Endpoints[4645] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{virtualMachineName}/schedules/{name}/execute", "POST"); + Endpoints[4646] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/databases/{databaseRid}/collections/{collectionRid}/metricDefinitions", "GET"); + Endpoints[4647] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/databases/{databaseRid}/collections/{collectionRid}/metrics", "GET"); + Endpoints[4648] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/databases/{databaseRid}/collections/{collectionRid}/usages", "GET"); + Endpoints[4649] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/disasterRecoveryConfigs/{alias}/AuthorizationRules/{authorizationRuleName}/listKeys", "POST"); + Endpoints[4650] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/eventhubs/{eventHubName}/authorizationRules/{authorizationRuleName}/ListKeys", "POST"); + Endpoints[4651] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.EventHub/namespaces/{namespaceName}/eventhubs/{eventHubName}/authorizationRules/{authorizationRuleName}/regenerateKeys", "POST"); + Endpoints[4652] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/storageSubSystems/{storageSubSystem}/storagePools/{storagePool}/volumes", "GET"); + Endpoints[4653] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs/{runName}/actions/{actionName}/listExpressionTraces", "POST"); + Endpoints[4654] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs/{runName}/actions/{actionName}/repetitions", "GET"); + Endpoints[4655] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs/{runName}/actions/{actionName}/scopeRepetitions", "GET"); + Endpoints[4656] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/triggers/{triggerName}/histories/{historyName}/resubmit", "POST"); + Endpoints[4657] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/versions/{versionId}/triggers/{triggerName}/listCallbackUrl", "POST"); + Endpoints[4658] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Media/mediaServices/{accountName}/transforms/{transformName}/jobs/{jobName}/cancelJob", "POST"); + Endpoints[4659] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/groups/{groupName}/assessments/{assessmentName}/assessedMachines", "GET"); + Endpoints[4660] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/groups/{groupName}/assessments/{assessmentName}/downloadUrl", "POST"); + Endpoints[4661] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/AuthorizationRules/{authorizationRuleName}/listKeys", "POST"); + Endpoints[4662] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/AuthorizationRules/{authorizationRuleName}/regenerateKeys", "POST"); + Endpoints[4663] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationNetworks/{networkName}/replicationNetworkMappings", "GET"); + Endpoints[4664] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/discoverProtectableItem", "POST"); + Endpoints[4665] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/remove", "POST"); + Endpoints[4666] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectableItems", "GET"); + Endpoints[4667] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectedItems", "GET"); + Endpoints[4668] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectionContainerMappings", "GET"); + Endpoints[4669] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/switchprotection", "POST"); + Endpoints[4670] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationRecoveryServicesProviders/{providerName}/refreshProvider", "POST"); + Endpoints[4671] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationRecoveryServicesProviders/{providerName}/remove", "POST"); + Endpoints[4672] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationStorageClassifications/{storageClassificationName}/replicationStorageClassificationMappings", "GET"); + Endpoints[4673] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/inquire", "POST"); + Endpoints[4674] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/items", "GET"); + Endpoints[4675] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/hybridConnections/{hybridConnectionName}/authorizationRules/{authorizationRuleName}/listKeys", "POST"); + Endpoints[4676] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/hybridConnections/{hybridConnectionName}/authorizationRules/{authorizationRuleName}/regenerateKeys", "POST"); + Endpoints[4677] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/wcfRelays/{relayName}/authorizationRules/{authorizationRuleName}/listKeys", "POST"); + Endpoints[4678] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/wcfRelays/{relayName}/authorizationRules/{authorizationRuleName}/regenerateKeys", "POST"); + Endpoints[4679] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/disasterRecoveryConfigs/{alias}/AuthorizationRules/{authorizationRuleName}/listKeys", "POST"); + Endpoints[4680] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/queues/{queueName}/authorizationRules/{authorizationRuleName}/ListKeys", "POST"); + Endpoints[4681] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/queues/{queueName}/authorizationRules/{authorizationRuleName}/regenerateKeys", "POST"); + Endpoints[4682] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics/{topicName}/authorizationRules/{authorizationRuleName}/ListKeys", "POST"); + Endpoints[4683] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics/{topicName}/authorizationRules/{authorizationRuleName}/regenerateKeys", "POST"); + Endpoints[4684] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics/{topicName}/subscriptions/{subscriptionName}/rules", "GET"); + Endpoints[4685] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/advisors/{advisorName}/recommendedActions", "GET"); + Endpoints[4686] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/dataMaskingPolicies/{dataMaskingPolicyName}/rules", "GET"); + Endpoints[4687] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/operations/{operationId}/cancel", "POST"); + Endpoints[4688] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/replicationLinks/{linkId}/failover", "POST"); + Endpoints[4689] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/replicationLinks/{linkId}/forceFailoverAllowDataLoss", "POST"); + Endpoints[4690] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/syncGroups/{syncGroupName}/cancelSync", "POST"); + Endpoints[4691] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/syncGroups/{syncGroupName}/hubSchemas", "GET"); + Endpoints[4692] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/syncGroups/{syncGroupName}/logs", "GET"); + Endpoints[4693] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/syncGroups/{syncGroupName}/refreshHubSchema", "POST"); + Endpoints[4694] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/syncGroups/{syncGroupName}/syncMembers", "GET"); + Endpoints[4695] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/syncGroups/{syncGroupName}/triggerSync", "POST"); + Endpoints[4696] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/topQueries/{queryId}/queryText", "GET"); + Endpoints[4697] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/topQueries/{queryId}/statistics", "GET"); + Endpoints[4698] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/transparentDataEncryption/{transparentDataEncryptionName}/operationResults", "GET"); + Endpoints[4699] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/vulnerabilityAssessments/{vulnerabilityAssessmentName}/scans", "GET"); + Endpoints[4700] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/elasticPools/{elasticPoolName}/operations/{operationId}/cancel", "POST"); + Endpoints[4701] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}/executions", "GET"); + Endpoints[4702] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}/start", "POST"); + Endpoints[4703] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}/steps", "GET"); + Endpoints[4704] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}/versions", "GET"); + Endpoints[4705] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/backupPolicies/{backupPolicyName}/backup", "POST"); + Endpoints[4706] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/backupPolicies/{backupPolicyName}/schedules", "GET"); + Endpoints[4707] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/backups/{backupName}/restore", "POST"); + Endpoints[4708] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/hardwareComponentGroups/{hardwareComponentGroupName}/changeControllerPowerState", "POST"); + Endpoints[4709] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/jobs/{jobName}/cancel", "POST"); + Endpoints[4710] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/volumeContainers/{volumeContainerName}/metrics", "GET"); + Endpoints[4711] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/volumeContainers/{volumeContainerName}/metricsDefinitions", "GET"); + Endpoints[4712] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/volumeContainers/{volumeContainerName}/volumes", "GET"); + Endpoints[4713] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Update.Admin/updateLocations/{updateLocation}/updates/{updateName}/updateRuns/{runName}/rerun", "POST"); + Endpoints[4714] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.visualstudio/account/{rootResourceName}/project/{resourceName}/subContainers/{subContainerName}/status", "GET"); + Endpoints[4715] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools/{workerPoolName}/instances/{instance}/metricdefinitions", "GET"); + Endpoints[4716] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/workerPools/{workerPoolName}/instances/{instance}/metrics", "GET"); + Endpoints[4717] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}/listKeys", "POST"); + Endpoints[4718] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/serverfarms/{name}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}/sites", "GET"); + Endpoints[4719] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}/listKeys", "POST"); + Endpoints[4720] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/processes/{processId}/dump", "GET"); + Endpoints[4721] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/processes/{processId}/modules", "GET"); + Endpoints[4722] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/processes/{processId}/threads", "GET"); + Endpoints[4723] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/backups/{backupId}/list", "POST"); + Endpoints[4724] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/backups/{backupId}/restore", "POST"); + Endpoints[4725] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/continuouswebjobs/{webJobName}/start", "POST"); + Endpoints[4726] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/continuouswebjobs/{webJobName}/stop", "POST"); + Endpoints[4727] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/deployments/{id}/log", "GET"); + Endpoints[4728] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/functions/{functionName}/listsecrets", "POST"); + Endpoints[4729] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/deployments", "GET"); + Endpoints[4730] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/processes", "GET"); + Endpoints[4731] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/processes/{processId}/dump", "GET"); + Endpoints[4732] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/processes/{processId}/modules", "GET"); + Endpoints[4733] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/processes/{processId}/threads", "GET"); + Endpoints[4734] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/triggeredwebjobs/{webJobName}/history", "GET"); + Endpoints[4735] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/triggeredwebjobs/{webJobName}/run", "POST"); + Endpoints[4736] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/diagnostics/{diagnosticCategory}/analyses/{analysisName}/execute", "POST"); + Endpoints[4737] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/diagnostics/{diagnosticCategory}/detectors/{detectorName}/execute", "POST"); + Endpoints[4738] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slot}/diagnostics/{diagnosticCategory}/analyses", "GET"); + Endpoints[4739] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slot}/diagnostics/{diagnosticCategory}/detectors", "GET"); + Endpoints[4740] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/databases/{databaseRid}/collections/{collectionRid}/partitions/metrics", "GET"); + Endpoints[4741] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/databases/{databaseRid}/collections/{collectionRid}/partitions/usages", "GET"); + Endpoints[4742] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/sourceRegion/{sourceRegion}/targetRegion/{targetRegion}/percentile/metrics", "GET"); + Endpoints[4743] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/extensions/MSDeploy", "PUT"); + Endpoints[4744] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/extensions/MSDeploy", "GET"); + Endpoints[4745] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/extensions/MSDeploy/log", "GET"); + Endpoints[4746] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/diagnostics/{diagnosticId}/loggers/{loggerid}", "DELETE"); + Endpoints[4747] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/diagnostics/{diagnosticId}/loggers/{loggerid}", "PUT"); + Endpoints[4748] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/diagnostics/{diagnosticId}/loggers/{loggerid}", "HEAD"); + Endpoints[4749] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}/attachments/{attachmentId}", "DELETE"); + Endpoints[4750] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}/attachments/{attachmentId}", "PUT"); + Endpoints[4751] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}/attachments/{attachmentId}", "GET"); + Endpoints[4752] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}/attachments/{attachmentId}", "HEAD"); + Endpoints[4753] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}/comments/{commentId}", "HEAD"); + Endpoints[4754] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}/comments/{commentId}", "DELETE"); + Endpoints[4755] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}/comments/{commentId}", "GET"); + Endpoints[4756] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}/comments/{commentId}", "PUT"); + Endpoints[4757] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}/policies/{policyId}", "GET"); + Endpoints[4758] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}/policies/{policyId}", "DELETE"); + Endpoints[4759] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}/policies/{policyId}", "PUT"); + Endpoints[4760] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}/policies/{policyId}", "HEAD"); + Endpoints[4761] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}/tags/{tagId}", "DELETE"); + Endpoints[4762] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}/tags/{tagId}", "HEAD"); + Endpoints[4763] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}/tags/{tagId}", "GET"); + Endpoints[4764] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}/tags/{tagId}", "PUT"); + Endpoints[4765] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/sourceControls/{sourceControlName}/sourceControlSyncJobs/{sourceControlSyncJobId}/streams/{streamId}", "GET"); + Endpoints[4766] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipConfigurations/{ipConfigurationName}", "GET"); + Endpoints[4767] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Fabric.Admin/fabricLocations/{location}/storageSubSystems/{storageSubSystem}/storagePools/{storagePool}/volumes/{volume}", "GET"); + Endpoints[4768] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs/{runName}/actions/{actionName}/repetitions/{repetitionName}", "GET"); + Endpoints[4769] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs/{runName}/actions/{actionName}/scopeRepetitions/{repetitionName}", "GET"); + Endpoints[4770] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Migrate/projects/{projectName}/groups/{groupName}/assessments/{assessmentName}/assessedMachines/{assessedMachineName}", "GET"); + Endpoints[4771] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationNetworks/{networkName}/replicationNetworkMappings/{networkMappingName}", "GET"); + Endpoints[4772] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationNetworks/{networkName}/replicationNetworkMappings/{networkMappingName}", "DELETE"); + Endpoints[4773] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationNetworks/{networkName}/replicationNetworkMappings/{networkMappingName}", "PUT"); + Endpoints[4774] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationNetworks/{networkName}/replicationNetworkMappings/{networkMappingName}", "PATCH"); + Endpoints[4775] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectableItems/{protectableItemName}", "GET"); + Endpoints[4776] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectedItems/{replicatedProtectedItemName}", "PATCH"); + Endpoints[4777] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectedItems/{replicatedProtectedItemName}", "DELETE"); + Endpoints[4778] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectedItems/{replicatedProtectedItemName}", "PUT"); + Endpoints[4779] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectedItems/{replicatedProtectedItemName}", "GET"); + Endpoints[4780] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectionContainerMappings/{mappingName}", "DELETE"); + Endpoints[4781] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectionContainerMappings/{mappingName}", "PUT"); + Endpoints[4782] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectionContainerMappings/{mappingName}", "PATCH"); + Endpoints[4783] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectionContainerMappings/{mappingName}", "GET"); + Endpoints[4784] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationStorageClassifications/{storageClassificationName}/replicationStorageClassificationMappings/{storageClassificationMappingName}", "PUT"); + Endpoints[4785] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationStorageClassifications/{storageClassificationName}/replicationStorageClassificationMappings/{storageClassificationMappingName}", "GET"); + Endpoints[4786] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationStorageClassifications/{storageClassificationName}/replicationStorageClassificationMappings/{storageClassificationMappingName}", "DELETE"); + Endpoints[4787] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/operationResults/{operationId}", "GET"); + Endpoints[4788] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}", "PUT"); + Endpoints[4789] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}", "GET"); + Endpoints[4790] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}", "DELETE"); + Endpoints[4791] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics/{topicName}/subscriptions/{subscriptionName}/rules/{ruleName}", "GET"); + Endpoints[4792] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics/{topicName}/subscriptions/{subscriptionName}/rules/{ruleName}", "DELETE"); + Endpoints[4793] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceBus/namespaces/{namespaceName}/topics/{topicName}/subscriptions/{subscriptionName}/rules/{ruleName}", "PUT"); + Endpoints[4794] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/advisors/{advisorName}/recommendedActions/{recommendedActionName}", "GET"); + Endpoints[4795] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/advisors/{advisorName}/recommendedActions/{recommendedActionName}", "PATCH"); + Endpoints[4796] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/dataMaskingPolicies/{dataMaskingPolicyName}/rules/{dataMaskingRuleName}", "PUT"); + Endpoints[4797] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/syncGroups/{syncGroupName}/syncMembers/{syncMemberName}", "PUT"); + Endpoints[4798] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/syncGroups/{syncGroupName}/syncMembers/{syncMemberName}", "PATCH"); + Endpoints[4799] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/syncGroups/{syncGroupName}/syncMembers/{syncMemberName}", "GET"); + Endpoints[4800] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/syncGroups/{syncGroupName}/syncMembers/{syncMemberName}", "DELETE"); + Endpoints[4801] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/vulnerabilityAssessments/{vulnerabilityAssessmentName}/scans/{scanId}", "GET"); + Endpoints[4802] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}/executions/{jobExecutionId}", "PUT"); + Endpoints[4803] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}/executions/{jobExecutionId}", "GET"); + Endpoints[4804] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}/steps/{stepName}", "DELETE"); + Endpoints[4805] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}/steps/{stepName}", "PUT"); + Endpoints[4806] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}/steps/{stepName}", "GET"); + Endpoints[4807] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}/versions/{jobVersion}", "GET"); + Endpoints[4808] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/backupPolicies/{backupPolicyName}/schedules/{backupScheduleName}", "PUT"); + Endpoints[4809] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/backupPolicies/{backupPolicyName}/schedules/{backupScheduleName}", "GET"); + Endpoints[4810] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/backupPolicies/{backupPolicyName}/schedules/{backupScheduleName}", "DELETE"); + Endpoints[4811] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/volumeContainers/{volumeContainerName}/volumes/{volumeName}", "GET"); + Endpoints[4812] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/volumeContainers/{volumeContainerName}/volumes/{volumeName}", "DELETE"); + Endpoints[4813] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/volumeContainers/{volumeContainerName}/volumes/{volumeName}", "PUT"); + Endpoints[4814] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/processes/{processId}/modules/{baseAddress}", "GET"); + Endpoints[4815] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/instances/{instanceId}/processes/{processId}/threads/{threadId}", "GET"); + Endpoints[4816] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}", "GET"); + Endpoints[4817] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}", "DELETE"); + Endpoints[4818] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}", "PUT"); + Endpoints[4819] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}", "PATCH"); + Endpoints[4820] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/deployments/{id}", "DELETE"); + Endpoints[4821] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/deployments/{id}", "GET"); + Endpoints[4822] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/deployments/{id}", "PUT"); + Endpoints[4823] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/processes/{processId}", "DELETE"); + Endpoints[4824] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/processes/{processId}", "GET"); + Endpoints[4825] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/processes/{processId}/modules/{baseAddress}", "GET"); + Endpoints[4826] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/processes/{processId}/threads/{threadId}", "GET"); + Endpoints[4827] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/triggeredwebjobs/{webJobName}/history/{id}", "GET"); + Endpoints[4828] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/virtualNetworkConnections/{vnetName}/gateways/{gatewayName}", "GET"); + Endpoints[4829] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/virtualNetworkConnections/{vnetName}/gateways/{gatewayName}", "PUT"); + Endpoints[4830] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/virtualNetworkConnections/{vnetName}/gateways/{gatewayName}", "PATCH"); + Endpoints[4831] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slot}/diagnostics/{diagnosticCategory}/analyses/{analysisName}", "GET"); + Endpoints[4832] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slot}/diagnostics/{diagnosticCategory}/detectors/{detectorName}", "GET"); + Endpoints[4833] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipconfigurations/{ipConfigurationName}/publicipaddresses", "GET"); + Endpoints[4834] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/databases/{databaseRid}/collections/{collectionRid}/partitionKeyRangeId/{partitionKeyRangeId}/metrics", "GET"); + Endpoints[4835] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/region/{region}/databases/{databaseRid}/collections/{collectionRid}/metrics", "GET"); + Endpoints[4836] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/runs/{runName}/actions/{actionName}/repetitions/{repetitionName}/listExpressionTraces", "POST"); + Endpoints[4837] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectedItems/{replicatedProtectedItemName}/applyRecoveryPoint", "POST"); + Endpoints[4838] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectedItems/{replicatedProtectedItemName}/failoverCommit", "POST"); + Endpoints[4839] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectedItems/{replicatedProtectedItemName}/plannedFailover", "POST"); + Endpoints[4840] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectedItems/{replicatedProtectedItemName}/recoveryPoints", "GET"); + Endpoints[4841] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectedItems/{replicatedProtectedItemName}/remove", "POST"); + Endpoints[4842] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectedItems/{replicatedProtectedItemName}/repairReplication", "POST"); + Endpoints[4843] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectedItems/{replicatedProtectedItemName}/reProtect", "POST"); + Endpoints[4844] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectedItems/{replicatedProtectedItemName}/targetComputeSizes", "GET"); + Endpoints[4845] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectedItems/{replicatedProtectedItemName}/testFailover", "POST"); + Endpoints[4846] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectedItems/{replicatedProtectedItemName}/testFailoverCleanup", "POST"); + Endpoints[4847] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectedItems/{replicatedProtectedItemName}/unplannedFailover", "POST"); + Endpoints[4848] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectedItems/{replicationProtectedItemName}/updateMobilityService", "POST"); + Endpoints[4849] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectionContainerMappings/{mappingName}/remove", "POST"); + Endpoints[4850] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/backup", "POST"); + Endpoints[4851] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/recoveryPoints", "GET"); + Endpoints[4852] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/syncGroups/{syncGroupName}/syncMembers/{syncMemberName}/refreshSchema", "POST"); + Endpoints[4853] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/syncGroups/{syncGroupName}/syncMembers/{syncMemberName}/schemas", "GET"); + Endpoints[4854] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/vulnerabilityAssessments/{vulnerabilityAssessmentName}/scans/{scanId}/export", "POST"); + Endpoints[4855] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/vulnerabilityAssessments/{vulnerabilityAssessmentName}/scans/{scanId}/initiateScan", "POST"); + Endpoints[4856] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}/executions/{jobExecutionId}/cancel", "POST"); + Endpoints[4857] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}/executions/{jobExecutionId}/steps", "GET"); + Endpoints[4858] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}/executions/{jobExecutionId}/targets", "GET"); + Endpoints[4859] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}/versions/{jobVersion}/steps", "GET"); + Endpoints[4860] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/backups/{backupName}/elements/{backupElementName}/clone", "POST"); + Endpoints[4861] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/volumeContainers/{volumeContainerName}/volumes/{volumeName}/metrics", "GET"); + Endpoints[4862] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StorSimple/managers/{managerName}/devices/{deviceName}/volumeContainers/{volumeContainerName}/volumes/{volumeName}/metricsDefinitions", "GET"); + Endpoints[4863] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/hybridConnectionNamespaces/{namespaceName}/relays/{relayName}/listKeys", "POST"); + Endpoints[4864] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/processes/{processId}/dump", "GET"); + Endpoints[4865] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/processes/{processId}/modules", "GET"); + Endpoints[4866] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/processes/{processId}/threads", "GET"); + Endpoints[4867] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slot}/diagnostics/{diagnosticCategory}/analyses/{analysisName}/execute", "POST"); + Endpoints[4868] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slot}/diagnostics/{diagnosticCategory}/detectors/{detectorName}/execute", "POST"); + Endpoints[4869] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/region/{region}/databases/{databaseRid}/collections/{collectionRid}/partitions/metrics", "GET"); + Endpoints[4870] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}/ipconfigurations/{ipConfigurationName}/publicipaddresses/{publicIpAddressName}", "GET"); + Endpoints[4871] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{resourceName}/replicationFabrics/{fabricName}/replicationProtectionContainers/{protectionContainerName}/replicationProtectedItems/{replicatedProtectedItemName}/recoveryPoints/{recoveryPointName}", "GET"); + Endpoints[4872] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/operationResults/{operationId}", "GET"); + Endpoints[4873] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/operationsStatus/{operationId}", "GET"); + Endpoints[4874] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/recoveryPoints/{recoveryPointId}", "GET"); + Endpoints[4875] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/vulnerabilityAssessments/{vulnerabilityAssessmentName}/rules/{ruleId}/baselines/{baselineName}", "GET"); + Endpoints[4876] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/vulnerabilityAssessments/{vulnerabilityAssessmentName}/rules/{ruleId}/baselines/{baselineName}", "PUT"); + Endpoints[4877] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/vulnerabilityAssessments/{vulnerabilityAssessmentName}/rules/{ruleId}/baselines/{baselineName}", "DELETE"); + Endpoints[4878] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}/executions/{jobExecutionId}/steps/{stepName}", "GET"); + Endpoints[4879] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}/versions/{jobVersion}/steps/{stepName}", "GET"); + Endpoints[4880] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/processes/{processId}/modules/{baseAddress}", "GET"); + Endpoints[4881] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/instances/{instanceId}/processes/{processId}/threads/{threadId}", "GET"); + Endpoints[4882] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}/region/{region}/databases/{databaseRid}/collections/{collectionRid}/partitionKeyRangeId/{partitionKeyRangeId}/metrics", "GET"); + Endpoints[4883] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/recoveryPoints/{recoveryPointId}/provisionInstantItemRecovery", "POST"); + Endpoints[4884] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/recoveryPoints/{recoveryPointId}/restore", "POST"); + Endpoints[4885] = CreateEndpoint("/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/recoveryPoints/{recoveryPointId}/revokeInstantItemRecovery", "POST"); + Endpoints[4886] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}/executions/{jobExecutionId}/steps/{stepName}/targets", "GET"); + Endpoints[4887] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/jobAgents/{jobAgentName}/jobs/{jobName}/executions/{jobExecutionId}/steps/{stepName}/targets/{targetId}", "GET"); + Endpoints[4888] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/quotas/{quotaCounterKey}/{quotaPeriodKey}", "GET"); + Endpoints[4889] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/quotas/{quotaCounterKey}/{quotaPeriodKey}", "PATCH"); + Endpoints[4890] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/alerts/{alertName}/{alertUpdateActionType}", "POST"); + Endpoints[4891] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/jitNetworkAccessPolicies/{jitNetworkAccessPolicyName}/{jitNetworkAccessPolicyActionType}", "POST"); + Endpoints[4892] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/tasks/{taskName}/{taskUpdateActionType}", "POST"); + Endpoints[4893] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/components/{resourceName}/{scopePath}", "GET"); + Endpoints[4894] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones/{zoneName}/{recordType}", "GET"); + Endpoints[4895] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/components/{resourceName}/{scopePath}/item", "PUT"); + Endpoints[4896] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/components/{resourceName}/{scopePath}/item", "DELETE"); + Endpoints[4897] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/components/{resourceName}/{scopePath}/item", "GET"); + Endpoints[4898] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones/{zoneName}/{recordType}/{relativeRecordSetName}", "DELETE"); + Endpoints[4899] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones/{zoneName}/{recordType}/{relativeRecordSetName}", "PUT"); + Endpoints[4900] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones/{zoneName}/{recordType}/{relativeRecordSetName}", "GET"); + Endpoints[4901] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones/{zoneName}/{recordType}/{relativeRecordSetName}", "PATCH"); + Endpoints[4902] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficmanagerprofiles/{profileName}/{endpointType}/{endpointName}", "DELETE"); + Endpoints[4903] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficmanagerprofiles/{profileName}/{endpointType}/{endpointName}", "PUT"); + Endpoints[4904] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficmanagerprofiles/{profileName}/{endpointType}/{endpointName}", "GET"); + Endpoints[4905] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficmanagerprofiles/{profileName}/{endpointType}/{endpointName}", "PATCH"); + Endpoints[4906] = CreateEndpoint("/apis/{apiId}/operations/{operationId}/policies/{policyId}", "PUT"); + Endpoints[4907] = CreateEndpoint("/apis/{apiId}/operations/{operationId}/policies/{policyId}", "GET"); + Endpoints[4908] = CreateEndpoint("/apis/{apiId}/operations/{operationId}/policies/{policyId}", "DELETE"); + Endpoints[4909] = CreateEndpoint("/apps/{appId}/versions/{versionId}/closedlists/{clEntityId}", "PUT"); + Endpoints[4910] = CreateEndpoint("/apps/{appId}/versions/{versionId}/closedlists/{clEntityId}", "GET"); + Endpoints[4911] = CreateEndpoint("/apps/{appId}/versions/{versionId}/closedlists/{clEntityId}", "DELETE"); + Endpoints[4912] = CreateEndpoint("/apps/{appId}/versions/{versionId}/closedlists/{clEntityId}", "PATCH"); + Endpoints[4913] = CreateEndpoint("/apps/{appId}/versions/{versionId}/compositeentities/{cEntityId}", "PUT"); + Endpoints[4914] = CreateEndpoint("/apps/{appId}/versions/{versionId}/compositeentities/{cEntityId}", "GET"); + Endpoints[4915] = CreateEndpoint("/apps/{appId}/versions/{versionId}/compositeentities/{cEntityId}", "DELETE"); + Endpoints[4916] = CreateEndpoint("/apps/{appId}/versions/{versionId}/customprebuiltdomains/{domainName}", "DELETE"); + Endpoints[4917] = CreateEndpoint("/apps/{appId}/versions/{versionId}/entities/{entityId}", "PUT"); + Endpoints[4918] = CreateEndpoint("/apps/{appId}/versions/{versionId}/entities/{entityId}", "GET"); + Endpoints[4919] = CreateEndpoint("/apps/{appId}/versions/{versionId}/entities/{entityId}", "DELETE"); + Endpoints[4920] = CreateEndpoint("/apps/{appId}/versions/{versionId}/examples/{exampleId}", "DELETE"); + Endpoints[4921] = CreateEndpoint("/apps/{appId}/versions/{versionId}/hierarchicalentities/{hEntityId}", "GET"); + Endpoints[4922] = CreateEndpoint("/apps/{appId}/versions/{versionId}/hierarchicalentities/{hEntityId}", "PUT"); + Endpoints[4923] = CreateEndpoint("/apps/{appId}/versions/{versionId}/hierarchicalentities/{hEntityId}", "DELETE"); + Endpoints[4924] = CreateEndpoint("/apps/{appId}/versions/{versionId}/intents/{intentId}", "PUT"); + Endpoints[4925] = CreateEndpoint("/apps/{appId}/versions/{versionId}/intents/{intentId}", "DELETE"); + Endpoints[4926] = CreateEndpoint("/apps/{appId}/versions/{versionId}/intents/{intentId}", "GET"); + Endpoints[4927] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternanyentities/{entityId}", "GET"); + Endpoints[4928] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternanyentities/{entityId}", "PUT"); + Endpoints[4929] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternanyentities/{entityId}", "DELETE"); + Endpoints[4930] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternrules/{patternId}", "PUT"); + Endpoints[4931] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternrules/{patternId}", "DELETE"); + Endpoints[4932] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patterns/{patternId}", "DELETE"); + Endpoints[4933] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patterns/{patternId}", "GET"); + Endpoints[4934] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patterns/{patternId}", "PUT"); + Endpoints[4935] = CreateEndpoint("/apps/{appId}/versions/{versionId}/phraselists/{phraselistId}", "GET"); + Endpoints[4936] = CreateEndpoint("/apps/{appId}/versions/{versionId}/phraselists/{phraselistId}", "DELETE"); + Endpoints[4937] = CreateEndpoint("/apps/{appId}/versions/{versionId}/phraselists/{phraselistId}", "PUT"); + Endpoints[4938] = CreateEndpoint("/apps/{appId}/versions/{versionId}/prebuilts/{prebuiltId}", "DELETE"); + Endpoints[4939] = CreateEndpoint("/apps/{appId}/versions/{versionId}/prebuilts/{prebuiltId}", "GET"); + Endpoints[4940] = CreateEndpoint("/apps/{appId}/versions/{versionId}/regexentities/{regexEntityId}", "GET"); + Endpoints[4941] = CreateEndpoint("/apps/{appId}/versions/{versionId}/regexentities/{regexEntityId}", "DELETE"); + Endpoints[4942] = CreateEndpoint("/apps/{appId}/versions/{versionId}/regexentities/{regexEntityId}", "PUT"); + Endpoints[4943] = CreateEndpoint("/jobs/{jobId}/tasks/{taskId}/files/{filePath}", "GET"); + Endpoints[4944] = CreateEndpoint("/jobs/{jobId}/tasks/{taskId}/files/{filePath}", "HEAD"); + Endpoints[4945] = CreateEndpoint("/jobs/{jobId}/tasks/{taskId}/files/{filePath}", "DELETE"); + Endpoints[4946] = CreateEndpoint("/persongroups/{personGroupId}/persons/{personId}/persistedFaces/{persistedFaceId}", "GET"); + Endpoints[4947] = CreateEndpoint("/persongroups/{personGroupId}/persons/{personId}/persistedFaces/{persistedFaceId}", "DELETE"); + Endpoints[4948] = CreateEndpoint("/persongroups/{personGroupId}/persons/{personId}/persistedFaces/{persistedFaceId}", "PATCH"); + Endpoints[4949] = CreateEndpoint("/pools/{poolId}/nodes/{nodeId}/files/{filePath}", "HEAD"); + Endpoints[4950] = CreateEndpoint("/pools/{poolId}/nodes/{nodeId}/files/{filePath}", "DELETE"); + Endpoints[4951] = CreateEndpoint("/pools/{poolId}/nodes/{nodeId}/files/{filePath}", "GET"); + Endpoints[4952] = CreateEndpoint("/pools/{poolId}/nodes/{nodeId}/users/{userName}", "PUT"); + Endpoints[4953] = CreateEndpoint("/pools/{poolId}/nodes/{nodeId}/users/{userName}", "DELETE"); + Endpoints[4954] = CreateEndpoint("/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}", "DELETE"); + Endpoints[4955] = CreateEndpoint("/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}", "PUT"); + Endpoints[4956] = CreateEndpoint("/apps/{appId}/versions/{versionId}/closedlists/{clEntityId}/sublists", "POST"); + Endpoints[4957] = CreateEndpoint("/apps/{appId}/versions/{versionId}/closedlists/{entityId}/roles", "POST"); + Endpoints[4958] = CreateEndpoint("/apps/{appId}/versions/{versionId}/closedlists/{entityId}/roles", "GET"); + Endpoints[4959] = CreateEndpoint("/apps/{appId}/versions/{versionId}/compositeentities/{cEntityId}/children", "POST"); + Endpoints[4960] = CreateEndpoint("/apps/{appId}/versions/{versionId}/compositeentities/{cEntityId}/roles", "POST"); + Endpoints[4961] = CreateEndpoint("/apps/{appId}/versions/{versionId}/compositeentities/{cEntityId}/roles", "GET"); + Endpoints[4962] = CreateEndpoint("/apps/{appId}/versions/{versionId}/customprebuiltentities/{entityId}/roles", "GET"); + Endpoints[4963] = CreateEndpoint("/apps/{appId}/versions/{versionId}/customprebuiltentities/{entityId}/roles", "POST"); + Endpoints[4964] = CreateEndpoint("/apps/{appId}/versions/{versionId}/entities/{entityId}/roles", "GET"); + Endpoints[4965] = CreateEndpoint("/apps/{appId}/versions/{versionId}/entities/{entityId}/roles", "POST"); + Endpoints[4966] = CreateEndpoint("/apps/{appId}/versions/{versionId}/entities/{entityId}/suggest", "GET"); + Endpoints[4967] = CreateEndpoint("/apps/{appId}/versions/{versionId}/hierarchicalentities/{hEntityId}/children", "POST"); + Endpoints[4968] = CreateEndpoint("/apps/{appId}/versions/{versionId}/hierarchicalentities/{hEntityId}/roles", "POST"); + Endpoints[4969] = CreateEndpoint("/apps/{appId}/versions/{versionId}/hierarchicalentities/{hEntityId}/roles", "GET"); + Endpoints[4970] = CreateEndpoint("/apps/{appId}/versions/{versionId}/intents/{intentId}/patternrules", "GET"); + Endpoints[4971] = CreateEndpoint("/apps/{appId}/versions/{versionId}/intents/{intentId}/suggest", "GET"); + Endpoints[4972] = CreateEndpoint("/apps/{appId}/versions/{versionId}/models/{modelId}/examples", "GET"); + Endpoints[4973] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternanyentities/{entityId}/explicitlist", "GET"); + Endpoints[4974] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternanyentities/{entityId}/explicitlist", "POST"); + Endpoints[4975] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternanyentities/{entityId}/roles", "POST"); + Endpoints[4976] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternanyentities/{entityId}/roles", "GET"); + Endpoints[4977] = CreateEndpoint("/apps/{appId}/versions/{versionId}/prebuilts/{entityId}/roles", "GET"); + Endpoints[4978] = CreateEndpoint("/apps/{appId}/versions/{versionId}/prebuilts/{entityId}/roles", "POST"); + Endpoints[4979] = CreateEndpoint("/apps/{appId}/versions/{versionId}/regexentities/{entityId}/roles", "GET"); + Endpoints[4980] = CreateEndpoint("/apps/{appId}/versions/{versionId}/regexentities/{entityId}/roles", "POST"); + Endpoints[4981] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations", "GET"); + Endpoints[4982] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/{authorizationNamespace}/policyAssignments/{policyAssignmentName}/providers/Microsoft.PolicyInsights/policyEvents/{policyEventsResource}/queryResults", "POST"); + Endpoints[4983] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/{authorizationNamespace}/policyAssignments/{policyAssignmentName}/providers/Microsoft.PolicyInsights/policyStates/{policyStatesResource}/queryResults", "POST"); + Endpoints[4984] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/{authorizationNamespace}/policyAssignments/{policyAssignmentName}/providers/Microsoft.PolicyInsights/policyStates/{policyStatesSummaryResource}/summarize", "POST"); + Endpoints[4985] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/{authorizationNamespace}/policyDefinitions/{policyDefinitionName}/providers/Microsoft.PolicyInsights/policyEvents/{policyEventsResource}/queryResults", "POST"); + Endpoints[4986] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/{authorizationNamespace}/policyDefinitions/{policyDefinitionName}/providers/Microsoft.PolicyInsights/policyStates/{policyStatesResource}/queryResults", "POST"); + Endpoints[4987] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/{authorizationNamespace}/policyDefinitions/{policyDefinitionName}/providers/Microsoft.PolicyInsights/policyStates/{policyStatesSummaryResource}/summarize", "POST"); + Endpoints[4988] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/{authorizationNamespace}/policySetDefinitions/{policySetDefinitionName}/providers/Microsoft.PolicyInsights/policyEvents/{policyEventsResource}/queryResults", "POST"); + Endpoints[4989] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/{authorizationNamespace}/policySetDefinitions/{policySetDefinitionName}/providers/Microsoft.PolicyInsights/policyStates/{policyStatesResource}/queryResults", "POST"); + Endpoints[4990] = CreateEndpoint("/subscriptions/{subscriptionId}/providers/{authorizationNamespace}/policySetDefinitions/{policySetDefinitionName}/providers/Microsoft.PolicyInsights/policyStates/{policyStatesSummaryResource}/summarize", "POST"); + Endpoints[4991] = CreateEndpoint("/apps/{appId}/versions/{versionId}/closedlists/{clEntityId}/sublists/{subListId}", "DELETE"); + Endpoints[4992] = CreateEndpoint("/apps/{appId}/versions/{versionId}/closedlists/{clEntityId}/sublists/{subListId}", "PUT"); + Endpoints[4993] = CreateEndpoint("/apps/{appId}/versions/{versionId}/closedlists/{entityId}/roles/{roleId}", "GET"); + Endpoints[4994] = CreateEndpoint("/apps/{appId}/versions/{versionId}/closedlists/{entityId}/roles/{roleId}", "PUT"); + Endpoints[4995] = CreateEndpoint("/apps/{appId}/versions/{versionId}/closedlists/{entityId}/roles/{roleId}", "DELETE"); + Endpoints[4996] = CreateEndpoint("/apps/{appId}/versions/{versionId}/compositeentities/{cEntityId}/children/{cChildId}", "DELETE"); + Endpoints[4997] = CreateEndpoint("/apps/{appId}/versions/{versionId}/compositeentities/{cEntityId}/roles/{roleId}", "DELETE"); + Endpoints[4998] = CreateEndpoint("/apps/{appId}/versions/{versionId}/compositeentities/{cEntityId}/roles/{roleId}", "PUT"); + Endpoints[4999] = CreateEndpoint("/apps/{appId}/versions/{versionId}/compositeentities/{cEntityId}/roles/{roleId}", "GET"); + Endpoints[5000] = CreateEndpoint("/apps/{appId}/versions/{versionId}/customprebuiltentities/{entityId}/roles/{roleId}", "GET"); + Endpoints[5001] = CreateEndpoint("/apps/{appId}/versions/{versionId}/customprebuiltentities/{entityId}/roles/{roleId}", "PUT"); + Endpoints[5002] = CreateEndpoint("/apps/{appId}/versions/{versionId}/customprebuiltentities/{entityId}/roles/{roleId}", "DELETE"); + Endpoints[5003] = CreateEndpoint("/apps/{appId}/versions/{versionId}/entities/{entityId}/roles/{roleId}", "DELETE"); + Endpoints[5004] = CreateEndpoint("/apps/{appId}/versions/{versionId}/entities/{entityId}/roles/{roleId}", "GET"); + Endpoints[5005] = CreateEndpoint("/apps/{appId}/versions/{versionId}/entities/{entityId}/roles/{roleId}", "PUT"); + Endpoints[5006] = CreateEndpoint("/apps/{appId}/versions/{versionId}/hierarchicalentities/{hEntityId}/children/{hChildId}", "DELETE"); + Endpoints[5007] = CreateEndpoint("/apps/{appId}/versions/{versionId}/hierarchicalentities/{hEntityId}/children/{hChildId}", "PUT"); + Endpoints[5008] = CreateEndpoint("/apps/{appId}/versions/{versionId}/hierarchicalentities/{hEntityId}/children/{hChildId}", "GET"); + Endpoints[5009] = CreateEndpoint("/apps/{appId}/versions/{versionId}/hierarchicalentities/{hEntityId}/roles/{roleId}", "DELETE"); + Endpoints[5010] = CreateEndpoint("/apps/{appId}/versions/{versionId}/hierarchicalentities/{hEntityId}/roles/{roleId}", "PUT"); + Endpoints[5011] = CreateEndpoint("/apps/{appId}/versions/{versionId}/hierarchicalentities/{hEntityId}/roles/{roleId}", "GET"); + Endpoints[5012] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternanyentities/{entityId}/explicitlist/{itemId}", "PUT"); + Endpoints[5013] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternanyentities/{entityId}/explicitlist/{itemId}", "GET"); + Endpoints[5014] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternanyentities/{entityId}/explicitlist/{itemId}", "DELETE"); + Endpoints[5015] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternanyentities/{entityId}/roles/{roleId}", "GET"); + Endpoints[5016] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternanyentities/{entityId}/roles/{roleId}", "DELETE"); + Endpoints[5017] = CreateEndpoint("/apps/{appId}/versions/{versionId}/patternanyentities/{entityId}/roles/{roleId}", "PUT"); + Endpoints[5018] = CreateEndpoint("/apps/{appId}/versions/{versionId}/prebuilts/{entityId}/roles/{roleId}", "DELETE"); + Endpoints[5019] = CreateEndpoint("/apps/{appId}/versions/{versionId}/prebuilts/{entityId}/roles/{roleId}", "PUT"); + Endpoints[5020] = CreateEndpoint("/apps/{appId}/versions/{versionId}/prebuilts/{entityId}/roles/{roleId}", "GET"); + Endpoints[5021] = CreateEndpoint("/apps/{appId}/versions/{versionId}/regexentities/{entityId}/roles/{roleId}", "GET"); + Endpoints[5022] = CreateEndpoint("/apps/{appId}/versions/{versionId}/regexentities/{entityId}/roles/{roleId}", "DELETE"); + Endpoints[5023] = CreateEndpoint("/apps/{appId}/versions/{versionId}/regexentities/{entityId}/roles/{roleId}", "PUT"); + Endpoints[5024] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations/{operationId}", "GET"); + Endpoints[5025] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{authorizationNamespace}/policyAssignments/{policyAssignmentName}/providers/Microsoft.PolicyInsights/policyEvents/{policyEventsResource}/queryResults", "POST"); + Endpoints[5026] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{authorizationNamespace}/policyAssignments/{policyAssignmentName}/providers/Microsoft.PolicyInsights/policyStates/{policyStatesResource}/queryResults", "POST"); + Endpoints[5027] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{authorizationNamespace}/policyAssignments/{policyAssignmentName}/providers/Microsoft.PolicyInsights/policyStates/{policyStatesSummaryResource}/summarize", "POST"); + Endpoints[5028] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{providerNamespace}/{resourceTypeName}/{resourceName}/providers/Microsoft.EventGrid/eventSubscriptions", "GET"); + Endpoints[5029] = CreateEndpoint("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{providerNamespace}/{resourceTypeName}/{resourceName}/providers/Microsoft.EventGrid/eventTypes", "GET"); + Endpoints[5030] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceName}/providers/Microsoft.OperationsManagement/ManagementAssociations/{managementAssociationName}", "GET"); + Endpoints[5031] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceName}/providers/Microsoft.OperationsManagement/ManagementAssociations/{managementAssociationName}", "PUT"); + Endpoints[5032] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceName}/providers/Microsoft.OperationsManagement/ManagementAssociations/{managementAssociationName}", "DELETE"); + Endpoints[5033] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}", "PUT"); + Endpoints[5034] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}", "GET"); + Endpoints[5035] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}", "PATCH"); + Endpoints[5036] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}", "DELETE"); + Endpoints[5037] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}", "HEAD"); + Endpoints[5038] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}/providers/Microsoft.Authorization/locks", "GET"); + Endpoints[5039] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}/providers/Microsoft.Authorization/permissions", "GET"); + Endpoints[5040] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}/providers/Microsoft.Authorization/policyAssignments", "GET"); + Endpoints[5041] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}/providers/Microsoft.Authorization/roleAssignments", "GET"); + Endpoints[5042] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}/providers/Microsoft.Authorization/locks/{lockName}", "DELETE"); + Endpoints[5043] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}/providers/Microsoft.Authorization/locks/{lockName}", "GET"); + Endpoints[5044] = CreateEndpoint("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}/providers/Microsoft.Authorization/locks/{lockName}", "PUT"); + Endpoints[5045] = CreateEndpoint("/apps/{appId}/events/{eventType}/{eventId}", "GET"); + Endpoints[5046] = CreateEndpoint("/certificates/{certificate-name}/{certificate-version}", "PATCH"); + Endpoints[5047] = CreateEndpoint("/certificates/{certificate-name}/{certificate-version}", "GET"); + Endpoints[5048] = CreateEndpoint("/keys/{key-name}/{key-version}", "GET"); + Endpoints[5049] = CreateEndpoint("/keys/{key-name}/{key-version}", "PATCH"); + Endpoints[5050] = CreateEndpoint("/quotas/{quotaCounterKey}/{quotaPeriodKey}", "GET"); + Endpoints[5051] = CreateEndpoint("/quotas/{quotaCounterKey}/{quotaPeriodKey}", "PATCH"); + Endpoints[5052] = CreateEndpoint("/secrets/{secret-name}/{secret-version}", "PATCH"); + Endpoints[5053] = CreateEndpoint("/secrets/{secret-name}/{secret-version}", "GET"); + Endpoints[5054] = CreateEndpoint("/keys/{key-name}/{key-version}/decrypt", "POST"); + Endpoints[5055] = CreateEndpoint("/keys/{key-name}/{key-version}/encrypt", "POST"); + Endpoints[5056] = CreateEndpoint("/keys/{key-name}/{key-version}/sign", "POST"); + Endpoints[5057] = CreateEndpoint("/keys/{key-name}/{key-version}/unwrapkey", "POST"); + Endpoints[5058] = CreateEndpoint("/keys/{key-name}/{key-version}/verify", "POST"); + Endpoints[5059] = CreateEndpoint("/keys/{key-name}/{key-version}/wrapkey", "POST"); + Endpoints[5060] = CreateEndpoint("/{appId}", "POST"); + Endpoints[5061] = CreateEndpoint("/{applicationDefinitionId}", "DELETE"); + Endpoints[5062] = CreateEndpoint("/{applicationDefinitionId}", "PUT"); + Endpoints[5063] = CreateEndpoint("/{applicationDefinitionId}", "GET"); + Endpoints[5064] = CreateEndpoint("/{applicationId}", "PATCH"); + Endpoints[5065] = CreateEndpoint("/{resourceId}", "HEAD"); + Endpoints[5066] = CreateEndpoint("/{projectId}/image", "POST"); + Endpoints[5067] = CreateEndpoint("/{projectId}/url", "POST"); + Endpoints[5068] = CreateEndpoint("/{tenantID}/applications", "GET"); + Endpoints[5069] = CreateEndpoint("/{tenantID}/applications", "POST"); + Endpoints[5070] = CreateEndpoint("/{tenantID}/domains", "GET"); + Endpoints[5071] = CreateEndpoint("/{tenantID}/getObjectsByObjectIds", "POST"); + Endpoints[5072] = CreateEndpoint("/{tenantID}/groups", "GET"); + Endpoints[5073] = CreateEndpoint("/{tenantID}/groups", "POST"); + Endpoints[5074] = CreateEndpoint("/{tenantID}/isMemberOf", "POST"); + Endpoints[5075] = CreateEndpoint("/{tenantID}/me", "GET"); + Endpoints[5076] = CreateEndpoint("/{tenantID}/servicePrincipals", "POST"); + Endpoints[5077] = CreateEndpoint("/{tenantID}/servicePrincipals", "GET"); + Endpoints[5078] = CreateEndpoint("/{tenantID}/users", "POST"); + Endpoints[5079] = CreateEndpoint("/{tenantID}/users", "GET"); + Endpoints[5080] = CreateEndpoint("/{projectId}/image/nostore", "POST"); + Endpoints[5081] = CreateEndpoint("/{projectId}/url/nostore", "POST"); + Endpoints[5082] = CreateEndpoint("/{resourceUri}/providers/microsoft.insights/calculatebaseline", "POST"); + Endpoints[5083] = CreateEndpoint("/{resourceUri}/providers/microsoft.insights/diagnosticSettings", "GET"); + Endpoints[5084] = CreateEndpoint("/{resourceUri}/providers/microsoft.insights/diagnosticSettingsCategories", "GET"); + Endpoints[5085] = CreateEndpoint("/{resourceUri}/providers/microsoft.insights/metricDefinitions", "GET"); + Endpoints[5086] = CreateEndpoint("/{resourceUri}/providers/microsoft.insights/metrics", "GET"); + Endpoints[5087] = CreateEndpoint("/{resourceUri}/providers/Microsoft.ResourceHealth/availabilityStatuses", "GET"); + Endpoints[5088] = CreateEndpoint("/{scope}/providers/Microsoft.Authorization/policyAssignments", "GET"); + Endpoints[5089] = CreateEndpoint("/{scope}/providers/Microsoft.Authorization/roleAssignments", "GET"); + Endpoints[5090] = CreateEndpoint("/{scope}/providers/Microsoft.Authorization/roleDefinitions", "GET"); + Endpoints[5091] = CreateEndpoint("/{scope}/providers/Microsoft.Consumption/reservationDetails", "GET"); + Endpoints[5092] = CreateEndpoint("/{scope}/providers/Microsoft.Consumption/reservationSummaries", "GET"); + Endpoints[5093] = CreateEndpoint("/{scope}/providers/Microsoft.Consumption/usageDetails", "GET"); + Endpoints[5094] = CreateEndpoint("/{scope}/providers/Microsoft.Resources/links", "GET"); + Endpoints[5095] = CreateEndpoint("/{scope}/providers/Microsoft.Security/compliances", "GET"); + Endpoints[5096] = CreateEndpoint("/{resourceUri}/providers/microsoft.insights/diagnosticSettings/service", "PATCH"); + Endpoints[5097] = CreateEndpoint("/{resourceUri}/providers/microsoft.insights/diagnosticSettings/service", "PUT"); + Endpoints[5098] = CreateEndpoint("/{resourceUri}/providers/microsoft.insights/diagnosticSettings/service", "GET"); + Endpoints[5099] = CreateEndpoint("/{resourceUri}/providers/Microsoft.ResourceHealth/availabilityStatuses/current", "GET"); + Endpoints[5100] = CreateEndpoint("/{scope}/providers/Microsoft.PolicyInsights/policyEvents/$metadata", "GET"); + Endpoints[5101] = CreateEndpoint("/{scope}/providers/Microsoft.PolicyInsights/policyStates/$metadata", "GET"); + Endpoints[5102] = CreateEndpoint("/{resourceUri}/providers/Microsoft.Advisor/recommendations/{recommendationId}", "GET"); + Endpoints[5103] = CreateEndpoint("/{resourceUri}/providers/microsoft.insights/baseline/{metricName}", "GET"); + Endpoints[5104] = CreateEndpoint("/{resourceUri}/providers/microsoft.insights/diagnosticSettings/{name}", "PUT"); + Endpoints[5105] = CreateEndpoint("/{resourceUri}/providers/microsoft.insights/diagnosticSettings/{name}", "GET"); + Endpoints[5106] = CreateEndpoint("/{resourceUri}/providers/microsoft.insights/diagnosticSettings/{name}", "DELETE"); + Endpoints[5107] = CreateEndpoint("/{resourceUri}/providers/microsoft.insights/diagnosticSettingsCategories/{name}", "GET"); + Endpoints[5108] = CreateEndpoint("/{scope}/providers/Microsoft.Authorization/locks/{lockName}", "GET"); + Endpoints[5109] = CreateEndpoint("/{scope}/providers/Microsoft.Authorization/locks/{lockName}", "PUT"); + Endpoints[5110] = CreateEndpoint("/{scope}/providers/Microsoft.Authorization/locks/{lockName}", "DELETE"); + Endpoints[5111] = CreateEndpoint("/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}", "GET"); + Endpoints[5112] = CreateEndpoint("/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}", "PUT"); + Endpoints[5113] = CreateEndpoint("/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}", "DELETE"); + Endpoints[5114] = CreateEndpoint("/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentName}", "PUT"); + Endpoints[5115] = CreateEndpoint("/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentName}", "GET"); + Endpoints[5116] = CreateEndpoint("/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentName}", "DELETE"); + Endpoints[5117] = CreateEndpoint("/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}", "PUT"); + Endpoints[5118] = CreateEndpoint("/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}", "GET"); + Endpoints[5119] = CreateEndpoint("/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}", "DELETE"); + Endpoints[5120] = CreateEndpoint("/{scope}/providers/Microsoft.EventGrid/eventSubscriptions/{eventSubscriptionName}", "PUT"); + Endpoints[5121] = CreateEndpoint("/{scope}/providers/Microsoft.EventGrid/eventSubscriptions/{eventSubscriptionName}", "GET"); + Endpoints[5122] = CreateEndpoint("/{scope}/providers/Microsoft.EventGrid/eventSubscriptions/{eventSubscriptionName}", "DELETE"); + Endpoints[5123] = CreateEndpoint("/{scope}/providers/Microsoft.EventGrid/eventSubscriptions/{eventSubscriptionName}", "PATCH"); + Endpoints[5124] = CreateEndpoint("/{scope}/providers/Microsoft.Security/compliances/{complianceName}", "GET"); + Endpoints[5125] = CreateEndpoint("/{resourceId}/providers/Microsoft.PolicyInsights/policyEvents/{policyEventsResource}/queryResults", "POST"); + Endpoints[5126] = CreateEndpoint("/{resourceId}/providers/Microsoft.PolicyInsights/policyStates/{policyStatesResource}/queryResults", "POST"); + Endpoints[5127] = CreateEndpoint("/{resourceId}/providers/Microsoft.PolicyInsights/policyStates/{policyStatesSummaryResource}/summarize", "POST"); + Endpoints[5128] = CreateEndpoint("/{scope}/providers/Microsoft.EventGrid/eventSubscriptions/{eventSubscriptionName}/getFullUrl", "POST"); + Endpoints[5129] = CreateEndpoint("/{resourceUri}/providers/Microsoft.Advisor/recommendations/{recommendationId}/suppressions/{name}", "DELETE"); + Endpoints[5130] = CreateEndpoint("/{resourceUri}/providers/Microsoft.Advisor/recommendations/{recommendationId}/suppressions/{name}", "PUT"); + Endpoints[5131] = CreateEndpoint("/{resourceUri}/providers/Microsoft.Advisor/recommendations/{recommendationId}/suppressions/{name}", "GET"); + Endpoints[5132] = CreateEndpoint("/{tenantID}/applications/{applicationObjectId}", "PATCH"); + Endpoints[5133] = CreateEndpoint("/{tenantID}/applications/{applicationObjectId}", "DELETE"); + Endpoints[5134] = CreateEndpoint("/{tenantID}/applications/{applicationObjectId}", "GET"); + Endpoints[5135] = CreateEndpoint("/{tenantID}/domains/{domainName}", "GET"); + Endpoints[5136] = CreateEndpoint("/{tenantID}/groups/{objectId}", "GET"); + Endpoints[5137] = CreateEndpoint("/{tenantID}/groups/{objectId}", "DELETE"); + Endpoints[5138] = CreateEndpoint("/{tenantID}/servicePrincipals/{objectId}", "DELETE"); + Endpoints[5139] = CreateEndpoint("/{tenantID}/servicePrincipals/{objectId}", "GET"); + Endpoints[5140] = CreateEndpoint("/{tenantID}/users/{upnOrObjectId}", "DELETE"); + Endpoints[5141] = CreateEndpoint("/{tenantID}/users/{upnOrObjectId}", "GET"); + Endpoints[5142] = CreateEndpoint("/{tenantID}/users/{upnOrObjectId}", "PATCH"); + Endpoints[5143] = CreateEndpoint("/{projectId}/images/{imageId}/regionproposals", "POST"); + Endpoints[5144] = CreateEndpoint("/{tenantID}/applications/{applicationObjectId}/keyCredentials", "GET"); + Endpoints[5145] = CreateEndpoint("/{tenantID}/applications/{applicationObjectId}/keyCredentials", "PATCH"); + Endpoints[5146] = CreateEndpoint("/{tenantID}/applications/{applicationObjectId}/owners", "GET"); + Endpoints[5147] = CreateEndpoint("/{tenantID}/applications/{applicationObjectId}/passwordCredentials", "GET"); + Endpoints[5148] = CreateEndpoint("/{tenantID}/applications/{applicationObjectId}/passwordCredentials", "PATCH"); + Endpoints[5149] = CreateEndpoint("/{tenantID}/groups/{objectId}/getMemberGroups", "POST"); + Endpoints[5150] = CreateEndpoint("/{tenantID}/groups/{objectId}/members", "GET"); + Endpoints[5151] = CreateEndpoint("/{tenantID}/servicePrincipals/{objectId}/keyCredentials", "PATCH"); + Endpoints[5152] = CreateEndpoint("/{tenantID}/servicePrincipals/{objectId}/keyCredentials", "GET"); + Endpoints[5153] = CreateEndpoint("/{tenantID}/servicePrincipals/{objectId}/owners", "GET"); + Endpoints[5154] = CreateEndpoint("/{tenantID}/servicePrincipals/{objectId}/passwordCredentials", "GET"); + Endpoints[5155] = CreateEndpoint("/{tenantID}/servicePrincipals/{objectId}/passwordCredentials", "PATCH"); + Endpoints[5156] = CreateEndpoint("/{tenantID}/users/{objectId}/getMemberGroups", "POST"); + Endpoints[5157] = CreateEndpoint("/{tenantID}/applications/{applicationObjectId}/$links/owners", "POST"); + Endpoints[5158] = CreateEndpoint("/{tenantID}/groups/{groupObjectId}/$links/members", "POST"); + Endpoints[5159] = CreateEndpoint("/{tenantID}/groups/{groupObjectId}/$links/members/{memberObjectId}", "DELETE"); + } + + private protected void SetupRequests() + { + Requests = new HttpContext[5160]; + Requests[0] = new DefaultHttpContext(); + Requests[0].RequestServices = CreateServices(); + Requests[0].Request.Method = "GET"; + Requests[0].Request.Path = "/account"; + Requests[1] = new DefaultHttpContext(); + Requests[1].RequestServices = CreateServices(); + Requests[1].Request.Method = "POST"; + Requests[1].Request.Path = "/analyze"; + Requests[2] = new DefaultHttpContext(); + Requests[2].RequestServices = CreateServices(); + Requests[2].Request.Method = "GET"; + Requests[2].Request.Path = "/apis"; + Requests[3] = new DefaultHttpContext(); + Requests[3].RequestServices = CreateServices(); + Requests[3].Request.Method = "GET"; + Requests[3].Request.Path = "/Applications"; + Requests[4] = new DefaultHttpContext(); + Requests[4].RequestServices = CreateServices(); + Requests[4].Request.Method = "GET"; + Requests[4].Request.Path = "/ApplicationTypes"; + Requests[5] = new DefaultHttpContext(); + Requests[5].RequestServices = CreateServices(); + Requests[5].Request.Method = "GET"; + Requests[5].Request.Path = "/apps"; + Requests[6] = new DefaultHttpContext(); + Requests[6].RequestServices = CreateServices(); + Requests[6].Request.Method = "POST"; + Requests[6].Request.Path = "/apps"; + Requests[7] = new DefaultHttpContext(); + Requests[7].RequestServices = CreateServices(); + Requests[7].Request.Method = "GET"; + Requests[7].Request.Path = "/authorizationServers"; + Requests[8] = new DefaultHttpContext(); + Requests[8].RequestServices = CreateServices(); + Requests[8].Request.Method = "GET"; + Requests[8].Request.Path = "/backends"; + Requests[9] = new DefaultHttpContext(); + Requests[9].RequestServices = CreateServices(); + Requests[9].Request.Method = "POST"; + Requests[9].Request.Path = "/BuildJob"; + Requests[10] = new DefaultHttpContext(); + Requests[10].RequestServices = CreateServices(); + Requests[10].Request.Method = "POST"; + Requests[10].Request.Path = "/certificates"; + Requests[11] = new DefaultHttpContext(); + Requests[11].RequestServices = CreateServices(); + Requests[11].Request.Method = "GET"; + Requests[11].Request.Path = "/certificates"; + Requests[12] = new DefaultHttpContext(); + Requests[12].RequestServices = CreateServices(); + Requests[12].Request.Method = "GET"; + Requests[12].Request.Path = "/ComposeDeployments"; + Requests[13] = new DefaultHttpContext(); + Requests[13].RequestServices = CreateServices(); + Requests[13].Request.Method = "POST"; + Requests[13].Request.Path = "/datasources"; + Requests[14] = new DefaultHttpContext(); + Requests[14].RequestServices = CreateServices(); + Requests[14].Request.Method = "GET"; + Requests[14].Request.Path = "/datasources"; + Requests[15] = new DefaultHttpContext(); + Requests[15].RequestServices = CreateServices(); + Requests[15].Request.Method = "GET"; + Requests[15].Request.Path = "/deletedcertificates"; + Requests[16] = new DefaultHttpContext(); + Requests[16].RequestServices = CreateServices(); + Requests[16].Request.Method = "GET"; + Requests[16].Request.Path = "/deletedkeys"; + Requests[17] = new DefaultHttpContext(); + Requests[17].RequestServices = CreateServices(); + Requests[17].Request.Method = "GET"; + Requests[17].Request.Path = "/deletedsecrets"; + Requests[18] = new DefaultHttpContext(); + Requests[18].RequestServices = CreateServices(); + Requests[18].Request.Method = "GET"; + Requests[18].Request.Path = "/deletedstorage"; + Requests[19] = new DefaultHttpContext(); + Requests[19].RequestServices = CreateServices(); + Requests[19].Request.Method = "POST"; + Requests[19].Request.Path = "/describe"; + Requests[20] = new DefaultHttpContext(); + Requests[20].RequestServices = CreateServices(); + Requests[20].Request.Method = "POST"; + Requests[20].Request.Path = "/detect"; + Requests[21] = new DefaultHttpContext(); + Requests[21].RequestServices = CreateServices(); + Requests[21].Request.Method = "GET"; + Requests[21].Request.Path = "/domains"; + Requests[22] = new DefaultHttpContext(); + Requests[22].RequestServices = CreateServices(); + Requests[22].Request.Method = "GET"; + Requests[22].Request.Path = "/entities"; + Requests[23] = new DefaultHttpContext(); + Requests[23].RequestServices = CreateServices(); + Requests[23].Request.Method = "GET"; + Requests[23].Request.Path = "/facelists"; + Requests[24] = new DefaultHttpContext(); + Requests[24].RequestServices = CreateServices(); + Requests[24].Request.Method = "GET"; + Requests[24].Request.Path = "/Faults"; + Requests[25] = new DefaultHttpContext(); + Requests[25].RequestServices = CreateServices(); + Requests[25].Request.Method = "POST"; + Requests[25].Request.Path = "/findsimilars"; + Requests[26] = new DefaultHttpContext(); + Requests[26].RequestServices = CreateServices(); + Requests[26].Request.Method = "POST"; + Requests[26].Request.Path = "/generateThumbnail"; + Requests[27] = new DefaultHttpContext(); + Requests[27].RequestServices = CreateServices(); + Requests[27].Request.Method = "POST"; + Requests[27].Request.Path = "/group"; + Requests[28] = new DefaultHttpContext(); + Requests[28].RequestServices = CreateServices(); + Requests[28].Request.Method = "GET"; + Requests[28].Request.Path = "/groups"; + Requests[29] = new DefaultHttpContext(); + Requests[29].RequestServices = CreateServices(); + Requests[29].Request.Method = "POST"; + Requests[29].Request.Path = "/identify"; + Requests[30] = new DefaultHttpContext(); + Requests[30].RequestServices = CreateServices(); + Requests[30].Request.Method = "GET"; + Requests[30].Request.Path = "/identityProviders"; + Requests[31] = new DefaultHttpContext(); + Requests[31].RequestServices = CreateServices(); + Requests[31].Request.Method = "GET"; + Requests[31].Request.Path = "/ImageStore"; + Requests[32] = new DefaultHttpContext(); + Requests[32].RequestServices = CreateServices(); + Requests[32].Request.Method = "POST"; + Requests[32].Request.Path = "/indexers"; + Requests[33] = new DefaultHttpContext(); + Requests[33].RequestServices = CreateServices(); + Requests[33].Request.Method = "GET"; + Requests[33].Request.Path = "/indexers"; + Requests[34] = new DefaultHttpContext(); + Requests[34].RequestServices = CreateServices(); + Requests[34].Request.Method = "GET"; + Requests[34].Request.Path = "/indexes"; + Requests[35] = new DefaultHttpContext(); + Requests[35].RequestServices = CreateServices(); + Requests[35].Request.Method = "POST"; + Requests[35].Request.Path = "/indexes"; + Requests[36] = new DefaultHttpContext(); + Requests[36].RequestServices = CreateServices(); + Requests[36].Request.Method = "POST"; + Requests[36].Request.Path = "/jobs"; + Requests[37] = new DefaultHttpContext(); + Requests[37].RequestServices = CreateServices(); + Requests[37].Request.Method = "GET"; + Requests[37].Request.Path = "/Jobs"; + Requests[38] = new DefaultHttpContext(); + Requests[38].RequestServices = CreateServices(); + Requests[38].Request.Method = "POST"; + Requests[38].Request.Path = "/jobschedules"; + Requests[39] = new DefaultHttpContext(); + Requests[39].RequestServices = CreateServices(); + Requests[39].Request.Method = "GET"; + Requests[39].Request.Path = "/jobschedules"; + Requests[40] = new DefaultHttpContext(); + Requests[40].RequestServices = CreateServices(); + Requests[40].Request.Method = "GET"; + Requests[40].Request.Path = "/keys"; + Requests[41] = new DefaultHttpContext(); + Requests[41].RequestServices = CreateServices(); + Requests[41].Request.Method = "GET"; + Requests[41].Request.Path = "/lifetimejobstats"; + Requests[42] = new DefaultHttpContext(); + Requests[42].RequestServices = CreateServices(); + Requests[42].Request.Method = "GET"; + Requests[42].Request.Path = "/lifetimepoolstats"; + Requests[43] = new DefaultHttpContext(); + Requests[43].RequestServices = CreateServices(); + Requests[43].Request.Method = "GET"; + Requests[43].Request.Path = "/loggers"; + Requests[44] = new DefaultHttpContext(); + Requests[44].RequestServices = CreateServices(); + Requests[44].Request.Method = "GET"; + Requests[44].Request.Path = "/models"; + Requests[45] = new DefaultHttpContext(); + Requests[45].RequestServices = CreateServices(); + Requests[45].Request.Method = "GET"; + Requests[45].Request.Path = "/news"; + Requests[46] = new DefaultHttpContext(); + Requests[46].RequestServices = CreateServices(); + Requests[46].Request.Method = "GET"; + Requests[46].Request.Path = "/nodeagentskus"; + Requests[47] = new DefaultHttpContext(); + Requests[47].RequestServices = CreateServices(); + Requests[47].Request.Method = "GET"; + Requests[47].Request.Path = "/nodecounts"; + Requests[48] = new DefaultHttpContext(); + Requests[48].RequestServices = CreateServices(); + Requests[48].Request.Method = "GET"; + Requests[48].Request.Path = "/Nodes"; + Requests[49] = new DefaultHttpContext(); + Requests[49].RequestServices = CreateServices(); + Requests[49].Request.Method = "POST"; + Requests[49].Request.Path = "/ocr"; + Requests[50] = new DefaultHttpContext(); + Requests[50].RequestServices = CreateServices(); + Requests[50].Request.Method = "GET"; + Requests[50].Request.Path = "/offers"; + Requests[51] = new DefaultHttpContext(); + Requests[51].RequestServices = CreateServices(); + Requests[51].Request.Method = "GET"; + Requests[51].Request.Path = "/openidConnectProviders"; + Requests[52] = new DefaultHttpContext(); + Requests[52].RequestServices = CreateServices(); + Requests[52].Request.Method = "GET"; + Requests[52].Request.Path = "/persongroups"; + Requests[53] = new DefaultHttpContext(); + Requests[53].RequestServices = CreateServices(); + Requests[53].Request.Method = "GET"; + Requests[53].Request.Path = "/pipelines"; + Requests[54] = new DefaultHttpContext(); + Requests[54].RequestServices = CreateServices(); + Requests[54].Request.Method = "GET"; + Requests[54].Request.Path = "/policies"; + Requests[55] = new DefaultHttpContext(); + Requests[55].RequestServices = CreateServices(); + Requests[55].Request.Method = "GET"; + Requests[55].Request.Path = "/policySnippets"; + Requests[56] = new DefaultHttpContext(); + Requests[56].RequestServices = CreateServices(); + Requests[56].Request.Method = "GET"; + Requests[56].Request.Path = "/pools"; + Requests[57] = new DefaultHttpContext(); + Requests[57].RequestServices = CreateServices(); + Requests[57].Request.Method = "POST"; + Requests[57].Request.Path = "/pools"; + Requests[58] = new DefaultHttpContext(); + Requests[58].RequestServices = CreateServices(); + Requests[58].Request.Method = "GET"; + Requests[58].Request.Path = "/poolusagemetrics"; + Requests[59] = new DefaultHttpContext(); + Requests[59].RequestServices = CreateServices(); + Requests[59].Request.Method = "GET"; + Requests[59].Request.Path = "/products"; + Requests[60] = new DefaultHttpContext(); + Requests[60].RequestServices = CreateServices(); + Requests[60].Request.Method = "POST"; + Requests[60].Request.Path = "/projects"; + Requests[61] = new DefaultHttpContext(); + Requests[61].RequestServices = CreateServices(); + Requests[61].Request.Method = "GET"; + Requests[61].Request.Path = "/projects"; + Requests[62] = new DefaultHttpContext(); + Requests[62].RequestServices = CreateServices(); + Requests[62].Request.Method = "GET"; + Requests[62].Request.Path = "/properties"; + Requests[63] = new DefaultHttpContext(); + Requests[63].RequestServices = CreateServices(); + Requests[63].Request.Method = "POST"; + Requests[63].Request.Path = "/recognizeText"; + Requests[64] = new DefaultHttpContext(); + Requests[64].RequestServices = CreateServices(); + Requests[64].Request.Method = "GET"; + Requests[64].Request.Path = "/recurrences"; + Requests[65] = new DefaultHttpContext(); + Requests[65].RequestServices = CreateServices(); + Requests[65].Request.Method = "GET"; + Requests[65].Request.Path = "/regions"; + Requests[66] = new DefaultHttpContext(); + Requests[66].RequestServices = CreateServices(); + Requests[66].Request.Method = "GET"; + Requests[66].Request.Path = "/search"; + Requests[67] = new DefaultHttpContext(); + Requests[67].RequestServices = CreateServices(); + Requests[67].Request.Method = "GET"; + Requests[67].Request.Path = "/secrets"; + Requests[68] = new DefaultHttpContext(); + Requests[68].RequestServices = CreateServices(); + Requests[68].Request.Method = "GET"; + Requests[68].Request.Path = "/servicestats"; + Requests[69] = new DefaultHttpContext(); + Requests[69].RequestServices = CreateServices(); + Requests[69].Request.Method = "POST"; + Requests[69].Request.Path = "/spellcheck"; + Requests[70] = new DefaultHttpContext(); + Requests[70].RequestServices = CreateServices(); + Requests[70].Request.Method = "GET"; + Requests[70].Request.Path = "/storage"; + Requests[71] = new DefaultHttpContext(); + Requests[71].RequestServices = CreateServices(); + Requests[71].Request.Method = "GET"; + Requests[71].Request.Path = "/subscriptions"; + Requests[72] = new DefaultHttpContext(); + Requests[72].RequestServices = CreateServices(); + Requests[72].Request.Method = "POST"; + Requests[72].Request.Path = "/synonymmaps"; + Requests[73] = new DefaultHttpContext(); + Requests[73].RequestServices = CreateServices(); + Requests[73].Request.Method = "GET"; + Requests[73].Request.Path = "/synonymmaps"; + Requests[74] = new DefaultHttpContext(); + Requests[74].RequestServices = CreateServices(); + Requests[74].Request.Method = "POST"; + Requests[74].Request.Path = "/tag"; + Requests[75] = new DefaultHttpContext(); + Requests[75].RequestServices = CreateServices(); + Requests[75].Request.Method = "GET"; + Requests[75].Request.Path = "/templates"; + Requests[76] = new DefaultHttpContext(); + Requests[76].RequestServices = CreateServices(); + Requests[76].Request.Method = "GET"; + Requests[76].Request.Path = "/tenants"; + Requests[77] = new DefaultHttpContext(); + Requests[77].RequestServices = CreateServices(); + Requests[77].Request.Method = "GET"; + Requests[77].Request.Path = "/users"; + Requests[78] = new DefaultHttpContext(); + Requests[78].RequestServices = CreateServices(); + Requests[78].Request.Method = "POST"; + Requests[78].Request.Path = "/verify"; + Requests[79] = new DefaultHttpContext(); + Requests[79].RequestServices = CreateServices(); + Requests[79].Request.Method = "POST"; + Requests[79].Request.Path = "/$/CancelRepairTask"; + Requests[80] = new DefaultHttpContext(); + Requests[80].RequestServices = CreateServices(); + Requests[80].Request.Method = "POST"; + Requests[80].Request.Path = "/$/CreateRepairTask"; + Requests[81] = new DefaultHttpContext(); + Requests[81].RequestServices = CreateServices(); + Requests[81].Request.Method = "POST"; + Requests[81].Request.Path = "/$/DeleteRepairTask"; + Requests[82] = new DefaultHttpContext(); + Requests[82].RequestServices = CreateServices(); + Requests[82].Request.Method = "POST"; + Requests[82].Request.Path = "/$/ForceApproveRepairTask"; + Requests[83] = new DefaultHttpContext(); + Requests[83].RequestServices = CreateServices(); + Requests[83].Request.Method = "GET"; + Requests[83].Request.Path = "/$/GetAadMetadata"; + Requests[84] = new DefaultHttpContext(); + Requests[84].RequestServices = CreateServices(); + Requests[84].Request.Method = "GET"; + Requests[84].Request.Path = "/$/GetClusterConfiguration"; + Requests[85] = new DefaultHttpContext(); + Requests[85].RequestServices = CreateServices(); + Requests[85].Request.Method = "GET"; + Requests[85].Request.Path = "/$/GetClusterConfigurationUpgradeStatus"; + Requests[86] = new DefaultHttpContext(); + Requests[86].RequestServices = CreateServices(); + Requests[86].Request.Method = "GET"; + Requests[86].Request.Path = "/$/GetClusterHealth"; + Requests[87] = new DefaultHttpContext(); + Requests[87].RequestServices = CreateServices(); + Requests[87].Request.Method = "POST"; + Requests[87].Request.Path = "/$/GetClusterHealth"; + Requests[88] = new DefaultHttpContext(); + Requests[88].RequestServices = CreateServices(); + Requests[88].Request.Method = "POST"; + Requests[88].Request.Path = "/$/GetClusterHealthChunk"; + Requests[89] = new DefaultHttpContext(); + Requests[89].RequestServices = CreateServices(); + Requests[89].Request.Method = "GET"; + Requests[89].Request.Path = "/$/GetClusterHealthChunk"; + Requests[90] = new DefaultHttpContext(); + Requests[90].RequestServices = CreateServices(); + Requests[90].Request.Method = "GET"; + Requests[90].Request.Path = "/$/GetClusterManifest"; + Requests[91] = new DefaultHttpContext(); + Requests[91].RequestServices = CreateServices(); + Requests[91].Request.Method = "GET"; + Requests[91].Request.Path = "/$/GetLoadInformation"; + Requests[92] = new DefaultHttpContext(); + Requests[92].RequestServices = CreateServices(); + Requests[92].Request.Method = "GET"; + Requests[92].Request.Path = "/$/GetProvisionedCodeVersions"; + Requests[93] = new DefaultHttpContext(); + Requests[93].RequestServices = CreateServices(); + Requests[93].Request.Method = "GET"; + Requests[93].Request.Path = "/$/GetProvisionedConfigVersions"; + Requests[94] = new DefaultHttpContext(); + Requests[94].RequestServices = CreateServices(); + Requests[94].Request.Method = "GET"; + Requests[94].Request.Path = "/$/GetRepairTaskList"; + Requests[95] = new DefaultHttpContext(); + Requests[95].RequestServices = CreateServices(); + Requests[95].Request.Method = "GET"; + Requests[95].Request.Path = "/$/GetUpgradeOrchestrationServiceState"; + Requests[96] = new DefaultHttpContext(); + Requests[96].RequestServices = CreateServices(); + Requests[96].Request.Method = "GET"; + Requests[96].Request.Path = "/$/GetUpgradeProgress"; + Requests[97] = new DefaultHttpContext(); + Requests[97].RequestServices = CreateServices(); + Requests[97].Request.Method = "POST"; + Requests[97].Request.Path = "/$/InvokeInfrastructureCommand"; + Requests[98] = new DefaultHttpContext(); + Requests[98].RequestServices = CreateServices(); + Requests[98].Request.Method = "GET"; + Requests[98].Request.Path = "/$/InvokeInfrastructureQuery"; + Requests[99] = new DefaultHttpContext(); + Requests[99].RequestServices = CreateServices(); + Requests[99].Request.Method = "POST"; + Requests[99].Request.Path = "/$/MoveToNextUpgradeDomain"; + Requests[100] = new DefaultHttpContext(); + Requests[100].RequestServices = CreateServices(); + Requests[100].Request.Method = "POST"; + Requests[100].Request.Path = "/$/Provision"; + Requests[101] = new DefaultHttpContext(); + Requests[101].RequestServices = CreateServices(); + Requests[101].Request.Method = "POST"; + Requests[101].Request.Path = "/$/RecoverAllPartitions"; + Requests[102] = new DefaultHttpContext(); + Requests[102].RequestServices = CreateServices(); + Requests[102].Request.Method = "POST"; + Requests[102].Request.Path = "/$/RecoverSystemPartitions"; + Requests[103] = new DefaultHttpContext(); + Requests[103].RequestServices = CreateServices(); + Requests[103].Request.Method = "POST"; + Requests[103].Request.Path = "/$/ReportClusterHealth"; + Requests[104] = new DefaultHttpContext(); + Requests[104].RequestServices = CreateServices(); + Requests[104].Request.Method = "POST"; + Requests[104].Request.Path = "/$/RollbackUpgrade"; + Requests[105] = new DefaultHttpContext(); + Requests[105].RequestServices = CreateServices(); + Requests[105].Request.Method = "POST"; + Requests[105].Request.Path = "/$/SetUpgradeOrchestrationServiceState"; + Requests[106] = new DefaultHttpContext(); + Requests[106].RequestServices = CreateServices(); + Requests[106].Request.Method = "POST"; + Requests[106].Request.Path = "/$/StartClusterConfigurationUpgrade"; + Requests[107] = new DefaultHttpContext(); + Requests[107].RequestServices = CreateServices(); + Requests[107].Request.Method = "POST"; + Requests[107].Request.Path = "/$/Unprovision"; + Requests[108] = new DefaultHttpContext(); + Requests[108].RequestServices = CreateServices(); + Requests[108].Request.Method = "POST"; + Requests[108].Request.Path = "/$/UpdateRepairExecutionState"; + Requests[109] = new DefaultHttpContext(); + Requests[109].RequestServices = CreateServices(); + Requests[109].Request.Method = "POST"; + Requests[109].Request.Path = "/$/UpdateRepairTaskHealthPolicy"; + Requests[110] = new DefaultHttpContext(); + Requests[110].RequestServices = CreateServices(); + Requests[110].Request.Method = "POST"; + Requests[110].Request.Path = "/$/UpdateUpgrade"; + Requests[111] = new DefaultHttpContext(); + Requests[111].RequestServices = CreateServices(); + Requests[111].Request.Method = "POST"; + Requests[111].Request.Path = "/$/Upgrade"; + Requests[112] = new DefaultHttpContext(); + Requests[112].RequestServices = CreateServices(); + Requests[112].Request.Method = "POST"; + Requests[112].Request.Path = "/api/events"; + Requests[113] = new DefaultHttpContext(); + Requests[113].RequestServices = CreateServices(); + Requests[113].Request.Method = "GET"; + Requests[113].Request.Path = "/apps/assistants"; + Requests[114] = new DefaultHttpContext(); + Requests[114].RequestServices = CreateServices(); + Requests[114].Request.Method = "GET"; + Requests[114].Request.Path = "/apps/cultures"; + Requests[115] = new DefaultHttpContext(); + Requests[115].RequestServices = CreateServices(); + Requests[115].Request.Method = "POST"; + Requests[115].Request.Path = "/apps/customprebuiltdomains"; + Requests[116] = new DefaultHttpContext(); + Requests[116].RequestServices = CreateServices(); + Requests[116].Request.Method = "GET"; + Requests[116].Request.Path = "/apps/customprebuiltdomains"; + Requests[117] = new DefaultHttpContext(); + Requests[117].RequestServices = CreateServices(); + Requests[117].Request.Method = "GET"; + Requests[117].Request.Path = "/apps/domains"; + Requests[118] = new DefaultHttpContext(); + Requests[118].RequestServices = CreateServices(); + Requests[118].Request.Method = "POST"; + Requests[118].Request.Path = "/apps/import"; + Requests[119] = new DefaultHttpContext(); + Requests[119].RequestServices = CreateServices(); + Requests[119].Request.Method = "GET"; + Requests[119].Request.Path = "/apps/usagescenarios"; + Requests[120] = new DefaultHttpContext(); + Requests[120].RequestServices = CreateServices(); + Requests[120].Request.Method = "GET"; + Requests[120].Request.Path = "/BackupRestore/BackupPolicies"; + Requests[121] = new DefaultHttpContext(); + Requests[121].RequestServices = CreateServices(); + Requests[121].Request.Method = "GET"; + Requests[121].Request.Path = "/certificates/contacts"; + Requests[122] = new DefaultHttpContext(); + Requests[122].RequestServices = CreateServices(); + Requests[122].Request.Method = "DELETE"; + Requests[122].Request.Path = "/certificates/contacts"; + Requests[123] = new DefaultHttpContext(); + Requests[123].RequestServices = CreateServices(); + Requests[123].Request.Method = "PUT"; + Requests[123].Request.Path = "/certificates/contacts"; + Requests[124] = new DefaultHttpContext(); + Requests[124].RequestServices = CreateServices(); + Requests[124].Request.Method = "GET"; + Requests[124].Request.Path = "/certificates/issuers"; + Requests[125] = new DefaultHttpContext(); + Requests[125].RequestServices = CreateServices(); + Requests[125].Request.Method = "GET"; + Requests[125].Request.Path = "/docs/$count"; + Requests[126] = new DefaultHttpContext(); + Requests[126].RequestServices = CreateServices(); + Requests[126].Request.Method = "POST"; + Requests[126].Request.Path = "/docs/autocomplete"; + Requests[127] = new DefaultHttpContext(); + Requests[127].RequestServices = CreateServices(); + Requests[127].Request.Method = "GET"; + Requests[127].Request.Path = "/docs/autocomplete"; + Requests[128] = new DefaultHttpContext(); + Requests[128].RequestServices = CreateServices(); + Requests[128].Request.Method = "GET"; + Requests[128].Request.Path = "/images/details"; + Requests[129] = new DefaultHttpContext(); + Requests[129].RequestServices = CreateServices(); + Requests[129].Request.Method = "GET"; + Requests[129].Request.Path = "/images/search"; + Requests[130] = new DefaultHttpContext(); + Requests[130].RequestServices = CreateServices(); + Requests[130].Request.Method = "GET"; + Requests[130].Request.Path = "/images/trending"; + Requests[131] = new DefaultHttpContext(); + Requests[131].RequestServices = CreateServices(); + Requests[131].Request.Method = "POST"; + Requests[131].Request.Path = "/images/visualsearch"; + Requests[132] = new DefaultHttpContext(); + Requests[132].RequestServices = CreateServices(); + Requests[132].Request.Method = "POST"; + Requests[132].Request.Path = "/keys/restore"; + Requests[133] = new DefaultHttpContext(); + Requests[133].RequestServices = CreateServices(); + Requests[133].Request.Method = "GET"; + Requests[133].Request.Path = "/news/search"; + Requests[134] = new DefaultHttpContext(); + Requests[134].RequestServices = CreateServices(); + Requests[134].Request.Method = "GET"; + Requests[134].Request.Path = "/news/trendingtopics"; + Requests[135] = new DefaultHttpContext(); + Requests[135].RequestServices = CreateServices(); + Requests[135].Request.Method = "PUT"; + Requests[135].Request.Path = "/portalsettings/delegation"; + Requests[136] = new DefaultHttpContext(); + Requests[136].RequestServices = CreateServices(); + Requests[136].Request.Method = "PATCH"; + Requests[136].Request.Path = "/portalsettings/delegation"; + Requests[137] = new DefaultHttpContext(); + Requests[137].RequestServices = CreateServices(); + Requests[137].Request.Method = "GET"; + Requests[137].Request.Path = "/portalsettings/delegation"; + Requests[138] = new DefaultHttpContext(); + Requests[138].RequestServices = CreateServices(); + Requests[138].Request.Method = "PUT"; + Requests[138].Request.Path = "/portalsettings/signin"; + Requests[139] = new DefaultHttpContext(); + Requests[139].RequestServices = CreateServices(); + Requests[139].Request.Method = "PATCH"; + Requests[139].Request.Path = "/portalsettings/signin"; + Requests[140] = new DefaultHttpContext(); + Requests[140].RequestServices = CreateServices(); + Requests[140].Request.Method = "GET"; + Requests[140].Request.Path = "/portalsettings/signin"; + Requests[141] = new DefaultHttpContext(); + Requests[141].RequestServices = CreateServices(); + Requests[141].Request.Method = "PATCH"; + Requests[141].Request.Path = "/portalsettings/signup"; + Requests[142] = new DefaultHttpContext(); + Requests[142].RequestServices = CreateServices(); + Requests[142].Request.Method = "GET"; + Requests[142].Request.Path = "/portalsettings/signup"; + Requests[143] = new DefaultHttpContext(); + Requests[143].RequestServices = CreateServices(); + Requests[143].Request.Method = "PUT"; + Requests[143].Request.Path = "/portalsettings/signup"; + Requests[144] = new DefaultHttpContext(); + Requests[144].RequestServices = CreateServices(); + Requests[144].Request.Method = "GET"; + Requests[144].Request.Path = "/reports/byApi"; + Requests[145] = new DefaultHttpContext(); + Requests[145].RequestServices = CreateServices(); + Requests[145].Request.Method = "GET"; + Requests[145].Request.Path = "/reports/byGeo"; + Requests[146] = new DefaultHttpContext(); + Requests[146].RequestServices = CreateServices(); + Requests[146].Request.Method = "GET"; + Requests[146].Request.Path = "/reports/byOperation"; + Requests[147] = new DefaultHttpContext(); + Requests[147].RequestServices = CreateServices(); + Requests[147].Request.Method = "GET"; + Requests[147].Request.Path = "/reports/byProduct"; + Requests[148] = new DefaultHttpContext(); + Requests[148].RequestServices = CreateServices(); + Requests[148].Request.Method = "GET"; + Requests[148].Request.Path = "/reports/byRequest"; + Requests[149] = new DefaultHttpContext(); + Requests[149].RequestServices = CreateServices(); + Requests[149].Request.Method = "GET"; + Requests[149].Request.Path = "/reports/bySubscription"; + Requests[150] = new DefaultHttpContext(); + Requests[150].RequestServices = CreateServices(); + Requests[150].Request.Method = "GET"; + Requests[150].Request.Path = "/reports/byTime"; + Requests[151] = new DefaultHttpContext(); + Requests[151].RequestServices = CreateServices(); + Requests[151].Request.Method = "GET"; + Requests[151].Request.Path = "/reports/byUser"; + Requests[152] = new DefaultHttpContext(); + Requests[152].RequestServices = CreateServices(); + Requests[152].Request.Method = "POST"; + Requests[152].Request.Path = "/secrets/restore"; + Requests[153] = new DefaultHttpContext(); + Requests[153].RequestServices = CreateServices(); + Requests[153].Request.Method = "POST"; + Requests[153].Request.Path = "/storage/restore"; + Requests[154] = new DefaultHttpContext(); + Requests[154].RequestServices = CreateServices(); + Requests[154].Request.Method = "GET"; + Requests[154].Request.Path = "/Tools/Chaos"; + Requests[155] = new DefaultHttpContext(); + Requests[155].RequestServices = CreateServices(); + Requests[155].Request.Method = "POST"; + Requests[155].Request.Path = "/v2.0/entities"; + Requests[156] = new DefaultHttpContext(); + Requests[156].RequestServices = CreateServices(); + Requests[156].Request.Method = "POST"; + Requests[156].Request.Path = "/v2.0/keyPhrases"; + Requests[157] = new DefaultHttpContext(); + Requests[157].RequestServices = CreateServices(); + Requests[157].Request.Method = "POST"; + Requests[157].Request.Path = "/v2.0/languages"; + Requests[158] = new DefaultHttpContext(); + Requests[158].RequestServices = CreateServices(); + Requests[158].Request.Method = "POST"; + Requests[158].Request.Path = "/v2.0/sentiment"; + Requests[159] = new DefaultHttpContext(); + Requests[159].RequestServices = CreateServices(); + Requests[159].Request.Method = "GET"; + Requests[159].Request.Path = "/videos/details"; + Requests[160] = new DefaultHttpContext(); + Requests[160].RequestServices = CreateServices(); + Requests[160].Request.Method = "GET"; + Requests[160].Request.Path = "/videos/search"; + Requests[161] = new DefaultHttpContext(); + Requests[161].RequestServices = CreateServices(); + Requests[161].Request.Method = "GET"; + Requests[161].Request.Path = "/videos/trending"; + Requests[162] = new DefaultHttpContext(); + Requests[162].RequestServices = CreateServices(); + Requests[162].Request.Method = "POST"; + Requests[162].Request.Path = "/Applications/$/Create"; + Requests[163] = new DefaultHttpContext(); + Requests[163].RequestServices = CreateServices(); + Requests[163].Request.Method = "POST"; + Requests[163].Request.Path = "/ApplicationTypes/$/Provision"; + Requests[164] = new DefaultHttpContext(); + Requests[164].RequestServices = CreateServices(); + Requests[164].Request.Method = "POST"; + Requests[164].Request.Path = "/BackupRestore/$/GetBackups"; + Requests[165] = new DefaultHttpContext(); + Requests[165].RequestServices = CreateServices(); + Requests[165].Request.Method = "GET"; + Requests[165].Request.Path = "/catalog/usql/acl"; + Requests[166] = new DefaultHttpContext(); + Requests[166].RequestServices = CreateServices(); + Requests[166].Request.Method = "GET"; + Requests[166].Request.Path = "/catalog/usql/databases"; + Requests[167] = new DefaultHttpContext(); + Requests[167].RequestServices = CreateServices(); + Requests[167].Request.Method = "PUT"; + Requests[167].Request.Path = "/ComposeDeployments/$/Create"; + Requests[168] = new DefaultHttpContext(); + Requests[168].RequestServices = CreateServices(); + Requests[168].Request.Method = "GET"; + Requests[168].Request.Path = "/EventsStore/Applications/Events"; + Requests[169] = new DefaultHttpContext(); + Requests[169].RequestServices = CreateServices(); + Requests[169].Request.Method = "GET"; + Requests[169].Request.Path = "/EventsStore/Cluster/Events"; + Requests[170] = new DefaultHttpContext(); + Requests[170].RequestServices = CreateServices(); + Requests[170].Request.Method = "GET"; + Requests[170].Request.Path = "/EventsStore/Containers/Events"; + Requests[171] = new DefaultHttpContext(); + Requests[171].RequestServices = CreateServices(); + Requests[171].Request.Method = "GET"; + Requests[171].Request.Path = "/EventsStore/Nodes/Events"; + Requests[172] = new DefaultHttpContext(); + Requests[172].RequestServices = CreateServices(); + Requests[172].Request.Method = "GET"; + Requests[172].Request.Path = "/EventsStore/Partitions/Events"; + Requests[173] = new DefaultHttpContext(); + Requests[173].RequestServices = CreateServices(); + Requests[173].Request.Method = "GET"; + Requests[173].Request.Path = "/EventsStore/Services/Events"; + Requests[174] = new DefaultHttpContext(); + Requests[174].RequestServices = CreateServices(); + Requests[174].Request.Method = "POST"; + Requests[174].Request.Path = "/Faults/$/Cancel"; + Requests[175] = new DefaultHttpContext(); + Requests[175].RequestServices = CreateServices(); + Requests[175].Request.Method = "POST"; + Requests[175].Request.Path = "/ImageStore/$/CommitUploadSession"; + Requests[176] = new DefaultHttpContext(); + Requests[176].RequestServices = CreateServices(); + Requests[176].Request.Method = "POST"; + Requests[176].Request.Path = "/ImageStore/$/Copy"; + Requests[177] = new DefaultHttpContext(); + Requests[177].RequestServices = CreateServices(); + Requests[177].Request.Method = "DELETE"; + Requests[177].Request.Path = "/ImageStore/$/DeleteUploadSession"; + Requests[178] = new DefaultHttpContext(); + Requests[178].RequestServices = CreateServices(); + Requests[178].Request.Method = "GET"; + Requests[178].Request.Path = "/ImageStore/$/GetUploadSession"; + Requests[179] = new DefaultHttpContext(); + Requests[179].RequestServices = CreateServices(); + Requests[179].Request.Method = "POST"; + Requests[179].Request.Path = "/Names/$/Create"; + Requests[180] = new DefaultHttpContext(); + Requests[180].RequestServices = CreateServices(); + Requests[180].Request.Method = "GET"; + Requests[180].Request.Path = "/providers/Microsoft.AAD/operations"; + Requests[181] = new DefaultHttpContext(); + Requests[181].RequestServices = CreateServices(); + Requests[181].Request.Method = "GET"; + Requests[181].Request.Path = "/providers/Microsoft.Addons/operations"; + Requests[182] = new DefaultHttpContext(); + Requests[182].RequestServices = CreateServices(); + Requests[182].Request.Method = "POST"; + Requests[182].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices"; + Requests[183] = new DefaultHttpContext(); + Requests[183].RequestServices = CreateServices(); + Requests[183].Request.Method = "GET"; + Requests[183].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices"; + Requests[184] = new DefaultHttpContext(); + Requests[184].RequestServices = CreateServices(); + Requests[184].Request.Method = "PATCH"; + Requests[184].Request.Path = "/providers/Microsoft.ADHybridHealthService/configuration"; + Requests[185] = new DefaultHttpContext(); + Requests[185].RequestServices = CreateServices(); + Requests[185].Request.Method = "GET"; + Requests[185].Request.Path = "/providers/Microsoft.ADHybridHealthService/configuration"; + Requests[186] = new DefaultHttpContext(); + Requests[186].RequestServices = CreateServices(); + Requests[186].Request.Method = "POST"; + Requests[186].Request.Path = "/providers/Microsoft.ADHybridHealthService/configuration"; + Requests[187] = new DefaultHttpContext(); + Requests[187].RequestServices = CreateServices(); + Requests[187].Request.Method = "GET"; + Requests[187].Request.Path = "/providers/Microsoft.ADHybridHealthService/operations"; + Requests[188] = new DefaultHttpContext(); + Requests[188].RequestServices = CreateServices(); + Requests[188].Request.Method = "POST"; + Requests[188].Request.Path = "/providers/Microsoft.ADHybridHealthService/services"; + Requests[189] = new DefaultHttpContext(); + Requests[189].RequestServices = CreateServices(); + Requests[189].Request.Method = "GET"; + Requests[189].Request.Path = "/providers/Microsoft.ADHybridHealthService/services"; + Requests[190] = new DefaultHttpContext(); + Requests[190].RequestServices = CreateServices(); + Requests[190].Request.Method = "GET"; + Requests[190].Request.Path = "/providers/Microsoft.Advisor/operations"; + Requests[191] = new DefaultHttpContext(); + Requests[191].RequestServices = CreateServices(); + Requests[191].Request.Method = "GET"; + Requests[191].Request.Path = "/providers/Microsoft.AnalysisServices/operations"; + Requests[192] = new DefaultHttpContext(); + Requests[192].RequestServices = CreateServices(); + Requests[192].Request.Method = "GET"; + Requests[192].Request.Path = "/providers/Microsoft.ApiManagement/operations"; + Requests[193] = new DefaultHttpContext(); + Requests[193].RequestServices = CreateServices(); + Requests[193].Request.Method = "GET"; + Requests[193].Request.Path = "/providers/Microsoft.Authorization/policyDefinitions"; + Requests[194] = new DefaultHttpContext(); + Requests[194].RequestServices = CreateServices(); + Requests[194].Request.Method = "GET"; + Requests[194].Request.Path = "/providers/Microsoft.Authorization/policySetDefinitions"; + Requests[195] = new DefaultHttpContext(); + Requests[195].RequestServices = CreateServices(); + Requests[195].Request.Method = "GET"; + Requests[195].Request.Path = "/providers/Microsoft.Authorization/providerOperations"; + Requests[196] = new DefaultHttpContext(); + Requests[196].RequestServices = CreateServices(); + Requests[196].Request.Method = "GET"; + Requests[196].Request.Path = "/providers/Microsoft.Automation/operations"; + Requests[197] = new DefaultHttpContext(); + Requests[197].RequestServices = CreateServices(); + Requests[197].Request.Method = "GET"; + Requests[197].Request.Path = "/providers/Microsoft.AzureStack/operations"; + Requests[198] = new DefaultHttpContext(); + Requests[198].RequestServices = CreateServices(); + Requests[198].Request.Method = "GET"; + Requests[198].Request.Path = "/providers/Microsoft.Backup.Admin/operations"; + Requests[199] = new DefaultHttpContext(); + Requests[199].RequestServices = CreateServices(); + Requests[199].Request.Method = "GET"; + Requests[199].Request.Path = "/providers/Microsoft.Batch/operations"; + Requests[200] = new DefaultHttpContext(); + Requests[200].RequestServices = CreateServices(); + Requests[200].Request.Method = "GET"; + Requests[200].Request.Path = "/providers/Microsoft.BatchAI/operations"; + Requests[201] = new DefaultHttpContext(); + Requests[201].RequestServices = CreateServices(); + Requests[201].Request.Method = "GET"; + Requests[201].Request.Path = "/providers/Microsoft.Billing/enrollmentAccounts"; + Requests[202] = new DefaultHttpContext(); + Requests[202].RequestServices = CreateServices(); + Requests[202].Request.Method = "GET"; + Requests[202].Request.Path = "/providers/Microsoft.Billing/operations"; + Requests[203] = new DefaultHttpContext(); + Requests[203].RequestServices = CreateServices(); + Requests[203].Request.Method = "GET"; + Requests[203].Request.Path = "/providers/Microsoft.BotService/operations"; + Requests[204] = new DefaultHttpContext(); + Requests[204].RequestServices = CreateServices(); + Requests[204].Request.Method = "GET"; + Requests[204].Request.Path = "/providers/Microsoft.Cache/operations"; + Requests[205] = new DefaultHttpContext(); + Requests[205].RequestServices = CreateServices(); + Requests[205].Request.Method = "GET"; + Requests[205].Request.Path = "/providers/Microsoft.Capacity/operations"; + Requests[206] = new DefaultHttpContext(); + Requests[206].RequestServices = CreateServices(); + Requests[206].Request.Method = "GET"; + Requests[206].Request.Path = "/providers/Microsoft.Capacity/reservationOrders"; + Requests[207] = new DefaultHttpContext(); + Requests[207].RequestServices = CreateServices(); + Requests[207].Request.Method = "POST"; + Requests[207].Request.Path = "/providers/Microsoft.Cdn/checkNameAvailability"; + Requests[208] = new DefaultHttpContext(); + Requests[208].RequestServices = CreateServices(); + Requests[208].Request.Method = "GET"; + Requests[208].Request.Path = "/providers/Microsoft.Cdn/edgenodes"; + Requests[209] = new DefaultHttpContext(); + Requests[209].RequestServices = CreateServices(); + Requests[209].Request.Method = "GET"; + Requests[209].Request.Path = "/providers/Microsoft.Cdn/operations"; + Requests[210] = new DefaultHttpContext(); + Requests[210].RequestServices = CreateServices(); + Requests[210].Request.Method = "GET"; + Requests[210].Request.Path = "/providers/Microsoft.CertificateRegistration/operations"; + Requests[211] = new DefaultHttpContext(); + Requests[211].RequestServices = CreateServices(); + Requests[211].Request.Method = "GET"; + Requests[211].Request.Path = "/providers/Microsoft.CognitiveServices/operations"; + Requests[212] = new DefaultHttpContext(); + Requests[212].RequestServices = CreateServices(); + Requests[212].Request.Method = "GET"; + Requests[212].Request.Path = "/providers/Microsoft.Commerce.Admin/operations"; + Requests[213] = new DefaultHttpContext(); + Requests[213].RequestServices = CreateServices(); + Requests[213].Request.Method = "GET"; + Requests[213].Request.Path = "/providers/Microsoft.Compute.Admin/operations"; + Requests[214] = new DefaultHttpContext(); + Requests[214].RequestServices = CreateServices(); + Requests[214].Request.Method = "GET"; + Requests[214].Request.Path = "/providers/Microsoft.Compute/operations"; + Requests[215] = new DefaultHttpContext(); + Requests[215].RequestServices = CreateServices(); + Requests[215].Request.Method = "GET"; + Requests[215].Request.Path = "/providers/Microsoft.Consumption/operations"; + Requests[216] = new DefaultHttpContext(); + Requests[216].RequestServices = CreateServices(); + Requests[216].Request.Method = "GET"; + Requests[216].Request.Path = "/providers/Microsoft.ContainerInstance/operations"; + Requests[217] = new DefaultHttpContext(); + Requests[217].RequestServices = CreateServices(); + Requests[217].Request.Method = "GET"; + Requests[217].Request.Path = "/providers/Microsoft.ContainerRegistry/operations"; + Requests[218] = new DefaultHttpContext(); + Requests[218].RequestServices = CreateServices(); + Requests[218].Request.Method = "GET"; + Requests[218].Request.Path = "/providers/Microsoft.ContainerService/operations"; + Requests[219] = new DefaultHttpContext(); + Requests[219].RequestServices = CreateServices(); + Requests[219].Request.Method = "GET"; + Requests[219].Request.Path = "/providers/Microsoft.CustomerInsights/operations"; + Requests[220] = new DefaultHttpContext(); + Requests[220].RequestServices = CreateServices(); + Requests[220].Request.Method = "GET"; + Requests[220].Request.Path = "/providers/Microsoft.DataBox/operations"; + Requests[221] = new DefaultHttpContext(); + Requests[221].RequestServices = CreateServices(); + Requests[221].Request.Method = "GET"; + Requests[221].Request.Path = "/providers/Microsoft.Databricks/operations"; + Requests[222] = new DefaultHttpContext(); + Requests[222].RequestServices = CreateServices(); + Requests[222].Request.Method = "GET"; + Requests[222].Request.Path = "/providers/Microsoft.DataCatalog/operations"; + Requests[223] = new DefaultHttpContext(); + Requests[223].RequestServices = CreateServices(); + Requests[223].Request.Method = "GET"; + Requests[223].Request.Path = "/providers/Microsoft.DataFactory/operations"; + Requests[224] = new DefaultHttpContext(); + Requests[224].RequestServices = CreateServices(); + Requests[224].Request.Method = "GET"; + Requests[224].Request.Path = "/providers/Microsoft.DataLakeAnalytics/operations"; + Requests[225] = new DefaultHttpContext(); + Requests[225].RequestServices = CreateServices(); + Requests[225].Request.Method = "GET"; + Requests[225].Request.Path = "/providers/Microsoft.DataLakeStore/operations"; + Requests[226] = new DefaultHttpContext(); + Requests[226].RequestServices = CreateServices(); + Requests[226].Request.Method = "GET"; + Requests[226].Request.Path = "/providers/Microsoft.DataMigration/operations"; + Requests[227] = new DefaultHttpContext(); + Requests[227].RequestServices = CreateServices(); + Requests[227].Request.Method = "GET"; + Requests[227].Request.Path = "/providers/Microsoft.DBforMySQL/operations"; + Requests[228] = new DefaultHttpContext(); + Requests[228].RequestServices = CreateServices(); + Requests[228].Request.Method = "GET"; + Requests[228].Request.Path = "/providers/Microsoft.DBforPostgreSQL/operations"; + Requests[229] = new DefaultHttpContext(); + Requests[229].RequestServices = CreateServices(); + Requests[229].Request.Method = "GET"; + Requests[229].Request.Path = "/providers/Microsoft.Devices/operations"; + Requests[230] = new DefaultHttpContext(); + Requests[230].RequestServices = CreateServices(); + Requests[230].Request.Method = "GET"; + Requests[230].Request.Path = "/providers/Microsoft.DevTestLab/operations"; + Requests[231] = new DefaultHttpContext(); + Requests[231].RequestServices = CreateServices(); + Requests[231].Request.Method = "GET"; + Requests[231].Request.Path = "/providers/Microsoft.DocumentDB/operations"; + Requests[232] = new DefaultHttpContext(); + Requests[232].RequestServices = CreateServices(); + Requests[232].Request.Method = "GET"; + Requests[232].Request.Path = "/providers/Microsoft.DomainRegistration/operations"; + Requests[233] = new DefaultHttpContext(); + Requests[233].RequestServices = CreateServices(); + Requests[233].Request.Method = "GET"; + Requests[233].Request.Path = "/providers/Microsoft.EventGrid/operations"; + Requests[234] = new DefaultHttpContext(); + Requests[234].RequestServices = CreateServices(); + Requests[234].Request.Method = "GET"; + Requests[234].Request.Path = "/providers/Microsoft.EventGrid/topicTypes"; + Requests[235] = new DefaultHttpContext(); + Requests[235].RequestServices = CreateServices(); + Requests[235].Request.Method = "GET"; + Requests[235].Request.Path = "/providers/Microsoft.EventHub/operations"; + Requests[236] = new DefaultHttpContext(); + Requests[236].RequestServices = CreateServices(); + Requests[236].Request.Method = "GET"; + Requests[236].Request.Path = "/providers/Microsoft.Fabric.Admin/operations"; + Requests[237] = new DefaultHttpContext(); + Requests[237].RequestServices = CreateServices(); + Requests[237].Request.Method = "GET"; + Requests[237].Request.Path = "/providers/Microsoft.Gallery.Admin/operations"; + Requests[238] = new DefaultHttpContext(); + Requests[238].RequestServices = CreateServices(); + Requests[238].Request.Method = "GET"; + Requests[238].Request.Path = "/providers/Microsoft.HanaOnAzure/operations"; + Requests[239] = new DefaultHttpContext(); + Requests[239].RequestServices = CreateServices(); + Requests[239].Request.Method = "GET"; + Requests[239].Request.Path = "/providers/Microsoft.HDInsight/operations"; + Requests[240] = new DefaultHttpContext(); + Requests[240].RequestServices = CreateServices(); + Requests[240].Request.Method = "GET"; + Requests[240].Request.Path = "/providers/Microsoft.ImportExport/locations"; + Requests[241] = new DefaultHttpContext(); + Requests[241].RequestServices = CreateServices(); + Requests[241].Request.Method = "GET"; + Requests[241].Request.Path = "/providers/Microsoft.ImportExport/operations"; + Requests[242] = new DefaultHttpContext(); + Requests[242].RequestServices = CreateServices(); + Requests[242].Request.Method = "GET"; + Requests[242].Request.Path = "/providers/Microsoft.InfrastructureInsights.Admin/operations"; + Requests[243] = new DefaultHttpContext(); + Requests[243].RequestServices = CreateServices(); + Requests[243].Request.Method = "GET"; + Requests[243].Request.Path = "/providers/microsoft.insights/eventcategories"; + Requests[244] = new DefaultHttpContext(); + Requests[244].RequestServices = CreateServices(); + Requests[244].Request.Method = "GET"; + Requests[244].Request.Path = "/providers/microsoft.insights/operations"; + Requests[245] = new DefaultHttpContext(); + Requests[245].RequestServices = CreateServices(); + Requests[245].Request.Method = "GET"; + Requests[245].Request.Path = "/providers/Microsoft.Intune/locations"; + Requests[246] = new DefaultHttpContext(); + Requests[246].RequestServices = CreateServices(); + Requests[246].Request.Method = "GET"; + Requests[246].Request.Path = "/providers/Microsoft.IoTCentral/operations"; + Requests[247] = new DefaultHttpContext(); + Requests[247].RequestServices = CreateServices(); + Requests[247].Request.Method = "GET"; + Requests[247].Request.Path = "/providers/Microsoft.IoTSpaces/operations"; + Requests[248] = new DefaultHttpContext(); + Requests[248].RequestServices = CreateServices(); + Requests[248].Request.Method = "GET"; + Requests[248].Request.Path = "/providers/Microsoft.KeyVault.Admin/operations"; + Requests[249] = new DefaultHttpContext(); + Requests[249].RequestServices = CreateServices(); + Requests[249].Request.Method = "GET"; + Requests[249].Request.Path = "/providers/Microsoft.KeyVault/operations"; + Requests[250] = new DefaultHttpContext(); + Requests[250].RequestServices = CreateServices(); + Requests[250].Request.Method = "GET"; + Requests[250].Request.Path = "/providers/Microsoft.Logic/operations"; + Requests[251] = new DefaultHttpContext(); + Requests[251].RequestServices = CreateServices(); + Requests[251].Request.Method = "GET"; + Requests[251].Request.Path = "/providers/Microsoft.MachineLearning/operations"; + Requests[252] = new DefaultHttpContext(); + Requests[252].RequestServices = CreateServices(); + Requests[252].Request.Method = "GET"; + Requests[252].Request.Path = "/providers/Microsoft.MachineLearningCompute/operations"; + Requests[253] = new DefaultHttpContext(); + Requests[253].RequestServices = CreateServices(); + Requests[253].Request.Method = "GET"; + Requests[253].Request.Path = "/providers/Microsoft.MachineLearningExperimentation/operations"; + Requests[254] = new DefaultHttpContext(); + Requests[254].RequestServices = CreateServices(); + Requests[254].Request.Method = "GET"; + Requests[254].Request.Path = "/providers/Microsoft.MachineLearningServices/operations"; + Requests[255] = new DefaultHttpContext(); + Requests[255].RequestServices = CreateServices(); + Requests[255].Request.Method = "GET"; + Requests[255].Request.Path = "/providers/Microsoft.ManagedIdentity/operations"; + Requests[256] = new DefaultHttpContext(); + Requests[256].RequestServices = CreateServices(); + Requests[256].Request.Method = "POST"; + Requests[256].Request.Path = "/providers/Microsoft.Management/checkNameAvailability"; + Requests[257] = new DefaultHttpContext(); + Requests[257].RequestServices = CreateServices(); + Requests[257].Request.Method = "POST"; + Requests[257].Request.Path = "/providers/Microsoft.Management/getEntities"; + Requests[258] = new DefaultHttpContext(); + Requests[258].RequestServices = CreateServices(); + Requests[258].Request.Method = "GET"; + Requests[258].Request.Path = "/providers/Microsoft.Management/managementGroups"; + Requests[259] = new DefaultHttpContext(); + Requests[259].RequestServices = CreateServices(); + Requests[259].Request.Method = "GET"; + Requests[259].Request.Path = "/providers/Microsoft.Management/operations"; + Requests[260] = new DefaultHttpContext(); + Requests[260].RequestServices = CreateServices(); + Requests[260].Request.Method = "POST"; + Requests[260].Request.Path = "/providers/Microsoft.Management/startTenantBackfill"; + Requests[261] = new DefaultHttpContext(); + Requests[261].RequestServices = CreateServices(); + Requests[261].Request.Method = "POST"; + Requests[261].Request.Path = "/providers/Microsoft.Management/tenantBackfillStatus"; + Requests[262] = new DefaultHttpContext(); + Requests[262].RequestServices = CreateServices(); + Requests[262].Request.Method = "GET"; + Requests[262].Request.Path = "/providers/Microsoft.ManagementPartner/operations"; + Requests[263] = new DefaultHttpContext(); + Requests[263].RequestServices = CreateServices(); + Requests[263].Request.Method = "GET"; + Requests[263].Request.Path = "/providers/Microsoft.Maps/operations"; + Requests[264] = new DefaultHttpContext(); + Requests[264].RequestServices = CreateServices(); + Requests[264].Request.Method = "GET"; + Requests[264].Request.Path = "/providers/Microsoft.MarketplaceOrdering/operations"; + Requests[265] = new DefaultHttpContext(); + Requests[265].RequestServices = CreateServices(); + Requests[265].Request.Method = "GET"; + Requests[265].Request.Path = "/providers/Microsoft.Media/operations"; + Requests[266] = new DefaultHttpContext(); + Requests[266].RequestServices = CreateServices(); + Requests[266].Request.Method = "GET"; + Requests[266].Request.Path = "/providers/Microsoft.Migrate/operations"; + Requests[267] = new DefaultHttpContext(); + Requests[267].RequestServices = CreateServices(); + Requests[267].Request.Method = "POST"; + Requests[267].Request.Path = "/providers/Microsoft.Network/checkTrafficManagerNameAvailability"; + Requests[268] = new DefaultHttpContext(); + Requests[268].RequestServices = CreateServices(); + Requests[268].Request.Method = "GET"; + Requests[268].Request.Path = "/providers/Microsoft.Network/operations"; + Requests[269] = new DefaultHttpContext(); + Requests[269].RequestServices = CreateServices(); + Requests[269].Request.Method = "GET"; + Requests[269].Request.Path = "/providers/Microsoft.NotificationHubs/operations"; + Requests[270] = new DefaultHttpContext(); + Requests[270].RequestServices = CreateServices(); + Requests[270].Request.Method = "GET"; + Requests[270].Request.Path = "/providers/Microsoft.OperationalInsights/operations"; + Requests[271] = new DefaultHttpContext(); + Requests[271].RequestServices = CreateServices(); + Requests[271].Request.Method = "GET"; + Requests[271].Request.Path = "/providers/Microsoft.OperationsManagement/operations"; + Requests[272] = new DefaultHttpContext(); + Requests[272].RequestServices = CreateServices(); + Requests[272].Request.Method = "GET"; + Requests[272].Request.Path = "/providers/Microsoft.PolicyInsights/operations"; + Requests[273] = new DefaultHttpContext(); + Requests[273].RequestServices = CreateServices(); + Requests[273].Request.Method = "GET"; + Requests[273].Request.Path = "/providers/Microsoft.PowerBI/operations"; + Requests[274] = new DefaultHttpContext(); + Requests[274].RequestServices = CreateServices(); + Requests[274].Request.Method = "GET"; + Requests[274].Request.Path = "/providers/Microsoft.PowerBIDedicated/operations"; + Requests[275] = new DefaultHttpContext(); + Requests[275].RequestServices = CreateServices(); + Requests[275].Request.Method = "GET"; + Requests[275].Request.Path = "/providers/Microsoft.RecoveryServices/operations"; + Requests[276] = new DefaultHttpContext(); + Requests[276].RequestServices = CreateServices(); + Requests[276].Request.Method = "GET"; + Requests[276].Request.Path = "/providers/Microsoft.Relay/operations"; + Requests[277] = new DefaultHttpContext(); + Requests[277].RequestServices = CreateServices(); + Requests[277].Request.Method = "GET"; + Requests[277].Request.Path = "/providers/Microsoft.ResourceHealth/operations"; + Requests[278] = new DefaultHttpContext(); + Requests[278].RequestServices = CreateServices(); + Requests[278].Request.Method = "GET"; + Requests[278].Request.Path = "/providers/Microsoft.Search/operations"; + Requests[279] = new DefaultHttpContext(); + Requests[279].RequestServices = CreateServices(); + Requests[279].Request.Method = "GET"; + Requests[279].Request.Path = "/providers/Microsoft.Security/operations"; + Requests[280] = new DefaultHttpContext(); + Requests[280].RequestServices = CreateServices(); + Requests[280].Request.Method = "GET"; + Requests[280].Request.Path = "/providers/Microsoft.ServiceBus/operations"; + Requests[281] = new DefaultHttpContext(); + Requests[281].RequestServices = CreateServices(); + Requests[281].Request.Method = "GET"; + Requests[281].Request.Path = "/providers/Microsoft.ServiceFabric/operations"; + Requests[282] = new DefaultHttpContext(); + Requests[282].RequestServices = CreateServices(); + Requests[282].Request.Method = "GET"; + Requests[282].Request.Path = "/providers/Microsoft.SignalRService/operations"; + Requests[283] = new DefaultHttpContext(); + Requests[283].RequestServices = CreateServices(); + Requests[283].Request.Method = "GET"; + Requests[283].Request.Path = "/providers/Microsoft.Sql/operations"; + Requests[284] = new DefaultHttpContext(); + Requests[284].RequestServices = CreateServices(); + Requests[284].Request.Method = "GET"; + Requests[284].Request.Path = "/providers/Microsoft.Storage.Admin/operations"; + Requests[285] = new DefaultHttpContext(); + Requests[285].RequestServices = CreateServices(); + Requests[285].Request.Method = "GET"; + Requests[285].Request.Path = "/providers/Microsoft.Storage/operations"; + Requests[286] = new DefaultHttpContext(); + Requests[286].RequestServices = CreateServices(); + Requests[286].Request.Method = "GET"; + Requests[286].Request.Path = "/providers/Microsoft.StorSimple/operations"; + Requests[287] = new DefaultHttpContext(); + Requests[287].RequestServices = CreateServices(); + Requests[287].Request.Method = "GET"; + Requests[287].Request.Path = "/providers/Microsoft.StreamAnalytics/operations"; + Requests[288] = new DefaultHttpContext(); + Requests[288].RequestServices = CreateServices(); + Requests[288].Request.Method = "GET"; + Requests[288].Request.Path = "/providers/Microsoft.Subscription/operations"; + Requests[289] = new DefaultHttpContext(); + Requests[289].RequestServices = CreateServices(); + Requests[289].Request.Method = "GET"; + Requests[289].Request.Path = "/providers/Microsoft.Subscription/subscriptionDefinitions"; + Requests[290] = new DefaultHttpContext(); + Requests[290].RequestServices = CreateServices(); + Requests[290].Request.Method = "GET"; + Requests[290].Request.Path = "/providers/Microsoft.Subscription/subscriptionOperations"; + Requests[291] = new DefaultHttpContext(); + Requests[291].RequestServices = CreateServices(); + Requests[291].Request.Method = "GET"; + Requests[291].Request.Path = "/providers/Microsoft.Subscriptions.Admin/operations"; + Requests[292] = new DefaultHttpContext(); + Requests[292].RequestServices = CreateServices(); + Requests[292].Request.Method = "GET"; + Requests[292].Request.Path = "/providers/Microsoft.Subscriptions/operations"; + Requests[293] = new DefaultHttpContext(); + Requests[293].RequestServices = CreateServices(); + Requests[293].Request.Method = "GET"; + Requests[293].Request.Path = "/providers/Microsoft.TimeSeriesInsights/operations"; + Requests[294] = new DefaultHttpContext(); + Requests[294].RequestServices = CreateServices(); + Requests[294].Request.Method = "GET"; + Requests[294].Request.Path = "/providers/Microsoft.Update.Admin/operations"; + Requests[295] = new DefaultHttpContext(); + Requests[295].RequestServices = CreateServices(); + Requests[295].Request.Method = "GET"; + Requests[295].Request.Path = "/providers/microsoft.visualstudio/operations"; + Requests[296] = new DefaultHttpContext(); + Requests[296].RequestServices = CreateServices(); + Requests[296].Request.Method = "GET"; + Requests[296].Request.Path = "/providers/Microsoft.Web/availableStacks"; + Requests[297] = new DefaultHttpContext(); + Requests[297].RequestServices = CreateServices(); + Requests[297].Request.Method = "GET"; + Requests[297].Request.Path = "/providers/Microsoft.Web/operations"; + Requests[298] = new DefaultHttpContext(); + Requests[298].RequestServices = CreateServices(); + Requests[298].Request.Method = "GET"; + Requests[298].Request.Path = "/providers/Microsoft.Web/sourcecontrols"; + Requests[299] = new DefaultHttpContext(); + Requests[299].RequestServices = CreateServices(); + Requests[299].Request.Method = "GET"; + Requests[299].Request.Path = "/Tools/Chaos/Events"; + Requests[300] = new DefaultHttpContext(); + Requests[300].RequestServices = CreateServices(); + Requests[300].Request.Method = "GET"; + Requests[300].Request.Path = "/Tools/Chaos/Schedule"; + Requests[301] = new DefaultHttpContext(); + Requests[301].RequestServices = CreateServices(); + Requests[301].Request.Method = "POST"; + Requests[301].Request.Path = "/Tools/Chaos/Schedule"; + Requests[302] = new DefaultHttpContext(); + Requests[302].RequestServices = CreateServices(); + Requests[302].Request.Method = "POST"; + Requests[302].Request.Path = "/BackupRestore/BackupPolicies/$/Create"; + Requests[303] = new DefaultHttpContext(); + Requests[303].RequestServices = CreateServices(); + Requests[303].Request.Method = "POST"; + Requests[303].Request.Path = "/contentmoderator/lists/v1.0/imagelists"; + Requests[304] = new DefaultHttpContext(); + Requests[304].RequestServices = CreateServices(); + Requests[304].Request.Method = "GET"; + Requests[304].Request.Path = "/contentmoderator/lists/v1.0/imagelists"; + Requests[305] = new DefaultHttpContext(); + Requests[305].RequestServices = CreateServices(); + Requests[305].Request.Method = "GET"; + Requests[305].Request.Path = "/contentmoderator/lists/v1.0/termlists"; + Requests[306] = new DefaultHttpContext(); + Requests[306].RequestServices = CreateServices(); + Requests[306].Request.Method = "POST"; + Requests[306].Request.Path = "/contentmoderator/lists/v1.0/termlists"; + Requests[307] = new DefaultHttpContext(); + Requests[307].RequestServices = CreateServices(); + Requests[307].Request.Method = "GET"; + Requests[307].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices/premiumCheck"; + Requests[308] = new DefaultHttpContext(); + Requests[308].RequestServices = CreateServices(); + Requests[308].Request.Method = "GET"; + Requests[308].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/premiumCheck"; + Requests[309] = new DefaultHttpContext(); + Requests[309].RequestServices = CreateServices(); + Requests[309].Request.Method = "GET"; + Requests[309].Request.Path = "/providers/Microsoft.BotService/botServices/checkNameAvailability"; + Requests[310] = new DefaultHttpContext(); + Requests[310].RequestServices = CreateServices(); + Requests[310].Request.Method = "GET"; + Requests[310].Request.Path = "/providers/Microsoft.Intune/locations/hostName"; + Requests[311] = new DefaultHttpContext(); + Requests[311].RequestServices = CreateServices(); + Requests[311].Request.Method = "GET"; + Requests[311].Request.Path = "/providers/Microsoft.Network/trafficManagerGeographicHierarchies/default"; + Requests[312] = new DefaultHttpContext(); + Requests[312].RequestServices = CreateServices(); + Requests[312].Request.Method = "PUT"; + Requests[312].Request.Path = "/providers/Microsoft.Web/publishingUsers/web"; + Requests[313] = new DefaultHttpContext(); + Requests[313].RequestServices = CreateServices(); + Requests[313].Request.Method = "GET"; + Requests[313].Request.Path = "/providers/Microsoft.Web/publishingUsers/web"; + Requests[314] = new DefaultHttpContext(); + Requests[314].RequestServices = CreateServices(); + Requests[314].Request.Method = "GET"; + Requests[314].Request.Path = "/Tools/Chaos/$/Report"; + Requests[315] = new DefaultHttpContext(); + Requests[315].RequestServices = CreateServices(); + Requests[315].Request.Method = "POST"; + Requests[315].Request.Path = "/Tools/Chaos/$/Start"; + Requests[316] = new DefaultHttpContext(); + Requests[316].RequestServices = CreateServices(); + Requests[316].Request.Method = "POST"; + Requests[316].Request.Path = "/Tools/Chaos/$/Stop"; + Requests[317] = new DefaultHttpContext(); + Requests[317].RequestServices = CreateServices(); + Requests[317].Request.Method = "POST"; + Requests[317].Request.Path = "/contentmoderator/moderate/v1.0/ProcessImage/Evaluate"; + Requests[318] = new DefaultHttpContext(); + Requests[318].RequestServices = CreateServices(); + Requests[318].Request.Method = "POST"; + Requests[318].Request.Path = "/contentmoderator/moderate/v1.0/ProcessImage/FindFaces"; + Requests[319] = new DefaultHttpContext(); + Requests[319].RequestServices = CreateServices(); + Requests[319].Request.Method = "POST"; + Requests[319].Request.Path = "/contentmoderator/moderate/v1.0/ProcessImage/Match"; + Requests[320] = new DefaultHttpContext(); + Requests[320].RequestServices = CreateServices(); + Requests[320].Request.Method = "POST"; + Requests[320].Request.Path = "/contentmoderator/moderate/v1.0/ProcessImage/OCR"; + Requests[321] = new DefaultHttpContext(); + Requests[321].RequestServices = CreateServices(); + Requests[321].Request.Method = "POST"; + Requests[321].Request.Path = "/contentmoderator/moderate/v1.0/ProcessText/DetectLanguage"; + Requests[322] = new DefaultHttpContext(); + Requests[322].RequestServices = CreateServices(); + Requests[322].Request.Method = "POST"; + Requests[322].Request.Path = "/contentmoderator/moderate/v1.0/ProcessText/Screen"; + Requests[323] = new DefaultHttpContext(); + Requests[323].RequestServices = CreateServices(); + Requests[323].Request.Method = "GET"; + Requests[323].Request.Path = "/providers/microsoft.insights/eventtypes/management/values"; + Requests[324] = new DefaultHttpContext(); + Requests[324].RequestServices = CreateServices(); + Requests[324].Request.Method = "GET"; + Requests[324].Request.Path = "/contentmoderator/lists/v1.0/imagelists/25aa61"; + Requests[325] = new DefaultHttpContext(); + Requests[325].RequestServices = CreateServices(); + Requests[325].Request.Method = "PUT"; + Requests[325].Request.Path = "/contentmoderator/lists/v1.0/imagelists/0dcf18"; + Requests[326] = new DefaultHttpContext(); + Requests[326].RequestServices = CreateServices(); + Requests[326].Request.Method = "DELETE"; + Requests[326].Request.Path = "/contentmoderator/lists/v1.0/imagelists/4e479e"; + Requests[327] = new DefaultHttpContext(); + Requests[327].RequestServices = CreateServices(); + Requests[327].Request.Method = "GET"; + Requests[327].Request.Path = "/contentmoderator/lists/v1.0/termlists/2fba04"; + Requests[328] = new DefaultHttpContext(); + Requests[328].RequestServices = CreateServices(); + Requests[328].Request.Method = "DELETE"; + Requests[328].Request.Path = "/contentmoderator/lists/v1.0/termlists/6f112d"; + Requests[329] = new DefaultHttpContext(); + Requests[329].RequestServices = CreateServices(); + Requests[329].Request.Method = "PUT"; + Requests[329].Request.Path = "/contentmoderator/lists/v1.0/termlists/2704d5"; + Requests[330] = new DefaultHttpContext(); + Requests[330].RequestServices = CreateServices(); + Requests[330].Request.Method = "POST"; + Requests[330].Request.Path = "/contentmoderator/lists/v1.0/imagelists/413be3/images"; + Requests[331] = new DefaultHttpContext(); + Requests[331].RequestServices = CreateServices(); + Requests[331].Request.Method = "GET"; + Requests[331].Request.Path = "/contentmoderator/lists/v1.0/imagelists/46b449/images"; + Requests[332] = new DefaultHttpContext(); + Requests[332].RequestServices = CreateServices(); + Requests[332].Request.Method = "DELETE"; + Requests[332].Request.Path = "/contentmoderator/lists/v1.0/imagelists/9e2d1f/images"; + Requests[333] = new DefaultHttpContext(); + Requests[333].RequestServices = CreateServices(); + Requests[333].Request.Method = "POST"; + Requests[333].Request.Path = "/contentmoderator/lists/v1.0/imagelists/32b297/RefreshIndex"; + Requests[334] = new DefaultHttpContext(); + Requests[334].RequestServices = CreateServices(); + Requests[334].Request.Method = "POST"; + Requests[334].Request.Path = "/contentmoderator/lists/v1.0/termlists/4768ab/RefreshIndex"; + Requests[335] = new DefaultHttpContext(); + Requests[335].RequestServices = CreateServices(); + Requests[335].Request.Method = "GET"; + Requests[335].Request.Path = "/contentmoderator/lists/v1.0/termlists/3e9c6e/terms"; + Requests[336] = new DefaultHttpContext(); + Requests[336].RequestServices = CreateServices(); + Requests[336].Request.Method = "DELETE"; + Requests[336].Request.Path = "/contentmoderator/lists/v1.0/termlists/efd19d/terms"; + Requests[337] = new DefaultHttpContext(); + Requests[337].RequestServices = CreateServices(); + Requests[337].Request.Method = "POST"; + Requests[337].Request.Path = "/contentmoderator/review/v1.0/teams/d31cc2d7/jobs"; + Requests[338] = new DefaultHttpContext(); + Requests[338].RequestServices = CreateServices(); + Requests[338].Request.Method = "POST"; + Requests[338].Request.Path = "/contentmoderator/review/v1.0/teams/751e507c/reviews"; + Requests[339] = new DefaultHttpContext(); + Requests[339].RequestServices = CreateServices(); + Requests[339].Request.Method = "DELETE"; + Requests[339].Request.Path = "/contentmoderator/lists/v1.0/imagelists/f7b4a3/images/f12b023"; + Requests[340] = new DefaultHttpContext(); + Requests[340].RequestServices = CreateServices(); + Requests[340].Request.Method = "POST"; + Requests[340].Request.Path = "/contentmoderator/lists/v1.0/termlists/aa1aa0/terms/a9b7c"; + Requests[341] = new DefaultHttpContext(); + Requests[341].RequestServices = CreateServices(); + Requests[341].Request.Method = "DELETE"; + Requests[341].Request.Path = "/contentmoderator/lists/v1.0/termlists/f3f417/terms/35bb6"; + Requests[342] = new DefaultHttpContext(); + Requests[342].RequestServices = CreateServices(); + Requests[342].Request.Method = "GET"; + Requests[342].Request.Path = "/contentmoderator/review/v1.0/teams/fc285269/jobs/c79da"; + Requests[343] = new DefaultHttpContext(); + Requests[343].RequestServices = CreateServices(); + Requests[343].Request.Method = "GET"; + Requests[343].Request.Path = "/contentmoderator/review/v1.0/teams/0e6abeaf/reviews/7dd8ffd8"; + Requests[344] = new DefaultHttpContext(); + Requests[344].RequestServices = CreateServices(); + Requests[344].Request.Method = "POST"; + Requests[344].Request.Path = "/contentmoderator/review/v1.0/teams/693bebc4/reviews/ea3553ca/frames"; + Requests[345] = new DefaultHttpContext(); + Requests[345].RequestServices = CreateServices(); + Requests[345].Request.Method = "GET"; + Requests[345].Request.Path = "/contentmoderator/review/v1.0/teams/7a0e3357/reviews/36ae2d30/frames"; + Requests[346] = new DefaultHttpContext(); + Requests[346].RequestServices = CreateServices(); + Requests[346].Request.Method = "POST"; + Requests[346].Request.Path = "/contentmoderator/review/v1.0/teams/5048e6f1/reviews/489585ff/publish"; + Requests[347] = new DefaultHttpContext(); + Requests[347].RequestServices = CreateServices(); + Requests[347].Request.Method = "PUT"; + Requests[347].Request.Path = "/contentmoderator/review/v1.0/teams/53354982/reviews/d7f03610/transcript"; + Requests[348] = new DefaultHttpContext(); + Requests[348].RequestServices = CreateServices(); + Requests[348].Request.Method = "PUT"; + Requests[348].Request.Path = "/contentmoderator/review/v1.0/teams/eb87ce25/reviews/998117ed/transcriptmoderationresult"; + Requests[349] = new DefaultHttpContext(); + Requests[349].RequestServices = CreateServices(); + Requests[349].Request.Method = "GET"; + Requests[349].Request.Path = "/catalog/usql/databases/93692dd6-f87"; + Requests[350] = new DefaultHttpContext(); + Requests[350].RequestServices = CreateServices(); + Requests[350].Request.Method = "GET"; + Requests[350].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices/f5ff924c-f8"; + Requests[351] = new DefaultHttpContext(); + Requests[351].RequestServices = CreateServices(); + Requests[351].Request.Method = "PATCH"; + Requests[351].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices/b9c7be79-aa"; + Requests[352] = new DefaultHttpContext(); + Requests[352].RequestServices = CreateServices(); + Requests[352].Request.Method = "DELETE"; + Requests[352].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices/1c9a239f-e0"; + Requests[353] = new DefaultHttpContext(); + Requests[353].RequestServices = CreateServices(); + Requests[353].Request.Method = "PATCH"; + Requests[353].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/484449f9-f3"; + Requests[354] = new DefaultHttpContext(); + Requests[354].RequestServices = CreateServices(); + Requests[354].Request.Method = "DELETE"; + Requests[354].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/1d7b7ad3-9e"; + Requests[355] = new DefaultHttpContext(); + Requests[355].RequestServices = CreateServices(); + Requests[355].Request.Method = "GET"; + Requests[355].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/7d9fc8a3-1a"; + Requests[356] = new DefaultHttpContext(); + Requests[356].RequestServices = CreateServices(); + Requests[356].Request.Method = "GET"; + Requests[356].Request.Path = "/providers/Microsoft.Authorization/policyDefinitions/c47668b4-df1d-4131-9"; + Requests[357] = new DefaultHttpContext(); + Requests[357].RequestServices = CreateServices(); + Requests[357].Request.Method = "GET"; + Requests[357].Request.Path = "/providers/Microsoft.Authorization/policySetDefinitions/ab27ed95-271e-469b-82fb"; + Requests[358] = new DefaultHttpContext(); + Requests[358].RequestServices = CreateServices(); + Requests[358].Request.Method = "GET"; + Requests[358].Request.Path = "/providers/Microsoft.Authorization/providerOperations/cfb3f171-01e4-42f4-892e-5"; + Requests[359] = new DefaultHttpContext(); + Requests[359].RequestServices = CreateServices(); + Requests[359].Request.Method = "GET"; + Requests[359].Request.Path = "/providers/Microsoft.Billing/enrollmentAccounts/df588"; + Requests[360] = new DefaultHttpContext(); + Requests[360].RequestServices = CreateServices(); + Requests[360].Request.Method = "GET"; + Requests[360].Request.Path = "/providers/Microsoft.Capacity/reservationOrders/b391d0ba-6d11-4092"; + Requests[361] = new DefaultHttpContext(); + Requests[361].RequestServices = CreateServices(); + Requests[361].Request.Method = "HEAD"; + Requests[361].Request.Path = "/providers/Microsoft.DocumentDB/databaseAccountNames/2288d58c-0b"; + Requests[362] = new DefaultHttpContext(); + Requests[362].RequestServices = CreateServices(); + Requests[362].Request.Method = "GET"; + Requests[362].Request.Path = "/providers/Microsoft.EventGrid/topicTypes/c431ed5b-7f58"; + Requests[363] = new DefaultHttpContext(); + Requests[363].RequestServices = CreateServices(); + Requests[363].Request.Method = "GET"; + Requests[363].Request.Path = "/providers/Microsoft.ImportExport/locations/08942aa9-146"; + Requests[364] = new DefaultHttpContext(); + Requests[364].RequestServices = CreateServices(); + Requests[364].Request.Method = "GET"; + Requests[364].Request.Path = "/providers/Microsoft.Management/managementGroups/a8fb179"; + Requests[365] = new DefaultHttpContext(); + Requests[365].RequestServices = CreateServices(); + Requests[365].Request.Method = "PUT"; + Requests[365].Request.Path = "/providers/Microsoft.Management/managementGroups/77e200d"; + Requests[366] = new DefaultHttpContext(); + Requests[366].RequestServices = CreateServices(); + Requests[366].Request.Method = "PATCH"; + Requests[366].Request.Path = "/providers/Microsoft.Management/managementGroups/bb9e50d"; + Requests[367] = new DefaultHttpContext(); + Requests[367].RequestServices = CreateServices(); + Requests[367].Request.Method = "DELETE"; + Requests[367].Request.Path = "/providers/Microsoft.Management/managementGroups/1adf866"; + Requests[368] = new DefaultHttpContext(); + Requests[368].RequestServices = CreateServices(); + Requests[368].Request.Method = "GET"; + Requests[368].Request.Path = "/providers/Microsoft.ManagementPartner/partners/5f9118fe-"; + Requests[369] = new DefaultHttpContext(); + Requests[369].RequestServices = CreateServices(); + Requests[369].Request.Method = "DELETE"; + Requests[369].Request.Path = "/providers/Microsoft.ManagementPartner/partners/4005a6a8-"; + Requests[370] = new DefaultHttpContext(); + Requests[370].RequestServices = CreateServices(); + Requests[370].Request.Method = "PUT"; + Requests[370].Request.Path = "/providers/Microsoft.ManagementPartner/partners/c3fb95a7-"; + Requests[371] = new DefaultHttpContext(); + Requests[371].RequestServices = CreateServices(); + Requests[371].Request.Method = "PATCH"; + Requests[371].Request.Path = "/providers/Microsoft.ManagementPartner/partners/932703a1-"; + Requests[372] = new DefaultHttpContext(); + Requests[372].RequestServices = CreateServices(); + Requests[372].Request.Method = "GET"; + Requests[372].Request.Path = "/providers/Microsoft.Subscription/subscriptionDefinitions/4396a9c7-d3fd-4dac-bdb0-ef"; + Requests[373] = new DefaultHttpContext(); + Requests[373].RequestServices = CreateServices(); + Requests[373].Request.Method = "PUT"; + Requests[373].Request.Path = "/providers/Microsoft.Subscription/subscriptionDefinitions/207eb2dd-c9c8-4458-afa6-a6"; + Requests[374] = new DefaultHttpContext(); + Requests[374].RequestServices = CreateServices(); + Requests[374].Request.Method = "GET"; + Requests[374].Request.Path = "/providers/Microsoft.Subscription/subscriptionOperations/3bab0549-0d"; + Requests[375] = new DefaultHttpContext(); + Requests[375].RequestServices = CreateServices(); + Requests[375].Request.Method = "PUT"; + Requests[375].Request.Path = "/providers/Microsoft.Web/sourcecontrols/b18cc219-f067-4f0"; + Requests[376] = new DefaultHttpContext(); + Requests[376].RequestServices = CreateServices(); + Requests[376].Request.Method = "GET"; + Requests[376].Request.Path = "/providers/Microsoft.Web/sourcecontrols/a7099740-741a-473"; + Requests[377] = new DefaultHttpContext(); + Requests[377].RequestServices = CreateServices(); + Requests[377].Request.Method = "GET"; + Requests[377].Request.Path = "/catalog/usql/databases/8d9d68e1-2df/acl"; + Requests[378] = new DefaultHttpContext(); + Requests[378].RequestServices = CreateServices(); + Requests[378].Request.Method = "GET"; + Requests[378].Request.Path = "/catalog/usql/databases/2f7e76be-d8b/assemblies"; + Requests[379] = new DefaultHttpContext(); + Requests[379].RequestServices = CreateServices(); + Requests[379].Request.Method = "GET"; + Requests[379].Request.Path = "/catalog/usql/databases/4278cafa-37e/credentials"; + Requests[380] = new DefaultHttpContext(); + Requests[380].RequestServices = CreateServices(); + Requests[380].Request.Method = "GET"; + Requests[380].Request.Path = "/catalog/usql/databases/3d494e04-a84/externaldatasources"; + Requests[381] = new DefaultHttpContext(); + Requests[381].RequestServices = CreateServices(); + Requests[381].Request.Method = "GET"; + Requests[381].Request.Path = "/catalog/usql/databases/80427fc0-9f1/schemas"; + Requests[382] = new DefaultHttpContext(); + Requests[382].RequestServices = CreateServices(); + Requests[382].Request.Method = "DELETE"; + Requests[382].Request.Path = "/catalog/usql/databases/c40247c2-546/secrets"; + Requests[383] = new DefaultHttpContext(); + Requests[383].RequestServices = CreateServices(); + Requests[383].Request.Method = "GET"; + Requests[383].Request.Path = "/catalog/usql/databases/7275f9ee-ae4/statistics"; + Requests[384] = new DefaultHttpContext(); + Requests[384].RequestServices = CreateServices(); + Requests[384].Request.Method = "GET"; + Requests[384].Request.Path = "/catalog/usql/databases/1cf4a5b3-8d5/tables"; + Requests[385] = new DefaultHttpContext(); + Requests[385].RequestServices = CreateServices(); + Requests[385].Request.Method = "GET"; + Requests[385].Request.Path = "/catalog/usql/databases/5fcfc12a-323/tablevaluedfunctions"; + Requests[386] = new DefaultHttpContext(); + Requests[386].RequestServices = CreateServices(); + Requests[386].Request.Method = "GET"; + Requests[386].Request.Path = "/catalog/usql/databases/8ff06c64-ad9/views"; + Requests[387] = new DefaultHttpContext(); + Requests[387].RequestServices = CreateServices(); + Requests[387].Request.Method = "GET"; + Requests[387].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices/940de8c0-f2/addomainservicemembers"; + Requests[388] = new DefaultHttpContext(); + Requests[388].RequestServices = CreateServices(); + Requests[388].Request.Method = "GET"; + Requests[388].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices/21d35358-a9/addsservicemembers"; + Requests[389] = new DefaultHttpContext(); + Requests[389].RequestServices = CreateServices(); + Requests[389].Request.Method = "GET"; + Requests[389].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices/fed58734-2e/alerts"; + Requests[390] = new DefaultHttpContext(); + Requests[390].RequestServices = CreateServices(); + Requests[390].Request.Method = "GET"; + Requests[390].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices/d02246e9-f7/configuration"; + Requests[391] = new DefaultHttpContext(); + Requests[391].RequestServices = CreateServices(); + Requests[391].Request.Method = "GET"; + Requests[391].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices/392e98c5-d2/forestsummary"; + Requests[392] = new DefaultHttpContext(); + Requests[392].RequestServices = CreateServices(); + Requests[392].Request.Method = "GET"; + Requests[392].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices/e48a65d6-f9/metricmetadata"; + Requests[393] = new DefaultHttpContext(); + Requests[393].RequestServices = CreateServices(); + Requests[393].Request.Method = "GET"; + Requests[393].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices/54621a83-0a/replicationstatus"; + Requests[394] = new DefaultHttpContext(); + Requests[394].RequestServices = CreateServices(); + Requests[394].Request.Method = "GET"; + Requests[394].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices/5e118514-fd/replicationsummary"; + Requests[395] = new DefaultHttpContext(); + Requests[395].RequestServices = CreateServices(); + Requests[395].Request.Method = "GET"; + Requests[395].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/26af5da8-21/alerts"; + Requests[396] = new DefaultHttpContext(); + Requests[396].RequestServices = CreateServices(); + Requests[396].Request.Method = "GET"; + Requests[396].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/6691379d-1f/exportstatus"; + Requests[397] = new DefaultHttpContext(); + Requests[397].RequestServices = CreateServices(); + Requests[397].Request.Method = "GET"; + Requests[397].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/3ed12a22-74/metricmetadata"; + Requests[398] = new DefaultHttpContext(); + Requests[398].RequestServices = CreateServices(); + Requests[398].Request.Method = "PATCH"; + Requests[398].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/28cd7a5e-58/monitoringconfiguration"; + Requests[399] = new DefaultHttpContext(); + Requests[399].RequestServices = CreateServices(); + Requests[399].Request.Method = "GET"; + Requests[399].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/34605a3e-ba/monitoringconfigurations"; + Requests[400] = new DefaultHttpContext(); + Requests[400].RequestServices = CreateServices(); + Requests[400].Request.Method = "GET"; + Requests[400].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/2baef7ac-c7/servicemembers"; + Requests[401] = new DefaultHttpContext(); + Requests[401].RequestServices = CreateServices(); + Requests[401].Request.Method = "POST"; + Requests[401].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/aa95fd42-74/servicemembers"; + Requests[402] = new DefaultHttpContext(); + Requests[402].RequestServices = CreateServices(); + Requests[402].Request.Method = "POST"; + Requests[402].Request.Path = "/providers/Microsoft.Capacity/reservationOrders/155b0c82-c90f-4214/merge"; + Requests[403] = new DefaultHttpContext(); + Requests[403].RequestServices = CreateServices(); + Requests[403].Request.Method = "GET"; + Requests[403].Request.Path = "/providers/Microsoft.Capacity/reservationOrders/0b4c03f2-9cab-44af/reservations"; + Requests[404] = new DefaultHttpContext(); + Requests[404].RequestServices = CreateServices(); + Requests[404].Request.Method = "POST"; + Requests[404].Request.Path = "/providers/Microsoft.Capacity/reservationOrders/b687eba5-3577-4be3/split"; + Requests[405] = new DefaultHttpContext(); + Requests[405].RequestServices = CreateServices(); + Requests[405].Request.Method = "GET"; + Requests[405].Request.Path = "/providers/Microsoft.EventGrid/topicTypes/377c6660-948c/eventTypes"; + Requests[406] = new DefaultHttpContext(); + Requests[406].RequestServices = CreateServices(); + Requests[406].Request.Method = "GET"; + Requests[406].Request.Path = "/providers/Microsoft.Intune/locations/388062e4/androidPolicies"; + Requests[407] = new DefaultHttpContext(); + Requests[407].RequestServices = CreateServices(); + Requests[407].Request.Method = "GET"; + Requests[407].Request.Path = "/providers/Microsoft.Intune/locations/b205c42c/apps"; + Requests[408] = new DefaultHttpContext(); + Requests[408].RequestServices = CreateServices(); + Requests[408].Request.Method = "GET"; + Requests[408].Request.Path = "/providers/Microsoft.Intune/locations/91df0de5/flaggedUsers"; + Requests[409] = new DefaultHttpContext(); + Requests[409].RequestServices = CreateServices(); + Requests[409].Request.Method = "GET"; + Requests[409].Request.Path = "/providers/Microsoft.Intune/locations/ea0ec772/iosPolicies"; + Requests[410] = new DefaultHttpContext(); + Requests[410].RequestServices = CreateServices(); + Requests[410].Request.Method = "GET"; + Requests[410].Request.Path = "/providers/Microsoft.Intune/locations/b20b8976/operationResults"; + Requests[411] = new DefaultHttpContext(); + Requests[411].RequestServices = CreateServices(); + Requests[411].Request.Method = "GET"; + Requests[411].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/6ea17143-34/exporterrors/counts"; + Requests[412] = new DefaultHttpContext(); + Requests[412].RequestServices = CreateServices(); + Requests[412].Request.Method = "GET"; + Requests[412].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/ff073b5e-a9/exporterrors/listV2"; + Requests[413] = new DefaultHttpContext(); + Requests[413].RequestServices = CreateServices(); + Requests[413].Request.Method = "GET"; + Requests[413].Request.Path = "/providers/Microsoft.Intune/locations/a8d648a7/statuses/default"; + Requests[414] = new DefaultHttpContext(); + Requests[414].RequestServices = CreateServices(); + Requests[414].Request.Method = "POST"; + Requests[414].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/ade1b803-23/feedbacktype/alerts/feedback"; + Requests[415] = new DefaultHttpContext(); + Requests[415].RequestServices = CreateServices(); + Requests[415].Request.Method = "GET"; + Requests[415].Request.Path = "/providers/Microsoft.Billing/billingAccounts/ccae3b9c-b2c5-4f/providers/Microsoft.Consumption/balances"; + Requests[416] = new DefaultHttpContext(); + Requests[416].RequestServices = CreateServices(); + Requests[416].Request.Method = "PUT"; + Requests[416].Request.Path = "/providers/Microsoft.Billing/billingAccounts/c524e916-836f-40/providers/Microsoft.Consumption/costTags"; + Requests[417] = new DefaultHttpContext(); + Requests[417].RequestServices = CreateServices(); + Requests[417].Request.Method = "GET"; + Requests[417].Request.Path = "/providers/Microsoft.Billing/billingAccounts/51071c3e-8bf2-4f/providers/Microsoft.Consumption/costTags"; + Requests[418] = new DefaultHttpContext(); + Requests[418].RequestServices = CreateServices(); + Requests[418].Request.Method = "GET"; + Requests[418].Request.Path = "/providers/Microsoft.Billing/billingAccounts/9191b4ed-4d7f-49/providers/Microsoft.Consumption/marketplaces"; + Requests[419] = new DefaultHttpContext(); + Requests[419].RequestServices = CreateServices(); + Requests[419].Request.Method = "GET"; + Requests[419].Request.Path = "/providers/Microsoft.Billing/billingAccounts/96fe9ee3-1324-4f/providers/Microsoft.Consumption/usageDetails"; + Requests[420] = new DefaultHttpContext(); + Requests[420].RequestServices = CreateServices(); + Requests[420].Request.Method = "GET"; + Requests[420].Request.Path = "/providers/Microsoft.Billing/departments/05450b32-c5c/providers/Microsoft.Consumption/marketplaces"; + Requests[421] = new DefaultHttpContext(); + Requests[421].RequestServices = CreateServices(); + Requests[421].Request.Method = "GET"; + Requests[421].Request.Path = "/providers/Microsoft.Billing/departments/12f104fa-b3f/providers/Microsoft.Consumption/usageDetails"; + Requests[422] = new DefaultHttpContext(); + Requests[422].RequestServices = CreateServices(); + Requests[422].Request.Method = "GET"; + Requests[422].Request.Path = "/providers/Microsoft.Billing/enrollmentAccounts/afb11455-5f8e-4532-/providers/Microsoft.Consumption/marketplaces"; + Requests[423] = new DefaultHttpContext(); + Requests[423].RequestServices = CreateServices(); + Requests[423].Request.Method = "GET"; + Requests[423].Request.Path = "/providers/Microsoft.Billing/enrollmentAccounts/944c41e1-4e05-43be-/providers/Microsoft.Consumption/usageDetails"; + Requests[424] = new DefaultHttpContext(); + Requests[424].RequestServices = CreateServices(); + Requests[424].Request.Method = "POST"; + Requests[424].Request.Path = "/providers/Microsoft.Billing/enrollmentAccounts/f3ac579a-45b5-4527-8d/providers/Microsoft.Subscription/createSubscription"; + Requests[425] = new DefaultHttpContext(); + Requests[425].RequestServices = CreateServices(); + Requests[425].Request.Method = "GET"; + Requests[425].Request.Path = "/providers/Microsoft.Capacity/reservationorders/7a202111-b6ac-490a/providers/Microsoft.Consumption/reservationDetails"; + Requests[426] = new DefaultHttpContext(); + Requests[426].RequestServices = CreateServices(); + Requests[426].Request.Method = "GET"; + Requests[426].Request.Path = "/providers/Microsoft.Capacity/reservationorders/55284163-f97a-4619/providers/Microsoft.Consumption/reservationSummaries"; + Requests[427] = new DefaultHttpContext(); + Requests[427].RequestServices = CreateServices(); + Requests[427].Request.Method = "GET"; + Requests[427].Request.Path = "/providers/Microsoft.CostManagement/billingAccounts/2fd5f886-94d1-4a/providers/Microsoft.Consumption/tags"; + Requests[428] = new DefaultHttpContext(); + Requests[428].RequestServices = CreateServices(); + Requests[428].Request.Method = "GET"; + Requests[428].Request.Path = "/providers/Microsoft.Management/managementgroups/b4ae8938-5329-4b6/providers/Microsoft.Authorization/policyDefinitions"; + Requests[429] = new DefaultHttpContext(); + Requests[429].RequestServices = CreateServices(); + Requests[429].Request.Method = "GET"; + Requests[429].Request.Path = "/providers/Microsoft.Management/managementgroups/2bace433-bddf-420/providers/Microsoft.Authorization/policySetDefinitions"; + Requests[430] = new DefaultHttpContext(); + Requests[430].RequestServices = CreateServices(); + Requests[430].Request.Method = "GET"; + Requests[430].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/4dbcc8e6-76/reports/badpassword/details/user"; + Requests[431] = new DefaultHttpContext(); + Requests[431].RequestServices = CreateServices(); + Requests[431].Request.Method = "DELETE"; + Requests[431].Request.Path = "/providers/Microsoft.Management/managementgroups/3d8586a5-4d06-4ad/providers/Microsoft.Authorization/policyDefinitions/96ced39a-f12b-42cd-a"; + Requests[432] = new DefaultHttpContext(); + Requests[432].RequestServices = CreateServices(); + Requests[432].Request.Method = "PUT"; + Requests[432].Request.Path = "/providers/Microsoft.Management/managementgroups/39d8cd83-a4e3-466/providers/Microsoft.Authorization/policyDefinitions/ca864824-f84e-451c-a"; + Requests[433] = new DefaultHttpContext(); + Requests[433].RequestServices = CreateServices(); + Requests[433].Request.Method = "GET"; + Requests[433].Request.Path = "/providers/Microsoft.Management/managementgroups/ac3de0b6-0c84-400/providers/Microsoft.Authorization/policyDefinitions/a32da581-2aa8-49a7-b"; + Requests[434] = new DefaultHttpContext(); + Requests[434].RequestServices = CreateServices(); + Requests[434].Request.Method = "PUT"; + Requests[434].Request.Path = "/providers/Microsoft.Management/managementgroups/197d1db2-e6ab-46e/providers/Microsoft.Authorization/policySetDefinitions/ad0bf8f1-fcb9-428d-b94e"; + Requests[435] = new DefaultHttpContext(); + Requests[435].RequestServices = CreateServices(); + Requests[435].Request.Method = "GET"; + Requests[435].Request.Path = "/providers/Microsoft.Management/managementgroups/c873f8b5-2d2f-444/providers/Microsoft.Authorization/policySetDefinitions/b884c108-6b9d-4f51-94bf"; + Requests[436] = new DefaultHttpContext(); + Requests[436].RequestServices = CreateServices(); + Requests[436].Request.Method = "DELETE"; + Requests[436].Request.Path = "/providers/Microsoft.Management/managementgroups/caa2520a-38cd-44e/providers/Microsoft.Authorization/policySetDefinitions/124cb0d9-e10a-4c8b-be7a"; + Requests[437] = new DefaultHttpContext(); + Requests[437].RequestServices = CreateServices(); + Requests[437].Request.Method = "GET"; + Requests[437].Request.Path = "/providers/Microsoft.Billing/billingAccounts/58dbeb24-cb26-41/providers/Microsoft.Billing/billingPeriods/ceb3e668-a5b0-41f/providers/Microsoft.Consumption/balances"; + Requests[438] = new DefaultHttpContext(); + Requests[438].RequestServices = CreateServices(); + Requests[438].Request.Method = "GET"; + Requests[438].Request.Path = "/providers/Microsoft.Billing/billingAccounts/e815176f-d651-4a/providers/Microsoft.Billing/billingPeriods/56b72c33-d8e9-40e/providers/Microsoft.Consumption/marketplaces"; + Requests[439] = new DefaultHttpContext(); + Requests[439].RequestServices = CreateServices(); + Requests[439].Request.Method = "GET"; + Requests[439].Request.Path = "/providers/Microsoft.Billing/billingAccounts/37797732-a671-4b/providers/Microsoft.Billing/billingPeriods/80b660af-c5e0-46f/providers/Microsoft.Consumption/usageDetails"; + Requests[440] = new DefaultHttpContext(); + Requests[440].RequestServices = CreateServices(); + Requests[440].Request.Method = "GET"; + Requests[440].Request.Path = "/providers/Microsoft.Billing/departments/98546c3a-020/providers/Microsoft.Billing/billingPeriods/5afbb630-4fbd-42b/providers/Microsoft.Consumption/marketplaces"; + Requests[441] = new DefaultHttpContext(); + Requests[441].RequestServices = CreateServices(); + Requests[441].Request.Method = "GET"; + Requests[441].Request.Path = "/providers/Microsoft.Billing/departments/6d6d340f-74a/providers/Microsoft.Billing/billingPeriods/60ca7d18-5bb7-48a/providers/Microsoft.Consumption/usageDetails"; + Requests[442] = new DefaultHttpContext(); + Requests[442].RequestServices = CreateServices(); + Requests[442].Request.Method = "GET"; + Requests[442].Request.Path = "/providers/Microsoft.Billing/enrollmentAccounts/dfc2caef-c829-4fdf-/providers/Microsoft.Billing/billingPeriods/52488d12-95c4-4bd/providers/Microsoft.Consumption/marketplaces"; + Requests[443] = new DefaultHttpContext(); + Requests[443].RequestServices = CreateServices(); + Requests[443].Request.Method = "GET"; + Requests[443].Request.Path = "/providers/Microsoft.Billing/enrollmentAccounts/5ea1c5f1-789a-4a67-/providers/Microsoft.Billing/billingPeriods/fd36d2a6-f1d1-4b2/providers/Microsoft.Consumption/usageDetails"; + Requests[444] = new DefaultHttpContext(); + Requests[444].RequestServices = CreateServices(); + Requests[444].Request.Method = "GET"; + Requests[444].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/e722bb21-4f/feedbacktype/alerts/ea114d0a-/alertfeedback"; + Requests[445] = new DefaultHttpContext(); + Requests[445].RequestServices = CreateServices(); + Requests[445].Request.Method = "GET"; + Requests[445].Request.Path = "/catalog/usql/databases/522b21fc-3c4/assemblies/6bb3dc2e-b36"; + Requests[446] = new DefaultHttpContext(); + Requests[446].RequestServices = CreateServices(); + Requests[446].Request.Method = "PATCH"; + Requests[446].Request.Path = "/catalog/usql/databases/4f97ae5b-10b/credentials/c526f56a-1a70-"; + Requests[447] = new DefaultHttpContext(); + Requests[447].RequestServices = CreateServices(); + Requests[447].Request.Method = "GET"; + Requests[447].Request.Path = "/catalog/usql/databases/959fe508-a50/credentials/f2866fe5-2d7b-"; + Requests[448] = new DefaultHttpContext(); + Requests[448].RequestServices = CreateServices(); + Requests[448].Request.Method = "PUT"; + Requests[448].Request.Path = "/catalog/usql/databases/cd112a49-96d/credentials/c77e81dc-96c3-"; + Requests[449] = new DefaultHttpContext(); + Requests[449].RequestServices = CreateServices(); + Requests[449].Request.Method = "POST"; + Requests[449].Request.Path = "/catalog/usql/databases/2dc20285-cf0/credentials/f0f276bd-b579-"; + Requests[450] = new DefaultHttpContext(); + Requests[450].RequestServices = CreateServices(); + Requests[450].Request.Method = "GET"; + Requests[450].Request.Path = "/catalog/usql/databases/9b34c996-f88/externaldatasources/c7144c88-f194-48c4-9de"; + Requests[451] = new DefaultHttpContext(); + Requests[451].RequestServices = CreateServices(); + Requests[451].Request.Method = "GET"; + Requests[451].Request.Path = "/catalog/usql/databases/ed84ef31-2b5/schemas/76a906e7-4"; + Requests[452] = new DefaultHttpContext(); + Requests[452].RequestServices = CreateServices(); + Requests[452].Request.Method = "PUT"; + Requests[452].Request.Path = "/catalog/usql/databases/f9656aaf-d3a/secrets/6c34b504-4"; + Requests[453] = new DefaultHttpContext(); + Requests[453].RequestServices = CreateServices(); + Requests[453].Request.Method = "GET"; + Requests[453].Request.Path = "/catalog/usql/databases/3b60ae23-c1f/secrets/1f087fea-a"; + Requests[454] = new DefaultHttpContext(); + Requests[454].RequestServices = CreateServices(); + Requests[454].Request.Method = "PATCH"; + Requests[454].Request.Path = "/catalog/usql/databases/060711e3-06a/secrets/5debd271-f"; + Requests[455] = new DefaultHttpContext(); + Requests[455].RequestServices = CreateServices(); + Requests[455].Request.Method = "DELETE"; + Requests[455].Request.Path = "/catalog/usql/databases/087653a9-053/secrets/8b7d8ec2-9"; + Requests[456] = new DefaultHttpContext(); + Requests[456].RequestServices = CreateServices(); + Requests[456].Request.Method = "GET"; + Requests[456].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices/7065ac2e-12/dimensions/7114a017-"; + Requests[457] = new DefaultHttpContext(); + Requests[457].RequestServices = CreateServices(); + Requests[457].Request.Method = "GET"; + Requests[457].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices/4728ae6a-a6/metricmetadata/2041ddb0-a"; + Requests[458] = new DefaultHttpContext(); + Requests[458].RequestServices = CreateServices(); + Requests[458].Request.Method = "GET"; + Requests[458].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/92de7596-50/checkServiceFeatureAvailibility/b75bd81b-14"; + Requests[459] = new DefaultHttpContext(); + Requests[459].RequestServices = CreateServices(); + Requests[459].Request.Method = "GET"; + Requests[459].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/b167109d-b8/metricmetadata/edc8a92d-a"; + Requests[460] = new DefaultHttpContext(); + Requests[460].RequestServices = CreateServices(); + Requests[460].Request.Method = "DELETE"; + Requests[460].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/32b2a987-5c/servicemembers/ad90bbd6-e8bd-4"; + Requests[461] = new DefaultHttpContext(); + Requests[461].RequestServices = CreateServices(); + Requests[461].Request.Method = "GET"; + Requests[461].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/f0e9cde0-25/servicemembers/2a8471b9-bcd4-4"; + Requests[462] = new DefaultHttpContext(); + Requests[462].RequestServices = CreateServices(); + Requests[462].Request.Method = "GET"; + Requests[462].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/15c9d56b-4a/TenantWhitelisting/57c79c6d-29"; + Requests[463] = new DefaultHttpContext(); + Requests[463].RequestServices = CreateServices(); + Requests[463].Request.Method = "GET"; + Requests[463].Request.Path = "/providers/Microsoft.Capacity/reservationOrders/c83f0452-418f-432d/reservations/912a0cb0-6552"; + Requests[464] = new DefaultHttpContext(); + Requests[464].RequestServices = CreateServices(); + Requests[464].Request.Method = "PATCH"; + Requests[464].Request.Path = "/providers/Microsoft.Capacity/reservationOrders/5658130b-a23c-4cbb/reservations/ea6b0616-6fb6"; + Requests[465] = new DefaultHttpContext(); + Requests[465].RequestServices = CreateServices(); + Requests[465].Request.Method = "GET"; + Requests[465].Request.Path = "/providers/Microsoft.Intune/locations/c3370383/androidPolicies/f0c310dc-5"; + Requests[466] = new DefaultHttpContext(); + Requests[466].RequestServices = CreateServices(); + Requests[466].Request.Method = "PUT"; + Requests[466].Request.Path = "/providers/Microsoft.Intune/locations/4867d324/androidPolicies/0a164356-3"; + Requests[467] = new DefaultHttpContext(); + Requests[467].RequestServices = CreateServices(); + Requests[467].Request.Method = "PATCH"; + Requests[467].Request.Path = "/providers/Microsoft.Intune/locations/6c0935f3/androidPolicies/0bb726fe-1"; + Requests[468] = new DefaultHttpContext(); + Requests[468].RequestServices = CreateServices(); + Requests[468].Request.Method = "DELETE"; + Requests[468].Request.Path = "/providers/Microsoft.Intune/locations/6ce2504d/androidPolicies/3be2c33c-4"; + Requests[469] = new DefaultHttpContext(); + Requests[469].RequestServices = CreateServices(); + Requests[469].Request.Method = "GET"; + Requests[469].Request.Path = "/providers/Microsoft.Intune/locations/e01a286a/flaggedUsers/907ab9ce"; + Requests[470] = new DefaultHttpContext(); + Requests[470].RequestServices = CreateServices(); + Requests[470].Request.Method = "GET"; + Requests[470].Request.Path = "/providers/Microsoft.Intune/locations/50ff2f7e/iosPolicies/d4c02ef8-d"; + Requests[471] = new DefaultHttpContext(); + Requests[471].RequestServices = CreateServices(); + Requests[471].Request.Method = "PUT"; + Requests[471].Request.Path = "/providers/Microsoft.Intune/locations/0e3e1b3e/iosPolicies/bf931ef8-0"; + Requests[472] = new DefaultHttpContext(); + Requests[472].RequestServices = CreateServices(); + Requests[472].Request.Method = "PATCH"; + Requests[472].Request.Path = "/providers/Microsoft.Intune/locations/6b84aca5/iosPolicies/8a7d396a-2"; + Requests[473] = new DefaultHttpContext(); + Requests[473].RequestServices = CreateServices(); + Requests[473].Request.Method = "DELETE"; + Requests[473].Request.Path = "/providers/Microsoft.Intune/locations/91ff4eff/iosPolicies/1256392a-e"; + Requests[474] = new DefaultHttpContext(); + Requests[474].RequestServices = CreateServices(); + Requests[474].Request.Method = "DELETE"; + Requests[474].Request.Path = "/providers/Microsoft.Management/managementGroups/d31ad31/subscriptions/b027f36c-9322-"; + Requests[475] = new DefaultHttpContext(); + Requests[475].RequestServices = CreateServices(); + Requests[475].Request.Method = "PUT"; + Requests[475].Request.Path = "/providers/Microsoft.Management/managementGroups/55d7357/subscriptions/82cc4132-cddb-"; + Requests[476] = new DefaultHttpContext(); + Requests[476].RequestServices = CreateServices(); + Requests[476].Request.Method = "GET"; + Requests[476].Request.Path = "/catalog/usql/databases/5737ef02-734/schemas/2ffdce38-b/packages"; + Requests[477] = new DefaultHttpContext(); + Requests[477].RequestServices = CreateServices(); + Requests[477].Request.Method = "GET"; + Requests[477].Request.Path = "/catalog/usql/databases/ebb1e575-88f/schemas/90f366dc-5/procedures"; + Requests[478] = new DefaultHttpContext(); + Requests[478].RequestServices = CreateServices(); + Requests[478].Request.Method = "GET"; + Requests[478].Request.Path = "/catalog/usql/databases/8fdaff71-30a/schemas/3cd27cea-e/statistics"; + Requests[479] = new DefaultHttpContext(); + Requests[479].RequestServices = CreateServices(); + Requests[479].Request.Method = "GET"; + Requests[479].Request.Path = "/catalog/usql/databases/82ab4106-551/schemas/09bd2151-b/tables"; + Requests[480] = new DefaultHttpContext(); + Requests[480].RequestServices = CreateServices(); + Requests[480].Request.Method = "GET"; + Requests[480].Request.Path = "/catalog/usql/databases/fb2a2e1c-8af/schemas/23b91f04-c/tabletypes"; + Requests[481] = new DefaultHttpContext(); + Requests[481].RequestServices = CreateServices(); + Requests[481].Request.Method = "GET"; + Requests[481].Request.Path = "/catalog/usql/databases/5cbb7c69-35c/schemas/f9fcad13-5/tablevaluedfunctions"; + Requests[482] = new DefaultHttpContext(); + Requests[482].RequestServices = CreateServices(); + Requests[482].Request.Method = "GET"; + Requests[482].Request.Path = "/catalog/usql/databases/d0e472a9-d86/schemas/b0f0efe3-e/types"; + Requests[483] = new DefaultHttpContext(); + Requests[483].RequestServices = CreateServices(); + Requests[483].Request.Method = "GET"; + Requests[483].Request.Path = "/catalog/usql/databases/6eda39fa-d3e/schemas/09bc74ca-d/views"; + Requests[484] = new DefaultHttpContext(); + Requests[484].RequestServices = CreateServices(); + Requests[484].Request.Method = "GET"; + Requests[484].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices/16c3aae0-57/servicemembers/929a4a00-11b5-4/alerts"; + Requests[485] = new DefaultHttpContext(); + Requests[485].RequestServices = CreateServices(); + Requests[485].Request.Method = "GET"; + Requests[485].Request.Path = "/providers/Microsoft.ADHybridHealthService/service/10817748-7a/servicemembers/978c1c85-14b1-4/connectors"; + Requests[486] = new DefaultHttpContext(); + Requests[486].RequestServices = CreateServices(); + Requests[486].Request.Method = "GET"; + Requests[486].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/6af49530-c0/servicemembers/5590f18b-d642-4/alerts"; + Requests[487] = new DefaultHttpContext(); + Requests[487].RequestServices = CreateServices(); + Requests[487].Request.Method = "GET"; + Requests[487].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/a14077e8-9c/servicemembers/98fbefd0-5c06-4/credentials"; + Requests[488] = new DefaultHttpContext(); + Requests[488].RequestServices = CreateServices(); + Requests[488].Request.Method = "DELETE"; + Requests[488].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/a35df15d-b7/servicemembers/0f12227f-649b-4/data"; + Requests[489] = new DefaultHttpContext(); + Requests[489].RequestServices = CreateServices(); + Requests[489].Request.Method = "GET"; + Requests[489].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/25acf844-eb/servicemembers/25e61e52-afd7-4/datafreshness"; + Requests[490] = new DefaultHttpContext(); + Requests[490].RequestServices = CreateServices(); + Requests[490].Request.Method = "GET"; + Requests[490].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/c840c66b-45/servicemembers/27ce50a3-5fb9-4/exportstatus"; + Requests[491] = new DefaultHttpContext(); + Requests[491].RequestServices = CreateServices(); + Requests[491].Request.Method = "GET"; + Requests[491].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/cf0ec528-10/servicemembers/134e985e-a05c-4/globalconfiguration"; + Requests[492] = new DefaultHttpContext(); + Requests[492].RequestServices = CreateServices(); + Requests[492].Request.Method = "GET"; + Requests[492].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/c4563e1d-b7/servicemembers/f1fb81a5-c7c1-4/serviceconfiguration"; + Requests[493] = new DefaultHttpContext(); + Requests[493].RequestServices = CreateServices(); + Requests[493].Request.Method = "GET"; + Requests[493].Request.Path = "/providers/Microsoft.Capacity/reservationOrders/7d20576e-63e9-44e4/reservations/c4e7a692-2bfa/revisions"; + Requests[494] = new DefaultHttpContext(); + Requests[494].RequestServices = CreateServices(); + Requests[494].Request.Method = "GET"; + Requests[494].Request.Path = "/providers/Microsoft.Intune/locations/e0a5c0bb/AndroidPolicies/db9da655-3/apps"; + Requests[495] = new DefaultHttpContext(); + Requests[495].RequestServices = CreateServices(); + Requests[495].Request.Method = "GET"; + Requests[495].Request.Path = "/providers/Microsoft.Intune/locations/21a6b242/androidPolicies/c0def284-7/groups"; + Requests[496] = new DefaultHttpContext(); + Requests[496].RequestServices = CreateServices(); + Requests[496].Request.Method = "GET"; + Requests[496].Request.Path = "/providers/Microsoft.Intune/locations/ba980de6/flaggedUsers/4acea646/flaggedEnrolledApps"; + Requests[497] = new DefaultHttpContext(); + Requests[497].RequestServices = CreateServices(); + Requests[497].Request.Method = "GET"; + Requests[497].Request.Path = "/providers/Microsoft.Intune/locations/63e6dcb1/iosPolicies/4016b26e-4/apps"; + Requests[498] = new DefaultHttpContext(); + Requests[498].RequestServices = CreateServices(); + Requests[498].Request.Method = "GET"; + Requests[498].Request.Path = "/providers/Microsoft.Intune/locations/2138f3ec/iosPolicies/0e5b6d6b-1/groups"; + Requests[499] = new DefaultHttpContext(); + Requests[499].RequestServices = CreateServices(); + Requests[499].Request.Method = "GET"; + Requests[499].Request.Path = "/providers/Microsoft.Intune/locations/54e6dcee/users/0cef01bb/devices"; + Requests[500] = new DefaultHttpContext(); + Requests[500].RequestServices = CreateServices(); + Requests[500].Request.Method = "GET"; + Requests[500].Request.Path = "/providers/Microsoft.Capacity/reservationorders/d1121b87-725b-47a1/reservations/e5af7101-0561/providers/Microsoft.Consumption/reservationDetails"; + Requests[501] = new DefaultHttpContext(); + Requests[501].RequestServices = CreateServices(); + Requests[501].Request.Method = "GET"; + Requests[501].Request.Path = "/providers/Microsoft.Capacity/reservationorders/b649436b-24dc-469a/reservations/cd0302f5-f662/providers/Microsoft.Consumption/reservationSummaries"; + Requests[502] = new DefaultHttpContext(); + Requests[502].RequestServices = CreateServices(); + Requests[502].Request.Method = "GET"; + Requests[502].Request.Path = "/catalog/usql/databases/ee9020bb-9fb/schemas/fcf7aff1-3/packages/dbad130a-eb"; + Requests[503] = new DefaultHttpContext(); + Requests[503].RequestServices = CreateServices(); + Requests[503].Request.Method = "GET"; + Requests[503].Request.Path = "/catalog/usql/databases/b7096c8d-54e/schemas/ef350499-0/procedures/03737b1f-9326"; + Requests[504] = new DefaultHttpContext(); + Requests[504].RequestServices = CreateServices(); + Requests[504].Request.Method = "GET"; + Requests[504].Request.Path = "/catalog/usql/databases/ecb583d1-465/schemas/7a0383ee-a/tables/587ab987-"; + Requests[505] = new DefaultHttpContext(); + Requests[505].RequestServices = CreateServices(); + Requests[505].Request.Method = "GET"; + Requests[505].Request.Path = "/catalog/usql/databases/03c972c4-153/schemas/96319834-8/tabletypes/d61bee34-2ef9"; + Requests[506] = new DefaultHttpContext(); + Requests[506].RequestServices = CreateServices(); + Requests[506].Request.Method = "GET"; + Requests[506].Request.Path = "/catalog/usql/databases/3c184fb1-0a4/schemas/8a759027-1/tablevaluedfunctions/0f37bc63-249a-48ce-ac29"; + Requests[507] = new DefaultHttpContext(); + Requests[507].RequestServices = CreateServices(); + Requests[507].Request.Method = "GET"; + Requests[507].Request.Path = "/catalog/usql/databases/42be4030-110/schemas/ee034e9f-1/views/fb2f94a2"; + Requests[508] = new DefaultHttpContext(); + Requests[508].RequestServices = CreateServices(); + Requests[508].Request.Method = "GET"; + Requests[508].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices/35178c04-48/metricmetadata/5e3544bb-5/groups/37896d9b-"; + Requests[509] = new DefaultHttpContext(); + Requests[509].RequestServices = CreateServices(); + Requests[509].Request.Method = "GET"; + Requests[509].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/b8d0d188-05/metricmetadata/43d752a3-6/groups/4fddb8f1-"; + Requests[510] = new DefaultHttpContext(); + Requests[510].RequestServices = CreateServices(); + Requests[510].Request.Method = "PUT"; + Requests[510].Request.Path = "/providers/Microsoft.Intune/locations/fcdcca85/androidPolicies/3926053d-f/apps/95dd42c"; + Requests[511] = new DefaultHttpContext(); + Requests[511].RequestServices = CreateServices(); + Requests[511].Request.Method = "DELETE"; + Requests[511].Request.Path = "/providers/Microsoft.Intune/locations/68b0edc7/androidPolicies/95b041a6-0/apps/d38538d"; + Requests[512] = new DefaultHttpContext(); + Requests[512].RequestServices = CreateServices(); + Requests[512].Request.Method = "PUT"; + Requests[512].Request.Path = "/providers/Microsoft.Intune/locations/8d6fd178/androidPolicies/16ea146c-e/groups/8d04903"; + Requests[513] = new DefaultHttpContext(); + Requests[513].RequestServices = CreateServices(); + Requests[513].Request.Method = "DELETE"; + Requests[513].Request.Path = "/providers/Microsoft.Intune/locations/c286d2d9/androidPolicies/c5275598-5/groups/d7ae910"; + Requests[514] = new DefaultHttpContext(); + Requests[514].RequestServices = CreateServices(); + Requests[514].Request.Method = "DELETE"; + Requests[514].Request.Path = "/providers/Microsoft.Intune/locations/c53b5c3d/iosPolicies/dbcbe18f-9/apps/ef60ec0"; + Requests[515] = new DefaultHttpContext(); + Requests[515].RequestServices = CreateServices(); + Requests[515].Request.Method = "PUT"; + Requests[515].Request.Path = "/providers/Microsoft.Intune/locations/4b70cc25/iosPolicies/0960e653-8/apps/e742952"; + Requests[516] = new DefaultHttpContext(); + Requests[516].RequestServices = CreateServices(); + Requests[516].Request.Method = "DELETE"; + Requests[516].Request.Path = "/providers/Microsoft.Intune/locations/502341f0/iosPolicies/2274b5e1-6/groups/7aef78d"; + Requests[517] = new DefaultHttpContext(); + Requests[517].RequestServices = CreateServices(); + Requests[517].Request.Method = "PUT"; + Requests[517].Request.Path = "/providers/Microsoft.Intune/locations/b093142d/iosPolicies/ef230112-e/groups/c75ab1f"; + Requests[518] = new DefaultHttpContext(); + Requests[518].RequestServices = CreateServices(); + Requests[518].Request.Method = "GET"; + Requests[518].Request.Path = "/providers/Microsoft.Intune/locations/1f763112/users/579226bd/devices/d212c0d5-2"; + Requests[519] = new DefaultHttpContext(); + Requests[519].RequestServices = CreateServices(); + Requests[519].Request.Method = "GET"; + Requests[519].Request.Path = "/catalog/usql/databases/c3d15cff-038/schemas/17b7b7d2-6/tables/2f1848ff-/partitions"; + Requests[520] = new DefaultHttpContext(); + Requests[520].RequestServices = CreateServices(); + Requests[520].Request.Method = "GET"; + Requests[520].Request.Path = "/catalog/usql/databases/2f2cc894-608/schemas/79ea882b-7/tables/a9725310-/previewrows"; + Requests[521] = new DefaultHttpContext(); + Requests[521].RequestServices = CreateServices(); + Requests[521].Request.Method = "GET"; + Requests[521].Request.Path = "/catalog/usql/databases/83eb945c-15a/schemas/89a1f5d9-9/tables/b756a303-/statistics"; + Requests[522] = new DefaultHttpContext(); + Requests[522].RequestServices = CreateServices(); + Requests[522].Request.Method = "GET"; + Requests[522].Request.Path = "/catalog/usql/databases/d733c3b9-4a0/schemas/94adc39c-1/tables/be815c04-/tablefragments"; + Requests[523] = new DefaultHttpContext(); + Requests[523].RequestServices = CreateServices(); + Requests[523].Request.Method = "GET"; + Requests[523].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices/1a429c36-b7/metrics/d4353f5e-b/groups/9b08f6aa-/average"; + Requests[524] = new DefaultHttpContext(); + Requests[524].RequestServices = CreateServices(); + Requests[524].Request.Method = "GET"; + Requests[524].Request.Path = "/providers/Microsoft.ADHybridHealthService/addsservices/34fdab9d-71/metrics/d23abe43-7/groups/781e023d-/sum"; + Requests[525] = new DefaultHttpContext(); + Requests[525].RequestServices = CreateServices(); + Requests[525].Request.Method = "GET"; + Requests[525].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/4d271c53-c7/metrics/0e2749aa-b/groups/90f416c2-/average"; + Requests[526] = new DefaultHttpContext(); + Requests[526].RequestServices = CreateServices(); + Requests[526].Request.Method = "GET"; + Requests[526].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/4b8ffcec-c2/metrics/6b2dd782-d/groups/fd43abfe-/sum"; + Requests[527] = new DefaultHttpContext(); + Requests[527].RequestServices = CreateServices(); + Requests[527].Request.Method = "POST"; + Requests[527].Request.Path = "/providers/Microsoft.Intune/locations/ae9891e7/users/f4a0ecaa/devices/8b63666c-3/wipe"; + Requests[528] = new DefaultHttpContext(); + Requests[528].RequestServices = CreateServices(); + Requests[528].Request.Method = "GET"; + Requests[528].Request.Path = "/catalog/usql/databases/d0782c60-77e/schemas/f79332ec-6/tables/eb9d811b-/partitions/f1efa048-800e"; + Requests[529] = new DefaultHttpContext(); + Requests[529].RequestServices = CreateServices(); + Requests[529].Request.Method = "GET"; + Requests[529].Request.Path = "/catalog/usql/databases/f7ae3995-d29/schemas/9ac28ef4-2/tables/8e3c0f94-/statistics/f385ea1d-f85d-"; + Requests[530] = new DefaultHttpContext(); + Requests[530].RequestServices = CreateServices(); + Requests[530].Request.Method = "GET"; + Requests[530].Request.Path = "/providers/Microsoft.ADHybridHealthService/services/a9205564-5a/servicemembers/d407b0e5-0abd-4/metrics/1adcb4d5-f/groups/2afcba17-"; + Requests[531] = new DefaultHttpContext(); + Requests[531].RequestServices = CreateServices(); + Requests[531].Request.Method = "GET"; + Requests[531].Request.Path = "/catalog/usql/databases/1b34028d-d5b/schemas/42d87371-6/tables/a3d4d429-/partitions/d365ba29-dd01/previewrows"; + Requests[532] = new DefaultHttpContext(); + Requests[532].RequestServices = CreateServices(); + Requests[532].Request.Method = "GET"; + Requests[532].Request.Path = "/apps/customprebuiltdomains/27f4187"; + Requests[533] = new DefaultHttpContext(); + Requests[533].RequestServices = CreateServices(); + Requests[533].Request.Method = "GET"; + Requests[533].Request.Path = "/BackupRestore/BackupPolicies/d11f8dc6-f337-40"; + Requests[534] = new DefaultHttpContext(); + Requests[534].RequestServices = CreateServices(); + Requests[534].Request.Method = "DELETE"; + Requests[534].Request.Path = "/certificates/issuers/587d7e46-72"; + Requests[535] = new DefaultHttpContext(); + Requests[535].RequestServices = CreateServices(); + Requests[535].Request.Method = "PUT"; + Requests[535].Request.Path = "/certificates/issuers/0df7f88b-72"; + Requests[536] = new DefaultHttpContext(); + Requests[536].RequestServices = CreateServices(); + Requests[536].Request.Method = "GET"; + Requests[536].Request.Path = "/certificates/issuers/b816a099-a3"; + Requests[537] = new DefaultHttpContext(); + Requests[537].RequestServices = CreateServices(); + Requests[537].Request.Method = "PATCH"; + Requests[537].Request.Path = "/certificates/issuers/e239824a-df"; + Requests[538] = new DefaultHttpContext(); + Requests[538].RequestServices = CreateServices(); + Requests[538].Request.Method = "POST"; + Requests[538].Request.Path = "/webhdfs/v1/26769904-de69-"; + Requests[539] = new DefaultHttpContext(); + Requests[539].RequestServices = CreateServices(); + Requests[539].Request.Method = "DELETE"; + Requests[539].Request.Path = "/webhdfs/v1/7bbc4fc0"; + Requests[540] = new DefaultHttpContext(); + Requests[540].RequestServices = CreateServices(); + Requests[540].Request.Method = "GET"; + Requests[540].Request.Path = "/webhdfs/v1/18be8"; + Requests[541] = new DefaultHttpContext(); + Requests[541].RequestServices = CreateServices(); + Requests[541].Request.Method = "PUT"; + Requests[541].Request.Path = "/webhdfs/v1/ce6cf1fa-b9ab-4b4e-a5"; + Requests[542] = new DefaultHttpContext(); + Requests[542].RequestServices = CreateServices(); + Requests[542].Request.Method = "GET"; + Requests[542].Request.Path = "/webhdfs/va/05f7fb94-74ff-47ef-9c9e-f"; + Requests[543] = new DefaultHttpContext(); + Requests[543].RequestServices = CreateServices(); + Requests[543].Request.Method = "POST"; + Requests[543].Request.Path = "/BackupRestore/BackupPolicies/93a5f9e9-0df7-47/$/Delete"; + Requests[544] = new DefaultHttpContext(); + Requests[544].RequestServices = CreateServices(); + Requests[544].Request.Method = "GET"; + Requests[544].Request.Path = "/BackupRestore/BackupPolicies/c62827dc-6aad-45/$/GetBackupEnabledEntities"; + Requests[545] = new DefaultHttpContext(); + Requests[545].RequestServices = CreateServices(); + Requests[545].Request.Method = "POST"; + Requests[545].Request.Path = "/BackupRestore/BackupPolicies/4f2b96db-fbc8-44/$/Update"; + Requests[546] = new DefaultHttpContext(); + Requests[546].RequestServices = CreateServices(); + Requests[546].Request.Method = "GET"; + Requests[546].Request.Path = "/EventsStore/Applications/e503edf3-37fc/$/Events"; + Requests[547] = new DefaultHttpContext(); + Requests[547].RequestServices = CreateServices(); + Requests[547].Request.Method = "GET"; + Requests[547].Request.Path = "/EventsStore/CorrelatedEvents/6d5356dc-af36-4/$/Events"; + Requests[548] = new DefaultHttpContext(); + Requests[548].RequestServices = CreateServices(); + Requests[548].Request.Method = "GET"; + Requests[548].Request.Path = "/EventsStore/Nodes/4e7c1ccf/$/Events"; + Requests[549] = new DefaultHttpContext(); + Requests[549].RequestServices = CreateServices(); + Requests[549].Request.Method = "GET"; + Requests[549].Request.Path = "/EventsStore/Partitions/d67d8a7c-db/$/Events"; + Requests[550] = new DefaultHttpContext(); + Requests[550].RequestServices = CreateServices(); + Requests[550].Request.Method = "GET"; + Requests[550].Request.Path = "/EventsStore/Services/96bcf9a5-/$/Events"; + Requests[551] = new DefaultHttpContext(); + Requests[551].RequestServices = CreateServices(); + Requests[551].Request.Method = "GET"; + Requests[551].Request.Path = "/Faults/Nodes/1887565c/$/GetTransitionProgress"; + Requests[552] = new DefaultHttpContext(); + Requests[552].RequestServices = CreateServices(); + Requests[552].Request.Method = "POST"; + Requests[552].Request.Path = "/Faults/Nodes/d62b04d5/$/StartTransition"; + Requests[553] = new DefaultHttpContext(); + Requests[553].RequestServices = CreateServices(); + Requests[553].Request.Method = "GET"; + Requests[553].Request.Path = "/EventsStore/Partitions/ec33cc83-64/$/Replicas/Events"; + Requests[554] = new DefaultHttpContext(); + Requests[554].RequestServices = CreateServices(); + Requests[554].Request.Method = "POST"; + Requests[554].Request.Path = "/Services/$/c417dcba-/$/GetPartitions/$/Recover"; + Requests[555] = new DefaultHttpContext(); + Requests[555].RequestServices = CreateServices(); + Requests[555].Request.Method = "GET"; + Requests[555].Request.Path = "/EventsStore/Partitions/09db8dab-f9/$/Replicas/74a84f0e-/$/Events"; + Requests[556] = new DefaultHttpContext(); + Requests[556].RequestServices = CreateServices(); + Requests[556].Request.Method = "GET"; + Requests[556].Request.Path = "/Faults/Services/dfc0e352-/$/GetPartitions/382113a9-a3/$/GetDataLossProgress"; + Requests[557] = new DefaultHttpContext(); + Requests[557].RequestServices = CreateServices(); + Requests[557].Request.Method = "GET"; + Requests[557].Request.Path = "/Faults/Services/7a15971e-/$/GetPartitions/fcf03752-db/$/GetQuorumLossProgress"; + Requests[558] = new DefaultHttpContext(); + Requests[558].RequestServices = CreateServices(); + Requests[558].Request.Method = "GET"; + Requests[558].Request.Path = "/Faults/Services/591d91bb-/$/GetPartitions/24f4ace0-c1/$/GetRestartProgress"; + Requests[559] = new DefaultHttpContext(); + Requests[559].RequestServices = CreateServices(); + Requests[559].Request.Method = "POST"; + Requests[559].Request.Path = "/Faults/Services/f6bf794c-/$/GetPartitions/103b439c-15/$/StartDataLoss"; + Requests[560] = new DefaultHttpContext(); + Requests[560].RequestServices = CreateServices(); + Requests[560].Request.Method = "POST"; + Requests[560].Request.Path = "/Faults/Services/3d855d31-/$/GetPartitions/919bd10f-8e/$/StartQuorumLoss"; + Requests[561] = new DefaultHttpContext(); + Requests[561].RequestServices = CreateServices(); + Requests[561].Request.Method = "POST"; + Requests[561].Request.Path = "/Faults/Services/17a02d30-/$/GetPartitions/0acaf73b-7f/$/StartRestart"; + Requests[562] = new DefaultHttpContext(); + Requests[562].RequestServices = CreateServices(); + Requests[562].Request.Method = "GET"; + Requests[562].Request.Path = "/apis/e756c"; + Requests[563] = new DefaultHttpContext(); + Requests[563].RequestServices = CreateServices(); + Requests[563].Request.Method = "PUT"; + Requests[563].Request.Path = "/apis/b334c"; + Requests[564] = new DefaultHttpContext(); + Requests[564].RequestServices = CreateServices(); + Requests[564].Request.Method = "PATCH"; + Requests[564].Request.Path = "/apis/dfe77"; + Requests[565] = new DefaultHttpContext(); + Requests[565].RequestServices = CreateServices(); + Requests[565].Request.Method = "DELETE"; + Requests[565].Request.Path = "/apis/10de7"; + Requests[566] = new DefaultHttpContext(); + Requests[566].RequestServices = CreateServices(); + Requests[566].Request.Method = "GET"; + Requests[566].Request.Path = "/Applications/d01cf355-de3e"; + Requests[567] = new DefaultHttpContext(); + Requests[567].RequestServices = CreateServices(); + Requests[567].Request.Method = "GET"; + Requests[567].Request.Path = "/ApplicationTypes/8a030075-94f5-4212-"; + Requests[568] = new DefaultHttpContext(); + Requests[568].RequestServices = CreateServices(); + Requests[568].Request.Method = "PUT"; + Requests[568].Request.Path = "/apps/702dc"; + Requests[569] = new DefaultHttpContext(); + Requests[569].RequestServices = CreateServices(); + Requests[569].Request.Method = "GET"; + Requests[569].Request.Path = "/apps/baa40"; + Requests[570] = new DefaultHttpContext(); + Requests[570].RequestServices = CreateServices(); + Requests[570].Request.Method = "DELETE"; + Requests[570].Request.Path = "/apps/ab5c5"; + Requests[571] = new DefaultHttpContext(); + Requests[571].RequestServices = CreateServices(); + Requests[571].Request.Method = "PUT"; + Requests[571].Request.Path = "/authorizationServers/9348f66"; + Requests[572] = new DefaultHttpContext(); + Requests[572].RequestServices = CreateServices(); + Requests[572].Request.Method = "PATCH"; + Requests[572].Request.Path = "/authorizationServers/90d8dd4"; + Requests[573] = new DefaultHttpContext(); + Requests[573].RequestServices = CreateServices(); + Requests[573].Request.Method = "DELETE"; + Requests[573].Request.Path = "/authorizationServers/e3d960b"; + Requests[574] = new DefaultHttpContext(); + Requests[574].RequestServices = CreateServices(); + Requests[574].Request.Method = "GET"; + Requests[574].Request.Path = "/authorizationServers/55ad8a2"; + Requests[575] = new DefaultHttpContext(); + Requests[575].RequestServices = CreateServices(); + Requests[575].Request.Method = "PUT"; + Requests[575].Request.Path = "/backends/f91018df-"; + Requests[576] = new DefaultHttpContext(); + Requests[576].RequestServices = CreateServices(); + Requests[576].Request.Method = "PATCH"; + Requests[576].Request.Path = "/backends/2ac52071-"; + Requests[577] = new DefaultHttpContext(); + Requests[577].RequestServices = CreateServices(); + Requests[577].Request.Method = "DELETE"; + Requests[577].Request.Path = "/backends/098081a8-"; + Requests[578] = new DefaultHttpContext(); + Requests[578].RequestServices = CreateServices(); + Requests[578].Request.Method = "GET"; + Requests[578].Request.Path = "/backends/2b9bd7f6-"; + Requests[579] = new DefaultHttpContext(); + Requests[579].RequestServices = CreateServices(); + Requests[579].Request.Method = "GET"; + Requests[579].Request.Path = "/certificates/9a7465ab-7844"; + Requests[580] = new DefaultHttpContext(); + Requests[580].RequestServices = CreateServices(); + Requests[580].Request.Method = "PUT"; + Requests[580].Request.Path = "/certificates/e7e484e1-5bc4"; + Requests[581] = new DefaultHttpContext(); + Requests[581].RequestServices = CreateServices(); + Requests[581].Request.Method = "DELETE"; + Requests[581].Request.Path = "/certificates/01d84a1c-6dc8-43"; + Requests[582] = new DefaultHttpContext(); + Requests[582].RequestServices = CreateServices(); + Requests[582].Request.Method = "GET"; + Requests[582].Request.Path = "/ComposeDeployments/ab5a79d4-11dc-"; + Requests[583] = new DefaultHttpContext(); + Requests[583].RequestServices = CreateServices(); + Requests[583].Request.Method = "GET"; + Requests[583].Request.Path = "/deletedcertificates/295eaff7-73c8-41"; + Requests[584] = new DefaultHttpContext(); + Requests[584].RequestServices = CreateServices(); + Requests[584].Request.Method = "DELETE"; + Requests[584].Request.Path = "/deletedcertificates/7f689dfe-f60a-48"; + Requests[585] = new DefaultHttpContext(); + Requests[585].RequestServices = CreateServices(); + Requests[585].Request.Method = "DELETE"; + Requests[585].Request.Path = "/deletedkeys/e160f5b8"; + Requests[586] = new DefaultHttpContext(); + Requests[586].RequestServices = CreateServices(); + Requests[586].Request.Method = "GET"; + Requests[586].Request.Path = "/deletedkeys/2ef92ad1"; + Requests[587] = new DefaultHttpContext(); + Requests[587].RequestServices = CreateServices(); + Requests[587].Request.Method = "DELETE"; + Requests[587].Request.Path = "/deletedsecrets/fb6c8877-4f"; + Requests[588] = new DefaultHttpContext(); + Requests[588].RequestServices = CreateServices(); + Requests[588].Request.Method = "GET"; + Requests[588].Request.Path = "/deletedsecrets/b3b8475d-bb"; + Requests[589] = new DefaultHttpContext(); + Requests[589].RequestServices = CreateServices(); + Requests[589].Request.Method = "DELETE"; + Requests[589].Request.Path = "/deletedstorage/7b7393ea-16f3-46f5-b"; + Requests[590] = new DefaultHttpContext(); + Requests[590].RequestServices = CreateServices(); + Requests[590].Request.Method = "GET"; + Requests[590].Request.Path = "/deletedstorage/8ea1f03b-c6f9-4bb1-a"; + Requests[591] = new DefaultHttpContext(); + Requests[591].RequestServices = CreateServices(); + Requests[591].Request.Method = "GET"; + Requests[591].Request.Path = "/domains/d7389d88"; + Requests[592] = new DefaultHttpContext(); + Requests[592].RequestServices = CreateServices(); + Requests[592].Request.Method = "PATCH"; + Requests[592].Request.Path = "/facelists/92239e42-0"; + Requests[593] = new DefaultHttpContext(); + Requests[593].RequestServices = CreateServices(); + Requests[593].Request.Method = "DELETE"; + Requests[593].Request.Path = "/facelists/9d11db61-d"; + Requests[594] = new DefaultHttpContext(); + Requests[594].RequestServices = CreateServices(); + Requests[594].Request.Method = "PUT"; + Requests[594].Request.Path = "/facelists/5b4960dd-b"; + Requests[595] = new DefaultHttpContext(); + Requests[595].RequestServices = CreateServices(); + Requests[595].Request.Method = "GET"; + Requests[595].Request.Path = "/facelists/1d354058-0"; + Requests[596] = new DefaultHttpContext(); + Requests[596].RequestServices = CreateServices(); + Requests[596].Request.Method = "PATCH"; + Requests[596].Request.Path = "/groups/9da11b3"; + Requests[597] = new DefaultHttpContext(); + Requests[597].RequestServices = CreateServices(); + Requests[597].Request.Method = "PUT"; + Requests[597].Request.Path = "/groups/d1b8799"; + Requests[598] = new DefaultHttpContext(); + Requests[598].RequestServices = CreateServices(); + Requests[598].Request.Method = "GET"; + Requests[598].Request.Path = "/groups/49be350"; + Requests[599] = new DefaultHttpContext(); + Requests[599].RequestServices = CreateServices(); + Requests[599].Request.Method = "DELETE"; + Requests[599].Request.Path = "/groups/fb6b877"; + Requests[600] = new DefaultHttpContext(); + Requests[600].RequestServices = CreateServices(); + Requests[600].Request.Method = "DELETE"; + Requests[600].Request.Path = "/identityProviders/143965ad-a020-42b5-b"; + Requests[601] = new DefaultHttpContext(); + Requests[601].RequestServices = CreateServices(); + Requests[601].Request.Method = "GET"; + Requests[601].Request.Path = "/identityProviders/6685c6a9-0a67-4316-9"; + Requests[602] = new DefaultHttpContext(); + Requests[602].RequestServices = CreateServices(); + Requests[602].Request.Method = "PUT"; + Requests[602].Request.Path = "/identityProviders/93d09a82-5ce6-40d5-a"; + Requests[603] = new DefaultHttpContext(); + Requests[603].RequestServices = CreateServices(); + Requests[603].Request.Method = "PATCH"; + Requests[603].Request.Path = "/identityProviders/9390249f-a954-4520-b"; + Requests[604] = new DefaultHttpContext(); + Requests[604].RequestServices = CreateServices(); + Requests[604].Request.Method = "PUT"; + Requests[604].Request.Path = "/ImageStore/1b8a55ea-c6"; + Requests[605] = new DefaultHttpContext(); + Requests[605].RequestServices = CreateServices(); + Requests[605].Request.Method = "DELETE"; + Requests[605].Request.Path = "/ImageStore/4174f25f-f8"; + Requests[606] = new DefaultHttpContext(); + Requests[606].RequestServices = CreateServices(); + Requests[606].Request.Method = "GET"; + Requests[606].Request.Path = "/ImageStore/ca25bd5f-16"; + Requests[607] = new DefaultHttpContext(); + Requests[607].RequestServices = CreateServices(); + Requests[607].Request.Method = "DELETE"; + Requests[607].Request.Path = "/jobs/c3b1d"; + Requests[608] = new DefaultHttpContext(); + Requests[608].RequestServices = CreateServices(); + Requests[608].Request.Method = "PATCH"; + Requests[608].Request.Path = "/jobs/6c07df0b-3f"; + Requests[609] = new DefaultHttpContext(); + Requests[609].RequestServices = CreateServices(); + Requests[609].Request.Method = "PUT"; + Requests[609].Request.Path = "/Jobs/dca95b9c-b6"; + Requests[610] = new DefaultHttpContext(); + Requests[610].RequestServices = CreateServices(); + Requests[610].Request.Method = "GET"; + Requests[610].Request.Path = "/Jobs/a8aeed8f-36"; + Requests[611] = new DefaultHttpContext(); + Requests[611].RequestServices = CreateServices(); + Requests[611].Request.Method = "HEAD"; + Requests[611].Request.Path = "/jobschedules/98088610-ab03"; + Requests[612] = new DefaultHttpContext(); + Requests[612].RequestServices = CreateServices(); + Requests[612].Request.Method = "PATCH"; + Requests[612].Request.Path = "/jobschedules/976ff427-1efd"; + Requests[613] = new DefaultHttpContext(); + Requests[613].RequestServices = CreateServices(); + Requests[613].Request.Method = "DELETE"; + Requests[613].Request.Path = "/jobschedules/545369bd-eb30"; + Requests[614] = new DefaultHttpContext(); + Requests[614].RequestServices = CreateServices(); + Requests[614].Request.Method = "GET"; + Requests[614].Request.Path = "/jobschedules/204a59a1-1923"; + Requests[615] = new DefaultHttpContext(); + Requests[615].RequestServices = CreateServices(); + Requests[615].Request.Method = "PUT"; + Requests[615].Request.Path = "/jobschedules/13627dab-4746"; + Requests[616] = new DefaultHttpContext(); + Requests[616].RequestServices = CreateServices(); + Requests[616].Request.Method = "PUT"; + Requests[616].Request.Path = "/keys/6f7cf5bc"; + Requests[617] = new DefaultHttpContext(); + Requests[617].RequestServices = CreateServices(); + Requests[617].Request.Method = "DELETE"; + Requests[617].Request.Path = "/keys/360505f3"; + Requests[618] = new DefaultHttpContext(); + Requests[618].RequestServices = CreateServices(); + Requests[618].Request.Method = "DELETE"; + Requests[618].Request.Path = "/loggers/9f4e352c"; + Requests[619] = new DefaultHttpContext(); + Requests[619].RequestServices = CreateServices(); + Requests[619].Request.Method = "PATCH"; + Requests[619].Request.Path = "/loggers/c31e7baa"; + Requests[620] = new DefaultHttpContext(); + Requests[620].RequestServices = CreateServices(); + Requests[620].Request.Method = "PUT"; + Requests[620].Request.Path = "/loggers/25c09157"; + Requests[621] = new DefaultHttpContext(); + Requests[621].RequestServices = CreateServices(); + Requests[621].Request.Method = "GET"; + Requests[621].Request.Path = "/loggers/7fd42fff"; + Requests[622] = new DefaultHttpContext(); + Requests[622].RequestServices = CreateServices(); + Requests[622].Request.Method = "GET"; + Requests[622].Request.Path = "/Names/9e7298"; + Requests[623] = new DefaultHttpContext(); + Requests[623].RequestServices = CreateServices(); + Requests[623].Request.Method = "DELETE"; + Requests[623].Request.Path = "/Names/bb401a"; + Requests[624] = new DefaultHttpContext(); + Requests[624].RequestServices = CreateServices(); + Requests[624].Request.Method = "GET"; + Requests[624].Request.Path = "/Nodes/31dde36d"; + Requests[625] = new DefaultHttpContext(); + Requests[625].RequestServices = CreateServices(); + Requests[625].Request.Method = "PATCH"; + Requests[625].Request.Path = "/openidConnectProviders/49ad4"; + Requests[626] = new DefaultHttpContext(); + Requests[626].RequestServices = CreateServices(); + Requests[626].Request.Method = "PUT"; + Requests[626].Request.Path = "/openidConnectProviders/40b65"; + Requests[627] = new DefaultHttpContext(); + Requests[627].RequestServices = CreateServices(); + Requests[627].Request.Method = "GET"; + Requests[627].Request.Path = "/openidConnectProviders/e689f"; + Requests[628] = new DefaultHttpContext(); + Requests[628].RequestServices = CreateServices(); + Requests[628].Request.Method = "DELETE"; + Requests[628].Request.Path = "/openidConnectProviders/a38ee"; + Requests[629] = new DefaultHttpContext(); + Requests[629].RequestServices = CreateServices(); + Requests[629].Request.Method = "GET"; + Requests[629].Request.Path = "/Partitions/b8a3da24-2f"; + Requests[630] = new DefaultHttpContext(); + Requests[630].RequestServices = CreateServices(); + Requests[630].Request.Method = "PUT"; + Requests[630].Request.Path = "/persongroups/3b5b98f6-6ea8"; + Requests[631] = new DefaultHttpContext(); + Requests[631].RequestServices = CreateServices(); + Requests[631].Request.Method = "GET"; + Requests[631].Request.Path = "/persongroups/e39bc3a1-8dd6"; + Requests[632] = new DefaultHttpContext(); + Requests[632].RequestServices = CreateServices(); + Requests[632].Request.Method = "PATCH"; + Requests[632].Request.Path = "/persongroups/a22998f2-c6a6"; + Requests[633] = new DefaultHttpContext(); + Requests[633].RequestServices = CreateServices(); + Requests[633].Request.Method = "DELETE"; + Requests[633].Request.Path = "/persongroups/ffe852f6-f7b7"; + Requests[634] = new DefaultHttpContext(); + Requests[634].RequestServices = CreateServices(); + Requests[634].Request.Method = "GET"; + Requests[634].Request.Path = "/pipelines/747ab2b2-4a4d-46"; + Requests[635] = new DefaultHttpContext(); + Requests[635].RequestServices = CreateServices(); + Requests[635].Request.Method = "GET"; + Requests[635].Request.Path = "/policies/38b62994"; + Requests[636] = new DefaultHttpContext(); + Requests[636].RequestServices = CreateServices(); + Requests[636].Request.Method = "PUT"; + Requests[636].Request.Path = "/policies/4acac6a3"; + Requests[637] = new DefaultHttpContext(); + Requests[637].RequestServices = CreateServices(); + Requests[637].Request.Method = "DELETE"; + Requests[637].Request.Path = "/policies/93c1a981"; + Requests[638] = new DefaultHttpContext(); + Requests[638].RequestServices = CreateServices(); + Requests[638].Request.Method = "PATCH"; + Requests[638].Request.Path = "/pools/41343e"; + Requests[639] = new DefaultHttpContext(); + Requests[639].RequestServices = CreateServices(); + Requests[639].Request.Method = "DELETE"; + Requests[639].Request.Path = "/pools/5cb259"; + Requests[640] = new DefaultHttpContext(); + Requests[640].RequestServices = CreateServices(); + Requests[640].Request.Method = "HEAD"; + Requests[640].Request.Path = "/pools/54e906"; + Requests[641] = new DefaultHttpContext(); + Requests[641].RequestServices = CreateServices(); + Requests[641].Request.Method = "GET"; + Requests[641].Request.Path = "/pools/02a477"; + Requests[642] = new DefaultHttpContext(); + Requests[642].RequestServices = CreateServices(); + Requests[642].Request.Method = "PATCH"; + Requests[642].Request.Path = "/products/04e18688-"; + Requests[643] = new DefaultHttpContext(); + Requests[643].RequestServices = CreateServices(); + Requests[643].Request.Method = "PUT"; + Requests[643].Request.Path = "/products/4a6f83a8-"; + Requests[644] = new DefaultHttpContext(); + Requests[644].RequestServices = CreateServices(); + Requests[644].Request.Method = "DELETE"; + Requests[644].Request.Path = "/products/151c8c1d-"; + Requests[645] = new DefaultHttpContext(); + Requests[645].RequestServices = CreateServices(); + Requests[645].Request.Method = "GET"; + Requests[645].Request.Path = "/products/db650c93-"; + Requests[646] = new DefaultHttpContext(); + Requests[646].RequestServices = CreateServices(); + Requests[646].Request.Method = "PATCH"; + Requests[646].Request.Path = "/projects/deb64cd7-"; + Requests[647] = new DefaultHttpContext(); + Requests[647].RequestServices = CreateServices(); + Requests[647].Request.Method = "DELETE"; + Requests[647].Request.Path = "/projects/b15afb9f-"; + Requests[648] = new DefaultHttpContext(); + Requests[648].RequestServices = CreateServices(); + Requests[648].Request.Method = "GET"; + Requests[648].Request.Path = "/projects/62294a47-"; + Requests[649] = new DefaultHttpContext(); + Requests[649].RequestServices = CreateServices(); + Requests[649].Request.Method = "DELETE"; + Requests[649].Request.Path = "/properties/a3d170"; + Requests[650] = new DefaultHttpContext(); + Requests[650].RequestServices = CreateServices(); + Requests[650].Request.Method = "PATCH"; + Requests[650].Request.Path = "/properties/e98a5a"; + Requests[651] = new DefaultHttpContext(); + Requests[651].RequestServices = CreateServices(); + Requests[651].Request.Method = "PUT"; + Requests[651].Request.Path = "/properties/24c08c"; + Requests[652] = new DefaultHttpContext(); + Requests[652].RequestServices = CreateServices(); + Requests[652].Request.Method = "GET"; + Requests[652].Request.Path = "/properties/5e00c2"; + Requests[653] = new DefaultHttpContext(); + Requests[653].RequestServices = CreateServices(); + Requests[653].Request.Method = "GET"; + Requests[653].Request.Path = "/quotas/7d3ce473-c988-4"; + Requests[654] = new DefaultHttpContext(); + Requests[654].RequestServices = CreateServices(); + Requests[654].Request.Method = "PATCH"; + Requests[654].Request.Path = "/quotas/938dec85-8431-4"; + Requests[655] = new DefaultHttpContext(); + Requests[655].RequestServices = CreateServices(); + Requests[655].Request.Method = "GET"; + Requests[655].Request.Path = "/recurrences/abe1aac9-5788-4511"; + Requests[656] = new DefaultHttpContext(); + Requests[656].RequestServices = CreateServices(); + Requests[656].Request.Method = "PUT"; + Requests[656].Request.Path = "/secrets/87427030-19"; + Requests[657] = new DefaultHttpContext(); + Requests[657].RequestServices = CreateServices(); + Requests[657].Request.Method = "DELETE"; + Requests[657].Request.Path = "/secrets/7d4c29d8-e1"; + Requests[658] = new DefaultHttpContext(); + Requests[658].RequestServices = CreateServices(); + Requests[658].Request.Method = "PATCH"; + Requests[658].Request.Path = "/storage/e7d81916-0a94-4b7a-a"; + Requests[659] = new DefaultHttpContext(); + Requests[659].RequestServices = CreateServices(); + Requests[659].Request.Method = "PUT"; + Requests[659].Request.Path = "/storage/22c1c3c9-6481-48f0-8"; + Requests[660] = new DefaultHttpContext(); + Requests[660].RequestServices = CreateServices(); + Requests[660].Request.Method = "GET"; + Requests[660].Request.Path = "/storage/14bb921d-3427-4430-8"; + Requests[661] = new DefaultHttpContext(); + Requests[661].RequestServices = CreateServices(); + Requests[661].Request.Method = "DELETE"; + Requests[661].Request.Path = "/storage/ef6b988c-729b-4d9e-9"; + Requests[662] = new DefaultHttpContext(); + Requests[662].RequestServices = CreateServices(); + Requests[662].Request.Method = "PATCH"; + Requests[662].Request.Path = "/subscriptions/378fd"; + Requests[663] = new DefaultHttpContext(); + Requests[663].RequestServices = CreateServices(); + Requests[663].Request.Method = "GET"; + Requests[663].Request.Path = "/subscriptions/44a282cc-266c-"; + Requests[664] = new DefaultHttpContext(); + Requests[664].RequestServices = CreateServices(); + Requests[664].Request.Method = "DELETE"; + Requests[664].Request.Path = "/subscriptions/cc4db31d-167f-"; + Requests[665] = new DefaultHttpContext(); + Requests[665].RequestServices = CreateServices(); + Requests[665].Request.Method = "PUT"; + Requests[665].Request.Path = "/subscriptions/c712c145-97c2-"; + Requests[666] = new DefaultHttpContext(); + Requests[666].RequestServices = CreateServices(); + Requests[666].Request.Method = "PATCH"; + Requests[666].Request.Path = "/templates/aa168cf5-ca7"; + Requests[667] = new DefaultHttpContext(); + Requests[667].RequestServices = CreateServices(); + Requests[667].Request.Method = "PUT"; + Requests[667].Request.Path = "/templates/fc259cba-5fb"; + Requests[668] = new DefaultHttpContext(); + Requests[668].RequestServices = CreateServices(); + Requests[668].Request.Method = "GET"; + Requests[668].Request.Path = "/templates/d9f6d1af-e49"; + Requests[669] = new DefaultHttpContext(); + Requests[669].RequestServices = CreateServices(); + Requests[669].Request.Method = "DELETE"; + Requests[669].Request.Path = "/templates/a05dc574-42b"; + Requests[670] = new DefaultHttpContext(); + Requests[670].RequestServices = CreateServices(); + Requests[670].Request.Method = "GET"; + Requests[670].Request.Path = "/tenant/afaa060b-d"; + Requests[671] = new DefaultHttpContext(); + Requests[671].RequestServices = CreateServices(); + Requests[671].Request.Method = "PATCH"; + Requests[671].Request.Path = "/tenant/78a72012-9"; + Requests[672] = new DefaultHttpContext(); + Requests[672].RequestServices = CreateServices(); + Requests[672].Request.Method = "GET"; + Requests[672].Request.Path = "/textOperations/94b18479-0e"; + Requests[673] = new DefaultHttpContext(); + Requests[673].RequestServices = CreateServices(); + Requests[673].Request.Method = "GET"; + Requests[673].Request.Path = "/users/124c9"; + Requests[674] = new DefaultHttpContext(); + Requests[674].RequestServices = CreateServices(); + Requests[674].Request.Method = "PUT"; + Requests[674].Request.Path = "/users/5c30c"; + Requests[675] = new DefaultHttpContext(); + Requests[675].RequestServices = CreateServices(); + Requests[675].Request.Method = "PATCH"; + Requests[675].Request.Path = "/users/672e7"; + Requests[676] = new DefaultHttpContext(); + Requests[676].RequestServices = CreateServices(); + Requests[676].Request.Method = "DELETE"; + Requests[676].Request.Path = "/users/313a8"; + Requests[677] = new DefaultHttpContext(); + Requests[677].RequestServices = CreateServices(); + Requests[677].Request.Method = "PUT"; + Requests[677].Request.Path = "/WebHdfsExt/6080c"; + Requests[678] = new DefaultHttpContext(); + Requests[678].RequestServices = CreateServices(); + Requests[678].Request.Method = "POST"; + Requests[678].Request.Path = "/WebHdfsExt/18cd6"; + Requests[679] = new DefaultHttpContext(); + Requests[679].RequestServices = CreateServices(); + Requests[679].Request.Method = "GET"; + Requests[679].Request.Path = "/apis/e3171/operations"; + Requests[680] = new DefaultHttpContext(); + Requests[680].RequestServices = CreateServices(); + Requests[680].Request.Method = "GET"; + Requests[680].Request.Path = "/apis/6aa38/policies"; + Requests[681] = new DefaultHttpContext(); + Requests[681].RequestServices = CreateServices(); + Requests[681].Request.Method = "GET"; + Requests[681].Request.Path = "/apis/1c7fe/products"; + Requests[682] = new DefaultHttpContext(); + Requests[682].RequestServices = CreateServices(); + Requests[682].Request.Method = "GET"; + Requests[682].Request.Path = "/apis/79bc8/schemas"; + Requests[683] = new DefaultHttpContext(); + Requests[683].RequestServices = CreateServices(); + Requests[683].Request.Method = "GET"; + Requests[683].Request.Path = "/apps/b1aaf/endpoints"; + Requests[684] = new DefaultHttpContext(); + Requests[684].RequestServices = CreateServices(); + Requests[684].Request.Method = "POST"; + Requests[684].Request.Path = "/apps/ea29e/metrics"; + Requests[685] = new DefaultHttpContext(); + Requests[685].RequestServices = CreateServices(); + Requests[685].Request.Method = "DELETE"; + Requests[685].Request.Path = "/apps/bf053/permissions"; + Requests[686] = new DefaultHttpContext(); + Requests[686].RequestServices = CreateServices(); + Requests[686].Request.Method = "GET"; + Requests[686].Request.Path = "/apps/77c6e/permissions"; + Requests[687] = new DefaultHttpContext(); + Requests[687].RequestServices = CreateServices(); + Requests[687].Request.Method = "POST"; + Requests[687].Request.Path = "/apps/d8164/permissions"; + Requests[688] = new DefaultHttpContext(); + Requests[688].RequestServices = CreateServices(); + Requests[688].Request.Method = "PUT"; + Requests[688].Request.Path = "/apps/75942/permissions"; + Requests[689] = new DefaultHttpContext(); + Requests[689].RequestServices = CreateServices(); + Requests[689].Request.Method = "POST"; + Requests[689].Request.Path = "/apps/563cc/publish"; + Requests[690] = new DefaultHttpContext(); + Requests[690].RequestServices = CreateServices(); + Requests[690].Request.Method = "GET"; + Requests[690].Request.Path = "/apps/e781b/publishsettings"; + Requests[691] = new DefaultHttpContext(); + Requests[691].RequestServices = CreateServices(); + Requests[691].Request.Method = "PUT"; + Requests[691].Request.Path = "/apps/25001/publishsettings"; + Requests[692] = new DefaultHttpContext(); + Requests[692].RequestServices = CreateServices(); + Requests[692].Request.Method = "GET"; + Requests[692].Request.Path = "/apps/63247/query"; + Requests[693] = new DefaultHttpContext(); + Requests[693].RequestServices = CreateServices(); + Requests[693].Request.Method = "POST"; + Requests[693].Request.Path = "/apps/d531e/query"; + Requests[694] = new DefaultHttpContext(); + Requests[694].RequestServices = CreateServices(); + Requests[694].Request.Method = "GET"; + Requests[694].Request.Path = "/apps/8d2d6/querylogs"; + Requests[695] = new DefaultHttpContext(); + Requests[695].RequestServices = CreateServices(); + Requests[695].Request.Method = "GET"; + Requests[695].Request.Path = "/apps/f41e6/settings"; + Requests[696] = new DefaultHttpContext(); + Requests[696].RequestServices = CreateServices(); + Requests[696].Request.Method = "PUT"; + Requests[696].Request.Path = "/apps/448a9/settings"; + Requests[697] = new DefaultHttpContext(); + Requests[697].RequestServices = CreateServices(); + Requests[697].Request.Method = "GET"; + Requests[697].Request.Path = "/apps/a23fb/versions"; + Requests[698] = new DefaultHttpContext(); + Requests[698].RequestServices = CreateServices(); + Requests[698].Request.Method = "POST"; + Requests[698].Request.Path = "/certificates/73f7dc2c-b795-41/create"; + Requests[699] = new DefaultHttpContext(); + Requests[699].RequestServices = CreateServices(); + Requests[699].Request.Method = "POST"; + Requests[699].Request.Path = "/certificates/e30d8a66-04bf-46/import"; + Requests[700] = new DefaultHttpContext(); + Requests[700].RequestServices = CreateServices(); + Requests[700].Request.Method = "PATCH"; + Requests[700].Request.Path = "/certificates/eb0cb40f-656f-4b/pending"; + Requests[701] = new DefaultHttpContext(); + Requests[701].RequestServices = CreateServices(); + Requests[701].Request.Method = "GET"; + Requests[701].Request.Path = "/certificates/237df1b3-a184-40/pending"; + Requests[702] = new DefaultHttpContext(); + Requests[702].RequestServices = CreateServices(); + Requests[702].Request.Method = "DELETE"; + Requests[702].Request.Path = "/certificates/cfe67a33-b976-43/pending"; + Requests[703] = new DefaultHttpContext(); + Requests[703].RequestServices = CreateServices(); + Requests[703].Request.Method = "GET"; + Requests[703].Request.Path = "/certificates/c2d2f982-ccfe-4b/policy"; + Requests[704] = new DefaultHttpContext(); + Requests[704].RequestServices = CreateServices(); + Requests[704].Request.Method = "PATCH"; + Requests[704].Request.Path = "/certificates/4191102f-590c-4b/policy"; + Requests[705] = new DefaultHttpContext(); + Requests[705].RequestServices = CreateServices(); + Requests[705].Request.Method = "GET"; + Requests[705].Request.Path = "/certificates/9be5b82a-7926-49/versions"; + Requests[706] = new DefaultHttpContext(); + Requests[706].RequestServices = CreateServices(); + Requests[706].Request.Method = "GET"; + Requests[706].Request.Path = "/delegatedProviders/6614dbae-6979-4d22-/offers"; + Requests[707] = new DefaultHttpContext(); + Requests[707].RequestServices = CreateServices(); + Requests[707].Request.Method = "POST"; + Requests[707].Request.Path = "/deletedcertificates/d5aaf3fe-f10b-44/recover"; + Requests[708] = new DefaultHttpContext(); + Requests[708].RequestServices = CreateServices(); + Requests[708].Request.Method = "POST"; + Requests[708].Request.Path = "/deletedkeys/2e3a3349/recover"; + Requests[709] = new DefaultHttpContext(); + Requests[709].RequestServices = CreateServices(); + Requests[709].Request.Method = "POST"; + Requests[709].Request.Path = "/deletedsecrets/c077070c-1f/recover"; + Requests[710] = new DefaultHttpContext(); + Requests[710].RequestServices = CreateServices(); + Requests[710].Request.Method = "POST"; + Requests[710].Request.Path = "/deletedstorage/321afa37-fb50-46cf-8/recover"; + Requests[711] = new DefaultHttpContext(); + Requests[711].RequestServices = CreateServices(); + Requests[711].Request.Method = "GET"; + Requests[711].Request.Path = "/deletedstorage/0c6b120f-9752-4078-9/sas"; + Requests[712] = new DefaultHttpContext(); + Requests[712].RequestServices = CreateServices(); + Requests[712].Request.Method = "POST"; + Requests[712].Request.Path = "/facelists/15bacb4c-e/persistedFaces"; + Requests[713] = new DefaultHttpContext(); + Requests[713].RequestServices = CreateServices(); + Requests[713].Request.Method = "GET"; + Requests[713].Request.Path = "/groups/2fe853a/users"; + Requests[714] = new DefaultHttpContext(); + Requests[714].RequestServices = CreateServices(); + Requests[714].Request.Method = "POST"; + Requests[714].Request.Path = "/jobs/bf5ca/addtaskcollection"; + Requests[715] = new DefaultHttpContext(); + Requests[715].RequestServices = CreateServices(); + Requests[715].Request.Method = "POST"; + Requests[715].Request.Path = "/jobs/108cc/disable"; + Requests[716] = new DefaultHttpContext(); + Requests[716].RequestServices = CreateServices(); + Requests[716].Request.Method = "POST"; + Requests[716].Request.Path = "/jobs/d2784/enable"; + Requests[717] = new DefaultHttpContext(); + Requests[717].RequestServices = CreateServices(); + Requests[717].Request.Method = "GET"; + Requests[717].Request.Path = "/jobs/def23/jobpreparationandreleasetaskstatus"; + Requests[718] = new DefaultHttpContext(); + Requests[718].RequestServices = CreateServices(); + Requests[718].Request.Method = "GET"; + Requests[718].Request.Path = "/jobs/bb64c/taskcounts"; + Requests[719] = new DefaultHttpContext(); + Requests[719].RequestServices = CreateServices(); + Requests[719].Request.Method = "GET"; + Requests[719].Request.Path = "/jobs/0b01e/tasks"; + Requests[720] = new DefaultHttpContext(); + Requests[720].RequestServices = CreateServices(); + Requests[720].Request.Method = "POST"; + Requests[720].Request.Path = "/jobs/8622c/tasks"; + Requests[721] = new DefaultHttpContext(); + Requests[721].RequestServices = CreateServices(); + Requests[721].Request.Method = "POST"; + Requests[721].Request.Path = "/jobs/d8ee0/terminate"; + Requests[722] = new DefaultHttpContext(); + Requests[722].RequestServices = CreateServices(); + Requests[722].Request.Method = "POST"; + Requests[722].Request.Path = "/Jobs/cb3b3382-ab/CancelJob"; + Requests[723] = new DefaultHttpContext(); + Requests[723].RequestServices = CreateServices(); + Requests[723].Request.Method = "POST"; + Requests[723].Request.Path = "/Jobs/c513a8c8-54/GetDebugDataPath"; + Requests[724] = new DefaultHttpContext(); + Requests[724].RequestServices = CreateServices(); + Requests[724].Request.Method = "GET"; + Requests[724].Request.Path = "/Jobs/d236fedb-dd/GetDebugDataPath"; + Requests[725] = new DefaultHttpContext(); + Requests[725].RequestServices = CreateServices(); + Requests[725].Request.Method = "GET"; + Requests[725].Request.Path = "/Jobs/3ca9e0af-cf/GetStatistics"; + Requests[726] = new DefaultHttpContext(); + Requests[726].RequestServices = CreateServices(); + Requests[726].Request.Method = "POST"; + Requests[726].Request.Path = "/Jobs/38018ea1-87/GetStatistics"; + Requests[727] = new DefaultHttpContext(); + Requests[727].RequestServices = CreateServices(); + Requests[727].Request.Method = "POST"; + Requests[727].Request.Path = "/jobs/c944b14d-c3/YieldJob"; + Requests[728] = new DefaultHttpContext(); + Requests[728].RequestServices = CreateServices(); + Requests[728].Request.Method = "POST"; + Requests[728].Request.Path = "/jobschedules/fe58ed1d-c3e5/disable"; + Requests[729] = new DefaultHttpContext(); + Requests[729].RequestServices = CreateServices(); + Requests[729].Request.Method = "POST"; + Requests[729].Request.Path = "/jobschedules/57d826ab-8633/enable"; + Requests[730] = new DefaultHttpContext(); + Requests[730].RequestServices = CreateServices(); + Requests[730].Request.Method = "GET"; + Requests[730].Request.Path = "/jobschedules/76b32a25-436a/jobs"; + Requests[731] = new DefaultHttpContext(); + Requests[731].RequestServices = CreateServices(); + Requests[731].Request.Method = "POST"; + Requests[731].Request.Path = "/jobschedules/b9e0b514-24cc/terminate"; + Requests[732] = new DefaultHttpContext(); + Requests[732].RequestServices = CreateServices(); + Requests[732].Request.Method = "POST"; + Requests[732].Request.Path = "/keys/d9e6967f/backup"; + Requests[733] = new DefaultHttpContext(); + Requests[733].RequestServices = CreateServices(); + Requests[733].Request.Method = "POST"; + Requests[733].Request.Path = "/keys/4b289dfe/create"; + Requests[734] = new DefaultHttpContext(); + Requests[734].RequestServices = CreateServices(); + Requests[734].Request.Method = "GET"; + Requests[734].Request.Path = "/keys/b693e2aa/versions"; + Requests[735] = new DefaultHttpContext(); + Requests[735].RequestServices = CreateServices(); + Requests[735].Request.Method = "POST"; + Requests[735].Request.Path = "/models/b6df1/analyze"; + Requests[736] = new DefaultHttpContext(); + Requests[736].RequestServices = CreateServices(); + Requests[736].Request.Method = "POST"; + Requests[736].Request.Path = "/persongroups/296bb7b2-ddfa/persons"; + Requests[737] = new DefaultHttpContext(); + Requests[737].RequestServices = CreateServices(); + Requests[737].Request.Method = "GET"; + Requests[737].Request.Path = "/persongroups/28a03393-b009/persons"; + Requests[738] = new DefaultHttpContext(); + Requests[738].RequestServices = CreateServices(); + Requests[738].Request.Method = "POST"; + Requests[738].Request.Path = "/persongroups/f37cb2c6-a95f/train"; + Requests[739] = new DefaultHttpContext(); + Requests[739].RequestServices = CreateServices(); + Requests[739].Request.Method = "GET"; + Requests[739].Request.Path = "/persongroups/60f3404c-da85/training"; + Requests[740] = new DefaultHttpContext(); + Requests[740].RequestServices = CreateServices(); + Requests[740].Request.Method = "POST"; + Requests[740].Request.Path = "/pools/5540fb/disableautoscale"; + Requests[741] = new DefaultHttpContext(); + Requests[741].RequestServices = CreateServices(); + Requests[741].Request.Method = "POST"; + Requests[741].Request.Path = "/pools/3f0e49/enableautoscale"; + Requests[742] = new DefaultHttpContext(); + Requests[742].RequestServices = CreateServices(); + Requests[742].Request.Method = "POST"; + Requests[742].Request.Path = "/pools/605f58/evaluateautoscale"; + Requests[743] = new DefaultHttpContext(); + Requests[743].RequestServices = CreateServices(); + Requests[743].Request.Method = "GET"; + Requests[743].Request.Path = "/pools/cabbad/nodes"; + Requests[744] = new DefaultHttpContext(); + Requests[744].RequestServices = CreateServices(); + Requests[744].Request.Method = "POST"; + Requests[744].Request.Path = "/pools/437d57/removenodes"; + Requests[745] = new DefaultHttpContext(); + Requests[745].RequestServices = CreateServices(); + Requests[745].Request.Method = "POST"; + Requests[745].Request.Path = "/pools/b7da64/resize"; + Requests[746] = new DefaultHttpContext(); + Requests[746].RequestServices = CreateServices(); + Requests[746].Request.Method = "POST"; + Requests[746].Request.Path = "/pools/153c29/stopresize"; + Requests[747] = new DefaultHttpContext(); + Requests[747].RequestServices = CreateServices(); + Requests[747].Request.Method = "POST"; + Requests[747].Request.Path = "/pools/e7eb02/updateproperties"; + Requests[748] = new DefaultHttpContext(); + Requests[748].RequestServices = CreateServices(); + Requests[748].Request.Method = "POST"; + Requests[748].Request.Path = "/pools/b0c5d9/upgradeos"; + Requests[749] = new DefaultHttpContext(); + Requests[749].RequestServices = CreateServices(); + Requests[749].Request.Method = "GET"; + Requests[749].Request.Path = "/products/74df056b-/apis"; + Requests[750] = new DefaultHttpContext(); + Requests[750].RequestServices = CreateServices(); + Requests[750].Request.Method = "GET"; + Requests[750].Request.Path = "/products/5973bb3a-/groups"; + Requests[751] = new DefaultHttpContext(); + Requests[751].RequestServices = CreateServices(); + Requests[751].Request.Method = "GET"; + Requests[751].Request.Path = "/products/e7a08ee0-/policies"; + Requests[752] = new DefaultHttpContext(); + Requests[752].RequestServices = CreateServices(); + Requests[752].Request.Method = "GET"; + Requests[752].Request.Path = "/products/1076e9de-/subscriptions"; + Requests[753] = new DefaultHttpContext(); + Requests[753].RequestServices = CreateServices(); + Requests[753].Request.Method = "DELETE"; + Requests[753].Request.Path = "/projects/82395036-/images"; + Requests[754] = new DefaultHttpContext(); + Requests[754].RequestServices = CreateServices(); + Requests[754].Request.Method = "POST"; + Requests[754].Request.Path = "/projects/ebc90bbe-/images"; + Requests[755] = new DefaultHttpContext(); + Requests[755].RequestServices = CreateServices(); + Requests[755].Request.Method = "GET"; + Requests[755].Request.Path = "/projects/0bf730b1-/iterations"; + Requests[756] = new DefaultHttpContext(); + Requests[756].RequestServices = CreateServices(); + Requests[756].Request.Method = "DELETE"; + Requests[756].Request.Path = "/projects/179f45cb-/predictions"; + Requests[757] = new DefaultHttpContext(); + Requests[757].RequestServices = CreateServices(); + Requests[757].Request.Method = "POST"; + Requests[757].Request.Path = "/projects/ccf484e1-/tags"; + Requests[758] = new DefaultHttpContext(); + Requests[758].RequestServices = CreateServices(); + Requests[758].Request.Method = "GET"; + Requests[758].Request.Path = "/projects/f5d13230-/tags"; + Requests[759] = new DefaultHttpContext(); + Requests[759].RequestServices = CreateServices(); + Requests[759].Request.Method = "POST"; + Requests[759].Request.Path = "/projects/7a10a329-/train"; + Requests[760] = new DefaultHttpContext(); + Requests[760].RequestServices = CreateServices(); + Requests[760].Request.Method = "GET"; + Requests[760].Request.Path = "/providers/db04db2f-edc2-4b3e-9919-9/operations"; + Requests[761] = new DefaultHttpContext(); + Requests[761].RequestServices = CreateServices(); + Requests[761].Request.Method = "POST"; + Requests[761].Request.Path = "/secrets/3e4ce1c3-6c/backup"; + Requests[762] = new DefaultHttpContext(); + Requests[762].RequestServices = CreateServices(); + Requests[762].Request.Method = "GET"; + Requests[762].Request.Path = "/secrets/facc0061-39/versions"; + Requests[763] = new DefaultHttpContext(); + Requests[763].RequestServices = CreateServices(); + Requests[763].Request.Method = "POST"; + Requests[763].Request.Path = "/storage/cd72e4d4-c6ff-4c46-b/backup"; + Requests[764] = new DefaultHttpContext(); + Requests[764].RequestServices = CreateServices(); + Requests[764].Request.Method = "POST"; + Requests[764].Request.Path = "/storage/fc43a107-86fb-4a89-8/regeneratekey"; + Requests[765] = new DefaultHttpContext(); + Requests[765].RequestServices = CreateServices(); + Requests[765].Request.Method = "GET"; + Requests[765].Request.Path = "/storage/0388fbaa-2bde-4a86-a/sas"; + Requests[766] = new DefaultHttpContext(); + Requests[766].RequestServices = CreateServices(); + Requests[766].Request.Method = "POST"; + Requests[766].Request.Path = "/subscriptions/8b424/regeneratePrimaryKey"; + Requests[767] = new DefaultHttpContext(); + Requests[767].RequestServices = CreateServices(); + Requests[767].Request.Method = "POST"; + Requests[767].Request.Path = "/subscriptions/ee250/regenerateSecondaryKey"; + Requests[768] = new DefaultHttpContext(); + Requests[768].RequestServices = CreateServices(); + Requests[768].Request.Method = "GET"; + Requests[768].Request.Path = "/subscriptions/ac66aaa2-7800-/locations"; + Requests[769] = new DefaultHttpContext(); + Requests[769].RequestServices = CreateServices(); + Requests[769].Request.Method = "GET"; + Requests[769].Request.Path = "/subscriptions/5caff573-482e-/providers"; + Requests[770] = new DefaultHttpContext(); + Requests[770].RequestServices = CreateServices(); + Requests[770].Request.Method = "GET"; + Requests[770].Request.Path = "/subscriptions/bf658f64-680e-/resourcegroups"; + Requests[771] = new DefaultHttpContext(); + Requests[771].RequestServices = CreateServices(); + Requests[771].Request.Method = "GET"; + Requests[771].Request.Path = "/subscriptions/19df9045-6ab6-/resources"; + Requests[772] = new DefaultHttpContext(); + Requests[772].RequestServices = CreateServices(); + Requests[772].Request.Method = "GET"; + Requests[772].Request.Path = "/subscriptions/b3d57c87-2819-/tagNames"; + Requests[773] = new DefaultHttpContext(); + Requests[773].RequestServices = CreateServices(); + Requests[773].Request.Method = "GET"; + Requests[773].Request.Path = "/tenant/10070398-4/git"; + Requests[774] = new DefaultHttpContext(); + Requests[774].RequestServices = CreateServices(); + Requests[774].Request.Method = "POST"; + Requests[774].Request.Path = "/tenant/4af7dd60-b/regeneratePrimaryKey"; + Requests[775] = new DefaultHttpContext(); + Requests[775].RequestServices = CreateServices(); + Requests[775].Request.Method = "POST"; + Requests[775].Request.Path = "/tenant/c56b905a-f/regenerateSecondaryKey"; + Requests[776] = new DefaultHttpContext(); + Requests[776].RequestServices = CreateServices(); + Requests[776].Request.Method = "POST"; + Requests[776].Request.Path = "/tenant/ce51577a-bfea-457/deploy"; + Requests[777] = new DefaultHttpContext(); + Requests[777].RequestServices = CreateServices(); + Requests[777].Request.Method = "POST"; + Requests[777].Request.Path = "/tenant/980d38d9-c59f-4f7/save"; + Requests[778] = new DefaultHttpContext(); + Requests[778].RequestServices = CreateServices(); + Requests[778].Request.Method = "GET"; + Requests[778].Request.Path = "/tenant/72062f52-d924-4a6/syncState"; + Requests[779] = new DefaultHttpContext(); + Requests[779].RequestServices = CreateServices(); + Requests[779].Request.Method = "POST"; + Requests[779].Request.Path = "/tenant/595749c6-1078-46f/validate"; + Requests[780] = new DefaultHttpContext(); + Requests[780].RequestServices = CreateServices(); + Requests[780].Request.Method = "POST"; + Requests[780].Request.Path = "/users/73ba5/generateSsoUrl"; + Requests[781] = new DefaultHttpContext(); + Requests[781].RequestServices = CreateServices(); + Requests[781].Request.Method = "GET"; + Requests[781].Request.Path = "/users/7cf5b/groups"; + Requests[782] = new DefaultHttpContext(); + Requests[782].RequestServices = CreateServices(); + Requests[782].Request.Method = "GET"; + Requests[782].Request.Path = "/users/4b8c5/identities"; + Requests[783] = new DefaultHttpContext(); + Requests[783].RequestServices = CreateServices(); + Requests[783].Request.Method = "GET"; + Requests[783].Request.Path = "/users/0b329/subscriptions"; + Requests[784] = new DefaultHttpContext(); + Requests[784].RequestServices = CreateServices(); + Requests[784].Request.Method = "POST"; + Requests[784].Request.Path = "/users/f0b88/token"; + Requests[785] = new DefaultHttpContext(); + Requests[785].RequestServices = CreateServices(); + Requests[785].Request.Method = "GET"; + Requests[785].Request.Path = "/workspaces/a910ff67-17/query"; + Requests[786] = new DefaultHttpContext(); + Requests[786].RequestServices = CreateServices(); + Requests[786].Request.Method = "POST"; + Requests[786].Request.Path = "/workspaces/2e3164c4-7b/query"; + Requests[787] = new DefaultHttpContext(); + Requests[787].RequestServices = CreateServices(); + Requests[787].Request.Method = "POST"; + Requests[787].Request.Path = "/Applications/f1e30f3d-c543/$/Delete"; + Requests[788] = new DefaultHttpContext(); + Requests[788].RequestServices = CreateServices(); + Requests[788].Request.Method = "POST"; + Requests[788].Request.Path = "/Applications/fda1284b-8557/$/DisableBackup"; + Requests[789] = new DefaultHttpContext(); + Requests[789].RequestServices = CreateServices(); + Requests[789].Request.Method = "POST"; + Requests[789].Request.Path = "/Applications/b51cffb8-39bf/$/EnableBackup"; + Requests[790] = new DefaultHttpContext(); + Requests[790].RequestServices = CreateServices(); + Requests[790].Request.Method = "GET"; + Requests[790].Request.Path = "/Applications/f320177c-841c/$/GetBackupConfigurationInfo"; + Requests[791] = new DefaultHttpContext(); + Requests[791].RequestServices = CreateServices(); + Requests[791].Request.Method = "GET"; + Requests[791].Request.Path = "/Applications/074d2167-bb2c/$/GetBackups"; + Requests[792] = new DefaultHttpContext(); + Requests[792].RequestServices = CreateServices(); + Requests[792].Request.Method = "POST"; + Requests[792].Request.Path = "/Applications/bc7c9b6b-f7a2/$/GetHealth"; + Requests[793] = new DefaultHttpContext(); + Requests[793].RequestServices = CreateServices(); + Requests[793].Request.Method = "GET"; + Requests[793].Request.Path = "/Applications/0046ea84-76ba/$/GetHealth"; + Requests[794] = new DefaultHttpContext(); + Requests[794].RequestServices = CreateServices(); + Requests[794].Request.Method = "GET"; + Requests[794].Request.Path = "/Applications/d036ffbd-dddd/$/GetLoadInformation"; + Requests[795] = new DefaultHttpContext(); + Requests[795].RequestServices = CreateServices(); + Requests[795].Request.Method = "GET"; + Requests[795].Request.Path = "/Applications/b5abeb63-8542/$/GetServices"; + Requests[796] = new DefaultHttpContext(); + Requests[796].RequestServices = CreateServices(); + Requests[796].Request.Method = "GET"; + Requests[796].Request.Path = "/Applications/97e38602-224e/$/GetUpgradeProgress"; + Requests[797] = new DefaultHttpContext(); + Requests[797].RequestServices = CreateServices(); + Requests[797].Request.Method = "POST"; + Requests[797].Request.Path = "/Applications/71100aa3-14a7/$/MoveToNextUpgradeDomain"; + Requests[798] = new DefaultHttpContext(); + Requests[798].RequestServices = CreateServices(); + Requests[798].Request.Method = "POST"; + Requests[798].Request.Path = "/Applications/a5e6c630-e386/$/ReportHealth"; + Requests[799] = new DefaultHttpContext(); + Requests[799].RequestServices = CreateServices(); + Requests[799].Request.Method = "POST"; + Requests[799].Request.Path = "/Applications/d81e0ffb-8cf9/$/ResumeBackup"; + Requests[800] = new DefaultHttpContext(); + Requests[800].RequestServices = CreateServices(); + Requests[800].Request.Method = "POST"; + Requests[800].Request.Path = "/Applications/c312a7cb-995b/$/RollbackUpgrade"; + Requests[801] = new DefaultHttpContext(); + Requests[801].RequestServices = CreateServices(); + Requests[801].Request.Method = "POST"; + Requests[801].Request.Path = "/Applications/fff9b2df-589c/$/SuspendBackup"; + Requests[802] = new DefaultHttpContext(); + Requests[802].RequestServices = CreateServices(); + Requests[802].Request.Method = "POST"; + Requests[802].Request.Path = "/Applications/71399a19-599d/$/UpdateUpgrade"; + Requests[803] = new DefaultHttpContext(); + Requests[803].RequestServices = CreateServices(); + Requests[803].Request.Method = "POST"; + Requests[803].Request.Path = "/Applications/147962f8-307c/$/Upgrade"; + Requests[804] = new DefaultHttpContext(); + Requests[804].RequestServices = CreateServices(); + Requests[804].Request.Method = "POST"; + Requests[804].Request.Path = "/Applications/99de231c-c0c4-4/$/MoveNextUpgradeDomain"; + Requests[805] = new DefaultHttpContext(); + Requests[805].RequestServices = CreateServices(); + Requests[805].Request.Method = "GET"; + Requests[805].Request.Path = "/ApplicationTypes/b4ae891c-13f7-4b8e-/$/GetApplicationManifest"; + Requests[806] = new DefaultHttpContext(); + Requests[806].RequestServices = CreateServices(); + Requests[806].Request.Method = "GET"; + Requests[806].Request.Path = "/ApplicationTypes/1183e49e-75f1-4704-/$/GetServiceManifest"; + Requests[807] = new DefaultHttpContext(); + Requests[807].RequestServices = CreateServices(); + Requests[807].Request.Method = "GET"; + Requests[807].Request.Path = "/ApplicationTypes/e3d000c2-ca7f-4d99-/$/GetServiceTypes"; + Requests[808] = new DefaultHttpContext(); + Requests[808].RequestServices = CreateServices(); + Requests[808].Request.Method = "POST"; + Requests[808].Request.Path = "/ApplicationTypes/198b12cb-3ad6-4139-/$/Unprovision"; + Requests[809] = new DefaultHttpContext(); + Requests[809].RequestServices = CreateServices(); + Requests[809].Request.Method = "GET"; + Requests[809].Request.Path = "/apps/884cb/events/$metadata"; + Requests[810] = new DefaultHttpContext(); + Requests[810].RequestServices = CreateServices(); + Requests[810].Request.Method = "GET"; + Requests[810].Request.Path = "/apps/39e3d/metrics/metadata"; + Requests[811] = new DefaultHttpContext(); + Requests[811].RequestServices = CreateServices(); + Requests[811].Request.Method = "GET"; + Requests[811].Request.Path = "/apps/202b8/query/schema"; + Requests[812] = new DefaultHttpContext(); + Requests[812].RequestServices = CreateServices(); + Requests[812].Request.Method = "POST"; + Requests[812].Request.Path = "/apps/49d08/versions/import"; + Requests[813] = new DefaultHttpContext(); + Requests[813].RequestServices = CreateServices(); + Requests[813].Request.Method = "POST"; + Requests[813].Request.Path = "/certificates/e2e0e6c2-b88b-42/pending/merge"; + Requests[814] = new DefaultHttpContext(); + Requests[814].RequestServices = CreateServices(); + Requests[814].Request.Method = "POST"; + Requests[814].Request.Path = "/ComposeDeployments/cd43ccfd-e4dd-/$/Delete"; + Requests[815] = new DefaultHttpContext(); + Requests[815].RequestServices = CreateServices(); + Requests[815].Request.Method = "GET"; + Requests[815].Request.Path = "/ComposeDeployments/83ea37bc-fc16-/$/GetUpgradeProgress"; + Requests[816] = new DefaultHttpContext(); + Requests[816].RequestServices = CreateServices(); + Requests[816].Request.Method = "POST"; + Requests[816].Request.Path = "/ComposeDeployments/50c170fa-c9e8-/$/Upgrade"; + Requests[817] = new DefaultHttpContext(); + Requests[817].RequestServices = CreateServices(); + Requests[817].Request.Method = "GET"; + Requests[817].Request.Path = "/ImageStore/7cbb81ae-2d/$/GetUploadSession"; + Requests[818] = new DefaultHttpContext(); + Requests[818].RequestServices = CreateServices(); + Requests[818].Request.Method = "PUT"; + Requests[818].Request.Path = "/ImageStore/daf409a0-e0/$/UploadChunk"; + Requests[819] = new DefaultHttpContext(); + Requests[819].RequestServices = CreateServices(); + Requests[819].Request.Method = "GET"; + Requests[819].Request.Path = "/Names/6492ae/$/GetProperties"; + Requests[820] = new DefaultHttpContext(); + Requests[820].RequestServices = CreateServices(); + Requests[820].Request.Method = "DELETE"; + Requests[820].Request.Path = "/Names/b0efb1/$/GetProperty"; + Requests[821] = new DefaultHttpContext(); + Requests[821].RequestServices = CreateServices(); + Requests[821].Request.Method = "PUT"; + Requests[821].Request.Path = "/Names/904669/$/GetProperty"; + Requests[822] = new DefaultHttpContext(); + Requests[822].RequestServices = CreateServices(); + Requests[822].Request.Method = "GET"; + Requests[822].Request.Path = "/Names/861b3d/$/GetProperty"; + Requests[823] = new DefaultHttpContext(); + Requests[823].RequestServices = CreateServices(); + Requests[823].Request.Method = "GET"; + Requests[823].Request.Path = "/Names/2fcefb/$/GetSubNames"; + Requests[824] = new DefaultHttpContext(); + Requests[824].RequestServices = CreateServices(); + Requests[824].Request.Method = "POST"; + Requests[824].Request.Path = "/Nodes/c4b39a13/$/Activate"; + Requests[825] = new DefaultHttpContext(); + Requests[825].RequestServices = CreateServices(); + Requests[825].Request.Method = "POST"; + Requests[825].Request.Path = "/Nodes/85caf970/$/Deactivate"; + Requests[826] = new DefaultHttpContext(); + Requests[826].RequestServices = CreateServices(); + Requests[826].Request.Method = "POST"; + Requests[826].Request.Path = "/Nodes/e67a7b50/$/DeployServicePackage"; + Requests[827] = new DefaultHttpContext(); + Requests[827].RequestServices = CreateServices(); + Requests[827].Request.Method = "GET"; + Requests[827].Request.Path = "/Nodes/5a1efdd7/$/GetApplications"; + Requests[828] = new DefaultHttpContext(); + Requests[828].RequestServices = CreateServices(); + Requests[828].Request.Method = "GET"; + Requests[828].Request.Path = "/Nodes/0225062e/$/GetHealth"; + Requests[829] = new DefaultHttpContext(); + Requests[829].RequestServices = CreateServices(); + Requests[829].Request.Method = "POST"; + Requests[829].Request.Path = "/Nodes/f2cbc65f/$/GetHealth"; + Requests[830] = new DefaultHttpContext(); + Requests[830].RequestServices = CreateServices(); + Requests[830].Request.Method = "GET"; + Requests[830].Request.Path = "/Nodes/f78919ab/$/GetLoadInformation"; + Requests[831] = new DefaultHttpContext(); + Requests[831].RequestServices = CreateServices(); + Requests[831].Request.Method = "POST"; + Requests[831].Request.Path = "/Nodes/ee0ab328/$/RemoveNodeState"; + Requests[832] = new DefaultHttpContext(); + Requests[832].RequestServices = CreateServices(); + Requests[832].Request.Method = "POST"; + Requests[832].Request.Path = "/Nodes/40657a8f/$/ReportHealth"; + Requests[833] = new DefaultHttpContext(); + Requests[833].RequestServices = CreateServices(); + Requests[833].Request.Method = "POST"; + Requests[833].Request.Path = "/Nodes/7f776435/$/Restart"; + Requests[834] = new DefaultHttpContext(); + Requests[834].RequestServices = CreateServices(); + Requests[834].Request.Method = "POST"; + Requests[834].Request.Path = "/Nodes/66bd5a77/$/Start"; + Requests[835] = new DefaultHttpContext(); + Requests[835].RequestServices = CreateServices(); + Requests[835].Request.Method = "POST"; + Requests[835].Request.Path = "/Nodes/5bf546d1/$/Stop"; + Requests[836] = new DefaultHttpContext(); + Requests[836].RequestServices = CreateServices(); + Requests[836].Request.Method = "POST"; + Requests[836].Request.Path = "/Partitions/97f781d1-b2/$/Backup"; + Requests[837] = new DefaultHttpContext(); + Requests[837].RequestServices = CreateServices(); + Requests[837].Request.Method = "POST"; + Requests[837].Request.Path = "/Partitions/84345432-b4/$/DisableBackup"; + Requests[838] = new DefaultHttpContext(); + Requests[838].RequestServices = CreateServices(); + Requests[838].Request.Method = "POST"; + Requests[838].Request.Path = "/Partitions/adc43efd-a0/$/EnableBackup"; + Requests[839] = new DefaultHttpContext(); + Requests[839].RequestServices = CreateServices(); + Requests[839].Request.Method = "GET"; + Requests[839].Request.Path = "/Partitions/a4fdc7a7-44/$/GetBackupConfigurationInfo"; + Requests[840] = new DefaultHttpContext(); + Requests[840].RequestServices = CreateServices(); + Requests[840].Request.Method = "GET"; + Requests[840].Request.Path = "/Partitions/0fe03f5a-9a/$/GetBackupProgress"; + Requests[841] = new DefaultHttpContext(); + Requests[841].RequestServices = CreateServices(); + Requests[841].Request.Method = "GET"; + Requests[841].Request.Path = "/Partitions/0050c1a7-1e/$/GetBackups"; + Requests[842] = new DefaultHttpContext(); + Requests[842].RequestServices = CreateServices(); + Requests[842].Request.Method = "POST"; + Requests[842].Request.Path = "/Partitions/61c4bc06-7a/$/GetHealth"; + Requests[843] = new DefaultHttpContext(); + Requests[843].RequestServices = CreateServices(); + Requests[843].Request.Method = "GET"; + Requests[843].Request.Path = "/Partitions/9a9d7693-88/$/GetHealth"; + Requests[844] = new DefaultHttpContext(); + Requests[844].RequestServices = CreateServices(); + Requests[844].Request.Method = "GET"; + Requests[844].Request.Path = "/Partitions/6c80d567-d1/$/GetLoadInformation"; + Requests[845] = new DefaultHttpContext(); + Requests[845].RequestServices = CreateServices(); + Requests[845].Request.Method = "GET"; + Requests[845].Request.Path = "/Partitions/232ef6a6-3e/$/GetReplicas"; + Requests[846] = new DefaultHttpContext(); + Requests[846].RequestServices = CreateServices(); + Requests[846].Request.Method = "GET"; + Requests[846].Request.Path = "/Partitions/b3cc5c40-4a/$/GetRestoreProgress"; + Requests[847] = new DefaultHttpContext(); + Requests[847].RequestServices = CreateServices(); + Requests[847].Request.Method = "GET"; + Requests[847].Request.Path = "/Partitions/f060aaab-56/$/GetServiceName"; + Requests[848] = new DefaultHttpContext(); + Requests[848].RequestServices = CreateServices(); + Requests[848].Request.Method = "POST"; + Requests[848].Request.Path = "/Partitions/42ac866e-69/$/Recover"; + Requests[849] = new DefaultHttpContext(); + Requests[849].RequestServices = CreateServices(); + Requests[849].Request.Method = "POST"; + Requests[849].Request.Path = "/Partitions/9052d799-d2/$/ReportHealth"; + Requests[850] = new DefaultHttpContext(); + Requests[850].RequestServices = CreateServices(); + Requests[850].Request.Method = "POST"; + Requests[850].Request.Path = "/Partitions/99025638-96/$/ResetLoad"; + Requests[851] = new DefaultHttpContext(); + Requests[851].RequestServices = CreateServices(); + Requests[851].Request.Method = "POST"; + Requests[851].Request.Path = "/Partitions/562b58e5-9b/$/Restore"; + Requests[852] = new DefaultHttpContext(); + Requests[852].RequestServices = CreateServices(); + Requests[852].Request.Method = "POST"; + Requests[852].Request.Path = "/Partitions/7ec7070a-b7/$/ResumeBackup"; + Requests[853] = new DefaultHttpContext(); + Requests[853].RequestServices = CreateServices(); + Requests[853].Request.Method = "POST"; + Requests[853].Request.Path = "/Partitions/939b61a8-e9/$/SuspendBackup"; + Requests[854] = new DefaultHttpContext(); + Requests[854].RequestServices = CreateServices(); + Requests[854].Request.Method = "POST"; + Requests[854].Request.Path = "/projects/26bcc9a7-/images/files"; + Requests[855] = new DefaultHttpContext(); + Requests[855].RequestServices = CreateServices(); + Requests[855].Request.Method = "GET"; + Requests[855].Request.Path = "/projects/be82b800-/images/id"; + Requests[856] = new DefaultHttpContext(); + Requests[856].RequestServices = CreateServices(); + Requests[856].Request.Method = "POST"; + Requests[856].Request.Path = "/projects/0ac8c21b-/images/predictions"; + Requests[857] = new DefaultHttpContext(); + Requests[857].RequestServices = CreateServices(); + Requests[857].Request.Method = "DELETE"; + Requests[857].Request.Path = "/projects/4560e2be-/images/regions"; + Requests[858] = new DefaultHttpContext(); + Requests[858].RequestServices = CreateServices(); + Requests[858].Request.Method = "POST"; + Requests[858].Request.Path = "/projects/3b40e5ec-/images/regions"; + Requests[859] = new DefaultHttpContext(); + Requests[859].RequestServices = CreateServices(); + Requests[859].Request.Method = "GET"; + Requests[859].Request.Path = "/projects/5a1a8f9e-/images/tagged"; + Requests[860] = new DefaultHttpContext(); + Requests[860].RequestServices = CreateServices(); + Requests[860].Request.Method = "DELETE"; + Requests[860].Request.Path = "/projects/b1d78b4a-/images/tags"; + Requests[861] = new DefaultHttpContext(); + Requests[861].RequestServices = CreateServices(); + Requests[861].Request.Method = "POST"; + Requests[861].Request.Path = "/projects/11917603-/images/tags"; + Requests[862] = new DefaultHttpContext(); + Requests[862].RequestServices = CreateServices(); + Requests[862].Request.Method = "GET"; + Requests[862].Request.Path = "/projects/e5253ed6-/images/untagged"; + Requests[863] = new DefaultHttpContext(); + Requests[863].RequestServices = CreateServices(); + Requests[863].Request.Method = "POST"; + Requests[863].Request.Path = "/projects/cdaa0b04-/images/urls"; + Requests[864] = new DefaultHttpContext(); + Requests[864].RequestServices = CreateServices(); + Requests[864].Request.Method = "POST"; + Requests[864].Request.Path = "/projects/e1d4e435-/predictions/query"; + Requests[865] = new DefaultHttpContext(); + Requests[865].RequestServices = CreateServices(); + Requests[865].Request.Method = "POST"; + Requests[865].Request.Path = "/projects/562348bb-/quicktest/image"; + Requests[866] = new DefaultHttpContext(); + Requests[866].RequestServices = CreateServices(); + Requests[866].Request.Method = "POST"; + Requests[866].Request.Path = "/projects/113b1986-/quicktest/url"; + Requests[867] = new DefaultHttpContext(); + Requests[867].RequestServices = CreateServices(); + Requests[867].Request.Method = "POST"; + Requests[867].Request.Path = "/Services/ab575683-/$/Delete"; + Requests[868] = new DefaultHttpContext(); + Requests[868].RequestServices = CreateServices(); + Requests[868].Request.Method = "POST"; + Requests[868].Request.Path = "/Services/23376534-/$/DisableBackup"; + Requests[869] = new DefaultHttpContext(); + Requests[869].RequestServices = CreateServices(); + Requests[869].Request.Method = "POST"; + Requests[869].Request.Path = "/Services/d4095803-/$/EnableBackup"; + Requests[870] = new DefaultHttpContext(); + Requests[870].RequestServices = CreateServices(); + Requests[870].Request.Method = "GET"; + Requests[870].Request.Path = "/Services/0431d2a4-/$/GetApplicationName"; + Requests[871] = new DefaultHttpContext(); + Requests[871].RequestServices = CreateServices(); + Requests[871].Request.Method = "GET"; + Requests[871].Request.Path = "/Services/bff31263-/$/GetBackupConfigurationInfo"; + Requests[872] = new DefaultHttpContext(); + Requests[872].RequestServices = CreateServices(); + Requests[872].Request.Method = "GET"; + Requests[872].Request.Path = "/Services/e2a9d29d-/$/GetBackups"; + Requests[873] = new DefaultHttpContext(); + Requests[873].RequestServices = CreateServices(); + Requests[873].Request.Method = "GET"; + Requests[873].Request.Path = "/Services/86ac9864-/$/GetDescription"; + Requests[874] = new DefaultHttpContext(); + Requests[874].RequestServices = CreateServices(); + Requests[874].Request.Method = "POST"; + Requests[874].Request.Path = "/Services/6fc8ba32-/$/GetHealth"; + Requests[875] = new DefaultHttpContext(); + Requests[875].RequestServices = CreateServices(); + Requests[875].Request.Method = "GET"; + Requests[875].Request.Path = "/Services/e524bd5b-/$/GetHealth"; + Requests[876] = new DefaultHttpContext(); + Requests[876].RequestServices = CreateServices(); + Requests[876].Request.Method = "GET"; + Requests[876].Request.Path = "/Services/ac25d8af-/$/GetPartitions"; + Requests[877] = new DefaultHttpContext(); + Requests[877].RequestServices = CreateServices(); + Requests[877].Request.Method = "POST"; + Requests[877].Request.Path = "/Services/521379e0-/$/ReportHealth"; + Requests[878] = new DefaultHttpContext(); + Requests[878].RequestServices = CreateServices(); + Requests[878].Request.Method = "GET"; + Requests[878].Request.Path = "/Services/7e924ad0-/$/ResolvePartition"; + Requests[879] = new DefaultHttpContext(); + Requests[879].RequestServices = CreateServices(); + Requests[879].Request.Method = "POST"; + Requests[879].Request.Path = "/Services/4f6bcf02-/$/ResumeBackup"; + Requests[880] = new DefaultHttpContext(); + Requests[880].RequestServices = CreateServices(); + Requests[880].Request.Method = "POST"; + Requests[880].Request.Path = "/Services/c4066929-/$/SuspendBackup"; + Requests[881] = new DefaultHttpContext(); + Requests[881].RequestServices = CreateServices(); + Requests[881].Request.Method = "POST"; + Requests[881].Request.Path = "/Services/7ad3bf49-/$/Update"; + Requests[882] = new DefaultHttpContext(); + Requests[882].RequestServices = CreateServices(); + Requests[882].Request.Method = "POST"; + Requests[882].Request.Path = "/tenant/5f6fc501-3/git/regeneratePrimaryKey"; + Requests[883] = new DefaultHttpContext(); + Requests[883].RequestServices = CreateServices(); + Requests[883].Request.Method = "POST"; + Requests[883].Request.Path = "/tenant/07f9ea58-f/git/regenerateSecondaryKey"; + Requests[884] = new DefaultHttpContext(); + Requests[884].RequestServices = CreateServices(); + Requests[884].Request.Method = "GET"; + Requests[884].Request.Path = "/projects/54dec105-/images/tagged/count"; + Requests[885] = new DefaultHttpContext(); + Requests[885].RequestServices = CreateServices(); + Requests[885].Request.Method = "GET"; + Requests[885].Request.Path = "/projects/3f6ddd0e-/images/untagged/count"; + Requests[886] = new DefaultHttpContext(); + Requests[886].RequestServices = CreateServices(); + Requests[886].Request.Method = "GET"; + Requests[886].Request.Path = "/subscriptions/0a5a0c6d-71f0-/providers/Microsoft.AAD/domainServices"; + Requests[887] = new DefaultHttpContext(); + Requests[887].RequestServices = CreateServices(); + Requests[887].Request.Method = "GET"; + Requests[887].Request.Path = "/subscriptions/fb7e38ea-cddd-/providers/Microsoft.Advisor/configurations"; + Requests[888] = new DefaultHttpContext(); + Requests[888].RequestServices = CreateServices(); + Requests[888].Request.Method = "PUT"; + Requests[888].Request.Path = "/subscriptions/46b22cf9-858e-/providers/Microsoft.Advisor/configurations"; + Requests[889] = new DefaultHttpContext(); + Requests[889].RequestServices = CreateServices(); + Requests[889].Request.Method = "POST"; + Requests[889].Request.Path = "/subscriptions/21b6ffc4-40da-/providers/Microsoft.Advisor/generateRecommendations"; + Requests[890] = new DefaultHttpContext(); + Requests[890].RequestServices = CreateServices(); + Requests[890].Request.Method = "GET"; + Requests[890].Request.Path = "/subscriptions/1264f84b-d223-/providers/Microsoft.Advisor/recommendations"; + Requests[891] = new DefaultHttpContext(); + Requests[891].RequestServices = CreateServices(); + Requests[891].Request.Method = "GET"; + Requests[891].Request.Path = "/subscriptions/af225166-5f40-/providers/Microsoft.Advisor/suppressions"; + Requests[892] = new DefaultHttpContext(); + Requests[892].RequestServices = CreateServices(); + Requests[892].Request.Method = "GET"; + Requests[892].Request.Path = "/subscriptions/a2918165-b0b2-/providers/Microsoft.AnalysisServices/servers"; + Requests[893] = new DefaultHttpContext(); + Requests[893].RequestServices = CreateServices(); + Requests[893].Request.Method = "GET"; + Requests[893].Request.Path = "/subscriptions/c13257a4-e1be-/providers/Microsoft.AnalysisServices/skus"; + Requests[894] = new DefaultHttpContext(); + Requests[894].RequestServices = CreateServices(); + Requests[894].Request.Method = "POST"; + Requests[894].Request.Path = "/subscriptions/258d12b1-72f2-/providers/Microsoft.ApiManagement/checkNameAvailability"; + Requests[895] = new DefaultHttpContext(); + Requests[895].RequestServices = CreateServices(); + Requests[895].Request.Method = "GET"; + Requests[895].Request.Path = "/subscriptions/901e692f-e538-/providers/Microsoft.ApiManagement/service"; + Requests[896] = new DefaultHttpContext(); + Requests[896].RequestServices = CreateServices(); + Requests[896].Request.Method = "GET"; + Requests[896].Request.Path = "/subscriptions/0bdb0c4d-b319-/providers/Microsoft.Authorization/classicAdministrators"; + Requests[897] = new DefaultHttpContext(); + Requests[897].RequestServices = CreateServices(); + Requests[897].Request.Method = "GET"; + Requests[897].Request.Path = "/subscriptions/7ec58203-f3da-/providers/Microsoft.Authorization/locks"; + Requests[898] = new DefaultHttpContext(); + Requests[898].RequestServices = CreateServices(); + Requests[898].Request.Method = "GET"; + Requests[898].Request.Path = "/subscriptions/453decbc-11e9-/providers/Microsoft.Authorization/policyAssignments"; + Requests[899] = new DefaultHttpContext(); + Requests[899].RequestServices = CreateServices(); + Requests[899].Request.Method = "GET"; + Requests[899].Request.Path = "/subscriptions/6841c237-6a91-/providers/Microsoft.Authorization/policyDefinitions"; + Requests[900] = new DefaultHttpContext(); + Requests[900].RequestServices = CreateServices(); + Requests[900].Request.Method = "GET"; + Requests[900].Request.Path = "/subscriptions/e4ad2fbb-317b-/providers/Microsoft.Authorization/policySetDefinitions"; + Requests[901] = new DefaultHttpContext(); + Requests[901].RequestServices = CreateServices(); + Requests[901].Request.Method = "GET"; + Requests[901].Request.Path = "/subscriptions/d9d4352e-2e35-/providers/Microsoft.Authorization/roleAssignments"; + Requests[902] = new DefaultHttpContext(); + Requests[902].RequestServices = CreateServices(); + Requests[902].Request.Method = "GET"; + Requests[902].Request.Path = "/subscriptions/1c5fbf85-2b5c-/providers/Microsoft.Automation/automationAccounts"; + Requests[903] = new DefaultHttpContext(); + Requests[903].RequestServices = CreateServices(); + Requests[903].Request.Method = "GET"; + Requests[903].Request.Path = "/subscriptions/d489737f-5ebd-/providers/Microsoft.Batch/batchAccounts"; + Requests[904] = new DefaultHttpContext(); + Requests[904].RequestServices = CreateServices(); + Requests[904].Request.Method = "GET"; + Requests[904].Request.Path = "/subscriptions/95368823-be35-/providers/Microsoft.BatchAI/clusters"; + Requests[905] = new DefaultHttpContext(); + Requests[905].RequestServices = CreateServices(); + Requests[905].Request.Method = "GET"; + Requests[905].Request.Path = "/subscriptions/01e71765-c032-/providers/Microsoft.BatchAI/fileServers"; + Requests[906] = new DefaultHttpContext(); + Requests[906].RequestServices = CreateServices(); + Requests[906].Request.Method = "GET"; + Requests[906].Request.Path = "/subscriptions/066ba07b-f9e8-/providers/Microsoft.BatchAI/jobs"; + Requests[907] = new DefaultHttpContext(); + Requests[907].RequestServices = CreateServices(); + Requests[907].Request.Method = "GET"; + Requests[907].Request.Path = "/subscriptions/e30ac44d-1763-/providers/Microsoft.BatchAI/workspaces"; + Requests[908] = new DefaultHttpContext(); + Requests[908].RequestServices = CreateServices(); + Requests[908].Request.Method = "GET"; + Requests[908].Request.Path = "/subscriptions/2d0503b6-58e1-/providers/Microsoft.Billing/billingPeriods"; + Requests[909] = new DefaultHttpContext(); + Requests[909].RequestServices = CreateServices(); + Requests[909].Request.Method = "GET"; + Requests[909].Request.Path = "/subscriptions/aebd7110-1360-/providers/Microsoft.Billing/invoices"; + Requests[910] = new DefaultHttpContext(); + Requests[910].RequestServices = CreateServices(); + Requests[910].Request.Method = "GET"; + Requests[910].Request.Path = "/subscriptions/329c7408-368e-/providers/Microsoft.BotService/botServices"; + Requests[911] = new DefaultHttpContext(); + Requests[911].RequestServices = CreateServices(); + Requests[911].Request.Method = "POST"; + Requests[911].Request.Path = "/subscriptions/43381579-d824-/providers/Microsoft.Cache/CheckNameAvailability"; + Requests[912] = new DefaultHttpContext(); + Requests[912].RequestServices = CreateServices(); + Requests[912].Request.Method = "GET"; + Requests[912].Request.Path = "/subscriptions/8cc1a5b5-64be-/providers/Microsoft.Cache/Redis"; + Requests[913] = new DefaultHttpContext(); + Requests[913].RequestServices = CreateServices(); + Requests[913].Request.Method = "GET"; + Requests[913].Request.Path = "/subscriptions/eac0509e-2c39-/providers/Microsoft.Capacity/appliedReservations"; + Requests[914] = new DefaultHttpContext(); + Requests[914].RequestServices = CreateServices(); + Requests[914].Request.Method = "GET"; + Requests[914].Request.Path = "/subscriptions/bdb0b1f7-0f01-/providers/Microsoft.Capacity/catalogs"; + Requests[915] = new DefaultHttpContext(); + Requests[915].RequestServices = CreateServices(); + Requests[915].Request.Method = "POST"; + Requests[915].Request.Path = "/subscriptions/e8404501-3911-/providers/Microsoft.Cdn/checkNameAvailability"; + Requests[916] = new DefaultHttpContext(); + Requests[916].RequestServices = CreateServices(); + Requests[916].Request.Method = "POST"; + Requests[916].Request.Path = "/subscriptions/3846164b-d147-/providers/Microsoft.Cdn/checkResourceUsage"; + Requests[917] = new DefaultHttpContext(); + Requests[917].RequestServices = CreateServices(); + Requests[917].Request.Method = "GET"; + Requests[917].Request.Path = "/subscriptions/c8afe5bb-ae62-/providers/Microsoft.Cdn/profiles"; + Requests[918] = new DefaultHttpContext(); + Requests[918].RequestServices = CreateServices(); + Requests[918].Request.Method = "POST"; + Requests[918].Request.Path = "/subscriptions/285ee03a-12e4-/providers/Microsoft.Cdn/validateProbe"; + Requests[919] = new DefaultHttpContext(); + Requests[919].RequestServices = CreateServices(); + Requests[919].Request.Method = "GET"; + Requests[919].Request.Path = "/subscriptions/77f9a941-6ddb-/providers/Microsoft.CertificateRegistration/certificateOrders"; + Requests[920] = new DefaultHttpContext(); + Requests[920].RequestServices = CreateServices(); + Requests[920].Request.Method = "POST"; + Requests[920].Request.Path = "/subscriptions/c7919896-8cf6-/providers/Microsoft.CertificateRegistration/validateCertificateRegistrationInformation"; + Requests[921] = new DefaultHttpContext(); + Requests[921].RequestServices = CreateServices(); + Requests[921].Request.Method = "GET"; + Requests[921].Request.Path = "/subscriptions/dfbd3abc-6afb-/providers/Microsoft.CognitiveServices/accounts"; + Requests[922] = new DefaultHttpContext(); + Requests[922].RequestServices = CreateServices(); + Requests[922].Request.Method = "GET"; + Requests[922].Request.Path = "/subscriptions/9de165c5-a845-/providers/Microsoft.CognitiveServices/skus"; + Requests[923] = new DefaultHttpContext(); + Requests[923].RequestServices = CreateServices(); + Requests[923].Request.Method = "GET"; + Requests[923].Request.Path = "/subscriptions/4065b95b-6192-/providers/Microsoft.Commerce.Admin/subscriberUsageAggregates"; + Requests[924] = new DefaultHttpContext(); + Requests[924].RequestServices = CreateServices(); + Requests[924].Request.Method = "POST"; + Requests[924].Request.Path = "/subscriptions/0de13f8f-6274-/providers/Microsoft.Commerce.Admin/updateEncryption"; + Requests[925] = new DefaultHttpContext(); + Requests[925].RequestServices = CreateServices(); + Requests[925].Request.Method = "GET"; + Requests[925].Request.Path = "/subscriptions/ab4d1fc0-a352-/providers/Microsoft.Commerce/RateCard"; + Requests[926] = new DefaultHttpContext(); + Requests[926].RequestServices = CreateServices(); + Requests[926].Request.Method = "GET"; + Requests[926].Request.Path = "/subscriptions/b636a8ab-3a18-/providers/Microsoft.Commerce/UsageAggregates"; + Requests[927] = new DefaultHttpContext(); + Requests[927].RequestServices = CreateServices(); + Requests[927].Request.Method = "GET"; + Requests[927].Request.Path = "/subscriptions/fbeb450f-2dc2-/providers/Microsoft.Compute/disks"; + Requests[928] = new DefaultHttpContext(); + Requests[928].RequestServices = CreateServices(); + Requests[928].Request.Method = "GET"; + Requests[928].Request.Path = "/subscriptions/b44f5eb3-5952-/providers/Microsoft.Compute/galleries"; + Requests[929] = new DefaultHttpContext(); + Requests[929].RequestServices = CreateServices(); + Requests[929].Request.Method = "GET"; + Requests[929].Request.Path = "/subscriptions/4688bd31-77f6-/providers/Microsoft.Compute/images"; + Requests[930] = new DefaultHttpContext(); + Requests[930].RequestServices = CreateServices(); + Requests[930].Request.Method = "GET"; + Requests[930].Request.Path = "/subscriptions/66d35a79-eb43-/providers/Microsoft.Compute/skus"; + Requests[931] = new DefaultHttpContext(); + Requests[931].RequestServices = CreateServices(); + Requests[931].Request.Method = "GET"; + Requests[931].Request.Path = "/subscriptions/9181ace1-4b6c-/providers/Microsoft.Compute/snapshots"; + Requests[932] = new DefaultHttpContext(); + Requests[932].RequestServices = CreateServices(); + Requests[932].Request.Method = "GET"; + Requests[932].Request.Path = "/subscriptions/01445b38-3dcf-/providers/Microsoft.Compute/virtualMachines"; + Requests[933] = new DefaultHttpContext(); + Requests[933].RequestServices = CreateServices(); + Requests[933].Request.Method = "GET"; + Requests[933].Request.Path = "/subscriptions/086ae94a-d24d-/providers/Microsoft.Compute/virtualMachineScaleSets"; + Requests[934] = new DefaultHttpContext(); + Requests[934].RequestServices = CreateServices(); + Requests[934].Request.Method = "GET"; + Requests[934].Request.Path = "/subscriptions/8c26d0a3-2c27-/providers/Microsoft.Consumption/budgets"; + Requests[935] = new DefaultHttpContext(); + Requests[935].RequestServices = CreateServices(); + Requests[935].Request.Method = "GET"; + Requests[935].Request.Path = "/subscriptions/58715cc1-da0f-/providers/Microsoft.Consumption/forecasts"; + Requests[936] = new DefaultHttpContext(); + Requests[936].RequestServices = CreateServices(); + Requests[936].Request.Method = "GET"; + Requests[936].Request.Path = "/subscriptions/e6d912d5-a65f-/providers/Microsoft.Consumption/marketplaces"; + Requests[937] = new DefaultHttpContext(); + Requests[937].RequestServices = CreateServices(); + Requests[937].Request.Method = "GET"; + Requests[937].Request.Path = "/subscriptions/365acf77-7ba3-/providers/Microsoft.Consumption/reservationRecommendations"; + Requests[938] = new DefaultHttpContext(); + Requests[938].RequestServices = CreateServices(); + Requests[938].Request.Method = "GET"; + Requests[938].Request.Path = "/subscriptions/f2a30466-5f3f-/providers/Microsoft.Consumption/usageDetails"; + Requests[939] = new DefaultHttpContext(); + Requests[939].RequestServices = CreateServices(); + Requests[939].Request.Method = "GET"; + Requests[939].Request.Path = "/subscriptions/6fccc861-579c-/providers/Microsoft.ContainerInstance/containerGroups"; + Requests[940] = new DefaultHttpContext(); + Requests[940].RequestServices = CreateServices(); + Requests[940].Request.Method = "POST"; + Requests[940].Request.Path = "/subscriptions/d3e733bb-ff9a-/providers/Microsoft.ContainerRegistry/checkNameAvailability"; + Requests[941] = new DefaultHttpContext(); + Requests[941].RequestServices = CreateServices(); + Requests[941].Request.Method = "GET"; + Requests[941].Request.Path = "/subscriptions/d1d5a743-7fef-/providers/Microsoft.ContainerRegistry/registries"; + Requests[942] = new DefaultHttpContext(); + Requests[942].RequestServices = CreateServices(); + Requests[942].Request.Method = "GET"; + Requests[942].Request.Path = "/subscriptions/6565c67e-2b33-/providers/Microsoft.ContainerService/containerServices"; + Requests[943] = new DefaultHttpContext(); + Requests[943].RequestServices = CreateServices(); + Requests[943].Request.Method = "GET"; + Requests[943].Request.Path = "/subscriptions/08e683bc-ccb7-/providers/Microsoft.ContainerService/managedClusters"; + Requests[944] = new DefaultHttpContext(); + Requests[944].RequestServices = CreateServices(); + Requests[944].Request.Method = "GET"; + Requests[944].Request.Path = "/subscriptions/a3ba9879-b0ca-/providers/Microsoft.CustomerInsights/hubs"; + Requests[945] = new DefaultHttpContext(); + Requests[945].RequestServices = CreateServices(); + Requests[945].Request.Method = "GET"; + Requests[945].Request.Path = "/subscriptions/5f487c4c-0773-/providers/Microsoft.DataBox/jobs"; + Requests[946] = new DefaultHttpContext(); + Requests[946].RequestServices = CreateServices(); + Requests[946].Request.Method = "GET"; + Requests[946].Request.Path = "/subscriptions/d79f3883-1cfc-/providers/Microsoft.Databricks/workspaces"; + Requests[947] = new DefaultHttpContext(); + Requests[947].RequestServices = CreateServices(); + Requests[947].Request.Method = "GET"; + Requests[947].Request.Path = "/subscriptions/042023a8-7c2e-/providers/Microsoft.DataFactory/factories"; + Requests[948] = new DefaultHttpContext(); + Requests[948].RequestServices = CreateServices(); + Requests[948].Request.Method = "GET"; + Requests[948].Request.Path = "/subscriptions/077418d5-9cd9-/providers/Microsoft.DataLakeAnalytics/accounts"; + Requests[949] = new DefaultHttpContext(); + Requests[949].RequestServices = CreateServices(); + Requests[949].Request.Method = "GET"; + Requests[949].Request.Path = "/subscriptions/1c264d89-aae7-/providers/Microsoft.DataLakeStore/accounts"; + Requests[950] = new DefaultHttpContext(); + Requests[950].RequestServices = CreateServices(); + Requests[950].Request.Method = "GET"; + Requests[950].Request.Path = "/subscriptions/1f1db437-0ffe-/providers/Microsoft.DataMigration/services"; + Requests[951] = new DefaultHttpContext(); + Requests[951].RequestServices = CreateServices(); + Requests[951].Request.Method = "GET"; + Requests[951].Request.Path = "/subscriptions/67959fe5-ed43-/providers/Microsoft.DataMigration/skus"; + Requests[952] = new DefaultHttpContext(); + Requests[952].RequestServices = CreateServices(); + Requests[952].Request.Method = "POST"; + Requests[952].Request.Path = "/subscriptions/c1c54da4-3a26-/providers/Microsoft.DBforMySQL/checkNameAvailability"; + Requests[953] = new DefaultHttpContext(); + Requests[953].RequestServices = CreateServices(); + Requests[953].Request.Method = "GET"; + Requests[953].Request.Path = "/subscriptions/6db645fb-a27b-/providers/Microsoft.DBforMySQL/performanceTiers"; + Requests[954] = new DefaultHttpContext(); + Requests[954].RequestServices = CreateServices(); + Requests[954].Request.Method = "GET"; + Requests[954].Request.Path = "/subscriptions/9f5b84bd-a1b4-/providers/Microsoft.DBforMySQL/servers"; + Requests[955] = new DefaultHttpContext(); + Requests[955].RequestServices = CreateServices(); + Requests[955].Request.Method = "POST"; + Requests[955].Request.Path = "/subscriptions/30d324cb-ef20-/providers/Microsoft.DBforPostgreSQL/checkNameAvailability"; + Requests[956] = new DefaultHttpContext(); + Requests[956].RequestServices = CreateServices(); + Requests[956].Request.Method = "GET"; + Requests[956].Request.Path = "/subscriptions/6ccc3dbb-690b-/providers/Microsoft.DBforPostgreSQL/performanceTiers"; + Requests[957] = new DefaultHttpContext(); + Requests[957].RequestServices = CreateServices(); + Requests[957].Request.Method = "GET"; + Requests[957].Request.Path = "/subscriptions/5b9e5fea-63ca-/providers/Microsoft.DBforPostgreSQL/servers"; + Requests[958] = new DefaultHttpContext(); + Requests[958].RequestServices = CreateServices(); + Requests[958].Request.Method = "POST"; + Requests[958].Request.Path = "/subscriptions/08e6a542-dc6c-/providers/Microsoft.Devices/checkNameAvailability"; + Requests[959] = new DefaultHttpContext(); + Requests[959].RequestServices = CreateServices(); + Requests[959].Request.Method = "POST"; + Requests[959].Request.Path = "/subscriptions/cc01704f-1fe1-/providers/Microsoft.Devices/checkProvisioningServiceNameAvailability"; + Requests[960] = new DefaultHttpContext(); + Requests[960].RequestServices = CreateServices(); + Requests[960].Request.Method = "GET"; + Requests[960].Request.Path = "/subscriptions/62693f65-3c70-/providers/Microsoft.Devices/IotHubs"; + Requests[961] = new DefaultHttpContext(); + Requests[961].RequestServices = CreateServices(); + Requests[961].Request.Method = "GET"; + Requests[961].Request.Path = "/subscriptions/6f39740a-bd55-/providers/Microsoft.Devices/provisioningServices"; + Requests[962] = new DefaultHttpContext(); + Requests[962].RequestServices = CreateServices(); + Requests[962].Request.Method = "GET"; + Requests[962].Request.Path = "/subscriptions/ea71a529-c606-/providers/Microsoft.Devices/usages"; + Requests[963] = new DefaultHttpContext(); + Requests[963].RequestServices = CreateServices(); + Requests[963].Request.Method = "GET"; + Requests[963].Request.Path = "/subscriptions/88dbf9a4-e93a-/providers/Microsoft.DevTestLab/labs"; + Requests[964] = new DefaultHttpContext(); + Requests[964].RequestServices = CreateServices(); + Requests[964].Request.Method = "GET"; + Requests[964].Request.Path = "/subscriptions/aba6c745-cd72-/providers/Microsoft.DevTestLab/schedules"; + Requests[965] = new DefaultHttpContext(); + Requests[965].RequestServices = CreateServices(); + Requests[965].Request.Method = "GET"; + Requests[965].Request.Path = "/subscriptions/3405359b-1a86-/providers/Microsoft.DocumentDB/databaseAccounts"; + Requests[966] = new DefaultHttpContext(); + Requests[966].RequestServices = CreateServices(); + Requests[966].Request.Method = "POST"; + Requests[966].Request.Path = "/subscriptions/cdac7e69-032a-/providers/Microsoft.DomainRegistration/checkDomainAvailability"; + Requests[967] = new DefaultHttpContext(); + Requests[967].RequestServices = CreateServices(); + Requests[967].Request.Method = "GET"; + Requests[967].Request.Path = "/subscriptions/903d4f4b-a043-/providers/Microsoft.DomainRegistration/domains"; + Requests[968] = new DefaultHttpContext(); + Requests[968].RequestServices = CreateServices(); + Requests[968].Request.Method = "POST"; + Requests[968].Request.Path = "/subscriptions/b2f972a3-19e0-/providers/Microsoft.DomainRegistration/generateSsoRequest"; + Requests[969] = new DefaultHttpContext(); + Requests[969].RequestServices = CreateServices(); + Requests[969].Request.Method = "POST"; + Requests[969].Request.Path = "/subscriptions/b9d6fe3d-8ba6-/providers/Microsoft.DomainRegistration/listDomainRecommendations"; + Requests[970] = new DefaultHttpContext(); + Requests[970].RequestServices = CreateServices(); + Requests[970].Request.Method = "GET"; + Requests[970].Request.Path = "/subscriptions/a0766c86-4f20-/providers/Microsoft.DomainRegistration/topLevelDomains"; + Requests[971] = new DefaultHttpContext(); + Requests[971].RequestServices = CreateServices(); + Requests[971].Request.Method = "POST"; + Requests[971].Request.Path = "/subscriptions/30bd17e5-3b57-/providers/Microsoft.DomainRegistration/validateDomainRegistrationInformation"; + Requests[972] = new DefaultHttpContext(); + Requests[972].RequestServices = CreateServices(); + Requests[972].Request.Method = "GET"; + Requests[972].Request.Path = "/subscriptions/bebb30ec-0e1e-/providers/Microsoft.EventGrid/eventSubscriptions"; + Requests[973] = new DefaultHttpContext(); + Requests[973].RequestServices = CreateServices(); + Requests[973].Request.Method = "GET"; + Requests[973].Request.Path = "/subscriptions/aec6d0bf-e9c5-/providers/Microsoft.EventGrid/topics"; + Requests[974] = new DefaultHttpContext(); + Requests[974].RequestServices = CreateServices(); + Requests[974].Request.Method = "POST"; + Requests[974].Request.Path = "/subscriptions/a95d1545-da7e-/providers/Microsoft.EventHub/CheckNameAvailability"; + Requests[975] = new DefaultHttpContext(); + Requests[975].RequestServices = CreateServices(); + Requests[975].Request.Method = "POST"; + Requests[975].Request.Path = "/subscriptions/390d250c-4214-/providers/Microsoft.EventHub/CheckNamespaceAvailability"; + Requests[976] = new DefaultHttpContext(); + Requests[976].RequestServices = CreateServices(); + Requests[976].Request.Method = "GET"; + Requests[976].Request.Path = "/subscriptions/7c4b2982-3c2f-/providers/Microsoft.EventHub/namespaces"; + Requests[977] = new DefaultHttpContext(); + Requests[977].RequestServices = CreateServices(); + Requests[977].Request.Method = "GET"; + Requests[977].Request.Path = "/subscriptions/75a2d4e6-74d8-/providers/Microsoft.Features/features"; + Requests[978] = new DefaultHttpContext(); + Requests[978].RequestServices = CreateServices(); + Requests[978].Request.Method = "POST"; + Requests[978].Request.Path = "/subscriptions/ff5075ea-7701-/providers/microsoft.gallery.admin/galleryItems"; + Requests[979] = new DefaultHttpContext(); + Requests[979].RequestServices = CreateServices(); + Requests[979].Request.Method = "GET"; + Requests[979].Request.Path = "/subscriptions/0ac2f646-a44b-/providers/microsoft.gallery.admin/galleryItems"; + Requests[980] = new DefaultHttpContext(); + Requests[980].RequestServices = CreateServices(); + Requests[980].Request.Method = "GET"; + Requests[980].Request.Path = "/subscriptions/88d19def-4ba0-/providers/Microsoft.HanaOnAzure/hanaInstances"; + Requests[981] = new DefaultHttpContext(); + Requests[981].RequestServices = CreateServices(); + Requests[981].Request.Method = "GET"; + Requests[981].Request.Path = "/subscriptions/bd473a6f-9c00-/providers/Microsoft.HDInsight/clusters"; + Requests[982] = new DefaultHttpContext(); + Requests[982].RequestServices = CreateServices(); + Requests[982].Request.Method = "GET"; + Requests[982].Request.Path = "/subscriptions/daaf34b4-96f1-/providers/Microsoft.ImportExport/jobs"; + Requests[983] = new DefaultHttpContext(); + Requests[983].RequestServices = CreateServices(); + Requests[983].Request.Method = "GET"; + Requests[983].Request.Path = "/subscriptions/fe3bc475-72a7-/providers/microsoft.insights/actionGroups"; + Requests[984] = new DefaultHttpContext(); + Requests[984].RequestServices = CreateServices(); + Requests[984].Request.Method = "GET"; + Requests[984].Request.Path = "/subscriptions/e68c6114-ffab-/providers/microsoft.insights/activityLogAlerts"; + Requests[985] = new DefaultHttpContext(); + Requests[985].RequestServices = CreateServices(); + Requests[985].Request.Method = "GET"; + Requests[985].Request.Path = "/subscriptions/430259fd-e37b-/providers/Microsoft.Insights/components"; + Requests[986] = new DefaultHttpContext(); + Requests[986].RequestServices = CreateServices(); + Requests[986].Request.Method = "POST"; + Requests[986].Request.Path = "/subscriptions/e23417a9-cb23-/providers/microsoft.insights/listMigrationdate"; + Requests[987] = new DefaultHttpContext(); + Requests[987].RequestServices = CreateServices(); + Requests[987].Request.Method = "GET"; + Requests[987].Request.Path = "/subscriptions/afb95f48-bfa4-/providers/microsoft.insights/logprofiles"; + Requests[988] = new DefaultHttpContext(); + Requests[988].RequestServices = CreateServices(); + Requests[988].Request.Method = "GET"; + Requests[988].Request.Path = "/subscriptions/0714f45c-a049-/providers/Microsoft.Insights/metricAlerts"; + Requests[989] = new DefaultHttpContext(); + Requests[989].RequestServices = CreateServices(); + Requests[989].Request.Method = "POST"; + Requests[989].Request.Path = "/subscriptions/8e7cf130-43c4-/providers/microsoft.insights/migrateToNewPricingModel"; + Requests[990] = new DefaultHttpContext(); + Requests[990].RequestServices = CreateServices(); + Requests[990].Request.Method = "POST"; + Requests[990].Request.Path = "/subscriptions/cc2a16a8-e9ce-/providers/microsoft.insights/rollbackToLegacyPricingModel"; + Requests[991] = new DefaultHttpContext(); + Requests[991].RequestServices = CreateServices(); + Requests[991].Request.Method = "GET"; + Requests[991].Request.Path = "/subscriptions/e31b3661-94d7-/providers/microsoft.insights/scheduledQueryRules"; + Requests[992] = new DefaultHttpContext(); + Requests[992].RequestServices = CreateServices(); + Requests[992].Request.Method = "GET"; + Requests[992].Request.Path = "/subscriptions/a6f87413-1940-/providers/Microsoft.Insights/webtests"; + Requests[993] = new DefaultHttpContext(); + Requests[993].RequestServices = CreateServices(); + Requests[993].Request.Method = "POST"; + Requests[993].Request.Path = "/subscriptions/0f638a4c-8051-/providers/Microsoft.IoTCentral/checkNameAvailability"; + Requests[994] = new DefaultHttpContext(); + Requests[994].RequestServices = CreateServices(); + Requests[994].Request.Method = "GET"; + Requests[994].Request.Path = "/subscriptions/24da9142-d847-/providers/Microsoft.IoTCentral/IoTApps"; + Requests[995] = new DefaultHttpContext(); + Requests[995].RequestServices = CreateServices(); + Requests[995].Request.Method = "POST"; + Requests[995].Request.Path = "/subscriptions/e58b4a26-9959-/providers/Microsoft.IoTSpaces/checkNameAvailability"; + Requests[996] = new DefaultHttpContext(); + Requests[996].RequestServices = CreateServices(); + Requests[996].Request.Method = "GET"; + Requests[996].Request.Path = "/subscriptions/8360ae11-9e4b-/providers/Microsoft.IoTSpaces/Graph"; + Requests[997] = new DefaultHttpContext(); + Requests[997].RequestServices = CreateServices(); + Requests[997].Request.Method = "POST"; + Requests[997].Request.Path = "/subscriptions/c4e695d6-538f-/providers/Microsoft.KeyVault/checkNameAvailability"; + Requests[998] = new DefaultHttpContext(); + Requests[998].RequestServices = CreateServices(); + Requests[998].Request.Method = "GET"; + Requests[998].Request.Path = "/subscriptions/e7b82dca-b3f3-/providers/Microsoft.KeyVault/deletedVaults"; + Requests[999] = new DefaultHttpContext(); + Requests[999].RequestServices = CreateServices(); + Requests[999].Request.Method = "GET"; + Requests[999].Request.Path = "/subscriptions/f62ec81b-248c-/providers/Microsoft.KeyVault/vaults"; + Requests[1000] = new DefaultHttpContext(); + Requests[1000].RequestServices = CreateServices(); + Requests[1000].Request.Method = "GET"; + Requests[1000].Request.Path = "/subscriptions/6e6b976c-82fe-/providers/Microsoft.Logic/integrationAccounts"; + Requests[1001] = new DefaultHttpContext(); + Requests[1001].RequestServices = CreateServices(); + Requests[1001].Request.Method = "GET"; + Requests[1001].Request.Path = "/subscriptions/cb8a5cee-0f64-/providers/Microsoft.Logic/workflows"; + Requests[1002] = new DefaultHttpContext(); + Requests[1002].RequestServices = CreateServices(); + Requests[1002].Request.Method = "GET"; + Requests[1002].Request.Path = "/subscriptions/486385fd-2b23-/providers/Microsoft.MachineLearning/commitmentPlans"; + Requests[1003] = new DefaultHttpContext(); + Requests[1003].RequestServices = CreateServices(); + Requests[1003].Request.Method = "GET"; + Requests[1003].Request.Path = "/subscriptions/938b0efa-9eca-/providers/Microsoft.MachineLearning/skus"; + Requests[1004] = new DefaultHttpContext(); + Requests[1004].RequestServices = CreateServices(); + Requests[1004].Request.Method = "GET"; + Requests[1004].Request.Path = "/subscriptions/16361157-288d-/providers/Microsoft.MachineLearning/webServices"; + Requests[1005] = new DefaultHttpContext(); + Requests[1005].RequestServices = CreateServices(); + Requests[1005].Request.Method = "GET"; + Requests[1005].Request.Path = "/subscriptions/52fdc34a-6c10-/providers/Microsoft.MachineLearning/workspaces"; + Requests[1006] = new DefaultHttpContext(); + Requests[1006].RequestServices = CreateServices(); + Requests[1006].Request.Method = "GET"; + Requests[1006].Request.Path = "/subscriptions/5c89d884-3d39-/providers/Microsoft.MachineLearningCompute/operationalizationClusters"; + Requests[1007] = new DefaultHttpContext(); + Requests[1007].RequestServices = CreateServices(); + Requests[1007].Request.Method = "GET"; + Requests[1007].Request.Path = "/subscriptions/2c76e406-d2b1-/providers/Microsoft.MachineLearningExperimentation/accounts"; + Requests[1008] = new DefaultHttpContext(); + Requests[1008].RequestServices = CreateServices(); + Requests[1008].Request.Method = "GET"; + Requests[1008].Request.Path = "/subscriptions/a2fe8944-808a-/providers/Microsoft.MachineLearningServices/workspaces"; + Requests[1009] = new DefaultHttpContext(); + Requests[1009].RequestServices = CreateServices(); + Requests[1009].Request.Method = "GET"; + Requests[1009].Request.Path = "/subscriptions/807bb23c-6a9d-/providers/Microsoft.ManagedIdentity/userAssignedIdentities"; + Requests[1010] = new DefaultHttpContext(); + Requests[1010].RequestServices = CreateServices(); + Requests[1010].Request.Method = "GET"; + Requests[1010].Request.Path = "/subscriptions/c77a28f7-54f1-/providers/Microsoft.Maps/accounts"; + Requests[1011] = new DefaultHttpContext(); + Requests[1011].RequestServices = CreateServices(); + Requests[1011].Request.Method = "POST"; + Requests[1011].Request.Path = "/subscriptions/a58b330b-15f2-/providers/Microsoft.Media/CheckNameAvailability"; + Requests[1012] = new DefaultHttpContext(); + Requests[1012].RequestServices = CreateServices(); + Requests[1012].Request.Method = "GET"; + Requests[1012].Request.Path = "/subscriptions/cc0aa715-5a43-/providers/Microsoft.Media/mediaservices"; + Requests[1013] = new DefaultHttpContext(); + Requests[1013].RequestServices = CreateServices(); + Requests[1013].Request.Method = "GET"; + Requests[1013].Request.Path = "/subscriptions/08f789a7-81d0-/providers/Microsoft.Network.Admin/adminLoadBalancers"; + Requests[1014] = new DefaultHttpContext(); + Requests[1014].RequestServices = CreateServices(); + Requests[1014].Request.Method = "GET"; + Requests[1014].Request.Path = "/subscriptions/88528d53-d7fb-/providers/Microsoft.Network.Admin/adminOverview"; + Requests[1015] = new DefaultHttpContext(); + Requests[1015].RequestServices = CreateServices(); + Requests[1015].Request.Method = "GET"; + Requests[1015].Request.Path = "/subscriptions/11593304-b279-/providers/Microsoft.Network.Admin/adminPublicIpAddresses"; + Requests[1016] = new DefaultHttpContext(); + Requests[1016].RequestServices = CreateServices(); + Requests[1016].Request.Method = "GET"; + Requests[1016].Request.Path = "/subscriptions/a96762e9-f34f-/providers/Microsoft.Network.Admin/adminVirtualNetworks"; + Requests[1017] = new DefaultHttpContext(); + Requests[1017].RequestServices = CreateServices(); + Requests[1017].Request.Method = "GET"; + Requests[1017].Request.Path = "/subscriptions/71594e4d-64fe-/providers/Microsoft.Network/applicationGatewayAvailableWafRuleSets"; + Requests[1018] = new DefaultHttpContext(); + Requests[1018].RequestServices = CreateServices(); + Requests[1018].Request.Method = "GET"; + Requests[1018].Request.Path = "/subscriptions/d8252758-af67-/providers/Microsoft.Network/applicationGateways"; + Requests[1019] = new DefaultHttpContext(); + Requests[1019].RequestServices = CreateServices(); + Requests[1019].Request.Method = "GET"; + Requests[1019].Request.Path = "/subscriptions/68a3bd99-ac0e-/providers/Microsoft.Network/applicationSecurityGroups"; + Requests[1020] = new DefaultHttpContext(); + Requests[1020].RequestServices = CreateServices(); + Requests[1020].Request.Method = "GET"; + Requests[1020].Request.Path = "/subscriptions/884a681e-a255-/providers/Microsoft.Network/bgpServiceCommunities"; + Requests[1021] = new DefaultHttpContext(); + Requests[1021].RequestServices = CreateServices(); + Requests[1021].Request.Method = "GET"; + Requests[1021].Request.Path = "/subscriptions/963cfc45-bd9b-/providers/Microsoft.Network/ddosProtectionPlans"; + Requests[1022] = new DefaultHttpContext(); + Requests[1022].RequestServices = CreateServices(); + Requests[1022].Request.Method = "GET"; + Requests[1022].Request.Path = "/subscriptions/fedc37c5-f484-/providers/Microsoft.Network/dnszones"; + Requests[1023] = new DefaultHttpContext(); + Requests[1023].RequestServices = CreateServices(); + Requests[1023].Request.Method = "GET"; + Requests[1023].Request.Path = "/subscriptions/b035912e-9702-/providers/Microsoft.Network/expressRouteCircuits"; + Requests[1024] = new DefaultHttpContext(); + Requests[1024].RequestServices = CreateServices(); + Requests[1024].Request.Method = "GET"; + Requests[1024].Request.Path = "/subscriptions/88bd1b39-78bf-/providers/Microsoft.Network/expressRouteCrossConnections"; + Requests[1025] = new DefaultHttpContext(); + Requests[1025].RequestServices = CreateServices(); + Requests[1025].Request.Method = "GET"; + Requests[1025].Request.Path = "/subscriptions/25279605-40d1-/providers/Microsoft.Network/expressRouteServiceProviders"; + Requests[1026] = new DefaultHttpContext(); + Requests[1026].RequestServices = CreateServices(); + Requests[1026].Request.Method = "GET"; + Requests[1026].Request.Path = "/subscriptions/de323d9d-3676-/providers/Microsoft.Network/loadBalancers"; + Requests[1027] = new DefaultHttpContext(); + Requests[1027].RequestServices = CreateServices(); + Requests[1027].Request.Method = "GET"; + Requests[1027].Request.Path = "/subscriptions/852e11ab-3639-/providers/Microsoft.Network/networkInterfaces"; + Requests[1028] = new DefaultHttpContext(); + Requests[1028].RequestServices = CreateServices(); + Requests[1028].Request.Method = "GET"; + Requests[1028].Request.Path = "/subscriptions/62853ea7-0c8b-/providers/Microsoft.Network/networkSecurityGroups"; + Requests[1029] = new DefaultHttpContext(); + Requests[1029].RequestServices = CreateServices(); + Requests[1029].Request.Method = "GET"; + Requests[1029].Request.Path = "/subscriptions/bd8cb706-0640-/providers/Microsoft.Network/networkWatchers"; + Requests[1030] = new DefaultHttpContext(); + Requests[1030].RequestServices = CreateServices(); + Requests[1030].Request.Method = "GET"; + Requests[1030].Request.Path = "/subscriptions/74055f37-0834-/providers/Microsoft.Network/publicIPAddresses"; + Requests[1031] = new DefaultHttpContext(); + Requests[1031].RequestServices = CreateServices(); + Requests[1031].Request.Method = "GET"; + Requests[1031].Request.Path = "/subscriptions/af96f5eb-e9a7-/providers/Microsoft.Network/routeFilters"; + Requests[1032] = new DefaultHttpContext(); + Requests[1032].RequestServices = CreateServices(); + Requests[1032].Request.Method = "GET"; + Requests[1032].Request.Path = "/subscriptions/5554c946-2662-/providers/Microsoft.Network/routeTables"; + Requests[1033] = new DefaultHttpContext(); + Requests[1033].RequestServices = CreateServices(); + Requests[1033].Request.Method = "GET"; + Requests[1033].Request.Path = "/subscriptions/de047bdf-40fb-/providers/Microsoft.Network/trafficmanagerprofiles"; + Requests[1034] = new DefaultHttpContext(); + Requests[1034].RequestServices = CreateServices(); + Requests[1034].Request.Method = "DELETE"; + Requests[1034].Request.Path = "/subscriptions/a1f47576-2fb6-/providers/Microsoft.Network/trafficManagerUserMetricsKeys"; + Requests[1035] = new DefaultHttpContext(); + Requests[1035].RequestServices = CreateServices(); + Requests[1035].Request.Method = "PUT"; + Requests[1035].Request.Path = "/subscriptions/8009859d-d974-/providers/Microsoft.Network/trafficManagerUserMetricsKeys"; + Requests[1036] = new DefaultHttpContext(); + Requests[1036].RequestServices = CreateServices(); + Requests[1036].Request.Method = "GET"; + Requests[1036].Request.Path = "/subscriptions/8424a2df-e09c-/providers/Microsoft.Network/trafficManagerUserMetricsKeys"; + Requests[1037] = new DefaultHttpContext(); + Requests[1037].RequestServices = CreateServices(); + Requests[1037].Request.Method = "GET"; + Requests[1037].Request.Path = "/subscriptions/28e10f36-916b-/providers/Microsoft.Network/virtualNetworks"; + Requests[1038] = new DefaultHttpContext(); + Requests[1038].RequestServices = CreateServices(); + Requests[1038].Request.Method = "POST"; + Requests[1038].Request.Path = "/subscriptions/4c43efb2-83df-/providers/Microsoft.NotificationHubs/checkNamespaceAvailability"; + Requests[1039] = new DefaultHttpContext(); + Requests[1039].RequestServices = CreateServices(); + Requests[1039].Request.Method = "GET"; + Requests[1039].Request.Path = "/subscriptions/8ba19503-53da-/providers/Microsoft.NotificationHubs/namespaces"; + Requests[1040] = new DefaultHttpContext(); + Requests[1040].RequestServices = CreateServices(); + Requests[1040].Request.Method = "GET"; + Requests[1040].Request.Path = "/subscriptions/ba8a95df-f742-/providers/Microsoft.OperationalInsights/linkTargets"; + Requests[1041] = new DefaultHttpContext(); + Requests[1041].RequestServices = CreateServices(); + Requests[1041].Request.Method = "GET"; + Requests[1041].Request.Path = "/subscriptions/bc28ee82-a370-/providers/Microsoft.OperationalInsights/workspaces"; + Requests[1042] = new DefaultHttpContext(); + Requests[1042].RequestServices = CreateServices(); + Requests[1042].Request.Method = "GET"; + Requests[1042].Request.Path = "/subscriptions/a2c5cce2-1cd1-/providers/Microsoft.OperationsManagement/ManagementAssociations"; + Requests[1043] = new DefaultHttpContext(); + Requests[1043].RequestServices = CreateServices(); + Requests[1043].Request.Method = "GET"; + Requests[1043].Request.Path = "/subscriptions/af482e37-5767-/providers/Microsoft.OperationsManagement/ManagementConfigurations"; + Requests[1044] = new DefaultHttpContext(); + Requests[1044].RequestServices = CreateServices(); + Requests[1044].Request.Method = "GET"; + Requests[1044].Request.Path = "/subscriptions/6769846a-79ed-/providers/Microsoft.OperationsManagement/solutions"; + Requests[1045] = new DefaultHttpContext(); + Requests[1045].RequestServices = CreateServices(); + Requests[1045].Request.Method = "GET"; + Requests[1045].Request.Path = "/subscriptions/ec5760af-793f-/providers/Microsoft.PowerBI/workspaceCollections"; + Requests[1046] = new DefaultHttpContext(); + Requests[1046].RequestServices = CreateServices(); + Requests[1046].Request.Method = "GET"; + Requests[1046].Request.Path = "/subscriptions/66125a82-b772-/providers/Microsoft.PowerBIDedicated/capacities"; + Requests[1047] = new DefaultHttpContext(); + Requests[1047].RequestServices = CreateServices(); + Requests[1047].Request.Method = "GET"; + Requests[1047].Request.Path = "/subscriptions/cc428b3c-67a5-/providers/Microsoft.PowerBIDedicated/skus"; + Requests[1048] = new DefaultHttpContext(); + Requests[1048].RequestServices = CreateServices(); + Requests[1048].Request.Method = "GET"; + Requests[1048].Request.Path = "/subscriptions/b036a651-fe3d-/providers/Microsoft.RecoveryServices/vaults"; + Requests[1049] = new DefaultHttpContext(); + Requests[1049].RequestServices = CreateServices(); + Requests[1049].Request.Method = "POST"; + Requests[1049].Request.Path = "/subscriptions/5d4023a3-9545-/providers/Microsoft.Relay/checkNameAvailability"; + Requests[1050] = new DefaultHttpContext(); + Requests[1050].RequestServices = CreateServices(); + Requests[1050].Request.Method = "GET"; + Requests[1050].Request.Path = "/subscriptions/f0a6a841-6dfd-/providers/Microsoft.Relay/namespaces"; + Requests[1051] = new DefaultHttpContext(); + Requests[1051].RequestServices = CreateServices(); + Requests[1051].Request.Method = "GET"; + Requests[1051].Request.Path = "/subscriptions/704a7a62-34f5-/providers/Microsoft.ResourceHealth/availabilityStatuses"; + Requests[1052] = new DefaultHttpContext(); + Requests[1052].RequestServices = CreateServices(); + Requests[1052].Request.Method = "GET"; + Requests[1052].Request.Path = "/subscriptions/aca08c7f-1898-/providers/Microsoft.Resources/links"; + Requests[1053] = new DefaultHttpContext(); + Requests[1053].RequestServices = CreateServices(); + Requests[1053].Request.Method = "GET"; + Requests[1053].Request.Path = "/subscriptions/363b10b6-bbfb-/providers/Microsoft.Scheduler/jobCollections"; + Requests[1054] = new DefaultHttpContext(); + Requests[1054].RequestServices = CreateServices(); + Requests[1054].Request.Method = "POST"; + Requests[1054].Request.Path = "/subscriptions/578b6017-3f04-/providers/Microsoft.Search/checkNameAvailability"; + Requests[1055] = new DefaultHttpContext(); + Requests[1055].RequestServices = CreateServices(); + Requests[1055].Request.Method = "GET"; + Requests[1055].Request.Path = "/subscriptions/33467e7b-db71-/providers/Microsoft.Security/alerts"; + Requests[1056] = new DefaultHttpContext(); + Requests[1056].RequestServices = CreateServices(); + Requests[1056].Request.Method = "GET"; + Requests[1056].Request.Path = "/subscriptions/6d986773-38ea-/providers/Microsoft.Security/autoProvisioningSettings"; + Requests[1057] = new DefaultHttpContext(); + Requests[1057].RequestServices = CreateServices(); + Requests[1057].Request.Method = "GET"; + Requests[1057].Request.Path = "/subscriptions/9f0401ce-0d90-/providers/Microsoft.Security/discoveredSecuritySolutions"; + Requests[1058] = new DefaultHttpContext(); + Requests[1058].RequestServices = CreateServices(); + Requests[1058].Request.Method = "GET"; + Requests[1058].Request.Path = "/subscriptions/90c3dc15-e5a0-/providers/Microsoft.Security/externalSecuritySolutions"; + Requests[1059] = new DefaultHttpContext(); + Requests[1059].RequestServices = CreateServices(); + Requests[1059].Request.Method = "GET"; + Requests[1059].Request.Path = "/subscriptions/f819e04b-bcc6-/providers/Microsoft.Security/jitNetworkAccessPolicies"; + Requests[1060] = new DefaultHttpContext(); + Requests[1060].RequestServices = CreateServices(); + Requests[1060].Request.Method = "GET"; + Requests[1060].Request.Path = "/subscriptions/3d25a6f3-7308-/providers/Microsoft.Security/locations"; + Requests[1061] = new DefaultHttpContext(); + Requests[1061].RequestServices = CreateServices(); + Requests[1061].Request.Method = "GET"; + Requests[1061].Request.Path = "/subscriptions/550c9b3c-b7f8-/providers/Microsoft.Security/pricings"; + Requests[1062] = new DefaultHttpContext(); + Requests[1062].RequestServices = CreateServices(); + Requests[1062].Request.Method = "GET"; + Requests[1062].Request.Path = "/subscriptions/2627c1ca-cbbd-/providers/Microsoft.Security/securityContacts"; + Requests[1063] = new DefaultHttpContext(); + Requests[1063].RequestServices = CreateServices(); + Requests[1063].Request.Method = "GET"; + Requests[1063].Request.Path = "/subscriptions/80a73761-56af-/providers/Microsoft.Security/tasks"; + Requests[1064] = new DefaultHttpContext(); + Requests[1064].RequestServices = CreateServices(); + Requests[1064].Request.Method = "GET"; + Requests[1064].Request.Path = "/subscriptions/a28076ef-1904-/providers/Microsoft.Security/workspaceSettings"; + Requests[1065] = new DefaultHttpContext(); + Requests[1065].RequestServices = CreateServices(); + Requests[1065].Request.Method = "GET"; + Requests[1065].Request.Path = "/subscriptions/44df1197-51b0-/providers/Microsoft.ServerManagement/gateways"; + Requests[1066] = new DefaultHttpContext(); + Requests[1066].RequestServices = CreateServices(); + Requests[1066].Request.Method = "GET"; + Requests[1066].Request.Path = "/subscriptions/81f9fd80-6072-/providers/Microsoft.ServerManagement/nodes"; + Requests[1067] = new DefaultHttpContext(); + Requests[1067].RequestServices = CreateServices(); + Requests[1067].Request.Method = "POST"; + Requests[1067].Request.Path = "/subscriptions/563cebfe-7715-/providers/Microsoft.ServiceBus/CheckNameAvailability"; + Requests[1068] = new DefaultHttpContext(); + Requests[1068].RequestServices = CreateServices(); + Requests[1068].Request.Method = "POST"; + Requests[1068].Request.Path = "/subscriptions/225f2890-62d2-/providers/Microsoft.ServiceBus/CheckNameSpaceAvailability"; + Requests[1069] = new DefaultHttpContext(); + Requests[1069].RequestServices = CreateServices(); + Requests[1069].Request.Method = "GET"; + Requests[1069].Request.Path = "/subscriptions/58f5fca4-c1ba-/providers/Microsoft.ServiceBus/namespaces"; + Requests[1070] = new DefaultHttpContext(); + Requests[1070].RequestServices = CreateServices(); + Requests[1070].Request.Method = "GET"; + Requests[1070].Request.Path = "/subscriptions/b014e3c8-6b2e-/providers/Microsoft.ServiceBus/premiumMessagingRegions"; + Requests[1071] = new DefaultHttpContext(); + Requests[1071].RequestServices = CreateServices(); + Requests[1071].Request.Method = "GET"; + Requests[1071].Request.Path = "/subscriptions/1ada5511-02db-/providers/Microsoft.ServiceFabric/clusters"; + Requests[1072] = new DefaultHttpContext(); + Requests[1072].RequestServices = CreateServices(); + Requests[1072].Request.Method = "GET"; + Requests[1072].Request.Path = "/subscriptions/178a5044-0490-/providers/Microsoft.SignalRService/SignalR"; + Requests[1073] = new DefaultHttpContext(); + Requests[1073].RequestServices = CreateServices(); + Requests[1073].Request.Method = "GET"; + Requests[1073].Request.Path = "/subscriptions/d2ea0cea-0c68-/providers/Microsoft.Solutions/appliances"; + Requests[1074] = new DefaultHttpContext(); + Requests[1074].RequestServices = CreateServices(); + Requests[1074].Request.Method = "GET"; + Requests[1074].Request.Path = "/subscriptions/d9ff1703-4af5-/providers/Microsoft.Solutions/applications"; + Requests[1075] = new DefaultHttpContext(); + Requests[1075].RequestServices = CreateServices(); + Requests[1075].Request.Method = "POST"; + Requests[1075].Request.Path = "/subscriptions/489d24e2-fef1-/providers/Microsoft.Sql/checkNameAvailability"; + Requests[1076] = new DefaultHttpContext(); + Requests[1076].RequestServices = CreateServices(); + Requests[1076].Request.Method = "GET"; + Requests[1076].Request.Path = "/subscriptions/7c102957-835d-/providers/Microsoft.Sql/managedInstances"; + Requests[1077] = new DefaultHttpContext(); + Requests[1077].RequestServices = CreateServices(); + Requests[1077].Request.Method = "GET"; + Requests[1077].Request.Path = "/subscriptions/5aee771b-ae0a-/providers/Microsoft.Sql/servers"; + Requests[1078] = new DefaultHttpContext(); + Requests[1078].RequestServices = CreateServices(); + Requests[1078].Request.Method = "POST"; + Requests[1078].Request.Path = "/subscriptions/40ba2598-1243-/providers/Microsoft.Storage/checkNameAvailability"; + Requests[1079] = new DefaultHttpContext(); + Requests[1079].RequestServices = CreateServices(); + Requests[1079].Request.Method = "GET"; + Requests[1079].Request.Path = "/subscriptions/00299657-2efd-/providers/Microsoft.Storage/skus"; + Requests[1080] = new DefaultHttpContext(); + Requests[1080].RequestServices = CreateServices(); + Requests[1080].Request.Method = "GET"; + Requests[1080].Request.Path = "/subscriptions/487bf093-35c4-/providers/Microsoft.Storage/storageAccounts"; + Requests[1081] = new DefaultHttpContext(); + Requests[1081].RequestServices = CreateServices(); + Requests[1081].Request.Method = "GET"; + Requests[1081].Request.Path = "/subscriptions/fd9fe1e6-0491-/providers/Microsoft.Storage/usages"; + Requests[1082] = new DefaultHttpContext(); + Requests[1082].RequestServices = CreateServices(); + Requests[1082].Request.Method = "GET"; + Requests[1082].Request.Path = "/subscriptions/132cf7a8-e639-/providers/Microsoft.StorSimple/managers"; + Requests[1083] = new DefaultHttpContext(); + Requests[1083].RequestServices = CreateServices(); + Requests[1083].Request.Method = "GET"; + Requests[1083].Request.Path = "/subscriptions/40557ca5-3557-/providers/Microsoft.StreamAnalytics/streamingjobs"; + Requests[1084] = new DefaultHttpContext(); + Requests[1084].RequestServices = CreateServices(); + Requests[1084].Request.Method = "POST"; + Requests[1084].Request.Path = "/subscriptions/58eb8c1a-41d7-/providers/Microsoft.Subscriptions.Admin/checkNameAvailability"; + Requests[1085] = new DefaultHttpContext(); + Requests[1085].RequestServices = CreateServices(); + Requests[1085].Request.Method = "GET"; + Requests[1085].Request.Path = "/subscriptions/d00baaa0-0a1f-/providers/Microsoft.Subscriptions.Admin/delegatedProviders"; + Requests[1086] = new DefaultHttpContext(); + Requests[1086].RequestServices = CreateServices(); + Requests[1086].Request.Method = "GET"; + Requests[1086].Request.Path = "/subscriptions/52cc570f-34af-/providers/Microsoft.Subscriptions.Admin/locations"; + Requests[1087] = new DefaultHttpContext(); + Requests[1087].RequestServices = CreateServices(); + Requests[1087].Request.Method = "POST"; + Requests[1087].Request.Path = "/subscriptions/03375967-c9e3-/providers/Microsoft.Subscriptions.Admin/moveSubscriptions"; + Requests[1088] = new DefaultHttpContext(); + Requests[1088].RequestServices = CreateServices(); + Requests[1088].Request.Method = "GET"; + Requests[1088].Request.Path = "/subscriptions/b6c779c3-5152-/providers/Microsoft.Subscriptions.Admin/offers"; + Requests[1089] = new DefaultHttpContext(); + Requests[1089].RequestServices = CreateServices(); + Requests[1089].Request.Method = "GET"; + Requests[1089].Request.Path = "/subscriptions/d69e68ff-12ac-/providers/Microsoft.Subscriptions.Admin/plans"; + Requests[1090] = new DefaultHttpContext(); + Requests[1090].RequestServices = CreateServices(); + Requests[1090].Request.Method = "POST"; + Requests[1090].Request.Path = "/subscriptions/6078dad4-200d-/providers/Microsoft.Subscriptions.Admin/restoreData"; + Requests[1091] = new DefaultHttpContext(); + Requests[1091].RequestServices = CreateServices(); + Requests[1091].Request.Method = "GET"; + Requests[1091].Request.Path = "/subscriptions/8d36d204-2cb8-/providers/Microsoft.Subscriptions.Admin/subscriptions"; + Requests[1092] = new DefaultHttpContext(); + Requests[1092].RequestServices = CreateServices(); + Requests[1092].Request.Method = "POST"; + Requests[1092].Request.Path = "/subscriptions/9de6f370-3bf4-/providers/Microsoft.Subscriptions.Admin/updateEncryption"; + Requests[1093] = new DefaultHttpContext(); + Requests[1093].RequestServices = CreateServices(); + Requests[1093].Request.Method = "POST"; + Requests[1093].Request.Path = "/subscriptions/78f48558-740a-/providers/Microsoft.Subscriptions.Admin/validateMoveSubscriptions"; + Requests[1094] = new DefaultHttpContext(); + Requests[1094].RequestServices = CreateServices(); + Requests[1094].Request.Method = "GET"; + Requests[1094].Request.Path = "/subscriptions/42438a11-50df-/providers/Microsoft.TimeSeriesInsights/environments"; + Requests[1095] = new DefaultHttpContext(); + Requests[1095].RequestServices = CreateServices(); + Requests[1095].Request.Method = "POST"; + Requests[1095].Request.Path = "/subscriptions/73f1aeed-9af5-/providers/microsoft.visualstudio/checkNameAvailability"; + Requests[1096] = new DefaultHttpContext(); + Requests[1096].RequestServices = CreateServices(); + Requests[1096].Request.Method = "GET"; + Requests[1096].Request.Path = "/subscriptions/0544cf4c-ff84-/providers/Microsoft.Web/availableStacks"; + Requests[1097] = new DefaultHttpContext(); + Requests[1097].RequestServices = CreateServices(); + Requests[1097].Request.Method = "GET"; + Requests[1097].Request.Path = "/subscriptions/04605dc7-fcb9-/providers/Microsoft.Web/billingMeters"; + Requests[1098] = new DefaultHttpContext(); + Requests[1098].RequestServices = CreateServices(); + Requests[1098].Request.Method = "GET"; + Requests[1098].Request.Path = "/subscriptions/a59dce8e-cbc1-/providers/Microsoft.Web/certificates"; + Requests[1099] = new DefaultHttpContext(); + Requests[1099].RequestServices = CreateServices(); + Requests[1099].Request.Method = "POST"; + Requests[1099].Request.Path = "/subscriptions/44d03a09-6f1b-/providers/Microsoft.Web/checknameavailability"; + Requests[1100] = new DefaultHttpContext(); + Requests[1100].RequestServices = CreateServices(); + Requests[1100].Request.Method = "GET"; + Requests[1100].Request.Path = "/subscriptions/574554f7-57ff-/providers/Microsoft.Web/classicMobileServices"; + Requests[1101] = new DefaultHttpContext(); + Requests[1101].RequestServices = CreateServices(); + Requests[1101].Request.Method = "GET"; + Requests[1101].Request.Path = "/subscriptions/e44cd816-1d24-/providers/Microsoft.Web/connectionGateways"; + Requests[1102] = new DefaultHttpContext(); + Requests[1102].RequestServices = CreateServices(); + Requests[1102].Request.Method = "GET"; + Requests[1102].Request.Path = "/subscriptions/b9ad6a66-c5fa-/providers/Microsoft.Web/customApis"; + Requests[1103] = new DefaultHttpContext(); + Requests[1103].RequestServices = CreateServices(); + Requests[1103].Request.Method = "GET"; + Requests[1103].Request.Path = "/subscriptions/015bbd01-b7cc-/providers/Microsoft.Web/deletedSites"; + Requests[1104] = new DefaultHttpContext(); + Requests[1104].RequestServices = CreateServices(); + Requests[1104].Request.Method = "GET"; + Requests[1104].Request.Path = "/subscriptions/7de8c312-a38f-/providers/Microsoft.Web/deploymentLocations"; + Requests[1105] = new DefaultHttpContext(); + Requests[1105].RequestServices = CreateServices(); + Requests[1105].Request.Method = "GET"; + Requests[1105].Request.Path = "/subscriptions/80321295-d5ec-/providers/Microsoft.Web/geoRegions"; + Requests[1106] = new DefaultHttpContext(); + Requests[1106].RequestServices = CreateServices(); + Requests[1106].Request.Method = "GET"; + Requests[1106].Request.Path = "/subscriptions/0b30fa81-9792-/providers/Microsoft.Web/hostingEnvironments"; + Requests[1107] = new DefaultHttpContext(); + Requests[1107].RequestServices = CreateServices(); + Requests[1107].Request.Method = "GET"; + Requests[1107].Request.Path = "/subscriptions/3f6c8dc7-7fe7-/providers/Microsoft.Web/ishostingenvironmentnameavailable"; + Requests[1108] = new DefaultHttpContext(); + Requests[1108].RequestServices = CreateServices(); + Requests[1108].Request.Method = "POST"; + Requests[1108].Request.Path = "/subscriptions/620d2dbe-be5a-/providers/Microsoft.Web/listSitesAssignedToHostName"; + Requests[1109] = new DefaultHttpContext(); + Requests[1109].RequestServices = CreateServices(); + Requests[1109].Request.Method = "GET"; + Requests[1109].Request.Path = "/subscriptions/4e966d1e-8db6-/providers/Microsoft.Web/managedHostingEnvironments"; + Requests[1110] = new DefaultHttpContext(); + Requests[1110].RequestServices = CreateServices(); + Requests[1110].Request.Method = "GET"; + Requests[1110].Request.Path = "/subscriptions/5811519a-7478-/providers/Microsoft.Web/premieraddonoffers"; + Requests[1111] = new DefaultHttpContext(); + Requests[1111].RequestServices = CreateServices(); + Requests[1111].Request.Method = "GET"; + Requests[1111].Request.Path = "/subscriptions/b1a9cbd9-1628-/providers/Microsoft.Web/publishingCredentials"; + Requests[1112] = new DefaultHttpContext(); + Requests[1112].RequestServices = CreateServices(); + Requests[1112].Request.Method = "PUT"; + Requests[1112].Request.Path = "/subscriptions/d7ed5081-7a3f-/providers/Microsoft.Web/publishingCredentials"; + Requests[1113] = new DefaultHttpContext(); + Requests[1113].RequestServices = CreateServices(); + Requests[1113].Request.Method = "GET"; + Requests[1113].Request.Path = "/subscriptions/3ba64e9e-44af-/providers/Microsoft.Web/recommendations"; + Requests[1114] = new DefaultHttpContext(); + Requests[1114].RequestServices = CreateServices(); + Requests[1114].Request.Method = "GET"; + Requests[1114].Request.Path = "/subscriptions/012daf3c-e513-/providers/Microsoft.Web/resourceHealthMetadata"; + Requests[1115] = new DefaultHttpContext(); + Requests[1115].RequestServices = CreateServices(); + Requests[1115].Request.Method = "GET"; + Requests[1115].Request.Path = "/subscriptions/0690ec47-f1f4-/providers/Microsoft.Web/serverfarms"; + Requests[1116] = new DefaultHttpContext(); + Requests[1116].RequestServices = CreateServices(); + Requests[1116].Request.Method = "GET"; + Requests[1116].Request.Path = "/subscriptions/b394c8f5-8a8e-/providers/Microsoft.Web/sites"; + Requests[1117] = new DefaultHttpContext(); + Requests[1117].RequestServices = CreateServices(); + Requests[1117].Request.Method = "GET"; + Requests[1117].Request.Path = "/subscriptions/0f5bd1e6-6d54-/providers/Microsoft.Web/skus"; + Requests[1118] = new DefaultHttpContext(); + Requests[1118].RequestServices = CreateServices(); + Requests[1118].Request.Method = "POST"; + Requests[1118].Request.Path = "/subscriptions/d94b2663-3158-/providers/Microsoft.Web/verifyHostingEnvironmentVnet"; + Requests[1119] = new DefaultHttpContext(); + Requests[1119].RequestServices = CreateServices(); + Requests[1119].Request.Method = "POST"; + Requests[1119].Request.Path = "/Applications/e880d90d-becf/$/GetServices/$/Create"; + Requests[1120] = new DefaultHttpContext(); + Requests[1120].RequestServices = CreateServices(); + Requests[1120].Request.Method = "POST"; + Requests[1120].Request.Path = "/Applications/c8c7e77e-3db4/$/GetServices/$/CreateFromTemplate"; + Requests[1121] = new DefaultHttpContext(); + Requests[1121].RequestServices = CreateServices(); + Requests[1121].Request.Method = "POST"; + Requests[1121].Request.Path = "/Applications/52cea4ab-4850-4/$/GetServiceGroups/$/CreateServiceGroupFromTemplate"; + Requests[1122] = new DefaultHttpContext(); + Requests[1122].RequestServices = CreateServices(); + Requests[1122].Request.Method = "POST"; + Requests[1122].Request.Path = "/Applications/19392772-d74b-4/$/GetServices/$/CreateServiceGroup"; + Requests[1123] = new DefaultHttpContext(); + Requests[1123].RequestServices = CreateServices(); + Requests[1123].Request.Method = "POST"; + Requests[1123].Request.Path = "/Names/51d253/$/GetProperties/$/SubmitBatch"; + Requests[1124] = new DefaultHttpContext(); + Requests[1124].RequestServices = CreateServices(); + Requests[1124].Request.Method = "POST"; + Requests[1124].Request.Path = "/Services/c0b2d6f1-2d/$/GetPartitions/$/Recover"; + Requests[1125] = new DefaultHttpContext(); + Requests[1125].RequestServices = CreateServices(); + Requests[1125].Request.Method = "GET"; + Requests[1125].Request.Path = "/subscriptions/12aaaec1-1396-/providers/Microsoft.Billing/invoices/latest"; + Requests[1126] = new DefaultHttpContext(); + Requests[1126].RequestServices = CreateServices(); + Requests[1126].Request.Method = "GET"; + Requests[1126].Request.Path = "/subscriptions/d5972adf-758e-/providers/Microsoft.Consumption/pricesheets/default"; + Requests[1127] = new DefaultHttpContext(); + Requests[1127].RequestServices = CreateServices(); + Requests[1127].Request.Method = "GET"; + Requests[1127].Request.Path = "/subscriptions/422cb620-6073-/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default"; + Requests[1128] = new DefaultHttpContext(); + Requests[1128].RequestServices = CreateServices(); + Requests[1128].Request.Method = "POST"; + Requests[1128].Request.Path = "/subscriptions/b17910d7-68ad-/providers/Microsoft.Web/recommendations/reset"; + Requests[1129] = new DefaultHttpContext(); + Requests[1129].RequestServices = CreateServices(); + Requests[1129].Request.Method = "POST"; + Requests[1129].Request.Path = "/subscriptions/8baf4f11-8d6d-/providers/Microsoft.Addons/supportProviders/canonical/listSupportPlanInfo"; + Requests[1130] = new DefaultHttpContext(); + Requests[1130].RequestServices = CreateServices(); + Requests[1130].Request.Method = "GET"; + Requests[1130].Request.Path = "/subscriptions/840367a0-dc58-/providers/microsoft.insights/eventtypes/management/values"; + Requests[1131] = new DefaultHttpContext(); + Requests[1131].RequestServices = CreateServices(); + Requests[1131].Request.Method = "GET"; + Requests[1131].Request.Path = "/subscriptions/a6994d5f-c459-/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies"; + Requests[1132] = new DefaultHttpContext(); + Requests[1132].RequestServices = CreateServices(); + Requests[1132].Request.Method = "GET"; + Requests[1132].Request.Path = "/subscriptions/7e281b1b-4ec5-/providers/Microsoft.Network/applicationGatewayAvailableSslOptions/default/predefinedPolicies/7be2d30c-a335-43b5-a"; + Requests[1133] = new DefaultHttpContext(); + Requests[1133].RequestServices = CreateServices(); + Requests[1133].Request.Method = "GET"; + Requests[1133].Request.Path = "/subscriptions/ecabb61d-1cce-/providers/Microsoft.Advisor/generateRecommendations/9cd44b3f-6e"; + Requests[1134] = new DefaultHttpContext(); + Requests[1134].RequestServices = CreateServices(); + Requests[1134].Request.Method = "PUT"; + Requests[1134].Request.Path = "/subscriptions/b7636d16-7f6d-/providers/Microsoft.Authorization/locks/69106483"; + Requests[1135] = new DefaultHttpContext(); + Requests[1135].RequestServices = CreateServices(); + Requests[1135].Request.Method = "GET"; + Requests[1135].Request.Path = "/subscriptions/917c7d55-eb3c-/providers/Microsoft.Authorization/locks/cb71102b"; + Requests[1136] = new DefaultHttpContext(); + Requests[1136].RequestServices = CreateServices(); + Requests[1136].Request.Method = "DELETE"; + Requests[1136].Request.Path = "/subscriptions/15214889-f041-/providers/Microsoft.Authorization/locks/474498eb"; + Requests[1137] = new DefaultHttpContext(); + Requests[1137].RequestServices = CreateServices(); + Requests[1137].Request.Method = "DELETE"; + Requests[1137].Request.Path = "/subscriptions/be14d324-16c4-/providers/Microsoft.Authorization/policydefinitions/cbe2dafc-1cba-44ce-b"; + Requests[1138] = new DefaultHttpContext(); + Requests[1138].RequestServices = CreateServices(); + Requests[1138].Request.Method = "GET"; + Requests[1138].Request.Path = "/subscriptions/ab607ff8-8d0a-/providers/Microsoft.Authorization/policydefinitions/9742ec17-4385-456b-b"; + Requests[1139] = new DefaultHttpContext(); + Requests[1139].RequestServices = CreateServices(); + Requests[1139].Request.Method = "PUT"; + Requests[1139].Request.Path = "/subscriptions/9e36e7c1-5cd0-/providers/Microsoft.Authorization/policydefinitions/269260fe-b09d-43ca-a"; + Requests[1140] = new DefaultHttpContext(); + Requests[1140].RequestServices = CreateServices(); + Requests[1140].Request.Method = "GET"; + Requests[1140].Request.Path = "/subscriptions/4c3b6b1c-ab01-/providers/Microsoft.Authorization/policySetDefinitions/c69c8156-dfea-4b45-89ba"; + Requests[1141] = new DefaultHttpContext(); + Requests[1141].RequestServices = CreateServices(); + Requests[1141].Request.Method = "DELETE"; + Requests[1141].Request.Path = "/subscriptions/b4a3ccbd-932d-/providers/Microsoft.Authorization/policySetDefinitions/d1cb11eb-0759-4a62-ba3f"; + Requests[1142] = new DefaultHttpContext(); + Requests[1142].RequestServices = CreateServices(); + Requests[1142].Request.Method = "PUT"; + Requests[1142].Request.Path = "/subscriptions/aa6fbfec-8a82-/providers/Microsoft.Authorization/policySetDefinitions/927e9faa-a5a6-4386-b5b6"; + Requests[1143] = new DefaultHttpContext(); + Requests[1143].RequestServices = CreateServices(); + Requests[1143].Request.Method = "GET"; + Requests[1143].Request.Path = "/subscriptions/1b088fdc-5ad9-/providers/Microsoft.Billing/billingPeriods/a35f7a7f-af53-4c4"; + Requests[1144] = new DefaultHttpContext(); + Requests[1144].RequestServices = CreateServices(); + Requests[1144].Request.Method = "GET"; + Requests[1144].Request.Path = "/subscriptions/153412a8-761a-/providers/Microsoft.Billing/invoices/76dd5f65-31"; + Requests[1145] = new DefaultHttpContext(); + Requests[1145].RequestServices = CreateServices(); + Requests[1145].Request.Method = "GET"; + Requests[1145].Request.Path = "/subscriptions/d0aa86a8-ea51-/providers/Microsoft.Consumption/budgets/607da031-b"; + Requests[1146] = new DefaultHttpContext(); + Requests[1146].RequestServices = CreateServices(); + Requests[1146].Request.Method = "PUT"; + Requests[1146].Request.Path = "/subscriptions/3a7ee920-15e7-/providers/Microsoft.Consumption/budgets/c76b8046-5"; + Requests[1147] = new DefaultHttpContext(); + Requests[1147].RequestServices = CreateServices(); + Requests[1147].Request.Method = "DELETE"; + Requests[1147].Request.Path = "/subscriptions/0882a096-646f-/providers/Microsoft.Consumption/budgets/9fe83a9b-7"; + Requests[1148] = new DefaultHttpContext(); + Requests[1148].RequestServices = CreateServices(); + Requests[1148].Request.Method = "GET"; + Requests[1148].Request.Path = "/subscriptions/6e6eecf8-89c7-/providers/Microsoft.DomainRegistration/topLevelDomains/93f74"; + Requests[1149] = new DefaultHttpContext(); + Requests[1149].RequestServices = CreateServices(); + Requests[1149].Request.Method = "DELETE"; + Requests[1149].Request.Path = "/subscriptions/a13af210-d9d6-/providers/microsoft.gallery.admin/galleryItems/dcb199b0-d162-4"; + Requests[1150] = new DefaultHttpContext(); + Requests[1150].RequestServices = CreateServices(); + Requests[1150].Request.Method = "GET"; + Requests[1150].Request.Path = "/subscriptions/e97cf79d-d9b3-/providers/microsoft.gallery.admin/galleryItems/1ab9d654-35ed-4"; + Requests[1151] = new DefaultHttpContext(); + Requests[1151].RequestServices = CreateServices(); + Requests[1151].Request.Method = "PUT"; + Requests[1151].Request.Path = "/subscriptions/f56f2515-1651-/providers/microsoft.insights/logprofiles/0779820c-a249-"; + Requests[1152] = new DefaultHttpContext(); + Requests[1152].RequestServices = CreateServices(); + Requests[1152].Request.Method = "GET"; + Requests[1152].Request.Path = "/subscriptions/7341ee3c-2ff2-/providers/microsoft.insights/logprofiles/3c216b1b-b98a-"; + Requests[1153] = new DefaultHttpContext(); + Requests[1153].RequestServices = CreateServices(); + Requests[1153].Request.Method = "DELETE"; + Requests[1153].Request.Path = "/subscriptions/a5a96ea3-4968-/providers/microsoft.insights/logprofiles/d55f94f9-cf49-"; + Requests[1154] = new DefaultHttpContext(); + Requests[1154].RequestServices = CreateServices(); + Requests[1154].Request.Method = "PATCH"; + Requests[1154].Request.Path = "/subscriptions/7deeaa88-8218-/providers/microsoft.insights/logprofiles/cd18706f-e1e0-"; + Requests[1155] = new DefaultHttpContext(); + Requests[1155].RequestServices = CreateServices(); + Requests[1155].Request.Method = "GET"; + Requests[1155].Request.Path = "/subscriptions/593e6ab8-431e-/providers/Microsoft.Media/mediaservices/5ceb78a0-82"; + Requests[1156] = new DefaultHttpContext(); + Requests[1156].RequestServices = CreateServices(); + Requests[1156].Request.Method = "PUT"; + Requests[1156].Request.Path = "/subscriptions/85813494-a0c4-/providers/Microsoft.Security/autoProvisioningSettings/15fb92d4-bc"; + Requests[1157] = new DefaultHttpContext(); + Requests[1157].RequestServices = CreateServices(); + Requests[1157].Request.Method = "GET"; + Requests[1157].Request.Path = "/subscriptions/6c14d1b2-9a4d-/providers/Microsoft.Security/autoProvisioningSettings/84f224eb-25"; + Requests[1158] = new DefaultHttpContext(); + Requests[1158].RequestServices = CreateServices(); + Requests[1158].Request.Method = "GET"; + Requests[1158].Request.Path = "/subscriptions/88947aab-740e-/providers/Microsoft.Security/locations/515cde4a-fc"; + Requests[1159] = new DefaultHttpContext(); + Requests[1159].RequestServices = CreateServices(); + Requests[1159].Request.Method = "PUT"; + Requests[1159].Request.Path = "/subscriptions/9af58a17-db56-/providers/Microsoft.Security/pricings/b4f241d2-d4"; + Requests[1160] = new DefaultHttpContext(); + Requests[1160].RequestServices = CreateServices(); + Requests[1160].Request.Method = "GET"; + Requests[1160].Request.Path = "/subscriptions/0f3f0fd9-4667-/providers/Microsoft.Security/pricings/acd33713-b3"; + Requests[1161] = new DefaultHttpContext(); + Requests[1161].RequestServices = CreateServices(); + Requests[1161].Request.Method = "PATCH"; + Requests[1161].Request.Path = "/subscriptions/5819e222-3408-/providers/Microsoft.Security/workspaceSettings/f0a65dfc-fdfb-4139-a"; + Requests[1162] = new DefaultHttpContext(); + Requests[1162].RequestServices = CreateServices(); + Requests[1162].Request.Method = "PUT"; + Requests[1162].Request.Path = "/subscriptions/f74e7547-2d9c-/providers/Microsoft.Security/workspaceSettings/b0486deb-d442-494d-b"; + Requests[1163] = new DefaultHttpContext(); + Requests[1163].RequestServices = CreateServices(); + Requests[1163].Request.Method = "GET"; + Requests[1163].Request.Path = "/subscriptions/d23b1e3f-4878-/providers/Microsoft.Security/workspaceSettings/4bba79fd-c3b3-4313-9"; + Requests[1164] = new DefaultHttpContext(); + Requests[1164].RequestServices = CreateServices(); + Requests[1164].Request.Method = "GET"; + Requests[1164].Request.Path = "/subscriptions/8942e98a-ec49-/providers/Microsoft.Subscriptions.Admin/delegatedProviders/78eb9d3d-09f7-436"; + Requests[1165] = new DefaultHttpContext(); + Requests[1165].RequestServices = CreateServices(); + Requests[1165].Request.Method = "DELETE"; + Requests[1165].Request.Path = "/subscriptions/59f3201a-adf6-/providers/Microsoft.Subscriptions.Admin/locations/2c4f6681"; + Requests[1166] = new DefaultHttpContext(); + Requests[1166].RequestServices = CreateServices(); + Requests[1166].Request.Method = "PUT"; + Requests[1166].Request.Path = "/subscriptions/3be1f6c9-2488-/providers/Microsoft.Subscriptions.Admin/locations/463b7911"; + Requests[1167] = new DefaultHttpContext(); + Requests[1167].RequestServices = CreateServices(); + Requests[1167].Request.Method = "GET"; + Requests[1167].Request.Path = "/subscriptions/476e2f21-9d89-/providers/Microsoft.Subscriptions.Admin/locations/882e1056"; + Requests[1168] = new DefaultHttpContext(); + Requests[1168].RequestServices = CreateServices(); + Requests[1168].Request.Method = "GET"; + Requests[1168].Request.Path = "/subscriptions/7d990185-d6ff-/providers/Microsoft.Subscriptions.Admin/subscriptions/4c4e4da2-fd7"; + Requests[1169] = new DefaultHttpContext(); + Requests[1169].RequestServices = CreateServices(); + Requests[1169].Request.Method = "PUT"; + Requests[1169].Request.Path = "/subscriptions/54b0f189-4e0d-/providers/Microsoft.Subscriptions.Admin/subscriptions/72befa9d-ee1"; + Requests[1170] = new DefaultHttpContext(); + Requests[1170].RequestServices = CreateServices(); + Requests[1170].Request.Method = "DELETE"; + Requests[1170].Request.Path = "/subscriptions/a6a3dc23-95f8-/providers/Microsoft.Subscriptions.Admin/subscriptions/63f90ac2-174"; + Requests[1171] = new DefaultHttpContext(); + Requests[1171].RequestServices = CreateServices(); + Requests[1171].Request.Method = "GET"; + Requests[1171].Request.Path = "/subscriptions/ff246b1b-7762-/providers/Microsoft.Web/ishostingenvironmentnameavailable/8ce78"; + Requests[1172] = new DefaultHttpContext(); + Requests[1172].RequestServices = CreateServices(); + Requests[1172].Request.Method = "GET"; + Requests[1172].Request.Path = "/subscriptions/82aaa395-fdb1-/providers/Microsoft.Addons/supportProviders/e1d5d9df-a99/supportPlanTypes"; + Requests[1173] = new DefaultHttpContext(); + Requests[1173].RequestServices = CreateServices(); + Requests[1173].Request.Method = "POST"; + Requests[1173].Request.Path = "/subscriptions/23ca0b55-c790-/providers/Microsoft.AnalysisServices/locations/ad5065b1/checkNameAvailability"; + Requests[1174] = new DefaultHttpContext(); + Requests[1174].RequestServices = CreateServices(); + Requests[1174].Request.Method = "POST"; + Requests[1174].Request.Path = "/subscriptions/f45188dc-3938-/providers/Microsoft.Batch/locations/13509369-959/checkNameAvailability"; + Requests[1175] = new DefaultHttpContext(); + Requests[1175].RequestServices = CreateServices(); + Requests[1175].Request.Method = "GET"; + Requests[1175].Request.Path = "/subscriptions/52ae308d-c575-/providers/Microsoft.Batch/locations/69750529-bb9/quotas"; + Requests[1176] = new DefaultHttpContext(); + Requests[1176].RequestServices = CreateServices(); + Requests[1176].Request.Method = "GET"; + Requests[1176].Request.Path = "/subscriptions/5b226997-5d68-/providers/Microsoft.BatchAI/locations/a1d0edac/usages"; + Requests[1177] = new DefaultHttpContext(); + Requests[1177].RequestServices = CreateServices(); + Requests[1177].Request.Method = "POST"; + Requests[1177].Request.Path = "/subscriptions/e3a88556-c30e-/providers/Microsoft.CognitiveServices/locations/c89754d5/checkSkuAvailability"; + Requests[1178] = new DefaultHttpContext(); + Requests[1178].RequestServices = CreateServices(); + Requests[1178].Request.Method = "GET"; + Requests[1178].Request.Path = "/subscriptions/c772a4a6-8103-/providers/Microsoft.Compute.Admin/locations/a29a5771/quotas"; + Requests[1179] = new DefaultHttpContext(); + Requests[1179].RequestServices = CreateServices(); + Requests[1179].Request.Method = "GET"; + Requests[1179].Request.Path = "/subscriptions/6851776c-2195-/providers/Microsoft.Compute/locations/04d71dbe/publishers"; + Requests[1180] = new DefaultHttpContext(); + Requests[1180].RequestServices = CreateServices(); + Requests[1180].Request.Method = "GET"; + Requests[1180].Request.Path = "/subscriptions/9804e971-c872-/providers/Microsoft.Compute/locations/55854cc0/runCommands"; + Requests[1181] = new DefaultHttpContext(); + Requests[1181].RequestServices = CreateServices(); + Requests[1181].Request.Method = "GET"; + Requests[1181].Request.Path = "/subscriptions/173d7d9e-210a-/providers/Microsoft.Compute/locations/c59fdd8a/usages"; + Requests[1182] = new DefaultHttpContext(); + Requests[1182].RequestServices = CreateServices(); + Requests[1182].Request.Method = "GET"; + Requests[1182].Request.Path = "/subscriptions/e5fd702c-4c01-/providers/Microsoft.Compute/locations/1c8eaea4/vmSizes"; + Requests[1183] = new DefaultHttpContext(); + Requests[1183].RequestServices = CreateServices(); + Requests[1183].Request.Method = "GET"; + Requests[1183].Request.Path = "/subscriptions/29a60245-03ab-/providers/Microsoft.ContainerInstance/locations/19b3ae7b/usages"; + Requests[1184] = new DefaultHttpContext(); + Requests[1184].RequestServices = CreateServices(); + Requests[1184].Request.Method = "GET"; + Requests[1184].Request.Path = "/subscriptions/c0dc7c96-7f8e-/providers/Microsoft.ContainerService/locations/c7f3cd0a/orchestrators"; + Requests[1185] = new DefaultHttpContext(); + Requests[1185].RequestServices = CreateServices(); + Requests[1185].Request.Method = "POST"; + Requests[1185].Request.Path = "/subscriptions/5f5e97ba-f0aa-/providers/Microsoft.DataBox/locations/97996575/availableSkus"; + Requests[1186] = new DefaultHttpContext(); + Requests[1186].RequestServices = CreateServices(); + Requests[1186].Request.Method = "POST"; + Requests[1186].Request.Path = "/subscriptions/681775c8-ad40-/providers/Microsoft.DataBox/locations/bfaa1b6e/validateAddress"; + Requests[1187] = new DefaultHttpContext(); + Requests[1187].RequestServices = CreateServices(); + Requests[1187].Request.Method = "POST"; + Requests[1187].Request.Path = "/subscriptions/019f8ee8-cf83-/providers/Microsoft.DataFactory/locations/5ab27048-6/configureFactoryRepo"; + Requests[1188] = new DefaultHttpContext(); + Requests[1188].RequestServices = CreateServices(); + Requests[1188].Request.Method = "GET"; + Requests[1188].Request.Path = "/subscriptions/72cbf6b2-e0df-/providers/Microsoft.DataLakeAnalytics/locations/54ea6da1/capability"; + Requests[1189] = new DefaultHttpContext(); + Requests[1189].RequestServices = CreateServices(); + Requests[1189].Request.Method = "POST"; + Requests[1189].Request.Path = "/subscriptions/d0d3468f-afd5-/providers/Microsoft.DataLakeAnalytics/locations/7865f9a4/checkNameAvailability"; + Requests[1190] = new DefaultHttpContext(); + Requests[1190].RequestServices = CreateServices(); + Requests[1190].Request.Method = "GET"; + Requests[1190].Request.Path = "/subscriptions/e426a2c0-56a0-/providers/Microsoft.DataLakeStore/locations/f13cefc5/capability"; + Requests[1191] = new DefaultHttpContext(); + Requests[1191].RequestServices = CreateServices(); + Requests[1191].Request.Method = "POST"; + Requests[1191].Request.Path = "/subscriptions/0115253d-da3b-/providers/Microsoft.DataLakeStore/locations/5ae1bedd/checkNameAvailability"; + Requests[1192] = new DefaultHttpContext(); + Requests[1192].RequestServices = CreateServices(); + Requests[1192].Request.Method = "POST"; + Requests[1192].Request.Path = "/subscriptions/69e40bdb-cbd4-/providers/Microsoft.DataMigration/locations/abce2769/checkNameAvailability"; + Requests[1193] = new DefaultHttpContext(); + Requests[1193].RequestServices = CreateServices(); + Requests[1193].Request.Method = "GET"; + Requests[1193].Request.Path = "/subscriptions/f0648eeb-25d8-/providers/Microsoft.DataMigration/locations/98590540/usages"; + Requests[1194] = new DefaultHttpContext(); + Requests[1194].RequestServices = CreateServices(); + Requests[1194].Request.Method = "GET"; + Requests[1194].Request.Path = "/subscriptions/6fff6958-c45c-/providers/Microsoft.DBforMySQL/locations/1b0ae5b2-0ee/performanceTiers"; + Requests[1195] = new DefaultHttpContext(); + Requests[1195].RequestServices = CreateServices(); + Requests[1195].Request.Method = "GET"; + Requests[1195].Request.Path = "/subscriptions/41c9d9f8-0cfb-/providers/Microsoft.DBforPostgreSQL/locations/f820f83e-0ba/performanceTiers"; + Requests[1196] = new DefaultHttpContext(); + Requests[1196].RequestServices = CreateServices(); + Requests[1196].Request.Method = "POST"; + Requests[1196].Request.Path = "/subscriptions/232da203-7149-/providers/Microsoft.DomainRegistration/topLevelDomains/b6fba/listAgreements"; + Requests[1197] = new DefaultHttpContext(); + Requests[1197].RequestServices = CreateServices(); + Requests[1197].Request.Method = "GET"; + Requests[1197].Request.Path = "/subscriptions/7aeb7ef6-ec91-/providers/Microsoft.EventGrid/locations/d5c50d50/eventSubscriptions"; + Requests[1198] = new DefaultHttpContext(); + Requests[1198].RequestServices = CreateServices(); + Requests[1198].Request.Method = "GET"; + Requests[1198].Request.Path = "/subscriptions/fa4a5b5e-6cb4-/providers/Microsoft.EventGrid/topicTypes/44bc3077-09c8/eventSubscriptions"; + Requests[1199] = new DefaultHttpContext(); + Requests[1199].RequestServices = CreateServices(); + Requests[1199].Request.Method = "GET"; + Requests[1199].Request.Path = "/subscriptions/45a30f0f-2b6b-/providers/Microsoft.EventHub/sku/45da6/regions"; + Requests[1200] = new DefaultHttpContext(); + Requests[1200].RequestServices = CreateServices(); + Requests[1200].Request.Method = "GET"; + Requests[1200].Request.Path = "/subscriptions/0e72bae4-f75a-/providers/Microsoft.Features/providers/e60b13f3-8a95-4e7f-a5a5-2/features"; + Requests[1201] = new DefaultHttpContext(); + Requests[1201].RequestServices = CreateServices(); + Requests[1201].Request.Method = "GET"; + Requests[1201].Request.Path = "/subscriptions/9e1183c5-d083-/providers/Microsoft.HDInsight/locations/af5fa8f9/capabilities"; + Requests[1202] = new DefaultHttpContext(); + Requests[1202].RequestServices = CreateServices(); + Requests[1202].Request.Method = "GET"; + Requests[1202].Request.Path = "/subscriptions/9d93061f-3d4e-/providers/Microsoft.KeyVault.Admin/locations/7a766b1c/quotas"; + Requests[1203] = new DefaultHttpContext(); + Requests[1203].RequestServices = CreateServices(); + Requests[1203].Request.Method = "POST"; + Requests[1203].Request.Path = "/subscriptions/f5fcce58-c7fb-/providers/Microsoft.Media/locations/b936efb2-a94/checkNameAvailability"; + Requests[1204] = new DefaultHttpContext(); + Requests[1204].RequestServices = CreateServices(); + Requests[1204].Request.Method = "GET"; + Requests[1204].Request.Path = "/subscriptions/5594ecd0-eea3-/providers/Microsoft.Network.Admin/locations/83cff230/quotas"; + Requests[1205] = new DefaultHttpContext(); + Requests[1205].RequestServices = CreateServices(); + Requests[1205].Request.Method = "GET"; + Requests[1205].Request.Path = "/subscriptions/2c04b1ce-93c5-/providers/Microsoft.Network/locations/27f92f5c/CheckDnsNameAvailability"; + Requests[1206] = new DefaultHttpContext(); + Requests[1206].RequestServices = CreateServices(); + Requests[1206].Request.Method = "GET"; + Requests[1206].Request.Path = "/subscriptions/ddd702a4-0aed-/providers/Microsoft.Network/locations/09d7dac3/usages"; + Requests[1207] = new DefaultHttpContext(); + Requests[1207].RequestServices = CreateServices(); + Requests[1207].Request.Method = "GET"; + Requests[1207].Request.Path = "/subscriptions/483cd867-0ec9-/providers/Microsoft.Network/locations/23190e13/virtualNetworkAvailableEndpointServices"; + Requests[1208] = new DefaultHttpContext(); + Requests[1208].RequestServices = CreateServices(); + Requests[1208].Request.Method = "POST"; + Requests[1208].Request.Path = "/subscriptions/aedb0408-da99-/providers/Microsoft.PolicyInsights/policyEvents/49d8718f-edd8-428b-8/queryResults"; + Requests[1209] = new DefaultHttpContext(); + Requests[1209].RequestServices = CreateServices(); + Requests[1209].Request.Method = "POST"; + Requests[1209].Request.Path = "/subscriptions/0b6230ce-1342-/providers/Microsoft.PolicyInsights/policyStates/23dd4ef4-b14e-4aa1-a/queryResults"; + Requests[1210] = new DefaultHttpContext(); + Requests[1210].RequestServices = CreateServices(); + Requests[1210].Request.Method = "POST"; + Requests[1210].Request.Path = "/subscriptions/7d049a48-8342-/providers/Microsoft.PolicyInsights/policyStates/74ffc020-743d-4e09-b26f-7a1/summarize"; + Requests[1211] = new DefaultHttpContext(); + Requests[1211].RequestServices = CreateServices(); + Requests[1211].Request.Method = "POST"; + Requests[1211].Request.Path = "/subscriptions/cda8cf5f-f0f5-/providers/Microsoft.PowerBI/locations/007b8789/checkNameAvailability"; + Requests[1212] = new DefaultHttpContext(); + Requests[1212].RequestServices = CreateServices(); + Requests[1212].Request.Method = "POST"; + Requests[1212].Request.Path = "/Subscriptions/eaa315a7-97ce-/providers/Microsoft.RecoveryServices/locations/aa115313-dd/backupPreValidateProtection"; + Requests[1213] = new DefaultHttpContext(); + Requests[1213].RequestServices = CreateServices(); + Requests[1213].Request.Method = "POST"; + Requests[1213].Request.Path = "/Subscriptions/b1ca72f6-f840-/providers/Microsoft.RecoveryServices/locations/abe1861b-5e/backupStatus"; + Requests[1214] = new DefaultHttpContext(); + Requests[1214].RequestServices = CreateServices(); + Requests[1214].Request.Method = "POST"; + Requests[1214].Request.Path = "/Subscriptions/40ae1876-d1bd-/providers/Microsoft.RecoveryServices/locations/e573b393-ef/backupValidateFeatures"; + Requests[1215] = new DefaultHttpContext(); + Requests[1215].RequestServices = CreateServices(); + Requests[1215].Request.Method = "GET"; + Requests[1215].Request.Path = "/subscriptions/62cb44b1-cd6f-/providers/Microsoft.Security/locations/cbbd3b76-b6/alerts"; + Requests[1216] = new DefaultHttpContext(); + Requests[1216].RequestServices = CreateServices(); + Requests[1216].Request.Method = "GET"; + Requests[1216].Request.Path = "/subscriptions/6c3d3067-db10-/providers/Microsoft.Security/locations/8533a047-40/discoveredSecuritySolutions"; + Requests[1217] = new DefaultHttpContext(); + Requests[1217].RequestServices = CreateServices(); + Requests[1217].Request.Method = "GET"; + Requests[1217].Request.Path = "/subscriptions/fcbc5b49-e678-/providers/Microsoft.Security/locations/f7cc43d8-a0/ExternalSecuritySolutions"; + Requests[1218] = new DefaultHttpContext(); + Requests[1218].RequestServices = CreateServices(); + Requests[1218].Request.Method = "GET"; + Requests[1218].Request.Path = "/subscriptions/dcdb4710-0fc3-/providers/Microsoft.Security/locations/36ee7a64-94/jitNetworkAccessPolicies"; + Requests[1219] = new DefaultHttpContext(); + Requests[1219].RequestServices = CreateServices(); + Requests[1219].Request.Method = "GET"; + Requests[1219].Request.Path = "/subscriptions/2e25acd3-53b2-/providers/Microsoft.Security/locations/74f16873-1e/tasks"; + Requests[1220] = new DefaultHttpContext(); + Requests[1220].RequestServices = CreateServices(); + Requests[1220].Request.Method = "GET"; + Requests[1220].Request.Path = "/subscriptions/1670c796-33ed-/providers/Microsoft.ServiceBus/sku/c33a9/regions"; + Requests[1221] = new DefaultHttpContext(); + Requests[1221].RequestServices = CreateServices(); + Requests[1221].Request.Method = "GET"; + Requests[1221].Request.Path = "/subscriptions/7d84f0db-7b2a-/providers/Microsoft.ServiceFabric/locations/c7d55ff5/clusterVersions"; + Requests[1222] = new DefaultHttpContext(); + Requests[1222].RequestServices = CreateServices(); + Requests[1222].Request.Method = "POST"; + Requests[1222].Request.Path = "/subscriptions/8e08dad0-bc74-/providers/Microsoft.SignalRService/locations/c602df23/checkNameAvailability"; + Requests[1223] = new DefaultHttpContext(); + Requests[1223].RequestServices = CreateServices(); + Requests[1223].Request.Method = "GET"; + Requests[1223].Request.Path = "/subscriptions/38f8a807-ca80-/providers/Microsoft.Sql/locations/65797d40-85b/capabilities"; + Requests[1224] = new DefaultHttpContext(); + Requests[1224].RequestServices = CreateServices(); + Requests[1224].Request.Method = "GET"; + Requests[1224].Request.Path = "/subscriptions/9e9475e3-17e1-/providers/Microsoft.Sql/locations/609e5648-188/longTermRetentionBackups"; + Requests[1225] = new DefaultHttpContext(); + Requests[1225].RequestServices = CreateServices(); + Requests[1225].Request.Method = "GET"; + Requests[1225].Request.Path = "/subscriptions/e74a01ba-376c-/providers/Microsoft.Sql/locations/a46e9527-573/syncDatabaseIds"; + Requests[1226] = new DefaultHttpContext(); + Requests[1226].RequestServices = CreateServices(); + Requests[1226].Request.Method = "GET"; + Requests[1226].Request.Path = "/subscriptions/f75e5089-75cd-/providers/Microsoft.Sql/locations/3fee117e-7b0/usages"; + Requests[1227] = new DefaultHttpContext(); + Requests[1227].RequestServices = CreateServices(); + Requests[1227].Request.Method = "GET"; + Requests[1227].Request.Path = "/subscriptions/fce1d849-a467-/providers/Microsoft.Storage.Admin/locations/a138dd68/quotas"; + Requests[1228] = new DefaultHttpContext(); + Requests[1228].RequestServices = CreateServices(); + Requests[1228].Request.Method = "GET"; + Requests[1228].Request.Path = "/subscriptions/ca438fae-ad10-/providers/Microsoft.Storage/locations/18cd438a/usages"; + Requests[1229] = new DefaultHttpContext(); + Requests[1229].RequestServices = CreateServices(); + Requests[1229].Request.Method = "GET"; + Requests[1229].Request.Path = "/subscriptions/74876131-9b18-/providers/Microsoft.StreamAnalytics/locations/befa5d32/quotas"; + Requests[1230] = new DefaultHttpContext(); + Requests[1230].RequestServices = CreateServices(); + Requests[1230].Request.Method = "GET"; + Requests[1230].Request.Path = "/subscriptions/34886381-538d-/providers/Microsoft.Subscriptions.Admin/delegatedProviders/10064dff-882b-4fa7-85c1-2305eec/offers"; + Requests[1231] = new DefaultHttpContext(); + Requests[1231].RequestServices = CreateServices(); + Requests[1231].Request.Method = "GET"; + Requests[1231].Request.Path = "/subscriptions/25bdfb36-5305-/providers/Microsoft.Subscriptions.Admin/locations/2528e997/quotas"; + Requests[1232] = new DefaultHttpContext(); + Requests[1232].RequestServices = CreateServices(); + Requests[1232].Request.Method = "GET"; + Requests[1232].Request.Path = "/subscriptions/7e593b0a-ba0d-/providers/Microsoft.Subscriptions.Admin/subscriptions/0cef82b8-1be7-4d8f-b/acquiredPlans"; + Requests[1233] = new DefaultHttpContext(); + Requests[1233].RequestServices = CreateServices(); + Requests[1233].Request.Method = "GET"; + Requests[1233].Request.Path = "/subscriptions/f58b1c2c-19be-/providers/Microsoft.Web/locations/029e8d30/connectionGatewayInstallations"; + Requests[1234] = new DefaultHttpContext(); + Requests[1234].RequestServices = CreateServices(); + Requests[1234].Request.Method = "POST"; + Requests[1234].Request.Path = "/subscriptions/3fc51542-3856-/providers/Microsoft.Web/locations/1dfd98d1/extractApiDefinitionFromWsdl"; + Requests[1235] = new DefaultHttpContext(); + Requests[1235].RequestServices = CreateServices(); + Requests[1235].Request.Method = "POST"; + Requests[1235].Request.Path = "/subscriptions/3be79fbf-b3bf-/providers/Microsoft.Web/locations/3051d2ac/listWsdlInterfaces"; + Requests[1236] = new DefaultHttpContext(); + Requests[1236].RequestServices = CreateServices(); + Requests[1236].Request.Method = "GET"; + Requests[1236].Request.Path = "/subscriptions/6d1ae875-475a-/providers/Microsoft.Web/locations/5c0cef32/managedApis"; + Requests[1237] = new DefaultHttpContext(); + Requests[1237].RequestServices = CreateServices(); + Requests[1237].Request.Method = "POST"; + Requests[1237].Request.Path = "/subscriptions/fbd94678-93f4-/providers/Microsoft.Web/recommendations/ce13c/disable"; + Requests[1238] = new DefaultHttpContext(); + Requests[1238].RequestServices = CreateServices(); + Requests[1238].Request.Method = "GET"; + Requests[1238].Request.Path = "/subscriptions/e31a83c1-9760-/providers/Microsoft.Compute.Admin/locations/0290db79/artifactTypes/platformImage"; + Requests[1239] = new DefaultHttpContext(); + Requests[1239].RequestServices = CreateServices(); + Requests[1239].Request.Method = "GET"; + Requests[1239].Request.Path = "/subscriptions/bbb9277b-a596-/providers/Microsoft.Compute.Admin/locations/fd7908f6/artifactTypes/VMExtension"; + Requests[1240] = new DefaultHttpContext(); + Requests[1240].RequestServices = CreateServices(); + Requests[1240].Request.Method = "GET"; + Requests[1240].Request.Path = "/subscriptions/9fc2a3c7-f3e7-/providers/Microsoft.Billing/billingPeriods/fe427fda-3f44-411/providers/Microsoft.Consumption/marketplaces"; + Requests[1241] = new DefaultHttpContext(); + Requests[1241].RequestServices = CreateServices(); + Requests[1241].Request.Method = "GET"; + Requests[1241].Request.Path = "/subscriptions/6779a0c5-7ca2-/providers/Microsoft.Billing/billingPeriods/f3cba789-3706-436/providers/Microsoft.Consumption/usageDetails"; + Requests[1242] = new DefaultHttpContext(); + Requests[1242].RequestServices = CreateServices(); + Requests[1242].Request.Method = "POST"; + Requests[1242].Request.Path = "/subscriptions/a7dee027-a75b-/providers/Microsoft.Compute/locations/51a00475/logAnalytics/apiAccess/getRequestRateByInterval"; + Requests[1243] = new DefaultHttpContext(); + Requests[1243].RequestServices = CreateServices(); + Requests[1243].Request.Method = "POST"; + Requests[1243].Request.Path = "/subscriptions/7dcae95a-b1c0-/providers/Microsoft.Compute/locations/524d7f70/logAnalytics/apiAccess/getThrottledRequests"; + Requests[1244] = new DefaultHttpContext(); + Requests[1244].RequestServices = CreateServices(); + Requests[1244].Request.Method = "GET"; + Requests[1244].Request.Path = "/subscriptions/a3e345aa-f69e-/providers/Microsoft.Billing/billingPeriods/87a38584-ce5e-42d/providers/Microsoft.Consumption/pricesheets/default"; + Requests[1245] = new DefaultHttpContext(); + Requests[1245].RequestServices = CreateServices(); + Requests[1245].Request.Method = "PUT"; + Requests[1245].Request.Path = "/subscriptions/ae603476-dea0-/providers/Microsoft.Compute.Admin/locations/a3fc2a4b/artifactTypes/VMExtension/publishers/47241dea-/types/7bce3/versions/f7b97e9"; + Requests[1246] = new DefaultHttpContext(); + Requests[1246].RequestServices = CreateServices(); + Requests[1246].Request.Method = "DELETE"; + Requests[1246].Request.Path = "/subscriptions/847ff6c0-6986-/providers/Microsoft.Compute.Admin/locations/57974f77/artifactTypes/VMExtension/publishers/d1dfc936-/types/c0f29/versions/7ff6e6d"; + Requests[1247] = new DefaultHttpContext(); + Requests[1247].RequestServices = CreateServices(); + Requests[1247].Request.Method = "GET"; + Requests[1247].Request.Path = "/subscriptions/8ad03701-6d49-/providers/Microsoft.Compute.Admin/locations/9dc15717/artifactTypes/VMExtension/publishers/d8663ec8-/types/62bbd/versions/e1c83ef"; + Requests[1248] = new DefaultHttpContext(); + Requests[1248].RequestServices = CreateServices(); + Requests[1248].Request.Method = "DELETE"; + Requests[1248].Request.Path = "/subscriptions/fafa61c9-fa4e-/providers/Microsoft.Compute.Admin/locations/c6aab8bd/artifactTypes/platformImage/publishers/a5d3412e-/offers/f13ee/skus/392c1/versions/834015d"; + Requests[1249] = new DefaultHttpContext(); + Requests[1249].RequestServices = CreateServices(); + Requests[1249].Request.Method = "GET"; + Requests[1249].Request.Path = "/subscriptions/27e3d72c-a258-/providers/Microsoft.Compute.Admin/locations/5a328caf/artifactTypes/platformImage/publishers/e352a859-/offers/791a1/skus/09781/versions/7784b1a"; + Requests[1250] = new DefaultHttpContext(); + Requests[1250].RequestServices = CreateServices(); + Requests[1250].Request.Method = "PUT"; + Requests[1250].Request.Path = "/subscriptions/800a928c-ed9d-/providers/Microsoft.Compute.Admin/locations/3387d58b/artifactTypes/platformImage/publishers/ffc1427b-/offers/2aad4/skus/1625c/versions/31ff0e5"; + Requests[1251] = new DefaultHttpContext(); + Requests[1251].RequestServices = CreateServices(); + Requests[1251].Request.Method = "PUT"; + Requests[1251].Request.Path = "/subscriptions/618a3755-be35-/providers/Microsoft.Addons/supportProviders/b86dd8f0-f55/supportPlanTypes/40990d2b-2be"; + Requests[1252] = new DefaultHttpContext(); + Requests[1252].RequestServices = CreateServices(); + Requests[1252].Request.Method = "DELETE"; + Requests[1252].Request.Path = "/subscriptions/82d18335-e962-/providers/Microsoft.Addons/supportProviders/f099557e-1ce/supportPlanTypes/1bff69f5-acb"; + Requests[1253] = new DefaultHttpContext(); + Requests[1253].RequestServices = CreateServices(); + Requests[1253].Request.Method = "GET"; + Requests[1253].Request.Path = "/subscriptions/e310500c-2fc5-/providers/Microsoft.Addons/supportProviders/1d65cca4-67b/supportPlanTypes/80a8fdfc-6a5"; + Requests[1254] = new DefaultHttpContext(); + Requests[1254].RequestServices = CreateServices(); + Requests[1254].Request.Method = "GET"; + Requests[1254].Request.Path = "/subscriptions/8e53c8c3-df61-/providers/Microsoft.AnalysisServices/locations/cccf18bb/operationresults/34c5c5c9-1b"; + Requests[1255] = new DefaultHttpContext(); + Requests[1255].RequestServices = CreateServices(); + Requests[1255].Request.Method = "GET"; + Requests[1255].Request.Path = "/subscriptions/cd310a06-04ce-/providers/Microsoft.AnalysisServices/locations/ed735194/operationstatuses/4fdd5326-ba"; + Requests[1256] = new DefaultHttpContext(); + Requests[1256].RequestServices = CreateServices(); + Requests[1256].Request.Method = "PUT"; + Requests[1256].Request.Path = "/subscriptions/2427095f-4c5a-/providers/Microsoft.Compute.Admin/locations/f100ce16/quotas/cbdf79ba-"; + Requests[1257] = new DefaultHttpContext(); + Requests[1257].RequestServices = CreateServices(); + Requests[1257].Request.Method = "GET"; + Requests[1257].Request.Path = "/subscriptions/400b3846-23c3-/providers/Microsoft.Compute.Admin/locations/821c1095/quotas/4a3ea1ce-"; + Requests[1258] = new DefaultHttpContext(); + Requests[1258].RequestServices = CreateServices(); + Requests[1258].Request.Method = "DELETE"; + Requests[1258].Request.Path = "/subscriptions/73032fec-5cac-/providers/Microsoft.Compute.Admin/locations/9a4a4000/quotas/6e564043-"; + Requests[1259] = new DefaultHttpContext(); + Requests[1259].RequestServices = CreateServices(); + Requests[1259].Request.Method = "GET"; + Requests[1259].Request.Path = "/subscriptions/740effd5-12ce-/providers/Microsoft.Compute/locations/6c9beb72/runCommands/7fa1b14c-"; + Requests[1260] = new DefaultHttpContext(); + Requests[1260].RequestServices = CreateServices(); + Requests[1260].Request.Method = "GET"; + Requests[1260].Request.Path = "/subscriptions/b4bef99b-4b7e-/providers/Microsoft.DevTestLab/locations/43cfb089-2cc/operations/5eb52"; + Requests[1261] = new DefaultHttpContext(); + Requests[1261].RequestServices = CreateServices(); + Requests[1261].Request.Method = "GET"; + Requests[1261].Request.Path = "/subscriptions/e4e683a1-23bc-/providers/Microsoft.Features/providers/22fae324-c430-4ef1-8ef4-2/features/147124b9-12"; + Requests[1262] = new DefaultHttpContext(); + Requests[1262].RequestServices = CreateServices(); + Requests[1262].Request.Method = "GET"; + Requests[1262].Request.Path = "/subscriptions/9460f76f-a798-/providers/Microsoft.KeyVault/locations/a56cca37/deletedVaults/4085e18f-"; + Requests[1263] = new DefaultHttpContext(); + Requests[1263].RequestServices = CreateServices(); + Requests[1263].Request.Method = "GET"; + Requests[1263].Request.Path = "/subscriptions/621077fc-0787-/providers/Microsoft.Network.Admin/locations/261b5c6e/quotas/c88fe1f5-2a6"; + Requests[1264] = new DefaultHttpContext(); + Requests[1264].RequestServices = CreateServices(); + Requests[1264].Request.Method = "DELETE"; + Requests[1264].Request.Path = "/subscriptions/e570c9eb-24e9-/providers/Microsoft.Network.Admin/locations/e7c26217/quotas/ca1152f5-b5f"; + Requests[1265] = new DefaultHttpContext(); + Requests[1265].RequestServices = CreateServices(); + Requests[1265].Request.Method = "PUT"; + Requests[1265].Request.Path = "/subscriptions/9467d9e6-cfec-/providers/Microsoft.Network.Admin/locations/79b5e320/quotas/ca8158a9-cbe"; + Requests[1266] = new DefaultHttpContext(); + Requests[1266].RequestServices = CreateServices(); + Requests[1266].Request.Method = "GET"; + Requests[1266].Request.Path = "/subscriptions/ece6fbaf-a429-/providers/Microsoft.Security/locations/0ca497f9-34/alerts/1d19e947-"; + Requests[1267] = new DefaultHttpContext(); + Requests[1267].RequestServices = CreateServices(); + Requests[1267].Request.Method = "GET"; + Requests[1267].Request.Path = "/subscriptions/6042b579-a059-/providers/Microsoft.Security/locations/861eaec5-98/tasks/db3ef89d"; + Requests[1268] = new DefaultHttpContext(); + Requests[1268].RequestServices = CreateServices(); + Requests[1268].Request.Method = "GET"; + Requests[1268].Request.Path = "/subscriptions/1111c27a-e0d2-/providers/Microsoft.ServiceFabric/locations/a79b3aa2/clusterVersions/3d9a5d7f-4890-"; + Requests[1269] = new DefaultHttpContext(); + Requests[1269].RequestServices = CreateServices(); + Requests[1269].Request.Method = "GET"; + Requests[1269].Request.Path = "/subscriptions/c415ba33-0245-/providers/Microsoft.Sql/locations/8976679b-061/usages/7e36fe5e-"; + Requests[1270] = new DefaultHttpContext(); + Requests[1270].RequestServices = CreateServices(); + Requests[1270].Request.Method = "DELETE"; + Requests[1270].Request.Path = "/subscriptions/d10f8ac7-dd69-/providers/Microsoft.Storage.Admin/locations/d5d5aed9/quotas/7c806e9d-"; + Requests[1271] = new DefaultHttpContext(); + Requests[1271].RequestServices = CreateServices(); + Requests[1271].Request.Method = "GET"; + Requests[1271].Request.Path = "/subscriptions/6df50e18-8b28-/providers/Microsoft.Storage.Admin/locations/d1ba55b6/quotas/810c6e91-"; + Requests[1272] = new DefaultHttpContext(); + Requests[1272].RequestServices = CreateServices(); + Requests[1272].Request.Method = "PUT"; + Requests[1272].Request.Path = "/subscriptions/2dff9e60-5c57-/providers/Microsoft.Storage.Admin/locations/d945e13a/quotas/aa757c51-"; + Requests[1273] = new DefaultHttpContext(); + Requests[1273].RequestServices = CreateServices(); + Requests[1273].Request.Method = "GET"; + Requests[1273].Request.Path = "/subscriptions/78c8551b-345d-/providers/Microsoft.Subscriptions.Admin/delegatedProviders/a96fdb40-fbb5-46eb-b84d-221284e/offers/b51f6"; + Requests[1274] = new DefaultHttpContext(); + Requests[1274].RequestServices = CreateServices(); + Requests[1274].Request.Method = "GET"; + Requests[1274].Request.Path = "/subscriptions/a0082974-aee0-/providers/Microsoft.Subscriptions.Admin/locations/65febca0/quotas/6e06b"; + Requests[1275] = new DefaultHttpContext(); + Requests[1275].RequestServices = CreateServices(); + Requests[1275].Request.Method = "DELETE"; + Requests[1275].Request.Path = "/subscriptions/73e538cd-79f9-/providers/Microsoft.Subscriptions.Admin/subscriptions/da1ba285-f5fa-43e1-8/acquiredPlans/a922ba2b-d02d-404"; + Requests[1276] = new DefaultHttpContext(); + Requests[1276].RequestServices = CreateServices(); + Requests[1276].Request.Method = "PUT"; + Requests[1276].Request.Path = "/subscriptions/737e3704-2800-/providers/Microsoft.Subscriptions.Admin/subscriptions/42f16d26-425f-4cda-9/acquiredPlans/947e3223-87a1-447"; + Requests[1277] = new DefaultHttpContext(); + Requests[1277].RequestServices = CreateServices(); + Requests[1277].Request.Method = "GET"; + Requests[1277].Request.Path = "/subscriptions/2c21f8ce-a002-/providers/Microsoft.Subscriptions.Admin/subscriptions/102e563d-9d43-4071-8/acquiredPlans/a8f52a19-f31d-402"; + Requests[1278] = new DefaultHttpContext(); + Requests[1278].RequestServices = CreateServices(); + Requests[1278].Request.Method = "GET"; + Requests[1278].Request.Path = "/subscriptions/fa1cd062-a6f4-/providers/Microsoft.Web/locations/82aa7c72/connectionGatewayInstallations/274f1114-"; + Requests[1279] = new DefaultHttpContext(); + Requests[1279].RequestServices = CreateServices(); + Requests[1279].Request.Method = "GET"; + Requests[1279].Request.Path = "/subscriptions/6d780efb-6f48-/providers/Microsoft.Web/locations/232d7dad/managedApis/8928d6b"; + Requests[1280] = new DefaultHttpContext(); + Requests[1280].RequestServices = CreateServices(); + Requests[1280].Request.Method = "GET"; + Requests[1280].Request.Path = "/subscriptions/bf44e162-a8c5-/providers/Microsoft.EventGrid/locations/4115ac8f/topicTypes/e1691906-750f/eventSubscriptions"; + Requests[1281] = new DefaultHttpContext(); + Requests[1281].RequestServices = CreateServices(); + Requests[1281].Request.Method = "POST"; + Requests[1281].Request.Path = "/subscriptions/7433fc16-3826-/providers/Microsoft.Features/providers/4100c1e6-2587-4035-a3b6-c/features/7fa2776a-cc/register"; + Requests[1282] = new DefaultHttpContext(); + Requests[1282].RequestServices = CreateServices(); + Requests[1282].Request.Method = "POST"; + Requests[1282].Request.Path = "/subscriptions/240db3d2-4461-/providers/Microsoft.KeyVault/locations/db42eff9/deletedVaults/5576afe0-/purge"; + Requests[1283] = new DefaultHttpContext(); + Requests[1283].RequestServices = CreateServices(); + Requests[1283].Request.Method = "GET"; + Requests[1283].Request.Path = "/subscriptions/4f7972b9-093a-/providers/Microsoft.ServiceFabric/locations/89d680e8/environments/82885d71-e2/clusterVersions"; + Requests[1284] = new DefaultHttpContext(); + Requests[1284].RequestServices = CreateServices(); + Requests[1284].Request.Method = "GET"; + Requests[1284].Request.Path = "/subscriptions/b5cbefab-d37c-/providers/Microsoft.Sql/locations/cc585d41-2f9/longTermRetentionServers/e8d8cb85-9044-4273-827e-929/longTermRetentionBackups"; + Requests[1285] = new DefaultHttpContext(); + Requests[1285].RequestServices = CreateServices(); + Requests[1285].Request.Method = "POST"; + Requests[1285].Request.Path = "/subscriptions/e99c0139-3f32-/providers/Microsoft.Sql/locations/bc670500-912/managedDatabaseRestoreAzureAsyncOperation/0871537b-29/completeRestore"; + Requests[1286] = new DefaultHttpContext(); + Requests[1286].RequestServices = CreateServices(); + Requests[1286].Request.Method = "GET"; + Requests[1286].Request.Path = "/subscriptions/41726a57-e575-/providers/Microsoft.Compute/locations/3af588e2/publishers/0efe529d-c4d3/artifacttypes/vmextension/types"; + Requests[1287] = new DefaultHttpContext(); + Requests[1287].RequestServices = CreateServices(); + Requests[1287].Request.Method = "GET"; + Requests[1287].Request.Path = "/subscriptions/ea8e8d47-56ca-/providers/Microsoft.Compute/locations/35bb3a82/publishers/7529e227-6d57/artifacttypes/vmimage/offers"; + Requests[1288] = new DefaultHttpContext(); + Requests[1288].RequestServices = CreateServices(); + Requests[1288].Request.Method = "GET"; + Requests[1288].Request.Path = "/subscriptions/19a5adfe-ab65-/providers/Microsoft.Compute/locations/c990531e/publishers/a5b79c76-3d24/artifacttypes/vmextension/types/fc9df/versions"; + Requests[1289] = new DefaultHttpContext(); + Requests[1289].RequestServices = CreateServices(); + Requests[1289].Request.Method = "GET"; + Requests[1289].Request.Path = "/subscriptions/887d3177-81e1-/providers/Microsoft.Compute/locations/7fa0ef95/publishers/d8b3c5f5-325c/artifacttypes/vmimage/offers/c6c33/skus"; + Requests[1290] = new DefaultHttpContext(); + Requests[1290].RequestServices = CreateServices(); + Requests[1290].Request.Method = "GET"; + Requests[1290].Request.Path = "/subscriptions/0cef3769-3c9e-/providers/Microsoft.Compute/locations/d881fbe3/publishers/26c70639-92c0/artifacttypes/vmextension/types/df543/versions/3a45b0a"; + Requests[1291] = new DefaultHttpContext(); + Requests[1291].RequestServices = CreateServices(); + Requests[1291].Request.Method = "GET"; + Requests[1291].Request.Path = "/subscriptions/adee9e3b-d0d1-/providers/Microsoft.Compute/locations/2eba8a9e/publishers/a32fa8ca-46c1/artifacttypes/vmimage/offers/1abaf/skus/ae9c8/versions"; + Requests[1292] = new DefaultHttpContext(); + Requests[1292].RequestServices = CreateServices(); + Requests[1292].Request.Method = "GET"; + Requests[1292].Request.Path = "/subscriptions/8fe6e117-b734-/providers/Microsoft.Compute/locations/773c293f/publishers/30581879-914c/artifacttypes/vmimage/offers/06217/skus/0a4e1/versions/5dd8af2"; + Requests[1293] = new DefaultHttpContext(); + Requests[1293].RequestServices = CreateServices(); + Requests[1293].Request.Method = "GET"; + Requests[1293].Request.Path = "/subscriptions/ac653c91-e804-/providers/Microsoft.ServiceFabric/locations/e9be59c0/environments/478a0b9d-6c/clusterVersions/4345a391-5b8d-"; + Requests[1294] = new DefaultHttpContext(); + Requests[1294].RequestServices = CreateServices(); + Requests[1294].Request.Method = "GET"; + Requests[1294].Request.Path = "/subscriptions/fdac51a9-ebf7-/providers/Microsoft.Sql/locations/36355b70-fe7/longTermRetentionServers/9aad3d75-af79-4dc9-8432-dc2/longTermRetentionDatabases/ee445a27-d51e-42c9-8ff2-754b1/longTermRetentionBackups"; + Requests[1295] = new DefaultHttpContext(); + Requests[1295].RequestServices = CreateServices(); + Requests[1295].Request.Method = "GET"; + Requests[1295].Request.Path = "/subscriptions/3b075d6f-c92a-/providers/Microsoft.Sql/locations/c1e05683-0b1/longTermRetentionServers/c6d429f5-c983-4dcf-a877-a9c/longTermRetentionDatabases/83381dc3-fd69-44e2-aaf5-12978/longTermRetentionBackups/31a5cedc-5"; + Requests[1296] = new DefaultHttpContext(); + Requests[1296].RequestServices = CreateServices(); + Requests[1296].Request.Method = "DELETE"; + Requests[1296].Request.Path = "/subscriptions/3533ded4-e0a1-/providers/Microsoft.Sql/locations/49ea713b-249/longTermRetentionServers/194c0ebb-65a0-4686-9397-228/longTermRetentionDatabases/445fd336-d9ef-4d25-a81b-d5931/longTermRetentionBackups/cca11573-c"; + Requests[1297] = new DefaultHttpContext(); + Requests[1297].RequestServices = CreateServices(); + Requests[1297].Request.Method = "GET"; + Requests[1297].Request.Path = "/subscriptions/db248ffb-0142-/providers/Microsoft.MarketplaceOrdering/offerTypes/48ce2c53-/publishers/640b9ed0-21/offers/b3f7c09/plans/0ce23d/agreements/current"; + Requests[1298] = new DefaultHttpContext(); + Requests[1298].RequestServices = CreateServices(); + Requests[1298].Request.Method = "PUT"; + Requests[1298].Request.Path = "/subscriptions/a6ace3df-05ab-/providers/Microsoft.MarketplaceOrdering/offerTypes/efb17a6d-/publishers/a33375d7-13/offers/11f1103/plans/9ee020/agreements/current"; + Requests[1299] = new DefaultHttpContext(); + Requests[1299].RequestServices = CreateServices(); + Requests[1299].Request.Method = "POST"; + Requests[1299].Request.Path = "/subscriptions/f464e38e-3898-/providers/Microsoft.Security/locations/6799ad98-1c/alerts/2406a70e-/b4680df5-acab-4ea5-b5"; + Requests[1300] = new DefaultHttpContext(); + Requests[1300].RequestServices = CreateServices(); + Requests[1300].Request.Method = "POST"; + Requests[1300].Request.Path = "/subscriptions/157317b7-31d2-/providers/Microsoft.Security/locations/324c7b61-89/tasks/f8e17844/2c920d64-ed85-497c-a"; + Requests[1301] = new DefaultHttpContext(); + Requests[1301].RequestServices = CreateServices(); + Requests[1301].Request.Method = "GET"; + Requests[1301].Request.Path = "/Applications/ed70163f-f886/$/GetServices/f7176267-"; + Requests[1302] = new DefaultHttpContext(); + Requests[1302].RequestServices = CreateServices(); + Requests[1302].Request.Method = "GET"; + Requests[1302].Request.Path = "/ApplicationTypes/7d0410bf-12af-4393-/$/GetServiceTypes/36bbb739-9f01-4"; + Requests[1303] = new DefaultHttpContext(); + Requests[1303].RequestServices = CreateServices(); + Requests[1303].Request.Method = "GET"; + Requests[1303].Request.Path = "/Nodes/c46b55b8/$/GetApplications/12835253-d346"; + Requests[1304] = new DefaultHttpContext(); + Requests[1304].RequestServices = CreateServices(); + Requests[1304].Request.Method = "GET"; + Requests[1304].Request.Path = "/Partitions/b36c29e6-61/$/GetReplicas/b972814d-"; + Requests[1305] = new DefaultHttpContext(); + Requests[1305].RequestServices = CreateServices(); + Requests[1305].Request.Method = "GET"; + Requests[1305].Request.Path = "/Services/4e67d636-d9/$/GetPartitions/c2142d3a-fb"; + Requests[1306] = new DefaultHttpContext(); + Requests[1306].RequestServices = CreateServices(); + Requests[1306].Request.Method = "POST"; + Requests[1306].Request.Path = "/Applications/f5b4fe26-35f3-4/$/GetServiceGroups/874e9054-09/$/Delete"; + Requests[1307] = new DefaultHttpContext(); + Requests[1307].RequestServices = CreateServices(); + Requests[1307].Request.Method = "GET"; + Requests[1307].Request.Path = "/Applications/de7f11f0-46f4-4/$/GetServices/b6b22bef-e7/$/GetServiceGroupDescription"; + Requests[1308] = new DefaultHttpContext(); + Requests[1308].RequestServices = CreateServices(); + Requests[1308].Request.Method = "GET"; + Requests[1308].Request.Path = "/Applications/642c4f21-656f-4/$/GetServices/09d5461d-97/$/GetServiceGroupMembers"; + Requests[1309] = new DefaultHttpContext(); + Requests[1309].RequestServices = CreateServices(); + Requests[1309].Request.Method = "POST"; + Requests[1309].Request.Path = "/Applications/2d4ddc02-11f0-4/$/GetServices/74f6e040-a9/$/UpdateServiceGroup"; + Requests[1310] = new DefaultHttpContext(); + Requests[1310].RequestServices = CreateServices(); + Requests[1310].Request.Method = "GET"; + Requests[1310].Request.Path = "/Nodes/345739d6/$/GetApplications/3a36c19e-dcd4/$/GetCodePackages"; + Requests[1311] = new DefaultHttpContext(); + Requests[1311].RequestServices = CreateServices(); + Requests[1311].Request.Method = "GET"; + Requests[1311].Request.Path = "/Nodes/d21b4423/$/GetApplications/a2d0c987-c96a/$/GetHealth"; + Requests[1312] = new DefaultHttpContext(); + Requests[1312].RequestServices = CreateServices(); + Requests[1312].Request.Method = "POST"; + Requests[1312].Request.Path = "/Nodes/28902ce3/$/GetApplications/960875f3-673f/$/GetHealth"; + Requests[1313] = new DefaultHttpContext(); + Requests[1313].RequestServices = CreateServices(); + Requests[1313].Request.Method = "GET"; + Requests[1313].Request.Path = "/Nodes/b19c90c2/$/GetApplications/eb25509e-1f0f/$/GetReplicas"; + Requests[1314] = new DefaultHttpContext(); + Requests[1314].RequestServices = CreateServices(); + Requests[1314].Request.Method = "GET"; + Requests[1314].Request.Path = "/Nodes/72907a77/$/GetApplications/92353823-f1bf/$/GetServicePackages"; + Requests[1315] = new DefaultHttpContext(); + Requests[1315].RequestServices = CreateServices(); + Requests[1315].Request.Method = "GET"; + Requests[1315].Request.Path = "/Nodes/762f5953/$/GetApplications/cd7051b7-29ae/$/GetServiceTypes"; + Requests[1316] = new DefaultHttpContext(); + Requests[1316].RequestServices = CreateServices(); + Requests[1316].Request.Method = "POST"; + Requests[1316].Request.Path = "/Nodes/f70232c3/$/GetApplications/a916cb37-f6ef/$/ReportHealth"; + Requests[1317] = new DefaultHttpContext(); + Requests[1317].RequestServices = CreateServices(); + Requests[1317].Request.Method = "GET"; + Requests[1317].Request.Path = "/Nodes/ef5b5371/$/GetPartitions/28ce57ac-bd/$/GetReplicas"; + Requests[1318] = new DefaultHttpContext(); + Requests[1318].RequestServices = CreateServices(); + Requests[1318].Request.Method = "POST"; + Requests[1318].Request.Path = "/Partitions/bf1e504f-b8/$/GetReplicas/87513de2-/$/GetHealth"; + Requests[1319] = new DefaultHttpContext(); + Requests[1319].RequestServices = CreateServices(); + Requests[1319].Request.Method = "GET"; + Requests[1319].Request.Path = "/Partitions/d4c9f4ac-eb/$/GetReplicas/a8146dde-/$/GetHealth"; + Requests[1320] = new DefaultHttpContext(); + Requests[1320].RequestServices = CreateServices(); + Requests[1320].Request.Method = "GET"; + Requests[1320].Request.Path = "/Partitions/d77a2929-e6/$/GetReplicas/ea1245b1-/$/GetLoadInformation"; + Requests[1321] = new DefaultHttpContext(); + Requests[1321].RequestServices = CreateServices(); + Requests[1321].Request.Method = "POST"; + Requests[1321].Request.Path = "/Partitions/a17199a4-6b/$/GetReplicas/b5a3df2e-/$/ReportHealth"; + Requests[1322] = new DefaultHttpContext(); + Requests[1322].RequestServices = CreateServices(); + Requests[1322].Request.Method = "POST"; + Requests[1322].Request.Path = "/Nodes/028bca86/$/GetApplications/94c4fcb7-484c/$/GetCodePackages/$/ContainerApi"; + Requests[1323] = new DefaultHttpContext(); + Requests[1323].RequestServices = CreateServices(); + Requests[1323].Request.Method = "GET"; + Requests[1323].Request.Path = "/Nodes/cf8b94ca/$/GetApplications/74b2ce3b-e687/$/GetCodePackages/$/ContainerLogs"; + Requests[1324] = new DefaultHttpContext(); + Requests[1324].RequestServices = CreateServices(); + Requests[1324].Request.Method = "POST"; + Requests[1324].Request.Path = "/Nodes/b612ca60/$/GetApplications/976b7eaa-f24d/$/GetCodePackages/$/Restart"; + Requests[1325] = new DefaultHttpContext(); + Requests[1325].RequestServices = CreateServices(); + Requests[1325].Request.Method = "GET"; + Requests[1325].Request.Path = "/Nodes/29b98a7b/$/GetApplications/1c7060e6-f8cf/$/GetServicePackages/a19f61d5-8402-4eb2"; + Requests[1326] = new DefaultHttpContext(); + Requests[1326].RequestServices = CreateServices(); + Requests[1326].Request.Method = "GET"; + Requests[1326].Request.Path = "/Nodes/6aa346f5/$/GetApplications/6513be00-97b7/$/GetServiceTypes/268e2f73-6aa3-4"; + Requests[1327] = new DefaultHttpContext(); + Requests[1327].RequestServices = CreateServices(); + Requests[1327].Request.Method = "GET"; + Requests[1327].Request.Path = "/Nodes/9ae4054f/$/GetApplications/843f8441-8a59/$/GetServicePackages/013371c7-fe95-45b3/$/GetHealth"; + Requests[1328] = new DefaultHttpContext(); + Requests[1328].RequestServices = CreateServices(); + Requests[1328].Request.Method = "POST"; + Requests[1328].Request.Path = "/Nodes/8bffb32e/$/GetApplications/5bed31a5-f9f9/$/GetServicePackages/02b41713-4d20-457a/$/GetHealth"; + Requests[1329] = new DefaultHttpContext(); + Requests[1329].RequestServices = CreateServices(); + Requests[1329].Request.Method = "POST"; + Requests[1329].Request.Path = "/Nodes/0039743b/$/GetApplications/50789cfb-795d/$/GetServicePackages/05ede1e9-6ea1-4492/$/ReportHealth"; + Requests[1330] = new DefaultHttpContext(); + Requests[1330].RequestServices = CreateServices(); + Requests[1330].Request.Method = "POST"; + Requests[1330].Request.Path = "/Nodes/0922065e/$/GetPartitions/07c1c584-1b/$/GetReplicas/d652aa5f-/$/Delete"; + Requests[1331] = new DefaultHttpContext(); + Requests[1331].RequestServices = CreateServices(); + Requests[1331].Request.Method = "GET"; + Requests[1331].Request.Path = "/Nodes/e2afd9f0/$/GetPartitions/816555eb-4e/$/GetReplicas/5f6a5a2f-/$/GetDetail"; + Requests[1332] = new DefaultHttpContext(); + Requests[1332].RequestServices = CreateServices(); + Requests[1332].Request.Method = "POST"; + Requests[1332].Request.Path = "/Nodes/0c179a33/$/GetPartitions/d1165342-b7/$/GetReplicas/2c4fdbd6-/$/Restart"; + Requests[1333] = new DefaultHttpContext(); + Requests[1333].RequestServices = CreateServices(); + Requests[1333].Request.Method = "DELETE"; + Requests[1333].Request.Path = "/apis/f2c95/operations/17eaf31f-12"; + Requests[1334] = new DefaultHttpContext(); + Requests[1334].RequestServices = CreateServices(); + Requests[1334].Request.Method = "GET"; + Requests[1334].Request.Path = "/apis/66f43/operations/00815541-88"; + Requests[1335] = new DefaultHttpContext(); + Requests[1335].RequestServices = CreateServices(); + Requests[1335].Request.Method = "PATCH"; + Requests[1335].Request.Path = "/apis/f45d7/operations/697af956-b9"; + Requests[1336] = new DefaultHttpContext(); + Requests[1336].RequestServices = CreateServices(); + Requests[1336].Request.Method = "PUT"; + Requests[1336].Request.Path = "/apis/b2bf5/operations/9b74f183-e4"; + Requests[1337] = new DefaultHttpContext(); + Requests[1337].RequestServices = CreateServices(); + Requests[1337].Request.Method = "GET"; + Requests[1337].Request.Path = "/apis/581f7/policies/54f5d99f"; + Requests[1338] = new DefaultHttpContext(); + Requests[1338].RequestServices = CreateServices(); + Requests[1338].Request.Method = "PUT"; + Requests[1338].Request.Path = "/apis/163ec/policies/1dcd59be"; + Requests[1339] = new DefaultHttpContext(); + Requests[1339].RequestServices = CreateServices(); + Requests[1339].Request.Method = "DELETE"; + Requests[1339].Request.Path = "/apis/8a89c/policies/3700c79f"; + Requests[1340] = new DefaultHttpContext(); + Requests[1340].RequestServices = CreateServices(); + Requests[1340].Request.Method = "DELETE"; + Requests[1340].Request.Path = "/apis/ec08c/schemas/61e3a8f5"; + Requests[1341] = new DefaultHttpContext(); + Requests[1341].RequestServices = CreateServices(); + Requests[1341].Request.Method = "PUT"; + Requests[1341].Request.Path = "/apis/4e90b/schemas/bdec81c9"; + Requests[1342] = new DefaultHttpContext(); + Requests[1342].RequestServices = CreateServices(); + Requests[1342].Request.Method = "GET"; + Requests[1342].Request.Path = "/apis/0a351/schemas/10a5bc54"; + Requests[1343] = new DefaultHttpContext(); + Requests[1343].RequestServices = CreateServices(); + Requests[1343].Request.Method = "GET"; + Requests[1343].Request.Path = "/apps/63813/events/cbdb18bb-"; + Requests[1344] = new DefaultHttpContext(); + Requests[1344].RequestServices = CreateServices(); + Requests[1344].Request.Method = "GET"; + Requests[1344].Request.Path = "/apps/1e10e/metrics/f50f9df2"; + Requests[1345] = new DefaultHttpContext(); + Requests[1345].RequestServices = CreateServices(); + Requests[1345].Request.Method = "DELETE"; + Requests[1345].Request.Path = "/apps/4f105/versions/bbc71dda-"; + Requests[1346] = new DefaultHttpContext(); + Requests[1346].RequestServices = CreateServices(); + Requests[1346].Request.Method = "PUT"; + Requests[1346].Request.Path = "/apps/598b4/versions/18d34fe4-"; + Requests[1347] = new DefaultHttpContext(); + Requests[1347].RequestServices = CreateServices(); + Requests[1347].Request.Method = "GET"; + Requests[1347].Request.Path = "/apps/1376d/versions/e8e4cafb-"; + Requests[1348] = new DefaultHttpContext(); + Requests[1348].RequestServices = CreateServices(); + Requests[1348].Request.Method = "GET"; + Requests[1348].Request.Path = "/delegatedProviders/55ad106d-a4f6-40d1-/offers/cdda69b0-"; + Requests[1349] = new DefaultHttpContext(); + Requests[1349].RequestServices = CreateServices(); + Requests[1349].Request.Method = "GET"; + Requests[1349].Request.Path = "/deletedstorage/351d3d69-0c43-49f8-b/sas/93d5537d-0a1c-4f5c-"; + Requests[1350] = new DefaultHttpContext(); + Requests[1350].RequestServices = CreateServices(); + Requests[1350].Request.Method = "DELETE"; + Requests[1350].Request.Path = "/facelists/843eb893-9/persistedFaces/2373e0cd-330b-4"; + Requests[1351] = new DefaultHttpContext(); + Requests[1351].RequestServices = CreateServices(); + Requests[1351].Request.Method = "PUT"; + Requests[1351].Request.Path = "/groups/4e82b5d/users/85dd0"; + Requests[1352] = new DefaultHttpContext(); + Requests[1352].RequestServices = CreateServices(); + Requests[1352].Request.Method = "DELETE"; + Requests[1352].Request.Path = "/groups/26e2722/users/81405"; + Requests[1353] = new DefaultHttpContext(); + Requests[1353].RequestServices = CreateServices(); + Requests[1353].Request.Method = "GET"; + Requests[1353].Request.Path = "/jobs/87bef/tasks/d55658"; + Requests[1354] = new DefaultHttpContext(); + Requests[1354].RequestServices = CreateServices(); + Requests[1354].Request.Method = "DELETE"; + Requests[1354].Request.Path = "/jobs/e7a5d/tasks/96f0d6"; + Requests[1355] = new DefaultHttpContext(); + Requests[1355].RequestServices = CreateServices(); + Requests[1355].Request.Method = "PUT"; + Requests[1355].Request.Path = "/jobs/533fe/tasks/65c5cb"; + Requests[1356] = new DefaultHttpContext(); + Requests[1356].RequestServices = CreateServices(); + Requests[1356].Request.Method = "GET"; + Requests[1356].Request.Path = "/persongroups/b1b71c4a-4a33/persons/111fffa2"; + Requests[1357] = new DefaultHttpContext(); + Requests[1357].RequestServices = CreateServices(); + Requests[1357].Request.Method = "PATCH"; + Requests[1357].Request.Path = "/persongroups/51c96583-bbd3/persons/cafb8ee3"; + Requests[1358] = new DefaultHttpContext(); + Requests[1358].RequestServices = CreateServices(); + Requests[1358].Request.Method = "DELETE"; + Requests[1358].Request.Path = "/persongroups/09cb77eb-a357/persons/6b475c68"; + Requests[1359] = new DefaultHttpContext(); + Requests[1359].RequestServices = CreateServices(); + Requests[1359].Request.Method = "GET"; + Requests[1359].Request.Path = "/pools/351e51/nodes/8a86cb"; + Requests[1360] = new DefaultHttpContext(); + Requests[1360].RequestServices = CreateServices(); + Requests[1360].Request.Method = "DELETE"; + Requests[1360].Request.Path = "/products/122d56fe-/apis/3f551"; + Requests[1361] = new DefaultHttpContext(); + Requests[1361].RequestServices = CreateServices(); + Requests[1361].Request.Method = "PUT"; + Requests[1361].Request.Path = "/products/155a381a-/apis/077e7"; + Requests[1362] = new DefaultHttpContext(); + Requests[1362].RequestServices = CreateServices(); + Requests[1362].Request.Method = "PUT"; + Requests[1362].Request.Path = "/products/1dc0446a-/groups/ae08e25"; + Requests[1363] = new DefaultHttpContext(); + Requests[1363].RequestServices = CreateServices(); + Requests[1363].Request.Method = "DELETE"; + Requests[1363].Request.Path = "/products/6cf8dfef-/groups/689d271"; + Requests[1364] = new DefaultHttpContext(); + Requests[1364].RequestServices = CreateServices(); + Requests[1364].Request.Method = "PUT"; + Requests[1364].Request.Path = "/products/9aacee11-/policies/e1c02d0b"; + Requests[1365] = new DefaultHttpContext(); + Requests[1365].RequestServices = CreateServices(); + Requests[1365].Request.Method = "GET"; + Requests[1365].Request.Path = "/products/341e764c-/policies/8c54cf47"; + Requests[1366] = new DefaultHttpContext(); + Requests[1366].RequestServices = CreateServices(); + Requests[1366].Request.Method = "DELETE"; + Requests[1366].Request.Path = "/products/3b778fa1-/policies/d740c035"; + Requests[1367] = new DefaultHttpContext(); + Requests[1367].RequestServices = CreateServices(); + Requests[1367].Request.Method = "DELETE"; + Requests[1367].Request.Path = "/projects/7bde34e5-/iterations/b8b1cfef-c2"; + Requests[1368] = new DefaultHttpContext(); + Requests[1368].RequestServices = CreateServices(); + Requests[1368].Request.Method = "PATCH"; + Requests[1368].Request.Path = "/projects/0dea1c1d-/iterations/ab59f5cc-4b"; + Requests[1369] = new DefaultHttpContext(); + Requests[1369].RequestServices = CreateServices(); + Requests[1369].Request.Method = "GET"; + Requests[1369].Request.Path = "/projects/ee7a14bf-/iterations/42461e85-27"; + Requests[1370] = new DefaultHttpContext(); + Requests[1370].RequestServices = CreateServices(); + Requests[1370].Request.Method = "DELETE"; + Requests[1370].Request.Path = "/projects/7ac42682-/tags/f8dce"; + Requests[1371] = new DefaultHttpContext(); + Requests[1371].RequestServices = CreateServices(); + Requests[1371].Request.Method = "PATCH"; + Requests[1371].Request.Path = "/projects/18347b5b-/tags/1b894"; + Requests[1372] = new DefaultHttpContext(); + Requests[1372].RequestServices = CreateServices(); + Requests[1372].Request.Method = "GET"; + Requests[1372].Request.Path = "/projects/dfccf1e9-/tags/59527"; + Requests[1373] = new DefaultHttpContext(); + Requests[1373].RequestServices = CreateServices(); + Requests[1373].Request.Method = "PATCH"; + Requests[1373].Request.Path = "/storage/9cfd8322-ab57-4979-9/sas/3d259dd5-00ae-479a-"; + Requests[1374] = new DefaultHttpContext(); + Requests[1374].RequestServices = CreateServices(); + Requests[1374].Request.Method = "PUT"; + Requests[1374].Request.Path = "/storage/0d93fd72-6818-4d10-8/sas/0801985d-2de9-421c-"; + Requests[1375] = new DefaultHttpContext(); + Requests[1375].RequestServices = CreateServices(); + Requests[1375].Request.Method = "DELETE"; + Requests[1375].Request.Path = "/storage/14a80398-0958-43b1-9/sas/466b9136-7a7b-4e22-"; + Requests[1376] = new DefaultHttpContext(); + Requests[1376].RequestServices = CreateServices(); + Requests[1376].Request.Method = "GET"; + Requests[1376].Request.Path = "/storage/e99b0743-2f45-478e-9/sas/316980f2-15c1-4db9-"; + Requests[1377] = new DefaultHttpContext(); + Requests[1377].RequestServices = CreateServices(); + Requests[1377].Request.Method = "GET"; + Requests[1377].Request.Path = "/subscriptions/70c5d444-0ea0-/providers/ca932bfb-c23b-48f0-8fac-e"; + Requests[1378] = new DefaultHttpContext(); + Requests[1378].RequestServices = CreateServices(); + Requests[1378].Request.Method = "HEAD"; + Requests[1378].Request.Path = "/subscriptions/33421b06-87ae-/resourcegroups/b65090e7-6dae-47e"; + Requests[1379] = new DefaultHttpContext(); + Requests[1379].RequestServices = CreateServices(); + Requests[1379].Request.Method = "PATCH"; + Requests[1379].Request.Path = "/subscriptions/b8ea6988-ba87-/resourcegroups/2e888959-3158-469"; + Requests[1380] = new DefaultHttpContext(); + Requests[1380].RequestServices = CreateServices(); + Requests[1380].Request.Method = "GET"; + Requests[1380].Request.Path = "/subscriptions/b61598c2-31a1-/resourcegroups/275a9a69-c8bd-44f"; + Requests[1381] = new DefaultHttpContext(); + Requests[1381].RequestServices = CreateServices(); + Requests[1381].Request.Method = "PUT"; + Requests[1381].Request.Path = "/subscriptions/abe92b5f-45a8-/resourcegroups/2c8eb688-3e39-449"; + Requests[1382] = new DefaultHttpContext(); + Requests[1382].RequestServices = CreateServices(); + Requests[1382].Request.Method = "DELETE"; + Requests[1382].Request.Path = "/subscriptions/0ee49827-fcca-/resourcegroups/cbb96ef9-5ef0-4aa"; + Requests[1383] = new DefaultHttpContext(); + Requests[1383].RequestServices = CreateServices(); + Requests[1383].Request.Method = "DELETE"; + Requests[1383].Request.Path = "/subscriptions/4dd04a95-56ca-/tagNames/0b2f487"; + Requests[1384] = new DefaultHttpContext(); + Requests[1384].RequestServices = CreateServices(); + Requests[1384].Request.Method = "PUT"; + Requests[1384].Request.Path = "/subscriptions/fcb97e28-a5d2-/tagNames/9c10be2"; + Requests[1385] = new DefaultHttpContext(); + Requests[1385].RequestServices = CreateServices(); + Requests[1385].Request.Method = "GET"; + Requests[1385].Request.Path = "/apis/dc327/operations/65ee625a-45/policies"; + Requests[1386] = new DefaultHttpContext(); + Requests[1386].RequestServices = CreateServices(); + Requests[1386].Request.Method = "POST"; + Requests[1386].Request.Path = "/apps/fa9b1/versions/0668da6b-/clone"; + Requests[1387] = new DefaultHttpContext(); + Requests[1387].RequestServices = CreateServices(); + Requests[1387].Request.Method = "GET"; + Requests[1387].Request.Path = "/apps/20ec6/versions/e8dcb709-/closedlists"; + Requests[1388] = new DefaultHttpContext(); + Requests[1388].RequestServices = CreateServices(); + Requests[1388].Request.Method = "POST"; + Requests[1388].Request.Path = "/apps/9851a/versions/ff5a938a-/closedlists"; + Requests[1389] = new DefaultHttpContext(); + Requests[1389].RequestServices = CreateServices(); + Requests[1389].Request.Method = "POST"; + Requests[1389].Request.Path = "/apps/3444a/versions/f91a0bbb-/compositeentities"; + Requests[1390] = new DefaultHttpContext(); + Requests[1390].RequestServices = CreateServices(); + Requests[1390].Request.Method = "GET"; + Requests[1390].Request.Path = "/apps/cbeee/versions/6f0f4da4-/compositeentities"; + Requests[1391] = new DefaultHttpContext(); + Requests[1391].RequestServices = CreateServices(); + Requests[1391].Request.Method = "POST"; + Requests[1391].Request.Path = "/apps/431f2/versions/89b20a24-/customprebuiltdomains"; + Requests[1392] = new DefaultHttpContext(); + Requests[1392].RequestServices = CreateServices(); + Requests[1392].Request.Method = "POST"; + Requests[1392].Request.Path = "/apps/b2ea0/versions/30e949b9-/customprebuiltentities"; + Requests[1393] = new DefaultHttpContext(); + Requests[1393].RequestServices = CreateServices(); + Requests[1393].Request.Method = "GET"; + Requests[1393].Request.Path = "/apps/078d8/versions/133cefd6-/customprebuiltentities"; + Requests[1394] = new DefaultHttpContext(); + Requests[1394].RequestServices = CreateServices(); + Requests[1394].Request.Method = "POST"; + Requests[1394].Request.Path = "/apps/2ad28/versions/3789a8af-/customprebuiltintents"; + Requests[1395] = new DefaultHttpContext(); + Requests[1395].RequestServices = CreateServices(); + Requests[1395].Request.Method = "GET"; + Requests[1395].Request.Path = "/apps/d75a7/versions/aa87cdf4-/customprebuiltintents"; + Requests[1396] = new DefaultHttpContext(); + Requests[1396].RequestServices = CreateServices(); + Requests[1396].Request.Method = "GET"; + Requests[1396].Request.Path = "/apps/5b790/versions/78a6f8a9-/customprebuiltmodels"; + Requests[1397] = new DefaultHttpContext(); + Requests[1397].RequestServices = CreateServices(); + Requests[1397].Request.Method = "GET"; + Requests[1397].Request.Path = "/apps/8a676/versions/e148980b-/entities"; + Requests[1398] = new DefaultHttpContext(); + Requests[1398].RequestServices = CreateServices(); + Requests[1398].Request.Method = "POST"; + Requests[1398].Request.Path = "/apps/5bbd0/versions/b621c868-/entities"; + Requests[1399] = new DefaultHttpContext(); + Requests[1399].RequestServices = CreateServices(); + Requests[1399].Request.Method = "POST"; + Requests[1399].Request.Path = "/apps/8b3fe/versions/463fa26a-/example"; + Requests[1400] = new DefaultHttpContext(); + Requests[1400].RequestServices = CreateServices(); + Requests[1400].Request.Method = "POST"; + Requests[1400].Request.Path = "/apps/1663b/versions/e861ebcf-/examples"; + Requests[1401] = new DefaultHttpContext(); + Requests[1401].RequestServices = CreateServices(); + Requests[1401].Request.Method = "GET"; + Requests[1401].Request.Path = "/apps/8a0fa/versions/886a81ef-/examples"; + Requests[1402] = new DefaultHttpContext(); + Requests[1402].RequestServices = CreateServices(); + Requests[1402].Request.Method = "GET"; + Requests[1402].Request.Path = "/apps/021e5/versions/7c2324f6-/export"; + Requests[1403] = new DefaultHttpContext(); + Requests[1403].RequestServices = CreateServices(); + Requests[1403].Request.Method = "GET"; + Requests[1403].Request.Path = "/apps/c056a/versions/e8c2d6fc-/features"; + Requests[1404] = new DefaultHttpContext(); + Requests[1404].RequestServices = CreateServices(); + Requests[1404].Request.Method = "GET"; + Requests[1404].Request.Path = "/apps/6244b/versions/0aebb67a-/hierarchicalentities"; + Requests[1405] = new DefaultHttpContext(); + Requests[1405].RequestServices = CreateServices(); + Requests[1405].Request.Method = "POST"; + Requests[1405].Request.Path = "/apps/a4b78/versions/ffd8902a-/hierarchicalentities"; + Requests[1406] = new DefaultHttpContext(); + Requests[1406].RequestServices = CreateServices(); + Requests[1406].Request.Method = "POST"; + Requests[1406].Request.Path = "/apps/fbea2/versions/4ff0fbdb-/intents"; + Requests[1407] = new DefaultHttpContext(); + Requests[1407].RequestServices = CreateServices(); + Requests[1407].Request.Method = "GET"; + Requests[1407].Request.Path = "/apps/4fe5f/versions/59f9efe4-/intents"; + Requests[1408] = new DefaultHttpContext(); + Requests[1408].RequestServices = CreateServices(); + Requests[1408].Request.Method = "GET"; + Requests[1408].Request.Path = "/apps/42e84/versions/3c0b2fdc-/listprebuilts"; + Requests[1409] = new DefaultHttpContext(); + Requests[1409].RequestServices = CreateServices(); + Requests[1409].Request.Method = "GET"; + Requests[1409].Request.Path = "/apps/1f2b8/versions/2108209c-/models"; + Requests[1410] = new DefaultHttpContext(); + Requests[1410].RequestServices = CreateServices(); + Requests[1410].Request.Method = "POST"; + Requests[1410].Request.Path = "/apps/a874e/versions/ec638c39-/patternanyentities"; + Requests[1411] = new DefaultHttpContext(); + Requests[1411].RequestServices = CreateServices(); + Requests[1411].Request.Method = "GET"; + Requests[1411].Request.Path = "/apps/f32d8/versions/610587f9-/patternanyentities"; + Requests[1412] = new DefaultHttpContext(); + Requests[1412].RequestServices = CreateServices(); + Requests[1412].Request.Method = "POST"; + Requests[1412].Request.Path = "/apps/34d19/versions/45a12686-/patternrule"; + Requests[1413] = new DefaultHttpContext(); + Requests[1413].RequestServices = CreateServices(); + Requests[1413].Request.Method = "GET"; + Requests[1413].Request.Path = "/apps/37040/versions/7a5039b1-/patternrules"; + Requests[1414] = new DefaultHttpContext(); + Requests[1414].RequestServices = CreateServices(); + Requests[1414].Request.Method = "DELETE"; + Requests[1414].Request.Path = "/apps/a32e6/versions/4edcc313-/patternrules"; + Requests[1415] = new DefaultHttpContext(); + Requests[1415].RequestServices = CreateServices(); + Requests[1415].Request.Method = "PUT"; + Requests[1415].Request.Path = "/apps/8790b/versions/ac7b92a0-/patternrules"; + Requests[1416] = new DefaultHttpContext(); + Requests[1416].RequestServices = CreateServices(); + Requests[1416].Request.Method = "POST"; + Requests[1416].Request.Path = "/apps/1b994/versions/85343a91-/patternrules"; + Requests[1417] = new DefaultHttpContext(); + Requests[1417].RequestServices = CreateServices(); + Requests[1417].Request.Method = "GET"; + Requests[1417].Request.Path = "/apps/04516/versions/8a2ab223-/patterns"; + Requests[1418] = new DefaultHttpContext(); + Requests[1418].RequestServices = CreateServices(); + Requests[1418].Request.Method = "POST"; + Requests[1418].Request.Path = "/apps/03c60/versions/79d70224-/patterns"; + Requests[1419] = new DefaultHttpContext(); + Requests[1419].RequestServices = CreateServices(); + Requests[1419].Request.Method = "POST"; + Requests[1419].Request.Path = "/apps/48989/versions/0f77df8e-/phraselists"; + Requests[1420] = new DefaultHttpContext(); + Requests[1420].RequestServices = CreateServices(); + Requests[1420].Request.Method = "GET"; + Requests[1420].Request.Path = "/apps/0c73d/versions/a44e717d-/phraselists"; + Requests[1421] = new DefaultHttpContext(); + Requests[1421].RequestServices = CreateServices(); + Requests[1421].Request.Method = "POST"; + Requests[1421].Request.Path = "/apps/a7c42/versions/b0a92db8-/prebuilts"; + Requests[1422] = new DefaultHttpContext(); + Requests[1422].RequestServices = CreateServices(); + Requests[1422].Request.Method = "GET"; + Requests[1422].Request.Path = "/apps/fc4cc/versions/b7c0ccf5-/prebuilts"; + Requests[1423] = new DefaultHttpContext(); + Requests[1423].RequestServices = CreateServices(); + Requests[1423].Request.Method = "GET"; + Requests[1423].Request.Path = "/apps/8fed9/versions/d8b10cb2-/regexentities"; + Requests[1424] = new DefaultHttpContext(); + Requests[1424].RequestServices = CreateServices(); + Requests[1424].Request.Method = "POST"; + Requests[1424].Request.Path = "/apps/60385/versions/b2b2866d-/regexentities"; + Requests[1425] = new DefaultHttpContext(); + Requests[1425].RequestServices = CreateServices(); + Requests[1425].Request.Method = "DELETE"; + Requests[1425].Request.Path = "/apps/852ed/versions/87e20a25-/suggest"; + Requests[1426] = new DefaultHttpContext(); + Requests[1426].RequestServices = CreateServices(); + Requests[1426].Request.Method = "POST"; + Requests[1426].Request.Path = "/apps/b0db2/versions/36b382bb-/train"; + Requests[1427] = new DefaultHttpContext(); + Requests[1427].RequestServices = CreateServices(); + Requests[1427].Request.Method = "GET"; + Requests[1427].Request.Path = "/apps/713c0/versions/8669d433-/train"; + Requests[1428] = new DefaultHttpContext(); + Requests[1428].RequestServices = CreateServices(); + Requests[1428].Request.Method = "POST"; + Requests[1428].Request.Path = "/deletedstorage/514e1d6b-1354-4e55-a/sas/5f58094a-f404-4335-/recover"; + Requests[1429] = new DefaultHttpContext(); + Requests[1429].RequestServices = CreateServices(); + Requests[1429].Request.Method = "GET"; + Requests[1429].Request.Path = "/jobs/ed3e3/tasks/d301cc/files"; + Requests[1430] = new DefaultHttpContext(); + Requests[1430].RequestServices = CreateServices(); + Requests[1430].Request.Method = "POST"; + Requests[1430].Request.Path = "/jobs/2d312/tasks/1e8971/reactivate"; + Requests[1431] = new DefaultHttpContext(); + Requests[1431].RequestServices = CreateServices(); + Requests[1431].Request.Method = "GET"; + Requests[1431].Request.Path = "/jobs/c9086/tasks/b40b73/subtasksinfo"; + Requests[1432] = new DefaultHttpContext(); + Requests[1432].RequestServices = CreateServices(); + Requests[1432].Request.Method = "POST"; + Requests[1432].Request.Path = "/jobs/71345/tasks/be3e26/terminate"; + Requests[1433] = new DefaultHttpContext(); + Requests[1433].RequestServices = CreateServices(); + Requests[1433].Request.Method = "POST"; + Requests[1433].Request.Path = "/persongroups/56af3c32-9140/persons/e3f145d3/persistedFaces"; + Requests[1434] = new DefaultHttpContext(); + Requests[1434].RequestServices = CreateServices(); + Requests[1434].Request.Method = "POST"; + Requests[1434].Request.Path = "/pools/d6d5a9/nodes/b12c1e/disablescheduling"; + Requests[1435] = new DefaultHttpContext(); + Requests[1435].RequestServices = CreateServices(); + Requests[1435].Request.Method = "POST"; + Requests[1435].Request.Path = "/pools/81a790/nodes/d9db37/enablescheduling"; + Requests[1436] = new DefaultHttpContext(); + Requests[1436].RequestServices = CreateServices(); + Requests[1436].Request.Method = "GET"; + Requests[1436].Request.Path = "/pools/73a821/nodes/96761c/files"; + Requests[1437] = new DefaultHttpContext(); + Requests[1437].RequestServices = CreateServices(); + Requests[1437].Request.Method = "GET"; + Requests[1437].Request.Path = "/pools/a665c1/nodes/3317d9/rdp"; + Requests[1438] = new DefaultHttpContext(); + Requests[1438].RequestServices = CreateServices(); + Requests[1438].Request.Method = "POST"; + Requests[1438].Request.Path = "/pools/f1105f/nodes/ecac92/reboot"; + Requests[1439] = new DefaultHttpContext(); + Requests[1439].RequestServices = CreateServices(); + Requests[1439].Request.Method = "POST"; + Requests[1439].Request.Path = "/pools/447429/nodes/b63a7d/reimage"; + Requests[1440] = new DefaultHttpContext(); + Requests[1440].RequestServices = CreateServices(); + Requests[1440].Request.Method = "GET"; + Requests[1440].Request.Path = "/pools/a03760/nodes/456845/remoteloginsettings"; + Requests[1441] = new DefaultHttpContext(); + Requests[1441].RequestServices = CreateServices(); + Requests[1441].Request.Method = "POST"; + Requests[1441].Request.Path = "/pools/39e8af/nodes/3029df/uploadbatchservicelogs"; + Requests[1442] = new DefaultHttpContext(); + Requests[1442].RequestServices = CreateServices(); + Requests[1442].Request.Method = "POST"; + Requests[1442].Request.Path = "/pools/dd5242/nodes/f89588/users"; + Requests[1443] = new DefaultHttpContext(); + Requests[1443].RequestServices = CreateServices(); + Requests[1443].Request.Method = "POST"; + Requests[1443].Request.Path = "/projects/93f2776c-/iterations/4a1e0386-ec/export"; + Requests[1444] = new DefaultHttpContext(); + Requests[1444].RequestServices = CreateServices(); + Requests[1444].Request.Method = "GET"; + Requests[1444].Request.Path = "/projects/cf3eba4c-/iterations/134ed682-87/export"; + Requests[1445] = new DefaultHttpContext(); + Requests[1445].RequestServices = CreateServices(); + Requests[1445].Request.Method = "GET"; + Requests[1445].Request.Path = "/projects/265784d9-/iterations/893ef7ac-ea/performance"; + Requests[1446] = new DefaultHttpContext(); + Requests[1446].RequestServices = CreateServices(); + Requests[1446].Request.Method = "POST"; + Requests[1446].Request.Path = "/subscriptions/2447212d-833a-/providers/eb74d7fb-804c-445c-8ac8-4/register"; + Requests[1447] = new DefaultHttpContext(); + Requests[1447].RequestServices = CreateServices(); + Requests[1447].Request.Method = "POST"; + Requests[1447].Request.Path = "/subscriptions/79ce5de2-1d14-/providers/44c77116-eb7a-4a59-982f-6/unregister"; + Requests[1448] = new DefaultHttpContext(); + Requests[1448].RequestServices = CreateServices(); + Requests[1448].Request.Method = "POST"; + Requests[1448].Request.Path = "/subscriptions/29591378-a024-/resourcegroups/8d83dae8-da4d-499/exportTemplate"; + Requests[1449] = new DefaultHttpContext(); + Requests[1449].RequestServices = CreateServices(); + Requests[1449].Request.Method = "POST"; + Requests[1449].Request.Path = "/subscriptions/2a8e259e-0215-/resourceGroups/fbc9cae0-e64d-415/moveResources"; + Requests[1450] = new DefaultHttpContext(); + Requests[1450].RequestServices = CreateServices(); + Requests[1450].Request.Method = "GET"; + Requests[1450].Request.Path = "/subscriptions/b71b1306-7f0d-/resourceGroups/02e9ae00-2d73-436/resources"; + Requests[1451] = new DefaultHttpContext(); + Requests[1451].RequestServices = CreateServices(); + Requests[1451].Request.Method = "POST"; + Requests[1451].Request.Path = "/subscriptions/a382d0c2-a395-/resourceGroups/d4783f31-e9c0-46d/validateMoveResources"; + Requests[1452] = new DefaultHttpContext(); + Requests[1452].RequestServices = CreateServices(); + Requests[1452].Request.Method = "GET"; + Requests[1452].Request.Path = "/projects/d198d2fb-/iterations/0929539f-eb/performance/images"; + Requests[1453] = new DefaultHttpContext(); + Requests[1453].RequestServices = CreateServices(); + Requests[1453].Request.Method = "GET"; + Requests[1453].Request.Path = "/projects/08adcf85-/iterations/4301c8ab-c2/performance/images/count"; + Requests[1454] = new DefaultHttpContext(); + Requests[1454].RequestServices = CreateServices(); + Requests[1454].Request.Method = "GET"; + Requests[1454].Request.Path = "/subscriptions/ca896ae5-9afe-/resourceGroup/60f7c494-7880-4be/providers/microsoft.insights/workbooks"; + Requests[1455] = new DefaultHttpContext(); + Requests[1455].RequestServices = CreateServices(); + Requests[1455].Request.Method = "GET"; + Requests[1455].Request.Path = "/subscriptions/36f9d9b4-4f6e-/resourceGroups/a6c519dd-/providers/Microsoft.DataMigration/services"; + Requests[1456] = new DefaultHttpContext(); + Requests[1456].RequestServices = CreateServices(); + Requests[1456].Request.Method = "GET"; + Requests[1456].Request.Path = "/subscriptions/b9930d38-e558-/resourceGroups/b022c26f-f726/providers/Microsoft.Advisor/configurations"; + Requests[1457] = new DefaultHttpContext(); + Requests[1457].RequestServices = CreateServices(); + Requests[1457].Request.Method = "PUT"; + Requests[1457].Request.Path = "/subscriptions/5fa5365d-21e4-/resourceGroups/2ebabd7d-ef9f/providers/Microsoft.Advisor/configurations"; + Requests[1458] = new DefaultHttpContext(); + Requests[1458].RequestServices = CreateServices(); + Requests[1458].Request.Method = "GET"; + Requests[1458].Request.Path = "/subscriptions/ddf37c6e-1a33-/resourcegroups/4b96cea3-aab6/providers/Microsoft.AzureBridge.Admin/activations"; + Requests[1459] = new DefaultHttpContext(); + Requests[1459].RequestServices = CreateServices(); + Requests[1459].Request.Method = "GET"; + Requests[1459].Request.Path = "/subscriptions/1414d91b-d65c-/resourceGroups/c87b7484-933b/providers/Microsoft.AzureStack/registrations"; + Requests[1460] = new DefaultHttpContext(); + Requests[1460].RequestServices = CreateServices(); + Requests[1460].Request.Method = "GET"; + Requests[1460].Request.Path = "/subscriptions/b70e81d2-b250-/resourceGroups/56609c74-414c-418/providers/Microsoft.AAD/domainServices"; + Requests[1461] = new DefaultHttpContext(); + Requests[1461].RequestServices = CreateServices(); + Requests[1461].Request.Method = "GET"; + Requests[1461].Request.Path = "/subscriptions/a5e07f32-7772-/resourceGroups/30ee9a63-5cc8-4d3/providers/Microsoft.AnalysisServices/servers"; + Requests[1462] = new DefaultHttpContext(); + Requests[1462].RequestServices = CreateServices(); + Requests[1462].Request.Method = "GET"; + Requests[1462].Request.Path = "/subscriptions/6d45e1cd-a202-/resourceGroups/06531fb8-28dc-405/providers/Microsoft.ApiManagement/service"; + Requests[1463] = new DefaultHttpContext(); + Requests[1463].RequestServices = CreateServices(); + Requests[1463].Request.Method = "GET"; + Requests[1463].Request.Path = "/subscriptions/10ee863f-3491-/resourceGroups/d2f95e9f-f138-471/providers/Microsoft.Authorization/locks"; + Requests[1464] = new DefaultHttpContext(); + Requests[1464].RequestServices = CreateServices(); + Requests[1464].Request.Method = "GET"; + Requests[1464].Request.Path = "/subscriptions/a1976651-efdf-/resourcegroups/864193a9-3c8a-4e6/providers/Microsoft.Authorization/permissions"; + Requests[1465] = new DefaultHttpContext(); + Requests[1465].RequestServices = CreateServices(); + Requests[1465].Request.Method = "GET"; + Requests[1465].Request.Path = "/subscriptions/dba10476-ba3c-/resourceGroups/d9127b89-1d0e-47b/providers/Microsoft.Authorization/policyAssignments"; + Requests[1466] = new DefaultHttpContext(); + Requests[1466].RequestServices = CreateServices(); + Requests[1466].Request.Method = "GET"; + Requests[1466].Request.Path = "/subscriptions/eb131152-eb34-/resourceGroups/deb18fb7-3a02-406/providers/Microsoft.Authorization/roleAssignments"; + Requests[1467] = new DefaultHttpContext(); + Requests[1467].RequestServices = CreateServices(); + Requests[1467].Request.Method = "GET"; + Requests[1467].Request.Path = "/subscriptions/452aafdf-0805-/resourceGroups/46a021ad-40f5-4ba/providers/Microsoft.Automation/automationAccounts"; + Requests[1468] = new DefaultHttpContext(); + Requests[1468].RequestServices = CreateServices(); + Requests[1468].Request.Method = "GET"; + Requests[1468].Request.Path = "/subscriptions/e150e3db-3da4-/resourcegroups/db258bc6-f0ca-4c5/providers/Microsoft.Backup.Admin/backupLocations"; + Requests[1469] = new DefaultHttpContext(); + Requests[1469].RequestServices = CreateServices(); + Requests[1469].Request.Method = "GET"; + Requests[1469].Request.Path = "/subscriptions/f543166d-e72e-/resourceGroups/d7c75b06-ed3c-4fa/providers/Microsoft.Batch/batchAccounts"; + Requests[1470] = new DefaultHttpContext(); + Requests[1470].RequestServices = CreateServices(); + Requests[1470].Request.Method = "GET"; + Requests[1470].Request.Path = "/subscriptions/d11bee98-4f17-/resourceGroups/0fcc56ad-bcdf-4f7/providers/Microsoft.BatchAI/clusters"; + Requests[1471] = new DefaultHttpContext(); + Requests[1471].RequestServices = CreateServices(); + Requests[1471].Request.Method = "GET"; + Requests[1471].Request.Path = "/subscriptions/f9411668-6ef4-/resourceGroups/b770b8b1-6d80-48d/providers/Microsoft.BatchAI/fileServers"; + Requests[1472] = new DefaultHttpContext(); + Requests[1472].RequestServices = CreateServices(); + Requests[1472].Request.Method = "GET"; + Requests[1472].Request.Path = "/subscriptions/c5c2215f-5824-/resourceGroups/807d4df1-4435-4bc/providers/Microsoft.BatchAI/jobs"; + Requests[1473] = new DefaultHttpContext(); + Requests[1473].RequestServices = CreateServices(); + Requests[1473].Request.Method = "GET"; + Requests[1473].Request.Path = "/subscriptions/e9b15b23-0a55-/resourceGroups/5887d7f7-aa54-4d1/providers/Microsoft.BatchAI/workspaces"; + Requests[1474] = new DefaultHttpContext(); + Requests[1474].RequestServices = CreateServices(); + Requests[1474].Request.Method = "GET"; + Requests[1474].Request.Path = "/subscriptions/cb0a3a85-f8a4-/resourceGroups/cfb20eda-ff51-4f5/providers/Microsoft.BotService/botServices"; + Requests[1475] = new DefaultHttpContext(); + Requests[1475].RequestServices = CreateServices(); + Requests[1475].Request.Method = "GET"; + Requests[1475].Request.Path = "/subscriptions/1660fbb0-bd45-/resourceGroups/aaf9ef07-1abc-4db/providers/Microsoft.Cache/Redis"; + Requests[1476] = new DefaultHttpContext(); + Requests[1476].RequestServices = CreateServices(); + Requests[1476].Request.Method = "GET"; + Requests[1476].Request.Path = "/subscriptions/f1ea0ce5-19a9-/resourceGroups/19713d7b-7a73-4b6/providers/Microsoft.Cdn/profiles"; + Requests[1477] = new DefaultHttpContext(); + Requests[1477].RequestServices = CreateServices(); + Requests[1477].Request.Method = "GET"; + Requests[1477].Request.Path = "/subscriptions/3562202c-6d42-/resourceGroups/44cc1253-d2ac-49f/providers/Microsoft.CertificateRegistration/certificateOrders"; + Requests[1478] = new DefaultHttpContext(); + Requests[1478].RequestServices = CreateServices(); + Requests[1478].Request.Method = "GET"; + Requests[1478].Request.Path = "/subscriptions/73ff9c0a-28e1-/resourceGroups/4a881118-2642-449/providers/Microsoft.CognitiveServices/accounts"; + Requests[1479] = new DefaultHttpContext(); + Requests[1479].RequestServices = CreateServices(); + Requests[1479].Request.Method = "GET"; + Requests[1479].Request.Path = "/subscriptions/0f672f1a-f45a-/resourceGroups/e62272d2-4d1c-4b0/providers/Microsoft.Compute/availabilitySets"; + Requests[1480] = new DefaultHttpContext(); + Requests[1480].RequestServices = CreateServices(); + Requests[1480].Request.Method = "GET"; + Requests[1480].Request.Path = "/subscriptions/2936ed6a-9ec2-/resourceGroups/0303f9a1-7d12-426/providers/Microsoft.Compute/disks"; + Requests[1481] = new DefaultHttpContext(); + Requests[1481].RequestServices = CreateServices(); + Requests[1481].Request.Method = "GET"; + Requests[1481].Request.Path = "/subscriptions/803da4b8-101a-/resourceGroups/eddca269-dbfb-4b1/providers/Microsoft.Compute/galleries"; + Requests[1482] = new DefaultHttpContext(); + Requests[1482].RequestServices = CreateServices(); + Requests[1482].Request.Method = "GET"; + Requests[1482].Request.Path = "/subscriptions/e689e863-75b9-/resourceGroups/78475f9f-4982-478/providers/Microsoft.Compute/images"; + Requests[1483] = new DefaultHttpContext(); + Requests[1483].RequestServices = CreateServices(); + Requests[1483].Request.Method = "GET"; + Requests[1483].Request.Path = "/subscriptions/d624e122-2b60-/resourceGroups/bbd8da32-9145-442/providers/Microsoft.Compute/snapshots"; + Requests[1484] = new DefaultHttpContext(); + Requests[1484].RequestServices = CreateServices(); + Requests[1484].Request.Method = "GET"; + Requests[1484].Request.Path = "/subscriptions/b8d4c17b-481c-/resourceGroups/64b6d933-5fa6-415/providers/Microsoft.Compute/virtualMachines"; + Requests[1485] = new DefaultHttpContext(); + Requests[1485].RequestServices = CreateServices(); + Requests[1485].Request.Method = "GET"; + Requests[1485].Request.Path = "/subscriptions/ece6a6fe-5a24-/resourceGroups/e90fc390-fa15-4ba/providers/Microsoft.Compute/virtualMachineScaleSets"; + Requests[1486] = new DefaultHttpContext(); + Requests[1486].RequestServices = CreateServices(); + Requests[1486].Request.Method = "GET"; + Requests[1486].Request.Path = "/subscriptions/93cb9690-7acc-/resourceGroups/233bc4f2-cd35-4a7/providers/Microsoft.Consumption/budgets"; + Requests[1487] = new DefaultHttpContext(); + Requests[1487].RequestServices = CreateServices(); + Requests[1487].Request.Method = "GET"; + Requests[1487].Request.Path = "/subscriptions/5ef0f220-6d7d-/resourceGroups/61b519d3-8b3f-4cb/providers/Microsoft.ContainerInstance/containerGroups"; + Requests[1488] = new DefaultHttpContext(); + Requests[1488].RequestServices = CreateServices(); + Requests[1488].Request.Method = "GET"; + Requests[1488].Request.Path = "/subscriptions/48604ac9-d58c-/resourceGroups/3c46a09c-e54a-4fe/providers/Microsoft.ContainerRegistry/registries"; + Requests[1489] = new DefaultHttpContext(); + Requests[1489].RequestServices = CreateServices(); + Requests[1489].Request.Method = "GET"; + Requests[1489].Request.Path = "/subscriptions/bbbf5e3c-6151-/resourceGroups/de2ddf95-a9be-45e/providers/Microsoft.ContainerService/containerServices"; + Requests[1490] = new DefaultHttpContext(); + Requests[1490].RequestServices = CreateServices(); + Requests[1490].Request.Method = "GET"; + Requests[1490].Request.Path = "/subscriptions/0645fc66-c321-/resourceGroups/3b8ecf5e-99e6-4dc/providers/Microsoft.ContainerService/managedClusters"; + Requests[1491] = new DefaultHttpContext(); + Requests[1491].RequestServices = CreateServices(); + Requests[1491].Request.Method = "GET"; + Requests[1491].Request.Path = "/subscriptions/2f555fae-2f4d-/resourceGroups/889ddb13-e0bd-410/providers/Microsoft.CustomerInsights/hubs"; + Requests[1492] = new DefaultHttpContext(); + Requests[1492].RequestServices = CreateServices(); + Requests[1492].Request.Method = "GET"; + Requests[1492].Request.Path = "/subscriptions/4ffe29a9-2738-/resourceGroups/c372f835-0623-41f/providers/Microsoft.DataBox/jobs"; + Requests[1493] = new DefaultHttpContext(); + Requests[1493].RequestServices = CreateServices(); + Requests[1493].Request.Method = "GET"; + Requests[1493].Request.Path = "/subscriptions/5177cef1-2982-/resourceGroups/960b2ba5-bdd8-41d/providers/Microsoft.Databricks/workspaces"; + Requests[1494] = new DefaultHttpContext(); + Requests[1494].RequestServices = CreateServices(); + Requests[1494].Request.Method = "GET"; + Requests[1494].Request.Path = "/subscriptions/57fc4d63-096f-/resourceGroups/074163b0-27eb-421/providers/Microsoft.DataCatalog/catalogs"; + Requests[1495] = new DefaultHttpContext(); + Requests[1495].RequestServices = CreateServices(); + Requests[1495].Request.Method = "GET"; + Requests[1495].Request.Path = "/subscriptions/c42b4e0a-55fb-/resourceGroups/9bdb8b26-104d-46a/providers/Microsoft.DataFactory/factories"; + Requests[1496] = new DefaultHttpContext(); + Requests[1496].RequestServices = CreateServices(); + Requests[1496].Request.Method = "GET"; + Requests[1496].Request.Path = "/subscriptions/4854010c-558f-/resourceGroups/c0c8904c-5b2b-487/providers/Microsoft.DataLakeAnalytics/accounts"; + Requests[1497] = new DefaultHttpContext(); + Requests[1497].RequestServices = CreateServices(); + Requests[1497].Request.Method = "GET"; + Requests[1497].Request.Path = "/subscriptions/5be220ed-49f4-/resourceGroups/52372424-c93e-427/providers/Microsoft.DataLakeStore/accounts"; + Requests[1498] = new DefaultHttpContext(); + Requests[1498].RequestServices = CreateServices(); + Requests[1498].Request.Method = "GET"; + Requests[1498].Request.Path = "/subscriptions/a873a10b-7505-/resourceGroups/ffd02886-e494-4fa/providers/Microsoft.DBforMySQL/servers"; + Requests[1499] = new DefaultHttpContext(); + Requests[1499].RequestServices = CreateServices(); + Requests[1499].Request.Method = "GET"; + Requests[1499].Request.Path = "/subscriptions/69cfcc19-2755-/resourceGroups/a25282cd-fba2-4b0/providers/Microsoft.DBforPostgreSQL/servers"; + Requests[1500] = new DefaultHttpContext(); + Requests[1500].RequestServices = CreateServices(); + Requests[1500].Request.Method = "GET"; + Requests[1500].Request.Path = "/subscriptions/75be4bc0-921a-/resourceGroups/3c6fb51c-fd8e-418/providers/Microsoft.Devices/IotHubs"; + Requests[1501] = new DefaultHttpContext(); + Requests[1501].RequestServices = CreateServices(); + Requests[1501].Request.Method = "GET"; + Requests[1501].Request.Path = "/subscriptions/204104fd-946b-/resourceGroups/17b4abd3-08eb-44d/providers/Microsoft.Devices/provisioningServices"; + Requests[1502] = new DefaultHttpContext(); + Requests[1502].RequestServices = CreateServices(); + Requests[1502].Request.Method = "GET"; + Requests[1502].Request.Path = "/subscriptions/710dea1a-8861-/resourceGroups/68516efd-dee6-449/providers/Microsoft.DevTestLab/labs"; + Requests[1503] = new DefaultHttpContext(); + Requests[1503].RequestServices = CreateServices(); + Requests[1503].Request.Method = "GET"; + Requests[1503].Request.Path = "/subscriptions/43bc0986-f03b-/resourceGroups/eb1c5a0a-86d5-404/providers/Microsoft.DevTestLab/schedules"; + Requests[1504] = new DefaultHttpContext(); + Requests[1504].RequestServices = CreateServices(); + Requests[1504].Request.Method = "GET"; + Requests[1504].Request.Path = "/subscriptions/7a567f06-f05f-/resourceGroups/2d1597b5-7eb7-427/providers/Microsoft.DocumentDB/databaseAccounts"; + Requests[1505] = new DefaultHttpContext(); + Requests[1505].RequestServices = CreateServices(); + Requests[1505].Request.Method = "GET"; + Requests[1505].Request.Path = "/subscriptions/c83de8e6-7d60-/resourceGroups/219dc1e4-9030-42a/providers/Microsoft.DomainRegistration/domains"; + Requests[1506] = new DefaultHttpContext(); + Requests[1506].RequestServices = CreateServices(); + Requests[1506].Request.Method = "GET"; + Requests[1506].Request.Path = "/subscriptions/6593bb68-9b93-/resourceGroups/6acea5ff-e02c-419/providers/Microsoft.EventGrid/eventSubscriptions"; + Requests[1507] = new DefaultHttpContext(); + Requests[1507].RequestServices = CreateServices(); + Requests[1507].Request.Method = "GET"; + Requests[1507].Request.Path = "/subscriptions/daf683a1-4081-/resourceGroups/b95fcd46-5eeb-43c/providers/Microsoft.EventGrid/topics"; + Requests[1508] = new DefaultHttpContext(); + Requests[1508].RequestServices = CreateServices(); + Requests[1508].Request.Method = "GET"; + Requests[1508].Request.Path = "/subscriptions/da37b778-6e4c-/resourceGroups/369439d7-59d1-42c/providers/Microsoft.EventHub/clusters"; + Requests[1509] = new DefaultHttpContext(); + Requests[1509].RequestServices = CreateServices(); + Requests[1509].Request.Method = "GET"; + Requests[1509].Request.Path = "/subscriptions/e5c1df9e-04f2-/resourceGroups/77f8eb85-46d1-405/providers/Microsoft.EventHub/namespaces"; + Requests[1510] = new DefaultHttpContext(); + Requests[1510].RequestServices = CreateServices(); + Requests[1510].Request.Method = "PUT"; + Requests[1510].Request.Path = "/subscriptions/b97098a9-3004-/resourceGroups/e2975862-b116-465/providers/Microsoft.Fabric.Admin/fabricLocations"; + Requests[1511] = new DefaultHttpContext(); + Requests[1511].RequestServices = CreateServices(); + Requests[1511].Request.Method = "GET"; + Requests[1511].Request.Path = "/subscriptions/63b747f5-205b-/resourceGroups/9989eb9d-de23-4f5/providers/Microsoft.Fabric.Admin/fabricLocations"; + Requests[1512] = new DefaultHttpContext(); + Requests[1512].RequestServices = CreateServices(); + Requests[1512].Request.Method = "GET"; + Requests[1512].Request.Path = "/subscriptions/acdd421b-054a-/resourceGroups/14d7a437-8470-426/providers/Microsoft.HanaOnAzure/hanaInstances"; + Requests[1513] = new DefaultHttpContext(); + Requests[1513].RequestServices = CreateServices(); + Requests[1513].Request.Method = "GET"; + Requests[1513].Request.Path = "/subscriptions/f2ef579e-e548-/resourceGroups/814cf909-6570-446/providers/Microsoft.HDInsight/clusters"; + Requests[1514] = new DefaultHttpContext(); + Requests[1514].RequestServices = CreateServices(); + Requests[1514].Request.Method = "GET"; + Requests[1514].Request.Path = "/subscriptions/5023a9fb-aa23-/resourceGroups/552051e0-2359-453/providers/Microsoft.ImportExport/jobs"; + Requests[1515] = new DefaultHttpContext(); + Requests[1515].RequestServices = CreateServices(); + Requests[1515].Request.Method = "GET"; + Requests[1515].Request.Path = "/subscriptions/42712042-54a2-/resourceGroups/42fde4b0-3915-479/providers/Microsoft.InfrastructureInsights.Admin/regionHealths"; + Requests[1516] = new DefaultHttpContext(); + Requests[1516].RequestServices = CreateServices(); + Requests[1516].Request.Method = "GET"; + Requests[1516].Request.Path = "/subscriptions/1243ac69-53b4-/resourceGroups/4997d9e2-ec8c-488/providers/microsoft.insights/actionGroups"; + Requests[1517] = new DefaultHttpContext(); + Requests[1517].RequestServices = CreateServices(); + Requests[1517].Request.Method = "GET"; + Requests[1517].Request.Path = "/subscriptions/ac859b71-e405-/resourceGroups/863743f3-5e9f-4c7/providers/microsoft.insights/activityLogAlerts"; + Requests[1518] = new DefaultHttpContext(); + Requests[1518].RequestServices = CreateServices(); + Requests[1518].Request.Method = "GET"; + Requests[1518].Request.Path = "/subscriptions/889d66ac-b2fe-/resourcegroups/23dad28d-6d61-4c2/providers/microsoft.insights/alertrules"; + Requests[1519] = new DefaultHttpContext(); + Requests[1519].RequestServices = CreateServices(); + Requests[1519].Request.Method = "GET"; + Requests[1519].Request.Path = "/subscriptions/bebf5ab6-2a92-/resourcegroups/473a135a-ad59-4a5/providers/microsoft.insights/autoscalesettings"; + Requests[1520] = new DefaultHttpContext(); + Requests[1520].RequestServices = CreateServices(); + Requests[1520].Request.Method = "GET"; + Requests[1520].Request.Path = "/subscriptions/b1dcfe80-981a-/resourceGroups/dd2fec86-4d64-485/providers/Microsoft.Insights/components"; + Requests[1521] = new DefaultHttpContext(); + Requests[1521].RequestServices = CreateServices(); + Requests[1521].Request.Method = "GET"; + Requests[1521].Request.Path = "/subscriptions/99f6ff3b-d11b-/resourceGroups/5ead398c-9f74-462/providers/Microsoft.Insights/metricAlerts"; + Requests[1522] = new DefaultHttpContext(); + Requests[1522].RequestServices = CreateServices(); + Requests[1522].Request.Method = "GET"; + Requests[1522].Request.Path = "/subscriptions/ca83b208-ccfb-/resourcegroups/7ebb10d3-4a0c-4de/providers/microsoft.insights/scheduledQueryRules"; + Requests[1523] = new DefaultHttpContext(); + Requests[1523].RequestServices = CreateServices(); + Requests[1523].Request.Method = "GET"; + Requests[1523].Request.Path = "/subscriptions/ebb3888b-86c7-/resourceGroups/00fb4c47-5287-44c/providers/Microsoft.Insights/webtests"; + Requests[1524] = new DefaultHttpContext(); + Requests[1524].RequestServices = CreateServices(); + Requests[1524].Request.Method = "GET"; + Requests[1524].Request.Path = "/subscriptions/f65ba0a6-dffb-/resourceGroups/3c17a865-3052-44b/providers/Microsoft.IoTCentral/IoTApps"; + Requests[1525] = new DefaultHttpContext(); + Requests[1525].RequestServices = CreateServices(); + Requests[1525].Request.Method = "GET"; + Requests[1525].Request.Path = "/subscriptions/95c1e34a-129c-/resourceGroups/56315786-e4df-4aa/providers/Microsoft.IoTSpaces/Graph"; + Requests[1526] = new DefaultHttpContext(); + Requests[1526].RequestServices = CreateServices(); + Requests[1526].Request.Method = "GET"; + Requests[1526].Request.Path = "/subscriptions/a10ac875-1c6f-/resourceGroups/b532912c-3e51-47e/providers/Microsoft.KeyVault/vaults"; + Requests[1527] = new DefaultHttpContext(); + Requests[1527].RequestServices = CreateServices(); + Requests[1527].Request.Method = "GET"; + Requests[1527].Request.Path = "/subscriptions/af6a5397-8a11-/resourceGroups/0dd28fe4-fd30-4a0/providers/Microsoft.Logic/integrationAccounts"; + Requests[1528] = new DefaultHttpContext(); + Requests[1528].RequestServices = CreateServices(); + Requests[1528].Request.Method = "GET"; + Requests[1528].Request.Path = "/subscriptions/bc26839c-6a9c-/resourceGroups/d6a48b79-52dc-4e5/providers/Microsoft.Logic/workflows"; + Requests[1529] = new DefaultHttpContext(); + Requests[1529].RequestServices = CreateServices(); + Requests[1529].Request.Method = "GET"; + Requests[1529].Request.Path = "/subscriptions/d48ad9cc-3a01-/resourceGroups/76f4c672-a832-48f/providers/Microsoft.MachineLearning/commitmentPlans"; + Requests[1530] = new DefaultHttpContext(); + Requests[1530].RequestServices = CreateServices(); + Requests[1530].Request.Method = "GET"; + Requests[1530].Request.Path = "/subscriptions/5d635537-b355-/resourceGroups/abae5d62-6261-406/providers/Microsoft.MachineLearning/webServices"; + Requests[1531] = new DefaultHttpContext(); + Requests[1531].RequestServices = CreateServices(); + Requests[1531].Request.Method = "GET"; + Requests[1531].Request.Path = "/subscriptions/dcf3163f-7e7e-/resourceGroups/18bf2dd1-8744-460/providers/Microsoft.MachineLearning/workspaces"; + Requests[1532] = new DefaultHttpContext(); + Requests[1532].RequestServices = CreateServices(); + Requests[1532].Request.Method = "GET"; + Requests[1532].Request.Path = "/subscriptions/2cdad276-02fb-/resourceGroups/0950dc5e-c86d-4c2/providers/Microsoft.MachineLearningCompute/operationalizationClusters"; + Requests[1533] = new DefaultHttpContext(); + Requests[1533].RequestServices = CreateServices(); + Requests[1533].Request.Method = "GET"; + Requests[1533].Request.Path = "/subscriptions/e9ec81fc-0415-/resourceGroups/42b16c86-d937-4f9/providers/Microsoft.MachineLearningExperimentation/accounts"; + Requests[1534] = new DefaultHttpContext(); + Requests[1534].RequestServices = CreateServices(); + Requests[1534].Request.Method = "GET"; + Requests[1534].Request.Path = "/subscriptions/272c49f0-f36c-/resourceGroups/499bfffd-95d0-468/providers/Microsoft.MachineLearningServices/workspaces"; + Requests[1535] = new DefaultHttpContext(); + Requests[1535].RequestServices = CreateServices(); + Requests[1535].Request.Method = "GET"; + Requests[1535].Request.Path = "/subscriptions/c1d0d21a-6966-/resourceGroups/db9df978-ccc9-447/providers/Microsoft.ManagedIdentity/userAssignedIdentities"; + Requests[1536] = new DefaultHttpContext(); + Requests[1536].RequestServices = CreateServices(); + Requests[1536].Request.Method = "GET"; + Requests[1536].Request.Path = "/subscriptions/5ded2669-f682-/resourceGroups/b4bb0087-a4fc-4d8/providers/Microsoft.Maps/accounts"; + Requests[1537] = new DefaultHttpContext(); + Requests[1537].RequestServices = CreateServices(); + Requests[1537].Request.Method = "GET"; + Requests[1537].Request.Path = "/subscriptions/0c730f4e-ea09-/resourceGroups/25d269f0-395c-433/providers/Microsoft.Media/mediaservices"; + Requests[1538] = new DefaultHttpContext(); + Requests[1538].RequestServices = CreateServices(); + Requests[1538].Request.Method = "GET"; + Requests[1538].Request.Path = "/subscriptions/4ec4ca84-963a-/resourcegroups/c435c6d5-de36-432/providers/Microsoft.Migrate/projects"; + Requests[1539] = new DefaultHttpContext(); + Requests[1539].RequestServices = CreateServices(); + Requests[1539].Request.Method = "GET"; + Requests[1539].Request.Path = "/subscriptions/e615b34e-0ad3-/resourceGroups/5fc34e9b-772f-45e/providers/Microsoft.Network/applicationGateways"; + Requests[1540] = new DefaultHttpContext(); + Requests[1540].RequestServices = CreateServices(); + Requests[1540].Request.Method = "GET"; + Requests[1540].Request.Path = "/subscriptions/67877486-f3be-/resourceGroups/f01932ca-9450-41e/providers/Microsoft.Network/applicationSecurityGroups"; + Requests[1541] = new DefaultHttpContext(); + Requests[1541].RequestServices = CreateServices(); + Requests[1541].Request.Method = "GET"; + Requests[1541].Request.Path = "/subscriptions/fa273a93-4161-/resourceGroups/7290ced2-0136-44a/providers/Microsoft.Network/connections"; + Requests[1542] = new DefaultHttpContext(); + Requests[1542].RequestServices = CreateServices(); + Requests[1542].Request.Method = "GET"; + Requests[1542].Request.Path = "/subscriptions/4eeaa29a-be01-/resourceGroups/cde68515-3b3f-44b/providers/Microsoft.Network/ddosProtectionPlans"; + Requests[1543] = new DefaultHttpContext(); + Requests[1543].RequestServices = CreateServices(); + Requests[1543].Request.Method = "GET"; + Requests[1543].Request.Path = "/subscriptions/45d8b903-bc98-/resourceGroups/fd253bfb-8783-4cb/providers/Microsoft.Network/dnsZones"; + Requests[1544] = new DefaultHttpContext(); + Requests[1544].RequestServices = CreateServices(); + Requests[1544].Request.Method = "GET"; + Requests[1544].Request.Path = "/subscriptions/686d6217-ba39-/resourceGroups/acf943f4-c0f1-4b9/providers/Microsoft.Network/expressRouteCircuits"; + Requests[1545] = new DefaultHttpContext(); + Requests[1545].RequestServices = CreateServices(); + Requests[1545].Request.Method = "GET"; + Requests[1545].Request.Path = "/subscriptions/61bcffaa-0cad-/resourceGroups/455e7c1f-1df6-464/providers/Microsoft.Network/expressRouteCrossConnections"; + Requests[1546] = new DefaultHttpContext(); + Requests[1546].RequestServices = CreateServices(); + Requests[1546].Request.Method = "GET"; + Requests[1546].Request.Path = "/subscriptions/1af89f8c-2da1-/resourceGroups/3e36110b-afc2-4d5/providers/Microsoft.Network/loadBalancers"; + Requests[1547] = new DefaultHttpContext(); + Requests[1547].RequestServices = CreateServices(); + Requests[1547].Request.Method = "GET"; + Requests[1547].Request.Path = "/subscriptions/4839c8ab-e9b1-/resourceGroups/fcd04f30-85f0-464/providers/Microsoft.Network/localNetworkGateways"; + Requests[1548] = new DefaultHttpContext(); + Requests[1548].RequestServices = CreateServices(); + Requests[1548].Request.Method = "GET"; + Requests[1548].Request.Path = "/subscriptions/58697374-dd2b-/resourceGroups/cafd3de5-53be-4a3/providers/Microsoft.Network/networkInterfaces"; + Requests[1549] = new DefaultHttpContext(); + Requests[1549].RequestServices = CreateServices(); + Requests[1549].Request.Method = "GET"; + Requests[1549].Request.Path = "/subscriptions/2e60881b-ac06-/resourceGroups/62c1333d-6928-4b1/providers/Microsoft.Network/networkSecurityGroups"; + Requests[1550] = new DefaultHttpContext(); + Requests[1550].RequestServices = CreateServices(); + Requests[1550].Request.Method = "GET"; + Requests[1550].Request.Path = "/subscriptions/723bf7b0-6b01-/resourceGroups/1c7ddccf-c859-419/providers/Microsoft.Network/networkWatchers"; + Requests[1551] = new DefaultHttpContext(); + Requests[1551].RequestServices = CreateServices(); + Requests[1551].Request.Method = "GET"; + Requests[1551].Request.Path = "/subscriptions/7715623c-d025-/resourceGroups/cd0d9da4-9bfe-479/providers/Microsoft.Network/publicIPAddresses"; + Requests[1552] = new DefaultHttpContext(); + Requests[1552].RequestServices = CreateServices(); + Requests[1552].Request.Method = "GET"; + Requests[1552].Request.Path = "/subscriptions/bf2d4abe-1c75-/resourceGroups/f3430594-3c89-4f3/providers/Microsoft.Network/routeFilters"; + Requests[1553] = new DefaultHttpContext(); + Requests[1553].RequestServices = CreateServices(); + Requests[1553].Request.Method = "GET"; + Requests[1553].Request.Path = "/subscriptions/1f8d4667-4721-/resourceGroups/b5e237dd-ccb9-493/providers/Microsoft.Network/routeTables"; + Requests[1554] = new DefaultHttpContext(); + Requests[1554].RequestServices = CreateServices(); + Requests[1554].Request.Method = "GET"; + Requests[1554].Request.Path = "/subscriptions/219a1312-bcd5-/resourceGroups/f5c4eab9-137a-42b/providers/Microsoft.Network/trafficmanagerprofiles"; + Requests[1555] = new DefaultHttpContext(); + Requests[1555].RequestServices = CreateServices(); + Requests[1555].Request.Method = "GET"; + Requests[1555].Request.Path = "/subscriptions/cfe3339c-4765-/resourceGroups/e51ea90a-df53-46c/providers/Microsoft.Network/virtualNetworkGateways"; + Requests[1556] = new DefaultHttpContext(); + Requests[1556].RequestServices = CreateServices(); + Requests[1556].Request.Method = "GET"; + Requests[1556].Request.Path = "/subscriptions/97fdc8ef-4e17-/resourceGroups/708b3185-7fd3-419/providers/Microsoft.Network/virtualNetworks"; + Requests[1557] = new DefaultHttpContext(); + Requests[1557].RequestServices = CreateServices(); + Requests[1557].Request.Method = "GET"; + Requests[1557].Request.Path = "/subscriptions/171d338e-9608-/resourceGroups/c84d7cdc-c737-4fe/providers/Microsoft.NotificationHubs/namespaces"; + Requests[1558] = new DefaultHttpContext(); + Requests[1558].RequestServices = CreateServices(); + Requests[1558].Request.Method = "GET"; + Requests[1558].Request.Path = "/subscriptions/c65ffcb3-a02c-/resourcegroups/51710203-d0e6-4cf/providers/Microsoft.OperationalInsights/workspaces"; + Requests[1559] = new DefaultHttpContext(); + Requests[1559].RequestServices = CreateServices(); + Requests[1559].Request.Method = "GET"; + Requests[1559].Request.Path = "/subscriptions/f0735178-8008-/resourcegroups/0c0eed3c-8567-4aa/providers/Microsoft.OperationsManagement/solutions"; + Requests[1560] = new DefaultHttpContext(); + Requests[1560].RequestServices = CreateServices(); + Requests[1560].Request.Method = "GET"; + Requests[1560].Request.Path = "/subscriptions/547ec924-8ad4-/resourceGroups/0b4c51b7-48e9-491/providers/Microsoft.PowerBI/workspaceCollections"; + Requests[1561] = new DefaultHttpContext(); + Requests[1561].RequestServices = CreateServices(); + Requests[1561].Request.Method = "GET"; + Requests[1561].Request.Path = "/subscriptions/c0ef984a-f9b2-/resourceGroups/9f23efe7-93a3-4dd/providers/Microsoft.PowerBIDedicated/capacities"; + Requests[1562] = new DefaultHttpContext(); + Requests[1562].RequestServices = CreateServices(); + Requests[1562].Request.Method = "GET"; + Requests[1562].Request.Path = "/Subscriptions/a44ad087-bc42-/resourceGroups/d0a0c4a3-901b-44b/providers/Microsoft.RecoveryServices/operations"; + Requests[1563] = new DefaultHttpContext(); + Requests[1563].RequestServices = CreateServices(); + Requests[1563].Request.Method = "GET"; + Requests[1563].Request.Path = "/subscriptions/ec326793-62ba-/resourceGroups/ebfb21a4-7bcf-46b/providers/Microsoft.RecoveryServices/vaults"; + Requests[1564] = new DefaultHttpContext(); + Requests[1564].RequestServices = CreateServices(); + Requests[1564].Request.Method = "GET"; + Requests[1564].Request.Path = "/subscriptions/251e7e35-1b87-/resourceGroups/2c3c46a5-3e0f-4b9/providers/Microsoft.Relay/namespaces"; + Requests[1565] = new DefaultHttpContext(); + Requests[1565].RequestServices = CreateServices(); + Requests[1565].Request.Method = "GET"; + Requests[1565].Request.Path = "/subscriptions/5b479e17-8972-/resourceGroups/eff8d38c-0dcc-476/providers/Microsoft.ResourceHealth/availabilityStatuses"; + Requests[1566] = new DefaultHttpContext(); + Requests[1566].RequestServices = CreateServices(); + Requests[1566].Request.Method = "GET"; + Requests[1566].Request.Path = "/subscriptions/f2dc73b3-cdae-/resourcegroups/e86e942d-9bf0-4f6/providers/Microsoft.Resources/deployments"; + Requests[1567] = new DefaultHttpContext(); + Requests[1567].RequestServices = CreateServices(); + Requests[1567].Request.Method = "GET"; + Requests[1567].Request.Path = "/subscriptions/a2dbb983-f426-/resourceGroups/db2015c0-aab5-491/providers/Microsoft.Scheduler/jobCollections"; + Requests[1568] = new DefaultHttpContext(); + Requests[1568].RequestServices = CreateServices(); + Requests[1568].Request.Method = "GET"; + Requests[1568].Request.Path = "/subscriptions/9b0ab9ec-cab6-/resourceGroups/2d3a74b5-3221-465/providers/Microsoft.Search/searchServices"; + Requests[1569] = new DefaultHttpContext(); + Requests[1569].RequestServices = CreateServices(); + Requests[1569].Request.Method = "GET"; + Requests[1569].Request.Path = "/subscriptions/0097835e-249e-/resourceGroups/56e77e0b-ca6e-483/providers/Microsoft.Security/alerts"; + Requests[1570] = new DefaultHttpContext(); + Requests[1570].RequestServices = CreateServices(); + Requests[1570].Request.Method = "GET"; + Requests[1570].Request.Path = "/subscriptions/9a62a5fa-38f0-/resourceGroups/e4e9f6a8-f222-406/providers/Microsoft.Security/jitNetworkAccessPolicies"; + Requests[1571] = new DefaultHttpContext(); + Requests[1571].RequestServices = CreateServices(); + Requests[1571].Request.Method = "GET"; + Requests[1571].Request.Path = "/subscriptions/b17f9b0a-f2b3-/resourceGroups/fb225c51-8520-4f0/providers/Microsoft.Security/pricings"; + Requests[1572] = new DefaultHttpContext(); + Requests[1572].RequestServices = CreateServices(); + Requests[1572].Request.Method = "GET"; + Requests[1572].Request.Path = "/subscriptions/ae6ebaec-f915-/resourceGroups/0b535fad-d94a-48a/providers/Microsoft.Security/securityContacts"; + Requests[1573] = new DefaultHttpContext(); + Requests[1573].RequestServices = CreateServices(); + Requests[1573].Request.Method = "GET"; + Requests[1573].Request.Path = "/subscriptions/b16c3149-6ca4-/resourceGroups/546e2a8b-14bb-484/providers/Microsoft.Security/workspaceSettings"; + Requests[1574] = new DefaultHttpContext(); + Requests[1574].RequestServices = CreateServices(); + Requests[1574].Request.Method = "GET"; + Requests[1574].Request.Path = "/subscriptions/fdaf80da-493a-/resourceGroups/104cc66b-cedd-49b/providers/Microsoft.ServerManagement/gateways"; + Requests[1575] = new DefaultHttpContext(); + Requests[1575].RequestServices = CreateServices(); + Requests[1575].Request.Method = "GET"; + Requests[1575].Request.Path = "/subscriptions/e9c7be7f-7efb-/resourceGroups/41ea267d-2fe4-4e7/providers/Microsoft.ServerManagement/nodes"; + Requests[1576] = new DefaultHttpContext(); + Requests[1576].RequestServices = CreateServices(); + Requests[1576].Request.Method = "GET"; + Requests[1576].Request.Path = "/subscriptions/ede84756-c6c0-/resourceGroups/9d0ea04e-7d8e-4e2/providers/Microsoft.ServiceBus/namespaces"; + Requests[1577] = new DefaultHttpContext(); + Requests[1577].RequestServices = CreateServices(); + Requests[1577].Request.Method = "GET"; + Requests[1577].Request.Path = "/subscriptions/74e84c5d-c75f-/resourcegroups/d83e8717-bf49-4ea/providers/Microsoft.ServiceFabric/clusters"; + Requests[1578] = new DefaultHttpContext(); + Requests[1578].RequestServices = CreateServices(); + Requests[1578].Request.Method = "GET"; + Requests[1578].Request.Path = "/subscriptions/4b6deb32-5556-/resourceGroups/53c5cfe2-5d32-4ad/providers/Microsoft.SignalRService/SignalR"; + Requests[1579] = new DefaultHttpContext(); + Requests[1579].RequestServices = CreateServices(); + Requests[1579].Request.Method = "GET"; + Requests[1579].Request.Path = "/subscriptions/d6a6065c-3487-/resourceGroups/108309d1-6d49-4ce/providers/Microsoft.Solutions/applianceDefinitions"; + Requests[1580] = new DefaultHttpContext(); + Requests[1580].RequestServices = CreateServices(); + Requests[1580].Request.Method = "GET"; + Requests[1580].Request.Path = "/subscriptions/e8be7ddb-bc5d-/resourceGroups/75ff2a4e-e0eb-411/providers/Microsoft.Solutions/appliances"; + Requests[1581] = new DefaultHttpContext(); + Requests[1581].RequestServices = CreateServices(); + Requests[1581].Request.Method = "GET"; + Requests[1581].Request.Path = "/subscriptions/8de42fbe-e740-/resourceGroups/69d61a1f-5fba-42b/providers/Microsoft.Solutions/applicationDefinitions"; + Requests[1582] = new DefaultHttpContext(); + Requests[1582].RequestServices = CreateServices(); + Requests[1582].Request.Method = "GET"; + Requests[1582].Request.Path = "/subscriptions/db9dd93f-5c97-/resourceGroups/42dfb105-cfaf-409/providers/Microsoft.Solutions/applications"; + Requests[1583] = new DefaultHttpContext(); + Requests[1583].RequestServices = CreateServices(); + Requests[1583].Request.Method = "GET"; + Requests[1583].Request.Path = "/subscriptions/fae6e5a4-5f68-/resourceGroups/fff214f2-a760-475/providers/Microsoft.Sql/managedInstances"; + Requests[1584] = new DefaultHttpContext(); + Requests[1584].RequestServices = CreateServices(); + Requests[1584].Request.Method = "GET"; + Requests[1584].Request.Path = "/subscriptions/0705a2a5-8f69-/resourceGroups/29c28a7a-1dc5-49c/providers/Microsoft.Sql/servers"; + Requests[1585] = new DefaultHttpContext(); + Requests[1585].RequestServices = CreateServices(); + Requests[1585].Request.Method = "GET"; + Requests[1585].Request.Path = "/subscriptions/bdc973b2-edbf-/resourcegroups/1f038142-9e4d-450/providers/Microsoft.Storage.Admin/farms"; + Requests[1586] = new DefaultHttpContext(); + Requests[1586].RequestServices = CreateServices(); + Requests[1586].Request.Method = "GET"; + Requests[1586].Request.Path = "/subscriptions/dda8855b-2201-/resourceGroups/843e9887-8532-4be/providers/Microsoft.Storage/storageAccounts"; + Requests[1587] = new DefaultHttpContext(); + Requests[1587].RequestServices = CreateServices(); + Requests[1587].Request.Method = "GET"; + Requests[1587].Request.Path = "/subscriptions/9f6c5173-2a5f-/resourceGroups/a033e3ff-c590-40c/providers/Microsoft.StorSimple/managers"; + Requests[1588] = new DefaultHttpContext(); + Requests[1588].RequestServices = CreateServices(); + Requests[1588].Request.Method = "GET"; + Requests[1588].Request.Path = "/subscriptions/debbf2ce-efa4-/resourcegroups/563e6462-c718-450/providers/Microsoft.StreamAnalytics/streamingjobs"; + Requests[1589] = new DefaultHttpContext(); + Requests[1589].RequestServices = CreateServices(); + Requests[1589].Request.Method = "GET"; + Requests[1589].Request.Path = "/subscriptions/f6e4aa98-50a5-/resourcegroups/eea041ce-142f-425/providers/Microsoft.Subscriptions.Admin/directoryTenants"; + Requests[1590] = new DefaultHttpContext(); + Requests[1590].RequestServices = CreateServices(); + Requests[1590].Request.Method = "GET"; + Requests[1590].Request.Path = "/subscriptions/7ec4d770-4afc-/resourcegroups/b6b555e3-f623-430/providers/Microsoft.Subscriptions.Admin/offers"; + Requests[1591] = new DefaultHttpContext(); + Requests[1591].RequestServices = CreateServices(); + Requests[1591].Request.Method = "GET"; + Requests[1591].Request.Path = "/subscriptions/64e36198-69da-/resourcegroups/c03d9ce5-e066-465/providers/Microsoft.Subscriptions.Admin/plans"; + Requests[1592] = new DefaultHttpContext(); + Requests[1592].RequestServices = CreateServices(); + Requests[1592].Request.Method = "GET"; + Requests[1592].Request.Path = "/subscriptions/7c7dc83c-b08b-/resourceGroups/30ba68d6-e622-4de/providers/Microsoft.TimeSeriesInsights/environments"; + Requests[1593] = new DefaultHttpContext(); + Requests[1593].RequestServices = CreateServices(); + Requests[1593].Request.Method = "GET"; + Requests[1593].Request.Path = "/subscriptions/dfedebe9-156e-/resourcegroups/2d0cf7b1-34a5-475/providers/Microsoft.Update.Admin/updateLocations"; + Requests[1594] = new DefaultHttpContext(); + Requests[1594].RequestServices = CreateServices(); + Requests[1594].Request.Method = "GET"; + Requests[1594].Request.Path = "/subscriptions/0bce5ffe-e354-/resourcegroups/22b23488-1bf9-4e6/providers/microsoft.visualstudio/account"; + Requests[1595] = new DefaultHttpContext(); + Requests[1595].RequestServices = CreateServices(); + Requests[1595].Request.Method = "GET"; + Requests[1595].Request.Path = "/subscriptions/78856167-af72-/resourceGroups/3351e217-ce48-4f8/providers/Microsoft.Web/certificates"; + Requests[1596] = new DefaultHttpContext(); + Requests[1596].RequestServices = CreateServices(); + Requests[1596].Request.Method = "GET"; + Requests[1596].Request.Path = "/subscriptions/a4d37d0d-eac9-/resourceGroups/433563f2-93d1-4ee/providers/Microsoft.Web/classicMobileServices"; + Requests[1597] = new DefaultHttpContext(); + Requests[1597].RequestServices = CreateServices(); + Requests[1597].Request.Method = "GET"; + Requests[1597].Request.Path = "/subscriptions/2cea1ffb-6f01-/resourceGroups/08c88c58-86e3-4b0/providers/Microsoft.Web/connectionGateways"; + Requests[1598] = new DefaultHttpContext(); + Requests[1598].RequestServices = CreateServices(); + Requests[1598].Request.Method = "GET"; + Requests[1598].Request.Path = "/subscriptions/d48e0806-d084-/resourceGroups/d2c0f363-21be-47d/providers/Microsoft.Web/connections"; + Requests[1599] = new DefaultHttpContext(); + Requests[1599].RequestServices = CreateServices(); + Requests[1599].Request.Method = "GET"; + Requests[1599].Request.Path = "/subscriptions/8e018553-5173-/resourceGroups/f2fbe2d2-a66d-4ff/providers/Microsoft.Web/csrs"; + Requests[1600] = new DefaultHttpContext(); + Requests[1600].RequestServices = CreateServices(); + Requests[1600].Request.Method = "GET"; + Requests[1600].Request.Path = "/subscriptions/9d1e8fb3-e49f-/resourceGroups/58de4675-f375-431/providers/Microsoft.Web/customApis"; + Requests[1601] = new DefaultHttpContext(); + Requests[1601].RequestServices = CreateServices(); + Requests[1601].Request.Method = "GET"; + Requests[1601].Request.Path = "/subscriptions/124d5bec-b77b-/resourceGroups/51f83ce6-3511-4ca/providers/Microsoft.Web/deletedSites"; + Requests[1602] = new DefaultHttpContext(); + Requests[1602].RequestServices = CreateServices(); + Requests[1602].Request.Method = "GET"; + Requests[1602].Request.Path = "/subscriptions/b551f947-59b7-/resourceGroups/5715bd5f-40f1-476/providers/Microsoft.Web/hostingEnvironments"; + Requests[1603] = new DefaultHttpContext(); + Requests[1603].RequestServices = CreateServices(); + Requests[1603].Request.Method = "GET"; + Requests[1603].Request.Path = "/subscriptions/487971d6-d7e0-/resourceGroups/2355e951-f9ed-421/providers/Microsoft.Web/managedHostingEnvironments"; + Requests[1604] = new DefaultHttpContext(); + Requests[1604].RequestServices = CreateServices(); + Requests[1604].Request.Method = "GET"; + Requests[1604].Request.Path = "/subscriptions/10744996-3c6a-/resourceGroups/a06798d7-ef66-44e/providers/Microsoft.Web/resourceHealthMetadata"; + Requests[1605] = new DefaultHttpContext(); + Requests[1605].RequestServices = CreateServices(); + Requests[1605].Request.Method = "GET"; + Requests[1605].Request.Path = "/subscriptions/e66ceec8-1274-/resourceGroups/14a2c8e6-e870-4da/providers/Microsoft.Web/serverfarms"; + Requests[1606] = new DefaultHttpContext(); + Requests[1606].RequestServices = CreateServices(); + Requests[1606].Request.Method = "GET"; + Requests[1606].Request.Path = "/subscriptions/77035e7b-0314-/resourceGroups/baca9973-a4b4-4c8/providers/Microsoft.Web/sites"; + Requests[1607] = new DefaultHttpContext(); + Requests[1607].RequestServices = CreateServices(); + Requests[1607].Request.Method = "POST"; + Requests[1607].Request.Path = "/subscriptions/b6c8e7a3-939e-/resourceGroups/5cef05af-33d4-4bb/providers/Microsoft.Web/validate"; + Requests[1608] = new DefaultHttpContext(); + Requests[1608].RequestServices = CreateServices(); + Requests[1608].Request.Method = "POST"; + Requests[1608].Request.Path = "/subscriptions/1f094eb5-c3dc-/resourceGroups/c3346282-cd51-4d0/providers/Microsoft.BotService/BotServices/listServiceProviders"; + Requests[1609] = new DefaultHttpContext(); + Requests[1609].RequestServices = CreateServices(); + Requests[1609].Request.Method = "DELETE"; + Requests[1609].Request.Path = "/subscriptions/4b8b9e6d-4318-/resourceGroup/e26ecef4-77ba-436/providers/microsoft.insights/workbooks/54d25265-ac7"; + Requests[1610] = new DefaultHttpContext(); + Requests[1610].RequestServices = CreateServices(); + Requests[1610].Request.Method = "PATCH"; + Requests[1610].Request.Path = "/subscriptions/1513079a-2c6e-/resourceGroup/b6a36f67-7a8d-481/providers/microsoft.insights/workbooks/b9c3a82f-726"; + Requests[1611] = new DefaultHttpContext(); + Requests[1611].RequestServices = CreateServices(); + Requests[1611].Request.Method = "PUT"; + Requests[1611].Request.Path = "/subscriptions/2136ba1f-ecb2-/resourceGroup/1752c125-ae42-42c/providers/microsoft.insights/workbooks/86be8e34-51a"; + Requests[1612] = new DefaultHttpContext(); + Requests[1612].RequestServices = CreateServices(); + Requests[1612].Request.Method = "GET"; + Requests[1612].Request.Path = "/subscriptions/07d24592-b948-/resourceGroup/a1525bd4-c59a-47e/providers/microsoft.insights/workbooks/a30b56ec-94c"; + Requests[1613] = new DefaultHttpContext(); + Requests[1613].RequestServices = CreateServices(); + Requests[1613].Request.Method = "GET"; + Requests[1613].Request.Path = "/subscriptions/c0438103-8def-/resourceGroups/f81645f4-/providers/Microsoft.DataMigration/services/f638cb66-fa"; + Requests[1614] = new DefaultHttpContext(); + Requests[1614].RequestServices = CreateServices(); + Requests[1614].Request.Method = "PATCH"; + Requests[1614].Request.Path = "/subscriptions/a2f69d0f-0651-/resourceGroups/465051f5-/providers/Microsoft.DataMigration/services/f86abbce-33"; + Requests[1615] = new DefaultHttpContext(); + Requests[1615].RequestServices = CreateServices(); + Requests[1615].Request.Method = "PARAMETERS"; + Requests[1615].Request.Path = "/subscriptions/fb9e8eb6-d685-/resourceGroups/9f33ab4a-/providers/Microsoft.DataMigration/services/c38a87a6-dc"; + Requests[1616] = new DefaultHttpContext(); + Requests[1616].RequestServices = CreateServices(); + Requests[1616].Request.Method = "PUT"; + Requests[1616].Request.Path = "/subscriptions/5975963c-0d8f-/resourceGroups/66e22422-/providers/Microsoft.DataMigration/services/a48948ff-65"; + Requests[1617] = new DefaultHttpContext(); + Requests[1617].RequestServices = CreateServices(); + Requests[1617].Request.Method = "DELETE"; + Requests[1617].Request.Path = "/subscriptions/bd88980a-24f0-/resourceGroups/e8337dd3-/providers/Microsoft.DataMigration/services/902ee760-3f"; + Requests[1618] = new DefaultHttpContext(); + Requests[1618].RequestServices = CreateServices(); + Requests[1618].Request.Method = "DELETE"; + Requests[1618].Request.Path = "/subscriptions/525131d7-412a-/resourcegroups/99cbb863-30aa/providers/Microsoft.AzureBridge.Admin/activations/16c77a77-d415-"; + Requests[1619] = new DefaultHttpContext(); + Requests[1619].RequestServices = CreateServices(); + Requests[1619].Request.Method = "PUT"; + Requests[1619].Request.Path = "/subscriptions/918b3cf2-ecc9-/resourcegroups/ddc4b3fc-c4ac/providers/Microsoft.AzureBridge.Admin/activations/46b1f43c-4ba5-"; + Requests[1620] = new DefaultHttpContext(); + Requests[1620].RequestServices = CreateServices(); + Requests[1620].Request.Method = "GET"; + Requests[1620].Request.Path = "/subscriptions/53e257c4-e4d5-/resourcegroups/e8464792-679d/providers/Microsoft.AzureBridge.Admin/activations/4a4b8a2e-5a5b-"; + Requests[1621] = new DefaultHttpContext(); + Requests[1621].RequestServices = CreateServices(); + Requests[1621].Request.Method = "DELETE"; + Requests[1621].Request.Path = "/subscriptions/ddf153b6-21d8-/resourceGroups/7bcb20af-a29c/providers/Microsoft.AzureStack/registrations/c6d97589-5967-46"; + Requests[1622] = new DefaultHttpContext(); + Requests[1622].RequestServices = CreateServices(); + Requests[1622].Request.Method = "PUT"; + Requests[1622].Request.Path = "/subscriptions/5f024aa8-d4d0-/resourceGroups/2738fa35-3ec7/providers/Microsoft.AzureStack/registrations/042fc9b1-bafa-4a"; + Requests[1623] = new DefaultHttpContext(); + Requests[1623].RequestServices = CreateServices(); + Requests[1623].Request.Method = "GET"; + Requests[1623].Request.Path = "/subscriptions/652ef246-e4fc-/resourceGroups/4ffb67ec-7a44/providers/Microsoft.AzureStack/registrations/7f6adb3e-9132-44"; + Requests[1624] = new DefaultHttpContext(); + Requests[1624].RequestServices = CreateServices(); + Requests[1624].Request.Method = "GET"; + Requests[1624].Request.Path = "/subscriptions/77cdcb9c-b55b-/resourceGroups/f52efbb4-c522-461/providers/Microsoft.AAD/domainServices/9c9c9bf1-5688-432"; + Requests[1625] = new DefaultHttpContext(); + Requests[1625].RequestServices = CreateServices(); + Requests[1625].Request.Method = "DELETE"; + Requests[1625].Request.Path = "/subscriptions/97fd7a4e-543c-/resourceGroups/ffc73553-e034-4ef/providers/Microsoft.AAD/domainServices/69a649b2-4bea-47a"; + Requests[1626] = new DefaultHttpContext(); + Requests[1626].RequestServices = CreateServices(); + Requests[1626].Request.Method = "PUT"; + Requests[1626].Request.Path = "/subscriptions/1e6f1f31-38a3-/resourceGroups/9c51f9a8-2330-4b9/providers/Microsoft.AAD/domainServices/dada6c93-a43c-440"; + Requests[1627] = new DefaultHttpContext(); + Requests[1627].RequestServices = CreateServices(); + Requests[1627].Request.Method = "PATCH"; + Requests[1627].Request.Path = "/subscriptions/6d886c8e-67fa-/resourceGroups/5d987fef-e9a7-4ae/providers/Microsoft.AAD/domainServices/b862c69c-dea1-479"; + Requests[1628] = new DefaultHttpContext(); + Requests[1628].RequestServices = CreateServices(); + Requests[1628].Request.Method = "PATCH"; + Requests[1628].Request.Path = "/subscriptions/0f751038-e6c4-/resourceGroups/263f10b1-0e1f-40b/providers/Microsoft.AnalysisServices/servers/5c018859-1"; + Requests[1629] = new DefaultHttpContext(); + Requests[1629].RequestServices = CreateServices(); + Requests[1629].Request.Method = "GET"; + Requests[1629].Request.Path = "/subscriptions/9a1bc6a4-9f57-/resourceGroups/96d39e2b-16e4-449/providers/Microsoft.AnalysisServices/servers/9b0bfe66-a"; + Requests[1630] = new DefaultHttpContext(); + Requests[1630].RequestServices = CreateServices(); + Requests[1630].Request.Method = "PUT"; + Requests[1630].Request.Path = "/subscriptions/79c6a952-2739-/resourceGroups/493fc708-d030-4bd/providers/Microsoft.AnalysisServices/servers/1974974c-0"; + Requests[1631] = new DefaultHttpContext(); + Requests[1631].RequestServices = CreateServices(); + Requests[1631].Request.Method = "DELETE"; + Requests[1631].Request.Path = "/subscriptions/67b47baa-ba22-/resourceGroups/288f2b62-9a31-407/providers/Microsoft.AnalysisServices/servers/6a849f9b-b"; + Requests[1632] = new DefaultHttpContext(); + Requests[1632].RequestServices = CreateServices(); + Requests[1632].Request.Method = "DELETE"; + Requests[1632].Request.Path = "/subscriptions/5c068d2f-11f4-/resourceGroups/8e1cec09-e013-470/providers/Microsoft.ApiManagement/service/307e4dc3-0d"; + Requests[1633] = new DefaultHttpContext(); + Requests[1633].RequestServices = CreateServices(); + Requests[1633].Request.Method = "PUT"; + Requests[1633].Request.Path = "/subscriptions/1365c5df-502b-/resourceGroups/9de630f1-74c1-425/providers/Microsoft.ApiManagement/service/35f91633-15"; + Requests[1634] = new DefaultHttpContext(); + Requests[1634].RequestServices = CreateServices(); + Requests[1634].Request.Method = "GET"; + Requests[1634].Request.Path = "/subscriptions/d4f6fffb-4478-/resourceGroups/2725ef7b-eac3-4a5/providers/Microsoft.ApiManagement/service/bfe1b7cd-ce"; + Requests[1635] = new DefaultHttpContext(); + Requests[1635].RequestServices = CreateServices(); + Requests[1635].Request.Method = "PATCH"; + Requests[1635].Request.Path = "/subscriptions/17fd808c-b3f8-/resourceGroups/2d64d740-4f55-436/providers/Microsoft.ApiManagement/service/17a946b1-5e"; + Requests[1636] = new DefaultHttpContext(); + Requests[1636].RequestServices = CreateServices(); + Requests[1636].Request.Method = "DELETE"; + Requests[1636].Request.Path = "/subscriptions/e75f3c4a-cb81-/resourceGroups/9cbcb723-e514-40f/providers/Microsoft.Authorization/locks/0cabca14"; + Requests[1637] = new DefaultHttpContext(); + Requests[1637].RequestServices = CreateServices(); + Requests[1637].Request.Method = "PUT"; + Requests[1637].Request.Path = "/subscriptions/d6aa4a8d-e2a7-/resourceGroups/c6017516-744c-4bd/providers/Microsoft.Authorization/locks/91705f6f"; + Requests[1638] = new DefaultHttpContext(); + Requests[1638].RequestServices = CreateServices(); + Requests[1638].Request.Method = "GET"; + Requests[1638].Request.Path = "/subscriptions/b4d3b475-45b2-/resourceGroups/27adbcdf-e5c2-4cb/providers/Microsoft.Authorization/locks/5b07d7ca"; + Requests[1639] = new DefaultHttpContext(); + Requests[1639].RequestServices = CreateServices(); + Requests[1639].Request.Method = "PATCH"; + Requests[1639].Request.Path = "/subscriptions/2a3369fb-6892-/resourceGroups/23a0b5e5-57b4-4cf/providers/Microsoft.Automation/automationAccounts/6bf5df96-1156-442f-8a"; + Requests[1640] = new DefaultHttpContext(); + Requests[1640].RequestServices = CreateServices(); + Requests[1640].Request.Method = "DELETE"; + Requests[1640].Request.Path = "/subscriptions/662578bf-21c1-/resourceGroups/c52c1d60-ec35-42e/providers/Microsoft.Automation/automationAccounts/a7de95db-bb3d-467e-a3"; + Requests[1641] = new DefaultHttpContext(); + Requests[1641].RequestServices = CreateServices(); + Requests[1641].Request.Method = "PUT"; + Requests[1641].Request.Path = "/subscriptions/b9017c52-ece6-/resourceGroups/8be5476e-4fe3-410/providers/Microsoft.Automation/automationAccounts/758082db-5f93-40fe-bc"; + Requests[1642] = new DefaultHttpContext(); + Requests[1642].RequestServices = CreateServices(); + Requests[1642].Request.Method = "GET"; + Requests[1642].Request.Path = "/subscriptions/815138d1-8494-/resourceGroups/8727f78b-f13f-4f5/providers/Microsoft.Automation/automationAccounts/285f248a-eb21-425d-ae"; + Requests[1643] = new DefaultHttpContext(); + Requests[1643].RequestServices = CreateServices(); + Requests[1643].Request.Method = "GET"; + Requests[1643].Request.Path = "/subscriptions/03cd7d8a-b7c5-/resourcegroups/60b56dda-05b4-492/providers/Microsoft.Backup.Admin/backupLocations/c45cf348"; + Requests[1644] = new DefaultHttpContext(); + Requests[1644].RequestServices = CreateServices(); + Requests[1644].Request.Method = "PUT"; + Requests[1644].Request.Path = "/subscriptions/e3ca4d15-1a39-/resourcegroups/18676138-86bc-4c4/providers/Microsoft.Backup.Admin/backupLocations/cf6ac117"; + Requests[1645] = new DefaultHttpContext(); + Requests[1645].RequestServices = CreateServices(); + Requests[1645].Request.Method = "GET"; + Requests[1645].Request.Path = "/subscriptions/c9980d47-3ad2-/resourceGroups/f594e330-ae0b-48e/providers/Microsoft.Batch/batchAccounts/7662ac8a-2e"; + Requests[1646] = new DefaultHttpContext(); + Requests[1646].RequestServices = CreateServices(); + Requests[1646].Request.Method = "DELETE"; + Requests[1646].Request.Path = "/subscriptions/b77e470f-e85d-/resourceGroups/0c1d07c9-f7d5-46e/providers/Microsoft.Batch/batchAccounts/b60631fb-1e"; + Requests[1647] = new DefaultHttpContext(); + Requests[1647].RequestServices = CreateServices(); + Requests[1647].Request.Method = "PATCH"; + Requests[1647].Request.Path = "/subscriptions/64e1d3df-dab0-/resourceGroups/834abfe0-508b-4c2/providers/Microsoft.Batch/batchAccounts/75d402fc-c0"; + Requests[1648] = new DefaultHttpContext(); + Requests[1648].RequestServices = CreateServices(); + Requests[1648].Request.Method = "PUT"; + Requests[1648].Request.Path = "/subscriptions/343042b1-16c6-/resourceGroups/30e6a30c-b1bb-49e/providers/Microsoft.Batch/batchAccounts/6033cc45-3b"; + Requests[1649] = new DefaultHttpContext(); + Requests[1649].RequestServices = CreateServices(); + Requests[1649].Request.Method = "GET"; + Requests[1649].Request.Path = "/subscriptions/775b5a1a-83f9-/resourceGroups/af5ffaf5-e205-468/providers/Microsoft.BatchAI/clusters/a2637acd-30"; + Requests[1650] = new DefaultHttpContext(); + Requests[1650].RequestServices = CreateServices(); + Requests[1650].Request.Method = "DELETE"; + Requests[1650].Request.Path = "/subscriptions/78d38c71-9454-/resourceGroups/f6d2ccfa-641f-42a/providers/Microsoft.BatchAI/clusters/bb3cccc7-ec"; + Requests[1651] = new DefaultHttpContext(); + Requests[1651].RequestServices = CreateServices(); + Requests[1651].Request.Method = "PATCH"; + Requests[1651].Request.Path = "/subscriptions/b5f66fe7-a566-/resourceGroups/2fcb7202-26e0-4b7/providers/Microsoft.BatchAI/clusters/b95bf499-76"; + Requests[1652] = new DefaultHttpContext(); + Requests[1652].RequestServices = CreateServices(); + Requests[1652].Request.Method = "PUT"; + Requests[1652].Request.Path = "/subscriptions/cab1aa90-2129-/resourceGroups/7a02c732-03d2-4fe/providers/Microsoft.BatchAI/clusters/92178e36-77"; + Requests[1653] = new DefaultHttpContext(); + Requests[1653].RequestServices = CreateServices(); + Requests[1653].Request.Method = "DELETE"; + Requests[1653].Request.Path = "/subscriptions/ba59d468-d36d-/resourceGroups/e2c829a6-59c3-4da/providers/Microsoft.BatchAI/fileServers/01e0b0e5-9b90-"; + Requests[1654] = new DefaultHttpContext(); + Requests[1654].RequestServices = CreateServices(); + Requests[1654].Request.Method = "PUT"; + Requests[1654].Request.Path = "/subscriptions/72c65b8a-1860-/resourceGroups/70d5d2a1-a5be-485/providers/Microsoft.BatchAI/fileServers/97f6a9c2-c08c-"; + Requests[1655] = new DefaultHttpContext(); + Requests[1655].RequestServices = CreateServices(); + Requests[1655].Request.Method = "GET"; + Requests[1655].Request.Path = "/subscriptions/3cb8bf7b-467f-/resourceGroups/bd47aa4f-8aee-4db/providers/Microsoft.BatchAI/fileServers/5ec0383d-8b68-"; + Requests[1656] = new DefaultHttpContext(); + Requests[1656].RequestServices = CreateServices(); + Requests[1656].Request.Method = "GET"; + Requests[1656].Request.Path = "/subscriptions/d95dd609-8107-/resourceGroups/59580c87-0849-47e/providers/Microsoft.BatchAI/jobs/4c7b7a0"; + Requests[1657] = new DefaultHttpContext(); + Requests[1657].RequestServices = CreateServices(); + Requests[1657].Request.Method = "PUT"; + Requests[1657].Request.Path = "/subscriptions/e39388f3-6afc-/resourceGroups/9a7dea1d-35f4-4f1/providers/Microsoft.BatchAI/jobs/9ee9b59"; + Requests[1658] = new DefaultHttpContext(); + Requests[1658].RequestServices = CreateServices(); + Requests[1658].Request.Method = "DELETE"; + Requests[1658].Request.Path = "/subscriptions/92aeea79-fc2a-/resourceGroups/fb8ef72b-184b-461/providers/Microsoft.BatchAI/jobs/369ff3b"; + Requests[1659] = new DefaultHttpContext(); + Requests[1659].RequestServices = CreateServices(); + Requests[1659].Request.Method = "PUT"; + Requests[1659].Request.Path = "/subscriptions/5619fe60-fac1-/resourceGroups/6e5b440b-d8c8-4f5/providers/Microsoft.BatchAI/workspaces/a0505aa6-38da"; + Requests[1660] = new DefaultHttpContext(); + Requests[1660].RequestServices = CreateServices(); + Requests[1660].Request.Method = "DELETE"; + Requests[1660].Request.Path = "/subscriptions/0268124a-6f89-/resourceGroups/7237baf4-0ffe-494/providers/Microsoft.BatchAI/workspaces/b07b6892-67cc"; + Requests[1661] = new DefaultHttpContext(); + Requests[1661].RequestServices = CreateServices(); + Requests[1661].Request.Method = "GET"; + Requests[1661].Request.Path = "/subscriptions/74e3a974-93e4-/resourceGroups/553efe18-8452-4de/providers/Microsoft.BatchAI/workspaces/846231d8-d3f1"; + Requests[1662] = new DefaultHttpContext(); + Requests[1662].RequestServices = CreateServices(); + Requests[1662].Request.Method = "GET"; + Requests[1662].Request.Path = "/subscriptions/4fc64262-560b-/resourceGroups/c16132f3-f755-41f/providers/Microsoft.BotService/botServices/1f660153-60b"; + Requests[1663] = new DefaultHttpContext(); + Requests[1663].RequestServices = CreateServices(); + Requests[1663].Request.Method = "PATCH"; + Requests[1663].Request.Path = "/subscriptions/2e4d2c33-b56a-/resourceGroups/0a726dc0-dcb1-45b/providers/Microsoft.BotService/botServices/c8d5b20f-9c8"; + Requests[1664] = new DefaultHttpContext(); + Requests[1664].RequestServices = CreateServices(); + Requests[1664].Request.Method = "PUT"; + Requests[1664].Request.Path = "/subscriptions/9df22d6b-aab7-/resourceGroups/d158726c-7649-487/providers/Microsoft.BotService/botServices/354d29a6-0fc"; + Requests[1665] = new DefaultHttpContext(); + Requests[1665].RequestServices = CreateServices(); + Requests[1665].Request.Method = "DELETE"; + Requests[1665].Request.Path = "/subscriptions/f1e48552-7895-/resourceGroups/cfc6d8fe-6f14-4ae/providers/Microsoft.BotService/botServices/591a0496-4c6"; + Requests[1666] = new DefaultHttpContext(); + Requests[1666].RequestServices = CreateServices(); + Requests[1666].Request.Method = "DELETE"; + Requests[1666].Request.Path = "/subscriptions/730cd998-79d5-/resourceGroups/d4f2bf79-8658-482/providers/Microsoft.Cache/Redis/77c23"; + Requests[1667] = new DefaultHttpContext(); + Requests[1667].RequestServices = CreateServices(); + Requests[1667].Request.Method = "PUT"; + Requests[1667].Request.Path = "/subscriptions/790af2b1-71f9-/resourceGroups/7c9c2732-edd8-435/providers/Microsoft.Cache/Redis/61563"; + Requests[1668] = new DefaultHttpContext(); + Requests[1668].RequestServices = CreateServices(); + Requests[1668].Request.Method = "GET"; + Requests[1668].Request.Path = "/subscriptions/0514a590-368e-/resourceGroups/70a61d39-77b8-475/providers/Microsoft.Cache/Redis/469de"; + Requests[1669] = new DefaultHttpContext(); + Requests[1669].RequestServices = CreateServices(); + Requests[1669].Request.Method = "PATCH"; + Requests[1669].Request.Path = "/subscriptions/bb3784c7-e29d-/resourceGroups/120072a5-2f2d-426/providers/Microsoft.Cache/Redis/b7fd7"; + Requests[1670] = new DefaultHttpContext(); + Requests[1670].RequestServices = CreateServices(); + Requests[1670].Request.Method = "DELETE"; + Requests[1670].Request.Path = "/subscriptions/15532207-41cc-/resourceGroups/ee1b3d2b-817d-401/providers/Microsoft.Cdn/profiles/66cdcea4-e1"; + Requests[1671] = new DefaultHttpContext(); + Requests[1671].RequestServices = CreateServices(); + Requests[1671].Request.Method = "GET"; + Requests[1671].Request.Path = "/subscriptions/1c4a28da-d61a-/resourceGroups/4530e416-1652-45a/providers/Microsoft.Cdn/profiles/c0fcc08d-da"; + Requests[1672] = new DefaultHttpContext(); + Requests[1672].RequestServices = CreateServices(); + Requests[1672].Request.Method = "PUT"; + Requests[1672].Request.Path = "/subscriptions/3dce4ef0-1800-/resourceGroups/dbebde40-3060-419/providers/Microsoft.Cdn/profiles/dd326e16-92"; + Requests[1673] = new DefaultHttpContext(); + Requests[1673].RequestServices = CreateServices(); + Requests[1673].Request.Method = "PATCH"; + Requests[1673].Request.Path = "/subscriptions/eb8ef451-2b6e-/resourceGroups/85f358b1-d544-4e9/providers/Microsoft.Cdn/profiles/30f037e5-d3"; + Requests[1674] = new DefaultHttpContext(); + Requests[1674].RequestServices = CreateServices(); + Requests[1674].Request.Method = "PATCH"; + Requests[1674].Request.Path = "/subscriptions/e5fe7b42-bab1-/resourceGroups/902c9e24-e42a-438/providers/Microsoft.CertificateRegistration/certificateOrders/270a9"; + Requests[1675] = new DefaultHttpContext(); + Requests[1675].RequestServices = CreateServices(); + Requests[1675].Request.Method = "DELETE"; + Requests[1675].Request.Path = "/subscriptions/2e84b0cc-6180-/resourceGroups/c1e05012-717e-407/providers/Microsoft.CertificateRegistration/certificateOrders/a11de"; + Requests[1676] = new DefaultHttpContext(); + Requests[1676].RequestServices = CreateServices(); + Requests[1676].Request.Method = "PUT"; + Requests[1676].Request.Path = "/subscriptions/e4f6d028-d834-/resourceGroups/dce178b3-f51d-44a/providers/Microsoft.CertificateRegistration/certificateOrders/910b8"; + Requests[1677] = new DefaultHttpContext(); + Requests[1677].RequestServices = CreateServices(); + Requests[1677].Request.Method = "GET"; + Requests[1677].Request.Path = "/subscriptions/3a2bf3e2-a011-/resourceGroups/8048a26a-64c6-477/providers/Microsoft.CertificateRegistration/certificateOrders/ab1cf"; + Requests[1678] = new DefaultHttpContext(); + Requests[1678].RequestServices = CreateServices(); + Requests[1678].Request.Method = "PATCH"; + Requests[1678].Request.Path = "/subscriptions/9f975f2e-596b-/resourceGroups/1cf5fefb-1b53-442/providers/Microsoft.CognitiveServices/accounts/23641a9c-77"; + Requests[1679] = new DefaultHttpContext(); + Requests[1679].RequestServices = CreateServices(); + Requests[1679].Request.Method = "GET"; + Requests[1679].Request.Path = "/subscriptions/e800deab-2de9-/resourceGroups/ca9f12fd-54ba-4a3/providers/Microsoft.CognitiveServices/accounts/da17b26b-4a"; + Requests[1680] = new DefaultHttpContext(); + Requests[1680].RequestServices = CreateServices(); + Requests[1680].Request.Method = "DELETE"; + Requests[1680].Request.Path = "/subscriptions/612aaa14-f8ae-/resourceGroups/92e68889-a9a8-4a8/providers/Microsoft.CognitiveServices/accounts/f84cd86b-38"; + Requests[1681] = new DefaultHttpContext(); + Requests[1681].RequestServices = CreateServices(); + Requests[1681].Request.Method = "PUT"; + Requests[1681].Request.Path = "/subscriptions/99abb6b1-9937-/resourceGroups/53d0feaf-40f8-479/providers/Microsoft.CognitiveServices/accounts/3c8f8ac7-c3"; + Requests[1682] = new DefaultHttpContext(); + Requests[1682].RequestServices = CreateServices(); + Requests[1682].Request.Method = "GET"; + Requests[1682].Request.Path = "/subscriptions/4a30477d-cd91-/resourceGroups/2af95ebf-6a4b-4c0/providers/Microsoft.Compute/availabilitySets/afbe41a4-0da6-4b01-"; + Requests[1683] = new DefaultHttpContext(); + Requests[1683].RequestServices = CreateServices(); + Requests[1683].Request.Method = "DELETE"; + Requests[1683].Request.Path = "/subscriptions/97d848e3-c17f-/resourceGroups/ccdde0ae-37c0-416/providers/Microsoft.Compute/availabilitySets/dbfea11c-1316-46cc-"; + Requests[1684] = new DefaultHttpContext(); + Requests[1684].RequestServices = CreateServices(); + Requests[1684].Request.Method = "PATCH"; + Requests[1684].Request.Path = "/subscriptions/4efa00db-a2cc-/resourceGroups/5512dd4e-ee65-45d/providers/Microsoft.Compute/availabilitySets/0e1c7360-e327-489c-"; + Requests[1685] = new DefaultHttpContext(); + Requests[1685].RequestServices = CreateServices(); + Requests[1685].Request.Method = "PUT"; + Requests[1685].Request.Path = "/subscriptions/fe211480-1077-/resourceGroups/ff01653b-7d03-43c/providers/Microsoft.Compute/availabilitySets/56d41060-4f3e-499f-"; + Requests[1686] = new DefaultHttpContext(); + Requests[1686].RequestServices = CreateServices(); + Requests[1686].Request.Method = "PATCH"; + Requests[1686].Request.Path = "/subscriptions/7353c807-ca48-/resourceGroups/3e1a94e7-bcea-4c0/providers/Microsoft.Compute/disks/9fda87e3"; + Requests[1687] = new DefaultHttpContext(); + Requests[1687].RequestServices = CreateServices(); + Requests[1687].Request.Method = "PUT"; + Requests[1687].Request.Path = "/subscriptions/7a14e085-428f-/resourceGroups/db7d7ffb-08ee-417/providers/Microsoft.Compute/disks/2607a1ed"; + Requests[1688] = new DefaultHttpContext(); + Requests[1688].RequestServices = CreateServices(); + Requests[1688].Request.Method = "GET"; + Requests[1688].Request.Path = "/subscriptions/810b94cb-3a98-/resourceGroups/f3bc2a8c-46a1-45e/providers/Microsoft.Compute/disks/64a8cf99"; + Requests[1689] = new DefaultHttpContext(); + Requests[1689].RequestServices = CreateServices(); + Requests[1689].Request.Method = "DELETE"; + Requests[1689].Request.Path = "/subscriptions/ab032534-284b-/resourceGroups/1acc2204-ddae-409/providers/Microsoft.Compute/disks/3141b7d5"; + Requests[1690] = new DefaultHttpContext(); + Requests[1690].RequestServices = CreateServices(); + Requests[1690].Request.Method = "PUT"; + Requests[1690].Request.Path = "/subscriptions/07e3e67c-8ce3-/resourceGroups/41456f1a-39fa-494/providers/Microsoft.Compute/galleries/e9c500d8-fd"; + Requests[1691] = new DefaultHttpContext(); + Requests[1691].RequestServices = CreateServices(); + Requests[1691].Request.Method = "GET"; + Requests[1691].Request.Path = "/subscriptions/7b568caa-7ae7-/resourceGroups/f1f8b86c-dcec-49d/providers/Microsoft.Compute/galleries/31244bb7-87"; + Requests[1692] = new DefaultHttpContext(); + Requests[1692].RequestServices = CreateServices(); + Requests[1692].Request.Method = "DELETE"; + Requests[1692].Request.Path = "/subscriptions/c6541397-1721-/resourceGroups/cebfbb56-08c4-4dc/providers/Microsoft.Compute/galleries/31036bd0-1d"; + Requests[1693] = new DefaultHttpContext(); + Requests[1693].RequestServices = CreateServices(); + Requests[1693].Request.Method = "GET"; + Requests[1693].Request.Path = "/subscriptions/5220fbba-3e14-/resourceGroups/890ac566-837d-4ab/providers/Microsoft.Compute/images/b2108c53-"; + Requests[1694] = new DefaultHttpContext(); + Requests[1694].RequestServices = CreateServices(); + Requests[1694].Request.Method = "DELETE"; + Requests[1694].Request.Path = "/subscriptions/a6dd4555-0869-/resourceGroups/9637cee1-82b2-40a/providers/Microsoft.Compute/images/1a89dcce-"; + Requests[1695] = new DefaultHttpContext(); + Requests[1695].RequestServices = CreateServices(); + Requests[1695].Request.Method = "PATCH"; + Requests[1695].Request.Path = "/subscriptions/5f434148-d24e-/resourceGroups/d2761cb5-422c-4f3/providers/Microsoft.Compute/images/0322e735-"; + Requests[1696] = new DefaultHttpContext(); + Requests[1696].RequestServices = CreateServices(); + Requests[1696].Request.Method = "PUT"; + Requests[1696].Request.Path = "/subscriptions/c20cfd39-4478-/resourceGroups/42b04578-d155-4dd/providers/Microsoft.Compute/images/adfc0558-"; + Requests[1697] = new DefaultHttpContext(); + Requests[1697].RequestServices = CreateServices(); + Requests[1697].Request.Method = "DELETE"; + Requests[1697].Request.Path = "/subscriptions/3f45d9ec-80c8-/resourceGroups/a5b09ff6-8a65-445/providers/Microsoft.Compute/snapshots/7f7c5986-7c0"; + Requests[1698] = new DefaultHttpContext(); + Requests[1698].RequestServices = CreateServices(); + Requests[1698].Request.Method = "GET"; + Requests[1698].Request.Path = "/subscriptions/3b831e2a-d3b5-/resourceGroups/ed63ecba-d3c5-431/providers/Microsoft.Compute/snapshots/5b96760c-f27"; + Requests[1699] = new DefaultHttpContext(); + Requests[1699].RequestServices = CreateServices(); + Requests[1699].Request.Method = "PUT"; + Requests[1699].Request.Path = "/subscriptions/d531718c-ff17-/resourceGroups/974c050f-640b-40f/providers/Microsoft.Compute/snapshots/7acc98ba-b80"; + Requests[1700] = new DefaultHttpContext(); + Requests[1700].RequestServices = CreateServices(); + Requests[1700].Request.Method = "PATCH"; + Requests[1700].Request.Path = "/subscriptions/1d55c3c7-8dc3-/resourceGroups/75ed1cbd-f901-4a8/providers/Microsoft.Compute/snapshots/95ddfbd7-68a"; + Requests[1701] = new DefaultHttpContext(); + Requests[1701].RequestServices = CreateServices(); + Requests[1701].Request.Method = "PATCH"; + Requests[1701].Request.Path = "/subscriptions/d6d77d47-8b3a-/resourceGroups/77463ab4-badc-42b/providers/Microsoft.Compute/virtualMachines/3c970a"; + Requests[1702] = new DefaultHttpContext(); + Requests[1702].RequestServices = CreateServices(); + Requests[1702].Request.Method = "GET"; + Requests[1702].Request.Path = "/subscriptions/a2312905-bc30-/resourceGroups/0ac03595-24d0-4e9/providers/Microsoft.Compute/virtualMachines/649d14"; + Requests[1703] = new DefaultHttpContext(); + Requests[1703].RequestServices = CreateServices(); + Requests[1703].Request.Method = "DELETE"; + Requests[1703].Request.Path = "/subscriptions/a082d597-99e9-/resourceGroups/1b527007-2a13-48b/providers/Microsoft.Compute/virtualMachines/f24d06"; + Requests[1704] = new DefaultHttpContext(); + Requests[1704].RequestServices = CreateServices(); + Requests[1704].Request.Method = "PUT"; + Requests[1704].Request.Path = "/subscriptions/e3c39007-54fd-/resourceGroups/f562f762-9b5f-495/providers/Microsoft.Compute/virtualMachines/a0c7f9"; + Requests[1705] = new DefaultHttpContext(); + Requests[1705].RequestServices = CreateServices(); + Requests[1705].Request.Method = "GET"; + Requests[1705].Request.Path = "/subscriptions/15f66daa-975e-/resourceGroups/299d586e-6315-417/providers/Microsoft.Compute/virtualMachineScaleSets/97ec0acc-8b44-"; + Requests[1706] = new DefaultHttpContext(); + Requests[1706].RequestServices = CreateServices(); + Requests[1706].Request.Method = "DELETE"; + Requests[1706].Request.Path = "/subscriptions/c65ade01-547a-/resourceGroups/1f79653a-94e3-4a3/providers/Microsoft.Compute/virtualMachineScaleSets/cd12af52-669d-"; + Requests[1707] = new DefaultHttpContext(); + Requests[1707].RequestServices = CreateServices(); + Requests[1707].Request.Method = "PATCH"; + Requests[1707].Request.Path = "/subscriptions/e2c09aca-214b-/resourceGroups/8c01542b-a60a-48f/providers/Microsoft.Compute/virtualMachineScaleSets/7f3612f9-cbe7-"; + Requests[1708] = new DefaultHttpContext(); + Requests[1708].RequestServices = CreateServices(); + Requests[1708].Request.Method = "PUT"; + Requests[1708].Request.Path = "/subscriptions/c8fd8d3b-98e8-/resourceGroups/0ac7203a-d09d-4f7/providers/Microsoft.Compute/virtualMachineScaleSets/8edf627f-f1d0-"; + Requests[1709] = new DefaultHttpContext(); + Requests[1709].RequestServices = CreateServices(); + Requests[1709].Request.Method = "GET"; + Requests[1709].Request.Path = "/subscriptions/ebaf3afe-5fcf-/resourceGroups/006d1127-24d6-45d/providers/Microsoft.Consumption/budgets/806cc08f-3"; + Requests[1710] = new DefaultHttpContext(); + Requests[1710].RequestServices = CreateServices(); + Requests[1710].Request.Method = "PUT"; + Requests[1710].Request.Path = "/subscriptions/a1529182-de98-/resourceGroups/4eac0029-bc74-436/providers/Microsoft.Consumption/budgets/0f67ee47-a"; + Requests[1711] = new DefaultHttpContext(); + Requests[1711].RequestServices = CreateServices(); + Requests[1711].Request.Method = "DELETE"; + Requests[1711].Request.Path = "/subscriptions/7d08618c-9a84-/resourceGroups/923f220e-1091-491/providers/Microsoft.Consumption/budgets/18f044f5-0"; + Requests[1712] = new DefaultHttpContext(); + Requests[1712].RequestServices = CreateServices(); + Requests[1712].Request.Method = "GET"; + Requests[1712].Request.Path = "/subscriptions/0fe0f9c6-39a1-/resourceGroups/aeef3cb7-e2e7-4c2/providers/Microsoft.ContainerInstance/containerGroups/17132870-c9e7-41f6"; + Requests[1713] = new DefaultHttpContext(); + Requests[1713].RequestServices = CreateServices(); + Requests[1713].Request.Method = "PATCH"; + Requests[1713].Request.Path = "/subscriptions/3f2a3b64-5909-/resourceGroups/fb1a5615-b465-4f5/providers/Microsoft.ContainerInstance/containerGroups/f434a539-acf9-47f2"; + Requests[1714] = new DefaultHttpContext(); + Requests[1714].RequestServices = CreateServices(); + Requests[1714].Request.Method = "PUT"; + Requests[1714].Request.Path = "/subscriptions/276cee16-ee73-/resourceGroups/461e055f-22d6-486/providers/Microsoft.ContainerInstance/containerGroups/dba5cfa0-ce15-4992"; + Requests[1715] = new DefaultHttpContext(); + Requests[1715].RequestServices = CreateServices(); + Requests[1715].Request.Method = "DELETE"; + Requests[1715].Request.Path = "/subscriptions/b3078119-2bb7-/resourceGroups/65c4a4db-3287-475/providers/Microsoft.ContainerInstance/containerGroups/961eb516-5ed8-47cf"; + Requests[1716] = new DefaultHttpContext(); + Requests[1716].RequestServices = CreateServices(); + Requests[1716].Request.Method = "GET"; + Requests[1716].Request.Path = "/subscriptions/29b302fe-44be-/resourceGroups/ae67b92b-2e88-4fa/providers/Microsoft.ContainerRegistry/registries/47e9e603-ca9"; + Requests[1717] = new DefaultHttpContext(); + Requests[1717].RequestServices = CreateServices(); + Requests[1717].Request.Method = "PUT"; + Requests[1717].Request.Path = "/subscriptions/3e3d6c0d-36b5-/resourceGroups/db820d7e-417f-486/providers/Microsoft.ContainerRegistry/registries/035e1b5d-7bd"; + Requests[1718] = new DefaultHttpContext(); + Requests[1718].RequestServices = CreateServices(); + Requests[1718].Request.Method = "DELETE"; + Requests[1718].Request.Path = "/subscriptions/19fc3c30-8f49-/resourceGroups/ff15cc45-d632-41b/providers/Microsoft.ContainerRegistry/registries/04902d20-89e"; + Requests[1719] = new DefaultHttpContext(); + Requests[1719].RequestServices = CreateServices(); + Requests[1719].Request.Method = "PATCH"; + Requests[1719].Request.Path = "/subscriptions/63729c3c-03b2-/resourceGroups/d14213d5-2734-428/providers/Microsoft.ContainerRegistry/registries/29d9efb3-433"; + Requests[1720] = new DefaultHttpContext(); + Requests[1720].RequestServices = CreateServices(); + Requests[1720].Request.Method = "GET"; + Requests[1720].Request.Path = "/subscriptions/f6009dd4-39d5-/resourceGroups/297c4d86-cc76-4ef/providers/Microsoft.ContainerService/containerServices/356813d1-4a4a-461e-9"; + Requests[1721] = new DefaultHttpContext(); + Requests[1721].RequestServices = CreateServices(); + Requests[1721].Request.Method = "DELETE"; + Requests[1721].Request.Path = "/subscriptions/5fe88dc8-37ee-/resourceGroups/baca8aac-9216-4ea/providers/Microsoft.ContainerService/containerServices/d66f1b35-13a6-49b7-8"; + Requests[1722] = new DefaultHttpContext(); + Requests[1722].RequestServices = CreateServices(); + Requests[1722].Request.Method = "PUT"; + Requests[1722].Request.Path = "/subscriptions/ec1f7bce-6472-/resourceGroups/f7c75401-7fe2-4c6/providers/Microsoft.ContainerService/containerServices/c6087710-03ee-429a-8"; + Requests[1723] = new DefaultHttpContext(); + Requests[1723].RequestServices = CreateServices(); + Requests[1723].Request.Method = "PUT"; + Requests[1723].Request.Path = "/subscriptions/f214a4cc-8e74-/resourceGroups/6df91c59-97df-499/providers/Microsoft.ContainerService/managedClusters/ba42d48e-a16"; + Requests[1724] = new DefaultHttpContext(); + Requests[1724].RequestServices = CreateServices(); + Requests[1724].Request.Method = "GET"; + Requests[1724].Request.Path = "/subscriptions/bd913960-4a67-/resourceGroups/8b3dbbf6-6684-44c/providers/Microsoft.ContainerService/managedClusters/4af851c8-9f5"; + Requests[1725] = new DefaultHttpContext(); + Requests[1725].RequestServices = CreateServices(); + Requests[1725].Request.Method = "DELETE"; + Requests[1725].Request.Path = "/subscriptions/d9969749-1077-/resourceGroups/f17163db-05c1-439/providers/Microsoft.ContainerService/managedClusters/2aadb044-6dc"; + Requests[1726] = new DefaultHttpContext(); + Requests[1726].RequestServices = CreateServices(); + Requests[1726].Request.Method = "PUT"; + Requests[1726].Request.Path = "/subscriptions/d5ec7fd0-6f38-/resourceGroups/fc27a45a-ed84-433/providers/Microsoft.CustomerInsights/hubs/af57c0b"; + Requests[1727] = new DefaultHttpContext(); + Requests[1727].RequestServices = CreateServices(); + Requests[1727].Request.Method = "PATCH"; + Requests[1727].Request.Path = "/subscriptions/c58aea0f-bf66-/resourceGroups/fb6495d3-df78-4d6/providers/Microsoft.CustomerInsights/hubs/80cf81f"; + Requests[1728] = new DefaultHttpContext(); + Requests[1728].RequestServices = CreateServices(); + Requests[1728].Request.Method = "DELETE"; + Requests[1728].Request.Path = "/subscriptions/d49fb4a1-6dae-/resourceGroups/36f8c0c7-5663-424/providers/Microsoft.CustomerInsights/hubs/e9ba970"; + Requests[1729] = new DefaultHttpContext(); + Requests[1729].RequestServices = CreateServices(); + Requests[1729].Request.Method = "GET"; + Requests[1729].Request.Path = "/subscriptions/ab8052cb-fb0c-/resourceGroups/cba5eb08-f6ca-43a/providers/Microsoft.CustomerInsights/hubs/b875850"; + Requests[1730] = new DefaultHttpContext(); + Requests[1730].RequestServices = CreateServices(); + Requests[1730].Request.Method = "GET"; + Requests[1730].Request.Path = "/subscriptions/093fa5df-9752-/resourceGroups/d7fe99c4-7b1e-474/providers/Microsoft.DataBox/jobs/31b1ddb"; + Requests[1731] = new DefaultHttpContext(); + Requests[1731].RequestServices = CreateServices(); + Requests[1731].Request.Method = "PUT"; + Requests[1731].Request.Path = "/subscriptions/bd1ec873-1c92-/resourceGroups/8a0681bf-bd45-473/providers/Microsoft.DataBox/jobs/8be4599"; + Requests[1732] = new DefaultHttpContext(); + Requests[1732].RequestServices = CreateServices(); + Requests[1732].Request.Method = "DELETE"; + Requests[1732].Request.Path = "/subscriptions/a6c92778-08aa-/resourceGroups/70654c1c-0b25-4b5/providers/Microsoft.DataBox/jobs/6764093"; + Requests[1733] = new DefaultHttpContext(); + Requests[1733].RequestServices = CreateServices(); + Requests[1733].Request.Method = "PATCH"; + Requests[1733].Request.Path = "/subscriptions/b60274d5-99b9-/resourceGroups/4bc3404c-f853-44e/providers/Microsoft.DataBox/jobs/902260f"; + Requests[1734] = new DefaultHttpContext(); + Requests[1734].RequestServices = CreateServices(); + Requests[1734].Request.Method = "PUT"; + Requests[1734].Request.Path = "/subscriptions/8ed377f0-f22f-/resourceGroups/27a9ff75-8dae-413/providers/Microsoft.Databricks/workspaces/fa39b66b-4a75"; + Requests[1735] = new DefaultHttpContext(); + Requests[1735].RequestServices = CreateServices(); + Requests[1735].Request.Method = "DELETE"; + Requests[1735].Request.Path = "/subscriptions/b2a617ca-cb87-/resourceGroups/20748f86-da19-422/providers/Microsoft.Databricks/workspaces/1c02f89c-ed08"; + Requests[1736] = new DefaultHttpContext(); + Requests[1736].RequestServices = CreateServices(); + Requests[1736].Request.Method = "GET"; + Requests[1736].Request.Path = "/subscriptions/b48912fa-928f-/resourceGroups/8ae72d75-5779-41f/providers/Microsoft.Databricks/workspaces/7f4cd71a-14ba"; + Requests[1737] = new DefaultHttpContext(); + Requests[1737].RequestServices = CreateServices(); + Requests[1737].Request.Method = "PATCH"; + Requests[1737].Request.Path = "/subscriptions/f0d153ab-a714-/resourceGroups/ce308dff-cb2f-4c2/providers/Microsoft.Databricks/workspaces/28270bc3-b446"; + Requests[1738] = new DefaultHttpContext(); + Requests[1738].RequestServices = CreateServices(); + Requests[1738].Request.Method = "PATCH"; + Requests[1738].Request.Path = "/subscriptions/04f2703b-10bd-/resourceGroups/9fb342ec-7505-468/providers/Microsoft.DataCatalog/catalogs/4916593e-ed"; + Requests[1739] = new DefaultHttpContext(); + Requests[1739].RequestServices = CreateServices(); + Requests[1739].Request.Method = "GET"; + Requests[1739].Request.Path = "/subscriptions/e8b0b205-4a9d-/resourceGroups/6de4edc5-6d60-4f5/providers/Microsoft.DataCatalog/catalogs/7d507e15-f0"; + Requests[1740] = new DefaultHttpContext(); + Requests[1740].RequestServices = CreateServices(); + Requests[1740].Request.Method = "DELETE"; + Requests[1740].Request.Path = "/subscriptions/ba63f917-c76b-/resourceGroups/c98cdebf-279d-403/providers/Microsoft.DataCatalog/catalogs/161ced14-1a"; + Requests[1741] = new DefaultHttpContext(); + Requests[1741].RequestServices = CreateServices(); + Requests[1741].Request.Method = "PUT"; + Requests[1741].Request.Path = "/subscriptions/b25e34ad-9369-/resourceGroups/1aeca860-03cc-403/providers/Microsoft.DataCatalog/catalogs/90fca8b8-e2"; + Requests[1742] = new DefaultHttpContext(); + Requests[1742].RequestServices = CreateServices(); + Requests[1742].Request.Method = "PUT"; + Requests[1742].Request.Path = "/subscriptions/aa5c986d-0b96-/resourceGroups/21eaed12-55b4-4ba/providers/Microsoft.DataFactory/factories/eaed2015-71"; + Requests[1743] = new DefaultHttpContext(); + Requests[1743].RequestServices = CreateServices(); + Requests[1743].Request.Method = "PATCH"; + Requests[1743].Request.Path = "/subscriptions/133939d1-caf6-/resourceGroups/8f52da6b-19a0-4f5/providers/Microsoft.DataFactory/factories/f52cfaf2-61"; + Requests[1744] = new DefaultHttpContext(); + Requests[1744].RequestServices = CreateServices(); + Requests[1744].Request.Method = "GET"; + Requests[1744].Request.Path = "/subscriptions/96fb5cc2-39a8-/resourceGroups/d219eede-eaa0-446/providers/Microsoft.DataFactory/factories/3c2e49dd-b3"; + Requests[1745] = new DefaultHttpContext(); + Requests[1745].RequestServices = CreateServices(); + Requests[1745].Request.Method = "DELETE"; + Requests[1745].Request.Path = "/subscriptions/c7104675-453a-/resourceGroups/d40004b5-0eaa-46f/providers/Microsoft.DataFactory/factories/ac7a86fe-00"; + Requests[1746] = new DefaultHttpContext(); + Requests[1746].RequestServices = CreateServices(); + Requests[1746].Request.Method = "PATCH"; + Requests[1746].Request.Path = "/subscriptions/8450ea94-505d-/resourceGroups/e6d9c3a8-37d4-45f/providers/Microsoft.DataLakeAnalytics/accounts/6f2f50fa-28"; + Requests[1747] = new DefaultHttpContext(); + Requests[1747].RequestServices = CreateServices(); + Requests[1747].Request.Method = "GET"; + Requests[1747].Request.Path = "/subscriptions/9dbb5d47-fb2c-/resourceGroups/bb54224a-4566-4c2/providers/Microsoft.DataLakeAnalytics/accounts/fb3e690a-2a"; + Requests[1748] = new DefaultHttpContext(); + Requests[1748].RequestServices = CreateServices(); + Requests[1748].Request.Method = "DELETE"; + Requests[1748].Request.Path = "/subscriptions/8336b7d2-f15a-/resourceGroups/2d972790-e542-44d/providers/Microsoft.DataLakeAnalytics/accounts/464e0ad4-58"; + Requests[1749] = new DefaultHttpContext(); + Requests[1749].RequestServices = CreateServices(); + Requests[1749].Request.Method = "PUT"; + Requests[1749].Request.Path = "/subscriptions/89a4f731-9a29-/resourceGroups/4f11965d-5bc9-490/providers/Microsoft.DataLakeAnalytics/accounts/b27e54b9-4f"; + Requests[1750] = new DefaultHttpContext(); + Requests[1750].RequestServices = CreateServices(); + Requests[1750].Request.Method = "PUT"; + Requests[1750].Request.Path = "/subscriptions/b12c1704-a462-/resourceGroups/6a128853-c287-43e/providers/Microsoft.DataLakeStore/accounts/bc949fa9-3d"; + Requests[1751] = new DefaultHttpContext(); + Requests[1751].RequestServices = CreateServices(); + Requests[1751].Request.Method = "DELETE"; + Requests[1751].Request.Path = "/subscriptions/dae3c3d4-abaa-/resourceGroups/26a20579-5f69-46b/providers/Microsoft.DataLakeStore/accounts/4700f8ef-fe"; + Requests[1752] = new DefaultHttpContext(); + Requests[1752].RequestServices = CreateServices(); + Requests[1752].Request.Method = "PATCH"; + Requests[1752].Request.Path = "/subscriptions/7e03161a-8148-/resourceGroups/b1e80edd-2caa-421/providers/Microsoft.DataLakeStore/accounts/20bb8049-7f"; + Requests[1753] = new DefaultHttpContext(); + Requests[1753].RequestServices = CreateServices(); + Requests[1753].Request.Method = "GET"; + Requests[1753].Request.Path = "/subscriptions/80f7f011-8688-/resourceGroups/f9cfffc3-e5e3-424/providers/Microsoft.DataLakeStore/accounts/cbd4eb23-2a"; + Requests[1754] = new DefaultHttpContext(); + Requests[1754].RequestServices = CreateServices(); + Requests[1754].Request.Method = "DELETE"; + Requests[1754].Request.Path = "/subscriptions/3337585c-87ed-/resourceGroups/5e758cce-fc64-4c4/providers/Microsoft.DBforMySQL/servers/66a6d45a-2"; + Requests[1755] = new DefaultHttpContext(); + Requests[1755].RequestServices = CreateServices(); + Requests[1755].Request.Method = "PATCH"; + Requests[1755].Request.Path = "/subscriptions/820367fe-2a37-/resourceGroups/ac4941b7-5a3c-453/providers/Microsoft.DBforMySQL/servers/82d25bc1-5"; + Requests[1756] = new DefaultHttpContext(); + Requests[1756].RequestServices = CreateServices(); + Requests[1756].Request.Method = "GET"; + Requests[1756].Request.Path = "/subscriptions/53e141ac-27ac-/resourceGroups/53b1b797-c204-4a5/providers/Microsoft.DBforMySQL/servers/235cc04c-f"; + Requests[1757] = new DefaultHttpContext(); + Requests[1757].RequestServices = CreateServices(); + Requests[1757].Request.Method = "PUT"; + Requests[1757].Request.Path = "/subscriptions/83a1e00c-7f02-/resourceGroups/19e945c5-8c08-4db/providers/Microsoft.DBforMySQL/servers/a33c6a28-9"; + Requests[1758] = new DefaultHttpContext(); + Requests[1758].RequestServices = CreateServices(); + Requests[1758].Request.Method = "GET"; + Requests[1758].Request.Path = "/subscriptions/7752a955-137f-/resourceGroups/accf0ba9-0349-45a/providers/Microsoft.DBforPostgreSQL/servers/1d460f55-8"; + Requests[1759] = new DefaultHttpContext(); + Requests[1759].RequestServices = CreateServices(); + Requests[1759].Request.Method = "PUT"; + Requests[1759].Request.Path = "/subscriptions/343fef7b-4245-/resourceGroups/d9b03f7d-2319-44e/providers/Microsoft.DBforPostgreSQL/servers/4ea6cf54-8"; + Requests[1760] = new DefaultHttpContext(); + Requests[1760].RequestServices = CreateServices(); + Requests[1760].Request.Method = "DELETE"; + Requests[1760].Request.Path = "/subscriptions/661720d3-ae8b-/resourceGroups/f0ca75f7-448c-46b/providers/Microsoft.DBforPostgreSQL/servers/32e628f6-e"; + Requests[1761] = new DefaultHttpContext(); + Requests[1761].RequestServices = CreateServices(); + Requests[1761].Request.Method = "PATCH"; + Requests[1761].Request.Path = "/subscriptions/70c649af-cf0a-/resourceGroups/8b491f88-5bf2-413/providers/Microsoft.DBforPostgreSQL/servers/dc47134b-8"; + Requests[1762] = new DefaultHttpContext(); + Requests[1762].RequestServices = CreateServices(); + Requests[1762].Request.Method = "PUT"; + Requests[1762].Request.Path = "/subscriptions/aea3f6e9-d392-/resourceGroups/5ed0efb8-2e30-47c/providers/Microsoft.Devices/IotHubs/b4523302-1b6"; + Requests[1763] = new DefaultHttpContext(); + Requests[1763].RequestServices = CreateServices(); + Requests[1763].Request.Method = "DELETE"; + Requests[1763].Request.Path = "/subscriptions/e5beb814-ff8a-/resourceGroups/642c3fb2-b123-469/providers/Microsoft.Devices/IotHubs/6e230169-143"; + Requests[1764] = new DefaultHttpContext(); + Requests[1764].RequestServices = CreateServices(); + Requests[1764].Request.Method = "PATCH"; + Requests[1764].Request.Path = "/subscriptions/0cdcf03c-21ff-/resourceGroups/61ba86a7-dd35-455/providers/Microsoft.Devices/IotHubs/75dcf13d-9ca"; + Requests[1765] = new DefaultHttpContext(); + Requests[1765].RequestServices = CreateServices(); + Requests[1765].Request.Method = "GET"; + Requests[1765].Request.Path = "/subscriptions/cded5771-887b-/resourceGroups/da93cf0e-bb5a-4ca/providers/Microsoft.Devices/IotHubs/8ee04b42-3ed"; + Requests[1766] = new DefaultHttpContext(); + Requests[1766].RequestServices = CreateServices(); + Requests[1766].Request.Method = "PATCH"; + Requests[1766].Request.Path = "/subscriptions/75a79ef9-1b2a-/resourceGroups/fcbcaf03-9b48-4da/providers/Microsoft.Devices/provisioningServices/cf124693-7618-46a7-b270"; + Requests[1767] = new DefaultHttpContext(); + Requests[1767].RequestServices = CreateServices(); + Requests[1767].Request.Method = "GET"; + Requests[1767].Request.Path = "/subscriptions/99405958-e824-/resourceGroups/aad73d1a-f837-45a/providers/Microsoft.Devices/provisioningServices/84a77473-72d2-472a-9432"; + Requests[1768] = new DefaultHttpContext(); + Requests[1768].RequestServices = CreateServices(); + Requests[1768].Request.Method = "DELETE"; + Requests[1768].Request.Path = "/subscriptions/b30ac093-6734-/resourceGroups/d6f5b2f3-6070-43a/providers/Microsoft.Devices/provisioningServices/7687ab96-dc17-478d-8e18"; + Requests[1769] = new DefaultHttpContext(); + Requests[1769].RequestServices = CreateServices(); + Requests[1769].Request.Method = "PUT"; + Requests[1769].Request.Path = "/subscriptions/43036939-9619-/resourceGroups/1847e713-3f37-4ae/providers/Microsoft.Devices/provisioningServices/6271e574-8bd3-48c0-af67"; + Requests[1770] = new DefaultHttpContext(); + Requests[1770].RequestServices = CreateServices(); + Requests[1770].Request.Method = "PUT"; + Requests[1770].Request.Path = "/subscriptions/b916691f-da32-/resourceGroups/882898f3-86dd-4fc/providers/Microsoft.DevTestLab/labs/45669"; + Requests[1771] = new DefaultHttpContext(); + Requests[1771].RequestServices = CreateServices(); + Requests[1771].Request.Method = "GET"; + Requests[1771].Request.Path = "/subscriptions/7125c561-d4f9-/resourceGroups/b061a7b7-1d57-457/providers/Microsoft.DevTestLab/labs/79e6b"; + Requests[1772] = new DefaultHttpContext(); + Requests[1772].RequestServices = CreateServices(); + Requests[1772].Request.Method = "PATCH"; + Requests[1772].Request.Path = "/subscriptions/5e858e57-d409-/resourceGroups/fef351c3-7801-4cf/providers/Microsoft.DevTestLab/labs/d257a"; + Requests[1773] = new DefaultHttpContext(); + Requests[1773].RequestServices = CreateServices(); + Requests[1773].Request.Method = "DELETE"; + Requests[1773].Request.Path = "/subscriptions/e7a2001d-7f85-/resourceGroups/b216b915-243e-4c2/providers/Microsoft.DevTestLab/labs/2bf85"; + Requests[1774] = new DefaultHttpContext(); + Requests[1774].RequestServices = CreateServices(); + Requests[1774].Request.Method = "GET"; + Requests[1774].Request.Path = "/subscriptions/4b3c38d8-8c69-/resourceGroups/e2ff1d29-ea0a-4e1/providers/Microsoft.DevTestLab/schedules/a3102"; + Requests[1775] = new DefaultHttpContext(); + Requests[1775].RequestServices = CreateServices(); + Requests[1775].Request.Method = "PUT"; + Requests[1775].Request.Path = "/subscriptions/13dc42f0-8bb3-/resourceGroups/b2d30731-7813-40b/providers/Microsoft.DevTestLab/schedules/c1a6a"; + Requests[1776] = new DefaultHttpContext(); + Requests[1776].RequestServices = CreateServices(); + Requests[1776].Request.Method = "DELETE"; + Requests[1776].Request.Path = "/subscriptions/d15b198c-11de-/resourceGroups/cc9511d5-e6e7-4cf/providers/Microsoft.DevTestLab/schedules/65962"; + Requests[1777] = new DefaultHttpContext(); + Requests[1777].RequestServices = CreateServices(); + Requests[1777].Request.Method = "PATCH"; + Requests[1777].Request.Path = "/subscriptions/36a42dc2-fedd-/resourceGroups/eb2cdc9b-6e87-424/providers/Microsoft.DevTestLab/schedules/519e0"; + Requests[1778] = new DefaultHttpContext(); + Requests[1778].RequestServices = CreateServices(); + Requests[1778].Request.Method = "DELETE"; + Requests[1778].Request.Path = "/subscriptions/0e5cfcde-490e-/resourceGroups/1da638ff-db9c-41c/providers/Microsoft.DocumentDB/databaseAccounts/8ce0da57-82"; + Requests[1779] = new DefaultHttpContext(); + Requests[1779].RequestServices = CreateServices(); + Requests[1779].Request.Method = "PUT"; + Requests[1779].Request.Path = "/subscriptions/ae0e30b2-c668-/resourceGroups/3fd1099a-47ea-40e/providers/Microsoft.DocumentDB/databaseAccounts/3d489471-93"; + Requests[1780] = new DefaultHttpContext(); + Requests[1780].RequestServices = CreateServices(); + Requests[1780].Request.Method = "GET"; + Requests[1780].Request.Path = "/subscriptions/9e926b0e-0236-/resourceGroups/d349b8a7-457b-4e9/providers/Microsoft.DocumentDB/databaseAccounts/f43557b8-26"; + Requests[1781] = new DefaultHttpContext(); + Requests[1781].RequestServices = CreateServices(); + Requests[1781].Request.Method = "PATCH"; + Requests[1781].Request.Path = "/subscriptions/5dcd39c0-0740-/resourceGroups/eb8a3c97-8050-40d/providers/Microsoft.DocumentDB/databaseAccounts/cad642a9-24"; + Requests[1782] = new DefaultHttpContext(); + Requests[1782].RequestServices = CreateServices(); + Requests[1782].Request.Method = "GET"; + Requests[1782].Request.Path = "/subscriptions/434c1164-e8a7-/resourceGroups/05c60298-c975-455/providers/Microsoft.DomainRegistration/domains/b83962e9-9"; + Requests[1783] = new DefaultHttpContext(); + Requests[1783].RequestServices = CreateServices(); + Requests[1783].Request.Method = "DELETE"; + Requests[1783].Request.Path = "/subscriptions/3b9fe4b9-633f-/resourceGroups/c5791472-ae83-494/providers/Microsoft.DomainRegistration/domains/a1b3220e-3"; + Requests[1784] = new DefaultHttpContext(); + Requests[1784].RequestServices = CreateServices(); + Requests[1784].Request.Method = "PATCH"; + Requests[1784].Request.Path = "/subscriptions/58862bde-4901-/resourceGroups/93caffe4-b606-496/providers/Microsoft.DomainRegistration/domains/7f8d0da5-b"; + Requests[1785] = new DefaultHttpContext(); + Requests[1785].RequestServices = CreateServices(); + Requests[1785].Request.Method = "PUT"; + Requests[1785].Request.Path = "/subscriptions/f5f6cd21-b1cd-/resourceGroups/5b984ba6-8db4-4bb/providers/Microsoft.DomainRegistration/domains/471d5efd-b"; + Requests[1786] = new DefaultHttpContext(); + Requests[1786].RequestServices = CreateServices(); + Requests[1786].Request.Method = "PATCH"; + Requests[1786].Request.Path = "/subscriptions/6a927521-d351-/resourceGroups/3435b7fa-b99f-4cd/providers/Microsoft.EventGrid/topics/32407e65-"; + Requests[1787] = new DefaultHttpContext(); + Requests[1787].RequestServices = CreateServices(); + Requests[1787].Request.Method = "DELETE"; + Requests[1787].Request.Path = "/subscriptions/d35da684-759e-/resourceGroups/f49b9e25-0100-41e/providers/Microsoft.EventGrid/topics/bd55ef23-"; + Requests[1788] = new DefaultHttpContext(); + Requests[1788].RequestServices = CreateServices(); + Requests[1788].Request.Method = "PUT"; + Requests[1788].Request.Path = "/subscriptions/8c0c64c7-c679-/resourceGroups/0926b111-cff7-42c/providers/Microsoft.EventGrid/topics/ef9138c0-"; + Requests[1789] = new DefaultHttpContext(); + Requests[1789].RequestServices = CreateServices(); + Requests[1789].Request.Method = "GET"; + Requests[1789].Request.Path = "/subscriptions/61ec79a6-8634-/resourceGroups/5f6586d7-db96-4e1/providers/Microsoft.EventGrid/topics/223001df-"; + Requests[1790] = new DefaultHttpContext(); + Requests[1790].RequestServices = CreateServices(); + Requests[1790].Request.Method = "GET"; + Requests[1790].Request.Path = "/subscriptions/5c525398-96d0-/resourceGroups/7d374f4b-b35f-4f5/providers/Microsoft.EventHub/clusters/499e543d-8d"; + Requests[1791] = new DefaultHttpContext(); + Requests[1791].RequestServices = CreateServices(); + Requests[1791].Request.Method = "PATCH"; + Requests[1791].Request.Path = "/subscriptions/c9ae5065-5f71-/resourceGroups/6cd18e1c-a613-40e/providers/Microsoft.EventHub/clusters/001b2bc7-87"; + Requests[1792] = new DefaultHttpContext(); + Requests[1792].RequestServices = CreateServices(); + Requests[1792].Request.Method = "GET"; + Requests[1792].Request.Path = "/subscriptions/4a3f8e7e-22e5-/resourceGroups/3bca5d0f-b584-488/providers/Microsoft.EventHub/namespaces/e5beb57a-88b6"; + Requests[1793] = new DefaultHttpContext(); + Requests[1793].RequestServices = CreateServices(); + Requests[1793].Request.Method = "DELETE"; + Requests[1793].Request.Path = "/subscriptions/a074d51d-23dd-/resourceGroups/01d37c08-b15c-4e9/providers/Microsoft.EventHub/namespaces/8a86ecb2-f135"; + Requests[1794] = new DefaultHttpContext(); + Requests[1794].RequestServices = CreateServices(); + Requests[1794].Request.Method = "PUT"; + Requests[1794].Request.Path = "/subscriptions/3f916ef6-bb32-/resourceGroups/a709e25c-148e-43f/providers/Microsoft.EventHub/namespaces/cba61978-f9f4"; + Requests[1795] = new DefaultHttpContext(); + Requests[1795].RequestServices = CreateServices(); + Requests[1795].Request.Method = "PATCH"; + Requests[1795].Request.Path = "/subscriptions/b2ea2b90-3c3d-/resourceGroups/31486b52-c0f9-44a/providers/Microsoft.EventHub/namespaces/04c724e0-89b8"; + Requests[1796] = new DefaultHttpContext(); + Requests[1796].RequestServices = CreateServices(); + Requests[1796].Request.Method = "GET"; + Requests[1796].Request.Path = "/subscriptions/4a735fa0-bcd7-/resourceGroups/652f4546-3495-4a2/providers/Microsoft.Fabric.Admin/fabricLocations/a1e70557-e82c-"; + Requests[1797] = new DefaultHttpContext(); + Requests[1797].RequestServices = CreateServices(); + Requests[1797].Request.Method = "GET"; + Requests[1797].Request.Path = "/subscriptions/8193b116-9ff5-/resourceGroups/9fa84b6d-4e80-495/providers/Microsoft.HanaOnAzure/hanaInstances/b86195ce-b7b5-42"; + Requests[1798] = new DefaultHttpContext(); + Requests[1798].RequestServices = CreateServices(); + Requests[1798].Request.Method = "PUT"; + Requests[1798].Request.Path = "/subscriptions/08ef48bd-8533-/resourceGroups/7e8428f7-0e84-4ec/providers/Microsoft.HDInsight/clusters/46a8e62d-87"; + Requests[1799] = new DefaultHttpContext(); + Requests[1799].RequestServices = CreateServices(); + Requests[1799].Request.Method = "PATCH"; + Requests[1799].Request.Path = "/subscriptions/d97aede8-c7e4-/resourceGroups/5c3d2ffc-920a-444/providers/Microsoft.HDInsight/clusters/0f0ef0cf-cd"; + Requests[1800] = new DefaultHttpContext(); + Requests[1800].RequestServices = CreateServices(); + Requests[1800].Request.Method = "DELETE"; + Requests[1800].Request.Path = "/subscriptions/3a7edce3-8daa-/resourceGroups/4a235172-1396-468/providers/Microsoft.HDInsight/clusters/5cfdcb6b-f8"; + Requests[1801] = new DefaultHttpContext(); + Requests[1801].RequestServices = CreateServices(); + Requests[1801].Request.Method = "GET"; + Requests[1801].Request.Path = "/subscriptions/31bcad8e-6861-/resourceGroups/d0db5122-d8a0-405/providers/Microsoft.HDInsight/clusters/0288498b-f5"; + Requests[1802] = new DefaultHttpContext(); + Requests[1802].RequestServices = CreateServices(); + Requests[1802].Request.Method = "PATCH"; + Requests[1802].Request.Path = "/subscriptions/96bcf7bd-fc64-/resourceGroups/398de39c-df84-460/providers/Microsoft.ImportExport/jobs/6a6ea6e"; + Requests[1803] = new DefaultHttpContext(); + Requests[1803].RequestServices = CreateServices(); + Requests[1803].Request.Method = "PUT"; + Requests[1803].Request.Path = "/subscriptions/35f690f7-720e-/resourceGroups/9c19037f-bddf-473/providers/Microsoft.ImportExport/jobs/ca64379"; + Requests[1804] = new DefaultHttpContext(); + Requests[1804].RequestServices = CreateServices(); + Requests[1804].Request.Method = "DELETE"; + Requests[1804].Request.Path = "/subscriptions/da936dfd-7bb7-/resourceGroups/dae98d94-50b0-4c7/providers/Microsoft.ImportExport/jobs/6f1238a"; + Requests[1805] = new DefaultHttpContext(); + Requests[1805].RequestServices = CreateServices(); + Requests[1805].Request.Method = "GET"; + Requests[1805].Request.Path = "/subscriptions/bc31b194-3f40-/resourceGroups/d280a25a-4c5f-459/providers/Microsoft.ImportExport/jobs/2571fd8"; + Requests[1806] = new DefaultHttpContext(); + Requests[1806].RequestServices = CreateServices(); + Requests[1806].Request.Method = "GET"; + Requests[1806].Request.Path = "/subscriptions/91531137-c56f-/resourceGroups/3c458f30-43de-48d/providers/Microsoft.InfrastructureInsights.Admin/regionHealths/0fbf673a"; + Requests[1807] = new DefaultHttpContext(); + Requests[1807].RequestServices = CreateServices(); + Requests[1807].Request.Method = "PUT"; + Requests[1807].Request.Path = "/subscriptions/f1029b03-5a26-/resourceGroups/f32c9e1f-f7fe-41e/providers/microsoft.insights/actionGroups/aea34e70-933e-4"; + Requests[1808] = new DefaultHttpContext(); + Requests[1808].RequestServices = CreateServices(); + Requests[1808].Request.Method = "GET"; + Requests[1808].Request.Path = "/subscriptions/aa3531d5-e684-/resourceGroups/70493648-1e9e-4b8/providers/microsoft.insights/actionGroups/addf972a-56a3-4"; + Requests[1809] = new DefaultHttpContext(); + Requests[1809].RequestServices = CreateServices(); + Requests[1809].Request.Method = "DELETE"; + Requests[1809].Request.Path = "/subscriptions/c441f71d-6aa1-/resourceGroups/f9b30b1d-9746-4ec/providers/microsoft.insights/actionGroups/08834446-4fbf-4"; + Requests[1810] = new DefaultHttpContext(); + Requests[1810].RequestServices = CreateServices(); + Requests[1810].Request.Method = "PATCH"; + Requests[1810].Request.Path = "/subscriptions/b16ee007-ef25-/resourceGroups/33d2fb0b-638b-4ed/providers/microsoft.insights/actionGroups/a28d8e1b-29c0-4"; + Requests[1811] = new DefaultHttpContext(); + Requests[1811].RequestServices = CreateServices(); + Requests[1811].Request.Method = "DELETE"; + Requests[1811].Request.Path = "/subscriptions/2d9a0dbf-7f1b-/resourceGroups/d6caa543-ced4-46f/providers/microsoft.insights/activityLogAlerts/7a7fd221-c55d-4d78-a"; + Requests[1812] = new DefaultHttpContext(); + Requests[1812].RequestServices = CreateServices(); + Requests[1812].Request.Method = "PATCH"; + Requests[1812].Request.Path = "/subscriptions/3d25535e-6e51-/resourceGroups/4fa7ac0e-c3ef-46c/providers/microsoft.insights/activityLogAlerts/2c811b82-c6b7-4ae8-9"; + Requests[1813] = new DefaultHttpContext(); + Requests[1813].RequestServices = CreateServices(); + Requests[1813].Request.Method = "GET"; + Requests[1813].Request.Path = "/subscriptions/a3815793-04d1-/resourceGroups/06e2b406-d3ee-4c9/providers/microsoft.insights/activityLogAlerts/5bbbef5d-c9cf-44c5-9"; + Requests[1814] = new DefaultHttpContext(); + Requests[1814].RequestServices = CreateServices(); + Requests[1814].Request.Method = "PUT"; + Requests[1814].Request.Path = "/subscriptions/aaf7c0a1-cd22-/resourceGroups/fb8c9881-5dd3-4a4/providers/microsoft.insights/activityLogAlerts/c9aa1ed8-25aa-4279-9"; + Requests[1815] = new DefaultHttpContext(); + Requests[1815].RequestServices = CreateServices(); + Requests[1815].Request.Method = "PUT"; + Requests[1815].Request.Path = "/subscriptions/d7bde63a-966e-/resourcegroups/8611b0df-09e6-40c/providers/microsoft.insights/alertrules/fed75d3e"; + Requests[1816] = new DefaultHttpContext(); + Requests[1816].RequestServices = CreateServices(); + Requests[1816].Request.Method = "DELETE"; + Requests[1816].Request.Path = "/subscriptions/42ba8568-b5c1-/resourcegroups/06f05dd0-2684-486/providers/microsoft.insights/alertrules/c302d62d"; + Requests[1817] = new DefaultHttpContext(); + Requests[1817].RequestServices = CreateServices(); + Requests[1817].Request.Method = "PATCH"; + Requests[1817].Request.Path = "/subscriptions/ddf10b29-8f93-/resourcegroups/16cff7f3-cabe-49d/providers/microsoft.insights/alertrules/776e8b6e"; + Requests[1818] = new DefaultHttpContext(); + Requests[1818].RequestServices = CreateServices(); + Requests[1818].Request.Method = "GET"; + Requests[1818].Request.Path = "/subscriptions/46aa3350-129f-/resourcegroups/c750cead-82c9-423/providers/microsoft.insights/alertrules/9d3cea6d"; + Requests[1819] = new DefaultHttpContext(); + Requests[1819].RequestServices = CreateServices(); + Requests[1819].Request.Method = "PATCH"; + Requests[1819].Request.Path = "/subscriptions/8e768deb-d050-/resourcegroups/e659e9be-b5a0-410/providers/microsoft.insights/autoscalesettings/c16da62e-bef8-4300-b"; + Requests[1820] = new DefaultHttpContext(); + Requests[1820].RequestServices = CreateServices(); + Requests[1820].Request.Method = "DELETE"; + Requests[1820].Request.Path = "/subscriptions/e7f172a1-766d-/resourcegroups/959bdf96-7f65-49a/providers/microsoft.insights/autoscalesettings/3247f670-980b-48c7-a"; + Requests[1821] = new DefaultHttpContext(); + Requests[1821].RequestServices = CreateServices(); + Requests[1821].Request.Method = "PUT"; + Requests[1821].Request.Path = "/subscriptions/1f17d081-c911-/resourcegroups/36313d71-1aea-4ba/providers/microsoft.insights/autoscalesettings/159f8ba5-8994-4a81-a"; + Requests[1822] = new DefaultHttpContext(); + Requests[1822].RequestServices = CreateServices(); + Requests[1822].Request.Method = "GET"; + Requests[1822].Request.Path = "/subscriptions/341b325d-c492-/resourcegroups/1a9389d1-b071-425/providers/microsoft.insights/autoscalesettings/123c17f9-18f3-4f00-b"; + Requests[1823] = new DefaultHttpContext(); + Requests[1823].RequestServices = CreateServices(); + Requests[1823].Request.Method = "GET"; + Requests[1823].Request.Path = "/subscriptions/b3124308-94f5-/resourceGroups/3b10bef0-2569-4f5/providers/Microsoft.Insights/components/0901c338-0bc"; + Requests[1824] = new DefaultHttpContext(); + Requests[1824].RequestServices = CreateServices(); + Requests[1824].Request.Method = "PATCH"; + Requests[1824].Request.Path = "/subscriptions/58ca0758-4d27-/resourceGroups/d0288377-2146-479/providers/Microsoft.Insights/components/a6dbb475-c19"; + Requests[1825] = new DefaultHttpContext(); + Requests[1825].RequestServices = CreateServices(); + Requests[1825].Request.Method = "PUT"; + Requests[1825].Request.Path = "/subscriptions/de7e9bad-d205-/resourceGroups/cd5615a2-6146-407/providers/Microsoft.Insights/components/367699e2-324"; + Requests[1826] = new DefaultHttpContext(); + Requests[1826].RequestServices = CreateServices(); + Requests[1826].Request.Method = "DELETE"; + Requests[1826].Request.Path = "/subscriptions/132cff00-e0df-/resourceGroups/34e44c5d-c957-458/providers/Microsoft.Insights/components/b70ae269-d35"; + Requests[1827] = new DefaultHttpContext(); + Requests[1827].RequestServices = CreateServices(); + Requests[1827].Request.Method = "DELETE"; + Requests[1827].Request.Path = "/subscriptions/82760a05-db4b-/resourceGroups/2ae3a9b2-9b51-437/providers/Microsoft.Insights/metricAlerts/3b71250d"; + Requests[1828] = new DefaultHttpContext(); + Requests[1828].RequestServices = CreateServices(); + Requests[1828].Request.Method = "PATCH"; + Requests[1828].Request.Path = "/subscriptions/a5f15a0f-f26f-/resourceGroups/0fa3e8a2-6ebd-49d/providers/Microsoft.Insights/metricAlerts/f3383a14"; + Requests[1829] = new DefaultHttpContext(); + Requests[1829].RequestServices = CreateServices(); + Requests[1829].Request.Method = "PUT"; + Requests[1829].Request.Path = "/subscriptions/72d075ef-fd66-/resourceGroups/28b4c57e-c566-420/providers/Microsoft.Insights/metricAlerts/8e5b6c4f"; + Requests[1830] = new DefaultHttpContext(); + Requests[1830].RequestServices = CreateServices(); + Requests[1830].Request.Method = "GET"; + Requests[1830].Request.Path = "/subscriptions/99c81ea6-3bcc-/resourceGroups/2abd9c2f-e04c-499/providers/Microsoft.Insights/metricAlerts/7fc26965"; + Requests[1831] = new DefaultHttpContext(); + Requests[1831].RequestServices = CreateServices(); + Requests[1831].Request.Method = "GET"; + Requests[1831].Request.Path = "/subscriptions/a4abaa62-329a-/resourcegroups/5c3dc41e-09f4-4a4/providers/microsoft.insights/scheduledQueryRules/1bccf45c"; + Requests[1832] = new DefaultHttpContext(); + Requests[1832].RequestServices = CreateServices(); + Requests[1832].Request.Method = "DELETE"; + Requests[1832].Request.Path = "/subscriptions/fdaff9cc-87a7-/resourcegroups/fd656fea-dbac-4b0/providers/microsoft.insights/scheduledQueryRules/f59b0a63"; + Requests[1833] = new DefaultHttpContext(); + Requests[1833].RequestServices = CreateServices(); + Requests[1833].Request.Method = "PUT"; + Requests[1833].Request.Path = "/subscriptions/d8013326-9d49-/resourcegroups/4d3dcb5e-4f01-440/providers/microsoft.insights/scheduledQueryRules/380ba354"; + Requests[1834] = new DefaultHttpContext(); + Requests[1834].RequestServices = CreateServices(); + Requests[1834].Request.Method = "GET"; + Requests[1834].Request.Path = "/subscriptions/bb730c0e-538a-/resourceGroups/36aa5e9b-19dd-421/providers/Microsoft.Insights/webtests/775b6e25-08"; + Requests[1835] = new DefaultHttpContext(); + Requests[1835].RequestServices = CreateServices(); + Requests[1835].Request.Method = "DELETE"; + Requests[1835].Request.Path = "/subscriptions/af4188dc-f8c8-/resourceGroups/c74b31c1-c027-473/providers/Microsoft.Insights/webtests/966a1543-7c"; + Requests[1836] = new DefaultHttpContext(); + Requests[1836].RequestServices = CreateServices(); + Requests[1836].Request.Method = "PATCH"; + Requests[1836].Request.Path = "/subscriptions/1fb65b1f-9f84-/resourceGroups/2fe38b49-053c-495/providers/Microsoft.Insights/webtests/d7b8a58a-dc"; + Requests[1837] = new DefaultHttpContext(); + Requests[1837].RequestServices = CreateServices(); + Requests[1837].Request.Method = "PUT"; + Requests[1837].Request.Path = "/subscriptions/ee2d878d-ab85-/resourceGroups/044642e0-931d-410/providers/Microsoft.Insights/webtests/43dfc02b-9c"; + Requests[1838] = new DefaultHttpContext(); + Requests[1838].RequestServices = CreateServices(); + Requests[1838].Request.Method = "GET"; + Requests[1838].Request.Path = "/subscriptions/94033102-29e3-/resourceGroups/ca09cff7-02e2-47f/providers/Microsoft.IoTCentral/IoTApps/d619b3f6-b39"; + Requests[1839] = new DefaultHttpContext(); + Requests[1839].RequestServices = CreateServices(); + Requests[1839].Request.Method = "PUT"; + Requests[1839].Request.Path = "/subscriptions/c142300d-f5a9-/resourceGroups/8477f636-87ed-4ca/providers/Microsoft.IoTCentral/IoTApps/c745e0c2-7cf"; + Requests[1840] = new DefaultHttpContext(); + Requests[1840].RequestServices = CreateServices(); + Requests[1840].Request.Method = "PATCH"; + Requests[1840].Request.Path = "/subscriptions/93aab1a0-8bd0-/resourceGroups/d0439a22-6ac0-4c6/providers/Microsoft.IoTCentral/IoTApps/c794c300-8cb"; + Requests[1841] = new DefaultHttpContext(); + Requests[1841].RequestServices = CreateServices(); + Requests[1841].Request.Method = "DELETE"; + Requests[1841].Request.Path = "/subscriptions/b29ae34c-0834-/resourceGroups/f1ad08e3-a8cf-4f3/providers/Microsoft.IoTCentral/IoTApps/f6f78d0d-55d"; + Requests[1842] = new DefaultHttpContext(); + Requests[1842].RequestServices = CreateServices(); + Requests[1842].Request.Method = "DELETE"; + Requests[1842].Request.Path = "/subscriptions/adc14e3f-8394-/resourceGroups/0efe0585-539c-4d0/providers/Microsoft.IoTSpaces/Graph/473f1d75-e50"; + Requests[1843] = new DefaultHttpContext(); + Requests[1843].RequestServices = CreateServices(); + Requests[1843].Request.Method = "GET"; + Requests[1843].Request.Path = "/subscriptions/48d7430e-9b8a-/resourceGroups/88ed91ea-a908-464/providers/Microsoft.IoTSpaces/Graph/82ccf77e-c99"; + Requests[1844] = new DefaultHttpContext(); + Requests[1844].RequestServices = CreateServices(); + Requests[1844].Request.Method = "PUT"; + Requests[1844].Request.Path = "/subscriptions/000669bf-3cf7-/resourceGroups/a3f0474f-842d-43e/providers/Microsoft.IoTSpaces/Graph/8e850114-34b"; + Requests[1845] = new DefaultHttpContext(); + Requests[1845].RequestServices = CreateServices(); + Requests[1845].Request.Method = "PATCH"; + Requests[1845].Request.Path = "/subscriptions/5ac5b1a9-331e-/resourceGroups/08bfbcfe-d632-460/providers/Microsoft.IoTSpaces/Graph/8dc7aca0-c5d"; + Requests[1846] = new DefaultHttpContext(); + Requests[1846].RequestServices = CreateServices(); + Requests[1846].Request.Method = "GET"; + Requests[1846].Request.Path = "/subscriptions/f3234676-1126-/resourceGroups/da3473b5-7913-48d/providers/Microsoft.KeyVault/vaults/68342c53-"; + Requests[1847] = new DefaultHttpContext(); + Requests[1847].RequestServices = CreateServices(); + Requests[1847].Request.Method = "DELETE"; + Requests[1847].Request.Path = "/subscriptions/51eb9e9f-4472-/resourceGroups/8bd08ead-8dd1-4f0/providers/Microsoft.KeyVault/vaults/56b55376-"; + Requests[1848] = new DefaultHttpContext(); + Requests[1848].RequestServices = CreateServices(); + Requests[1848].Request.Method = "PATCH"; + Requests[1848].Request.Path = "/subscriptions/4144bfd6-6c7a-/resourceGroups/1fb94ffc-c462-461/providers/Microsoft.KeyVault/vaults/6df79bd7-"; + Requests[1849] = new DefaultHttpContext(); + Requests[1849].RequestServices = CreateServices(); + Requests[1849].Request.Method = "PUT"; + Requests[1849].Request.Path = "/subscriptions/a9b5b875-bfad-/resourceGroups/50b82933-3ba5-441/providers/Microsoft.KeyVault/vaults/a3ee1a83-"; + Requests[1850] = new DefaultHttpContext(); + Requests[1850].RequestServices = CreateServices(); + Requests[1850].Request.Method = "PATCH"; + Requests[1850].Request.Path = "/subscriptions/9d4fffab-59c8-/resourceGroups/b44a2b24-d913-49d/providers/Microsoft.Logic/integrationAccounts/bd14612b-2662-4ac9-8dc"; + Requests[1851] = new DefaultHttpContext(); + Requests[1851].RequestServices = CreateServices(); + Requests[1851].Request.Method = "DELETE"; + Requests[1851].Request.Path = "/subscriptions/1916dab4-8f8a-/resourceGroups/f9f55860-9944-475/providers/Microsoft.Logic/integrationAccounts/2c8a1e94-fd7e-40de-84c"; + Requests[1852] = new DefaultHttpContext(); + Requests[1852].RequestServices = CreateServices(); + Requests[1852].Request.Method = "PUT"; + Requests[1852].Request.Path = "/subscriptions/c15b858c-3a7e-/resourceGroups/2cfb53b7-b0ff-473/providers/Microsoft.Logic/integrationAccounts/24b5a0c7-b702-4307-a1d"; + Requests[1853] = new DefaultHttpContext(); + Requests[1853].RequestServices = CreateServices(); + Requests[1853].Request.Method = "GET"; + Requests[1853].Request.Path = "/subscriptions/978912de-9bd6-/resourceGroups/d95bb339-ec77-4be/providers/Microsoft.Logic/integrationAccounts/7919bcef-8b8d-4d5b-870"; + Requests[1854] = new DefaultHttpContext(); + Requests[1854].RequestServices = CreateServices(); + Requests[1854].Request.Method = "PUT"; + Requests[1854].Request.Path = "/subscriptions/79e477ee-b92a-/resourceGroups/1d1691c9-4212-4ac/providers/Microsoft.Logic/workflows/27f7ff37-7c5"; + Requests[1855] = new DefaultHttpContext(); + Requests[1855].RequestServices = CreateServices(); + Requests[1855].Request.Method = "GET"; + Requests[1855].Request.Path = "/subscriptions/f058748b-53eb-/resourceGroups/4e43c546-e721-459/providers/Microsoft.Logic/workflows/92d4916a-324"; + Requests[1856] = new DefaultHttpContext(); + Requests[1856].RequestServices = CreateServices(); + Requests[1856].Request.Method = "DELETE"; + Requests[1856].Request.Path = "/subscriptions/550958ab-6596-/resourceGroups/e3035fd2-d54f-4ef/providers/Microsoft.Logic/workflows/ef5c5d81-2b0"; + Requests[1857] = new DefaultHttpContext(); + Requests[1857].RequestServices = CreateServices(); + Requests[1857].Request.Method = "PATCH"; + Requests[1857].Request.Path = "/subscriptions/13c7c3b0-f2db-/resourceGroups/564252ff-2ea1-426/providers/Microsoft.Logic/workflows/41f99e22-86a"; + Requests[1858] = new DefaultHttpContext(); + Requests[1858].RequestServices = CreateServices(); + Requests[1858].Request.Method = "PATCH"; + Requests[1858].Request.Path = "/subscriptions/ca8e0793-ec38-/resourceGroups/5ddd0852-189a-40b/providers/Microsoft.MachineLearning/commitmentPlans/5f1e82e2-412c-4c06"; + Requests[1859] = new DefaultHttpContext(); + Requests[1859].RequestServices = CreateServices(); + Requests[1859].Request.Method = "GET"; + Requests[1859].Request.Path = "/subscriptions/9c93cdf5-521b-/resourceGroups/51e9750f-a03c-4cd/providers/Microsoft.MachineLearning/commitmentPlans/4478b4e2-0336-412e"; + Requests[1860] = new DefaultHttpContext(); + Requests[1860].RequestServices = CreateServices(); + Requests[1860].Request.Method = "DELETE"; + Requests[1860].Request.Path = "/subscriptions/26779511-6cbf-/resourceGroups/93df6f2e-4f42-4db/providers/Microsoft.MachineLearning/commitmentPlans/117accda-14f2-42c5"; + Requests[1861] = new DefaultHttpContext(); + Requests[1861].RequestServices = CreateServices(); + Requests[1861].Request.Method = "PARAMETERS"; + Requests[1861].Request.Path = "/subscriptions/6e650afb-768d-/resourceGroups/d9dfb743-fd3b-430/providers/Microsoft.MachineLearning/commitmentPlans/5be01ffb-5fa4-4224"; + Requests[1862] = new DefaultHttpContext(); + Requests[1862].RequestServices = CreateServices(); + Requests[1862].Request.Method = "PUT"; + Requests[1862].Request.Path = "/subscriptions/1b56ca80-1037-/resourceGroups/4cb96a15-e119-483/providers/Microsoft.MachineLearning/commitmentPlans/e834b83a-cde3-4db4"; + Requests[1863] = new DefaultHttpContext(); + Requests[1863].RequestServices = CreateServices(); + Requests[1863].Request.Method = "PUT"; + Requests[1863].Request.Path = "/subscriptions/ef32fa7d-0198-/resourceGroups/2173d64f-33d8-41b/providers/Microsoft.MachineLearning/webServices/701ac7a8-3c18-"; + Requests[1864] = new DefaultHttpContext(); + Requests[1864].RequestServices = CreateServices(); + Requests[1864].Request.Method = "GET"; + Requests[1864].Request.Path = "/subscriptions/4b5de478-293c-/resourceGroups/71044bce-dd49-43e/providers/Microsoft.MachineLearning/webServices/31ce93d3-22d1-"; + Requests[1865] = new DefaultHttpContext(); + Requests[1865].RequestServices = CreateServices(); + Requests[1865].Request.Method = "PATCH"; + Requests[1865].Request.Path = "/subscriptions/a5f7bee7-49f1-/resourceGroups/94c44342-7ae9-498/providers/Microsoft.MachineLearning/webServices/d2e61971-19b4-"; + Requests[1866] = new DefaultHttpContext(); + Requests[1866].RequestServices = CreateServices(); + Requests[1866].Request.Method = "DELETE"; + Requests[1866].Request.Path = "/subscriptions/16a2b8d7-7ae1-/resourceGroups/4a365a5e-06a3-49a/providers/Microsoft.MachineLearning/webServices/58379bcc-3171-"; + Requests[1867] = new DefaultHttpContext(); + Requests[1867].RequestServices = CreateServices(); + Requests[1867].Request.Method = "DELETE"; + Requests[1867].Request.Path = "/subscriptions/8350703e-efe9-/resourceGroups/89c3d38c-236f-40c/providers/Microsoft.MachineLearning/workspaces/14fe7a5d-b376"; + Requests[1868] = new DefaultHttpContext(); + Requests[1868].RequestServices = CreateServices(); + Requests[1868].Request.Method = "PUT"; + Requests[1868].Request.Path = "/subscriptions/3b4ea66a-dd1c-/resourceGroups/1f77672e-4e96-419/providers/Microsoft.MachineLearning/workspaces/d0b1df3a-35a5"; + Requests[1869] = new DefaultHttpContext(); + Requests[1869].RequestServices = CreateServices(); + Requests[1869].Request.Method = "GET"; + Requests[1869].Request.Path = "/subscriptions/b67d21ec-1cb3-/resourceGroups/9fee758a-a28e-461/providers/Microsoft.MachineLearning/workspaces/e1dbcef8-c1d9"; + Requests[1870] = new DefaultHttpContext(); + Requests[1870].RequestServices = CreateServices(); + Requests[1870].Request.Method = "PATCH"; + Requests[1870].Request.Path = "/subscriptions/542d24bb-27e7-/resourceGroups/fc7eda38-3b7c-486/providers/Microsoft.MachineLearning/workspaces/86dbdce8-9401"; + Requests[1871] = new DefaultHttpContext(); + Requests[1871].RequestServices = CreateServices(); + Requests[1871].Request.Method = "PUT"; + Requests[1871].Request.Path = "/subscriptions/74d57c9f-7564-/resourceGroups/bbb4d03b-cae6-47e/providers/Microsoft.MachineLearningCompute/operationalizationClusters/a8d6b65d-d7"; + Requests[1872] = new DefaultHttpContext(); + Requests[1872].RequestServices = CreateServices(); + Requests[1872].Request.Method = "GET"; + Requests[1872].Request.Path = "/subscriptions/175324d9-6b73-/resourceGroups/5503bb06-90b6-4a4/providers/Microsoft.MachineLearningCompute/operationalizationClusters/36e108cb-73"; + Requests[1873] = new DefaultHttpContext(); + Requests[1873].RequestServices = CreateServices(); + Requests[1873].Request.Method = "PATCH"; + Requests[1873].Request.Path = "/subscriptions/3ab6f4b7-7ab8-/resourceGroups/f0048f8f-46ee-499/providers/Microsoft.MachineLearningCompute/operationalizationClusters/d50aef8d-cd"; + Requests[1874] = new DefaultHttpContext(); + Requests[1874].RequestServices = CreateServices(); + Requests[1874].Request.Method = "DELETE"; + Requests[1874].Request.Path = "/subscriptions/e3644c42-6d40-/resourceGroups/3a173178-f8b5-420/providers/Microsoft.MachineLearningCompute/operationalizationClusters/8d974423-73"; + Requests[1875] = new DefaultHttpContext(); + Requests[1875].RequestServices = CreateServices(); + Requests[1875].Request.Method = "DELETE"; + Requests[1875].Request.Path = "/subscriptions/3cc41c39-ec75-/resourceGroups/7a1be289-1b2b-439/providers/Microsoft.MachineLearningExperimentation/accounts/fbb3395d-23"; + Requests[1876] = new DefaultHttpContext(); + Requests[1876].RequestServices = CreateServices(); + Requests[1876].Request.Method = "GET"; + Requests[1876].Request.Path = "/subscriptions/6d35677b-4169-/resourceGroups/10f29c59-0c10-40f/providers/Microsoft.MachineLearningExperimentation/accounts/e76143f4-6c"; + Requests[1877] = new DefaultHttpContext(); + Requests[1877].RequestServices = CreateServices(); + Requests[1877].Request.Method = "PUT"; + Requests[1877].Request.Path = "/subscriptions/b3e11619-8d4d-/resourceGroups/204cd1d9-7f03-460/providers/Microsoft.MachineLearningExperimentation/accounts/cb8a2bc4-c1"; + Requests[1878] = new DefaultHttpContext(); + Requests[1878].RequestServices = CreateServices(); + Requests[1878].Request.Method = "PATCH"; + Requests[1878].Request.Path = "/subscriptions/e6e3adb2-c054-/resourceGroups/02dae6c4-e2a2-460/providers/Microsoft.MachineLearningExperimentation/accounts/020ab555-bf"; + Requests[1879] = new DefaultHttpContext(); + Requests[1879].RequestServices = CreateServices(); + Requests[1879].Request.Method = "GET"; + Requests[1879].Request.Path = "/subscriptions/f25a3b93-199f-/resourceGroups/5e390c75-f56c-4a5/providers/Microsoft.MachineLearningServices/workspaces/57f2dd72-e581"; + Requests[1880] = new DefaultHttpContext(); + Requests[1880].RequestServices = CreateServices(); + Requests[1880].Request.Method = "PUT"; + Requests[1880].Request.Path = "/subscriptions/ff73dc2f-bdc0-/resourceGroups/14835cc0-8bae-400/providers/Microsoft.MachineLearningServices/workspaces/1787187a-adfe"; + Requests[1881] = new DefaultHttpContext(); + Requests[1881].RequestServices = CreateServices(); + Requests[1881].Request.Method = "DELETE"; + Requests[1881].Request.Path = "/subscriptions/54dbb607-48a2-/resourceGroups/6b4923cc-4725-432/providers/Microsoft.MachineLearningServices/workspaces/fd4a0d78-3192"; + Requests[1882] = new DefaultHttpContext(); + Requests[1882].RequestServices = CreateServices(); + Requests[1882].Request.Method = "PATCH"; + Requests[1882].Request.Path = "/subscriptions/391aef1d-2c65-/resourceGroups/6a2cd6eb-1ab4-4e9/providers/Microsoft.MachineLearningServices/workspaces/e2e20a67-bfbe"; + Requests[1883] = new DefaultHttpContext(); + Requests[1883].RequestServices = CreateServices(); + Requests[1883].Request.Method = "PUT"; + Requests[1883].Request.Path = "/subscriptions/6f9da87d-2a6c-/resourceGroups/a1b69de0-06d3-494/providers/Microsoft.ManagedIdentity/userAssignedIdentities/501bccc9-bf5"; + Requests[1884] = new DefaultHttpContext(); + Requests[1884].RequestServices = CreateServices(); + Requests[1884].Request.Method = "PATCH"; + Requests[1884].Request.Path = "/subscriptions/7ef223e7-aba6-/resourceGroups/456c65c8-c62b-483/providers/Microsoft.ManagedIdentity/userAssignedIdentities/bbcb922c-1b1"; + Requests[1885] = new DefaultHttpContext(); + Requests[1885].RequestServices = CreateServices(); + Requests[1885].Request.Method = "GET"; + Requests[1885].Request.Path = "/subscriptions/15ee8074-7bc9-/resourceGroups/4f3f0897-39e0-40b/providers/Microsoft.ManagedIdentity/userAssignedIdentities/6eeff5ba-6bd"; + Requests[1886] = new DefaultHttpContext(); + Requests[1886].RequestServices = CreateServices(); + Requests[1886].Request.Method = "DELETE"; + Requests[1886].Request.Path = "/subscriptions/3ec6bc3e-d5d8-/resourceGroups/e78ace92-bcec-4d5/providers/Microsoft.ManagedIdentity/userAssignedIdentities/db104b75-6f2"; + Requests[1887] = new DefaultHttpContext(); + Requests[1887].RequestServices = CreateServices(); + Requests[1887].Request.Method = "DELETE"; + Requests[1887].Request.Path = "/subscriptions/d137fd0f-00b4-/resourceGroups/7d3db48e-8366-45d/providers/Microsoft.Maps/accounts/b536e664-fc"; + Requests[1888] = new DefaultHttpContext(); + Requests[1888].RequestServices = CreateServices(); + Requests[1888].Request.Method = "GET"; + Requests[1888].Request.Path = "/subscriptions/12ed85e9-e5c0-/resourceGroups/daa2e896-bb91-49e/providers/Microsoft.Maps/accounts/2a927513-c1"; + Requests[1889] = new DefaultHttpContext(); + Requests[1889].RequestServices = CreateServices(); + Requests[1889].Request.Method = "PUT"; + Requests[1889].Request.Path = "/subscriptions/33899bdf-7e92-/resourceGroups/c98a67f8-e05f-459/providers/Microsoft.Maps/accounts/a7b0e8a4-55"; + Requests[1890] = new DefaultHttpContext(); + Requests[1890].RequestServices = CreateServices(); + Requests[1890].Request.Method = "PATCH"; + Requests[1890].Request.Path = "/subscriptions/c0a8a961-c0ea-/resourceGroups/70e33331-d283-425/providers/Microsoft.Maps/accounts/765a05c5-ff"; + Requests[1891] = new DefaultHttpContext(); + Requests[1891].RequestServices = CreateServices(); + Requests[1891].Request.Method = "GET"; + Requests[1891].Request.Path = "/subscriptions/6bd63e66-4e92-/resourceGroups/3c034b88-d151-42a/providers/Microsoft.Media/mediaservices/a24c6a63-53d6-4d"; + Requests[1892] = new DefaultHttpContext(); + Requests[1892].RequestServices = CreateServices(); + Requests[1892].Request.Method = "PUT"; + Requests[1892].Request.Path = "/subscriptions/9651e2a3-4514-/resourceGroups/43ad7a6e-bd87-48d/providers/Microsoft.Media/mediaservices/451bd0ef-539e-42"; + Requests[1893] = new DefaultHttpContext(); + Requests[1893].RequestServices = CreateServices(); + Requests[1893].Request.Method = "DELETE"; + Requests[1893].Request.Path = "/subscriptions/ce5926eb-2bf5-/resourceGroups/371e4cba-0226-4c8/providers/Microsoft.Media/mediaservices/d9e7eafc-c0d2-44"; + Requests[1894] = new DefaultHttpContext(); + Requests[1894].RequestServices = CreateServices(); + Requests[1894].Request.Method = "PATCH"; + Requests[1894].Request.Path = "/subscriptions/d2fd42ee-b4f7-/resourceGroups/730f543e-54cf-471/providers/Microsoft.Media/mediaservices/865cf746-4f43-4c"; + Requests[1895] = new DefaultHttpContext(); + Requests[1895].RequestServices = CreateServices(); + Requests[1895].Request.Method = "GET"; + Requests[1895].Request.Path = "/subscriptions/183eaa88-406f-/resourcegroups/afe91e21-36b4-48c/providers/Microsoft.Migrate/projects/6a8ba536-80"; + Requests[1896] = new DefaultHttpContext(); + Requests[1896].RequestServices = CreateServices(); + Requests[1896].Request.Method = "PUT"; + Requests[1896].Request.Path = "/subscriptions/62078425-f40c-/resourcegroups/c678113f-a1d9-492/providers/Microsoft.Migrate/projects/43d099bb-4e"; + Requests[1897] = new DefaultHttpContext(); + Requests[1897].RequestServices = CreateServices(); + Requests[1897].Request.Method = "PATCH"; + Requests[1897].Request.Path = "/subscriptions/c62d912c-38a5-/resourcegroups/cc05392f-5d75-415/providers/Microsoft.Migrate/projects/4a6a63fe-a7"; + Requests[1898] = new DefaultHttpContext(); + Requests[1898].RequestServices = CreateServices(); + Requests[1898].Request.Method = "DELETE"; + Requests[1898].Request.Path = "/subscriptions/d3db15fe-da52-/resourcegroups/39bcff6d-3814-40e/providers/Microsoft.Migrate/projects/6885d00f-e5"; + Requests[1899] = new DefaultHttpContext(); + Requests[1899].RequestServices = CreateServices(); + Requests[1899].Request.Method = "DELETE"; + Requests[1899].Request.Path = "/subscriptions/a7e0c81d-2d92-/resourceGroups/c912437c-dc32-4bb/providers/Microsoft.Network/applicationGateways/9261b2cc-f647-434c-a9f"; + Requests[1900] = new DefaultHttpContext(); + Requests[1900].RequestServices = CreateServices(); + Requests[1900].Request.Method = "GET"; + Requests[1900].Request.Path = "/subscriptions/173ea361-ec30-/resourceGroups/c2192136-90f1-415/providers/Microsoft.Network/applicationGateways/f15cb121-ec18-4960-bc2"; + Requests[1901] = new DefaultHttpContext(); + Requests[1901].RequestServices = CreateServices(); + Requests[1901].Request.Method = "PUT"; + Requests[1901].Request.Path = "/subscriptions/79c4a3c9-9420-/resourceGroups/d5102af7-c52c-44a/providers/Microsoft.Network/applicationGateways/048f3ae4-e442-4efb-93e"; + Requests[1902] = new DefaultHttpContext(); + Requests[1902].RequestServices = CreateServices(); + Requests[1902].Request.Method = "PATCH"; + Requests[1902].Request.Path = "/subscriptions/889b1311-f4e2-/resourceGroups/529d4e47-deb6-4a4/providers/Microsoft.Network/applicationGateways/f2fe74e1-79a8-4328-9ed"; + Requests[1903] = new DefaultHttpContext(); + Requests[1903].RequestServices = CreateServices(); + Requests[1903].Request.Method = "GET"; + Requests[1903].Request.Path = "/subscriptions/f84f34aa-adf4-/resourceGroups/615b8c0c-dca1-4c3/providers/Microsoft.Network/applicationSecurityGroups/3db7d4f1-d555-47f5-8be7-c96c"; + Requests[1904] = new DefaultHttpContext(); + Requests[1904].RequestServices = CreateServices(); + Requests[1904].Request.Method = "PUT"; + Requests[1904].Request.Path = "/subscriptions/9ffb31a8-0f5f-/resourceGroups/0264f279-7df9-439/providers/Microsoft.Network/applicationSecurityGroups/a9ed9df3-aad4-4ca7-9312-7e45"; + Requests[1905] = new DefaultHttpContext(); + Requests[1905].RequestServices = CreateServices(); + Requests[1905].Request.Method = "DELETE"; + Requests[1905].Request.Path = "/subscriptions/3de5f7f9-e19d-/resourceGroups/2627956d-3c9b-4c3/providers/Microsoft.Network/applicationSecurityGroups/c0281374-ac3c-4071-b9d9-a4b3"; + Requests[1906] = new DefaultHttpContext(); + Requests[1906].RequestServices = CreateServices(); + Requests[1906].Request.Method = "PATCH"; + Requests[1906].Request.Path = "/subscriptions/7b762d3c-94a0-/resourceGroups/bce962c8-1367-4af/providers/Microsoft.Network/connections/287d0f92-9295-4420-99da-b22263c959a"; + Requests[1907] = new DefaultHttpContext(); + Requests[1907].RequestServices = CreateServices(); + Requests[1907].Request.Method = "DELETE"; + Requests[1907].Request.Path = "/subscriptions/03c123c5-650b-/resourceGroups/0b1ac77f-faa2-44e/providers/Microsoft.Network/connections/f3ed5366-f8bc-4c81-a1af-b0ae0e89b8b"; + Requests[1908] = new DefaultHttpContext(); + Requests[1908].RequestServices = CreateServices(); + Requests[1908].Request.Method = "PUT"; + Requests[1908].Request.Path = "/subscriptions/f792c4f8-b975-/resourceGroups/2166bc7d-88b2-459/providers/Microsoft.Network/connections/e8bbbb37-9db6-48d4-9488-d9699c0ce4a"; + Requests[1909] = new DefaultHttpContext(); + Requests[1909].RequestServices = CreateServices(); + Requests[1909].Request.Method = "GET"; + Requests[1909].Request.Path = "/subscriptions/818e7d06-cfad-/resourceGroups/49dce8c3-9dd2-4e8/providers/Microsoft.Network/connections/9237a19b-5224-48b9-a4b9-077420500b3"; + Requests[1910] = new DefaultHttpContext(); + Requests[1910].RequestServices = CreateServices(); + Requests[1910].Request.Method = "PUT"; + Requests[1910].Request.Path = "/subscriptions/cdd330f2-943d-/resourceGroups/64e1bba2-373a-4e4/providers/Microsoft.Network/ddosProtectionPlans/2ade81fa-f160-4cd2-9be"; + Requests[1911] = new DefaultHttpContext(); + Requests[1911].RequestServices = CreateServices(); + Requests[1911].Request.Method = "GET"; + Requests[1911].Request.Path = "/subscriptions/060ee9e6-7b6b-/resourceGroups/1efedda3-525f-481/providers/Microsoft.Network/ddosProtectionPlans/87e000ca-d27b-4a3b-8fe"; + Requests[1912] = new DefaultHttpContext(); + Requests[1912].RequestServices = CreateServices(); + Requests[1912].Request.Method = "DELETE"; + Requests[1912].Request.Path = "/subscriptions/764d20aa-909e-/resourceGroups/88dfa6a7-6dfb-4d8/providers/Microsoft.Network/ddosProtectionPlans/eb04ec41-52a6-4187-854"; + Requests[1913] = new DefaultHttpContext(); + Requests[1913].RequestServices = CreateServices(); + Requests[1913].Request.Method = "PATCH"; + Requests[1913].Request.Path = "/subscriptions/c125d13b-2d03-/resourceGroups/cf05cbed-bd9f-4c4/providers/Microsoft.Network/dnsZones/8e537701"; + Requests[1914] = new DefaultHttpContext(); + Requests[1914].RequestServices = CreateServices(); + Requests[1914].Request.Method = "GET"; + Requests[1914].Request.Path = "/subscriptions/6f4f1b70-9b99-/resourceGroups/dcccf13e-2dd0-4ce/providers/Microsoft.Network/dnsZones/7bf6b585"; + Requests[1915] = new DefaultHttpContext(); + Requests[1915].RequestServices = CreateServices(); + Requests[1915].Request.Method = "DELETE"; + Requests[1915].Request.Path = "/subscriptions/3a9b588a-2cd4-/resourceGroups/c2e758a7-72ad-465/providers/Microsoft.Network/dnsZones/1861a5f0"; + Requests[1916] = new DefaultHttpContext(); + Requests[1916].RequestServices = CreateServices(); + Requests[1916].Request.Method = "PUT"; + Requests[1916].Request.Path = "/subscriptions/671f13a3-4e69-/resourceGroups/d615e986-6d8a-4e2/providers/Microsoft.Network/dnsZones/6d182df3"; + Requests[1917] = new DefaultHttpContext(); + Requests[1917].RequestServices = CreateServices(); + Requests[1917].Request.Method = "PATCH"; + Requests[1917].Request.Path = "/subscriptions/2b193ebf-502f-/resourceGroups/34902ad1-f4e3-412/providers/Microsoft.Network/expressRouteCircuits/29b5daae-9a"; + Requests[1918] = new DefaultHttpContext(); + Requests[1918].RequestServices = CreateServices(); + Requests[1918].Request.Method = "PUT"; + Requests[1918].Request.Path = "/subscriptions/99955395-e29a-/resourceGroups/a6efc313-bc7f-4d7/providers/Microsoft.Network/expressRouteCircuits/9bce4078-ab"; + Requests[1919] = new DefaultHttpContext(); + Requests[1919].RequestServices = CreateServices(); + Requests[1919].Request.Method = "GET"; + Requests[1919].Request.Path = "/subscriptions/7a585e32-2a07-/resourceGroups/ac7341fe-1429-426/providers/Microsoft.Network/expressRouteCircuits/2729c9e2-bd"; + Requests[1920] = new DefaultHttpContext(); + Requests[1920].RequestServices = CreateServices(); + Requests[1920].Request.Method = "DELETE"; + Requests[1920].Request.Path = "/subscriptions/3fd5b7b5-919a-/resourceGroups/144232b0-cb69-4ac/providers/Microsoft.Network/expressRouteCircuits/7d11735a-af"; + Requests[1921] = new DefaultHttpContext(); + Requests[1921].RequestServices = CreateServices(); + Requests[1921].Request.Method = "GET"; + Requests[1921].Request.Path = "/subscriptions/228ce523-b15c-/resourceGroups/750314c4-69bb-4bf/providers/Microsoft.Network/expressRouteCrossConnections/bf98c3ea-ff82-4fcb-"; + Requests[1922] = new DefaultHttpContext(); + Requests[1922].RequestServices = CreateServices(); + Requests[1922].Request.Method = "PATCH"; + Requests[1922].Request.Path = "/subscriptions/11c6c6b2-fc67-/resourceGroups/4c463508-2f4f-4da/providers/Microsoft.Network/expressRouteCrossConnections/9ad06999-3c5d-4f36-"; + Requests[1923] = new DefaultHttpContext(); + Requests[1923].RequestServices = CreateServices(); + Requests[1923].Request.Method = "PUT"; + Requests[1923].Request.Path = "/subscriptions/b64ed8c5-d085-/resourceGroups/cd2e6950-afe9-4a2/providers/Microsoft.Network/expressRouteCrossConnections/31cf2464-3d1f-49fc-"; + Requests[1924] = new DefaultHttpContext(); + Requests[1924].RequestServices = CreateServices(); + Requests[1924].Request.Method = "DELETE"; + Requests[1924].Request.Path = "/subscriptions/4706d4d3-e285-/resourceGroups/94e4bff4-55bd-4bd/providers/Microsoft.Network/loadBalancers/70f39331-672e-4a"; + Requests[1925] = new DefaultHttpContext(); + Requests[1925].RequestServices = CreateServices(); + Requests[1925].Request.Method = "PUT"; + Requests[1925].Request.Path = "/subscriptions/d91db965-f9d4-/resourceGroups/2a0f7e92-9c51-49d/providers/Microsoft.Network/loadBalancers/c3aa2710-b9e7-44"; + Requests[1926] = new DefaultHttpContext(); + Requests[1926].RequestServices = CreateServices(); + Requests[1926].Request.Method = "PATCH"; + Requests[1926].Request.Path = "/subscriptions/91732768-133b-/resourceGroups/c082b3e9-ef17-46a/providers/Microsoft.Network/loadBalancers/52c54050-626a-48"; + Requests[1927] = new DefaultHttpContext(); + Requests[1927].RequestServices = CreateServices(); + Requests[1927].Request.Method = "GET"; + Requests[1927].Request.Path = "/subscriptions/3c9c30d4-abf8-/resourceGroups/6af6f535-d1db-4e4/providers/Microsoft.Network/loadBalancers/eaef669d-3e69-4d"; + Requests[1928] = new DefaultHttpContext(); + Requests[1928].RequestServices = CreateServices(); + Requests[1928].Request.Method = "PATCH"; + Requests[1928].Request.Path = "/subscriptions/fb207000-acec-/resourceGroups/6c3d7f6a-f16b-4b4/providers/Microsoft.Network/localNetworkGateways/198dfeb0-6ed4-4b88-96a4"; + Requests[1929] = new DefaultHttpContext(); + Requests[1929].RequestServices = CreateServices(); + Requests[1929].Request.Method = "GET"; + Requests[1929].Request.Path = "/subscriptions/8664588a-f134-/resourceGroups/26395c60-75e4-4ff/providers/Microsoft.Network/localNetworkGateways/66f5978f-a1e7-4ddd-90dc"; + Requests[1930] = new DefaultHttpContext(); + Requests[1930].RequestServices = CreateServices(); + Requests[1930].Request.Method = "PUT"; + Requests[1930].Request.Path = "/subscriptions/59c03305-c55f-/resourceGroups/56c43da5-6305-45c/providers/Microsoft.Network/localNetworkGateways/0a594a93-06a6-4734-876b"; + Requests[1931] = new DefaultHttpContext(); + Requests[1931].RequestServices = CreateServices(); + Requests[1931].Request.Method = "DELETE"; + Requests[1931].Request.Path = "/subscriptions/2ca1257f-a807-/resourceGroups/65fa1988-fdd8-4fe/providers/Microsoft.Network/localNetworkGateways/12aeaeed-3540-465c-87a3"; + Requests[1932] = new DefaultHttpContext(); + Requests[1932].RequestServices = CreateServices(); + Requests[1932].Request.Method = "PATCH"; + Requests[1932].Request.Path = "/subscriptions/0bf46c50-7e52-/resourceGroups/7cb79305-87dd-4fd/providers/Microsoft.Network/networkInterfaces/03afeecf-6c2e-404b-9"; + Requests[1933] = new DefaultHttpContext(); + Requests[1933].RequestServices = CreateServices(); + Requests[1933].Request.Method = "PUT"; + Requests[1933].Request.Path = "/subscriptions/c5899a05-980c-/resourceGroups/02baa16d-9580-455/providers/Microsoft.Network/networkInterfaces/703fb4df-d376-4d2d-a"; + Requests[1934] = new DefaultHttpContext(); + Requests[1934].RequestServices = CreateServices(); + Requests[1934].Request.Method = "GET"; + Requests[1934].Request.Path = "/subscriptions/87c5d5a8-88a3-/resourceGroups/b2df96b4-07e7-492/providers/Microsoft.Network/networkInterfaces/e65a1d38-a3f2-4a8e-b"; + Requests[1935] = new DefaultHttpContext(); + Requests[1935].RequestServices = CreateServices(); + Requests[1935].Request.Method = "DELETE"; + Requests[1935].Request.Path = "/subscriptions/277c241e-03ed-/resourceGroups/d106608b-b5b0-43e/providers/Microsoft.Network/networkInterfaces/efe86d07-4eb3-49c4-9"; + Requests[1936] = new DefaultHttpContext(); + Requests[1936].RequestServices = CreateServices(); + Requests[1936].Request.Method = "DELETE"; + Requests[1936].Request.Path = "/subscriptions/e6a36b5c-7173-/resourceGroups/33a33288-3d90-417/providers/Microsoft.Network/networkSecurityGroups/8c829d6f-d348-4ff5-9eeb-"; + Requests[1937] = new DefaultHttpContext(); + Requests[1937].RequestServices = CreateServices(); + Requests[1937].Request.Method = "PATCH"; + Requests[1937].Request.Path = "/subscriptions/b4bd071b-9249-/resourceGroups/f55873a9-8af9-474/providers/Microsoft.Network/networkSecurityGroups/7625aff2-40b5-4dd7-8a71-"; + Requests[1938] = new DefaultHttpContext(); + Requests[1938].RequestServices = CreateServices(); + Requests[1938].Request.Method = "PUT"; + Requests[1938].Request.Path = "/subscriptions/2eab8dae-96cd-/resourceGroups/b42500ed-27b1-4e4/providers/Microsoft.Network/networkSecurityGroups/39e44317-8890-4de0-b1ef-"; + Requests[1939] = new DefaultHttpContext(); + Requests[1939].RequestServices = CreateServices(); + Requests[1939].Request.Method = "GET"; + Requests[1939].Request.Path = "/subscriptions/45860b87-0189-/resourceGroups/a2229704-e017-493/providers/Microsoft.Network/networkSecurityGroups/ef6ed973-3a12-4cd8-b6f6-"; + Requests[1940] = new DefaultHttpContext(); + Requests[1940].RequestServices = CreateServices(); + Requests[1940].Request.Method = "GET"; + Requests[1940].Request.Path = "/subscriptions/1e4b70aa-7b2c-/resourceGroups/b699657f-becf-4e7/providers/Microsoft.Network/networkWatchers/b45e5775-4252-46d4"; + Requests[1941] = new DefaultHttpContext(); + Requests[1941].RequestServices = CreateServices(); + Requests[1941].Request.Method = "PATCH"; + Requests[1941].Request.Path = "/subscriptions/d64d669e-23f6-/resourceGroups/c1b32251-d2b1-4e8/providers/Microsoft.Network/networkWatchers/5046140c-6ee5-4e12"; + Requests[1942] = new DefaultHttpContext(); + Requests[1942].RequestServices = CreateServices(); + Requests[1942].Request.Method = "PUT"; + Requests[1942].Request.Path = "/subscriptions/cc02c52d-5f96-/resourceGroups/1197ee2b-33fb-4df/providers/Microsoft.Network/networkWatchers/0053e47c-894a-42a0"; + Requests[1943] = new DefaultHttpContext(); + Requests[1943].RequestServices = CreateServices(); + Requests[1943].Request.Method = "DELETE"; + Requests[1943].Request.Path = "/subscriptions/f8651eec-0878-/resourceGroups/fa5a82bd-8a2c-482/providers/Microsoft.Network/networkWatchers/2aa0d789-974f-4f1c"; + Requests[1944] = new DefaultHttpContext(); + Requests[1944].RequestServices = CreateServices(); + Requests[1944].Request.Method = "GET"; + Requests[1944].Request.Path = "/subscriptions/3cf4b7a0-8c72-/resourceGroups/3ebe4702-5972-42d/providers/Microsoft.Network/publicIPAddresses/4249e982-7154-4c39-"; + Requests[1945] = new DefaultHttpContext(); + Requests[1945].RequestServices = CreateServices(); + Requests[1945].Request.Method = "PATCH"; + Requests[1945].Request.Path = "/subscriptions/6f14ddf8-3743-/resourceGroups/a5693494-39ab-427/providers/Microsoft.Network/publicIPAddresses/c59bdbd7-8d46-4cbc-"; + Requests[1946] = new DefaultHttpContext(); + Requests[1946].RequestServices = CreateServices(); + Requests[1946].Request.Method = "PUT"; + Requests[1946].Request.Path = "/subscriptions/eaa20683-1069-/resourceGroups/c7089a52-dd6d-418/providers/Microsoft.Network/publicIPAddresses/90c0481e-d576-4b5a-"; + Requests[1947] = new DefaultHttpContext(); + Requests[1947].RequestServices = CreateServices(); + Requests[1947].Request.Method = "DELETE"; + Requests[1947].Request.Path = "/subscriptions/8eacfb8c-fd45-/resourceGroups/34473f90-41ec-48e/providers/Microsoft.Network/publicIPAddresses/e86feaf3-030e-4ae9-"; + Requests[1948] = new DefaultHttpContext(); + Requests[1948].RequestServices = CreateServices(); + Requests[1948].Request.Method = "DELETE"; + Requests[1948].Request.Path = "/subscriptions/a13af044-603d-/resourceGroups/b14756e3-c086-475/providers/Microsoft.Network/routeFilters/a30da555-a9b5-4"; + Requests[1949] = new DefaultHttpContext(); + Requests[1949].RequestServices = CreateServices(); + Requests[1949].Request.Method = "PATCH"; + Requests[1949].Request.Path = "/subscriptions/59e16c97-2251-/resourceGroups/5c069ce5-071c-458/providers/Microsoft.Network/routeFilters/ef1d2863-10cf-4"; + Requests[1950] = new DefaultHttpContext(); + Requests[1950].RequestServices = CreateServices(); + Requests[1950].Request.Method = "GET"; + Requests[1950].Request.Path = "/subscriptions/3813164c-2384-/resourceGroups/4991b272-587b-4a8/providers/Microsoft.Network/routeFilters/4b4981c4-505b-4"; + Requests[1951] = new DefaultHttpContext(); + Requests[1951].RequestServices = CreateServices(); + Requests[1951].Request.Method = "PUT"; + Requests[1951].Request.Path = "/subscriptions/54d25dcf-ae36-/resourceGroups/e153c7ec-ee7d-465/providers/Microsoft.Network/routeFilters/def4cf83-cbf6-4"; + Requests[1952] = new DefaultHttpContext(); + Requests[1952].RequestServices = CreateServices(); + Requests[1952].Request.Method = "PATCH"; + Requests[1952].Request.Path = "/subscriptions/0655a9b6-5c53-/resourceGroups/820b50bc-4952-45a/providers/Microsoft.Network/routeTables/ac5e698f-ee3c-"; + Requests[1953] = new DefaultHttpContext(); + Requests[1953].RequestServices = CreateServices(); + Requests[1953].Request.Method = "PUT"; + Requests[1953].Request.Path = "/subscriptions/7496f1b5-ac2a-/resourceGroups/544a843a-8439-43c/providers/Microsoft.Network/routeTables/b704c5c1-acfd-"; + Requests[1954] = new DefaultHttpContext(); + Requests[1954].RequestServices = CreateServices(); + Requests[1954].Request.Method = "DELETE"; + Requests[1954].Request.Path = "/subscriptions/3b3f5bfd-f45e-/resourceGroups/0e9c6208-8916-465/providers/Microsoft.Network/routeTables/5f10e748-8019-"; + Requests[1955] = new DefaultHttpContext(); + Requests[1955].RequestServices = CreateServices(); + Requests[1955].Request.Method = "GET"; + Requests[1955].Request.Path = "/subscriptions/4b700c2d-dd24-/resourceGroups/7e464650-acf3-4e1/providers/Microsoft.Network/routeTables/64e3b3f0-b2d0-"; + Requests[1956] = new DefaultHttpContext(); + Requests[1956].RequestServices = CreateServices(); + Requests[1956].Request.Method = "PATCH"; + Requests[1956].Request.Path = "/subscriptions/b8e9def3-e1cf-/resourceGroups/b9cadab1-ab2b-41e/providers/Microsoft.Network/trafficmanagerprofiles/329fc071-1b"; + Requests[1957] = new DefaultHttpContext(); + Requests[1957].RequestServices = CreateServices(); + Requests[1957].Request.Method = "DELETE"; + Requests[1957].Request.Path = "/subscriptions/a92d1906-b696-/resourceGroups/2b67be3f-327a-408/providers/Microsoft.Network/trafficmanagerprofiles/a64a91c5-28"; + Requests[1958] = new DefaultHttpContext(); + Requests[1958].RequestServices = CreateServices(); + Requests[1958].Request.Method = "PUT"; + Requests[1958].Request.Path = "/subscriptions/eb8d8828-efce-/resourceGroups/650b5649-8464-405/providers/Microsoft.Network/trafficmanagerprofiles/93b73c84-58"; + Requests[1959] = new DefaultHttpContext(); + Requests[1959].RequestServices = CreateServices(); + Requests[1959].Request.Method = "GET"; + Requests[1959].Request.Path = "/subscriptions/4cb67681-48db-/resourceGroups/26bc5256-e9f1-42d/providers/Microsoft.Network/trafficmanagerprofiles/7a508b53-9a"; + Requests[1960] = new DefaultHttpContext(); + Requests[1960].RequestServices = CreateServices(); + Requests[1960].Request.Method = "PUT"; + Requests[1960].Request.Path = "/subscriptions/6383d55f-9922-/resourceGroups/e3e352f4-5bc7-4e1/providers/Microsoft.Network/virtualNetworkGateways/20bc64ed-42de-4eea-9c59-1"; + Requests[1961] = new DefaultHttpContext(); + Requests[1961].RequestServices = CreateServices(); + Requests[1961].Request.Method = "DELETE"; + Requests[1961].Request.Path = "/subscriptions/df16d9c9-09e3-/resourceGroups/806d012e-7ba2-46c/providers/Microsoft.Network/virtualNetworkGateways/cf77cae6-2e64-49fa-b1ba-a"; + Requests[1962] = new DefaultHttpContext(); + Requests[1962].RequestServices = CreateServices(); + Requests[1962].Request.Method = "PATCH"; + Requests[1962].Request.Path = "/subscriptions/49b4ddf4-b491-/resourceGroups/bb1efbf6-23dc-420/providers/Microsoft.Network/virtualNetworkGateways/b54270e2-8957-4cf7-8065-e"; + Requests[1963] = new DefaultHttpContext(); + Requests[1963].RequestServices = CreateServices(); + Requests[1963].Request.Method = "GET"; + Requests[1963].Request.Path = "/subscriptions/be51c0db-a5e6-/resourceGroups/a6f989de-3e43-47a/providers/Microsoft.Network/virtualNetworkGateways/cbbcfc12-ddf3-4f7e-a85c-2"; + Requests[1964] = new DefaultHttpContext(); + Requests[1964].RequestServices = CreateServices(); + Requests[1964].Request.Method = "GET"; + Requests[1964].Request.Path = "/subscriptions/f6d4e972-382d-/resourceGroups/bdc5ded2-a3d5-4fc/providers/Microsoft.Network/virtualNetworks/611f0284-cd3e-40fb"; + Requests[1965] = new DefaultHttpContext(); + Requests[1965].RequestServices = CreateServices(); + Requests[1965].Request.Method = "DELETE"; + Requests[1965].Request.Path = "/subscriptions/f39d3d84-9725-/resourceGroups/949b28e8-5824-4d1/providers/Microsoft.Network/virtualNetworks/48ab6786-b39e-4e4b"; + Requests[1966] = new DefaultHttpContext(); + Requests[1966].RequestServices = CreateServices(); + Requests[1966].Request.Method = "PUT"; + Requests[1966].Request.Path = "/subscriptions/f9325519-e1c7-/resourceGroups/d07b0901-953d-43e/providers/Microsoft.Network/virtualNetworks/c9c9fbb8-6a0f-484e"; + Requests[1967] = new DefaultHttpContext(); + Requests[1967].RequestServices = CreateServices(); + Requests[1967].Request.Method = "PATCH"; + Requests[1967].Request.Path = "/subscriptions/5f1d0b6a-115a-/resourceGroups/473ddb3e-f447-462/providers/Microsoft.Network/virtualNetworks/5cacd8a8-a1d2-4816"; + Requests[1968] = new DefaultHttpContext(); + Requests[1968].RequestServices = CreateServices(); + Requests[1968].Request.Method = "DELETE"; + Requests[1968].Request.Path = "/subscriptions/409949be-e5bd-/resourceGroups/736c28fc-347a-4bf/providers/Microsoft.NotificationHubs/namespaces/79a0e290-6d33"; + Requests[1969] = new DefaultHttpContext(); + Requests[1969].RequestServices = CreateServices(); + Requests[1969].Request.Method = "PATCH"; + Requests[1969].Request.Path = "/subscriptions/8f22350f-7fb4-/resourceGroups/28736aad-fa13-439/providers/Microsoft.NotificationHubs/namespaces/52991758-7431"; + Requests[1970] = new DefaultHttpContext(); + Requests[1970].RequestServices = CreateServices(); + Requests[1970].Request.Method = "PUT"; + Requests[1970].Request.Path = "/subscriptions/fd8b3d2b-919b-/resourceGroups/275f8df2-34ec-4d5/providers/Microsoft.NotificationHubs/namespaces/819116a3-7c08"; + Requests[1971] = new DefaultHttpContext(); + Requests[1971].RequestServices = CreateServices(); + Requests[1971].Request.Method = "GET"; + Requests[1971].Request.Path = "/subscriptions/78f6fc1f-120b-/resourceGroups/4b7b4d7d-c53c-468/providers/Microsoft.NotificationHubs/namespaces/d66c3573-ff07"; + Requests[1972] = new DefaultHttpContext(); + Requests[1972].RequestServices = CreateServices(); + Requests[1972].Request.Method = "GET"; + Requests[1972].Request.Path = "/subscriptions/6b2a5b81-d5c4-/resourcegroups/f0e89bf5-6799-443/providers/Microsoft.OperationalInsights/workspaces/b6d4e978-fa73"; + Requests[1973] = new DefaultHttpContext(); + Requests[1973].RequestServices = CreateServices(); + Requests[1973].Request.Method = "PATCH"; + Requests[1973].Request.Path = "/subscriptions/aa1de0a7-841b-/resourcegroups/6f75c0e0-c442-4b3/providers/Microsoft.OperationalInsights/workspaces/6ef14459-a504"; + Requests[1974] = new DefaultHttpContext(); + Requests[1974].RequestServices = CreateServices(); + Requests[1974].Request.Method = "PUT"; + Requests[1974].Request.Path = "/subscriptions/2e1f1968-dc10-/resourcegroups/bc353261-4e43-488/providers/Microsoft.OperationalInsights/workspaces/59e64e40-0b1d"; + Requests[1975] = new DefaultHttpContext(); + Requests[1975].RequestServices = CreateServices(); + Requests[1975].Request.Method = "DELETE"; + Requests[1975].Request.Path = "/subscriptions/6249faa8-6d9b-/resourcegroups/19f447b8-3a9f-4d2/providers/Microsoft.OperationalInsights/workspaces/f04638cc-bac6"; + Requests[1976] = new DefaultHttpContext(); + Requests[1976].RequestServices = CreateServices(); + Requests[1976].Request.Method = "GET"; + Requests[1976].Request.Path = "/subscriptions/d93133e3-4b20-/resourcegroups/c2fc7b0a-95f8-4e8/providers/Microsoft.OperationsManagement/ManagementConfigurations/2ff1da94-21ec-4bdb-ac03-5ba"; + Requests[1977] = new DefaultHttpContext(); + Requests[1977].RequestServices = CreateServices(); + Requests[1977].Request.Method = "DELETE"; + Requests[1977].Request.Path = "/subscriptions/ea13cd7d-41e8-/resourcegroups/79dd368e-544b-4e2/providers/Microsoft.OperationsManagement/ManagementConfigurations/f7de18c9-b7d6-402d-9dff-193"; + Requests[1978] = new DefaultHttpContext(); + Requests[1978].RequestServices = CreateServices(); + Requests[1978].Request.Method = "PUT"; + Requests[1978].Request.Path = "/subscriptions/60a89460-3347-/resourcegroups/a459ab9e-1f1d-474/providers/Microsoft.OperationsManagement/ManagementConfigurations/ca6c5b25-c319-442f-84ea-183"; + Requests[1979] = new DefaultHttpContext(); + Requests[1979].RequestServices = CreateServices(); + Requests[1979].Request.Method = "PUT"; + Requests[1979].Request.Path = "/subscriptions/0e39c320-32dc-/resourcegroups/1e70f84c-6cb5-4b0/providers/Microsoft.OperationsManagement/solutions/806df256-1d1"; + Requests[1980] = new DefaultHttpContext(); + Requests[1980].RequestServices = CreateServices(); + Requests[1980].Request.Method = "DELETE"; + Requests[1980].Request.Path = "/subscriptions/fa922ff2-a268-/resourcegroups/c4533909-0643-469/providers/Microsoft.OperationsManagement/solutions/ff26e9a6-e20"; + Requests[1981] = new DefaultHttpContext(); + Requests[1981].RequestServices = CreateServices(); + Requests[1981].Request.Method = "GET"; + Requests[1981].Request.Path = "/subscriptions/8dff6690-e0a2-/resourcegroups/d8a38f3f-3cfd-48c/providers/Microsoft.OperationsManagement/solutions/531ac004-da3"; + Requests[1982] = new DefaultHttpContext(); + Requests[1982].RequestServices = CreateServices(); + Requests[1982].Request.Method = "PUT"; + Requests[1982].Request.Path = "/subscriptions/197735d5-a90b-/resourceGroups/d1d5b132-06a7-4e9/providers/Microsoft.PowerBI/workspaceCollections/2d5d7902-e7b6-4b8d-9b54"; + Requests[1983] = new DefaultHttpContext(); + Requests[1983].RequestServices = CreateServices(); + Requests[1983].Request.Method = "PATCH"; + Requests[1983].Request.Path = "/subscriptions/bfd4b246-3a98-/resourceGroups/b55f164c-49cf-47f/providers/Microsoft.PowerBI/workspaceCollections/fd2c44e0-d773-4429-aba7"; + Requests[1984] = new DefaultHttpContext(); + Requests[1984].RequestServices = CreateServices(); + Requests[1984].Request.Method = "DELETE"; + Requests[1984].Request.Path = "/subscriptions/8b65e4f2-c31d-/resourceGroups/d86bfc96-2811-433/providers/Microsoft.PowerBI/workspaceCollections/b4655f32-03af-4107-b7e7"; + Requests[1985] = new DefaultHttpContext(); + Requests[1985].RequestServices = CreateServices(); + Requests[1985].Request.Method = "GET"; + Requests[1985].Request.Path = "/subscriptions/6857ab20-e29b-/resourceGroups/3d1a2d33-0288-46f/providers/Microsoft.PowerBI/workspaceCollections/7166e6fc-a085-4313-8867"; + Requests[1986] = new DefaultHttpContext(); + Requests[1986].RequestServices = CreateServices(); + Requests[1986].Request.Method = "PATCH"; + Requests[1986].Request.Path = "/subscriptions/6e4cf06b-09b9-/resourceGroups/d82433fc-2a56-42c/providers/Microsoft.PowerBIDedicated/capacities/19240a18-29eb-4a94-8a"; + Requests[1987] = new DefaultHttpContext(); + Requests[1987].RequestServices = CreateServices(); + Requests[1987].Request.Method = "DELETE"; + Requests[1987].Request.Path = "/subscriptions/ddf53898-3f43-/resourceGroups/0c8dd3f8-7b18-489/providers/Microsoft.PowerBIDedicated/capacities/a371a177-fad6-4d14-b7"; + Requests[1988] = new DefaultHttpContext(); + Requests[1988].RequestServices = CreateServices(); + Requests[1988].Request.Method = "GET"; + Requests[1988].Request.Path = "/subscriptions/902fc80c-6d36-/resourceGroups/db3770db-c043-496/providers/Microsoft.PowerBIDedicated/capacities/82d71d6a-59e1-4256-84"; + Requests[1989] = new DefaultHttpContext(); + Requests[1989].RequestServices = CreateServices(); + Requests[1989].Request.Method = "PUT"; + Requests[1989].Request.Path = "/subscriptions/3944d884-f353-/resourceGroups/67e0090b-ddb6-4e6/providers/Microsoft.PowerBIDedicated/capacities/886b6e0e-4085-4e7e-b6"; + Requests[1990] = new DefaultHttpContext(); + Requests[1990].RequestServices = CreateServices(); + Requests[1990].Request.Method = "GET"; + Requests[1990].Request.Path = "/subscriptions/d51d208c-fa82-/resourceGroups/0c568d88-c17e-4a5/providers/Microsoft.RecoveryServices/vaults/9cc4e1fd-"; + Requests[1991] = new DefaultHttpContext(); + Requests[1991].RequestServices = CreateServices(); + Requests[1991].Request.Method = "PUT"; + Requests[1991].Request.Path = "/subscriptions/1d531928-ece6-/resourceGroups/5a6a5397-3853-4d1/providers/Microsoft.RecoveryServices/vaults/d48bc77d-"; + Requests[1992] = new DefaultHttpContext(); + Requests[1992].RequestServices = CreateServices(); + Requests[1992].Request.Method = "DELETE"; + Requests[1992].Request.Path = "/subscriptions/c47bc38a-ce44-/resourceGroups/a849e892-e8b6-4f9/providers/Microsoft.RecoveryServices/vaults/5aad4c22-"; + Requests[1993] = new DefaultHttpContext(); + Requests[1993].RequestServices = CreateServices(); + Requests[1993].Request.Method = "PATCH"; + Requests[1993].Request.Path = "/subscriptions/32045718-7d4f-/resourceGroups/6e0b7207-e34b-488/providers/Microsoft.RecoveryServices/vaults/286b4d5b-"; + Requests[1994] = new DefaultHttpContext(); + Requests[1994].RequestServices = CreateServices(); + Requests[1994].Request.Method = "PUT"; + Requests[1994].Request.Path = "/subscriptions/ba166f56-6561-/resourceGroups/656777f6-9295-499/providers/Microsoft.Relay/namespaces/d9bf5af8-a89d"; + Requests[1995] = new DefaultHttpContext(); + Requests[1995].RequestServices = CreateServices(); + Requests[1995].Request.Method = "DELETE"; + Requests[1995].Request.Path = "/subscriptions/23149fe1-344b-/resourceGroups/b8c49b35-0eb9-46d/providers/Microsoft.Relay/namespaces/071d9cba-ea8e"; + Requests[1996] = new DefaultHttpContext(); + Requests[1996].RequestServices = CreateServices(); + Requests[1996].Request.Method = "GET"; + Requests[1996].Request.Path = "/subscriptions/94437b82-2e1e-/resourceGroups/0e190bc1-c343-4f2/providers/Microsoft.Relay/namespaces/0eee9116-c106"; + Requests[1997] = new DefaultHttpContext(); + Requests[1997].RequestServices = CreateServices(); + Requests[1997].Request.Method = "PATCH"; + Requests[1997].Request.Path = "/subscriptions/0dbf31d4-fad7-/resourceGroups/e9c182a3-dcaf-424/providers/Microsoft.Relay/namespaces/2ff06923-ae21"; + Requests[1998] = new DefaultHttpContext(); + Requests[1998].RequestServices = CreateServices(); + Requests[1998].Request.Method = "GET"; + Requests[1998].Request.Path = "/subscriptions/6511f3a8-266f-/resourcegroups/a0141aac-07a4-49b/providers/Microsoft.Resources/deployments/af6fc6f2-77a4-"; + Requests[1999] = new DefaultHttpContext(); + Requests[1999].RequestServices = CreateServices(); + Requests[1999].Request.Method = "DELETE"; + Requests[1999].Request.Path = "/subscriptions/1497feab-0582-/resourcegroups/e7a89360-8e35-422/providers/Microsoft.Resources/deployments/a2a9b8bf-401e-"; + Requests[2000] = new DefaultHttpContext(); + Requests[2000].RequestServices = CreateServices(); + Requests[2000].Request.Method = "HEAD"; + Requests[2000].Request.Path = "/subscriptions/5f01bfda-796a-/resourcegroups/4b7a1646-0756-411/providers/Microsoft.Resources/deployments/4d81ba21-a9d7-"; + Requests[2001] = new DefaultHttpContext(); + Requests[2001].RequestServices = CreateServices(); + Requests[2001].Request.Method = "PUT"; + Requests[2001].Request.Path = "/subscriptions/5f7065b1-3aab-/resourcegroups/c92c1726-255f-442/providers/Microsoft.Resources/deployments/67bfd9e9-b771-"; + Requests[2002] = new DefaultHttpContext(); + Requests[2002].RequestServices = CreateServices(); + Requests[2002].Request.Method = "PATCH"; + Requests[2002].Request.Path = "/subscriptions/4ab61edd-cd1f-/resourceGroups/9abba5c9-835f-463/providers/Microsoft.Scheduler/jobCollections/ffc888da-4b76-47e"; + Requests[2003] = new DefaultHttpContext(); + Requests[2003].RequestServices = CreateServices(); + Requests[2003].Request.Method = "PUT"; + Requests[2003].Request.Path = "/subscriptions/1fd2cfd3-c0d4-/resourceGroups/af101566-a591-43a/providers/Microsoft.Scheduler/jobCollections/fb0c0454-e049-472"; + Requests[2004] = new DefaultHttpContext(); + Requests[2004].RequestServices = CreateServices(); + Requests[2004].Request.Method = "DELETE"; + Requests[2004].Request.Path = "/subscriptions/8de0a675-04f5-/resourceGroups/212d6c96-2576-4a7/providers/Microsoft.Scheduler/jobCollections/53ce2ebd-55bc-406"; + Requests[2005] = new DefaultHttpContext(); + Requests[2005].RequestServices = CreateServices(); + Requests[2005].Request.Method = "GET"; + Requests[2005].Request.Path = "/subscriptions/ed39843b-3e26-/resourceGroups/b522093e-6017-438/providers/Microsoft.Scheduler/jobCollections/3d9d82c9-5fc2-478"; + Requests[2006] = new DefaultHttpContext(); + Requests[2006].RequestServices = CreateServices(); + Requests[2006].Request.Method = "DELETE"; + Requests[2006].Request.Path = "/subscriptions/b44bbcf9-ba2a-/resourceGroups/d307694f-c2ed-4ab/providers/Microsoft.Search/searchServices/13868f75-e25a-47f"; + Requests[2007] = new DefaultHttpContext(); + Requests[2007].RequestServices = CreateServices(); + Requests[2007].Request.Method = "PATCH"; + Requests[2007].Request.Path = "/subscriptions/b3560027-06ba-/resourceGroups/958ebcbb-f66d-447/providers/Microsoft.Search/searchServices/d1a6dcd2-196a-43d"; + Requests[2008] = new DefaultHttpContext(); + Requests[2008].RequestServices = CreateServices(); + Requests[2008].Request.Method = "PUT"; + Requests[2008].Request.Path = "/subscriptions/4ffe6292-e13e-/resourceGroups/9c8df437-2d3f-40b/providers/Microsoft.Search/searchServices/6fa17de0-1bdf-4d9"; + Requests[2009] = new DefaultHttpContext(); + Requests[2009].RequestServices = CreateServices(); + Requests[2009].Request.Method = "GET"; + Requests[2009].Request.Path = "/subscriptions/2b00a308-e8e0-/resourceGroups/31bc06c9-7bcb-443/providers/Microsoft.Search/searchServices/da00c837-8f37-443"; + Requests[2010] = new DefaultHttpContext(); + Requests[2010].RequestServices = CreateServices(); + Requests[2010].Request.Method = "PUT"; + Requests[2010].Request.Path = "/subscriptions/242a4f3e-24f3-/resourceGroups/7d5b1265-0af9-418/providers/Microsoft.Security/pricings/6fc86d3f-a3"; + Requests[2011] = new DefaultHttpContext(); + Requests[2011].RequestServices = CreateServices(); + Requests[2011].Request.Method = "GET"; + Requests[2011].Request.Path = "/subscriptions/79019eac-7496-/resourceGroups/8e1e0c40-cab4-493/providers/Microsoft.Security/pricings/6a19ee8b-63"; + Requests[2012] = new DefaultHttpContext(); + Requests[2012].RequestServices = CreateServices(); + Requests[2012].Request.Method = "PUT"; + Requests[2012].Request.Path = "/subscriptions/c437150a-1f85-/resourceGroups/a413a5c5-a8c7-46a/providers/Microsoft.Security/securityContacts/37da8ff8-14cd-4cc2-"; + Requests[2013] = new DefaultHttpContext(); + Requests[2013].RequestServices = CreateServices(); + Requests[2013].Request.Method = "GET"; + Requests[2013].Request.Path = "/subscriptions/863afbda-f6a7-/resourceGroups/3c65c1ea-2e28-4b0/providers/Microsoft.Security/securityContacts/0569ec5b-9223-4a61-"; + Requests[2014] = new DefaultHttpContext(); + Requests[2014].RequestServices = CreateServices(); + Requests[2014].Request.Method = "PATCH"; + Requests[2014].Request.Path = "/subscriptions/c23db0e6-dfa2-/resourceGroups/b761a9e8-6f57-4ac/providers/Microsoft.Security/securityContacts/bf49f0b2-9614-421b-"; + Requests[2015] = new DefaultHttpContext(); + Requests[2015].RequestServices = CreateServices(); + Requests[2015].Request.Method = "DELETE"; + Requests[2015].Request.Path = "/subscriptions/cc80f623-578c-/resourceGroups/c948e54c-46d3-4fa/providers/Microsoft.Security/securityContacts/b5d2064e-239e-4af0-"; + Requests[2016] = new DefaultHttpContext(); + Requests[2016].RequestServices = CreateServices(); + Requests[2016].Request.Method = "GET"; + Requests[2016].Request.Path = "/subscriptions/9a40fd2a-0712-/resourceGroups/995099da-8ae6-4db/providers/Microsoft.Security/workspaceSettings/a2b70179-a09d-4971-b"; + Requests[2017] = new DefaultHttpContext(); + Requests[2017].RequestServices = CreateServices(); + Requests[2017].Request.Method = "PUT"; + Requests[2017].Request.Path = "/subscriptions/39b45107-95eb-/resourceGroups/67cad791-b953-46b/providers/Microsoft.Security/workspaceSettings/60cf117d-e7f4-4c62-a"; + Requests[2018] = new DefaultHttpContext(); + Requests[2018].RequestServices = CreateServices(); + Requests[2018].Request.Method = "DELETE"; + Requests[2018].Request.Path = "/subscriptions/d9c479c1-c6b0-/resourceGroups/94c9c7f5-8401-4af/providers/Microsoft.Security/workspaceSettings/6b3508c4-cdd1-4878-8"; + Requests[2019] = new DefaultHttpContext(); + Requests[2019].RequestServices = CreateServices(); + Requests[2019].Request.Method = "PATCH"; + Requests[2019].Request.Path = "/subscriptions/c18da117-d154-/resourceGroups/f30142a3-325c-4bb/providers/Microsoft.Security/workspaceSettings/b057a8da-e2ef-41f6-b"; + Requests[2020] = new DefaultHttpContext(); + Requests[2020].RequestServices = CreateServices(); + Requests[2020].Request.Method = "PUT"; + Requests[2020].Request.Path = "/subscriptions/4b2f09ea-345c-/resourceGroups/76349785-11ea-490/providers/Microsoft.ServerManagement/gateways/a00b7c6a-b4"; + Requests[2021] = new DefaultHttpContext(); + Requests[2021].RequestServices = CreateServices(); + Requests[2021].Request.Method = "DELETE"; + Requests[2021].Request.Path = "/subscriptions/879885c4-4ea7-/resourceGroups/dfad94e7-b309-4e8/providers/Microsoft.ServerManagement/gateways/ee22ea2a-3e"; + Requests[2022] = new DefaultHttpContext(); + Requests[2022].RequestServices = CreateServices(); + Requests[2022].Request.Method = "PATCH"; + Requests[2022].Request.Path = "/subscriptions/38e0c221-d3a7-/resourceGroups/81f61ced-6885-424/providers/Microsoft.ServerManagement/gateways/79485f12-78"; + Requests[2023] = new DefaultHttpContext(); + Requests[2023].RequestServices = CreateServices(); + Requests[2023].Request.Method = "GET"; + Requests[2023].Request.Path = "/subscriptions/25e3d007-5220-/resourceGroups/c2d4b3c5-c558-49a/providers/Microsoft.ServerManagement/gateways/007a4707-f7"; + Requests[2024] = new DefaultHttpContext(); + Requests[2024].RequestServices = CreateServices(); + Requests[2024].Request.Method = "DELETE"; + Requests[2024].Request.Path = "/subscriptions/ffff3277-b938-/resourceGroups/06bf28b2-5e5e-4b1/providers/Microsoft.ServerManagement/nodes/f8056437"; + Requests[2025] = new DefaultHttpContext(); + Requests[2025].RequestServices = CreateServices(); + Requests[2025].Request.Method = "GET"; + Requests[2025].Request.Path = "/subscriptions/0697e2f6-5852-/resourceGroups/5fa5104a-3262-4f7/providers/Microsoft.ServerManagement/nodes/3169ee75"; + Requests[2026] = new DefaultHttpContext(); + Requests[2026].RequestServices = CreateServices(); + Requests[2026].Request.Method = "PATCH"; + Requests[2026].Request.Path = "/subscriptions/4ffe06df-2276-/resourceGroups/127a4974-9c90-4b0/providers/Microsoft.ServerManagement/nodes/2cac9df8"; + Requests[2027] = new DefaultHttpContext(); + Requests[2027].RequestServices = CreateServices(); + Requests[2027].Request.Method = "PUT"; + Requests[2027].Request.Path = "/subscriptions/3bad3658-e666-/resourceGroups/ddb1b744-4f85-43a/providers/Microsoft.ServerManagement/nodes/963869ad"; + Requests[2028] = new DefaultHttpContext(); + Requests[2028].RequestServices = CreateServices(); + Requests[2028].Request.Method = "GET"; + Requests[2028].Request.Path = "/subscriptions/b0dec3dc-61af-/resourceGroups/c5a73f9e-3293-4d2/providers/Microsoft.ServiceBus/namespaces/42655d0d-ffd5"; + Requests[2029] = new DefaultHttpContext(); + Requests[2029].RequestServices = CreateServices(); + Requests[2029].Request.Method = "PUT"; + Requests[2029].Request.Path = "/subscriptions/67dbc166-992c-/resourceGroups/d5f7b27b-4163-437/providers/Microsoft.ServiceBus/namespaces/9391ab43-d784"; + Requests[2030] = new DefaultHttpContext(); + Requests[2030].RequestServices = CreateServices(); + Requests[2030].Request.Method = "PATCH"; + Requests[2030].Request.Path = "/subscriptions/cba25675-10a0-/resourceGroups/3ca280d6-17b4-4c9/providers/Microsoft.ServiceBus/namespaces/65fc24cb-614b"; + Requests[2031] = new DefaultHttpContext(); + Requests[2031].RequestServices = CreateServices(); + Requests[2031].Request.Method = "DELETE"; + Requests[2031].Request.Path = "/subscriptions/6e5d2bcd-a04b-/resourceGroups/dabbc2bc-c68c-4ba/providers/Microsoft.ServiceBus/namespaces/ea1bca61-d10e"; + Requests[2032] = new DefaultHttpContext(); + Requests[2032].RequestServices = CreateServices(); + Requests[2032].Request.Method = "GET"; + Requests[2032].Request.Path = "/subscriptions/d06c24b7-42c3-/resourceGroups/6fb6cfc2-a6de-4c3/providers/Microsoft.ServiceFabric/clusters/bba6c2d9-10"; + Requests[2033] = new DefaultHttpContext(); + Requests[2033].RequestServices = CreateServices(); + Requests[2033].Request.Method = "DELETE"; + Requests[2033].Request.Path = "/subscriptions/cf937a52-5c5a-/resourceGroups/0cb906b4-3557-4be/providers/Microsoft.ServiceFabric/clusters/dadf8bbb-7c"; + Requests[2034] = new DefaultHttpContext(); + Requests[2034].RequestServices = CreateServices(); + Requests[2034].Request.Method = "PUT"; + Requests[2034].Request.Path = "/subscriptions/1730cffe-3a11-/resourceGroups/f37aa272-2a84-4b9/providers/Microsoft.ServiceFabric/clusters/f2d31038-01"; + Requests[2035] = new DefaultHttpContext(); + Requests[2035].RequestServices = CreateServices(); + Requests[2035].Request.Method = "PATCH"; + Requests[2035].Request.Path = "/subscriptions/44922943-a8be-/resourceGroups/38aa2791-ccde-42e/providers/Microsoft.ServiceFabric/clusters/43770a60-5e"; + Requests[2036] = new DefaultHttpContext(); + Requests[2036].RequestServices = CreateServices(); + Requests[2036].Request.Method = "GET"; + Requests[2036].Request.Path = "/subscriptions/1364b1e5-6f8d-/resourceGroups/834551d8-2484-47a/providers/Microsoft.SignalRService/SignalR/c5669837-100"; + Requests[2037] = new DefaultHttpContext(); + Requests[2037].RequestServices = CreateServices(); + Requests[2037].Request.Method = "DELETE"; + Requests[2037].Request.Path = "/subscriptions/d9016470-9636-/resourceGroups/3302f7bc-b81c-428/providers/Microsoft.SignalRService/SignalR/2dd1daf6-423"; + Requests[2038] = new DefaultHttpContext(); + Requests[2038].RequestServices = CreateServices(); + Requests[2038].Request.Method = "PATCH"; + Requests[2038].Request.Path = "/subscriptions/0b86a429-6a9d-/resourceGroups/9c491a06-0c64-485/providers/Microsoft.SignalRService/SignalR/46e1a575-f03"; + Requests[2039] = new DefaultHttpContext(); + Requests[2039].RequestServices = CreateServices(); + Requests[2039].Request.Method = "PUT"; + Requests[2039].Request.Path = "/subscriptions/41b3f639-efac-/resourceGroups/c5cd53d3-03bd-4da/providers/Microsoft.SignalRService/SignalR/e9087412-d29"; + Requests[2040] = new DefaultHttpContext(); + Requests[2040].RequestServices = CreateServices(); + Requests[2040].Request.Method = "DELETE"; + Requests[2040].Request.Path = "/subscriptions/4c45aecc-33d1-/resourceGroups/33b1a8d4-57e8-4c4/providers/Microsoft.Solutions/applianceDefinitions/b4c795d6-7e33-431d-b7f6"; + Requests[2041] = new DefaultHttpContext(); + Requests[2041].RequestServices = CreateServices(); + Requests[2041].Request.Method = "GET"; + Requests[2041].Request.Path = "/subscriptions/4b121f1f-ca72-/resourceGroups/2dc01bc7-e21c-4a1/providers/Microsoft.Solutions/applianceDefinitions/3a001df0-0568-4a90-9a54"; + Requests[2042] = new DefaultHttpContext(); + Requests[2042].RequestServices = CreateServices(); + Requests[2042].Request.Method = "PUT"; + Requests[2042].Request.Path = "/subscriptions/83058176-11ab-/resourceGroups/da33279a-468b-4f2/providers/Microsoft.Solutions/applianceDefinitions/7761610c-246d-45e2-bb45"; + Requests[2043] = new DefaultHttpContext(); + Requests[2043].RequestServices = CreateServices(); + Requests[2043].Request.Method = "GET"; + Requests[2043].Request.Path = "/subscriptions/0e14e1d6-957c-/resourceGroups/eefad31c-c015-4d1/providers/Microsoft.Solutions/appliances/dbd007ee-97fe"; + Requests[2044] = new DefaultHttpContext(); + Requests[2044].RequestServices = CreateServices(); + Requests[2044].Request.Method = "DELETE"; + Requests[2044].Request.Path = "/subscriptions/fca003da-e79e-/resourceGroups/2335edca-243d-4e1/providers/Microsoft.Solutions/appliances/09c4609e-a939"; + Requests[2045] = new DefaultHttpContext(); + Requests[2045].RequestServices = CreateServices(); + Requests[2045].Request.Method = "PUT"; + Requests[2045].Request.Path = "/subscriptions/e2af7d07-d2d0-/resourceGroups/75e61821-4203-42a/providers/Microsoft.Solutions/appliances/89a08c2b-2ecd"; + Requests[2046] = new DefaultHttpContext(); + Requests[2046].RequestServices = CreateServices(); + Requests[2046].Request.Method = "PATCH"; + Requests[2046].Request.Path = "/subscriptions/96a83b21-290a-/resourceGroups/05967149-0cae-43d/providers/Microsoft.Solutions/appliances/fab35892-683b"; + Requests[2047] = new DefaultHttpContext(); + Requests[2047].RequestServices = CreateServices(); + Requests[2047].Request.Method = "GET"; + Requests[2047].Request.Path = "/subscriptions/ad1e5496-046a-/resourceGroups/be1587c4-aded-4ed/providers/Microsoft.Solutions/applicationDefinitions/f720f2f0-9207-42bb-980d-0"; + Requests[2048] = new DefaultHttpContext(); + Requests[2048].RequestServices = CreateServices(); + Requests[2048].Request.Method = "PUT"; + Requests[2048].Request.Path = "/subscriptions/31f91337-25a2-/resourceGroups/21246306-e66d-47e/providers/Microsoft.Solutions/applicationDefinitions/020c466d-2382-4557-93c2-4"; + Requests[2049] = new DefaultHttpContext(); + Requests[2049].RequestServices = CreateServices(); + Requests[2049].Request.Method = "DELETE"; + Requests[2049].Request.Path = "/subscriptions/54c77dfa-f835-/resourceGroups/b9352952-bd42-49e/providers/Microsoft.Solutions/applicationDefinitions/6c7d2a06-8c98-4c7b-bfa2-0"; + Requests[2050] = new DefaultHttpContext(); + Requests[2050].RequestServices = CreateServices(); + Requests[2050].Request.Method = "PUT"; + Requests[2050].Request.Path = "/subscriptions/05bd42ce-2c33-/resourceGroups/27a1399a-d735-4ed/providers/Microsoft.Solutions/applications/a156d465-ae0a-4"; + Requests[2051] = new DefaultHttpContext(); + Requests[2051].RequestServices = CreateServices(); + Requests[2051].Request.Method = "GET"; + Requests[2051].Request.Path = "/subscriptions/1614ba8a-40d3-/resourceGroups/79ef1486-9b2d-479/providers/Microsoft.Solutions/applications/83159f61-306f-4"; + Requests[2052] = new DefaultHttpContext(); + Requests[2052].RequestServices = CreateServices(); + Requests[2052].Request.Method = "PATCH"; + Requests[2052].Request.Path = "/subscriptions/79c2c79a-c0dd-/resourceGroups/11ebd1b6-f9d8-46f/providers/Microsoft.Solutions/applications/9ca84424-1271-4"; + Requests[2053] = new DefaultHttpContext(); + Requests[2053].RequestServices = CreateServices(); + Requests[2053].Request.Method = "DELETE"; + Requests[2053].Request.Path = "/subscriptions/a722d493-f2c5-/resourceGroups/2cd9bb3b-829c-4de/providers/Microsoft.Solutions/applications/731cb629-26e4-4"; + Requests[2054] = new DefaultHttpContext(); + Requests[2054].RequestServices = CreateServices(); + Requests[2054].Request.Method = "GET"; + Requests[2054].Request.Path = "/subscriptions/7a8af202-5bca-/resourceGroups/32025c0d-0ee7-49c/providers/Microsoft.Sql/managedInstances/a565453f-04f4-4b11-"; + Requests[2055] = new DefaultHttpContext(); + Requests[2055].RequestServices = CreateServices(); + Requests[2055].Request.Method = "PUT"; + Requests[2055].Request.Path = "/subscriptions/156ac608-7ea6-/resourceGroups/414ac0aa-b5f2-4dc/providers/Microsoft.Sql/managedInstances/9c29c600-bd2a-47e8-"; + Requests[2056] = new DefaultHttpContext(); + Requests[2056].RequestServices = CreateServices(); + Requests[2056].Request.Method = "DELETE"; + Requests[2056].Request.Path = "/subscriptions/a302adfc-30c5-/resourceGroups/aad4fdcf-196e-4f0/providers/Microsoft.Sql/managedInstances/a340cd74-9dbc-46f3-"; + Requests[2057] = new DefaultHttpContext(); + Requests[2057].RequestServices = CreateServices(); + Requests[2057].Request.Method = "PATCH"; + Requests[2057].Request.Path = "/subscriptions/37b784bd-3655-/resourceGroups/34c1c90a-aee6-4c4/providers/Microsoft.Sql/managedInstances/48ae47b8-1baa-40f4-"; + Requests[2058] = new DefaultHttpContext(); + Requests[2058].RequestServices = CreateServices(); + Requests[2058].Request.Method = "PUT"; + Requests[2058].Request.Path = "/subscriptions/a8d96c88-8bcd-/resourceGroups/3ce7f5ee-7d3b-4d8/providers/Microsoft.Sql/servers/e10f4f93-2"; + Requests[2059] = new DefaultHttpContext(); + Requests[2059].RequestServices = CreateServices(); + Requests[2059].Request.Method = "PATCH"; + Requests[2059].Request.Path = "/subscriptions/a63c0dcc-5a6a-/resourceGroups/84633148-388b-499/providers/Microsoft.Sql/servers/6e81e60f-e"; + Requests[2060] = new DefaultHttpContext(); + Requests[2060].RequestServices = CreateServices(); + Requests[2060].Request.Method = "DELETE"; + Requests[2060].Request.Path = "/subscriptions/67bda5b4-2f87-/resourceGroups/43b5fd40-8a57-4ba/providers/Microsoft.Sql/servers/80ce7297-4"; + Requests[2061] = new DefaultHttpContext(); + Requests[2061].RequestServices = CreateServices(); + Requests[2061].Request.Method = "GET"; + Requests[2061].Request.Path = "/subscriptions/f563a202-65d5-/resourceGroups/62406687-a1c8-48f/providers/Microsoft.Sql/servers/163bf16a-8"; + Requests[2062] = new DefaultHttpContext(); + Requests[2062].RequestServices = CreateServices(); + Requests[2062].Request.Method = "PUT"; + Requests[2062].Request.Path = "/subscriptions/b7dd3f11-21ef-/resourcegroups/e679a48d-b428-403/providers/Microsoft.Storage.Admin/farms/63e860"; + Requests[2063] = new DefaultHttpContext(); + Requests[2063].RequestServices = CreateServices(); + Requests[2063].Request.Method = "GET"; + Requests[2063].Request.Path = "/subscriptions/494eacd0-2418-/resourcegroups/63784d16-100c-437/providers/Microsoft.Storage.Admin/farms/34f8fb"; + Requests[2064] = new DefaultHttpContext(); + Requests[2064].RequestServices = CreateServices(); + Requests[2064].Request.Method = "PATCH"; + Requests[2064].Request.Path = "/subscriptions/32af1e23-84a0-/resourcegroups/9ee2f5a9-6a04-49c/providers/Microsoft.Storage.Admin/farms/c4230e"; + Requests[2065] = new DefaultHttpContext(); + Requests[2065].RequestServices = CreateServices(); + Requests[2065].Request.Method = "PUT"; + Requests[2065].Request.Path = "/subscriptions/ebabc381-bb7d-/resourceGroups/946b9e72-3409-488/providers/Microsoft.Storage/storageAccounts/13d7cbad-e2"; + Requests[2066] = new DefaultHttpContext(); + Requests[2066].RequestServices = CreateServices(); + Requests[2066].Request.Method = "DELETE"; + Requests[2066].Request.Path = "/subscriptions/18dd0552-be1d-/resourceGroups/a9e757db-4c11-4c5/providers/Microsoft.Storage/storageAccounts/7b10549b-f4"; + Requests[2067] = new DefaultHttpContext(); + Requests[2067].RequestServices = CreateServices(); + Requests[2067].Request.Method = "GET"; + Requests[2067].Request.Path = "/subscriptions/baaeea4b-9d24-/resourceGroups/49f86f22-981a-47c/providers/Microsoft.Storage/storageAccounts/2725ae38-0b"; + Requests[2068] = new DefaultHttpContext(); + Requests[2068].RequestServices = CreateServices(); + Requests[2068].Request.Method = "PATCH"; + Requests[2068].Request.Path = "/subscriptions/df0cdddf-5388-/resourceGroups/7f04988d-abb9-44b/providers/Microsoft.Storage/storageAccounts/18ec846d-03"; + Requests[2069] = new DefaultHttpContext(); + Requests[2069].RequestServices = CreateServices(); + Requests[2069].Request.Method = "GET"; + Requests[2069].Request.Path = "/subscriptions/ae3eca24-4634-/resourceGroups/c5b084cf-f097-479/providers/Microsoft.StorSimple/managers/86f47ea3-a8"; + Requests[2070] = new DefaultHttpContext(); + Requests[2070].RequestServices = CreateServices(); + Requests[2070].Request.Method = "PUT"; + Requests[2070].Request.Path = "/subscriptions/7d4230cc-83ac-/resourceGroups/3748cff0-c6cd-4a1/providers/Microsoft.StorSimple/managers/822c6131-70"; + Requests[2071] = new DefaultHttpContext(); + Requests[2071].RequestServices = CreateServices(); + Requests[2071].Request.Method = "DELETE"; + Requests[2071].Request.Path = "/subscriptions/0f9e4375-8f2d-/resourceGroups/2f7f2bfb-2c03-4db/providers/Microsoft.StorSimple/managers/07b017d8-fe"; + Requests[2072] = new DefaultHttpContext(); + Requests[2072].RequestServices = CreateServices(); + Requests[2072].Request.Method = "PATCH"; + Requests[2072].Request.Path = "/subscriptions/0a70a95a-7f22-/resourceGroups/c8317499-3e95-437/providers/Microsoft.StorSimple/managers/e6191ed7-4a"; + Requests[2073] = new DefaultHttpContext(); + Requests[2073].RequestServices = CreateServices(); + Requests[2073].Request.Method = "PUT"; + Requests[2073].Request.Path = "/subscriptions/538a3106-660b-/resourcegroups/25cd3385-ef20-41b/providers/Microsoft.StreamAnalytics/streamingjobs/96518d4"; + Requests[2074] = new DefaultHttpContext(); + Requests[2074].RequestServices = CreateServices(); + Requests[2074].Request.Method = "PATCH"; + Requests[2074].Request.Path = "/subscriptions/34956032-44cb-/resourcegroups/470c32b1-e43c-4ba/providers/Microsoft.StreamAnalytics/streamingjobs/8ef7f19"; + Requests[2075] = new DefaultHttpContext(); + Requests[2075].RequestServices = CreateServices(); + Requests[2075].Request.Method = "GET"; + Requests[2075].Request.Path = "/subscriptions/6eaff587-960c-/resourcegroups/be8622f9-d625-471/providers/Microsoft.StreamAnalytics/streamingjobs/7b5624c"; + Requests[2076] = new DefaultHttpContext(); + Requests[2076].RequestServices = CreateServices(); + Requests[2076].Request.Method = "DELETE"; + Requests[2076].Request.Path = "/subscriptions/ddb5cffe-a391-/resourcegroups/c2174ef8-cd8b-442/providers/Microsoft.StreamAnalytics/streamingjobs/0549041"; + Requests[2077] = new DefaultHttpContext(); + Requests[2077].RequestServices = CreateServices(); + Requests[2077].Request.Method = "GET"; + Requests[2077].Request.Path = "/subscriptions/c95d57b4-090c-/resourcegroups/c004a371-4a34-41e/providers/Microsoft.Subscriptions.Admin/directoryTenants/e4b2dd"; + Requests[2078] = new DefaultHttpContext(); + Requests[2078].RequestServices = CreateServices(); + Requests[2078].Request.Method = "PUT"; + Requests[2078].Request.Path = "/subscriptions/3280388a-453a-/resourcegroups/a6c32482-9d95-464/providers/Microsoft.Subscriptions.Admin/directoryTenants/d8b3c4"; + Requests[2079] = new DefaultHttpContext(); + Requests[2079].RequestServices = CreateServices(); + Requests[2079].Request.Method = "DELETE"; + Requests[2079].Request.Path = "/subscriptions/ed82d120-3aed-/resourcegroups/85062cfe-e4fb-410/providers/Microsoft.Subscriptions.Admin/directoryTenants/17313c"; + Requests[2080] = new DefaultHttpContext(); + Requests[2080].RequestServices = CreateServices(); + Requests[2080].Request.Method = "GET"; + Requests[2080].Request.Path = "/subscriptions/3a505cc5-e48f-/resourcegroups/3d64ca76-9a36-466/providers/Microsoft.Subscriptions.Admin/offers/40b66"; + Requests[2081] = new DefaultHttpContext(); + Requests[2081].RequestServices = CreateServices(); + Requests[2081].Request.Method = "PUT"; + Requests[2081].Request.Path = "/subscriptions/74281e28-f82e-/resourcegroups/2061a3bc-e2f9-42b/providers/Microsoft.Subscriptions.Admin/offers/f21ba"; + Requests[2082] = new DefaultHttpContext(); + Requests[2082].RequestServices = CreateServices(); + Requests[2082].Request.Method = "DELETE"; + Requests[2082].Request.Path = "/subscriptions/a890a721-fb35-/resourcegroups/6848f337-21db-4f5/providers/Microsoft.Subscriptions.Admin/offers/de9f7"; + Requests[2083] = new DefaultHttpContext(); + Requests[2083].RequestServices = CreateServices(); + Requests[2083].Request.Method = "DELETE"; + Requests[2083].Request.Path = "/subscriptions/5f33a9cd-e7c6-/resourcegroups/26e29525-aac1-4ae/providers/Microsoft.Subscriptions.Admin/plans/26125"; + Requests[2084] = new DefaultHttpContext(); + Requests[2084].RequestServices = CreateServices(); + Requests[2084].Request.Method = "PUT"; + Requests[2084].Request.Path = "/subscriptions/79a27865-b6fa-/resourcegroups/0d19d87c-0016-4d7/providers/Microsoft.Subscriptions.Admin/plans/a8add"; + Requests[2085] = new DefaultHttpContext(); + Requests[2085].RequestServices = CreateServices(); + Requests[2085].Request.Method = "GET"; + Requests[2085].Request.Path = "/subscriptions/ef369630-e308-/resourcegroups/12cdcdf1-65af-4d1/providers/Microsoft.Subscriptions.Admin/plans/04e85"; + Requests[2086] = new DefaultHttpContext(); + Requests[2086].RequestServices = CreateServices(); + Requests[2086].Request.Method = "PUT"; + Requests[2086].Request.Path = "/subscriptions/452a6792-dabe-/resourceGroups/f265bb8e-73c1-41b/providers/Microsoft.TimeSeriesInsights/environments/7db98a1a-d0ac-4"; + Requests[2087] = new DefaultHttpContext(); + Requests[2087].RequestServices = CreateServices(); + Requests[2087].Request.Method = "GET"; + Requests[2087].Request.Path = "/subscriptions/1ec13664-07ec-/resourceGroups/610e69a6-6c5f-477/providers/Microsoft.TimeSeriesInsights/environments/06caecf4-ecc2-4"; + Requests[2088] = new DefaultHttpContext(); + Requests[2088].RequestServices = CreateServices(); + Requests[2088].Request.Method = "PATCH"; + Requests[2088].Request.Path = "/subscriptions/394044d3-4901-/resourceGroups/630c0ffb-4b8d-436/providers/Microsoft.TimeSeriesInsights/environments/0b687740-f687-4"; + Requests[2089] = new DefaultHttpContext(); + Requests[2089].RequestServices = CreateServices(); + Requests[2089].Request.Method = "DELETE"; + Requests[2089].Request.Path = "/subscriptions/f14edb5d-138e-/resourceGroups/df89dfd1-b545-448/providers/Microsoft.TimeSeriesInsights/environments/9959f1df-8c8d-4"; + Requests[2090] = new DefaultHttpContext(); + Requests[2090].RequestServices = CreateServices(); + Requests[2090].Request.Method = "GET"; + Requests[2090].Request.Path = "/subscriptions/7a2cafe7-db80-/resourcegroups/f48aa181-db38-421/providers/Microsoft.Update.Admin/updateLocations/63241c8f-82e8-"; + Requests[2091] = new DefaultHttpContext(); + Requests[2091].RequestServices = CreateServices(); + Requests[2091].Request.Method = "PUT"; + Requests[2091].Request.Path = "/subscriptions/f2ecc803-0695-/resourcegroups/5dd7bfe7-f6ca-47e/providers/microsoft.visualstudio/account/24ceab5d-a94"; + Requests[2092] = new DefaultHttpContext(); + Requests[2092].RequestServices = CreateServices(); + Requests[2092].Request.Method = "DELETE"; + Requests[2092].Request.Path = "/subscriptions/acda2408-3669-/resourcegroups/5c424abd-b0bf-4a9/providers/microsoft.visualstudio/account/d3db6f90-fc5"; + Requests[2093] = new DefaultHttpContext(); + Requests[2093].RequestServices = CreateServices(); + Requests[2093].Request.Method = "GET"; + Requests[2093].Request.Path = "/subscriptions/36111485-bc7a-/resourcegroups/3d70ce0a-0f18-4d0/providers/microsoft.visualstudio/account/4c84e41a-319"; + Requests[2094] = new DefaultHttpContext(); + Requests[2094].RequestServices = CreateServices(); + Requests[2094].Request.Method = "DELETE"; + Requests[2094].Request.Path = "/subscriptions/282c27f4-2dbd-/resourceGroups/de60ab31-5f27-483/providers/Microsoft.Web/certificates/39c0d"; + Requests[2095] = new DefaultHttpContext(); + Requests[2095].RequestServices = CreateServices(); + Requests[2095].Request.Method = "PUT"; + Requests[2095].Request.Path = "/subscriptions/70946b2d-cf82-/resourceGroups/34e7fdfd-ba3b-4be/providers/Microsoft.Web/certificates/ee5d7"; + Requests[2096] = new DefaultHttpContext(); + Requests[2096].RequestServices = CreateServices(); + Requests[2096].Request.Method = "GET"; + Requests[2096].Request.Path = "/subscriptions/4a34323a-163e-/resourceGroups/4754f8e6-6ed1-47f/providers/Microsoft.Web/certificates/0d490"; + Requests[2097] = new DefaultHttpContext(); + Requests[2097].RequestServices = CreateServices(); + Requests[2097].Request.Method = "PATCH"; + Requests[2097].Request.Path = "/subscriptions/4a12a56f-d664-/resourceGroups/f11985de-bd6b-4d4/providers/Microsoft.Web/certificates/ce5b4"; + Requests[2098] = new DefaultHttpContext(); + Requests[2098].RequestServices = CreateServices(); + Requests[2098].Request.Method = "DELETE"; + Requests[2098].Request.Path = "/subscriptions/cfefd79e-3c65-/resourceGroups/3e3077b3-0eaf-413/providers/Microsoft.Web/classicMobileServices/2513e"; + Requests[2099] = new DefaultHttpContext(); + Requests[2099].RequestServices = CreateServices(); + Requests[2099].Request.Method = "GET"; + Requests[2099].Request.Path = "/subscriptions/20e1b9cb-bf32-/resourceGroups/388786fe-96fd-488/providers/Microsoft.Web/classicMobileServices/81015"; + Requests[2100] = new DefaultHttpContext(); + Requests[2100].RequestServices = CreateServices(); + Requests[2100].Request.Method = "GET"; + Requests[2100].Request.Path = "/subscriptions/61c889c3-0388-/resourceGroups/eb0f32b9-d89c-423/providers/Microsoft.Web/connectionGateways/6e40bd3f-02bb-4420-93"; + Requests[2101] = new DefaultHttpContext(); + Requests[2101].RequestServices = CreateServices(); + Requests[2101].Request.Method = "PATCH"; + Requests[2101].Request.Path = "/subscriptions/9880b942-7c49-/resourceGroups/956bcd5f-3983-45f/providers/Microsoft.Web/connectionGateways/e91a2b73-82f4-4363-a5"; + Requests[2102] = new DefaultHttpContext(); + Requests[2102].RequestServices = CreateServices(); + Requests[2102].Request.Method = "PUT"; + Requests[2102].Request.Path = "/subscriptions/c4e7642b-8521-/resourceGroups/fe4c6a56-de57-436/providers/Microsoft.Web/connectionGateways/0f354ea4-a673-4da1-a5"; + Requests[2103] = new DefaultHttpContext(); + Requests[2103].RequestServices = CreateServices(); + Requests[2103].Request.Method = "DELETE"; + Requests[2103].Request.Path = "/subscriptions/423fd8f4-62cc-/resourceGroups/7b4d5b81-f255-406/providers/Microsoft.Web/connectionGateways/79a41ec5-4f3f-4771-b5"; + Requests[2104] = new DefaultHttpContext(); + Requests[2104].RequestServices = CreateServices(); + Requests[2104].Request.Method = "PUT"; + Requests[2104].Request.Path = "/subscriptions/61d5e19e-c9fb-/resourceGroups/312773e7-d9c6-4b9/providers/Microsoft.Web/connections/aad4751d-15ca-"; + Requests[2105] = new DefaultHttpContext(); + Requests[2105].RequestServices = CreateServices(); + Requests[2105].Request.Method = "GET"; + Requests[2105].Request.Path = "/subscriptions/6ef70cb7-7b6b-/resourceGroups/b56a675e-fa58-469/providers/Microsoft.Web/connections/3aa0b6cf-b508-"; + Requests[2106] = new DefaultHttpContext(); + Requests[2106].RequestServices = CreateServices(); + Requests[2106].Request.Method = "PATCH"; + Requests[2106].Request.Path = "/subscriptions/73184159-1a6c-/resourceGroups/799783b2-e40e-4fd/providers/Microsoft.Web/connections/e5b4151b-6bc3-"; + Requests[2107] = new DefaultHttpContext(); + Requests[2107].RequestServices = CreateServices(); + Requests[2107].Request.Method = "DELETE"; + Requests[2107].Request.Path = "/subscriptions/02d3cf8f-9d51-/resourceGroups/0c8edcbf-efb6-499/providers/Microsoft.Web/connections/f08c1df1-3ea2-"; + Requests[2108] = new DefaultHttpContext(); + Requests[2108].RequestServices = CreateServices(); + Requests[2108].Request.Method = "PATCH"; + Requests[2108].Request.Path = "/subscriptions/df71b071-d9c2-/resourceGroups/9127343c-a8aa-48d/providers/Microsoft.Web/csrs/61962"; + Requests[2109] = new DefaultHttpContext(); + Requests[2109].RequestServices = CreateServices(); + Requests[2109].Request.Method = "PUT"; + Requests[2109].Request.Path = "/subscriptions/32f57d57-15e1-/resourceGroups/ca03c2ec-cbd7-412/providers/Microsoft.Web/csrs/5d3e4"; + Requests[2110] = new DefaultHttpContext(); + Requests[2110].RequestServices = CreateServices(); + Requests[2110].Request.Method = "GET"; + Requests[2110].Request.Path = "/subscriptions/e0f5ff82-2e57-/resourceGroups/f88277a8-b3b8-4d6/providers/Microsoft.Web/csrs/ae7e6"; + Requests[2111] = new DefaultHttpContext(); + Requests[2111].RequestServices = CreateServices(); + Requests[2111].Request.Method = "DELETE"; + Requests[2111].Request.Path = "/subscriptions/e647156b-6fbf-/resourceGroups/283bc9ce-c39b-4cb/providers/Microsoft.Web/csrs/0456b"; + Requests[2112] = new DefaultHttpContext(); + Requests[2112].RequestServices = CreateServices(); + Requests[2112].Request.Method = "PATCH"; + Requests[2112].Request.Path = "/subscriptions/60cfb2f4-154a-/resourceGroups/90078f5f-d38f-454/providers/Microsoft.Web/customApis/b0e0a75"; + Requests[2113] = new DefaultHttpContext(); + Requests[2113].RequestServices = CreateServices(); + Requests[2113].Request.Method = "GET"; + Requests[2113].Request.Path = "/subscriptions/f157f08d-a749-/resourceGroups/12fd2382-debe-46e/providers/Microsoft.Web/customApis/ddf97ff"; + Requests[2114] = new DefaultHttpContext(); + Requests[2114].RequestServices = CreateServices(); + Requests[2114].Request.Method = "PUT"; + Requests[2114].Request.Path = "/subscriptions/9640a146-5d06-/resourceGroups/971542d7-cfff-4df/providers/Microsoft.Web/customApis/557c398"; + Requests[2115] = new DefaultHttpContext(); + Requests[2115].RequestServices = CreateServices(); + Requests[2115].Request.Method = "DELETE"; + Requests[2115].Request.Path = "/subscriptions/a6f1893c-d898-/resourceGroups/316e4191-06f5-42c/providers/Microsoft.Web/customApis/8b10da4"; + Requests[2116] = new DefaultHttpContext(); + Requests[2116].RequestServices = CreateServices(); + Requests[2116].Request.Method = "GET"; + Requests[2116].Request.Path = "/subscriptions/0749e5ae-4729-/resourceGroups/207563ac-a4cc-4c1/providers/Microsoft.Web/hostingEnvironments/a3007"; + Requests[2117] = new DefaultHttpContext(); + Requests[2117].RequestServices = CreateServices(); + Requests[2117].Request.Method = "PATCH"; + Requests[2117].Request.Path = "/subscriptions/588d2720-08f3-/resourceGroups/e7dcea5f-e680-43d/providers/Microsoft.Web/hostingEnvironments/11628"; + Requests[2118] = new DefaultHttpContext(); + Requests[2118].RequestServices = CreateServices(); + Requests[2118].Request.Method = "DELETE"; + Requests[2118].Request.Path = "/subscriptions/9577002a-2f94-/resourceGroups/aba6b12f-18f4-4af/providers/Microsoft.Web/hostingEnvironments/47965"; + Requests[2119] = new DefaultHttpContext(); + Requests[2119].RequestServices = CreateServices(); + Requests[2119].Request.Method = "PUT"; + Requests[2119].Request.Path = "/subscriptions/bf759da2-0835-/resourceGroups/84f04cb7-277d-479/providers/Microsoft.Web/hostingEnvironments/2b1f7"; + Requests[2120] = new DefaultHttpContext(); + Requests[2120].RequestServices = CreateServices(); + Requests[2120].Request.Method = "PUT"; + Requests[2120].Request.Path = "/subscriptions/de5f8919-764e-/resourceGroups/0ea84275-47f9-495/providers/Microsoft.Web/managedHostingEnvironments/82577"; + Requests[2121] = new DefaultHttpContext(); + Requests[2121].RequestServices = CreateServices(); + Requests[2121].Request.Method = "GET"; + Requests[2121].Request.Path = "/subscriptions/85e06114-0642-/resourceGroups/c54d3265-92a7-47d/providers/Microsoft.Web/managedHostingEnvironments/a7920"; + Requests[2122] = new DefaultHttpContext(); + Requests[2122].RequestServices = CreateServices(); + Requests[2122].Request.Method = "DELETE"; + Requests[2122].Request.Path = "/subscriptions/af1e3dde-1b74-/resourceGroups/a89b2e91-1610-42d/providers/Microsoft.Web/managedHostingEnvironments/b0f54"; + Requests[2123] = new DefaultHttpContext(); + Requests[2123].RequestServices = CreateServices(); + Requests[2123].Request.Method = "GET"; + Requests[2123].Request.Path = "/subscriptions/680f97f7-76f0-/resourceGroups/a4986a47-9058-4d0/providers/Microsoft.Web/serverfarms/93d28"; + Requests[2124] = new DefaultHttpContext(); + Requests[2124].RequestServices = CreateServices(); + Requests[2124].Request.Method = "PUT"; + Requests[2124].Request.Path = "/subscriptions/dbe7d5aa-1320-/resourceGroups/26bfeac1-3f93-44f/providers/Microsoft.Web/serverfarms/9f2b7"; + Requests[2125] = new DefaultHttpContext(); + Requests[2125].RequestServices = CreateServices(); + Requests[2125].Request.Method = "DELETE"; + Requests[2125].Request.Path = "/subscriptions/23296a6e-906c-/resourceGroups/e7f9a2ae-9081-41f/providers/Microsoft.Web/serverfarms/1ab13"; + Requests[2126] = new DefaultHttpContext(); + Requests[2126].RequestServices = CreateServices(); + Requests[2126].Request.Method = "PATCH"; + Requests[2126].Request.Path = "/subscriptions/145a18e0-1e70-/resourceGroups/dcc0f15e-c2aa-46b/providers/Microsoft.Web/serverfarms/39b91"; + Requests[2127] = new DefaultHttpContext(); + Requests[2127].RequestServices = CreateServices(); + Requests[2127].Request.Method = "DELETE"; + Requests[2127].Request.Path = "/subscriptions/228778f3-1939-/resourceGroups/c1b991d4-5e98-4ca/providers/Microsoft.Web/sites/de1c2"; + Requests[2128] = new DefaultHttpContext(); + Requests[2128].RequestServices = CreateServices(); + Requests[2128].Request.Method = "GET"; + Requests[2128].Request.Path = "/subscriptions/3c5f1a56-940d-/resourceGroups/8664f154-3f60-495/providers/Microsoft.Web/sites/933d9"; + Requests[2129] = new DefaultHttpContext(); + Requests[2129].RequestServices = CreateServices(); + Requests[2129].Request.Method = "PUT"; + Requests[2129].Request.Path = "/subscriptions/ef063102-6f9e-/resourceGroups/62c27145-37da-4a9/providers/Microsoft.Web/sites/d12ad"; + Requests[2130] = new DefaultHttpContext(); + Requests[2130].RequestServices = CreateServices(); + Requests[2130].Request.Method = "PATCH"; + Requests[2130].Request.Path = "/subscriptions/aa9f1169-5f1f-/resourceGroups/2a7beb7d-b62c-458/providers/Microsoft.Web/sites/cc474"; + Requests[2131] = new DefaultHttpContext(); + Requests[2131].RequestServices = CreateServices(); + Requests[2131].Request.Method = "POST"; + Requests[2131].Request.Path = "/providers/786036e1-90ac-421e-a6f7-4/managementGroups/ebdf33c9-4d81-4255-/providers/Microsoft.PolicyInsights/policyEvents/86fbbc36-78f1-48a7-8/queryResults"; + Requests[2132] = new DefaultHttpContext(); + Requests[2132].RequestServices = CreateServices(); + Requests[2132].Request.Method = "POST"; + Requests[2132].Request.Path = "/providers/50f5e2b6-d36e-4018-b1e6-b/managementGroups/174a0483-44f8-4136-/providers/Microsoft.PolicyInsights/policyStates/e1280a8f-4a43-4ffb-b/queryResults"; + Requests[2133] = new DefaultHttpContext(); + Requests[2133].RequestServices = CreateServices(); + Requests[2133].Request.Method = "POST"; + Requests[2133].Request.Path = "/providers/9c6da069-9de9-407f-9fce-8/managementGroups/aff76148-9110-4af8-/providers/Microsoft.PolicyInsights/policyStates/68e723a7-2d7a-47b2-a4a6-7be/summarize"; + Requests[2134] = new DefaultHttpContext(); + Requests[2134].RequestServices = CreateServices(); + Requests[2134].Request.Method = "GET"; + Requests[2134].Request.Path = "/subscriptions/546eeb6d-d44a-/resourceGroup/d64cfaa0-5211-48d/providers/Microsoft.MachineLearningServices/workspaces/f9b47726-965a/computes"; + Requests[2135] = new DefaultHttpContext(); + Requests[2135].RequestServices = CreateServices(); + Requests[2135].Request.Method = "POST"; + Requests[2135].Request.Path = "/subscriptions/c2f5829b-db49-/resourceGroups/0ebab4a3-/providers/Microsoft.DataMigration/services/69ce9b9d-1f/checkNameAvailability"; + Requests[2136] = new DefaultHttpContext(); + Requests[2136].RequestServices = CreateServices(); + Requests[2136].Request.Method = "POST"; + Requests[2136].Request.Path = "/subscriptions/ee1cfeb5-2ec9-/resourceGroups/1e0bed52-/providers/Microsoft.DataMigration/services/d2bfd51e-6a/checkStatus"; + Requests[2137] = new DefaultHttpContext(); + Requests[2137].RequestServices = CreateServices(); + Requests[2137].Request.Method = "GET"; + Requests[2137].Request.Path = "/subscriptions/3e5bb21c-a68d-/resourceGroups/1a39618d-/providers/Microsoft.DataMigration/services/26153172-57/projects"; + Requests[2138] = new DefaultHttpContext(); + Requests[2138].RequestServices = CreateServices(); + Requests[2138].Request.Method = "GET"; + Requests[2138].Request.Path = "/subscriptions/bfb7845b-2fc8-/resourceGroups/62fc002a-/providers/Microsoft.DataMigration/services/54a61426-5e/skus"; + Requests[2139] = new DefaultHttpContext(); + Requests[2139].RequestServices = CreateServices(); + Requests[2139].Request.Method = "POST"; + Requests[2139].Request.Path = "/subscriptions/f6003a14-088b-/resourceGroups/55434389-/providers/Microsoft.DataMigration/services/da79695f-cf/start"; + Requests[2140] = new DefaultHttpContext(); + Requests[2140].RequestServices = CreateServices(); + Requests[2140].Request.Method = "POST"; + Requests[2140].Request.Path = "/subscriptions/5c7d59bc-78b2-/resourceGroups/2998c8f1-/providers/Microsoft.DataMigration/services/55bb0aad-77/stop"; + Requests[2141] = new DefaultHttpContext(); + Requests[2141].RequestServices = CreateServices(); + Requests[2141].Request.Method = "GET"; + Requests[2141].Request.Path = "/subscriptions/e0be029d-4b8a-/resourcegroups/24e37403-e898/providers/Microsoft.AzureBridge.Admin/activations/89589257-218a-/downloadedProducts"; + Requests[2142] = new DefaultHttpContext(); + Requests[2142].RequestServices = CreateServices(); + Requests[2142].Request.Method = "GET"; + Requests[2142].Request.Path = "/subscriptions/8b506644-cd45-/resourcegroups/985f22a1-4843/providers/Microsoft.AzureBridge.Admin/activations/f9d8a661-79b3-/products"; + Requests[2143] = new DefaultHttpContext(); + Requests[2143].RequestServices = CreateServices(); + Requests[2143].Request.Method = "GET"; + Requests[2143].Request.Path = "/subscriptions/bf91b3d0-8b84-/resourceGroups/a4e66f9b-d990/providers/Microsoft.AzureStack/registrations/c2b1ab1d-66da-42/customerSubscriptions"; + Requests[2144] = new DefaultHttpContext(); + Requests[2144].RequestServices = CreateServices(); + Requests[2144].Request.Method = "POST"; + Requests[2144].Request.Path = "/subscriptions/6755e322-b656-/resourceGroups/4e19fc4b-30f9/providers/Microsoft.AzureStack/registrations/34acbe36-01ba-48/getactivationkey"; + Requests[2145] = new DefaultHttpContext(); + Requests[2145].RequestServices = CreateServices(); + Requests[2145].Request.Method = "GET"; + Requests[2145].Request.Path = "/subscriptions/7712f678-cf27-/resourceGroups/c76e2be9-c93d/providers/Microsoft.AzureStack/registrations/3955d2e8-9e9e-4a/products"; + Requests[2146] = new DefaultHttpContext(); + Requests[2146].RequestServices = CreateServices(); + Requests[2146].Request.Method = "POST"; + Requests[2146].Request.Path = "/subscriptions/6c66ac24-04ba-/resourceGroups/481f403d-3136-40c/providers/Microsoft.AnalysisServices/servers/8685762c-7/dissociateGateway"; + Requests[2147] = new DefaultHttpContext(); + Requests[2147].RequestServices = CreateServices(); + Requests[2147].Request.Method = "POST"; + Requests[2147].Request.Path = "/subscriptions/f7723d61-cc13-/resourceGroups/e511c4a0-f1f2-42a/providers/Microsoft.AnalysisServices/servers/ddf4d577-1/listGatewayStatus"; + Requests[2148] = new DefaultHttpContext(); + Requests[2148].RequestServices = CreateServices(); + Requests[2148].Request.Method = "POST"; + Requests[2148].Request.Path = "/subscriptions/082d98f4-7da7-/resourceGroups/73f39f47-a32a-49b/providers/Microsoft.AnalysisServices/servers/e3699d76-1/resume"; + Requests[2149] = new DefaultHttpContext(); + Requests[2149].RequestServices = CreateServices(); + Requests[2149].Request.Method = "GET"; + Requests[2149].Request.Path = "/subscriptions/548ece3b-281c-/resourceGroups/5b7fa050-39e7-4ee/providers/Microsoft.AnalysisServices/servers/0cbf63b1-7/skus"; + Requests[2150] = new DefaultHttpContext(); + Requests[2150].RequestServices = CreateServices(); + Requests[2150].Request.Method = "POST"; + Requests[2150].Request.Path = "/subscriptions/bbaa6dc3-3817-/resourceGroups/c2318e92-3df1-478/providers/Microsoft.AnalysisServices/servers/312e248b-5/suspend"; + Requests[2151] = new DefaultHttpContext(); + Requests[2151].RequestServices = CreateServices(); + Requests[2151].Request.Method = "GET"; + Requests[2151].Request.Path = "/subscriptions/79e9b621-47a8-/resourceGroups/da3a4733-203b-463/providers/Microsoft.ApiManagement/service/92f0dba6-d0/apis"; + Requests[2152] = new DefaultHttpContext(); + Requests[2152].RequestServices = CreateServices(); + Requests[2152].Request.Method = "GET"; + Requests[2152].Request.Path = "/subscriptions/5fd87b27-dcd8-/resourceGroups/c790c7fa-85d5-456/providers/Microsoft.ApiManagement/service/82de9bae-43/apisByTags"; + Requests[2153] = new DefaultHttpContext(); + Requests[2153].RequestServices = CreateServices(); + Requests[2153].Request.Method = "GET"; + Requests[2153].Request.Path = "/subscriptions/074df882-5c47-/resourceGroups/68fa5436-b61b-45d/providers/Microsoft.ApiManagement/service/25d7d7ce-ec/api-version-sets"; + Requests[2154] = new DefaultHttpContext(); + Requests[2154].RequestServices = CreateServices(); + Requests[2154].Request.Method = "PARAMETERS"; + Requests[2154].Request.Path = "/subscriptions/e58bf9ef-17ae-/resourceGroups/2a945e6b-99b6-42a/providers/Microsoft.ApiManagement/service/33412b10-1a/api-version-sets"; + Requests[2155] = new DefaultHttpContext(); + Requests[2155].RequestServices = CreateServices(); + Requests[2155].Request.Method = "POST"; + Requests[2155].Request.Path = "/subscriptions/c6a4affb-51ca-/resourceGroups/a672b2a7-a34c-45a/providers/Microsoft.ApiManagement/service/24f5f8db-9f/applynetworkconfigurationupdates"; + Requests[2156] = new DefaultHttpContext(); + Requests[2156].RequestServices = CreateServices(); + Requests[2156].Request.Method = "GET"; + Requests[2156].Request.Path = "/subscriptions/fff476a7-7927-/resourceGroups/5c9b542c-2759-4d9/providers/Microsoft.ApiManagement/service/74926315-4e/authorizationServers"; + Requests[2157] = new DefaultHttpContext(); + Requests[2157].RequestServices = CreateServices(); + Requests[2157].Request.Method = "GET"; + Requests[2157].Request.Path = "/subscriptions/3307efb4-d50f-/resourceGroups/8b2183d0-9234-470/providers/Microsoft.ApiManagement/service/c389a637-e1/backends"; + Requests[2158] = new DefaultHttpContext(); + Requests[2158].RequestServices = CreateServices(); + Requests[2158].Request.Method = "POST"; + Requests[2158].Request.Path = "/subscriptions/5c590551-8f9e-/resourceGroups/e0f349a4-7caa-402/providers/Microsoft.ApiManagement/service/13a6553d-9d/backup"; + Requests[2159] = new DefaultHttpContext(); + Requests[2159].RequestServices = CreateServices(); + Requests[2159].Request.Method = "GET"; + Requests[2159].Request.Path = "/subscriptions/a7182f44-8c6e-/resourceGroups/d44c665b-9aa7-407/providers/Microsoft.ApiManagement/service/b2935979-c9/certificates"; + Requests[2160] = new DefaultHttpContext(); + Requests[2160].RequestServices = CreateServices(); + Requests[2160].Request.Method = "GET"; + Requests[2160].Request.Path = "/subscriptions/cf7dee6c-7123-/resourceGroups/509b1fae-ceac-4f2/providers/Microsoft.ApiManagement/service/45090693-b6/diagnostics"; + Requests[2161] = new DefaultHttpContext(); + Requests[2161].RequestServices = CreateServices(); + Requests[2161].Request.Method = "GET"; + Requests[2161].Request.Path = "/subscriptions/11d399bd-7405-/resourceGroups/f2ceb036-75e8-41f/providers/Microsoft.ApiManagement/service/905a3208-15/getssotoken"; + Requests[2162] = new DefaultHttpContext(); + Requests[2162].RequestServices = CreateServices(); + Requests[2162].Request.Method = "POST"; + Requests[2162].Request.Path = "/subscriptions/8b3e54cc-70c7-/resourceGroups/953eaeb0-4f9d-4e6/providers/Microsoft.ApiManagement/service/d053fc29-69/getssotoken"; + Requests[2163] = new DefaultHttpContext(); + Requests[2163].RequestServices = CreateServices(); + Requests[2163].Request.Method = "GET"; + Requests[2163].Request.Path = "/subscriptions/6efec029-8e85-/resourceGroups/33623941-905e-4e8/providers/Microsoft.ApiManagement/service/9c37b84b-73/groups"; + Requests[2164] = new DefaultHttpContext(); + Requests[2164].RequestServices = CreateServices(); + Requests[2164].Request.Method = "GET"; + Requests[2164].Request.Path = "/subscriptions/5d88ccd5-4675-/resourceGroups/e425d834-aa3a-453/providers/Microsoft.ApiManagement/service/135b47bf-4d/identityProviders"; + Requests[2165] = new DefaultHttpContext(); + Requests[2165].RequestServices = CreateServices(); + Requests[2165].Request.Method = "GET"; + Requests[2165].Request.Path = "/subscriptions/3a742a08-e4d2-/resourceGroups/fcfd37dd-2dd1-4fd/providers/Microsoft.ApiManagement/service/be80c1b8-c6/issues"; + Requests[2166] = new DefaultHttpContext(); + Requests[2166].RequestServices = CreateServices(); + Requests[2166].Request.Method = "GET"; + Requests[2166].Request.Path = "/subscriptions/3ba82b05-e0fd-/resourceGroups/5143189f-45cf-447/providers/Microsoft.ApiManagement/service/3a86d814-a0/loggers"; + Requests[2167] = new DefaultHttpContext(); + Requests[2167].RequestServices = CreateServices(); + Requests[2167].Request.Method = "POST"; + Requests[2167].Request.Path = "/subscriptions/7d3eac0c-692e-/resourceGroups/c1fa55f5-5569-431/providers/Microsoft.ApiManagement/service/66722130-63/managedeployments"; + Requests[2168] = new DefaultHttpContext(); + Requests[2168].RequestServices = CreateServices(); + Requests[2168].Request.Method = "GET"; + Requests[2168].Request.Path = "/subscriptions/c0d7d417-36cb-/resourceGroups/d946078c-ea21-45a/providers/Microsoft.ApiManagement/service/b810f00e-70/networkstatus"; + Requests[2169] = new DefaultHttpContext(); + Requests[2169].RequestServices = CreateServices(); + Requests[2169].Request.Method = "GET"; + Requests[2169].Request.Path = "/subscriptions/45819142-2d37-/resourceGroups/60d24ee6-36e1-42e/providers/Microsoft.ApiManagement/service/03a425f3-1c/notifications"; + Requests[2170] = new DefaultHttpContext(); + Requests[2170].RequestServices = CreateServices(); + Requests[2170].Request.Method = "GET"; + Requests[2170].Request.Path = "/subscriptions/e9ebfd3e-927b-/resourceGroups/a7cd55a9-f9cf-464/providers/Microsoft.ApiManagement/service/922c12c3-cf/openidConnectProviders"; + Requests[2171] = new DefaultHttpContext(); + Requests[2171].RequestServices = CreateServices(); + Requests[2171].Request.Method = "GET"; + Requests[2171].Request.Path = "/subscriptions/5cb8becc-3bdb-/resourceGroups/118579e3-406f-4ee/providers/Microsoft.ApiManagement/service/25f48878-69/policies"; + Requests[2172] = new DefaultHttpContext(); + Requests[2172].RequestServices = CreateServices(); + Requests[2172].Request.Method = "GET"; + Requests[2172].Request.Path = "/subscriptions/aa033de5-d7fd-/resourceGroups/fcc25f11-b244-443/providers/Microsoft.ApiManagement/service/1e97d779-22/policySnippets"; + Requests[2173] = new DefaultHttpContext(); + Requests[2173].RequestServices = CreateServices(); + Requests[2173].Request.Method = "GET"; + Requests[2173].Request.Path = "/subscriptions/3f617d01-4553-/resourceGroups/e03f9103-5b94-477/providers/Microsoft.ApiManagement/service/e25d6db8-6f/products"; + Requests[2174] = new DefaultHttpContext(); + Requests[2174].RequestServices = CreateServices(); + Requests[2174].Request.Method = "GET"; + Requests[2174].Request.Path = "/subscriptions/0d1ab4cb-cd3f-/resourceGroups/f05c3c8b-82a7-408/providers/Microsoft.ApiManagement/service/1fcdf6f9-5a/properties"; + Requests[2175] = new DefaultHttpContext(); + Requests[2175].RequestServices = CreateServices(); + Requests[2175].Request.Method = "GET"; + Requests[2175].Request.Path = "/subscriptions/acaf2919-93af-/resourceGroups/e02e11e4-d7eb-49c/providers/Microsoft.ApiManagement/service/6ad0942d-52/regions"; + Requests[2176] = new DefaultHttpContext(); + Requests[2176].RequestServices = CreateServices(); + Requests[2176].Request.Method = "POST"; + Requests[2176].Request.Path = "/subscriptions/c184bf7b-0770-/resourceGroups/26417432-555e-4ec/providers/Microsoft.ApiManagement/service/8da1df4e-b0/restore"; + Requests[2177] = new DefaultHttpContext(); + Requests[2177].RequestServices = CreateServices(); + Requests[2177].Request.Method = "GET"; + Requests[2177].Request.Path = "/subscriptions/1da43ca2-a4b2-/resourceGroups/3a29b888-a2a2-451/providers/Microsoft.ApiManagement/service/d8641e4b-67/subscriptions"; + Requests[2178] = new DefaultHttpContext(); + Requests[2178].RequestServices = CreateServices(); + Requests[2178].Request.Method = "GET"; + Requests[2178].Request.Path = "/subscriptions/1303946a-9127-/resourceGroups/917471f5-5f4c-4a8/providers/Microsoft.ApiManagement/service/4c5c9f04-28/tagResources"; + Requests[2179] = new DefaultHttpContext(); + Requests[2179].RequestServices = CreateServices(); + Requests[2179].Request.Method = "GET"; + Requests[2179].Request.Path = "/subscriptions/3aa4c386-930e-/resourceGroups/cbb5685e-d1df-4b6/providers/Microsoft.ApiManagement/service/2e197987-b9/tags"; + Requests[2180] = new DefaultHttpContext(); + Requests[2180].RequestServices = CreateServices(); + Requests[2180].Request.Method = "GET"; + Requests[2180].Request.Path = "/subscriptions/cfb0e867-97e8-/resourceGroups/08c0fccc-e2bd-490/providers/Microsoft.ApiManagement/service/222b4270-ba/templates"; + Requests[2181] = new DefaultHttpContext(); + Requests[2181].RequestServices = CreateServices(); + Requests[2181].Request.Method = "POST"; + Requests[2181].Request.Path = "/subscriptions/bc963bf2-1824-/resourceGroups/61512d3f-853f-4fe/providers/Microsoft.ApiManagement/service/b96162a2-0c/updatecertificate"; + Requests[2182] = new DefaultHttpContext(); + Requests[2182].RequestServices = CreateServices(); + Requests[2182].Request.Method = "POST"; + Requests[2182].Request.Path = "/subscriptions/773ec69e-0cbb-/resourceGroups/158be695-6f3d-4db/providers/Microsoft.ApiManagement/service/828784d6-dc/updatehostname"; + Requests[2183] = new DefaultHttpContext(); + Requests[2183].RequestServices = CreateServices(); + Requests[2183].Request.Method = "POST"; + Requests[2183].Request.Path = "/subscriptions/d2149b59-7da3-/resourceGroups/ba998004-b11b-495/providers/Microsoft.ApiManagement/service/65d1c42b-55/uploadcertificate"; + Requests[2184] = new DefaultHttpContext(); + Requests[2184].RequestServices = CreateServices(); + Requests[2184].Request.Method = "GET"; + Requests[2184].Request.Path = "/subscriptions/82f7afe1-e5dc-/resourceGroups/569643a7-90b5-4f9/providers/Microsoft.ApiManagement/service/dd931498-db/users"; + Requests[2185] = new DefaultHttpContext(); + Requests[2185].RequestServices = CreateServices(); + Requests[2185].Request.Method = "GET"; + Requests[2185].Request.Path = "/subscriptions/394aefbb-d491-/resourceGroups/000e8582-1341-4c2/providers/Microsoft.Automation/automationAccounts/22b3ccdf-17d5-4c33-88/agentRegistrationInformation"; + Requests[2186] = new DefaultHttpContext(); + Requests[2186].RequestServices = CreateServices(); + Requests[2186].Request.Method = "GET"; + Requests[2186].Request.Path = "/subscriptions/a717b598-c399-/resourceGroups/0bd5def5-4c02-44a/providers/Microsoft.Automation/automationAccounts/b67a6ce6-bed2-43f3-b3/certificates"; + Requests[2187] = new DefaultHttpContext(); + Requests[2187].RequestServices = CreateServices(); + Requests[2187].Request.Method = "GET"; + Requests[2187].Request.Path = "/subscriptions/d5b66373-ddb9-/resourceGroups/bec50b00-601f-428/providers/Microsoft.Automation/automationAccounts/979717f7-b8bf-4014-95/compilationjobs"; + Requests[2188] = new DefaultHttpContext(); + Requests[2188].RequestServices = CreateServices(); + Requests[2188].Request.Method = "GET"; + Requests[2188].Request.Path = "/subscriptions/ae303810-0b73-/resourceGroups/8f698b51-ccdd-4b6/providers/Microsoft.Automation/automationAccounts/2acccea8-6a7f-4669-a4/configurations"; + Requests[2189] = new DefaultHttpContext(); + Requests[2189].RequestServices = CreateServices(); + Requests[2189].Request.Method = "GET"; + Requests[2189].Request.Path = "/subscriptions/4ec55c26-b1d6-/resourceGroups/49faff59-417f-417/providers/Microsoft.Automation/automationAccounts/6ccd8b32-96c9-4361-a6/connections"; + Requests[2190] = new DefaultHttpContext(); + Requests[2190].RequestServices = CreateServices(); + Requests[2190].Request.Method = "GET"; + Requests[2190].Request.Path = "/subscriptions/b654e077-f048-/resourceGroups/056739ac-f3a2-4ac/providers/Microsoft.Automation/automationAccounts/1938b071-feef-4fe7-ba/connectionTypes"; + Requests[2191] = new DefaultHttpContext(); + Requests[2191].RequestServices = CreateServices(); + Requests[2191].Request.Method = "GET"; + Requests[2191].Request.Path = "/subscriptions/6b359fca-2fdf-/resourceGroups/f1912940-7b62-447/providers/Microsoft.Automation/automationAccounts/c80f4530-1d25-4e80-ac/credentials"; + Requests[2192] = new DefaultHttpContext(); + Requests[2192].RequestServices = CreateServices(); + Requests[2192].Request.Method = "GET"; + Requests[2192].Request.Path = "/subscriptions/f16d7c7b-e994-/resourceGroups/81838a8e-5a04-489/providers/Microsoft.Automation/automationAccounts/eed38165-0cb8-44a8-90/hybridRunbookWorkerGroups"; + Requests[2193] = new DefaultHttpContext(); + Requests[2193].RequestServices = CreateServices(); + Requests[2193].Request.Method = "GET"; + Requests[2193].Request.Path = "/subscriptions/51cdec3d-4b83-/resourceGroups/ef8d3a00-5d17-4c5/providers/Microsoft.Automation/automationAccounts/e014bc15-c899-4c18-9d/jobs"; + Requests[2194] = new DefaultHttpContext(); + Requests[2194].RequestServices = CreateServices(); + Requests[2194].Request.Method = "GET"; + Requests[2194].Request.Path = "/subscriptions/45144aef-62b0-/resourceGroups/ea0e1438-d1ad-415/providers/Microsoft.Automation/automationAccounts/39ee5f61-aa3c-49ba-9c/jobSchedules"; + Requests[2195] = new DefaultHttpContext(); + Requests[2195].RequestServices = CreateServices(); + Requests[2195].Request.Method = "GET"; + Requests[2195].Request.Path = "/subscriptions/f9afdebb-cc29-/resourceGroups/fed46d0e-2749-4ff/providers/Microsoft.Automation/automationAccounts/29211d86-a44f-4e98-b7/linkedWorkspace"; + Requests[2196] = new DefaultHttpContext(); + Requests[2196].RequestServices = CreateServices(); + Requests[2196].Request.Method = "POST"; + Requests[2196].Request.Path = "/subscriptions/2da7829f-7daa-/resourceGroups/88d60987-2e10-482/providers/Microsoft.Automation/automationAccounts/2843b12d-9054-4757-b8/listKeys"; + Requests[2197] = new DefaultHttpContext(); + Requests[2197].RequestServices = CreateServices(); + Requests[2197].Request.Method = "GET"; + Requests[2197].Request.Path = "/subscriptions/ddb854dc-2a3e-/resourceGroups/a477270f-a5ce-45b/providers/Microsoft.Automation/automationAccounts/5b9daac3-6e4e-4fa6-87/modules"; + Requests[2198] = new DefaultHttpContext(); + Requests[2198].RequestServices = CreateServices(); + Requests[2198].Request.Method = "GET"; + Requests[2198].Request.Path = "/subscriptions/7fe0912a-1d07-/resourceGroups/36a01180-eb95-455/providers/Microsoft.Automation/automationAccounts/dacc0a13-cad8-4bd7-aa/nodeConfigurations"; + Requests[2199] = new DefaultHttpContext(); + Requests[2199].RequestServices = CreateServices(); + Requests[2199].Request.Method = "GET"; + Requests[2199].Request.Path = "/subscriptions/3bf58515-713b-/resourceGroups/6cfb6a35-d079-478/providers/Microsoft.Automation/automationAccounts/bc6913c7-60fe-43a0-8f/nodes"; + Requests[2200] = new DefaultHttpContext(); + Requests[2200].RequestServices = CreateServices(); + Requests[2200].Request.Method = "GET"; + Requests[2200].Request.Path = "/subscriptions/aa10e874-1e71-/resourceGroups/1e12fbdf-9adf-40f/providers/Microsoft.Automation/automationAccounts/a217f667-916b-4f7d-b4/runbooks"; + Requests[2201] = new DefaultHttpContext(); + Requests[2201].RequestServices = CreateServices(); + Requests[2201].Request.Method = "GET"; + Requests[2201].Request.Path = "/subscriptions/4a6187d7-8801-/resourceGroups/9197cd87-4269-41f/providers/Microsoft.Automation/automationAccounts/a5bb823f-f0af-4d1b-af/schedules"; + Requests[2202] = new DefaultHttpContext(); + Requests[2202].RequestServices = CreateServices(); + Requests[2202].Request.Method = "GET"; + Requests[2202].Request.Path = "/subscriptions/a1607dc9-86c1-/resourceGroups/5358d542-3748-4dc/providers/Microsoft.Automation/automationAccounts/eb504eaa-8627-49ed-96/softwareUpdateConfigurationMachineRuns"; + Requests[2203] = new DefaultHttpContext(); + Requests[2203].RequestServices = CreateServices(); + Requests[2203].Request.Method = "GET"; + Requests[2203].Request.Path = "/subscriptions/13b3e3e5-896d-/resourceGroups/a0c7a981-7728-49a/providers/Microsoft.Automation/automationAccounts/5d71876b-b3c9-47e9-b8/softwareUpdateConfigurationRuns"; + Requests[2204] = new DefaultHttpContext(); + Requests[2204].RequestServices = CreateServices(); + Requests[2204].Request.Method = "GET"; + Requests[2204].Request.Path = "/subscriptions/0e4d8c3f-b199-/resourceGroups/d1d0d5d6-673f-45f/providers/Microsoft.Automation/automationAccounts/055c75fb-38f6-47cc-91/softwareUpdateConfigurations"; + Requests[2205] = new DefaultHttpContext(); + Requests[2205].RequestServices = CreateServices(); + Requests[2205].Request.Method = "GET"; + Requests[2205].Request.Path = "/subscriptions/0d888cdb-845a-/resourceGroups/21db1d7e-7680-42d/providers/Microsoft.Automation/automationAccounts/fedbb029-3f3c-4aee-b5/sourceControls"; + Requests[2206] = new DefaultHttpContext(); + Requests[2206].RequestServices = CreateServices(); + Requests[2206].Request.Method = "GET"; + Requests[2206].Request.Path = "/subscriptions/2936046c-f686-/resourceGroups/7b28e9e3-435f-43b/providers/Microsoft.Automation/automationAccounts/03e0ce39-7d1e-4d05-a2/statistics"; + Requests[2207] = new DefaultHttpContext(); + Requests[2207].RequestServices = CreateServices(); + Requests[2207].Request.Method = "GET"; + Requests[2207].Request.Path = "/subscriptions/438bfcf7-cc55-/resourceGroups/89c83ecc-dbd5-4c1/providers/Microsoft.Automation/automationAccounts/1ebc71ff-b330-4c42-ae/usages"; + Requests[2208] = new DefaultHttpContext(); + Requests[2208].RequestServices = CreateServices(); + Requests[2208].Request.Method = "GET"; + Requests[2208].Request.Path = "/subscriptions/4bbc3111-dc7a-/resourceGroups/26495b06-708f-4c3/providers/Microsoft.Automation/automationAccounts/435059bf-d730-4c3e-9c/variables"; + Requests[2209] = new DefaultHttpContext(); + Requests[2209].RequestServices = CreateServices(); + Requests[2209].Request.Method = "GET"; + Requests[2209].Request.Path = "/subscriptions/13021b83-9d5f-/resourceGroups/6fb15784-c821-439/providers/Microsoft.Automation/automationAccounts/d0054398-a695-4953-85/watchers"; + Requests[2210] = new DefaultHttpContext(); + Requests[2210].RequestServices = CreateServices(); + Requests[2210].Request.Method = "GET"; + Requests[2210].Request.Path = "/subscriptions/0f3ffe7d-cd46-/resourceGroups/58465396-4dea-40d/providers/Microsoft.Automation/automationAccounts/bc1ba2ac-196b-4aac-b1/webhooks"; + Requests[2211] = new DefaultHttpContext(); + Requests[2211].RequestServices = CreateServices(); + Requests[2211].Request.Method = "GET"; + Requests[2211].Request.Path = "/subscriptions/63e5c196-f383-/resourcegroups/2ce2de13-5644-4ba/providers/Microsoft.Backup.Admin/backupLocations/ef528a89/backups"; + Requests[2212] = new DefaultHttpContext(); + Requests[2212].RequestServices = CreateServices(); + Requests[2212].Request.Method = "POST"; + Requests[2212].Request.Path = "/subscriptions/78a1996d-14eb-/resourcegroups/ebe6d87e-6000-442/providers/Microsoft.Backup.Admin/backupLocations/5ac52176/createBackup"; + Requests[2213] = new DefaultHttpContext(); + Requests[2213].RequestServices = CreateServices(); + Requests[2213].Request.Method = "GET"; + Requests[2213].Request.Path = "/subscriptions/e6267cb2-3a55-/resourceGroups/dc217f7e-898a-4f7/providers/Microsoft.Batch/batchAccounts/513fcb36-1d/applications"; + Requests[2214] = new DefaultHttpContext(); + Requests[2214].RequestServices = CreateServices(); + Requests[2214].Request.Method = "GET"; + Requests[2214].Request.Path = "/subscriptions/8340a5ed-02fc-/resourceGroups/2aebc416-06eb-425/providers/Microsoft.Batch/batchAccounts/0424c298-ae/certificates"; + Requests[2215] = new DefaultHttpContext(); + Requests[2215].RequestServices = CreateServices(); + Requests[2215].Request.Method = "POST"; + Requests[2215].Request.Path = "/subscriptions/91084fac-d984-/resourceGroups/3a48a108-6f00-453/providers/Microsoft.Batch/batchAccounts/abc67f64-e9/listKeys"; + Requests[2216] = new DefaultHttpContext(); + Requests[2216].RequestServices = CreateServices(); + Requests[2216].Request.Method = "GET"; + Requests[2216].Request.Path = "/subscriptions/60389a1d-8aff-/resourceGroups/2f5b3871-39af-4cc/providers/Microsoft.Batch/batchAccounts/1504287d-54/pools"; + Requests[2217] = new DefaultHttpContext(); + Requests[2217].RequestServices = CreateServices(); + Requests[2217].Request.Method = "POST"; + Requests[2217].Request.Path = "/subscriptions/d19a439c-8039-/resourceGroups/19952a5e-a87d-4d0/providers/Microsoft.Batch/batchAccounts/1101e27f-43/regenerateKeys"; + Requests[2218] = new DefaultHttpContext(); + Requests[2218].RequestServices = CreateServices(); + Requests[2218].Request.Method = "POST"; + Requests[2218].Request.Path = "/subscriptions/ee08241d-72dd-/resourceGroups/64f536c4-879b-4a5/providers/Microsoft.Batch/batchAccounts/ed811bb2-7d/syncAutoStorageKeys"; + Requests[2219] = new DefaultHttpContext(); + Requests[2219].RequestServices = CreateServices(); + Requests[2219].Request.Method = "POST"; + Requests[2219].Request.Path = "/subscriptions/49423daf-179e-/resourceGroups/15347ec8-ad6c-4ad/providers/Microsoft.BatchAI/clusters/1ac7cc82-bd/listRemoteLoginInformation"; + Requests[2220] = new DefaultHttpContext(); + Requests[2220].RequestServices = CreateServices(); + Requests[2220].Request.Method = "POST"; + Requests[2220].Request.Path = "/subscriptions/17050bf9-d89c-/resourceGroups/ad4f8f95-27eb-45f/providers/Microsoft.BatchAI/jobs/5f170da/listOutputFiles"; + Requests[2221] = new DefaultHttpContext(); + Requests[2221].RequestServices = CreateServices(); + Requests[2221].Request.Method = "POST"; + Requests[2221].Request.Path = "/subscriptions/e6a75c43-9bc6-/resourceGroups/b0b297e7-7d78-45c/providers/Microsoft.BatchAI/jobs/4bde8b6/listRemoteLoginInformation"; + Requests[2222] = new DefaultHttpContext(); + Requests[2222].RequestServices = CreateServices(); + Requests[2222].Request.Method = "POST"; + Requests[2222].Request.Path = "/subscriptions/fbbb9ebb-4b12-/resourceGroups/eb27335a-c390-466/providers/Microsoft.BatchAI/jobs/2a88ac1/terminate"; + Requests[2223] = new DefaultHttpContext(); + Requests[2223].RequestServices = CreateServices(); + Requests[2223].Request.Method = "GET"; + Requests[2223].Request.Path = "/subscriptions/16c2a984-830c-/resourceGroups/fdad9084-83ed-453/providers/Microsoft.BatchAI/workspaces/1822f731-e7cf/clusters"; + Requests[2224] = new DefaultHttpContext(); + Requests[2224].RequestServices = CreateServices(); + Requests[2224].Request.Method = "GET"; + Requests[2224].Request.Path = "/subscriptions/36a64da8-d744-/resourceGroups/d7ae7e5c-966d-4c4/providers/Microsoft.BatchAI/workspaces/e12bbad6-90c2/experiments"; + Requests[2225] = new DefaultHttpContext(); + Requests[2225].RequestServices = CreateServices(); + Requests[2225].Request.Method = "GET"; + Requests[2225].Request.Path = "/subscriptions/f3b98f91-4ca7-/resourceGroups/88b03890-f32f-480/providers/Microsoft.BatchAI/workspaces/9a011806-78d0/fileServers"; + Requests[2226] = new DefaultHttpContext(); + Requests[2226].RequestServices = CreateServices(); + Requests[2226].Request.Method = "GET"; + Requests[2226].Request.Path = "/subscriptions/ad6e74c3-b178-/resourceGroups/46f9e40e-2f8c-489/providers/Microsoft.BotService/botServices/9d587268-ce0/channels"; + Requests[2227] = new DefaultHttpContext(); + Requests[2227].RequestServices = CreateServices(); + Requests[2227].Request.Method = "GET"; + Requests[2227].Request.Path = "/subscriptions/6b622300-7c5d-/resourceGroups/b64fbfa4-4081-48e/providers/Microsoft.BotService/botServices/afaabe80-735/connections"; + Requests[2228] = new DefaultHttpContext(); + Requests[2228].RequestServices = CreateServices(); + Requests[2228].Request.Method = "GET"; + Requests[2228].Request.Path = "/subscriptions/b94e156a-6746-/resourceGroups/f45f1ae3-2282-442/providers/Microsoft.Cache/Redis/2df3a04e-/firewallRules"; + Requests[2229] = new DefaultHttpContext(); + Requests[2229].RequestServices = CreateServices(); + Requests[2229].Request.Method = "GET"; + Requests[2229].Request.Path = "/subscriptions/b712b380-9c58-/resourceGroups/b280c298-051d-4cf/providers/Microsoft.Cache/Redis/16a4b28a-/patchSchedules"; + Requests[2230] = new DefaultHttpContext(); + Requests[2230].RequestServices = CreateServices(); + Requests[2230].Request.Method = "POST"; + Requests[2230].Request.Path = "/subscriptions/5a881e1a-c694-/resourceGroups/fc3188dc-0820-411/providers/Microsoft.Cache/Redis/01d1e/export"; + Requests[2231] = new DefaultHttpContext(); + Requests[2231].RequestServices = CreateServices(); + Requests[2231].Request.Method = "POST"; + Requests[2231].Request.Path = "/subscriptions/eee1a5be-c93f-/resourceGroups/ed7a99fa-19a5-47d/providers/Microsoft.Cache/Redis/5b041/forceReboot"; + Requests[2232] = new DefaultHttpContext(); + Requests[2232].RequestServices = CreateServices(); + Requests[2232].Request.Method = "POST"; + Requests[2232].Request.Path = "/subscriptions/abe20ab4-d774-/resourceGroups/67797aee-d64f-4a7/providers/Microsoft.Cache/Redis/093d8/import"; + Requests[2233] = new DefaultHttpContext(); + Requests[2233].RequestServices = CreateServices(); + Requests[2233].Request.Method = "GET"; + Requests[2233].Request.Path = "/subscriptions/390fb5e5-7fed-/resourceGroups/04ce0cd9-9d6c-429/providers/Microsoft.Cache/Redis/e46fa/linkedServers"; + Requests[2234] = new DefaultHttpContext(); + Requests[2234].RequestServices = CreateServices(); + Requests[2234].Request.Method = "POST"; + Requests[2234].Request.Path = "/subscriptions/217f6aeb-9bd2-/resourceGroups/f8aef0d7-f37e-499/providers/Microsoft.Cache/Redis/3cb97/listKeys"; + Requests[2235] = new DefaultHttpContext(); + Requests[2235].RequestServices = CreateServices(); + Requests[2235].Request.Method = "GET"; + Requests[2235].Request.Path = "/subscriptions/2e65e68d-c680-/resourceGroups/31347f34-5aa3-49d/providers/Microsoft.Cache/Redis/d132d/listUpgradeNotifications"; + Requests[2236] = new DefaultHttpContext(); + Requests[2236].RequestServices = CreateServices(); + Requests[2236].Request.Method = "POST"; + Requests[2236].Request.Path = "/subscriptions/9e6be479-d889-/resourceGroups/3c535eb1-3ebe-439/providers/Microsoft.Cache/Redis/c3f18/regenerateKey"; + Requests[2237] = new DefaultHttpContext(); + Requests[2237].RequestServices = CreateServices(); + Requests[2237].Request.Method = "POST"; + Requests[2237].Request.Path = "/subscriptions/5fa01642-23d9-/resourceGroups/3a895869-2ba2-4cc/providers/Microsoft.Cdn/profiles/ab8ee22c-63/checkResourceUsage"; + Requests[2238] = new DefaultHttpContext(); + Requests[2238].RequestServices = CreateServices(); + Requests[2238].Request.Method = "GET"; + Requests[2238].Request.Path = "/subscriptions/a495ff12-f94a-/resourceGroups/c113a8fc-b334-443/providers/Microsoft.Cdn/profiles/738daa54-69/endpoints"; + Requests[2239] = new DefaultHttpContext(); + Requests[2239].RequestServices = CreateServices(); + Requests[2239].Request.Method = "POST"; + Requests[2239].Request.Path = "/subscriptions/1912a2d8-0618-/resourceGroups/6b10c5f2-e963-4cf/providers/Microsoft.Cdn/profiles/2a86360b-9f/generateSsoUri"; + Requests[2240] = new DefaultHttpContext(); + Requests[2240].RequestServices = CreateServices(); + Requests[2240].Request.Method = "POST"; + Requests[2240].Request.Path = "/subscriptions/60b7e6f7-8acc-/resourceGroups/70e4ea6f-0216-45b/providers/Microsoft.Cdn/profiles/c5db81ea-61/getSupportedOptimizationTypes"; + Requests[2241] = new DefaultHttpContext(); + Requests[2241].RequestServices = CreateServices(); + Requests[2241].Request.Method = "GET"; + Requests[2241].Request.Path = "/subscriptions/c0d1e1cc-51e5-/resourceGroups/fe1bbdb1-cb95-474/providers/Microsoft.CertificateRegistration/certificateOrders/0d513212-ccd1-4543-b/certificates"; + Requests[2242] = new DefaultHttpContext(); + Requests[2242].RequestServices = CreateServices(); + Requests[2242].Request.Method = "POST"; + Requests[2242].Request.Path = "/subscriptions/dc29c298-5447-/resourceGroups/e1c07c7d-4aee-43c/providers/Microsoft.CertificateRegistration/certificateOrders/5eb4395b-ae3c-47ac-a/resendRequestEmails"; + Requests[2243] = new DefaultHttpContext(); + Requests[2243].RequestServices = CreateServices(); + Requests[2243].Request.Method = "POST"; + Requests[2243].Request.Path = "/subscriptions/52f23ec1-9ae3-/resourceGroups/1788e95f-42dc-469/providers/Microsoft.CertificateRegistration/certificateOrders/ad445b1d-b130-4953-9/retrieveSiteSeal"; + Requests[2244] = new DefaultHttpContext(); + Requests[2244].RequestServices = CreateServices(); + Requests[2244].Request.Method = "POST"; + Requests[2244].Request.Path = "/subscriptions/47b76afa-577c-/resourceGroups/dc6e59e3-9925-484/providers/Microsoft.CertificateRegistration/certificateOrders/a964f/reissue"; + Requests[2245] = new DefaultHttpContext(); + Requests[2245].RequestServices = CreateServices(); + Requests[2245].Request.Method = "POST"; + Requests[2245].Request.Path = "/subscriptions/0250815e-9b09-/resourceGroups/e384d013-b0f6-40e/providers/Microsoft.CertificateRegistration/certificateOrders/50d1d/renew"; + Requests[2246] = new DefaultHttpContext(); + Requests[2246].RequestServices = CreateServices(); + Requests[2246].Request.Method = "POST"; + Requests[2246].Request.Path = "/subscriptions/7b54e51d-9598-/resourceGroups/6101f996-eafa-496/providers/Microsoft.CertificateRegistration/certificateOrders/6ffef/resendEmail"; + Requests[2247] = new DefaultHttpContext(); + Requests[2247].RequestServices = CreateServices(); + Requests[2247].Request.Method = "POST"; + Requests[2247].Request.Path = "/subscriptions/a256cc03-f6cc-/resourceGroups/e8bc3a7c-3a97-446/providers/Microsoft.CertificateRegistration/certificateOrders/1967b/retrieveCertificateActions"; + Requests[2248] = new DefaultHttpContext(); + Requests[2248].RequestServices = CreateServices(); + Requests[2248].Request.Method = "POST"; + Requests[2248].Request.Path = "/subscriptions/ab46c145-a34b-/resourceGroups/4c50f104-6f6d-4bc/providers/Microsoft.CertificateRegistration/certificateOrders/67986/retrieveEmailHistory"; + Requests[2249] = new DefaultHttpContext(); + Requests[2249].RequestServices = CreateServices(); + Requests[2249].Request.Method = "POST"; + Requests[2249].Request.Path = "/subscriptions/8340c487-2b8d-/resourceGroups/323af0b7-54a9-47d/providers/Microsoft.CertificateRegistration/certificateOrders/1803c/verifyDomainOwnership"; + Requests[2250] = new DefaultHttpContext(); + Requests[2250].RequestServices = CreateServices(); + Requests[2250].Request.Method = "POST"; + Requests[2250].Request.Path = "/subscriptions/7afd53ad-d963-/resourceGroups/dc9a25f7-e969-4ab/providers/Microsoft.CognitiveServices/accounts/2093692e-c5/listKeys"; + Requests[2251] = new DefaultHttpContext(); + Requests[2251].RequestServices = CreateServices(); + Requests[2251].Request.Method = "POST"; + Requests[2251].Request.Path = "/subscriptions/f29774bb-51bd-/resourceGroups/3cc0340c-252e-456/providers/Microsoft.CognitiveServices/accounts/7d3d63ba-b7/regenerateKey"; + Requests[2252] = new DefaultHttpContext(); + Requests[2252].RequestServices = CreateServices(); + Requests[2252].Request.Method = "GET"; + Requests[2252].Request.Path = "/subscriptions/ad1d23fb-fe40-/resourceGroups/95a8cbf6-ac10-412/providers/Microsoft.CognitiveServices/accounts/a69cc772-46/skus"; + Requests[2253] = new DefaultHttpContext(); + Requests[2253].RequestServices = CreateServices(); + Requests[2253].Request.Method = "GET"; + Requests[2253].Request.Path = "/subscriptions/9df59ccc-a83c-/resourceGroups/e10ba979-d53d-438/providers/Microsoft.CognitiveServices/accounts/c53be067-a4/usages"; + Requests[2254] = new DefaultHttpContext(); + Requests[2254].RequestServices = CreateServices(); + Requests[2254].Request.Method = "GET"; + Requests[2254].Request.Path = "/subscriptions/35b2bb7e-296a-/resourceGroups/15aa435a-c1f6-4ca/providers/Microsoft.Compute/availabilitySets/fbeea17d-460e-4ef9-/vmSizes"; + Requests[2255] = new DefaultHttpContext(); + Requests[2255].RequestServices = CreateServices(); + Requests[2255].Request.Method = "POST"; + Requests[2255].Request.Path = "/subscriptions/4cf6ee30-aadf-/resourceGroups/b8dd7f53-30a1-469/providers/Microsoft.Compute/disks/c220fbb9/beginGetAccess"; + Requests[2256] = new DefaultHttpContext(); + Requests[2256].RequestServices = CreateServices(); + Requests[2256].Request.Method = "POST"; + Requests[2256].Request.Path = "/subscriptions/ddaea11c-f3a5-/resourceGroups/b45739ea-ee02-461/providers/Microsoft.Compute/disks/a46abfac/endGetAccess"; + Requests[2257] = new DefaultHttpContext(); + Requests[2257].RequestServices = CreateServices(); + Requests[2257].Request.Method = "GET"; + Requests[2257].Request.Path = "/subscriptions/49876f36-7793-/resourceGroups/ee797f9f-d7c6-475/providers/Microsoft.Compute/galleries/16f5d14c-5e/images"; + Requests[2258] = new DefaultHttpContext(); + Requests[2258].RequestServices = CreateServices(); + Requests[2258].Request.Method = "POST"; + Requests[2258].Request.Path = "/subscriptions/c87f6846-6154-/resourceGroups/395d4902-e7d3-472/providers/Microsoft.Compute/snapshots/6ab1c6a8-154/beginGetAccess"; + Requests[2259] = new DefaultHttpContext(); + Requests[2259].RequestServices = CreateServices(); + Requests[2259].Request.Method = "POST"; + Requests[2259].Request.Path = "/subscriptions/beb77651-3e99-/resourceGroups/6a36c529-7df2-48f/providers/Microsoft.Compute/snapshots/8c980a87-92e/endGetAccess"; + Requests[2260] = new DefaultHttpContext(); + Requests[2260].RequestServices = CreateServices(); + Requests[2260].Request.Method = "POST"; + Requests[2260].Request.Path = "/subscriptions/7870dd1d-1c33-/resourceGroups/2c8dcddd-0587-4de/providers/Microsoft.Compute/virtualMachines/7be249/capture"; + Requests[2261] = new DefaultHttpContext(); + Requests[2261].RequestServices = CreateServices(); + Requests[2261].Request.Method = "POST"; + Requests[2261].Request.Path = "/subscriptions/4e736896-ba38-/resourceGroups/08333a47-220d-41b/providers/Microsoft.Compute/virtualMachines/028407/convertToManagedDisks"; + Requests[2262] = new DefaultHttpContext(); + Requests[2262].RequestServices = CreateServices(); + Requests[2262].Request.Method = "POST"; + Requests[2262].Request.Path = "/subscriptions/17cc6564-1ccb-/resourceGroups/a258b186-1c06-4a0/providers/Microsoft.Compute/virtualMachines/57d25d/deallocate"; + Requests[2263] = new DefaultHttpContext(); + Requests[2263].RequestServices = CreateServices(); + Requests[2263].Request.Method = "GET"; + Requests[2263].Request.Path = "/subscriptions/f8920025-fd43-/resourceGroups/c02e814a-737f-4a9/providers/Microsoft.Compute/virtualMachines/a77120/extensions"; + Requests[2264] = new DefaultHttpContext(); + Requests[2264].RequestServices = CreateServices(); + Requests[2264].Request.Method = "POST"; + Requests[2264].Request.Path = "/subscriptions/5b6db96b-b6e8-/resourceGroups/22463c90-b813-44b/providers/Microsoft.Compute/virtualMachines/594e8b/generalize"; + Requests[2265] = new DefaultHttpContext(); + Requests[2265].RequestServices = CreateServices(); + Requests[2265].Request.Method = "GET"; + Requests[2265].Request.Path = "/subscriptions/69c7321a-3df4-/resourceGroups/5624340b-c82d-4ad/providers/Microsoft.Compute/virtualMachines/1c7a8d/instanceView"; + Requests[2266] = new DefaultHttpContext(); + Requests[2266].RequestServices = CreateServices(); + Requests[2266].Request.Method = "POST"; + Requests[2266].Request.Path = "/subscriptions/5c89fc42-ce6f-/resourceGroups/23af0800-dd54-470/providers/Microsoft.Compute/virtualMachines/e13171/performMaintenance"; + Requests[2267] = new DefaultHttpContext(); + Requests[2267].RequestServices = CreateServices(); + Requests[2267].Request.Method = "POST"; + Requests[2267].Request.Path = "/subscriptions/dc096743-4aa1-/resourceGroups/89782e4d-f524-433/providers/Microsoft.Compute/virtualMachines/ff3893/powerOff"; + Requests[2268] = new DefaultHttpContext(); + Requests[2268].RequestServices = CreateServices(); + Requests[2268].Request.Method = "POST"; + Requests[2268].Request.Path = "/subscriptions/cbcb0bd3-244b-/resourceGroups/5311f155-c9d1-457/providers/Microsoft.Compute/virtualMachines/ad1b5e/redeploy"; + Requests[2269] = new DefaultHttpContext(); + Requests[2269].RequestServices = CreateServices(); + Requests[2269].Request.Method = "POST"; + Requests[2269].Request.Path = "/subscriptions/0c29c960-c78c-/resourceGroups/e83eb409-3fc4-4bd/providers/Microsoft.Compute/virtualMachines/0b83ef/restart"; + Requests[2270] = new DefaultHttpContext(); + Requests[2270].RequestServices = CreateServices(); + Requests[2270].Request.Method = "POST"; + Requests[2270].Request.Path = "/subscriptions/bb105cf4-d6ae-/resourceGroups/a230ca6b-97d1-401/providers/Microsoft.Compute/virtualMachines/7fd390/runCommand"; + Requests[2271] = new DefaultHttpContext(); + Requests[2271].RequestServices = CreateServices(); + Requests[2271].Request.Method = "POST"; + Requests[2271].Request.Path = "/subscriptions/52bd5d45-68ce-/resourceGroups/526a3f5e-1a6c-4a1/providers/Microsoft.Compute/virtualMachines/a58099/start"; + Requests[2272] = new DefaultHttpContext(); + Requests[2272].RequestServices = CreateServices(); + Requests[2272].Request.Method = "GET"; + Requests[2272].Request.Path = "/subscriptions/acd869fc-35e8-/resourceGroups/661d83c6-0507-4fa/providers/Microsoft.Compute/virtualMachines/ee205a/vmSizes"; + Requests[2273] = new DefaultHttpContext(); + Requests[2273].RequestServices = CreateServices(); + Requests[2273].Request.Method = "GET"; + Requests[2273].Request.Path = "/subscriptions/6ffd4d3c-2dba-/resourceGroups/1538d273-d383-4a2/providers/microsoft.Compute/virtualMachineScaleSets/f63552a0-d341-4635-a36a-4b/networkInterfaces"; + Requests[2274] = new DefaultHttpContext(); + Requests[2274].RequestServices = CreateServices(); + Requests[2274].Request.Method = "GET"; + Requests[2274].Request.Path = "/subscriptions/a7b63f7f-0bcf-/resourceGroups/839be712-c759-43c/providers/Microsoft.Compute/virtualMachineScaleSets/1c063be0-b6f4-4bfd-a32a-fb/publicipaddresses"; + Requests[2275] = new DefaultHttpContext(); + Requests[2275].RequestServices = CreateServices(); + Requests[2275].Request.Method = "GET"; + Requests[2275].Request.Path = "/subscriptions/76aa5d94-7f34-/resourceGroups/d268b2d2-c72d-45e/providers/Microsoft.Compute/virtualMachineScaleSets/3b3a01b6-83e4-45bb-a160-31/virtualMachines"; + Requests[2276] = new DefaultHttpContext(); + Requests[2276].RequestServices = CreateServices(); + Requests[2276].Request.Method = "POST"; + Requests[2276].Request.Path = "/subscriptions/7b949e29-b541-/resourceGroups/03c3c645-f726-441/providers/Microsoft.Compute/virtualMachineScaleSets/a5704769-f3c1-/deallocate"; + Requests[2277] = new DefaultHttpContext(); + Requests[2277].RequestServices = CreateServices(); + Requests[2277].Request.Method = "POST"; + Requests[2277].Request.Path = "/subscriptions/a7ac795f-5eb1-/resourceGroups/49bd9598-969a-46f/providers/Microsoft.Compute/virtualMachineScaleSets/5d004392-ded1-/delete"; + Requests[2278] = new DefaultHttpContext(); + Requests[2278].RequestServices = CreateServices(); + Requests[2278].Request.Method = "GET"; + Requests[2278].Request.Path = "/subscriptions/03215647-da6e-/resourceGroups/63a4e837-995b-45f/providers/Microsoft.Compute/virtualMachineScaleSets/2d2e00b4-93be-/extensions"; + Requests[2279] = new DefaultHttpContext(); + Requests[2279].RequestServices = CreateServices(); + Requests[2279].Request.Method = "POST"; + Requests[2279].Request.Path = "/subscriptions/0ec61cbe-cd7a-/resourceGroups/7c35efd4-2c2e-47c/providers/Microsoft.Compute/virtualMachineScaleSets/b01c9a10-a550-/forceRecoveryServiceFabricPlatformUpdateDomainWalk"; + Requests[2280] = new DefaultHttpContext(); + Requests[2280].RequestServices = CreateServices(); + Requests[2280].Request.Method = "GET"; + Requests[2280].Request.Path = "/subscriptions/99b143b6-41b0-/resourceGroups/2dfdba87-d0b3-42b/providers/Microsoft.Compute/virtualMachineScaleSets/7144390c-2ba1-/instanceView"; + Requests[2281] = new DefaultHttpContext(); + Requests[2281].RequestServices = CreateServices(); + Requests[2281].Request.Method = "POST"; + Requests[2281].Request.Path = "/subscriptions/f3fc91f5-d61e-/resourceGroups/4a718210-73a2-4ef/providers/Microsoft.Compute/virtualMachineScaleSets/67735dc8-129c-/manualupgrade"; + Requests[2282] = new DefaultHttpContext(); + Requests[2282].RequestServices = CreateServices(); + Requests[2282].Request.Method = "POST"; + Requests[2282].Request.Path = "/subscriptions/74a1f438-7657-/resourceGroups/b4d91349-cade-43d/providers/Microsoft.Compute/virtualMachineScaleSets/8958823d-6a19-/osRollingUpgrade"; + Requests[2283] = new DefaultHttpContext(); + Requests[2283].RequestServices = CreateServices(); + Requests[2283].Request.Method = "GET"; + Requests[2283].Request.Path = "/subscriptions/f0cba052-c914-/resourceGroups/347461e9-f7ec-4b8/providers/Microsoft.Compute/virtualMachineScaleSets/5519ac32-ec48-/osUpgradeHistory"; + Requests[2284] = new DefaultHttpContext(); + Requests[2284].RequestServices = CreateServices(); + Requests[2284].Request.Method = "POST"; + Requests[2284].Request.Path = "/subscriptions/d9a268f1-708a-/resourceGroups/40110d17-91df-417/providers/Microsoft.Compute/virtualMachineScaleSets/7c5f70a4-e3fa-/performMaintenance"; + Requests[2285] = new DefaultHttpContext(); + Requests[2285].RequestServices = CreateServices(); + Requests[2285].Request.Method = "POST"; + Requests[2285].Request.Path = "/subscriptions/5f5fbfc3-df27-/resourceGroups/2494774a-17c2-460/providers/Microsoft.Compute/virtualMachineScaleSets/32a65e4c-348d-/poweroff"; + Requests[2286] = new DefaultHttpContext(); + Requests[2286].RequestServices = CreateServices(); + Requests[2286].Request.Method = "POST"; + Requests[2286].Request.Path = "/subscriptions/5d0036e8-703b-/resourceGroups/52b3a983-e70f-40c/providers/Microsoft.Compute/virtualMachineScaleSets/74c6ac94-ff63-/redeploy"; + Requests[2287] = new DefaultHttpContext(); + Requests[2287].RequestServices = CreateServices(); + Requests[2287].Request.Method = "POST"; + Requests[2287].Request.Path = "/subscriptions/baa79c0f-539a-/resourceGroups/0a7e573c-f10c-4cf/providers/Microsoft.Compute/virtualMachineScaleSets/a13c6943-6bf1-/reimage"; + Requests[2288] = new DefaultHttpContext(); + Requests[2288].RequestServices = CreateServices(); + Requests[2288].Request.Method = "POST"; + Requests[2288].Request.Path = "/subscriptions/40fed805-a17c-/resourceGroups/c30f423e-7769-438/providers/Microsoft.Compute/virtualMachineScaleSets/1d03d066-04b8-/reimageall"; + Requests[2289] = new DefaultHttpContext(); + Requests[2289].RequestServices = CreateServices(); + Requests[2289].Request.Method = "POST"; + Requests[2289].Request.Path = "/subscriptions/a1e53ed4-ad1c-/resourceGroups/60adb5ae-eb2f-4e1/providers/Microsoft.Compute/virtualMachineScaleSets/563f8506-d97c-/restart"; + Requests[2290] = new DefaultHttpContext(); + Requests[2290].RequestServices = CreateServices(); + Requests[2290].Request.Method = "GET"; + Requests[2290].Request.Path = "/subscriptions/a2813359-796c-/resourceGroups/66c88277-22e2-494/providers/Microsoft.Compute/virtualMachineScaleSets/3f466327-0d20-/skus"; + Requests[2291] = new DefaultHttpContext(); + Requests[2291].RequestServices = CreateServices(); + Requests[2291].Request.Method = "POST"; + Requests[2291].Request.Path = "/subscriptions/bec6e0b4-916b-/resourceGroups/0216af91-e7dd-41a/providers/Microsoft.Compute/virtualMachineScaleSets/f9edabc1-ae2f-/start"; + Requests[2292] = new DefaultHttpContext(); + Requests[2292].RequestServices = CreateServices(); + Requests[2292].Request.Method = "GET"; + Requests[2292].Request.Path = "/subscriptions/e1789964-09a5-/resourceGroups/73a44b2c-f73d-4b1/providers/Microsoft.ContainerRegistry/registries/b7a2ad63-bdd/builds"; + Requests[2293] = new DefaultHttpContext(); + Requests[2293].RequestServices = CreateServices(); + Requests[2293].Request.Method = "GET"; + Requests[2293].Request.Path = "/subscriptions/2f5b985b-4efa-/resourceGroups/bfb56992-7e24-4a7/providers/Microsoft.ContainerRegistry/registries/2f2b9821-edc/buildTasks"; + Requests[2294] = new DefaultHttpContext(); + Requests[2294].RequestServices = CreateServices(); + Requests[2294].Request.Method = "POST"; + Requests[2294].Request.Path = "/subscriptions/a81f5589-7112-/resourceGroups/1f011536-004f-46e/providers/Microsoft.ContainerRegistry/registries/ebf59d4b-34a/getBuildSourceUploadUrl"; + Requests[2295] = new DefaultHttpContext(); + Requests[2295].RequestServices = CreateServices(); + Requests[2295].Request.Method = "POST"; + Requests[2295].Request.Path = "/subscriptions/bf5060ac-5de8-/resourceGroups/2543029f-8c23-4e5/providers/Microsoft.ContainerRegistry/registries/6c64eca3-159/getCredentials"; + Requests[2296] = new DefaultHttpContext(); + Requests[2296].RequestServices = CreateServices(); + Requests[2296].Request.Method = "POST"; + Requests[2296].Request.Path = "/subscriptions/e2ecc0cc-23aa-/resourceGroups/af7163af-2274-402/providers/Microsoft.ContainerRegistry/registries/71d66c33-4fb/importImage"; + Requests[2297] = new DefaultHttpContext(); + Requests[2297].RequestServices = CreateServices(); + Requests[2297].Request.Method = "POST"; + Requests[2297].Request.Path = "/subscriptions/89c3dafe-9482-/resourceGroups/5d6a3012-b21c-46a/providers/Microsoft.ContainerRegistry/registries/a9e68d3f-07d/listCredentials"; + Requests[2298] = new DefaultHttpContext(); + Requests[2298].RequestServices = CreateServices(); + Requests[2298].Request.Method = "GET"; + Requests[2298].Request.Path = "/subscriptions/a3a8e889-ea51-/resourceGroups/d6004cb2-49c6-4b3/providers/Microsoft.ContainerRegistry/registries/5093f501-fbd/listUsages"; + Requests[2299] = new DefaultHttpContext(); + Requests[2299].RequestServices = CreateServices(); + Requests[2299].Request.Method = "POST"; + Requests[2299].Request.Path = "/subscriptions/98aafb1e-6384-/resourceGroups/5497aa49-528d-439/providers/Microsoft.ContainerRegistry/registries/c4472d8c-eec/queueBuild"; + Requests[2300] = new DefaultHttpContext(); + Requests[2300].RequestServices = CreateServices(); + Requests[2300].Request.Method = "POST"; + Requests[2300].Request.Path = "/subscriptions/1f801e50-508b-/resourceGroups/c171c1d9-bfc1-456/providers/Microsoft.ContainerRegistry/registries/a29460a3-69d/regenerateCredential"; + Requests[2301] = new DefaultHttpContext(); + Requests[2301].RequestServices = CreateServices(); + Requests[2301].Request.Method = "POST"; + Requests[2301].Request.Path = "/subscriptions/8ae606b1-cc2d-/resourceGroups/92357605-9d33-462/providers/Microsoft.ContainerRegistry/registries/d7c22a81-1ed/regenerateCredentials"; + Requests[2302] = new DefaultHttpContext(); + Requests[2302].RequestServices = CreateServices(); + Requests[2302].Request.Method = "GET"; + Requests[2302].Request.Path = "/subscriptions/50b755da-ddbf-/resourceGroups/06862527-c9b3-40c/providers/Microsoft.ContainerRegistry/registries/bf0908e2-469/replications"; + Requests[2303] = new DefaultHttpContext(); + Requests[2303].RequestServices = CreateServices(); + Requests[2303].Request.Method = "GET"; + Requests[2303].Request.Path = "/subscriptions/162cae3b-a9b1-/resourceGroups/c48a5c83-8fb3-4de/providers/Microsoft.ContainerRegistry/registries/ffe1ef73-3d4/webhooks"; + Requests[2304] = new DefaultHttpContext(); + Requests[2304].RequestServices = CreateServices(); + Requests[2304].Request.Method = "GET"; + Requests[2304].Request.Path = "/subscriptions/22f292cd-43a3-/resourceGroups/29e280f8-57cf-491/providers/Microsoft.CustomerInsights/hubs/80c75e4/authorizationPolicies"; + Requests[2305] = new DefaultHttpContext(); + Requests[2305].RequestServices = CreateServices(); + Requests[2305].Request.Method = "GET"; + Requests[2305].Request.Path = "/subscriptions/c8c0f271-9046-/resourceGroups/411ed39a-9230-47f/providers/Microsoft.CustomerInsights/hubs/5d64cd3/connectors"; + Requests[2306] = new DefaultHttpContext(); + Requests[2306].RequestServices = CreateServices(); + Requests[2306].Request.Method = "GET"; + Requests[2306].Request.Path = "/subscriptions/bf02a15e-44f6-/resourceGroups/6fc87d45-e773-48b/providers/Microsoft.CustomerInsights/hubs/45474fb/interactions"; + Requests[2307] = new DefaultHttpContext(); + Requests[2307].RequestServices = CreateServices(); + Requests[2307].Request.Method = "GET"; + Requests[2307].Request.Path = "/subscriptions/639b36e3-97ad-/resourceGroups/4e8fd109-3f8a-46a/providers/Microsoft.CustomerInsights/hubs/1beb7ec/kpi"; + Requests[2308] = new DefaultHttpContext(); + Requests[2308].RequestServices = CreateServices(); + Requests[2308].Request.Method = "GET"; + Requests[2308].Request.Path = "/subscriptions/dc626650-ad72-/resourceGroups/fd37e727-dba7-418/providers/Microsoft.CustomerInsights/hubs/7d762d0/links"; + Requests[2309] = new DefaultHttpContext(); + Requests[2309].RequestServices = CreateServices(); + Requests[2309].Request.Method = "GET"; + Requests[2309].Request.Path = "/subscriptions/fb0c0cb2-016b-/resourceGroups/18ae8806-4324-476/providers/Microsoft.CustomerInsights/hubs/a49a346/predictions"; + Requests[2310] = new DefaultHttpContext(); + Requests[2310].RequestServices = CreateServices(); + Requests[2310].Request.Method = "GET"; + Requests[2310].Request.Path = "/subscriptions/0c6b15a6-ae23-/resourceGroups/54be881f-4073-4ce/providers/Microsoft.CustomerInsights/hubs/878bab7/profiles"; + Requests[2311] = new DefaultHttpContext(); + Requests[2311].RequestServices = CreateServices(); + Requests[2311].Request.Method = "GET"; + Requests[2311].Request.Path = "/subscriptions/e05aad97-c3d7-/resourceGroups/c0629cfd-6f8f-4bd/providers/Microsoft.CustomerInsights/hubs/e14abe7/relationshipLinks"; + Requests[2312] = new DefaultHttpContext(); + Requests[2312].RequestServices = CreateServices(); + Requests[2312].Request.Method = "GET"; + Requests[2312].Request.Path = "/subscriptions/3daccfed-c9ec-/resourceGroups/5a130ce4-0365-429/providers/Microsoft.CustomerInsights/hubs/07628d3/relationships"; + Requests[2313] = new DefaultHttpContext(); + Requests[2313].RequestServices = CreateServices(); + Requests[2313].Request.Method = "GET"; + Requests[2313].Request.Path = "/subscriptions/b4da7d2e-71bc-/resourceGroups/5bc496fa-d144-474/providers/Microsoft.CustomerInsights/hubs/629dcbd/roleAssignments"; + Requests[2314] = new DefaultHttpContext(); + Requests[2314].RequestServices = CreateServices(); + Requests[2314].Request.Method = "GET"; + Requests[2314].Request.Path = "/subscriptions/dff6a7dd-cc56-/resourceGroups/c86f3e84-9308-4c9/providers/Microsoft.CustomerInsights/hubs/ffa13c9/roles"; + Requests[2315] = new DefaultHttpContext(); + Requests[2315].RequestServices = CreateServices(); + Requests[2315].Request.Method = "GET"; + Requests[2315].Request.Path = "/subscriptions/79febd02-f673-/resourceGroups/ddb28fff-ded3-491/providers/Microsoft.CustomerInsights/hubs/72a845e/views"; + Requests[2316] = new DefaultHttpContext(); + Requests[2316].RequestServices = CreateServices(); + Requests[2316].Request.Method = "GET"; + Requests[2316].Request.Path = "/subscriptions/8d8c1bf4-0955-/resourceGroups/fc84e6ca-529e-49d/providers/Microsoft.CustomerInsights/hubs/622260a/widgetTypes"; + Requests[2317] = new DefaultHttpContext(); + Requests[2317].RequestServices = CreateServices(); + Requests[2317].Request.Method = "POST"; + Requests[2317].Request.Path = "/subscriptions/5743d4e0-cf99-/resourceGroups/d2f59cfd-88f0-40e/providers/Microsoft.DataBox/jobs/5cb7b2e/bookShipmentPickUp"; + Requests[2318] = new DefaultHttpContext(); + Requests[2318].RequestServices = CreateServices(); + Requests[2318].Request.Method = "POST"; + Requests[2318].Request.Path = "/subscriptions/96db5dd5-bc1f-/resourceGroups/e5a1b597-4a70-465/providers/Microsoft.DataBox/jobs/e493258/cancel"; + Requests[2319] = new DefaultHttpContext(); + Requests[2319].RequestServices = CreateServices(); + Requests[2319].Request.Method = "POST"; + Requests[2319].Request.Path = "/subscriptions/d60b6a25-2133-/resourceGroups/637d7267-0eb4-4c0/providers/Microsoft.DataBox/jobs/f15b217/copyLogsUri"; + Requests[2320] = new DefaultHttpContext(); + Requests[2320].RequestServices = CreateServices(); + Requests[2320].Request.Method = "POST"; + Requests[2320].Request.Path = "/subscriptions/9bf16963-e294-/resourceGroups/899f53ad-013c-464/providers/Microsoft.DataBox/jobs/a759409/downloadShippingLabel"; + Requests[2321] = new DefaultHttpContext(); + Requests[2321].RequestServices = CreateServices(); + Requests[2321].Request.Method = "POST"; + Requests[2321].Request.Path = "/subscriptions/eda098c1-bf26-/resourceGroups/96ee29b4-12bb-47b/providers/Microsoft.DataBox/jobs/591917c/listSecrets"; + Requests[2322] = new DefaultHttpContext(); + Requests[2322].RequestServices = CreateServices(); + Requests[2322].Request.Method = "POST"; + Requests[2322].Request.Path = "/subscriptions/18c1b8f7-444c-/resourceGroups/a8fe9026-bc56-48a/providers/Microsoft.DataBox/jobs/11dbc30/reportIssue"; + Requests[2323] = new DefaultHttpContext(); + Requests[2323].RequestServices = CreateServices(); + Requests[2323].Request.Method = "GET"; + Requests[2323].Request.Path = "/subscriptions/2c87e594-6545-/resourceGroups/084b1c9b-bc56-495/providers/Microsoft.DataFactory/factories/c4ae6d94-11/datasets"; + Requests[2324] = new DefaultHttpContext(); + Requests[2324].RequestServices = CreateServices(); + Requests[2324].Request.Method = "GET"; + Requests[2324].Request.Path = "/subscriptions/f096ef21-f7c2-/resourceGroups/90cbe96e-32af-4d6/providers/Microsoft.DataFactory/factories/b9412733-fe/integrationRuntimes"; + Requests[2325] = new DefaultHttpContext(); + Requests[2325].RequestServices = CreateServices(); + Requests[2325].Request.Method = "GET"; + Requests[2325].Request.Path = "/subscriptions/0ed7fe4e-2766-/resourceGroups/e907c634-93c7-436/providers/Microsoft.DataFactory/factories/44f82a59-66/linkedservices"; + Requests[2326] = new DefaultHttpContext(); + Requests[2326].RequestServices = CreateServices(); + Requests[2326].Request.Method = "POST"; + Requests[2326].Request.Path = "/subscriptions/c98159aa-ef6c-/resourceGroups/78f88ec2-0684-49d/providers/Microsoft.DataFactory/factories/392c0aa6-4f/pipelineruns"; + Requests[2327] = new DefaultHttpContext(); + Requests[2327].RequestServices = CreateServices(); + Requests[2327].Request.Method = "GET"; + Requests[2327].Request.Path = "/subscriptions/ddf4d891-69f3-/resourceGroups/9a3630bf-0890-449/providers/Microsoft.DataFactory/factories/7a17060c-4f/pipelines"; + Requests[2328] = new DefaultHttpContext(); + Requests[2328].RequestServices = CreateServices(); + Requests[2328].Request.Method = "GET"; + Requests[2328].Request.Path = "/subscriptions/c0251601-1880-/resourceGroups/05786b23-5c84-487/providers/Microsoft.DataFactory/factories/d67b55e6-0a/triggers"; + Requests[2329] = new DefaultHttpContext(); + Requests[2329].RequestServices = CreateServices(); + Requests[2329].Request.Method = "GET"; + Requests[2329].Request.Path = "/subscriptions/90846ab6-109d-/resourceGroups/3fa7fdef-61f9-4b7/providers/Microsoft.DataLakeAnalytics/accounts/d531b2ed-42/computePolicies"; + Requests[2330] = new DefaultHttpContext(); + Requests[2330].RequestServices = CreateServices(); + Requests[2330].Request.Method = "GET"; + Requests[2330].Request.Path = "/subscriptions/f2f22d12-545a-/resourceGroups/bd0f0e64-54b2-4d5/providers/Microsoft.DataLakeAnalytics/accounts/9a63b7c1-17/dataLakeStoreAccounts"; + Requests[2331] = new DefaultHttpContext(); + Requests[2331].RequestServices = CreateServices(); + Requests[2331].Request.Method = "GET"; + Requests[2331].Request.Path = "/subscriptions/c1a4d77f-3391-/resourceGroups/7919538c-1e19-4fa/providers/Microsoft.DataLakeAnalytics/accounts/1bd919e4-e5/firewallRules"; + Requests[2332] = new DefaultHttpContext(); + Requests[2332].RequestServices = CreateServices(); + Requests[2332].Request.Method = "GET"; + Requests[2332].Request.Path = "/subscriptions/63d68b26-0859-/resourceGroups/3133a6b9-80b0-458/providers/Microsoft.DataLakeAnalytics/accounts/d9f8e155-1b/storageAccounts"; + Requests[2333] = new DefaultHttpContext(); + Requests[2333].RequestServices = CreateServices(); + Requests[2333].Request.Method = "POST"; + Requests[2333].Request.Path = "/subscriptions/404be707-98b1-/resourceGroups/f21b3d81-5c97-4b7/providers/Microsoft.DataLakeStore/accounts/4e7aba44-e8/enableKeyVault"; + Requests[2334] = new DefaultHttpContext(); + Requests[2334].RequestServices = CreateServices(); + Requests[2334].Request.Method = "GET"; + Requests[2334].Request.Path = "/subscriptions/0417496d-b4b5-/resourceGroups/5c609994-f48b-4eb/providers/Microsoft.DataLakeStore/accounts/23d0e618-3e/firewallRules"; + Requests[2335] = new DefaultHttpContext(); + Requests[2335].RequestServices = CreateServices(); + Requests[2335].Request.Method = "GET"; + Requests[2335].Request.Path = "/subscriptions/24b2946b-84d3-/resourceGroups/9369c3ab-1ffe-448/providers/Microsoft.DataLakeStore/accounts/233673c9-32/trustedIdProviders"; + Requests[2336] = new DefaultHttpContext(); + Requests[2336].RequestServices = CreateServices(); + Requests[2336].Request.Method = "GET"; + Requests[2336].Request.Path = "/subscriptions/74b6b081-315c-/resourceGroups/e02f6e83-393d-421/providers/Microsoft.DataLakeStore/accounts/7bd89db6-a7/virtualNetworkRules"; + Requests[2337] = new DefaultHttpContext(); + Requests[2337].RequestServices = CreateServices(); + Requests[2337].Request.Method = "GET"; + Requests[2337].Request.Path = "/subscriptions/93f6179e-7d35-/resourceGroups/d43c4d93-f0a0-4f9/providers/Microsoft.DBforMySQL/servers/bd66af5b-c/configurations"; + Requests[2338] = new DefaultHttpContext(); + Requests[2338].RequestServices = CreateServices(); + Requests[2338].Request.Method = "GET"; + Requests[2338].Request.Path = "/subscriptions/e77794b9-9417-/resourceGroups/6ab12c8d-94c3-45b/providers/Microsoft.DBforMySQL/servers/1d6fe07c-b/databases"; + Requests[2339] = new DefaultHttpContext(); + Requests[2339].RequestServices = CreateServices(); + Requests[2339].Request.Method = "GET"; + Requests[2339].Request.Path = "/subscriptions/9bc5854f-6896-/resourceGroups/d36dd9da-7661-460/providers/Microsoft.DBforMySQL/servers/e36d0e3b-a/firewallRules"; + Requests[2340] = new DefaultHttpContext(); + Requests[2340].RequestServices = CreateServices(); + Requests[2340].Request.Method = "GET"; + Requests[2340].Request.Path = "/subscriptions/02294f48-08fb-/resourceGroups/1c47c8d6-94ac-49c/providers/Microsoft.DBforMySQL/servers/c2b6397e-2/logFiles"; + Requests[2341] = new DefaultHttpContext(); + Requests[2341].RequestServices = CreateServices(); + Requests[2341].Request.Method = "GET"; + Requests[2341].Request.Path = "/subscriptions/cf12a138-978a-/resourceGroups/24f88c1b-58fd-40a/providers/Microsoft.DBforMySQL/servers/3b780ff1-d/virtualNetworkRules"; + Requests[2342] = new DefaultHttpContext(); + Requests[2342].RequestServices = CreateServices(); + Requests[2342].Request.Method = "GET"; + Requests[2342].Request.Path = "/subscriptions/fe674c3c-25a1-/resourceGroups/be838f01-e985-47b/providers/Microsoft.DBforPostgreSQL/servers/6a03dc65-f/configurations"; + Requests[2343] = new DefaultHttpContext(); + Requests[2343].RequestServices = CreateServices(); + Requests[2343].Request.Method = "GET"; + Requests[2343].Request.Path = "/subscriptions/95c8b391-4c06-/resourceGroups/05fbce2f-342a-42a/providers/Microsoft.DBforPostgreSQL/servers/0c1be135-d/databases"; + Requests[2344] = new DefaultHttpContext(); + Requests[2344].RequestServices = CreateServices(); + Requests[2344].Request.Method = "GET"; + Requests[2344].Request.Path = "/subscriptions/a5d2a72d-2be7-/resourceGroups/31e4e843-c8a8-40d/providers/Microsoft.DBforPostgreSQL/servers/091d7ba3-0/firewallRules"; + Requests[2345] = new DefaultHttpContext(); + Requests[2345].RequestServices = CreateServices(); + Requests[2345].Request.Method = "GET"; + Requests[2345].Request.Path = "/subscriptions/454bbac8-573a-/resourceGroups/60cf34c6-7187-4cc/providers/Microsoft.DBforPostgreSQL/servers/29260ff8-b/logFiles"; + Requests[2346] = new DefaultHttpContext(); + Requests[2346].RequestServices = CreateServices(); + Requests[2346].Request.Method = "GET"; + Requests[2346].Request.Path = "/subscriptions/77ef79ab-7ff9-/resourceGroups/1dcaee4b-0631-41f/providers/Microsoft.DBforPostgreSQL/servers/cbb66656-9/virtualNetworkRules"; + Requests[2347] = new DefaultHttpContext(); + Requests[2347].RequestServices = CreateServices(); + Requests[2347].Request.Method = "GET"; + Requests[2347].Request.Path = "/subscriptions/61aa057d-16a4-/resourceGroups/b57b5634-7d63-498/providers/Microsoft.Devices/IotHubs/72f12a8a-c/routingEndpointsHealth"; + Requests[2348] = new DefaultHttpContext(); + Requests[2348].RequestServices = CreateServices(); + Requests[2348].Request.Method = "GET"; + Requests[2348].Request.Path = "/subscriptions/9258e0d2-66d1-/resourceGroups/76f6562d-2a67-436/providers/Microsoft.Devices/IotHubs/c997636d-5e7/certificates"; + Requests[2349] = new DefaultHttpContext(); + Requests[2349].RequestServices = CreateServices(); + Requests[2349].Request.Method = "POST"; + Requests[2349].Request.Path = "/subscriptions/55eae448-b471-/resourceGroups/24297b62-cf9d-42f/providers/Microsoft.Devices/IotHubs/4bdacaab-534/exportDevices"; + Requests[2350] = new DefaultHttpContext(); + Requests[2350].RequestServices = CreateServices(); + Requests[2350].Request.Method = "POST"; + Requests[2350].Request.Path = "/subscriptions/7ea62829-09cd-/resourceGroups/8c426e1e-cb74-427/providers/Microsoft.Devices/IotHubs/8fec5c9a-883/importDevices"; + Requests[2351] = new DefaultHttpContext(); + Requests[2351].RequestServices = CreateServices(); + Requests[2351].Request.Method = "GET"; + Requests[2351].Request.Path = "/subscriptions/45906e53-044f-/resourceGroups/461023f2-c7d0-4d4/providers/Microsoft.Devices/IotHubs/bfc612b3-9e1/IotHubStats"; + Requests[2352] = new DefaultHttpContext(); + Requests[2352].RequestServices = CreateServices(); + Requests[2352].Request.Method = "GET"; + Requests[2352].Request.Path = "/subscriptions/4f299567-9bed-/resourceGroups/26abdd9f-8563-438/providers/Microsoft.Devices/IotHubs/95702ee8-6d5/jobs"; + Requests[2353] = new DefaultHttpContext(); + Requests[2353].RequestServices = CreateServices(); + Requests[2353].Request.Method = "POST"; + Requests[2353].Request.Path = "/subscriptions/7a963a44-33c8-/resourceGroups/272b9327-91d9-4cc/providers/Microsoft.Devices/IotHubs/741f1ce3-e02/listkeys"; + Requests[2354] = new DefaultHttpContext(); + Requests[2354].RequestServices = CreateServices(); + Requests[2354].Request.Method = "GET"; + Requests[2354].Request.Path = "/subscriptions/365aa7c0-dd73-/resourceGroups/e5453639-9d32-49c/providers/Microsoft.Devices/IotHubs/af923135-30c/quotaMetrics"; + Requests[2355] = new DefaultHttpContext(); + Requests[2355].RequestServices = CreateServices(); + Requests[2355].Request.Method = "GET"; + Requests[2355].Request.Path = "/subscriptions/27b6e3ff-9469-/resourceGroups/d57aa509-01c3-45e/providers/Microsoft.Devices/IotHubs/d303c69c-b8e/skus"; + Requests[2356] = new DefaultHttpContext(); + Requests[2356].RequestServices = CreateServices(); + Requests[2356].Request.Method = "GET"; + Requests[2356].Request.Path = "/subscriptions/52ae4d8d-3757-/resourceGroups/496a528b-b885-46d/providers/Microsoft.Devices/provisioningServices/605bf1a0-7227-475f-9963/certificates"; + Requests[2357] = new DefaultHttpContext(); + Requests[2357].RequestServices = CreateServices(); + Requests[2357].Request.Method = "POST"; + Requests[2357].Request.Path = "/subscriptions/07c093ba-fac6-/resourceGroups/4582d808-25f6-41c/providers/Microsoft.Devices/provisioningServices/373dae6f-ed86-407f-8858/listkeys"; + Requests[2358] = new DefaultHttpContext(); + Requests[2358].RequestServices = CreateServices(); + Requests[2358].Request.Method = "GET"; + Requests[2358].Request.Path = "/subscriptions/bd41ef95-e3b0-/resourceGroups/72e4c032-0b0c-400/providers/Microsoft.Devices/provisioningServices/ed423f0c-24b2-45cc-8859/skus"; + Requests[2359] = new DefaultHttpContext(); + Requests[2359].RequestServices = CreateServices(); + Requests[2359].Request.Method = "GET"; + Requests[2359].Request.Path = "/subscriptions/164bcf67-6fd1-/resourceGroups/88490251-ebde-48b/providers/Microsoft.DevTestLab/labs/9e3099f/artifactsources"; + Requests[2360] = new DefaultHttpContext(); + Requests[2360].RequestServices = CreateServices(); + Requests[2360].Request.Method = "GET"; + Requests[2360].Request.Path = "/subscriptions/2f72209d-3420-/resourceGroups/0d90afea-3d5d-45c/providers/Microsoft.DevTestLab/labs/3dc3417/costinsights"; + Requests[2361] = new DefaultHttpContext(); + Requests[2361].RequestServices = CreateServices(); + Requests[2361].Request.Method = "GET"; + Requests[2361].Request.Path = "/subscriptions/a13c1f33-f31b-/resourceGroups/beee4ae7-ffd0-429/providers/Microsoft.DevTestLab/labs/be7e92f/costs"; + Requests[2362] = new DefaultHttpContext(); + Requests[2362].RequestServices = CreateServices(); + Requests[2362].Request.Method = "GET"; + Requests[2362].Request.Path = "/subscriptions/0416bdb0-20fe-/resourceGroups/4e101de7-82e0-434/providers/Microsoft.DevTestLab/labs/b14f9dc/customimages"; + Requests[2363] = new DefaultHttpContext(); + Requests[2363].RequestServices = CreateServices(); + Requests[2363].Request.Method = "GET"; + Requests[2363].Request.Path = "/subscriptions/c507ff08-8630-/resourceGroups/b4189490-3804-4fd/providers/Microsoft.DevTestLab/labs/ea0e810/formulas"; + Requests[2364] = new DefaultHttpContext(); + Requests[2364].RequestServices = CreateServices(); + Requests[2364].Request.Method = "GET"; + Requests[2364].Request.Path = "/subscriptions/d0ebab98-eb07-/resourceGroups/9ad8f24d-1f04-4fd/providers/Microsoft.DevTestLab/labs/532c972/galleryimages"; + Requests[2365] = new DefaultHttpContext(); + Requests[2365].RequestServices = CreateServices(); + Requests[2365].Request.Method = "GET"; + Requests[2365].Request.Path = "/subscriptions/13d3ee50-9fe1-/resourceGroups/4bbdd6fe-e545-4bc/providers/Microsoft.DevTestLab/labs/7b038ec/notificationchannels"; + Requests[2366] = new DefaultHttpContext(); + Requests[2366].RequestServices = CreateServices(); + Requests[2366].Request.Method = "GET"; + Requests[2366].Request.Path = "/subscriptions/b8465bef-c3bb-/resourceGroups/29b68972-de56-459/providers/Microsoft.DevTestLab/labs/16d4dc8/schedules"; + Requests[2367] = new DefaultHttpContext(); + Requests[2367].RequestServices = CreateServices(); + Requests[2367].Request.Method = "GET"; + Requests[2367].Request.Path = "/subscriptions/d73a36d5-80df-/resourceGroups/65581861-953d-407/providers/Microsoft.DevTestLab/labs/f6ec44d/servicerunners"; + Requests[2368] = new DefaultHttpContext(); + Requests[2368].RequestServices = CreateServices(); + Requests[2368].Request.Method = "GET"; + Requests[2368].Request.Path = "/subscriptions/237d7d24-5f65-/resourceGroups/1a7a6090-5812-45a/providers/Microsoft.DevTestLab/labs/ddf24e5/users"; + Requests[2369] = new DefaultHttpContext(); + Requests[2369].RequestServices = CreateServices(); + Requests[2369].Request.Method = "GET"; + Requests[2369].Request.Path = "/subscriptions/ba0a0530-4eba-/resourceGroups/9db5d3e3-899d-487/providers/Microsoft.DevTestLab/labs/061f9b6/virtualmachines"; + Requests[2370] = new DefaultHttpContext(); + Requests[2370].RequestServices = CreateServices(); + Requests[2370].Request.Method = "GET"; + Requests[2370].Request.Path = "/subscriptions/92ff9fcb-28fb-/resourceGroups/712b8b26-e17f-4fa/providers/Microsoft.DevTestLab/labs/deb7d1e/virtualnetworks"; + Requests[2371] = new DefaultHttpContext(); + Requests[2371].RequestServices = CreateServices(); + Requests[2371].Request.Method = "POST"; + Requests[2371].Request.Path = "/subscriptions/93fb7aa0-d6af-/resourceGroups/a773acc6-b590-4e6/providers/Microsoft.DevTestLab/labs/1a342/claimAnyVm"; + Requests[2372] = new DefaultHttpContext(); + Requests[2372].RequestServices = CreateServices(); + Requests[2372].Request.Method = "POST"; + Requests[2372].Request.Path = "/subscriptions/0425c12b-9083-/resourceGroups/cb9a2774-d4cd-4bd/providers/Microsoft.DevTestLab/labs/6bf8c/createEnvironment"; + Requests[2373] = new DefaultHttpContext(); + Requests[2373].RequestServices = CreateServices(); + Requests[2373].Request.Method = "POST"; + Requests[2373].Request.Path = "/subscriptions/c8788197-a4e6-/resourceGroups/d8e0af9d-df15-480/providers/Microsoft.DevTestLab/labs/a03f6/exportResourceUsage"; + Requests[2374] = new DefaultHttpContext(); + Requests[2374].RequestServices = CreateServices(); + Requests[2374].Request.Method = "POST"; + Requests[2374].Request.Path = "/subscriptions/775d7a21-c60f-/resourceGroups/9d8a5376-d301-407/providers/Microsoft.DevTestLab/labs/9d644/generateUploadUri"; + Requests[2375] = new DefaultHttpContext(); + Requests[2375].RequestServices = CreateServices(); + Requests[2375].Request.Method = "POST"; + Requests[2375].Request.Path = "/subscriptions/6281961f-6808-/resourceGroups/1022c290-0822-419/providers/Microsoft.DevTestLab/labs/7b737/listVhds"; + Requests[2376] = new DefaultHttpContext(); + Requests[2376].RequestServices = CreateServices(); + Requests[2376].Request.Method = "POST"; + Requests[2376].Request.Path = "/subscriptions/215afc2e-266a-/resourceGroups/b1110cdf-83ed-474/providers/Microsoft.DevTestLab/schedules/69b23/execute"; + Requests[2377] = new DefaultHttpContext(); + Requests[2377].RequestServices = CreateServices(); + Requests[2377].Request.Method = "POST"; + Requests[2377].Request.Path = "/subscriptions/1fed1957-39f7-/resourceGroups/44e05af9-64da-4dd/providers/Microsoft.DevTestLab/schedules/e58c2/retarget"; + Requests[2378] = new DefaultHttpContext(); + Requests[2378].RequestServices = CreateServices(); + Requests[2378].Request.Method = "POST"; + Requests[2378].Request.Path = "/subscriptions/9113a290-fb08-/resourceGroups/18636feb-9bf4-4ea/providers/Microsoft.DocumentDB/databaseAccounts/cc087092-12/failoverPriorityChange"; + Requests[2379] = new DefaultHttpContext(); + Requests[2379].RequestServices = CreateServices(); + Requests[2379].Request.Method = "POST"; + Requests[2379].Request.Path = "/subscriptions/12eb7b34-4b75-/resourceGroups/9ebfc4ef-ddee-4c9/providers/Microsoft.DocumentDB/databaseAccounts/2254ff8d-bb/listConnectionStrings"; + Requests[2380] = new DefaultHttpContext(); + Requests[2380].RequestServices = CreateServices(); + Requests[2380].Request.Method = "POST"; + Requests[2380].Request.Path = "/subscriptions/741599a2-b3ba-/resourceGroups/cb5ae435-659a-400/providers/Microsoft.DocumentDB/databaseAccounts/0cbb9a5a-9e/listKeys"; + Requests[2381] = new DefaultHttpContext(); + Requests[2381].RequestServices = CreateServices(); + Requests[2381].Request.Method = "GET"; + Requests[2381].Request.Path = "/subscriptions/2b4d0069-204c-/resourceGroups/e7370607-8b6e-40d/providers/Microsoft.DocumentDB/databaseAccounts/9d90a3e0-17/metricDefinitions"; + Requests[2382] = new DefaultHttpContext(); + Requests[2382].RequestServices = CreateServices(); + Requests[2382].Request.Method = "GET"; + Requests[2382].Request.Path = "/subscriptions/a103bed0-e379-/resourceGroups/488d5a08-75fa-447/providers/Microsoft.DocumentDB/databaseAccounts/8664d213-4c/metrics"; + Requests[2383] = new DefaultHttpContext(); + Requests[2383].RequestServices = CreateServices(); + Requests[2383].Request.Method = "POST"; + Requests[2383].Request.Path = "/subscriptions/a1376f80-398b-/resourceGroups/5c530738-9bdb-4af/providers/Microsoft.DocumentDB/databaseAccounts/662e0ff1-f3/offlineRegion"; + Requests[2384] = new DefaultHttpContext(); + Requests[2384].RequestServices = CreateServices(); + Requests[2384].Request.Method = "POST"; + Requests[2384].Request.Path = "/subscriptions/832899e8-b826-/resourceGroups/b049ad9e-0d36-400/providers/Microsoft.DocumentDB/databaseAccounts/54da2e7e-ff/onlineRegion"; + Requests[2385] = new DefaultHttpContext(); + Requests[2385].RequestServices = CreateServices(); + Requests[2385].Request.Method = "GET"; + Requests[2385].Request.Path = "/subscriptions/f91ef0f1-b358-/resourceGroups/65cb22f6-9aa3-4fb/providers/Microsoft.DocumentDB/databaseAccounts/98719802-1a/readonlykeys"; + Requests[2386] = new DefaultHttpContext(); + Requests[2386].RequestServices = CreateServices(); + Requests[2386].Request.Method = "POST"; + Requests[2386].Request.Path = "/subscriptions/2b2ae487-67d4-/resourceGroups/67285803-dd50-4c8/providers/Microsoft.DocumentDB/databaseAccounts/476d8789-f2/regenerateKey"; + Requests[2387] = new DefaultHttpContext(); + Requests[2387].RequestServices = CreateServices(); + Requests[2387].Request.Method = "GET"; + Requests[2387].Request.Path = "/subscriptions/63fc87ee-f13b-/resourceGroups/068d32fd-ae46-45b/providers/Microsoft.DocumentDB/databaseAccounts/84d19579-d6/usages"; + Requests[2388] = new DefaultHttpContext(); + Requests[2388].RequestServices = CreateServices(); + Requests[2388].Request.Method = "GET"; + Requests[2388].Request.Path = "/subscriptions/da04cb18-7b0c-/resourceGroups/11064f0a-0c02-4db/providers/Microsoft.DomainRegistration/domains/b57eefc1-7/domainOwnershipIdentifiers"; + Requests[2389] = new DefaultHttpContext(); + Requests[2389].RequestServices = CreateServices(); + Requests[2389].Request.Method = "POST"; + Requests[2389].Request.Path = "/subscriptions/b0afacb5-379a-/resourceGroups/b42cb630-938c-4bb/providers/Microsoft.DomainRegistration/domains/b8fd0a90-6/renew"; + Requests[2390] = new DefaultHttpContext(); + Requests[2390].RequestServices = CreateServices(); + Requests[2390].Request.Method = "GET"; + Requests[2390].Request.Path = "/subscriptions/3daabbf0-3fa6-/resourceGroups/72525e02-b11f-49c/providers/Microsoft.EventGrid/locations/00c3d84f/eventSubscriptions"; + Requests[2391] = new DefaultHttpContext(); + Requests[2391].RequestServices = CreateServices(); + Requests[2391].Request.Method = "POST"; + Requests[2391].Request.Path = "/subscriptions/3f4afd71-0725-/resourceGroups/f4eca3a2-4766-4a9/providers/Microsoft.EventGrid/topics/4b092c32-/listKeys"; + Requests[2392] = new DefaultHttpContext(); + Requests[2392].RequestServices = CreateServices(); + Requests[2392].Request.Method = "POST"; + Requests[2392].Request.Path = "/subscriptions/73a20738-f036-/resourceGroups/79a3b705-5a56-479/providers/Microsoft.EventGrid/topics/7f4dd137-/regenerateKey"; + Requests[2393] = new DefaultHttpContext(); + Requests[2393].RequestServices = CreateServices(); + Requests[2393].Request.Method = "GET"; + Requests[2393].Request.Path = "/subscriptions/2b5be291-7f6f-/resourceGroups/0b0d83c6-e29f-4b3/providers/Microsoft.EventGrid/topicTypes/ec7ca112-e00a/eventSubscriptions"; + Requests[2394] = new DefaultHttpContext(); + Requests[2394].RequestServices = CreateServices(); + Requests[2394].Request.Method = "POST"; + Requests[2394].Request.Path = "/subscriptions/f2ad7b75-f010-/resourceGroups/d9bed0a9-4566-432/providers/Microsoft.EventHub/namespaces/129ee83c-7af6/AuthorizationRules"; + Requests[2395] = new DefaultHttpContext(); + Requests[2395].RequestServices = CreateServices(); + Requests[2395].Request.Method = "GET"; + Requests[2395].Request.Path = "/subscriptions/3d39d85b-e926-/resourceGroups/2b360384-3229-4c8/providers/Microsoft.EventHub/namespaces/b2a6a6b6-955d/AuthorizationRules"; + Requests[2396] = new DefaultHttpContext(); + Requests[2396].RequestServices = CreateServices(); + Requests[2396].Request.Method = "GET"; + Requests[2396].Request.Path = "/subscriptions/6d142232-bd52-/resourceGroups/7943304f-d364-43e/providers/Microsoft.EventHub/namespaces/9ce0676a-4eb9/disasterRecoveryConfigs"; + Requests[2397] = new DefaultHttpContext(); + Requests[2397].RequestServices = CreateServices(); + Requests[2397].Request.Method = "GET"; + Requests[2397].Request.Path = "/subscriptions/3cbf6b9a-0a68-/resourceGroups/b2076a95-e483-43c/providers/Microsoft.EventHub/namespaces/e6a7dd25-9cf9/eventhubs"; + Requests[2398] = new DefaultHttpContext(); + Requests[2398].RequestServices = CreateServices(); + Requests[2398].Request.Method = "GET"; + Requests[2398].Request.Path = "/subscriptions/8ccd4f0f-c859-/resourceGroups/e58d9131-51a1-4fc/providers/Microsoft.EventHub/namespaces/610d2991-d2c5/messagingplan"; + Requests[2399] = new DefaultHttpContext(); + Requests[2399].RequestServices = CreateServices(); + Requests[2399].Request.Method = "GET"; + Requests[2399].Request.Path = "/subscriptions/392f50fc-8ccb-/resourceGroups/155cd4e4-71ad-4a7/providers/Microsoft.Fabric.Admin/fabricLocations/6028f335/edgeGatewayPools"; + Requests[2400] = new DefaultHttpContext(); + Requests[2400].RequestServices = CreateServices(); + Requests[2400].Request.Method = "GET"; + Requests[2400].Request.Path = "/subscriptions/1f883658-d94c-/resourceGroups/fe8b3382-0575-499/providers/Microsoft.Fabric.Admin/fabricLocations/61b336b3/edgeGateways"; + Requests[2401] = new DefaultHttpContext(); + Requests[2401].RequestServices = CreateServices(); + Requests[2401].Request.Method = "GET"; + Requests[2401].Request.Path = "/subscriptions/12781d36-3f1c-/resourceGroups/55000685-4937-476/providers/Microsoft.Fabric.Admin/fabricLocations/f871b07b/fileShares"; + Requests[2402] = new DefaultHttpContext(); + Requests[2402].RequestServices = CreateServices(); + Requests[2402].Request.Method = "GET"; + Requests[2402].Request.Path = "/subscriptions/91c773c7-83a9-/resourceGroups/958b16c3-971f-4bc/providers/Microsoft.Fabric.Admin/fabricLocations/d798dd04/infraRoleInstances"; + Requests[2403] = new DefaultHttpContext(); + Requests[2403].RequestServices = CreateServices(); + Requests[2403].Request.Method = "GET"; + Requests[2403].Request.Path = "/subscriptions/77dcc0cb-917a-/resourceGroups/fbfec1d6-2e3b-499/providers/Microsoft.Fabric.Admin/fabricLocations/c2b383c7/infraRoles"; + Requests[2404] = new DefaultHttpContext(); + Requests[2404].RequestServices = CreateServices(); + Requests[2404].Request.Method = "GET"; + Requests[2404].Request.Path = "/subscriptions/e9889d94-a4bd-/resourceGroups/0b02a36b-f88b-451/providers/Microsoft.Fabric.Admin/fabricLocations/fe876785/ipPools"; + Requests[2405] = new DefaultHttpContext(); + Requests[2405].RequestServices = CreateServices(); + Requests[2405].Request.Method = "GET"; + Requests[2405].Request.Path = "/subscriptions/8b46d9a0-83c2-/resourceGroups/ca618674-cc6d-4e5/providers/Microsoft.Fabric.Admin/fabricLocations/bae94e27/logicalNetworks"; + Requests[2406] = new DefaultHttpContext(); + Requests[2406].RequestServices = CreateServices(); + Requests[2406].Request.Method = "GET"; + Requests[2406].Request.Path = "/subscriptions/f06fd3b8-7609-/resourceGroups/8dfde893-c77e-4e0/providers/Microsoft.Fabric.Admin/fabricLocations/492ce36e/macAddressPools"; + Requests[2407] = new DefaultHttpContext(); + Requests[2407].RequestServices = CreateServices(); + Requests[2407].Request.Method = "GET"; + Requests[2407].Request.Path = "/subscriptions/f8708a2a-bbed-/resourceGroups/0155d07b-7049-425/providers/Microsoft.Fabric.Admin/fabricLocations/babdfa15/scaleUnitNodes"; + Requests[2408] = new DefaultHttpContext(); + Requests[2408].RequestServices = CreateServices(); + Requests[2408].Request.Method = "GET"; + Requests[2408].Request.Path = "/subscriptions/8b1cd55e-cab8-/resourceGroups/f570f3c4-a64d-4bd/providers/Microsoft.Fabric.Admin/fabricLocations/2d873c62/scaleUnits"; + Requests[2409] = new DefaultHttpContext(); + Requests[2409].RequestServices = CreateServices(); + Requests[2409].Request.Method = "GET"; + Requests[2409].Request.Path = "/subscriptions/833a2ed3-b181-/resourceGroups/e8c9e308-c345-47f/providers/Microsoft.Fabric.Admin/fabricLocations/3f57c767/slbMuxInstances"; + Requests[2410] = new DefaultHttpContext(); + Requests[2410].RequestServices = CreateServices(); + Requests[2410].Request.Method = "GET"; + Requests[2410].Request.Path = "/subscriptions/2a23a705-c889-/resourceGroups/c40833b2-e43a-45c/providers/Microsoft.Fabric.Admin/fabricLocations/6d027a1b/storageSubSystems"; + Requests[2411] = new DefaultHttpContext(); + Requests[2411].RequestServices = CreateServices(); + Requests[2411].Request.Method = "GET"; + Requests[2411].Request.Path = "/subscriptions/6f782003-89e8-/resourceGroups/95200c2f-d7f2-478/providers/Microsoft.HDInsight/clusters/7fe5ae9c-03/applications"; + Requests[2412] = new DefaultHttpContext(); + Requests[2412].RequestServices = CreateServices(); + Requests[2412].Request.Method = "POST"; + Requests[2412].Request.Path = "/subscriptions/d6f5c3e5-869f-/resourceGroups/741b23fd-a9e6-40a/providers/Microsoft.HDInsight/clusters/52ff7ece-32/executeScriptActions"; + Requests[2413] = new DefaultHttpContext(); + Requests[2413].RequestServices = CreateServices(); + Requests[2413].Request.Method = "GET"; + Requests[2413].Request.Path = "/subscriptions/44f85668-d80a-/resourceGroups/082a6457-9738-485/providers/Microsoft.HDInsight/clusters/82dedf91-ff/scriptActions"; + Requests[2414] = new DefaultHttpContext(); + Requests[2414].RequestServices = CreateServices(); + Requests[2414].Request.Method = "GET"; + Requests[2414].Request.Path = "/subscriptions/120db55e-2967-/resourceGroups/31ce5be0-100b-424/providers/Microsoft.HDInsight/clusters/afbd9bc3-12/scriptExecutionHistory"; + Requests[2415] = new DefaultHttpContext(); + Requests[2415].RequestServices = CreateServices(); + Requests[2415].Request.Method = "POST"; + Requests[2415].Request.Path = "/subscriptions/6edcda91-76a9-/resourceGroups/78c554bb-b985-425/providers/Microsoft.ImportExport/jobs/8d06b23/listBitLockerKeys"; + Requests[2416] = new DefaultHttpContext(); + Requests[2416].RequestServices = CreateServices(); + Requests[2416].Request.Method = "GET"; + Requests[2416].Request.Path = "/subscriptions/36621aae-6baa-/resourceGroups/fbee9e40-64a2-4bc/providers/Microsoft.InfrastructureInsights.Admin/regionHealths/48a55622/alerts"; + Requests[2417] = new DefaultHttpContext(); + Requests[2417].RequestServices = CreateServices(); + Requests[2417].Request.Method = "GET"; + Requests[2417].Request.Path = "/subscriptions/426311ba-914b-/resourceGroups/4c220240-449b-4f3/providers/Microsoft.InfrastructureInsights.Admin/regionHealths/1f8a7d92/serviceHealths"; + Requests[2418] = new DefaultHttpContext(); + Requests[2418].RequestServices = CreateServices(); + Requests[2418].Request.Method = "POST"; + Requests[2418].Request.Path = "/subscriptions/d9009777-f6e4-/resourceGroups/81605d0c-5348-409/providers/microsoft.insights/actionGroups/bc59baed-1fb3-4/subscribe"; + Requests[2419] = new DefaultHttpContext(); + Requests[2419].RequestServices = CreateServices(); + Requests[2419].Request.Method = "GET"; + Requests[2419].Request.Path = "/subscriptions/3f3288b5-bc14-/resourcegroups/daaeaeb2-0396-44f/providers/microsoft.insights/alertrules/c07f67af/incidents"; + Requests[2420] = new DefaultHttpContext(); + Requests[2420].RequestServices = CreateServices(); + Requests[2420].Request.Method = "GET"; + Requests[2420].Request.Path = "/subscriptions/3b6e5052-0ca5-/resourceGroups/0d2cda6f-5139-421/providers/Microsoft.Insights/components/0cebe3c4-a326/webtests"; + Requests[2421] = new DefaultHttpContext(); + Requests[2421].RequestServices = CreateServices(); + Requests[2421].Request.Method = "PUT"; + Requests[2421].Request.Path = "/subscriptions/02169175-6bc8-/resourceGroups/d4ae599b-223c-46f/providers/Microsoft.Insights/components/fd311d09-2c5/Annotations"; + Requests[2422] = new DefaultHttpContext(); + Requests[2422].RequestServices = CreateServices(); + Requests[2422].Request.Method = "GET"; + Requests[2422].Request.Path = "/subscriptions/ca0ea866-2542-/resourceGroups/7399622e-81e2-47c/providers/Microsoft.Insights/components/0cdc335c-519/Annotations"; + Requests[2423] = new DefaultHttpContext(); + Requests[2423].RequestServices = CreateServices(); + Requests[2423].Request.Method = "GET"; + Requests[2423].Request.Path = "/subscriptions/6b1486e6-525a-/resourceGroups/528df4e2-39b4-473/providers/Microsoft.Insights/components/93079dc7-f20/ApiKeys"; + Requests[2424] = new DefaultHttpContext(); + Requests[2424].RequestServices = CreateServices(); + Requests[2424].Request.Method = "POST"; + Requests[2424].Request.Path = "/subscriptions/5ce6f766-b661-/resourceGroups/03095bf0-15e0-47f/providers/Microsoft.Insights/components/8ece28c7-c73/ApiKeys"; + Requests[2425] = new DefaultHttpContext(); + Requests[2425].RequestServices = CreateServices(); + Requests[2425].Request.Method = "PUT"; + Requests[2425].Request.Path = "/subscriptions/b68d7b37-3bb9-/resourceGroups/8f2c9140-4863-473/providers/Microsoft.Insights/components/81b185c0-114/currentbillingfeatures"; + Requests[2426] = new DefaultHttpContext(); + Requests[2426].RequestServices = CreateServices(); + Requests[2426].Request.Method = "GET"; + Requests[2426].Request.Path = "/subscriptions/d2ff1134-5583-/resourceGroups/ad87d64c-503e-4f6/providers/Microsoft.Insights/components/3d6299bc-90a/currentbillingfeatures"; + Requests[2427] = new DefaultHttpContext(); + Requests[2427].RequestServices = CreateServices(); + Requests[2427].Request.Method = "GET"; + Requests[2427].Request.Path = "/subscriptions/5b603267-9167-/resourceGroups/1bcf371f-7887-45c/providers/Microsoft.Insights/components/d0057ccd-7a5/DefaultWorkItemConfig"; + Requests[2428] = new DefaultHttpContext(); + Requests[2428].RequestServices = CreateServices(); + Requests[2428].Request.Method = "POST"; + Requests[2428].Request.Path = "/subscriptions/76ed07d7-a36e-/resourceGroups/6095f8fe-7da2-4bc/providers/Microsoft.Insights/components/62528b6f-45a/exportconfiguration"; + Requests[2429] = new DefaultHttpContext(); + Requests[2429].RequestServices = CreateServices(); + Requests[2429].Request.Method = "GET"; + Requests[2429].Request.Path = "/subscriptions/70789e34-8a3d-/resourceGroups/1cd4b96e-5a8c-482/providers/Microsoft.Insights/components/aec8b67b-5f7/exportconfiguration"; + Requests[2430] = new DefaultHttpContext(); + Requests[2430].RequestServices = CreateServices(); + Requests[2430].Request.Method = "GET"; + Requests[2430].Request.Path = "/subscriptions/1f5640a1-a1b2-/resourceGroups/5af995c3-b3a2-415/providers/Microsoft.Insights/components/abc57574-475/favorites"; + Requests[2431] = new DefaultHttpContext(); + Requests[2431].RequestServices = CreateServices(); + Requests[2431].Request.Method = "GET"; + Requests[2431].Request.Path = "/subscriptions/7b44cc5a-ea3c-/resourceGroups/871924ce-3fed-468/providers/Microsoft.Insights/components/6dd11bc3-306/featurecapabilities"; + Requests[2432] = new DefaultHttpContext(); + Requests[2432].RequestServices = CreateServices(); + Requests[2432].Request.Method = "GET"; + Requests[2432].Request.Path = "/subscriptions/02b4ef49-d4b3-/resourceGroups/1bab2cad-ba16-4c6/providers/Microsoft.Insights/components/c44ca8c5-3b4/getavailablebillingfeatures"; + Requests[2433] = new DefaultHttpContext(); + Requests[2433].RequestServices = CreateServices(); + Requests[2433].Request.Method = "GET"; + Requests[2433].Request.Path = "/subscriptions/8347daba-3447-/resourceGroups/71e6d8de-7b79-49f/providers/Microsoft.Insights/components/3846c1e7-788/ProactiveDetectionConfigs"; + Requests[2434] = new DefaultHttpContext(); + Requests[2434].RequestServices = CreateServices(); + Requests[2434].Request.Method = "POST"; + Requests[2434].Request.Path = "/subscriptions/9674bb72-0606-/resourceGroups/a954179b-41ef-4c9/providers/Microsoft.Insights/components/e48ed1b0-ad0/purge"; + Requests[2435] = new DefaultHttpContext(); + Requests[2435].RequestServices = CreateServices(); + Requests[2435].Request.Method = "GET"; + Requests[2435].Request.Path = "/subscriptions/fcd1bb21-7747-/resourceGroups/b159f2e3-1bc5-41e/providers/Microsoft.Insights/components/cd31ed42-673/quotastatus"; + Requests[2436] = new DefaultHttpContext(); + Requests[2436].RequestServices = CreateServices(); + Requests[2436].Request.Method = "GET"; + Requests[2436].Request.Path = "/subscriptions/12d1122c-6b64-/resourceGroups/34666675-a751-40b/providers/Microsoft.Insights/components/93a63655-9d3/syntheticmonitorlocations"; + Requests[2437] = new DefaultHttpContext(); + Requests[2437].RequestServices = CreateServices(); + Requests[2437].Request.Method = "GET"; + Requests[2437].Request.Path = "/subscriptions/5d11ff98-778d-/resourceGroups/626c0991-4343-45b/providers/Microsoft.Insights/components/eac801f1-fab/WorkItemConfigs"; + Requests[2438] = new DefaultHttpContext(); + Requests[2438].RequestServices = CreateServices(); + Requests[2438].Request.Method = "POST"; + Requests[2438].Request.Path = "/subscriptions/fbad2c35-7ee9-/resourceGroups/3af28f67-0272-4e7/providers/Microsoft.Insights/components/e0ef114e-bbe/WorkItemConfigs"; + Requests[2439] = new DefaultHttpContext(); + Requests[2439].RequestServices = CreateServices(); + Requests[2439].Request.Method = "GET"; + Requests[2439].Request.Path = "/subscriptions/83fa995e-53f0-/resourceGroups/e233caa1-a230-43a/providers/Microsoft.Insights/metricAlerts/f420e3f2/status"; + Requests[2440] = new DefaultHttpContext(); + Requests[2440].RequestServices = CreateServices(); + Requests[2440].Request.Method = "GET"; + Requests[2440].Request.Path = "/subscriptions/59960f61-a719-/resourceGroups/5405a2e9-b3cf-4d6/providers/Microsoft.KeyVault/vaults/24b1c79b-/secrets"; + Requests[2441] = new DefaultHttpContext(); + Requests[2441].RequestServices = CreateServices(); + Requests[2441].Request.Method = "GET"; + Requests[2441].Request.Path = "/subscriptions/0d6d1ef6-abd5-/resourceGroups/fb8bdcbe-5cd8-43e/providers/Microsoft.Logic/integrationAccounts/43136dc1-6a1e-41eb-87c/agreements"; + Requests[2442] = new DefaultHttpContext(); + Requests[2442].RequestServices = CreateServices(); + Requests[2442].Request.Method = "GET"; + Requests[2442].Request.Path = "/subscriptions/9dd209a3-3f6e-/resourceGroups/a5e34aaf-56aa-464/providers/Microsoft.Logic/integrationAccounts/e842b239-1c02-4508-8cc/assemblies"; + Requests[2443] = new DefaultHttpContext(); + Requests[2443].RequestServices = CreateServices(); + Requests[2443].Request.Method = "GET"; + Requests[2443].Request.Path = "/subscriptions/430254b2-159f-/resourceGroups/0c1efcfc-9aaa-4f9/providers/Microsoft.Logic/integrationAccounts/6ff327c1-1008-45f0-9ad/batchConfigurations"; + Requests[2444] = new DefaultHttpContext(); + Requests[2444].RequestServices = CreateServices(); + Requests[2444].Request.Method = "GET"; + Requests[2444].Request.Path = "/subscriptions/eed709a5-ce5b-/resourceGroups/b33f9643-a223-45d/providers/Microsoft.Logic/integrationAccounts/5bff32b5-c342-4bb6-ae9/certificates"; + Requests[2445] = new DefaultHttpContext(); + Requests[2445].RequestServices = CreateServices(); + Requests[2445].Request.Method = "POST"; + Requests[2445].Request.Path = "/subscriptions/22d36142-e207-/resourceGroups/a95f462b-4724-482/providers/Microsoft.Logic/integrationAccounts/2fbae2b4-71b7-431c-986/listCallbackUrl"; + Requests[2446] = new DefaultHttpContext(); + Requests[2446].RequestServices = CreateServices(); + Requests[2446].Request.Method = "POST"; + Requests[2446].Request.Path = "/subscriptions/a925e4f7-86fd-/resourceGroups/441a770e-a534-49f/providers/Microsoft.Logic/integrationAccounts/6e233e25-4f2e-4655-975/listKeyVaultKeys"; + Requests[2447] = new DefaultHttpContext(); + Requests[2447].RequestServices = CreateServices(); + Requests[2447].Request.Method = "POST"; + Requests[2447].Request.Path = "/subscriptions/3d197d87-3dad-/resourceGroups/82cc607c-2b40-4a3/providers/Microsoft.Logic/integrationAccounts/db1f2bed-479e-4876-9d0/logTrackingEvents"; + Requests[2448] = new DefaultHttpContext(); + Requests[2448].RequestServices = CreateServices(); + Requests[2448].Request.Method = "GET"; + Requests[2448].Request.Path = "/subscriptions/d4ae2de4-552c-/resourceGroups/2b8baf8d-a5e6-4f1/providers/Microsoft.Logic/integrationAccounts/ef0e4cfc-fe51-4fde-972/maps"; + Requests[2449] = new DefaultHttpContext(); + Requests[2449].RequestServices = CreateServices(); + Requests[2449].Request.Method = "GET"; + Requests[2449].Request.Path = "/subscriptions/ce8640e5-8dcd-/resourceGroups/e6b587dc-4d20-436/providers/Microsoft.Logic/integrationAccounts/ce91ea4c-4a50-4c51-89a/partners"; + Requests[2450] = new DefaultHttpContext(); + Requests[2450].RequestServices = CreateServices(); + Requests[2450].Request.Method = "POST"; + Requests[2450].Request.Path = "/subscriptions/c95e4875-9391-/resourceGroups/342473bd-403b-461/providers/Microsoft.Logic/integrationAccounts/512d79c7-6bc2-4f50-9ae/regenerateAccessKey"; + Requests[2451] = new DefaultHttpContext(); + Requests[2451].RequestServices = CreateServices(); + Requests[2451].Request.Method = "GET"; + Requests[2451].Request.Path = "/subscriptions/622dc1b4-f9cc-/resourceGroups/1ee72e25-73fa-475/providers/Microsoft.Logic/integrationAccounts/84005798-52ac-4c50-827/schemas"; + Requests[2452] = new DefaultHttpContext(); + Requests[2452].RequestServices = CreateServices(); + Requests[2452].Request.Method = "GET"; + Requests[2452].Request.Path = "/subscriptions/39152a41-c5a4-/resourceGroups/7c192b1d-41b2-4b0/providers/Microsoft.Logic/integrationAccounts/c2be329d-8094-4500-84d/sessions"; + Requests[2453] = new DefaultHttpContext(); + Requests[2453].RequestServices = CreateServices(); + Requests[2453].Request.Method = "GET"; + Requests[2453].Request.Path = "/subscriptions/7fa871b9-0d77-/resourceGroups/b7e9655f-8033-422/providers/Microsoft.Logic/workflows/2fece0c5-102/accessKeys"; + Requests[2454] = new DefaultHttpContext(); + Requests[2454].RequestServices = CreateServices(); + Requests[2454].Request.Method = "POST"; + Requests[2454].Request.Path = "/subscriptions/b18ad83f-3139-/resourceGroups/fdbca50a-af58-474/providers/Microsoft.Logic/workflows/14262dcb-b25/disable"; + Requests[2455] = new DefaultHttpContext(); + Requests[2455].RequestServices = CreateServices(); + Requests[2455].Request.Method = "POST"; + Requests[2455].Request.Path = "/subscriptions/25b6b1d7-4586-/resourceGroups/896eefbd-22a2-495/providers/Microsoft.Logic/workflows/01318ecf-8f6/enable"; + Requests[2456] = new DefaultHttpContext(); + Requests[2456].RequestServices = CreateServices(); + Requests[2456].Request.Method = "POST"; + Requests[2456].Request.Path = "/subscriptions/82c7aa6e-9bef-/resourceGroups/da499722-2456-42d/providers/Microsoft.Logic/workflows/d4bc5d05-421/generateUpgradedDefinition"; + Requests[2457] = new DefaultHttpContext(); + Requests[2457].RequestServices = CreateServices(); + Requests[2457].Request.Method = "POST"; + Requests[2457].Request.Path = "/subscriptions/81cffe24-bd07-/resourceGroups/f50cc3b5-da2f-46b/providers/Microsoft.Logic/workflows/e50f0aee-d7a/listCallbackUrl"; + Requests[2458] = new DefaultHttpContext(); + Requests[2458].RequestServices = CreateServices(); + Requests[2458].Request.Method = "POST"; + Requests[2458].Request.Path = "/subscriptions/2e758515-82f2-/resourceGroups/7ef90a3b-9c97-42f/providers/Microsoft.Logic/workflows/24dfbe98-780/listSwagger"; + Requests[2459] = new DefaultHttpContext(); + Requests[2459].RequestServices = CreateServices(); + Requests[2459].Request.Method = "POST"; + Requests[2459].Request.Path = "/subscriptions/70504882-1100-/resourceGroups/174200c1-ff2b-443/providers/Microsoft.Logic/workflows/211e6328-0c3/move"; + Requests[2460] = new DefaultHttpContext(); + Requests[2460].RequestServices = CreateServices(); + Requests[2460].Request.Method = "POST"; + Requests[2460].Request.Path = "/subscriptions/da0226c0-753a-/resourceGroups/9f034559-29b8-488/providers/Microsoft.Logic/workflows/4c1c986a-61d/regenerateAccessKey"; + Requests[2461] = new DefaultHttpContext(); + Requests[2461].RequestServices = CreateServices(); + Requests[2461].Request.Method = "POST"; + Requests[2461].Request.Path = "/subscriptions/ab2aa36c-b4f8-/resourceGroups/2d630230-c02a-4cd/providers/Microsoft.Logic/workflows/d7acdcf6-003/run"; + Requests[2462] = new DefaultHttpContext(); + Requests[2462].RequestServices = CreateServices(); + Requests[2462].Request.Method = "GET"; + Requests[2462].Request.Path = "/subscriptions/9f242de0-0ce6-/resourceGroups/765a4cfa-602b-470/providers/Microsoft.Logic/workflows/6dc2a4a5-07c/runs"; + Requests[2463] = new DefaultHttpContext(); + Requests[2463].RequestServices = CreateServices(); + Requests[2463].Request.Method = "GET"; + Requests[2463].Request.Path = "/subscriptions/fb2b0ef0-b3ae-/resourceGroups/537056af-1c03-450/providers/Microsoft.Logic/workflows/c69df099-503/triggers"; + Requests[2464] = new DefaultHttpContext(); + Requests[2464].RequestServices = CreateServices(); + Requests[2464].Request.Method = "POST"; + Requests[2464].Request.Path = "/subscriptions/4f0a70dd-c942-/resourceGroups/5f0e7aea-d1a0-4b0/providers/Microsoft.Logic/workflows/a1f4cc1d-e44/validate"; + Requests[2465] = new DefaultHttpContext(); + Requests[2465].RequestServices = CreateServices(); + Requests[2465].Request.Method = "GET"; + Requests[2465].Request.Path = "/subscriptions/a784c792-16f1-/resourceGroups/788be499-5c26-45f/providers/Microsoft.Logic/workflows/4b0c6783-1e6/versions"; + Requests[2466] = new DefaultHttpContext(); + Requests[2466].RequestServices = CreateServices(); + Requests[2466].Request.Method = "GET"; + Requests[2466].Request.Path = "/subscriptions/687006eb-3942-/resourceGroups/de05b370-096f-476/providers/Microsoft.MachineLearning/commitmentPlans/8a281bb6-d0e3-4f1d/commitmentAssociations"; + Requests[2467] = new DefaultHttpContext(); + Requests[2467].RequestServices = CreateServices(); + Requests[2467].Request.Method = "GET"; + Requests[2467].Request.Path = "/subscriptions/6676e290-39e9-/resourceGroups/35fded2e-7a87-4f9/providers/Microsoft.MachineLearning/commitmentPlans/e0b72c32-18b9-47fc/usageHistory"; + Requests[2468] = new DefaultHttpContext(); + Requests[2468].RequestServices = CreateServices(); + Requests[2468].Request.Method = "POST"; + Requests[2468].Request.Path = "/subscriptions/1fb0005c-57ea-/resourceGroups/d86037b8-6377-447/providers/Microsoft.MachineLearning/webServices/30b17d6c-1202-/CreateRegionalBlob"; + Requests[2469] = new DefaultHttpContext(); + Requests[2469].RequestServices = CreateServices(); + Requests[2469].Request.Method = "GET"; + Requests[2469].Request.Path = "/subscriptions/7add62db-4a58-/resourceGroups/4569970c-8d3e-428/providers/Microsoft.MachineLearning/webServices/7dd5bea2-7e39-/listKeys"; + Requests[2470] = new DefaultHttpContext(); + Requests[2470].RequestServices = CreateServices(); + Requests[2470].Request.Method = "POST"; + Requests[2470].Request.Path = "/subscriptions/5b87bc69-7eda-/resourceGroups/e4ce4933-6aa4-40d/providers/Microsoft.MachineLearning/workspaces/200597cd-0731/listWorkspaceKeys"; + Requests[2471] = new DefaultHttpContext(); + Requests[2471].RequestServices = CreateServices(); + Requests[2471].Request.Method = "POST"; + Requests[2471].Request.Path = "/subscriptions/9b736de6-ddee-/resourceGroups/c9009192-cdae-410/providers/Microsoft.MachineLearning/workspaces/e9d828a9-5122/resyncStorageKeys"; + Requests[2472] = new DefaultHttpContext(); + Requests[2472].RequestServices = CreateServices(); + Requests[2472].Request.Method = "POST"; + Requests[2472].Request.Path = "/subscriptions/ed4ab297-45c0-/resourceGroups/369bcd04-6b13-44a/providers/Microsoft.MachineLearningCompute/operationalizationClusters/45274610-4e/checkSystemServicesUpdatesAvailable"; + Requests[2473] = new DefaultHttpContext(); + Requests[2473].RequestServices = CreateServices(); + Requests[2473].Request.Method = "POST"; + Requests[2473].Request.Path = "/subscriptions/007f74f6-8803-/resourceGroups/58a4917a-c1c3-4a7/providers/Microsoft.MachineLearningCompute/operationalizationClusters/dcba7da8-17/checkUpdate"; + Requests[2474] = new DefaultHttpContext(); + Requests[2474].RequestServices = CreateServices(); + Requests[2474].Request.Method = "POST"; + Requests[2474].Request.Path = "/subscriptions/2ce62f6e-b444-/resourceGroups/0705efd7-e10b-480/providers/Microsoft.MachineLearningCompute/operationalizationClusters/806c483b-89/listKeys"; + Requests[2475] = new DefaultHttpContext(); + Requests[2475].RequestServices = CreateServices(); + Requests[2475].Request.Method = "POST"; + Requests[2475].Request.Path = "/subscriptions/381967f8-b0c8-/resourceGroups/b7ea4fca-ff22-4fc/providers/Microsoft.MachineLearningCompute/operationalizationClusters/e871889b-67/updateSystem"; + Requests[2476] = new DefaultHttpContext(); + Requests[2476].RequestServices = CreateServices(); + Requests[2476].Request.Method = "POST"; + Requests[2476].Request.Path = "/subscriptions/6aee2c0f-f391-/resourceGroups/9d0b298f-eac3-453/providers/Microsoft.MachineLearningCompute/operationalizationClusters/a6897f89-c4/updateSystemServices"; + Requests[2477] = new DefaultHttpContext(); + Requests[2477].RequestServices = CreateServices(); + Requests[2477].Request.Method = "GET"; + Requests[2477].Request.Path = "/subscriptions/1572af86-5885-/resourceGroups/4a3976ce-a217-48b/providers/Microsoft.MachineLearningExperimentation/accounts/81a20d99-1c/workspaces"; + Requests[2478] = new DefaultHttpContext(); + Requests[2478].RequestServices = CreateServices(); + Requests[2478].Request.Method = "POST"; + Requests[2478].Request.Path = "/subscriptions/f3c04d31-4f19-/resourceGroups/32406294-fd5b-4e8/providers/Microsoft.MachineLearningServices/workspaces/779ed6cf-a34f/listKeys"; + Requests[2479] = new DefaultHttpContext(); + Requests[2479].RequestServices = CreateServices(); + Requests[2479].Request.Method = "POST"; + Requests[2479].Request.Path = "/subscriptions/7caad3ef-ece3-/resourceGroups/6f20152c-21e8-4fd/providers/Microsoft.MachineLearningServices/workspaces/a6343a66-19e7/resyncKeys"; + Requests[2480] = new DefaultHttpContext(); + Requests[2480].RequestServices = CreateServices(); + Requests[2480].Request.Method = "POST"; + Requests[2480].Request.Path = "/subscriptions/fec878ef-7ad5-/resourceGroups/0f1db200-73a6-416/providers/Microsoft.Maps/accounts/98b6794e-2e/listKeys"; + Requests[2481] = new DefaultHttpContext(); + Requests[2481].RequestServices = CreateServices(); + Requests[2481].Request.Method = "POST"; + Requests[2481].Request.Path = "/subscriptions/e983b564-6a12-/resourceGroups/28ce4e2b-f17e-4ca/providers/Microsoft.Maps/accounts/10a16b33-f4/regenerateKey"; + Requests[2482] = new DefaultHttpContext(); + Requests[2482].RequestServices = CreateServices(); + Requests[2482].Request.Method = "GET"; + Requests[2482].Request.Path = "/subscriptions/650fea78-31d7-/resourceGroups/0a5868d1-9950-45f/providers/Microsoft.Media/mediaServices/3ec27ab8-79/assets"; + Requests[2483] = new DefaultHttpContext(); + Requests[2483].RequestServices = CreateServices(); + Requests[2483].Request.Method = "GET"; + Requests[2483].Request.Path = "/subscriptions/e4f6399c-914b-/resourceGroups/90e0d438-446c-49e/providers/Microsoft.Media/mediaServices/fd910963-fb/contentKeyPolicies"; + Requests[2484] = new DefaultHttpContext(); + Requests[2484].RequestServices = CreateServices(); + Requests[2484].Request.Method = "GET"; + Requests[2484].Request.Path = "/subscriptions/3a915b85-9855-/resourceGroups/f95f118a-dc19-4c6/providers/Microsoft.Media/mediaservices/4dd6f81a-9b/liveEvents"; + Requests[2485] = new DefaultHttpContext(); + Requests[2485].RequestServices = CreateServices(); + Requests[2485].Request.Method = "GET"; + Requests[2485].Request.Path = "/subscriptions/33bfed9f-4837-/resourceGroups/7678b3f8-26cb-431/providers/Microsoft.Media/mediaservices/bf5fdbe6-9a/streamingEndpoints"; + Requests[2486] = new DefaultHttpContext(); + Requests[2486].RequestServices = CreateServices(); + Requests[2486].Request.Method = "GET"; + Requests[2486].Request.Path = "/subscriptions/3897a437-ab22-/resourceGroups/e739d84f-481b-47a/providers/Microsoft.Media/mediaServices/ba8ee4fd-5a/streamingLocators"; + Requests[2487] = new DefaultHttpContext(); + Requests[2487].RequestServices = CreateServices(); + Requests[2487].Request.Method = "GET"; + Requests[2487].Request.Path = "/subscriptions/34a86834-d078-/resourceGroups/7a66d981-b0a1-4a2/providers/Microsoft.Media/mediaServices/81443267-d2/streamingPolicies"; + Requests[2488] = new DefaultHttpContext(); + Requests[2488].RequestServices = CreateServices(); + Requests[2488].Request.Method = "GET"; + Requests[2488].Request.Path = "/subscriptions/bcca70ae-b45a-/resourceGroups/84991711-41c7-464/providers/Microsoft.Media/mediaServices/a419ef57-8c/transforms"; + Requests[2489] = new DefaultHttpContext(); + Requests[2489].RequestServices = CreateServices(); + Requests[2489].Request.Method = "POST"; + Requests[2489].Request.Path = "/subscriptions/d0b4bb30-4fdc-/resourceGroups/b5278abe-f0e9-434/providers/Microsoft.Media/mediaservices/4ec5f31e-8a10-43/listKeys"; + Requests[2490] = new DefaultHttpContext(); + Requests[2490].RequestServices = CreateServices(); + Requests[2490].Request.Method = "POST"; + Requests[2490].Request.Path = "/subscriptions/a62fbd69-af9a-/resourceGroups/20a8eb9a-5ba4-40e/providers/Microsoft.Media/mediaservices/d5573144-2014-4d/regenerateKey"; + Requests[2491] = new DefaultHttpContext(); + Requests[2491].RequestServices = CreateServices(); + Requests[2491].Request.Method = "POST"; + Requests[2491].Request.Path = "/subscriptions/2864ac80-3cd1-/resourceGroups/a5a9cdcb-f96f-4d5/providers/Microsoft.Media/mediaservices/45b1b7c4-8563-4a/syncStorageKeys"; + Requests[2492] = new DefaultHttpContext(); + Requests[2492].RequestServices = CreateServices(); + Requests[2492].Request.Method = "GET"; + Requests[2492].Request.Path = "/subscriptions/e8d2da40-67da-/resourceGroups/c9621aac-20cf-4fe/providers/Microsoft.Migrate/projects/214674fb-f5/assessments"; + Requests[2493] = new DefaultHttpContext(); + Requests[2493].RequestServices = CreateServices(); + Requests[2493].Request.Method = "GET"; + Requests[2493].Request.Path = "/subscriptions/b9beb251-c62d-/resourceGroups/e34c664d-6a1b-4a9/providers/Microsoft.Migrate/projects/00aa9fbd-16/groups"; + Requests[2494] = new DefaultHttpContext(); + Requests[2494].RequestServices = CreateServices(); + Requests[2494].Request.Method = "POST"; + Requests[2494].Request.Path = "/subscriptions/cc535e66-c44c-/resourcegroups/100169f6-65f4-4c0/providers/Microsoft.Migrate/projects/01014f95-34/keys"; + Requests[2495] = new DefaultHttpContext(); + Requests[2495].RequestServices = CreateServices(); + Requests[2495].Request.Method = "GET"; + Requests[2495].Request.Path = "/subscriptions/d944dad3-b8ab-/resourceGroups/625ec46d-12fc-402/providers/Microsoft.Migrate/projects/6099e05c-21/machines"; + Requests[2496] = new DefaultHttpContext(); + Requests[2496].RequestServices = CreateServices(); + Requests[2496].Request.Method = "POST"; + Requests[2496].Request.Path = "/subscriptions/61a26768-f11a-/resourceGroups/7d86f419-6a03-4fc/providers/Microsoft.Network/applicationGateways/39f94cba-3521-4f80-b9d/backendhealth"; + Requests[2497] = new DefaultHttpContext(); + Requests[2497].RequestServices = CreateServices(); + Requests[2497].Request.Method = "POST"; + Requests[2497].Request.Path = "/subscriptions/0a056503-cd0c-/resourceGroups/16ac728d-2df0-43b/providers/Microsoft.Network/applicationGateways/f4b79f27-e424-4fcc-ba2/start"; + Requests[2498] = new DefaultHttpContext(); + Requests[2498].RequestServices = CreateServices(); + Requests[2498].Request.Method = "POST"; + Requests[2498].Request.Path = "/subscriptions/974b224b-dfdd-/resourceGroups/8608466c-874e-49e/providers/Microsoft.Network/applicationGateways/ff7ee07e-d2a2-4ff3-be2/stop"; + Requests[2499] = new DefaultHttpContext(); + Requests[2499].RequestServices = CreateServices(); + Requests[2499].Request.Method = "GET"; + Requests[2499].Request.Path = "/subscriptions/5acc9efd-fdb7-/resourceGroups/03fa8363-04c7-48a/providers/Microsoft.Network/connections/03256960-f6c8-423b-8cc8-5aa05901925/sharedkey"; + Requests[2500] = new DefaultHttpContext(); + Requests[2500].RequestServices = CreateServices(); + Requests[2500].Request.Method = "PUT"; + Requests[2500].Request.Path = "/subscriptions/4c13b784-52a0-/resourceGroups/d50796a7-ea1d-44f/providers/Microsoft.Network/connections/75175933-803e-4033-bbb0-85ed1312909/sharedkey"; + Requests[2501] = new DefaultHttpContext(); + Requests[2501].RequestServices = CreateServices(); + Requests[2501].Request.Method = "POST"; + Requests[2501].Request.Path = "/subscriptions/c02b18f5-9c9a-/resourceGroups/00d74d07-08a7-400/providers/Microsoft.Network/connections/0537e116-b3b9-47b0-84da-67a010e879a/vpndeviceconfigurationscript"; + Requests[2502] = new DefaultHttpContext(); + Requests[2502].RequestServices = CreateServices(); + Requests[2502].Request.Method = "GET"; + Requests[2502].Request.Path = "/subscriptions/5f59a0ed-aee1-/resourceGroups/55c49bc3-4729-42f/providers/Microsoft.Network/dnsZones/c82d7285/all"; + Requests[2503] = new DefaultHttpContext(); + Requests[2503].RequestServices = CreateServices(); + Requests[2503].Request.Method = "GET"; + Requests[2503].Request.Path = "/subscriptions/cb932a3d-a02f-/resourceGroups/3d026708-e6a9-41e/providers/Microsoft.Network/dnsZones/69d44dbe/recordsets"; + Requests[2504] = new DefaultHttpContext(); + Requests[2504].RequestServices = CreateServices(); + Requests[2504].Request.Method = "GET"; + Requests[2504].Request.Path = "/subscriptions/02f36d73-f34e-/resourceGroups/07b4df3e-fda7-4c8/providers/Microsoft.Network/expressRouteCircuits/02de2791-c2/arpTable"; + Requests[2505] = new DefaultHttpContext(); + Requests[2505].RequestServices = CreateServices(); + Requests[2505].Request.Method = "GET"; + Requests[2505].Request.Path = "/subscriptions/6f2bad0b-2e11-/resourceGroups/7e84ce27-7cc7-4b4/providers/Microsoft.Network/expressRouteCircuits/80f7ddb3-93/authorizations"; + Requests[2506] = new DefaultHttpContext(); + Requests[2506].RequestServices = CreateServices(); + Requests[2506].Request.Method = "GET"; + Requests[2506].Request.Path = "/subscriptions/875800cc-deaf-/resourceGroups/2b0236cd-5bd6-4d2/providers/Microsoft.Network/expressRouteCircuits/bce17d92-31/peerings"; + Requests[2507] = new DefaultHttpContext(); + Requests[2507].RequestServices = CreateServices(); + Requests[2507].Request.Method = "GET"; + Requests[2507].Request.Path = "/subscriptions/317d9db9-f3df-/resourceGroups/83b605a9-c99f-48c/providers/Microsoft.Network/expressRouteCircuits/1c4966fe-88/routesTable"; + Requests[2508] = new DefaultHttpContext(); + Requests[2508].RequestServices = CreateServices(); + Requests[2508].Request.Method = "GET"; + Requests[2508].Request.Path = "/subscriptions/c4447820-e2ae-/resourceGroups/9df5df3b-93c9-436/providers/Microsoft.Network/expressRouteCircuits/619cd66a-4d/stats"; + Requests[2509] = new DefaultHttpContext(); + Requests[2509].RequestServices = CreateServices(); + Requests[2509].Request.Method = "GET"; + Requests[2509].Request.Path = "/subscriptions/cd2aa2ca-01fb-/resourceGroups/814ccb5c-72f0-403/providers/Microsoft.Network/expressRouteCrossConnections/a2b28e8a-9b7a-4bff-/peerings"; + Requests[2510] = new DefaultHttpContext(); + Requests[2510].RequestServices = CreateServices(); + Requests[2510].Request.Method = "GET"; + Requests[2510].Request.Path = "/subscriptions/e1a66519-c4ed-/resourceGroups/e0c5775a-5a4c-45b/providers/Microsoft.Network/loadBalancers/78f08e8e-71d1-4f/backendAddressPools"; + Requests[2511] = new DefaultHttpContext(); + Requests[2511].RequestServices = CreateServices(); + Requests[2511].Request.Method = "GET"; + Requests[2511].Request.Path = "/subscriptions/7d4f6624-6d82-/resourceGroups/2239a9ae-43cd-401/providers/Microsoft.Network/loadBalancers/f2c2a276-4e02-48/frontendIPConfigurations"; + Requests[2512] = new DefaultHttpContext(); + Requests[2512].RequestServices = CreateServices(); + Requests[2512].Request.Method = "GET"; + Requests[2512].Request.Path = "/subscriptions/c3c9ddfd-7fa4-/resourceGroups/3f1f6ad1-b00d-4b1/providers/Microsoft.Network/loadBalancers/5d290c90-5864-4f/inboundNatRules"; + Requests[2513] = new DefaultHttpContext(); + Requests[2513].RequestServices = CreateServices(); + Requests[2513].Request.Method = "GET"; + Requests[2513].Request.Path = "/subscriptions/c010c490-bfbc-/resourceGroups/03920f5c-defa-407/providers/Microsoft.Network/loadBalancers/e936598c-6a13-47/loadBalancingRules"; + Requests[2514] = new DefaultHttpContext(); + Requests[2514].RequestServices = CreateServices(); + Requests[2514].Request.Method = "GET"; + Requests[2514].Request.Path = "/subscriptions/2c524a16-8a0a-/resourceGroups/15fe80c5-0b67-4ca/providers/Microsoft.Network/loadBalancers/157dfbcb-447f-42/networkInterfaces"; + Requests[2515] = new DefaultHttpContext(); + Requests[2515].RequestServices = CreateServices(); + Requests[2515].Request.Method = "GET"; + Requests[2515].Request.Path = "/subscriptions/a3986d8d-c58b-/resourceGroups/72f65c60-92e7-4cf/providers/Microsoft.Network/loadBalancers/92aa1b53-01fe-4c/probes"; + Requests[2516] = new DefaultHttpContext(); + Requests[2516].RequestServices = CreateServices(); + Requests[2516].Request.Method = "POST"; + Requests[2516].Request.Path = "/subscriptions/f166fcc7-b76e-/resourceGroups/3a587762-20b0-445/providers/Microsoft.Network/networkInterfaces/5621db23-3874-41af-a/effectiveNetworkSecurityGroups"; + Requests[2517] = new DefaultHttpContext(); + Requests[2517].RequestServices = CreateServices(); + Requests[2517].Request.Method = "POST"; + Requests[2517].Request.Path = "/subscriptions/3c82d018-7643-/resourceGroups/5abd7738-5a8f-478/providers/Microsoft.Network/networkInterfaces/245fc307-83c5-4d1c-9/effectiveRouteTable"; + Requests[2518] = new DefaultHttpContext(); + Requests[2518].RequestServices = CreateServices(); + Requests[2518].Request.Method = "GET"; + Requests[2518].Request.Path = "/subscriptions/7ed359a2-d070-/resourceGroups/3cc3a18f-1c7e-4ab/providers/Microsoft.Network/networkInterfaces/3b954f91-fe99-4440-b/ipConfigurations"; + Requests[2519] = new DefaultHttpContext(); + Requests[2519].RequestServices = CreateServices(); + Requests[2519].Request.Method = "GET"; + Requests[2519].Request.Path = "/subscriptions/f9ebf061-379b-/resourceGroups/d85c573f-988b-40c/providers/Microsoft.Network/networkInterfaces/f322d9b5-f5c0-46fd-b/loadBalancers"; + Requests[2520] = new DefaultHttpContext(); + Requests[2520].RequestServices = CreateServices(); + Requests[2520].Request.Method = "GET"; + Requests[2520].Request.Path = "/subscriptions/c746f5f1-93a2-/resourceGroups/75a8eb1a-f352-413/providers/Microsoft.Network/networkSecurityGroups/27dc2a07-67f7-43a9-8c94-/defaultSecurityRules"; + Requests[2521] = new DefaultHttpContext(); + Requests[2521].RequestServices = CreateServices(); + Requests[2521].Request.Method = "GET"; + Requests[2521].Request.Path = "/subscriptions/fd9693dd-71c5-/resourceGroups/8e157748-e0d8-488/providers/Microsoft.Network/networkSecurityGroups/e87fd5f6-b709-4f79-a2f3-/securityRules"; + Requests[2522] = new DefaultHttpContext(); + Requests[2522].RequestServices = CreateServices(); + Requests[2522].Request.Method = "POST"; + Requests[2522].Request.Path = "/subscriptions/e94f4cc3-b47c-/resourceGroups/6cfe26db-6276-435/providers/Microsoft.Network/networkWatchers/e7d5b948-1b3b-477c/availableProvidersList"; + Requests[2523] = new DefaultHttpContext(); + Requests[2523].RequestServices = CreateServices(); + Requests[2523].Request.Method = "POST"; + Requests[2523].Request.Path = "/subscriptions/6e0acf34-2e78-/resourceGroups/8133c95f-f9ba-4ba/providers/Microsoft.Network/networkWatchers/a6bb422c-a79c-4533/azureReachabilityReport"; + Requests[2524] = new DefaultHttpContext(); + Requests[2524].RequestServices = CreateServices(); + Requests[2524].Request.Method = "POST"; + Requests[2524].Request.Path = "/subscriptions/d5a3a73f-dce5-/resourceGroups/87be2abd-a864-4bc/providers/Microsoft.Network/networkWatchers/d478f11b-2065-4637/configureFlowLog"; + Requests[2525] = new DefaultHttpContext(); + Requests[2525].RequestServices = CreateServices(); + Requests[2525].Request.Method = "GET"; + Requests[2525].Request.Path = "/subscriptions/2b40d75c-ffe2-/resourceGroups/706c9e18-1cf1-4c0/providers/Microsoft.Network/networkWatchers/268d0b84-7c55-40bd/connectionMonitors"; + Requests[2526] = new DefaultHttpContext(); + Requests[2526].RequestServices = CreateServices(); + Requests[2526].Request.Method = "POST"; + Requests[2526].Request.Path = "/subscriptions/aa2f10ac-db03-/resourceGroups/c5c829c2-c4f3-431/providers/Microsoft.Network/networkWatchers/664e3cab-25c0-478c/connectivityCheck"; + Requests[2527] = new DefaultHttpContext(); + Requests[2527].RequestServices = CreateServices(); + Requests[2527].Request.Method = "POST"; + Requests[2527].Request.Path = "/subscriptions/42c68cba-0578-/resourceGroups/d784a0ae-4cb1-4d2/providers/Microsoft.Network/networkWatchers/3e53388a-e173-49a5/ipFlowVerify"; + Requests[2528] = new DefaultHttpContext(); + Requests[2528].RequestServices = CreateServices(); + Requests[2528].Request.Method = "POST"; + Requests[2528].Request.Path = "/subscriptions/42ede897-4f1c-/resourceGroups/d0074ae9-3ce7-4ef/providers/Microsoft.Network/networkWatchers/68f10327-63bb-45ec/nextHop"; + Requests[2529] = new DefaultHttpContext(); + Requests[2529].RequestServices = CreateServices(); + Requests[2529].Request.Method = "GET"; + Requests[2529].Request.Path = "/subscriptions/1fcc94c9-0436-/resourceGroups/933260d7-d9f6-4e7/providers/Microsoft.Network/networkWatchers/91607772-0d1c-4fd8/packetCaptures"; + Requests[2530] = new DefaultHttpContext(); + Requests[2530].RequestServices = CreateServices(); + Requests[2530].Request.Method = "POST"; + Requests[2530].Request.Path = "/subscriptions/9b1aa376-3adc-/resourceGroups/ea5ef52f-d94f-44c/providers/Microsoft.Network/networkWatchers/acd94b3e-323d-41f3/queryFlowLogStatus"; + Requests[2531] = new DefaultHttpContext(); + Requests[2531].RequestServices = CreateServices(); + Requests[2531].Request.Method = "POST"; + Requests[2531].Request.Path = "/subscriptions/938ae6fd-7d53-/resourceGroups/d1463303-4ea9-412/providers/Microsoft.Network/networkWatchers/6dee5924-3dac-4feb/queryTroubleshootResult"; + Requests[2532] = new DefaultHttpContext(); + Requests[2532].RequestServices = CreateServices(); + Requests[2532].Request.Method = "POST"; + Requests[2532].Request.Path = "/subscriptions/5ccdb802-93c5-/resourceGroups/e3c4f928-ae6b-475/providers/Microsoft.Network/networkWatchers/c7bc8624-f2e1-4330/securityGroupView"; + Requests[2533] = new DefaultHttpContext(); + Requests[2533].RequestServices = CreateServices(); + Requests[2533].Request.Method = "POST"; + Requests[2533].Request.Path = "/subscriptions/615aad33-27c8-/resourceGroups/a2123e16-7aeb-4fe/providers/Microsoft.Network/networkWatchers/54424ac5-4c38-4967/topology"; + Requests[2534] = new DefaultHttpContext(); + Requests[2534].RequestServices = CreateServices(); + Requests[2534].Request.Method = "POST"; + Requests[2534].Request.Path = "/subscriptions/c9bd217d-aa1d-/resourceGroups/d11b3c78-a380-41b/providers/Microsoft.Network/networkWatchers/479f8529-5e41-4187/troubleshoot"; + Requests[2535] = new DefaultHttpContext(); + Requests[2535].RequestServices = CreateServices(); + Requests[2535].Request.Method = "GET"; + Requests[2535].Request.Path = "/subscriptions/349ddc84-50bb-/resourceGroups/cbd4d755-9001-4c0/providers/Microsoft.Network/routeFilters/b8790b91-2ca8-4/routeFilterRules"; + Requests[2536] = new DefaultHttpContext(); + Requests[2536].RequestServices = CreateServices(); + Requests[2536].Request.Method = "GET"; + Requests[2536].Request.Path = "/subscriptions/82263d5b-a05c-/resourceGroups/5089813f-ec0f-422/providers/Microsoft.Network/routeTables/d641b2fb-db55-/routes"; + Requests[2537] = new DefaultHttpContext(); + Requests[2537].RequestServices = CreateServices(); + Requests[2537].Request.Method = "GET"; + Requests[2537].Request.Path = "/subscriptions/06ca919d-972f-/resourceGroups/f4ae6a85-92b6-4e9/providers/Microsoft.Network/virtualNetworkGateways/6fdce78d-443e-47ee-ae2c-f/connections"; + Requests[2538] = new DefaultHttpContext(); + Requests[2538].RequestServices = CreateServices(); + Requests[2538].Request.Method = "POST"; + Requests[2538].Request.Path = "/subscriptions/afca0b21-7b04-/resourceGroups/3ff81554-de52-431/providers/Microsoft.Network/virtualNetworkGateways/0f8dcd55-0e19-4e65-a6b6-4/generatevpnclientpackage"; + Requests[2539] = new DefaultHttpContext(); + Requests[2539].RequestServices = CreateServices(); + Requests[2539].Request.Method = "POST"; + Requests[2539].Request.Path = "/subscriptions/ed8b1141-bfe7-/resourceGroups/e2b57b80-47ac-467/providers/Microsoft.Network/virtualNetworkGateways/f29d1d28-75a1-4b38-bc04-6/generatevpnprofile"; + Requests[2540] = new DefaultHttpContext(); + Requests[2540].RequestServices = CreateServices(); + Requests[2540].Request.Method = "POST"; + Requests[2540].Request.Path = "/subscriptions/93eac03b-9edd-/resourceGroups/3fd53200-7168-493/providers/Microsoft.Network/virtualNetworkGateways/09df8ad2-1c49-4e69-9816-e/getAdvertisedRoutes"; + Requests[2541] = new DefaultHttpContext(); + Requests[2541].RequestServices = CreateServices(); + Requests[2541].Request.Method = "POST"; + Requests[2541].Request.Path = "/subscriptions/81638484-76f1-/resourceGroups/b4a77776-2984-4c4/providers/Microsoft.Network/virtualNetworkGateways/52138686-5ba2-4651-b385-7/getBgpPeerStatus"; + Requests[2542] = new DefaultHttpContext(); + Requests[2542].RequestServices = CreateServices(); + Requests[2542].Request.Method = "POST"; + Requests[2542].Request.Path = "/subscriptions/ef19d246-234a-/resourceGroups/3a481677-1e51-471/providers/Microsoft.Network/virtualNetworkGateways/b1ed2406-1038-458a-b6c6-4/getLearnedRoutes"; + Requests[2543] = new DefaultHttpContext(); + Requests[2543].RequestServices = CreateServices(); + Requests[2543].Request.Method = "POST"; + Requests[2543].Request.Path = "/subscriptions/454df7b5-f4c5-/resourceGroups/3928d3b2-6c1c-409/providers/Microsoft.Network/virtualNetworkGateways/bd1ccc6b-52b1-4a1e-a15a-8/getvpnclientipsecparameters"; + Requests[2544] = new DefaultHttpContext(); + Requests[2544].RequestServices = CreateServices(); + Requests[2544].Request.Method = "POST"; + Requests[2544].Request.Path = "/subscriptions/e958472a-1130-/resourceGroups/ba801e73-4770-46d/providers/Microsoft.Network/virtualNetworkGateways/69903777-68b2-47c2-b9c8-a/getvpnprofilepackageurl"; + Requests[2545] = new DefaultHttpContext(); + Requests[2545].RequestServices = CreateServices(); + Requests[2545].Request.Method = "POST"; + Requests[2545].Request.Path = "/subscriptions/fa70acad-db5c-/resourceGroups/7b71f4e7-e155-4c6/providers/Microsoft.Network/virtualNetworkGateways/253b3a69-f21f-4de9-9727-c/reset"; + Requests[2546] = new DefaultHttpContext(); + Requests[2546].RequestServices = CreateServices(); + Requests[2546].Request.Method = "POST"; + Requests[2546].Request.Path = "/subscriptions/0e4e3294-e384-/resourceGroups/8c77af56-0136-489/providers/Microsoft.Network/virtualNetworkGateways/1dcdb5e3-a092-46ba-aef4-e/setvpnclientipsecparameters"; + Requests[2547] = new DefaultHttpContext(); + Requests[2547].RequestServices = CreateServices(); + Requests[2547].Request.Method = "POST"; + Requests[2547].Request.Path = "/subscriptions/b94f7678-c5ab-/resourceGroups/d01bd974-0ca0-424/providers/Microsoft.Network/virtualNetworkGateways/5f333acf-f828-4a36-b335-e/supportedvpndevices"; + Requests[2548] = new DefaultHttpContext(); + Requests[2548].RequestServices = CreateServices(); + Requests[2548].Request.Method = "GET"; + Requests[2548].Request.Path = "/subscriptions/2ce880be-c3a0-/resourceGroups/15e2cf07-c204-48c/providers/Microsoft.Network/virtualNetworks/990fe251-e54f-4372/CheckIPAddressAvailability"; + Requests[2549] = new DefaultHttpContext(); + Requests[2549].RequestServices = CreateServices(); + Requests[2549].Request.Method = "GET"; + Requests[2549].Request.Path = "/subscriptions/880cb4c6-497c-/resourceGroups/55a13a18-9e70-472/providers/Microsoft.Network/virtualNetworks/d3368414-fe65-427b/subnets"; + Requests[2550] = new DefaultHttpContext(); + Requests[2550].RequestServices = CreateServices(); + Requests[2550].Request.Method = "GET"; + Requests[2550].Request.Path = "/subscriptions/4b851da6-899f-/resourceGroups/77ee5314-110b-45c/providers/Microsoft.Network/virtualNetworks/431008f4-b70d-4614/usages"; + Requests[2551] = new DefaultHttpContext(); + Requests[2551].RequestServices = CreateServices(); + Requests[2551].Request.Method = "GET"; + Requests[2551].Request.Path = "/subscriptions/531d27d7-f8c1-/resourceGroups/4358bd59-e0fa-499/providers/Microsoft.Network/virtualNetworks/6ec18e91-d960-4a4f/virtualNetworkPeerings"; + Requests[2552] = new DefaultHttpContext(); + Requests[2552].RequestServices = CreateServices(); + Requests[2552].Request.Method = "POST"; + Requests[2552].Request.Path = "/subscriptions/e5d8c57d-6ce3-/resourceGroups/c9118105-2154-4a1/providers/Microsoft.NotificationHubs/namespaces/c4d4c514-fd7e/AuthorizationRules"; + Requests[2553] = new DefaultHttpContext(); + Requests[2553].RequestServices = CreateServices(); + Requests[2553].Request.Method = "GET"; + Requests[2553].Request.Path = "/subscriptions/46bd6d3e-46d7-/resourceGroups/69443073-b3e1-413/providers/Microsoft.NotificationHubs/namespaces/57102c51-6b3c/AuthorizationRules"; + Requests[2554] = new DefaultHttpContext(); + Requests[2554].RequestServices = CreateServices(); + Requests[2554].Request.Method = "POST"; + Requests[2554].Request.Path = "/subscriptions/b23109c1-6837-/resourceGroups/45efc86d-d5cf-4f4/providers/Microsoft.NotificationHubs/namespaces/24b5d6e3-b94b/checkNotificationHubAvailability"; + Requests[2555] = new DefaultHttpContext(); + Requests[2555].RequestServices = CreateServices(); + Requests[2555].Request.Method = "GET"; + Requests[2555].Request.Path = "/subscriptions/6b43fab2-5c5e-/resourceGroups/586ca1c2-de0a-471/providers/Microsoft.NotificationHubs/namespaces/726070a1-44b5/notificationHubs"; + Requests[2556] = new DefaultHttpContext(); + Requests[2556].RequestServices = CreateServices(); + Requests[2556].Request.Method = "GET"; + Requests[2556].Request.Path = "/subscriptions/21e6cdd0-6129-/resourcegroups/71cc1a43-c39c-485/providers/Microsoft.OperationalInsights/workspaces/cec5556a-50bc/dataSources"; + Requests[2557] = new DefaultHttpContext(); + Requests[2557].RequestServices = CreateServices(); + Requests[2557].Request.Method = "GET"; + Requests[2557].Request.Path = "/subscriptions/95b1eca5-0d4e-/resourcegroups/b0cd8958-96e7-4ea/providers/Microsoft.OperationalInsights/workspaces/d64be9d9-df83/intelligencePacks"; + Requests[2558] = new DefaultHttpContext(); + Requests[2558].RequestServices = CreateServices(); + Requests[2558].Request.Method = "GET"; + Requests[2558].Request.Path = "/subscriptions/b35e50a2-d15f-/resourcegroups/ea55e903-9667-4a0/providers/Microsoft.OperationalInsights/workspaces/7a28a24c-2c3f/linkedServices"; + Requests[2559] = new DefaultHttpContext(); + Requests[2559].RequestServices = CreateServices(); + Requests[2559].Request.Method = "GET"; + Requests[2559].Request.Path = "/subscriptions/d76b0dab-9b3b-/resourcegroups/6c1e0731-95b9-43d/providers/Microsoft.OperationalInsights/workspaces/0585c769-280a/managementGroups"; + Requests[2560] = new DefaultHttpContext(); + Requests[2560].RequestServices = CreateServices(); + Requests[2560].Request.Method = "POST"; + Requests[2560].Request.Path = "/subscriptions/4c041ea5-d7cd-/resourceGroups/969715e9-e32a-4ed/providers/Microsoft.OperationalInsights/workspaces/f6d62394-f5ef/purge"; + Requests[2561] = new DefaultHttpContext(); + Requests[2561].RequestServices = CreateServices(); + Requests[2561].Request.Method = "GET"; + Requests[2561].Request.Path = "/subscriptions/09bf0c65-e5a8-/resourcegroups/a0f9d6b9-6773-4db/providers/Microsoft.OperationalInsights/workspaces/9d96c88e-a3c9/savedSearches"; + Requests[2562] = new DefaultHttpContext(); + Requests[2562].RequestServices = CreateServices(); + Requests[2562].Request.Method = "POST"; + Requests[2562].Request.Path = "/subscriptions/c7d87617-333a-/resourcegroups/a769cecc-b490-46b/providers/Microsoft.OperationalInsights/workspaces/63d9ce22-09b3/schema"; + Requests[2563] = new DefaultHttpContext(); + Requests[2563].RequestServices = CreateServices(); + Requests[2563].Request.Method = "POST"; + Requests[2563].Request.Path = "/subscriptions/b4a74b70-9dfe-/resourcegroups/72d8cbe6-6042-40a/providers/Microsoft.OperationalInsights/workspaces/5c269c04-6ba7/search"; + Requests[2564] = new DefaultHttpContext(); + Requests[2564].RequestServices = CreateServices(); + Requests[2564].Request.Method = "POST"; + Requests[2564].Request.Path = "/subscriptions/366916c5-4d7a-/resourcegroups/30067995-ad2a-4c1/providers/Microsoft.OperationalInsights/workspaces/8982bb77-c973/sharedKeys"; + Requests[2565] = new DefaultHttpContext(); + Requests[2565].RequestServices = CreateServices(); + Requests[2565].Request.Method = "GET"; + Requests[2565].Request.Path = "/subscriptions/8b2a3926-7265-/resourcegroups/52048063-57f7-42c/providers/Microsoft.OperationalInsights/workspaces/8cafb879-9527/storageInsightConfigs"; + Requests[2566] = new DefaultHttpContext(); + Requests[2566].RequestServices = CreateServices(); + Requests[2566].Request.Method = "GET"; + Requests[2566].Request.Path = "/subscriptions/cf0c6598-8a09-/resourcegroups/6fb45bda-ef44-467/providers/Microsoft.OperationalInsights/workspaces/a36c6b43-f893/usages"; + Requests[2567] = new DefaultHttpContext(); + Requests[2567].RequestServices = CreateServices(); + Requests[2567].Request.Method = "POST"; + Requests[2567].Request.Path = "/subscriptions/8aac6250-4aa8-/resourceGroups/95cb0632-da18-43a/providers/Microsoft.PolicyInsights/policyEvents/f92e3d08-e841-4a66-b/queryResults"; + Requests[2568] = new DefaultHttpContext(); + Requests[2568].RequestServices = CreateServices(); + Requests[2568].Request.Method = "POST"; + Requests[2568].Request.Path = "/subscriptions/e38f256c-ab9d-/resourceGroups/f254e4c5-4bc7-484/providers/Microsoft.PolicyInsights/policyStates/28d98781-0338-46ba-b/queryResults"; + Requests[2569] = new DefaultHttpContext(); + Requests[2569].RequestServices = CreateServices(); + Requests[2569].Request.Method = "POST"; + Requests[2569].Request.Path = "/subscriptions/d19961de-3088-/resourceGroups/aa67a4cc-235f-460/providers/Microsoft.PolicyInsights/policyStates/a3a9982a-23e1-439a-a1e8-d2e/summarize"; + Requests[2570] = new DefaultHttpContext(); + Requests[2570].RequestServices = CreateServices(); + Requests[2570].Request.Method = "POST"; + Requests[2570].Request.Path = "/subscriptions/09b9649f-2ebc-/resourceGroups/7628cd97-1360-46d/providers/Microsoft.PowerBI/workspaceCollections/74746673-c00a-465f-ab0b/listKeys"; + Requests[2571] = new DefaultHttpContext(); + Requests[2571].RequestServices = CreateServices(); + Requests[2571].Request.Method = "POST"; + Requests[2571].Request.Path = "/subscriptions/4a3f422c-f7a3-/resourceGroups/bbecc031-3680-4cd/providers/Microsoft.PowerBI/workspaceCollections/3daa9ca2-724c-4817-bf4d/regenerateKey"; + Requests[2572] = new DefaultHttpContext(); + Requests[2572].RequestServices = CreateServices(); + Requests[2572].Request.Method = "GET"; + Requests[2572].Request.Path = "/subscriptions/16412f17-7060-/resourceGroups/c9a45c54-a781-4dc/providers/Microsoft.PowerBI/workspaceCollections/b51acf15-5f7a-4cfe-b076/workspaces"; + Requests[2573] = new DefaultHttpContext(); + Requests[2573].RequestServices = CreateServices(); + Requests[2573].Request.Method = "POST"; + Requests[2573].Request.Path = "/subscriptions/8aa9331c-a073-/resourceGroups/ab542bc6-fc0b-408/providers/Microsoft.PowerBIDedicated/capacities/187d9c18-8545-4f6d-ba/resume"; + Requests[2574] = new DefaultHttpContext(); + Requests[2574].RequestServices = CreateServices(); + Requests[2574].Request.Method = "GET"; + Requests[2574].Request.Path = "/subscriptions/72efe90d-62c6-/resourceGroups/7d993dc2-f017-4a8/providers/Microsoft.PowerBIDedicated/capacities/630734b2-be9a-4370-89/skus"; + Requests[2575] = new DefaultHttpContext(); + Requests[2575].RequestServices = CreateServices(); + Requests[2575].Request.Method = "POST"; + Requests[2575].Request.Path = "/subscriptions/b164d1f5-d092-/resourceGroups/a20cf17e-757e-452/providers/Microsoft.PowerBIDedicated/capacities/2086492d-d045-49c7-87/suspend"; + Requests[2576] = new DefaultHttpContext(); + Requests[2576].RequestServices = CreateServices(); + Requests[2576].Request.Method = "GET"; + Requests[2576].Request.Path = "/Subscriptions/34585ccf-ee57-/resourceGroups/bbf89515-6b55-43a/providers/Microsoft.RecoveryServices/vaults/7b8fe93b-3cf/replicationAlertSettings"; + Requests[2577] = new DefaultHttpContext(); + Requests[2577].RequestServices = CreateServices(); + Requests[2577].Request.Method = "GET"; + Requests[2577].Request.Path = "/Subscriptions/50ecf6bd-bcb4-/resourceGroups/51c46f5a-697f-4ee/providers/Microsoft.RecoveryServices/vaults/0d64a92d-b31/replicationEvents"; + Requests[2578] = new DefaultHttpContext(); + Requests[2578].RequestServices = CreateServices(); + Requests[2578].Request.Method = "GET"; + Requests[2578].Request.Path = "/Subscriptions/b601c990-50f8-/resourceGroups/5b75931f-5398-4dc/providers/Microsoft.RecoveryServices/vaults/e4aba4fa-2ed/replicationFabrics"; + Requests[2579] = new DefaultHttpContext(); + Requests[2579].RequestServices = CreateServices(); + Requests[2579].Request.Method = "GET"; + Requests[2579].Request.Path = "/Subscriptions/165b7744-99d0-/resourceGroups/5e75fa27-6c04-458/providers/Microsoft.RecoveryServices/vaults/2da92e1f-c32/replicationJobs"; + Requests[2580] = new DefaultHttpContext(); + Requests[2580].RequestServices = CreateServices(); + Requests[2580].Request.Method = "GET"; + Requests[2580].Request.Path = "/Subscriptions/d97dddc7-0fee-/resourceGroups/5247802a-ca45-4f5/providers/Microsoft.RecoveryServices/vaults/1614168d-8f1/replicationNetworkMappings"; + Requests[2581] = new DefaultHttpContext(); + Requests[2581].RequestServices = CreateServices(); + Requests[2581].Request.Method = "GET"; + Requests[2581].Request.Path = "/Subscriptions/ddeb207e-9aeb-/resourceGroups/c41530db-f875-453/providers/Microsoft.RecoveryServices/vaults/eba9743a-568/replicationNetworks"; + Requests[2582] = new DefaultHttpContext(); + Requests[2582].RequestServices = CreateServices(); + Requests[2582].Request.Method = "GET"; + Requests[2582].Request.Path = "/Subscriptions/c05905c3-1e92-/resourceGroups/0fa0278e-565a-498/providers/Microsoft.RecoveryServices/vaults/b1f4e251-ac2/replicationPolicies"; + Requests[2583] = new DefaultHttpContext(); + Requests[2583].RequestServices = CreateServices(); + Requests[2583].Request.Method = "GET"; + Requests[2583].Request.Path = "/Subscriptions/94d40226-e0d0-/resourceGroups/b80a19e5-569c-476/providers/Microsoft.RecoveryServices/vaults/ed706c87-81d/replicationProtectedItems"; + Requests[2584] = new DefaultHttpContext(); + Requests[2584].RequestServices = CreateServices(); + Requests[2584].Request.Method = "GET"; + Requests[2584].Request.Path = "/Subscriptions/c25a66ff-fe11-/resourceGroups/784190d8-7132-4da/providers/Microsoft.RecoveryServices/vaults/081e67d6-a74/replicationProtectionContainerMappings"; + Requests[2585] = new DefaultHttpContext(); + Requests[2585].RequestServices = CreateServices(); + Requests[2585].Request.Method = "GET"; + Requests[2585].Request.Path = "/Subscriptions/fcd36a19-c3b2-/resourceGroups/e8970bb0-b7b1-4b7/providers/Microsoft.RecoveryServices/vaults/88f1d8bd-0f8/replicationProtectionContainers"; + Requests[2586] = new DefaultHttpContext(); + Requests[2586].RequestServices = CreateServices(); + Requests[2586].Request.Method = "GET"; + Requests[2586].Request.Path = "/Subscriptions/95f06da5-6c02-/resourceGroups/5b3c25f6-a6e7-4b4/providers/Microsoft.RecoveryServices/vaults/c45f193c-4ca/replicationRecoveryPlans"; + Requests[2587] = new DefaultHttpContext(); + Requests[2587].RequestServices = CreateServices(); + Requests[2587].Request.Method = "GET"; + Requests[2587].Request.Path = "/Subscriptions/34146c38-1654-/resourceGroups/6c656482-8a91-436/providers/Microsoft.RecoveryServices/vaults/8bd84331-d5d/replicationRecoveryServicesProviders"; + Requests[2588] = new DefaultHttpContext(); + Requests[2588].RequestServices = CreateServices(); + Requests[2588].Request.Method = "GET"; + Requests[2588].Request.Path = "/Subscriptions/b7de2436-e684-/resourceGroups/8d97cfab-698f-42f/providers/Microsoft.RecoveryServices/vaults/86e2127f-d3a/replicationStorageClassificationMappings"; + Requests[2589] = new DefaultHttpContext(); + Requests[2589].RequestServices = CreateServices(); + Requests[2589].Request.Method = "GET"; + Requests[2589].Request.Path = "/Subscriptions/825a3e4a-3c3c-/resourceGroups/eebbc25f-e482-405/providers/Microsoft.RecoveryServices/vaults/6d2f692f-224/replicationStorageClassifications"; + Requests[2590] = new DefaultHttpContext(); + Requests[2590].RequestServices = CreateServices(); + Requests[2590].Request.Method = "GET"; + Requests[2590].Request.Path = "/Subscriptions/ae4847d2-e0b5-/resourceGroups/98e4879e-7af7-4a7/providers/Microsoft.RecoveryServices/vaults/d62370bc-988/replicationVaultHealth"; + Requests[2591] = new DefaultHttpContext(); + Requests[2591].RequestServices = CreateServices(); + Requests[2591].Request.Method = "GET"; + Requests[2591].Request.Path = "/Subscriptions/07789cae-e55a-/resourceGroups/2a55b658-5921-44a/providers/Microsoft.RecoveryServices/vaults/bde762a9-f92/replicationvCenters"; + Requests[2592] = new DefaultHttpContext(); + Requests[2592].RequestServices = CreateServices(); + Requests[2592].Request.Method = "GET"; + Requests[2592].Request.Path = "/Subscriptions/36f001c9-b95d-/resourceGroups/fe3eea16-af0c-4af/providers/Microsoft.RecoveryServices/vaults/65ede5f5-/backupEngines"; + Requests[2593] = new DefaultHttpContext(); + Requests[2593].RequestServices = CreateServices(); + Requests[2593].Request.Method = "GET"; + Requests[2593].Request.Path = "/Subscriptions/a39ff8ec-47a8-/resourceGroups/36166faf-7dfe-40c/providers/Microsoft.RecoveryServices/vaults/b246cc8d-/backupJobs"; + Requests[2594] = new DefaultHttpContext(); + Requests[2594].RequestServices = CreateServices(); + Requests[2594].Request.Method = "POST"; + Requests[2594].Request.Path = "/Subscriptions/e6447d30-d704-/resourceGroups/da5f68ab-ebb3-47e/providers/Microsoft.RecoveryServices/vaults/8b871257-/backupJobsExport"; + Requests[2595] = new DefaultHttpContext(); + Requests[2595].RequestServices = CreateServices(); + Requests[2595].Request.Method = "GET"; + Requests[2595].Request.Path = "/Subscriptions/7e525877-14a3-/resourceGroups/f3bb08d9-8204-453/providers/Microsoft.RecoveryServices/vaults/88c0e3ae-/backupPolicies"; + Requests[2596] = new DefaultHttpContext(); + Requests[2596].RequestServices = CreateServices(); + Requests[2596].Request.Method = "GET"; + Requests[2596].Request.Path = "/Subscriptions/2454bfd9-c359-/resourceGroups/09d396c6-6b54-429/providers/Microsoft.RecoveryServices/vaults/1defe14e-/backupProtectableItems"; + Requests[2597] = new DefaultHttpContext(); + Requests[2597].RequestServices = CreateServices(); + Requests[2597].Request.Method = "GET"; + Requests[2597].Request.Path = "/Subscriptions/19ab92fc-af23-/resourceGroups/d636677f-3b89-420/providers/Microsoft.RecoveryServices/vaults/0f3e140f-/backupProtectedItems"; + Requests[2598] = new DefaultHttpContext(); + Requests[2598].RequestServices = CreateServices(); + Requests[2598].Request.Method = "GET"; + Requests[2598].Request.Path = "/Subscriptions/abbc5c06-7656-/resourceGroups/0e8b940a-918a-4ef/providers/Microsoft.RecoveryServices/vaults/22fc8925-/backupProtectionContainers"; + Requests[2599] = new DefaultHttpContext(); + Requests[2599].RequestServices = CreateServices(); + Requests[2599].Request.Method = "POST"; + Requests[2599].Request.Path = "/Subscriptions/ec034391-eef7-/resourceGroups/84cd3eee-cdd6-42b/providers/Microsoft.RecoveryServices/vaults/43f01b15-/backupSecurityPIN"; + Requests[2600] = new DefaultHttpContext(); + Requests[2600].RequestServices = CreateServices(); + Requests[2600].Request.Method = "GET"; + Requests[2600].Request.Path = "/Subscriptions/89a11686-667b-/resourceGroups/3de2ffe1-b726-43c/providers/Microsoft.RecoveryServices/vaults/17099de0-/backupUsageSummaries"; + Requests[2601] = new DefaultHttpContext(); + Requests[2601].RequestServices = CreateServices(); + Requests[2601].Request.Method = "GET"; + Requests[2601].Request.Path = "/Subscriptions/6f70f82c-5ebc-/resourceGroups/5d3e5d35-9dc6-4e9/providers/Microsoft.RecoveryServices/vaults/6dc9c271-/replicationUsages"; + Requests[2602] = new DefaultHttpContext(); + Requests[2602].RequestServices = CreateServices(); + Requests[2602].Request.Method = "GET"; + Requests[2602].Request.Path = "/Subscriptions/a33c8489-aa56-/resourceGroups/62c565f6-9c5c-4c4/providers/Microsoft.RecoveryServices/vaults/6adb11c6-/usages"; + Requests[2603] = new DefaultHttpContext(); + Requests[2603].RequestServices = CreateServices(); + Requests[2603].Request.Method = "GET"; + Requests[2603].Request.Path = "/subscriptions/e1170540-1361-/resourceGroups/b6da519f-8d1e-4f4/providers/Microsoft.Relay/namespaces/a652c985-b6f8/authorizationRules"; + Requests[2604] = new DefaultHttpContext(); + Requests[2604].RequestServices = CreateServices(); + Requests[2604].Request.Method = "POST"; + Requests[2604].Request.Path = "/subscriptions/176fdff8-f6f9-/resourceGroups/9104d8ec-e912-4a6/providers/Microsoft.Relay/namespaces/08eb9b47-932d/AuthorizationRules"; + Requests[2605] = new DefaultHttpContext(); + Requests[2605].RequestServices = CreateServices(); + Requests[2605].Request.Method = "GET"; + Requests[2605].Request.Path = "/subscriptions/459c2eff-80af-/resourceGroups/eb139283-d840-452/providers/Microsoft.Relay/namespaces/a6408a74-fae3/hybridConnections"; + Requests[2606] = new DefaultHttpContext(); + Requests[2606].RequestServices = CreateServices(); + Requests[2606].Request.Method = "GET"; + Requests[2606].Request.Path = "/subscriptions/fce1e490-9a80-/resourceGroups/b7ee4f56-629f-422/providers/Microsoft.Relay/namespaces/013deb77-754c/wcfRelays"; + Requests[2607] = new DefaultHttpContext(); + Requests[2607].RequestServices = CreateServices(); + Requests[2607].Request.Method = "POST"; + Requests[2607].Request.Path = "/subscriptions/39dd870b-8f0b-/resourcegroups/5d134258-21ac-47e/providers/Microsoft.Resources/deployments/fe102b00-af32-/cancel"; + Requests[2608] = new DefaultHttpContext(); + Requests[2608].RequestServices = CreateServices(); + Requests[2608].Request.Method = "POST"; + Requests[2608].Request.Path = "/subscriptions/8cc582fe-a6a0-/resourcegroups/48ca9240-b5a1-485/providers/Microsoft.Resources/deployments/49b60014-239b-/exportTemplate"; + Requests[2609] = new DefaultHttpContext(); + Requests[2609].RequestServices = CreateServices(); + Requests[2609].Request.Method = "POST"; + Requests[2609].Request.Path = "/subscriptions/5b8c6655-c8bc-/resourcegroups/75a0bae8-72c4-448/providers/Microsoft.Resources/deployments/5e481ab2-bcd8-/validate"; + Requests[2610] = new DefaultHttpContext(); + Requests[2610].RequestServices = CreateServices(); + Requests[2610].Request.Method = "POST"; + Requests[2610].Request.Path = "/subscriptions/e813cd47-707b-/resourceGroups/02013ba4-0ad3-452/providers/Microsoft.Scheduler/jobCollections/6a7d2510-6a9e-4a4/disable"; + Requests[2611] = new DefaultHttpContext(); + Requests[2611].RequestServices = CreateServices(); + Requests[2611].Request.Method = "POST"; + Requests[2611].Request.Path = "/subscriptions/3eb4179b-d495-/resourceGroups/1fbe716c-894f-45d/providers/Microsoft.Scheduler/jobCollections/a0a6582a-e5fc-4d5/enable"; + Requests[2612] = new DefaultHttpContext(); + Requests[2612].RequestServices = CreateServices(); + Requests[2612].Request.Method = "GET"; + Requests[2612].Request.Path = "/subscriptions/9fc849b9-961e-/resourceGroups/50e3d124-d298-4e3/providers/Microsoft.Scheduler/jobCollections/c6909d19-1621-422/jobs"; + Requests[2613] = new DefaultHttpContext(); + Requests[2613].RequestServices = CreateServices(); + Requests[2613].Request.Method = "POST"; + Requests[2613].Request.Path = "/subscriptions/fd01b761-08fb-/resourceGroups/0e2d0c5b-ebb5-4f8/providers/Microsoft.Search/searchServices/480af91f-fa19-4d0/listAdminKeys"; + Requests[2614] = new DefaultHttpContext(); + Requests[2614].RequestServices = CreateServices(); + Requests[2614].Request.Method = "GET"; + Requests[2614].Request.Path = "/subscriptions/43cefd98-4448-/resourceGroups/1acbbc2c-ac8a-462/providers/Microsoft.Search/searchServices/51a24a7b-2a5b-471/listQueryKeys"; + Requests[2615] = new DefaultHttpContext(); + Requests[2615].RequestServices = CreateServices(); + Requests[2615].Request.Method = "GET"; + Requests[2615].Request.Path = "/subscriptions/23251edf-8993-/resourceGroups/8a51f685-caf9-4f0/providers/Microsoft.Security/locations/77dcfa16-e3/alerts"; + Requests[2616] = new DefaultHttpContext(); + Requests[2616].RequestServices = CreateServices(); + Requests[2616].Request.Method = "GET"; + Requests[2616].Request.Path = "/subscriptions/083665f2-0b8c-/resourceGroups/bb19726e-83bc-4cb/providers/Microsoft.Security/locations/cbdd176f-2c/jitNetworkAccessPolicies"; + Requests[2617] = new DefaultHttpContext(); + Requests[2617].RequestServices = CreateServices(); + Requests[2617].Request.Method = "GET"; + Requests[2617].Request.Path = "/subscriptions/150f7b12-4eda-/resourceGroups/d4240df4-d6ff-473/providers/Microsoft.Security/locations/38c98d83-8b/tasks"; + Requests[2618] = new DefaultHttpContext(); + Requests[2618].RequestServices = CreateServices(); + Requests[2618].Request.Method = "POST"; + Requests[2618].Request.Path = "/subscriptions/64b9c209-057b-/resourceGroups/13118bba-f411-42c/providers/Microsoft.ServerManagement/gateways/57398856-02/profile"; + Requests[2619] = new DefaultHttpContext(); + Requests[2619].RequestServices = CreateServices(); + Requests[2619].Request.Method = "POST"; + Requests[2619].Request.Path = "/subscriptions/69aaa9c7-4bc4-/resourceGroups/da481315-3f26-460/providers/Microsoft.ServerManagement/gateways/902299ab-58/regenerateprofile"; + Requests[2620] = new DefaultHttpContext(); + Requests[2620].RequestServices = CreateServices(); + Requests[2620].Request.Method = "POST"; + Requests[2620].Request.Path = "/subscriptions/128f7941-eb75-/resourceGroups/64cd31fa-7c96-443/providers/Microsoft.ServerManagement/gateways/dd606469-04/upgradetolatest"; + Requests[2621] = new DefaultHttpContext(); + Requests[2621].RequestServices = CreateServices(); + Requests[2621].Request.Method = "POST"; + Requests[2621].Request.Path = "/subscriptions/8c547543-7d48-/resourceGroups/213a4a15-3c7d-4ed/providers/Microsoft.ServiceBus/namespaces/5238fef8-05d0/AuthorizationRules"; + Requests[2622] = new DefaultHttpContext(); + Requests[2622].RequestServices = CreateServices(); + Requests[2622].Request.Method = "GET"; + Requests[2622].Request.Path = "/subscriptions/94d05e0d-07e6-/resourceGroups/eb73a9ba-2645-4e1/providers/Microsoft.ServiceBus/namespaces/19e7d2a5-2ef3/AuthorizationRules"; + Requests[2623] = new DefaultHttpContext(); + Requests[2623].RequestServices = CreateServices(); + Requests[2623].Request.Method = "GET"; + Requests[2623].Request.Path = "/subscriptions/41b1d6bc-86e0-/resourceGroups/0f21e29c-d363-4e1/providers/Microsoft.ServiceBus/namespaces/7653bf41-8c34/disasterRecoveryConfigs"; + Requests[2624] = new DefaultHttpContext(); + Requests[2624].RequestServices = CreateServices(); + Requests[2624].Request.Method = "GET"; + Requests[2624].Request.Path = "/subscriptions/a4433260-a942-/resourceGroups/684b9889-fbbc-4c2/providers/Microsoft.ServiceBus/namespaces/ba26e870-c8e0/eventhubs"; + Requests[2625] = new DefaultHttpContext(); + Requests[2625].RequestServices = CreateServices(); + Requests[2625].Request.Method = "GET"; + Requests[2625].Request.Path = "/subscriptions/a4950609-7f75-/resourceGroups/8ab5c2e1-bc2b-48e/providers/Microsoft.ServiceBus/namespaces/af156b3c-de5d/messagingplan"; + Requests[2626] = new DefaultHttpContext(); + Requests[2626].RequestServices = CreateServices(); + Requests[2626].Request.Method = "PUT"; + Requests[2626].Request.Path = "/subscriptions/65bae425-0272-/resourceGroups/4958d9c8-dd71-4d0/providers/Microsoft.ServiceBus/namespaces/613aa8f2-5a3e/messagingplan"; + Requests[2627] = new DefaultHttpContext(); + Requests[2627].RequestServices = CreateServices(); + Requests[2627].Request.Method = "GET"; + Requests[2627].Request.Path = "/subscriptions/3e84e179-467e-/resourceGroups/356f79bb-d21e-4c9/providers/Microsoft.ServiceBus/namespaces/a9e051d3-1783/migrationConfigurations"; + Requests[2628] = new DefaultHttpContext(); + Requests[2628].RequestServices = CreateServices(); + Requests[2628].Request.Method = "GET"; + Requests[2628].Request.Path = "/subscriptions/47a61493-5757-/resourceGroups/3e0e8d9d-06f0-4c9/providers/Microsoft.ServiceBus/namespaces/c689e601-2ef7/queues"; + Requests[2629] = new DefaultHttpContext(); + Requests[2629].RequestServices = CreateServices(); + Requests[2629].Request.Method = "GET"; + Requests[2629].Request.Path = "/subscriptions/6203031c-5a5f-/resourceGroups/dd5f6142-b48f-4ac/providers/Microsoft.ServiceBus/namespaces/cc7b6790-68da/topics"; + Requests[2630] = new DefaultHttpContext(); + Requests[2630].RequestServices = CreateServices(); + Requests[2630].Request.Method = "GET"; + Requests[2630].Request.Path = "/subscriptions/59aa1090-6474-/resourceGroups/e33fe5bf-d924-4fa/providers/Microsoft.ServiceFabric/clusters/fc1b2cf3-dc/applications"; + Requests[2631] = new DefaultHttpContext(); + Requests[2631].RequestServices = CreateServices(); + Requests[2631].Request.Method = "GET"; + Requests[2631].Request.Path = "/subscriptions/1540fc1b-d942-/resourceGroups/c7388b4f-62fa-4ae/providers/Microsoft.ServiceFabric/clusters/f1bd97a4-19/applicationTypes"; + Requests[2632] = new DefaultHttpContext(); + Requests[2632].RequestServices = CreateServices(); + Requests[2632].Request.Method = "POST"; + Requests[2632].Request.Path = "/subscriptions/2fceaa91-86f4-/resourceGroups/083cd55c-0788-468/providers/Microsoft.SignalRService/SignalR/5f3eb793-605/listKeys"; + Requests[2633] = new DefaultHttpContext(); + Requests[2633].RequestServices = CreateServices(); + Requests[2633].Request.Method = "POST"; + Requests[2633].Request.Path = "/subscriptions/e0ed5a4f-4257-/resourceGroups/33200d1c-62c8-46e/providers/Microsoft.SignalRService/SignalR/873bc140-4f7/regenerateKey"; + Requests[2634] = new DefaultHttpContext(); + Requests[2634].RequestServices = CreateServices(); + Requests[2634].Request.Method = "GET"; + Requests[2634].Request.Path = "/subscriptions/b9f31335-c1dd-/resourceGroups/bff2eff6-ceb7-482/providers/Microsoft.Sql/locations/fa0dedd5-ede/instanceFailoverGroups"; + Requests[2635] = new DefaultHttpContext(); + Requests[2635].RequestServices = CreateServices(); + Requests[2635].Request.Method = "GET"; + Requests[2635].Request.Path = "/subscriptions/477f4a0a-5bc7-/resourceGroups/5ad754cb-dbb7-445/providers/Microsoft.Sql/managedInstances/ec4e2dd0-0765-422e-/databases"; + Requests[2636] = new DefaultHttpContext(); + Requests[2636].RequestServices = CreateServices(); + Requests[2636].Request.Method = "GET"; + Requests[2636].Request.Path = "/subscriptions/863992f8-2a5e-/resourceGroups/4c46a2bb-14e6-4d4/providers/Microsoft.Sql/servers/0e69de27-a/administrators"; + Requests[2637] = new DefaultHttpContext(); + Requests[2637].RequestServices = CreateServices(); + Requests[2637].Request.Method = "GET"; + Requests[2637].Request.Path = "/subscriptions/cf4f8dc8-5d6a-/resourceGroups/7eb0f545-78cf-45d/providers/Microsoft.Sql/servers/e0fef700-2/advisors"; + Requests[2638] = new DefaultHttpContext(); + Requests[2638].RequestServices = CreateServices(); + Requests[2638].Request.Method = "GET"; + Requests[2638].Request.Path = "/subscriptions/8a72c1d3-df24-/resourceGroups/767ef99f-9704-439/providers/Microsoft.Sql/servers/a58cad5f-1/auditingPolicies"; + Requests[2639] = new DefaultHttpContext(); + Requests[2639].RequestServices = CreateServices(); + Requests[2639].Request.Method = "GET"; + Requests[2639].Request.Path = "/subscriptions/32bfe811-6238-/resourceGroups/c1985d5e-0767-4c8/providers/Microsoft.Sql/servers/8d82421f-2/backupLongTermRetentionVaults"; + Requests[2640] = new DefaultHttpContext(); + Requests[2640].RequestServices = CreateServices(); + Requests[2640].Request.Method = "GET"; + Requests[2640].Request.Path = "/subscriptions/9920e32d-4fed-/resourceGroups/75d22ef7-246a-4c0/providers/Microsoft.Sql/servers/ddf873a8-5/communicationLinks"; + Requests[2641] = new DefaultHttpContext(); + Requests[2641].RequestServices = CreateServices(); + Requests[2641].Request.Method = "GET"; + Requests[2641].Request.Path = "/subscriptions/bd01c846-7365-/resourceGroups/a4b51e2f-9e5d-444/providers/Microsoft.Sql/servers/f1f51c5f-4/databases"; + Requests[2642] = new DefaultHttpContext(); + Requests[2642].RequestServices = CreateServices(); + Requests[2642].Request.Method = "GET"; + Requests[2642].Request.Path = "/subscriptions/f91b1307-91ba-/resourceGroups/774410a2-d634-43c/providers/Microsoft.Sql/servers/7b6ef860-c/disasterRecoveryConfiguration"; + Requests[2643] = new DefaultHttpContext(); + Requests[2643].RequestServices = CreateServices(); + Requests[2643].Request.Method = "GET"; + Requests[2643].Request.Path = "/subscriptions/3fcf1732-8fc7-/resourceGroups/c4a62167-30e0-471/providers/Microsoft.Sql/servers/c047c2ba-c/dnsAliases"; + Requests[2644] = new DefaultHttpContext(); + Requests[2644].RequestServices = CreateServices(); + Requests[2644].Request.Method = "GET"; + Requests[2644].Request.Path = "/subscriptions/b31b1877-e2fd-/resourceGroups/4ac0c6a6-c66e-484/providers/Microsoft.Sql/servers/8ad2d088-8/elasticPools"; + Requests[2645] = new DefaultHttpContext(); + Requests[2645].RequestServices = CreateServices(); + Requests[2645].Request.Method = "GET"; + Requests[2645].Request.Path = "/subscriptions/458d508c-4df9-/resourceGroups/d865b811-4f53-449/providers/Microsoft.Sql/servers/dfb59dd4-5/encryptionProtector"; + Requests[2646] = new DefaultHttpContext(); + Requests[2646].RequestServices = CreateServices(); + Requests[2646].Request.Method = "GET"; + Requests[2646].Request.Path = "/subscriptions/a4a9c7cb-1198-/resourceGroups/ea34084c-7999-4f1/providers/Microsoft.Sql/servers/0353a455-9/failoverGroups"; + Requests[2647] = new DefaultHttpContext(); + Requests[2647].RequestServices = CreateServices(); + Requests[2647].Request.Method = "PUT"; + Requests[2647].Request.Path = "/subscriptions/fbd5666a-07c6-/resourceGroups/73064926-fbc3-40c/providers/Microsoft.Sql/servers/f7eb9746-e/firewallRules"; + Requests[2648] = new DefaultHttpContext(); + Requests[2648].RequestServices = CreateServices(); + Requests[2648].Request.Method = "GET"; + Requests[2648].Request.Path = "/subscriptions/f98534ec-541b-/resourceGroups/a30d18dd-7741-4d8/providers/Microsoft.Sql/servers/84226b59-5/firewallRules"; + Requests[2649] = new DefaultHttpContext(); + Requests[2649].RequestServices = CreateServices(); + Requests[2649].Request.Method = "POST"; + Requests[2649].Request.Path = "/subscriptions/3026825f-5371-/resourceGroups/c5856315-52e7-4ce/providers/Microsoft.Sql/servers/dbfb8e3d-a/import"; + Requests[2650] = new DefaultHttpContext(); + Requests[2650].RequestServices = CreateServices(); + Requests[2650].Request.Method = "GET"; + Requests[2650].Request.Path = "/subscriptions/efacabe1-d46d-/resourceGroups/d098e9a3-37b1-41d/providers/Microsoft.Sql/servers/005ad2ba-a/jobAgents"; + Requests[2651] = new DefaultHttpContext(); + Requests[2651].RequestServices = CreateServices(); + Requests[2651].Request.Method = "GET"; + Requests[2651].Request.Path = "/subscriptions/a4efa562-3bfc-/resourceGroups/77402161-5ff8-4d0/providers/Microsoft.Sql/servers/7641de7c-c/keys"; + Requests[2652] = new DefaultHttpContext(); + Requests[2652].RequestServices = CreateServices(); + Requests[2652].Request.Method = "GET"; + Requests[2652].Request.Path = "/subscriptions/6ae0e156-c656-/resourceGroups/67272c45-b3ed-41b/providers/Microsoft.Sql/servers/6a12a1f8-8/recommendedElasticPools"; + Requests[2653] = new DefaultHttpContext(); + Requests[2653].RequestServices = CreateServices(); + Requests[2653].Request.Method = "GET"; + Requests[2653].Request.Path = "/subscriptions/d372d250-b86f-/resourceGroups/b4c4400a-b923-4a1/providers/Microsoft.Sql/servers/d9093807-c/recoverableDatabases"; + Requests[2654] = new DefaultHttpContext(); + Requests[2654].RequestServices = CreateServices(); + Requests[2654].Request.Method = "GET"; + Requests[2654].Request.Path = "/subscriptions/3f71185a-d8f3-/resourceGroups/a6bff1a2-d69f-4b4/providers/Microsoft.Sql/servers/509a0da3-0/restorableDroppedDatabases"; + Requests[2655] = new DefaultHttpContext(); + Requests[2655].RequestServices = CreateServices(); + Requests[2655].Request.Method = "GET"; + Requests[2655].Request.Path = "/subscriptions/20b708db-9214-/resourceGroups/66259f05-87b8-4f3/providers/Microsoft.Sql/servers/e9b46ead-1/serviceObjectives"; + Requests[2656] = new DefaultHttpContext(); + Requests[2656].RequestServices = CreateServices(); + Requests[2656].Request.Method = "GET"; + Requests[2656].Request.Path = "/subscriptions/5145f2d0-fda6-/resourceGroups/c2b7a990-b12e-454/providers/Microsoft.Sql/servers/dcd0c8af-0/syncAgents"; + Requests[2657] = new DefaultHttpContext(); + Requests[2657].RequestServices = CreateServices(); + Requests[2657].Request.Method = "GET"; + Requests[2657].Request.Path = "/subscriptions/4a1ed953-f4d1-/resourceGroups/932f5c92-f1fd-4b1/providers/Microsoft.Sql/servers/8a31564c-c/usages"; + Requests[2658] = new DefaultHttpContext(); + Requests[2658].RequestServices = CreateServices(); + Requests[2658].Request.Method = "GET"; + Requests[2658].Request.Path = "/subscriptions/f3df457b-d30a-/resourceGroups/f176a5f9-31f8-446/providers/Microsoft.Sql/servers/f89ef74d-f/virtualNetworkRules"; + Requests[2659] = new DefaultHttpContext(); + Requests[2659].RequestServices = CreateServices(); + Requests[2659].Request.Method = "GET"; + Requests[2659].Request.Path = "/subscriptions/eb6aa8ef-3821-/resourcegroups/3b5e60ec-86ee-4e3/providers/Microsoft.Storage.Admin/farms/589a4e/acquisitions"; + Requests[2660] = new DefaultHttpContext(); + Requests[2660].RequestServices = CreateServices(); + Requests[2660].Request.Method = "GET"; + Requests[2660].Request.Path = "/subscriptions/57c4bd77-5313-/resourcegroups/1f38ad21-84e4-4e2/providers/Microsoft.Storage.Admin/farms/475ade/metricdefinitions"; + Requests[2661] = new DefaultHttpContext(); + Requests[2661].RequestServices = CreateServices(); + Requests[2661].Request.Method = "GET"; + Requests[2661].Request.Path = "/subscriptions/3baaa167-3e9e-/resourcegroups/7f136b87-0364-430/providers/Microsoft.Storage.Admin/farms/3e1b3a/metrics"; + Requests[2662] = new DefaultHttpContext(); + Requests[2662].RequestServices = CreateServices(); + Requests[2662].Request.Method = "POST"; + Requests[2662].Request.Path = "/subscriptions/b9f8d8f3-3bb4-/resourcegroups/19b6041a-2187-483/providers/Microsoft.Storage.Admin/farms/71a8aa/ondemandgc"; + Requests[2663] = new DefaultHttpContext(); + Requests[2663].RequestServices = CreateServices(); + Requests[2663].Request.Method = "GET"; + Requests[2663].Request.Path = "/subscriptions/b3896dc8-8ee3-/resourcegroups/c0916483-59d7-42a/providers/Microsoft.Storage.Admin/farms/e73d8a/shares"; + Requests[2664] = new DefaultHttpContext(); + Requests[2664].RequestServices = CreateServices(); + Requests[2664].Request.Method = "GET"; + Requests[2664].Request.Path = "/subscriptions/b6d5020e-b681-/resourcegroups/176d36f1-3976-444/providers/Microsoft.Storage.Admin/farms/da1758/storageaccounts"; + Requests[2665] = new DefaultHttpContext(); + Requests[2665].RequestServices = CreateServices(); + Requests[2665].Request.Method = "POST"; + Requests[2665].Request.Path = "/subscriptions/6b69808c-583f-/resourceGroups/e3a74a9d-5d85-405/providers/Microsoft.Storage/storageAccounts/5c067843-29/ListAccountSas"; + Requests[2666] = new DefaultHttpContext(); + Requests[2666].RequestServices = CreateServices(); + Requests[2666].Request.Method = "POST"; + Requests[2666].Request.Path = "/subscriptions/e85fc4b8-10fe-/resourceGroups/b7676416-39e6-41f/providers/Microsoft.Storage/storageAccounts/e5ef76bb-7a/listKeys"; + Requests[2667] = new DefaultHttpContext(); + Requests[2667].RequestServices = CreateServices(); + Requests[2667].Request.Method = "POST"; + Requests[2667].Request.Path = "/subscriptions/4c6c5650-74d6-/resourceGroups/279dc70a-f9fe-415/providers/Microsoft.Storage/storageAccounts/c27ca217-92/ListServiceSas"; + Requests[2668] = new DefaultHttpContext(); + Requests[2668].RequestServices = CreateServices(); + Requests[2668].Request.Method = "POST"; + Requests[2668].Request.Path = "/subscriptions/8f7c0b2a-196c-/resourceGroups/b5b7da1d-87d0-4d1/providers/Microsoft.Storage/storageAccounts/4ff0fc70-d8/regenerateKey"; + Requests[2669] = new DefaultHttpContext(); + Requests[2669].RequestServices = CreateServices(); + Requests[2669].Request.Method = "GET"; + Requests[2669].Request.Path = "/subscriptions/410fba3d-2dc9-/resourceGroups/c9f489a8-14d5-413/providers/Microsoft.StorSimple/managers/1b49787f-7b/accessControlRecords"; + Requests[2670] = new DefaultHttpContext(); + Requests[2670].RequestServices = CreateServices(); + Requests[2670].Request.Method = "GET"; + Requests[2670].Request.Path = "/subscriptions/2a0e3745-e28b-/resourceGroups/8cc992f0-9bfc-4fe/providers/Microsoft.StorSimple/managers/d4ddc9a7-bf/alerts"; + Requests[2671] = new DefaultHttpContext(); + Requests[2671].RequestServices = CreateServices(); + Requests[2671].Request.Method = "GET"; + Requests[2671].Request.Path = "/subscriptions/7ffb4c67-0f8c-/resourceGroups/a678eea3-7437-44a/providers/Microsoft.StorSimple/managers/1f56ab39-5f/bandwidthSettings"; + Requests[2672] = new DefaultHttpContext(); + Requests[2672].RequestServices = CreateServices(); + Requests[2672].Request.Method = "POST"; + Requests[2672].Request.Path = "/subscriptions/a04ccd3d-6d91-/resourceGroups/d3f3c7e9-fed4-445/providers/Microsoft.StorSimple/managers/aa625fe9-ef/clearAlerts"; + Requests[2673] = new DefaultHttpContext(); + Requests[2673].RequestServices = CreateServices(); + Requests[2673].Request.Method = "GET"; + Requests[2673].Request.Path = "/subscriptions/e6a7d82b-0a33-/resourceGroups/109dc6c1-c872-4fd/providers/Microsoft.StorSimple/managers/996353b4-ba/cloudApplianceConfigurations"; + Requests[2674] = new DefaultHttpContext(); + Requests[2674].RequestServices = CreateServices(); + Requests[2674].Request.Method = "POST"; + Requests[2674].Request.Path = "/subscriptions/5522e324-b278-/resourceGroups/1752288f-47af-49e/providers/Microsoft.StorSimple/managers/ad6a4cb7-90/configureDevice"; + Requests[2675] = new DefaultHttpContext(); + Requests[2675].RequestServices = CreateServices(); + Requests[2675].Request.Method = "GET"; + Requests[2675].Request.Path = "/subscriptions/3b324e24-f112-/resourceGroups/59b806f4-3699-446/providers/Microsoft.StorSimple/managers/a63a09f8-5b/devices"; + Requests[2676] = new DefaultHttpContext(); + Requests[2676].RequestServices = CreateServices(); + Requests[2676].Request.Method = "GET"; + Requests[2676].Request.Path = "/subscriptions/fc0a9220-d3fa-/resourceGroups/c7f37eea-f1cf-491/providers/Microsoft.StorSimple/managers/b78f676b-53/features"; + Requests[2677] = new DefaultHttpContext(); + Requests[2677].RequestServices = CreateServices(); + Requests[2677].Request.Method = "GET"; + Requests[2677].Request.Path = "/subscriptions/8597d52a-72bb-/resourceGroups/81873300-4ef5-47c/providers/Microsoft.StorSimple/managers/be6c05d8-71/jobs"; + Requests[2678] = new DefaultHttpContext(); + Requests[2678].RequestServices = CreateServices(); + Requests[2678].Request.Method = "POST"; + Requests[2678].Request.Path = "/subscriptions/10d335e2-d145-/resourceGroups/6141d8c4-fb8e-4de/providers/Microsoft.StorSimple/managers/26811a83-a8/listActivationKey"; + Requests[2679] = new DefaultHttpContext(); + Requests[2679].RequestServices = CreateServices(); + Requests[2679].Request.Method = "POST"; + Requests[2679].Request.Path = "/subscriptions/17f91076-052c-/resourceGroups/459025b7-8d2c-44a/providers/Microsoft.StorSimple/managers/b8f37181-d6/listPublicEncryptionKey"; + Requests[2680] = new DefaultHttpContext(); + Requests[2680].RequestServices = CreateServices(); + Requests[2680].Request.Method = "GET"; + Requests[2680].Request.Path = "/subscriptions/6bfe69b5-366a-/resourceGroups/9c263d4f-dbe9-4fb/providers/Microsoft.StorSimple/managers/9548a507-b4/metrics"; + Requests[2681] = new DefaultHttpContext(); + Requests[2681].RequestServices = CreateServices(); + Requests[2681].Request.Method = "GET"; + Requests[2681].Request.Path = "/subscriptions/fd45b314-d178-/resourceGroups/1ce77fc4-e5dd-4ee/providers/Microsoft.StorSimple/managers/bbdce1b2-99/metricsDefinitions"; + Requests[2682] = new DefaultHttpContext(); + Requests[2682].RequestServices = CreateServices(); + Requests[2682].Request.Method = "POST"; + Requests[2682].Request.Path = "/subscriptions/35e62cc7-97df-/resourceGroups/45e03b3a-9c47-451/providers/Microsoft.StorSimple/managers/cf397eec-e7/provisionCloudAppliance"; + Requests[2683] = new DefaultHttpContext(); + Requests[2683].RequestServices = CreateServices(); + Requests[2683].Request.Method = "POST"; + Requests[2683].Request.Path = "/subscriptions/b61bac52-623f-/resourceGroups/ba19c43d-17a6-422/providers/Microsoft.StorSimple/managers/23ee2c30-bd/regenerateActivationKey"; + Requests[2684] = new DefaultHttpContext(); + Requests[2684].RequestServices = CreateServices(); + Requests[2684].Request.Method = "GET"; + Requests[2684].Request.Path = "/subscriptions/da63bc14-b55a-/resourceGroups/ca2ef8fd-73a2-40f/providers/Microsoft.StorSimple/managers/6acc2bae-f4/storageAccountCredentials"; + Requests[2685] = new DefaultHttpContext(); + Requests[2685].RequestServices = CreateServices(); + Requests[2685].Request.Method = "GET"; + Requests[2685].Request.Path = "/subscriptions/eaca811f-6530-/resourcegroups/a2580af8-2918-43b/providers/Microsoft.StreamAnalytics/streamingjobs/fe3c3d4/functions"; + Requests[2686] = new DefaultHttpContext(); + Requests[2686].RequestServices = CreateServices(); + Requests[2686].Request.Method = "GET"; + Requests[2686].Request.Path = "/subscriptions/fed38ab8-63ac-/resourcegroups/036ba90a-f25c-4be/providers/Microsoft.StreamAnalytics/streamingjobs/f1e1a8b/inputs"; + Requests[2687] = new DefaultHttpContext(); + Requests[2687].RequestServices = CreateServices(); + Requests[2687].Request.Method = "GET"; + Requests[2687].Request.Path = "/subscriptions/6d4f8478-8593-/resourcegroups/7536edef-8996-45d/providers/Microsoft.StreamAnalytics/streamingjobs/2fe1e8c/outputs"; + Requests[2688] = new DefaultHttpContext(); + Requests[2688].RequestServices = CreateServices(); + Requests[2688].Request.Method = "POST"; + Requests[2688].Request.Path = "/subscriptions/4abf8303-4baa-/resourcegroups/feae29ec-7442-4af/providers/Microsoft.StreamAnalytics/streamingjobs/d1aff8c/start"; + Requests[2689] = new DefaultHttpContext(); + Requests[2689].RequestServices = CreateServices(); + Requests[2689].Request.Method = "POST"; + Requests[2689].Request.Path = "/subscriptions/4176329f-beb9-/resourcegroups/3387cbf7-21d0-47b/providers/Microsoft.StreamAnalytics/streamingjobs/dbda36d/stop"; + Requests[2690] = new DefaultHttpContext(); + Requests[2690].RequestServices = CreateServices(); + Requests[2690].Request.Method = "POST"; + Requests[2690].Request.Path = "/subscriptions/70d6193e-2f86-/resourcegroups/efba5d09-3ef7-4b5/providers/Microsoft.Subscriptions.Admin/offers/007ed/link"; + Requests[2691] = new DefaultHttpContext(); + Requests[2691].RequestServices = CreateServices(); + Requests[2691].Request.Method = "GET"; + Requests[2691].Request.Path = "/subscriptions/2cfe1e0f-25c6-/resourcegroups/d5180e3b-ed9b-430/providers/Microsoft.Subscriptions.Admin/offers/d126a/MetricDefinitions"; + Requests[2692] = new DefaultHttpContext(); + Requests[2692].RequestServices = CreateServices(); + Requests[2692].Request.Method = "GET"; + Requests[2692].Request.Path = "/subscriptions/772ecbae-8b81-/resourcegroups/b44e2b9b-0131-428/providers/Microsoft.Subscriptions.Admin/offers/20ef8/Metrics"; + Requests[2693] = new DefaultHttpContext(); + Requests[2693].RequestServices = CreateServices(); + Requests[2693].Request.Method = "GET"; + Requests[2693].Request.Path = "/subscriptions/440e9476-b7ad-/resourcegroups/45bc3eb8-1799-478/providers/Microsoft.Subscriptions.Admin/offers/4984b/offerDelegations"; + Requests[2694] = new DefaultHttpContext(); + Requests[2694].RequestServices = CreateServices(); + Requests[2694].Request.Method = "POST"; + Requests[2694].Request.Path = "/subscriptions/767226dd-e627-/resourcegroups/a516ef66-0efc-4db/providers/Microsoft.Subscriptions.Admin/offers/e286c/unlink"; + Requests[2695] = new DefaultHttpContext(); + Requests[2695].RequestServices = CreateServices(); + Requests[2695].Request.Method = "GET"; + Requests[2695].Request.Path = "/subscriptions/6bf35d4d-00bd-/resourcegroups/c6cc80d9-0ebb-42e/providers/Microsoft.Subscriptions.Admin/plans/74072/MetricDefinitions"; + Requests[2696] = new DefaultHttpContext(); + Requests[2696].RequestServices = CreateServices(); + Requests[2696].Request.Method = "GET"; + Requests[2696].Request.Path = "/subscriptions/f6a56cfa-bd19-/resourcegroups/255261a3-7d27-45e/providers/Microsoft.Subscriptions.Admin/plans/b4003/Metrics"; + Requests[2697] = new DefaultHttpContext(); + Requests[2697].RequestServices = CreateServices(); + Requests[2697].Request.Method = "GET"; + Requests[2697].Request.Path = "/subscriptions/c26082de-a95a-/resourceGroups/cc7675b8-dc89-42c/providers/Microsoft.TimeSeriesInsights/environments/52235db5-c35a-4/accessPolicies"; + Requests[2698] = new DefaultHttpContext(); + Requests[2698].RequestServices = CreateServices(); + Requests[2698].Request.Method = "GET"; + Requests[2698].Request.Path = "/subscriptions/9cde9ea1-3ea5-/resourceGroups/44b0ce23-582a-428/providers/Microsoft.TimeSeriesInsights/environments/b8207dd9-f94d-4/eventSources"; + Requests[2699] = new DefaultHttpContext(); + Requests[2699].RequestServices = CreateServices(); + Requests[2699].Request.Method = "GET"; + Requests[2699].Request.Path = "/subscriptions/95ac4520-c3b3-/resourceGroups/6d459466-27a5-46d/providers/Microsoft.TimeSeriesInsights/environments/eeddbe08-deae-4/referenceDataSets"; + Requests[2700] = new DefaultHttpContext(); + Requests[2700].RequestServices = CreateServices(); + Requests[2700].Request.Method = "GET"; + Requests[2700].Request.Path = "/subscriptions/573541a2-aad9-/resourcegroups/84b72b69-2cfc-465/providers/Microsoft.Update.Admin/updateLocations/5303c90c-4c9f-/updates"; + Requests[2701] = new DefaultHttpContext(); + Requests[2701].RequestServices = CreateServices(); + Requests[2701].Request.Method = "GET"; + Requests[2701].Request.Path = "/subscriptions/54cf945f-f532-/resourcegroups/44a6e073-cdda-450/providers/microsoft.visualstudio/account/c66db755-2902-47f9-/extension"; + Requests[2702] = new DefaultHttpContext(); + Requests[2702].RequestServices = CreateServices(); + Requests[2702].Request.Method = "GET"; + Requests[2702].Request.Path = "/subscriptions/e44cdeeb-f25c-/resourceGroups/c167ac2b-fc7e-411/providers/microsoft.visualstudio/account/234e1070-588f-4d/project"; + Requests[2703] = new DefaultHttpContext(); + Requests[2703].RequestServices = CreateServices(); + Requests[2703].Request.Method = "GET"; + Requests[2703].Request.Path = "/subscriptions/afaa133c-6ea9-/resourceGroups/b7ef4c9e-71a6-4d7/providers/Microsoft.Web.Admin/environments/c0482972-e93b-4/usage"; + Requests[2704] = new DefaultHttpContext(); + Requests[2704].RequestServices = CreateServices(); + Requests[2704].Request.Method = "POST"; + Requests[2704].Request.Path = "/subscriptions/6c7d9a59-42b6-/resourceGroups/025bd756-9582-40c/providers/Microsoft.Web/connections/38252347-7ad9-/confirmConsentCode"; + Requests[2705] = new DefaultHttpContext(); + Requests[2705].RequestServices = CreateServices(); + Requests[2705].Request.Method = "POST"; + Requests[2705].Request.Path = "/subscriptions/420df0ec-caba-/resourceGroups/20204c67-6d83-467/providers/Microsoft.Web/connections/76aab7ff-0f5d-/listConnectionKeys"; + Requests[2706] = new DefaultHttpContext(); + Requests[2706].RequestServices = CreateServices(); + Requests[2706].Request.Method = "POST"; + Requests[2706].Request.Path = "/subscriptions/61ab2537-10d5-/resourceGroups/3e7dfc9d-8271-452/providers/Microsoft.Web/connections/3ec2e022-3584-/listConsentLinks"; + Requests[2707] = new DefaultHttpContext(); + Requests[2707].RequestServices = CreateServices(); + Requests[2707].Request.Method = "POST"; + Requests[2707].Request.Path = "/subscriptions/1d7e1bff-f0b0-/resourceGroups/2f59d253-786c-420/providers/Microsoft.Web/customApis/172344b/move"; + Requests[2708] = new DefaultHttpContext(); + Requests[2708].RequestServices = CreateServices(); + Requests[2708].Request.Method = "POST"; + Requests[2708].Request.Path = "/subscriptions/aff61bec-d9d2-/resourceGroups/35fd1a45-f3ee-45e/providers/Microsoft.Web/hostingEnvironments/45da4/changeVirtualNetwork"; + Requests[2709] = new DefaultHttpContext(); + Requests[2709].RequestServices = CreateServices(); + Requests[2709].Request.Method = "GET"; + Requests[2709].Request.Path = "/subscriptions/56412a76-686c-/resourceGroups/f89d6ff7-c19a-4c4/providers/Microsoft.Web/hostingEnvironments/adc0f/detectors"; + Requests[2710] = new DefaultHttpContext(); + Requests[2710].RequestServices = CreateServices(); + Requests[2710].Request.Method = "GET"; + Requests[2710].Request.Path = "/subscriptions/6363a6a6-adb7-/resourceGroups/d0b78cb7-c9b8-41b/providers/Microsoft.Web/hostingEnvironments/347dd/diagnostics"; + Requests[2711] = new DefaultHttpContext(); + Requests[2711].RequestServices = CreateServices(); + Requests[2711].Request.Method = "GET"; + Requests[2711].Request.Path = "/subscriptions/8744fa73-cbae-/resourceGroups/bb49e812-a2f2-410/providers/Microsoft.Web/hostingEnvironments/3e706/metricdefinitions"; + Requests[2712] = new DefaultHttpContext(); + Requests[2712].RequestServices = CreateServices(); + Requests[2712].Request.Method = "GET"; + Requests[2712].Request.Path = "/subscriptions/3eb52e52-665a-/resourceGroups/3b9338c3-7434-422/providers/Microsoft.Web/hostingEnvironments/aeedd/metrics"; + Requests[2713] = new DefaultHttpContext(); + Requests[2713].RequestServices = CreateServices(); + Requests[2713].Request.Method = "GET"; + Requests[2713].Request.Path = "/subscriptions/b648d495-7aa6-/resourceGroups/9472f6fc-e6a3-4e3/providers/Microsoft.Web/hostingEnvironments/81f1e/multiRolePools"; + Requests[2714] = new DefaultHttpContext(); + Requests[2714].RequestServices = CreateServices(); + Requests[2714].Request.Method = "GET"; + Requests[2714].Request.Path = "/subscriptions/b3ba5dc3-65ca-/resourceGroups/9d6c098c-66a6-490/providers/Microsoft.Web/hostingEnvironments/dee98/operations"; + Requests[2715] = new DefaultHttpContext(); + Requests[2715].RequestServices = CreateServices(); + Requests[2715].Request.Method = "POST"; + Requests[2715].Request.Path = "/subscriptions/f1e10d6b-55f0-/resourceGroups/fffd8316-cdee-476/providers/Microsoft.Web/hostingEnvironments/37f5f/reboot"; + Requests[2716] = new DefaultHttpContext(); + Requests[2716].RequestServices = CreateServices(); + Requests[2716].Request.Method = "POST"; + Requests[2716].Request.Path = "/subscriptions/eab17dde-f986-/resourceGroups/614a3992-8e1d-4e4/providers/Microsoft.Web/hostingEnvironments/a925e/resume"; + Requests[2717] = new DefaultHttpContext(); + Requests[2717].RequestServices = CreateServices(); + Requests[2717].Request.Method = "GET"; + Requests[2717].Request.Path = "/subscriptions/03189473-85db-/resourceGroups/3bf96faa-5f7c-4e2/providers/Microsoft.Web/hostingEnvironments/00c45/serverfarms"; + Requests[2718] = new DefaultHttpContext(); + Requests[2718].RequestServices = CreateServices(); + Requests[2718].Request.Method = "GET"; + Requests[2718].Request.Path = "/subscriptions/2ec2a86c-0e84-/resourceGroups/0661b2f5-adbd-454/providers/Microsoft.Web/hostingEnvironments/18e1d/sites"; + Requests[2719] = new DefaultHttpContext(); + Requests[2719].RequestServices = CreateServices(); + Requests[2719].Request.Method = "POST"; + Requests[2719].Request.Path = "/subscriptions/a3761c13-1c06-/resourceGroups/73b1e16d-1d08-44e/providers/Microsoft.Web/hostingEnvironments/e78fe/suspend"; + Requests[2720] = new DefaultHttpContext(); + Requests[2720].RequestServices = CreateServices(); + Requests[2720].Request.Method = "POST"; + Requests[2720].Request.Path = "/subscriptions/0958a7e9-6924-/resourceGroups/36b6435f-7b8c-45a/providers/Microsoft.Web/hostingEnvironments/17dc1/syncVirtualNetwork"; + Requests[2721] = new DefaultHttpContext(); + Requests[2721].RequestServices = CreateServices(); + Requests[2721].Request.Method = "GET"; + Requests[2721].Request.Path = "/subscriptions/c4a66bdb-61c6-/resourceGroups/fbefe7d4-f10f-459/providers/Microsoft.Web/hostingEnvironments/11109/usages"; + Requests[2722] = new DefaultHttpContext(); + Requests[2722].RequestServices = CreateServices(); + Requests[2722].Request.Method = "GET"; + Requests[2722].Request.Path = "/subscriptions/49a29e33-3935-/resourceGroups/4a05439e-f9fd-431/providers/Microsoft.Web/hostingEnvironments/7cf7e/webhostingplans"; + Requests[2723] = new DefaultHttpContext(); + Requests[2723].RequestServices = CreateServices(); + Requests[2723].Request.Method = "GET"; + Requests[2723].Request.Path = "/subscriptions/9bfe6895-b5d1-/resourceGroups/5f44db9f-0879-48f/providers/Microsoft.Web/hostingEnvironments/3b0dd/workerPools"; + Requests[2724] = new DefaultHttpContext(); + Requests[2724].RequestServices = CreateServices(); + Requests[2724].Request.Method = "GET"; + Requests[2724].Request.Path = "/subscriptions/56b9b725-a28f-/resourceGroups/2d44ef23-a54f-4f6/providers/Microsoft.Web/managedHostingEnvironments/839f0/serverfarms"; + Requests[2725] = new DefaultHttpContext(); + Requests[2725].RequestServices = CreateServices(); + Requests[2725].Request.Method = "GET"; + Requests[2725].Request.Path = "/subscriptions/803ab048-a985-/resourceGroups/bd75ad7c-7b8f-4aa/providers/Microsoft.Web/managedHostingEnvironments/1e99a/sites"; + Requests[2726] = new DefaultHttpContext(); + Requests[2726].RequestServices = CreateServices(); + Requests[2726].Request.Method = "GET"; + Requests[2726].Request.Path = "/subscriptions/5a4b237e-f168-/resourceGroups/79c70805-78f8-4ea/providers/Microsoft.Web/managedHostingEnvironments/c7fbc/webhostingplans"; + Requests[2727] = new DefaultHttpContext(); + Requests[2727].RequestServices = CreateServices(); + Requests[2727].Request.Method = "GET"; + Requests[2727].Request.Path = "/subscriptions/3e8c8b1a-d1bb-/resourceGroups/537df491-3841-4e4/providers/Microsoft.Web/serverfarms/dacef/capabilities"; + Requests[2728] = new DefaultHttpContext(); + Requests[2728].RequestServices = CreateServices(); + Requests[2728].Request.Method = "GET"; + Requests[2728].Request.Path = "/subscriptions/43df7eba-c6c3-/resourceGroups/a9a43876-0d81-467/providers/Microsoft.Web/serverfarms/4be9f/hybridConnectionRelays"; + Requests[2729] = new DefaultHttpContext(); + Requests[2729].RequestServices = CreateServices(); + Requests[2729].Request.Method = "GET"; + Requests[2729].Request.Path = "/subscriptions/ed503071-23a2-/resourceGroups/72fa4a75-e3fe-4cb/providers/Microsoft.Web/serverfarms/42313/metricdefinitions"; + Requests[2730] = new DefaultHttpContext(); + Requests[2730].RequestServices = CreateServices(); + Requests[2730].Request.Method = "GET"; + Requests[2730].Request.Path = "/subscriptions/ecbf9627-d598-/resourceGroups/2da9b927-3bde-4eb/providers/Microsoft.Web/serverfarms/e093e/metrics"; + Requests[2731] = new DefaultHttpContext(); + Requests[2731].RequestServices = CreateServices(); + Requests[2731].Request.Method = "POST"; + Requests[2731].Request.Path = "/subscriptions/dcf95135-591a-/resourceGroups/3abb7141-410d-449/providers/Microsoft.Web/serverfarms/0b1d4/restartSites"; + Requests[2732] = new DefaultHttpContext(); + Requests[2732].RequestServices = CreateServices(); + Requests[2732].Request.Method = "GET"; + Requests[2732].Request.Path = "/subscriptions/3e48fcb3-76f4-/resourceGroups/32a2ab95-58be-409/providers/Microsoft.Web/serverfarms/6549b/sites"; + Requests[2733] = new DefaultHttpContext(); + Requests[2733].RequestServices = CreateServices(); + Requests[2733].Request.Method = "GET"; + Requests[2733].Request.Path = "/subscriptions/2a25ed50-6f0a-/resourceGroups/cfaef9cb-7a8c-4de/providers/Microsoft.Web/serverfarms/91dc1/skus"; + Requests[2734] = new DefaultHttpContext(); + Requests[2734].RequestServices = CreateServices(); + Requests[2734].Request.Method = "GET"; + Requests[2734].Request.Path = "/subscriptions/08fc63b0-64e4-/resourceGroups/07e1ef96-eedf-411/providers/Microsoft.Web/serverfarms/db8a1/usages"; + Requests[2735] = new DefaultHttpContext(); + Requests[2735].RequestServices = CreateServices(); + Requests[2735].Request.Method = "GET"; + Requests[2735].Request.Path = "/subscriptions/7fac1ba7-a902-/resourceGroups/28983ad5-e65a-489/providers/Microsoft.Web/serverfarms/69bcf/virtualNetworkConnections"; + Requests[2736] = new DefaultHttpContext(); + Requests[2736].RequestServices = CreateServices(); + Requests[2736].Request.Method = "GET"; + Requests[2736].Request.Path = "/subscriptions/35167dd1-5109-/resourceGroups/f3ada67f-ddff-4d1/providers/Microsoft.Web/sites/8f98d/analyzeCustomHostname"; + Requests[2737] = new DefaultHttpContext(); + Requests[2737].RequestServices = CreateServices(); + Requests[2737].Request.Method = "POST"; + Requests[2737].Request.Path = "/subscriptions/e391f217-2634-/resourceGroups/3cbe288f-994f-490/providers/Microsoft.Web/sites/2aec4/applySlotConfig"; + Requests[2738] = new DefaultHttpContext(); + Requests[2738].RequestServices = CreateServices(); + Requests[2738].Request.Method = "POST"; + Requests[2738].Request.Path = "/subscriptions/ad32687a-d4f8-/resourceGroups/6bddb917-47fb-406/providers/Microsoft.Web/sites/a6c83/backup"; + Requests[2739] = new DefaultHttpContext(); + Requests[2739].RequestServices = CreateServices(); + Requests[2739].Request.Method = "GET"; + Requests[2739].Request.Path = "/subscriptions/eee93fd7-bd72-/resourceGroups/8c185b07-563c-4a7/providers/Microsoft.Web/sites/e6b10/backups"; + Requests[2740] = new DefaultHttpContext(); + Requests[2740].RequestServices = CreateServices(); + Requests[2740].Request.Method = "GET"; + Requests[2740].Request.Path = "/subscriptions/a25fce38-09e2-/resourceGroups/07a20902-a2fb-428/providers/Microsoft.Web/sites/0c0bf/config"; + Requests[2741] = new DefaultHttpContext(); + Requests[2741].RequestServices = CreateServices(); + Requests[2741].Request.Method = "POST"; + Requests[2741].Request.Path = "/subscriptions/dff0edfb-2096-/resourceGroups/f571d277-c24b-47c/providers/Microsoft.Web/sites/bf7dc/containerlogs"; + Requests[2742] = new DefaultHttpContext(); + Requests[2742].RequestServices = CreateServices(); + Requests[2742].Request.Method = "GET"; + Requests[2742].Request.Path = "/subscriptions/96bd8ade-1f83-/resourceGroups/bba570a3-0652-469/providers/Microsoft.Web/sites/2e806/continuouswebjobs"; + Requests[2743] = new DefaultHttpContext(); + Requests[2743].RequestServices = CreateServices(); + Requests[2743].Request.Method = "GET"; + Requests[2743].Request.Path = "/subscriptions/65af9f84-c5fb-/resourceGroups/73f4566a-4c99-428/providers/Microsoft.Web/sites/e7e80/deployments"; + Requests[2744] = new DefaultHttpContext(); + Requests[2744].RequestServices = CreateServices(); + Requests[2744].Request.Method = "GET"; + Requests[2744].Request.Path = "/subscriptions/9ff7c052-280b-/resourceGroups/5c0b61a8-0511-441/providers/Microsoft.Web/sites/2a6d3/domainOwnershipIdentifiers"; + Requests[2745] = new DefaultHttpContext(); + Requests[2745].RequestServices = CreateServices(); + Requests[2745].Request.Method = "GET"; + Requests[2745].Request.Path = "/subscriptions/8024b26b-06ec-/resourceGroups/adef00f9-6222-4ec/providers/Microsoft.Web/sites/348d2/functions"; + Requests[2746] = new DefaultHttpContext(); + Requests[2746].RequestServices = CreateServices(); + Requests[2746].Request.Method = "GET"; + Requests[2746].Request.Path = "/subscriptions/46cdfaf5-440c-/resourceGroups/02b1e3e4-a8d0-401/providers/Microsoft.Web/sites/97b97/hostNameBindings"; + Requests[2747] = new DefaultHttpContext(); + Requests[2747].RequestServices = CreateServices(); + Requests[2747].Request.Method = "GET"; + Requests[2747].Request.Path = "/subscriptions/57a79f4d-944b-/resourceGroups/a20763cf-2e9f-404/providers/Microsoft.Web/sites/06afa/hybridconnection"; + Requests[2748] = new DefaultHttpContext(); + Requests[2748].RequestServices = CreateServices(); + Requests[2748].Request.Method = "GET"; + Requests[2748].Request.Path = "/subscriptions/1826e8b8-98fa-/resourceGroups/5de1f7d3-5a1e-439/providers/Microsoft.Web/sites/74976/hybridConnectionRelays"; + Requests[2749] = new DefaultHttpContext(); + Requests[2749].RequestServices = CreateServices(); + Requests[2749].Request.Method = "GET"; + Requests[2749].Request.Path = "/subscriptions/21889818-96d6-/resourceGroups/efc8cedc-6d7a-4f2/providers/Microsoft.Web/sites/dfb27/instances"; + Requests[2750] = new DefaultHttpContext(); + Requests[2750].RequestServices = CreateServices(); + Requests[2750].Request.Method = "POST"; + Requests[2750].Request.Path = "/subscriptions/981ef5cf-1648-/resourceGroups/26251c21-bf2c-464/providers/Microsoft.Web/sites/6ccbd/iscloneable"; + Requests[2751] = new DefaultHttpContext(); + Requests[2751].RequestServices = CreateServices(); + Requests[2751].Request.Method = "POST"; + Requests[2751].Request.Path = "/subscriptions/8e09d18e-a0b2-/resourceGroups/a52f1f08-3666-4fa/providers/Microsoft.Web/sites/e51bc/listsyncfunctiontriggerstatus"; + Requests[2752] = new DefaultHttpContext(); + Requests[2752].RequestServices = CreateServices(); + Requests[2752].Request.Method = "GET"; + Requests[2752].Request.Path = "/subscriptions/5859de04-868f-/resourceGroups/2622d29a-f174-45b/providers/Microsoft.Web/sites/10bb5/metricdefinitions"; + Requests[2753] = new DefaultHttpContext(); + Requests[2753].RequestServices = CreateServices(); + Requests[2753].Request.Method = "GET"; + Requests[2753].Request.Path = "/subscriptions/322f680b-315e-/resourceGroups/9bfee610-307d-45b/providers/Microsoft.Web/sites/8f693/metrics"; + Requests[2754] = new DefaultHttpContext(); + Requests[2754].RequestServices = CreateServices(); + Requests[2754].Request.Method = "PUT"; + Requests[2754].Request.Path = "/subscriptions/8a070a0f-26e1-/resourceGroups/7e40e879-4cf8-42a/providers/Microsoft.Web/sites/4fdc3/migrate"; + Requests[2755] = new DefaultHttpContext(); + Requests[2755].RequestServices = CreateServices(); + Requests[2755].Request.Method = "POST"; + Requests[2755].Request.Path = "/subscriptions/4a99eb29-2f87-/resourceGroups/cb5f2ff5-9fa3-4a0/providers/Microsoft.Web/sites/04832/migratemysql"; + Requests[2756] = new DefaultHttpContext(); + Requests[2756].RequestServices = CreateServices(); + Requests[2756].Request.Method = "POST"; + Requests[2756].Request.Path = "/subscriptions/472c8dd2-66d8-/resourceGroups/874bc560-027a-464/providers/Microsoft.Web/sites/3de85/newpassword"; + Requests[2757] = new DefaultHttpContext(); + Requests[2757].RequestServices = CreateServices(); + Requests[2757].Request.Method = "GET"; + Requests[2757].Request.Path = "/subscriptions/2404586a-f040-/resourceGroups/16894f25-af0c-457/providers/Microsoft.Web/sites/a8164/perfcounters"; + Requests[2758] = new DefaultHttpContext(); + Requests[2758].RequestServices = CreateServices(); + Requests[2758].Request.Method = "GET"; + Requests[2758].Request.Path = "/subscriptions/e9db74ea-0af6-/resourceGroups/c147af92-3f64-4ff/providers/Microsoft.Web/sites/62c1c/phplogging"; + Requests[2759] = new DefaultHttpContext(); + Requests[2759].RequestServices = CreateServices(); + Requests[2759].Request.Method = "GET"; + Requests[2759].Request.Path = "/subscriptions/a6f79100-2527-/resourceGroups/be81fdb3-0878-4f0/providers/Microsoft.Web/sites/5ceda/premieraddons"; + Requests[2760] = new DefaultHttpContext(); + Requests[2760].RequestServices = CreateServices(); + Requests[2760].Request.Method = "GET"; + Requests[2760].Request.Path = "/subscriptions/1a2b7963-50b0-/resourceGroups/25268570-bc47-4b7/providers/Microsoft.Web/sites/ec009/processes"; + Requests[2761] = new DefaultHttpContext(); + Requests[2761].RequestServices = CreateServices(); + Requests[2761].Request.Method = "GET"; + Requests[2761].Request.Path = "/subscriptions/669281d1-47a2-/resourceGroups/c0cd0d29-1c62-493/providers/Microsoft.Web/sites/35c6d/publicCertificates"; + Requests[2762] = new DefaultHttpContext(); + Requests[2762].RequestServices = CreateServices(); + Requests[2762].Request.Method = "POST"; + Requests[2762].Request.Path = "/subscriptions/e65ec136-bd42-/resourceGroups/f14d50e1-e2d6-422/providers/Microsoft.Web/sites/521f0/publishxml"; + Requests[2763] = new DefaultHttpContext(); + Requests[2763].RequestServices = CreateServices(); + Requests[2763].Request.Method = "POST"; + Requests[2763].Request.Path = "/subscriptions/55553798-add0-/resourceGroups/d372253f-5e47-42d/providers/Microsoft.Web/sites/e3f82/recover"; + Requests[2764] = new DefaultHttpContext(); + Requests[2764].RequestServices = CreateServices(); + Requests[2764].Request.Method = "POST"; + Requests[2764].Request.Path = "/subscriptions/58f79f67-9ae3-/resourceGroups/000dfab8-12ff-446/providers/Microsoft.Web/sites/6a677/resetSlotConfig"; + Requests[2765] = new DefaultHttpContext(); + Requests[2765].RequestServices = CreateServices(); + Requests[2765].Request.Method = "GET"; + Requests[2765].Request.Path = "/subscriptions/db5a3714-2a4e-/resourceGroups/634a6df2-d9aa-46f/providers/Microsoft.Web/sites/d9bad/resourceHealthMetadata"; + Requests[2766] = new DefaultHttpContext(); + Requests[2766].RequestServices = CreateServices(); + Requests[2766].Request.Method = "POST"; + Requests[2766].Request.Path = "/subscriptions/4cbfb59b-e314-/resourceGroups/6bacc8d5-bf2d-4c2/providers/Microsoft.Web/sites/7f360/restart"; + Requests[2767] = new DefaultHttpContext(); + Requests[2767].RequestServices = CreateServices(); + Requests[2767].Request.Method = "POST"; + Requests[2767].Request.Path = "/subscriptions/469bcec8-c9ef-/resourceGroups/88b7a2bd-96a2-40e/providers/Microsoft.Web/sites/5c497/restoreFromBackupBlob"; + Requests[2768] = new DefaultHttpContext(); + Requests[2768].RequestServices = CreateServices(); + Requests[2768].Request.Method = "POST"; + Requests[2768].Request.Path = "/subscriptions/eabca370-3832-/resourceGroups/15c6e364-65e2-4a4/providers/Microsoft.Web/sites/9a623/restoreFromDeletedApp"; + Requests[2769] = new DefaultHttpContext(); + Requests[2769].RequestServices = CreateServices(); + Requests[2769].Request.Method = "POST"; + Requests[2769].Request.Path = "/subscriptions/11b51cf7-8783-/resourceGroups/81915547-5a3e-449/providers/Microsoft.Web/sites/9710d/restoreSnapshot"; + Requests[2770] = new DefaultHttpContext(); + Requests[2770].RequestServices = CreateServices(); + Requests[2770].Request.Method = "GET"; + Requests[2770].Request.Path = "/subscriptions/c532415c-54aa-/resourceGroups/a9e6508e-7147-42f/providers/Microsoft.Web/sites/8486e/siteextensions"; + Requests[2771] = new DefaultHttpContext(); + Requests[2771].RequestServices = CreateServices(); + Requests[2771].Request.Method = "GET"; + Requests[2771].Request.Path = "/subscriptions/d4de8b4c-5685-/resourceGroups/2d97c2ed-2438-420/providers/Microsoft.Web/sites/40e26/slots"; + Requests[2772] = new DefaultHttpContext(); + Requests[2772].RequestServices = CreateServices(); + Requests[2772].Request.Method = "POST"; + Requests[2772].Request.Path = "/subscriptions/76a9b79a-4d50-/resourceGroups/9777df9a-fc4a-470/providers/Microsoft.Web/sites/f5dbb/slotsdiffs"; + Requests[2773] = new DefaultHttpContext(); + Requests[2773].RequestServices = CreateServices(); + Requests[2773].Request.Method = "POST"; + Requests[2773].Request.Path = "/subscriptions/9ab5ea58-afb7-/resourceGroups/8ac728b6-f27f-448/providers/Microsoft.Web/sites/8149a/slotsswap"; + Requests[2774] = new DefaultHttpContext(); + Requests[2774].RequestServices = CreateServices(); + Requests[2774].Request.Method = "GET"; + Requests[2774].Request.Path = "/subscriptions/a4631c5c-5c08-/resourceGroups/fb3ad7dd-5c93-4aa/providers/Microsoft.Web/sites/bed03/snapshots"; + Requests[2775] = new DefaultHttpContext(); + Requests[2775].RequestServices = CreateServices(); + Requests[2775].Request.Method = "PUT"; + Requests[2775].Request.Path = "/subscriptions/be2e04af-5d2e-/resourceGroups/e7412e2f-7630-4d6/providers/Microsoft.Web/sites/b7c4b/snapshots"; + Requests[2776] = new DefaultHttpContext(); + Requests[2776].RequestServices = CreateServices(); + Requests[2776].Request.Method = "POST"; + Requests[2776].Request.Path = "/subscriptions/28756880-6cf7-/resourceGroups/f9ae625b-960b-4db/providers/Microsoft.Web/sites/77c8b/start"; + Requests[2777] = new DefaultHttpContext(); + Requests[2777].RequestServices = CreateServices(); + Requests[2777].Request.Method = "POST"; + Requests[2777].Request.Path = "/subscriptions/3ac6a310-ff06-/resourceGroups/2dd0f50f-0821-459/providers/Microsoft.Web/sites/39b0c/stop"; + Requests[2778] = new DefaultHttpContext(); + Requests[2778].RequestServices = CreateServices(); + Requests[2778].Request.Method = "POST"; + Requests[2778].Request.Path = "/subscriptions/46048828-6dda-/resourceGroups/268c5ec1-cba9-416/providers/Microsoft.Web/sites/6214d/sync"; + Requests[2779] = new DefaultHttpContext(); + Requests[2779].RequestServices = CreateServices(); + Requests[2779].Request.Method = "POST"; + Requests[2779].Request.Path = "/subscriptions/44063301-c131-/resourceGroups/947c30c6-8fd5-42e/providers/Microsoft.Web/sites/b4b40/syncfunctiontriggers"; + Requests[2780] = new DefaultHttpContext(); + Requests[2780].RequestServices = CreateServices(); + Requests[2780].Request.Method = "GET"; + Requests[2780].Request.Path = "/subscriptions/5b82b3d0-e42e-/resourceGroups/fcd8d801-b67b-470/providers/Microsoft.Web/sites/0aba6/triggeredwebjobs"; + Requests[2781] = new DefaultHttpContext(); + Requests[2781].RequestServices = CreateServices(); + Requests[2781].Request.Method = "GET"; + Requests[2781].Request.Path = "/subscriptions/83a6e736-28b0-/resourceGroups/a32fe97d-45a0-456/providers/Microsoft.Web/sites/0c6cb/usages"; + Requests[2782] = new DefaultHttpContext(); + Requests[2782].RequestServices = CreateServices(); + Requests[2782].Request.Method = "GET"; + Requests[2782].Request.Path = "/subscriptions/13c8db45-1fa8-/resourceGroups/4dfaba38-8a15-416/providers/Microsoft.Web/sites/7d733/virtualNetworkConnections"; + Requests[2783] = new DefaultHttpContext(); + Requests[2783].RequestServices = CreateServices(); + Requests[2783].Request.Method = "GET"; + Requests[2783].Request.Path = "/subscriptions/dc8553b1-8711-/resourceGroups/d909787d-d7be-4ac/providers/Microsoft.Web/sites/3d99d/webjobs"; + Requests[2784] = new DefaultHttpContext(); + Requests[2784].RequestServices = CreateServices(); + Requests[2784].Request.Method = "GET"; + Requests[2784].Request.Path = "/subscriptions/6ef3ab07-d9c1-/resourceGroups/27beac56-f86f-41a/providers/Microsoft.Web/sites/63514852/detectors"; + Requests[2785] = new DefaultHttpContext(); + Requests[2785].RequestServices = CreateServices(); + Requests[2785].Request.Method = "GET"; + Requests[2785].Request.Path = "/subscriptions/d9ae6fed-d128-/resourceGroups/108a0966-795a-4e1/providers/Microsoft.Web/sites/641464c0/diagnostics"; + Requests[2786] = new DefaultHttpContext(); + Requests[2786].RequestServices = CreateServices(); + Requests[2786].Request.Method = "GET"; + Requests[2786].Request.Path = "/subscriptions/97421d93-14d3-/resourceGroups/dbe6bcea-d66a-4d6/providers/Microsoft.Web/sites/7e84ecd8/recommendationHistory"; + Requests[2787] = new DefaultHttpContext(); + Requests[2787].RequestServices = CreateServices(); + Requests[2787].Request.Method = "GET"; + Requests[2787].Request.Path = "/subscriptions/4965937f-22c5-/resourceGroups/acdd1804-5eeb-41a/providers/Microsoft.Web/sites/a30ad79c/recommendations"; + Requests[2788] = new DefaultHttpContext(); + Requests[2788].RequestServices = CreateServices(); + Requests[2788].Request.Method = "PUT"; + Requests[2788].Request.Path = "/subscriptions/13b6ec0c-c271-/resourceGroups/b6984b5a-4529-4d0/providers/Microsoft.ApiManagement/service/5f7f4a48-b9/portalsettings/delegation"; + Requests[2789] = new DefaultHttpContext(); + Requests[2789].RequestServices = CreateServices(); + Requests[2789].Request.Method = "PATCH"; + Requests[2789].Request.Path = "/subscriptions/fb400526-a6db-/resourceGroups/09d622bd-b743-425/providers/Microsoft.ApiManagement/service/b1bf3790-a8/portalsettings/delegation"; + Requests[2790] = new DefaultHttpContext(); + Requests[2790].RequestServices = CreateServices(); + Requests[2790].Request.Method = "HEAD"; + Requests[2790].Request.Path = "/subscriptions/94b3a1f1-68f0-/resourceGroups/cea1db38-5d19-4bf/providers/Microsoft.ApiManagement/service/ef383c16-53/portalsettings/delegation"; + Requests[2791] = new DefaultHttpContext(); + Requests[2791].RequestServices = CreateServices(); + Requests[2791].Request.Method = "GET"; + Requests[2791].Request.Path = "/subscriptions/40595c97-a803-/resourceGroups/45c733eb-8bc7-439/providers/Microsoft.ApiManagement/service/9727e592-e0/portalsettings/delegation"; + Requests[2792] = new DefaultHttpContext(); + Requests[2792].RequestServices = CreateServices(); + Requests[2792].Request.Method = "PATCH"; + Requests[2792].Request.Path = "/subscriptions/70a0f7a0-ac89-/resourceGroups/19dc104f-4641-4c8/providers/Microsoft.ApiManagement/service/adc1dab0-a6/portalsettings/signin"; + Requests[2793] = new DefaultHttpContext(); + Requests[2793].RequestServices = CreateServices(); + Requests[2793].Request.Method = "PUT"; + Requests[2793].Request.Path = "/subscriptions/cc06cfe0-82ab-/resourceGroups/425cbffe-0ae4-44d/providers/Microsoft.ApiManagement/service/95f67abf-4a/portalsettings/signin"; + Requests[2794] = new DefaultHttpContext(); + Requests[2794].RequestServices = CreateServices(); + Requests[2794].Request.Method = "GET"; + Requests[2794].Request.Path = "/subscriptions/9cd89267-041d-/resourceGroups/56b26ebe-62ae-43e/providers/Microsoft.ApiManagement/service/ca7236d2-0f/portalsettings/signin"; + Requests[2795] = new DefaultHttpContext(); + Requests[2795].RequestServices = CreateServices(); + Requests[2795].Request.Method = "HEAD"; + Requests[2795].Request.Path = "/subscriptions/2166ecd0-9935-/resourceGroups/23dc1449-383f-418/providers/Microsoft.ApiManagement/service/4f0fde11-1d/portalsettings/signin"; + Requests[2796] = new DefaultHttpContext(); + Requests[2796].RequestServices = CreateServices(); + Requests[2796].Request.Method = "PUT"; + Requests[2796].Request.Path = "/subscriptions/e5e6680c-79eb-/resourceGroups/28f6c72a-7d74-44c/providers/Microsoft.ApiManagement/service/5a97e9e0-c6/portalsettings/signup"; + Requests[2797] = new DefaultHttpContext(); + Requests[2797].RequestServices = CreateServices(); + Requests[2797].Request.Method = "GET"; + Requests[2797].Request.Path = "/subscriptions/367f266a-5bca-/resourceGroups/8ed335fa-a143-453/providers/Microsoft.ApiManagement/service/24e10fb4-a3/portalsettings/signup"; + Requests[2798] = new DefaultHttpContext(); + Requests[2798].RequestServices = CreateServices(); + Requests[2798].Request.Method = "HEAD"; + Requests[2798].Request.Path = "/subscriptions/a465d961-ccb0-/resourceGroups/fd151ed3-c7a5-469/providers/Microsoft.ApiManagement/service/57ac3e79-59/portalsettings/signup"; + Requests[2799] = new DefaultHttpContext(); + Requests[2799].RequestServices = CreateServices(); + Requests[2799].Request.Method = "PATCH"; + Requests[2799].Request.Path = "/subscriptions/6211f726-2d6f-/resourceGroups/a7020935-2988-4f8/providers/Microsoft.ApiManagement/service/c8142093-aa/portalsettings/signup"; + Requests[2800] = new DefaultHttpContext(); + Requests[2800].RequestServices = CreateServices(); + Requests[2800].Request.Method = "GET"; + Requests[2800].Request.Path = "/subscriptions/0e975e09-218e-/resourceGroups/1ce48ce9-ad05-471/providers/Microsoft.ApiManagement/service/daa33844-c0/reports/byApi"; + Requests[2801] = new DefaultHttpContext(); + Requests[2801].RequestServices = CreateServices(); + Requests[2801].Request.Method = "GET"; + Requests[2801].Request.Path = "/subscriptions/2277180e-cb18-/resourceGroups/821465b0-7999-411/providers/Microsoft.ApiManagement/service/3ab09453-9f/reports/byGeo"; + Requests[2802] = new DefaultHttpContext(); + Requests[2802].RequestServices = CreateServices(); + Requests[2802].Request.Method = "GET"; + Requests[2802].Request.Path = "/subscriptions/c4cc2cf2-f919-/resourceGroups/9f0e55c0-f9ca-476/providers/Microsoft.ApiManagement/service/e3669064-eb/reports/byOperation"; + Requests[2803] = new DefaultHttpContext(); + Requests[2803].RequestServices = CreateServices(); + Requests[2803].Request.Method = "GET"; + Requests[2803].Request.Path = "/subscriptions/5be3d482-b800-/resourceGroups/cd1c9313-8c6b-481/providers/Microsoft.ApiManagement/service/5700941d-1c/reports/byProduct"; + Requests[2804] = new DefaultHttpContext(); + Requests[2804].RequestServices = CreateServices(); + Requests[2804].Request.Method = "GET"; + Requests[2804].Request.Path = "/subscriptions/0dcc5201-fe99-/resourceGroups/f5527951-6d49-4c6/providers/Microsoft.ApiManagement/service/4a2ca6f5-49/reports/byRequest"; + Requests[2805] = new DefaultHttpContext(); + Requests[2805].RequestServices = CreateServices(); + Requests[2805].Request.Method = "GET"; + Requests[2805].Request.Path = "/subscriptions/c5f19705-06d6-/resourceGroups/892cda56-6da5-45d/providers/Microsoft.ApiManagement/service/3081f7c0-60/reports/bySubscription"; + Requests[2806] = new DefaultHttpContext(); + Requests[2806].RequestServices = CreateServices(); + Requests[2806].Request.Method = "GET"; + Requests[2806].Request.Path = "/subscriptions/aa5227b7-52ee-/resourceGroups/2604b62d-acd9-476/providers/Microsoft.ApiManagement/service/88ec6c5e-30/reports/byTime"; + Requests[2807] = new DefaultHttpContext(); + Requests[2807].RequestServices = CreateServices(); + Requests[2807].Request.Method = "GET"; + Requests[2807].Request.Path = "/subscriptions/2ca21d70-e9a4-/resourceGroups/7267d790-ffb3-45b/providers/Microsoft.ApiManagement/service/6715303e-eb/reports/byUser"; + Requests[2808] = new DefaultHttpContext(); + Requests[2808].RequestServices = CreateServices(); + Requests[2808].Request.Method = "GET"; + Requests[2808].Request.Path = "/subscriptions/b3370e27-c79c-/resourceGroups/9e4a7346-6c4f-4aa/providers/Microsoft.ApiManagement/service/90f1552b-d3/tenant/access"; + Requests[2809] = new DefaultHttpContext(); + Requests[2809].RequestServices = CreateServices(); + Requests[2809].Request.Method = "PATCH"; + Requests[2809].Request.Path = "/subscriptions/fe4c5f16-8742-/resourceGroups/2b61d57f-88ed-4e0/providers/Microsoft.ApiManagement/service/561affcd-fb/tenant/access"; + Requests[2810] = new DefaultHttpContext(); + Requests[2810].RequestServices = CreateServices(); + Requests[2810].Request.Method = "GET"; + Requests[2810].Request.Path = "/subscriptions/7414de47-6eec-/resourceGroups/c0db3bc8-3996-42f/providers/Microsoft.ApiManagement/service/a307e4ff-5f/tenant/policy"; + Requests[2811] = new DefaultHttpContext(); + Requests[2811].RequestServices = CreateServices(); + Requests[2811].Request.Method = "DELETE"; + Requests[2811].Request.Path = "/subscriptions/5e96e893-4527-/resourceGroups/53084bf9-b651-4b7/providers/Microsoft.ApiManagement/service/8f95ee46-62/tenant/policy"; + Requests[2812] = new DefaultHttpContext(); + Requests[2812].RequestServices = CreateServices(); + Requests[2812].Request.Method = "PUT"; + Requests[2812].Request.Path = "/subscriptions/24425e06-472f-/resourceGroups/94585dec-8e70-4bd/providers/Microsoft.ApiManagement/service/10188f13-f7/tenant/policy"; + Requests[2813] = new DefaultHttpContext(); + Requests[2813].RequestServices = CreateServices(); + Requests[2813].Request.Method = "POST"; + Requests[2813].Request.Path = "/subscriptions/2bd32e22-2dc6-/resourceGroups/4da4e25b-d774-473/providers/Microsoft.Automation/automationAccounts/69c87fe9-d91e-4fc3-83/agentRegistrationInformation/regenerateKey"; + Requests[2814] = new DefaultHttpContext(); + Requests[2814].RequestServices = CreateServices(); + Requests[2814].Request.Method = "POST"; + Requests[2814].Request.Path = "/subscriptions/e9683898-7ec6-/resourceGroups/5234ece1-a534-441/providers/Microsoft.Automation/automationAccounts/7db27884-7081-4257-94/webhooks/generateUri"; + Requests[2815] = new DefaultHttpContext(); + Requests[2815].RequestServices = CreateServices(); + Requests[2815].Request.Method = "PUT"; + Requests[2815].Request.Path = "/subscriptions/ec4be1b0-1ce0-/resourceGroups/6d8a6073-e17f-446/providers/Microsoft.Cache/Redis/4d028/patchSchedules/default"; + Requests[2816] = new DefaultHttpContext(); + Requests[2816].RequestServices = CreateServices(); + Requests[2816].Request.Method = "DELETE"; + Requests[2816].Request.Path = "/subscriptions/4aa4bb55-8eaf-/resourceGroups/43e33299-5946-40a/providers/Microsoft.Cache/Redis/1e972/patchSchedules/default"; + Requests[2817] = new DefaultHttpContext(); + Requests[2817].RequestServices = CreateServices(); + Requests[2817].Request.Method = "GET"; + Requests[2817].Request.Path = "/subscriptions/095a6ecc-7077-/resourceGroups/e736b58c-fd6b-423/providers/Microsoft.Cache/Redis/1d716/patchSchedules/default"; + Requests[2818] = new DefaultHttpContext(); + Requests[2818].RequestServices = CreateServices(); + Requests[2818].Request.Method = "POST"; + Requests[2818].Request.Path = "/subscriptions/decc0877-a4ea-/resourceGroups/8352b6a4-6cbb-42c/providers/Microsoft.Compute/virtualMachineScaleSets/94178a7c-e68f-/rollingUpgrades/cancel"; + Requests[2819] = new DefaultHttpContext(); + Requests[2819].RequestServices = CreateServices(); + Requests[2819].Request.Method = "GET"; + Requests[2819].Request.Path = "/subscriptions/90a5ce03-a2fe-/resourceGroups/ae6e55df-f78e-426/providers/Microsoft.Compute/virtualMachineScaleSets/84bddec5-2743-/rollingUpgrades/latest"; + Requests[2820] = new DefaultHttpContext(); + Requests[2820].RequestServices = CreateServices(); + Requests[2820].Request.Method = "GET"; + Requests[2820].Request.Path = "/subscriptions/94d84d4b-e337-/resourceGroups/e56778dd-fdff-447/providers/Microsoft.ContainerService/managedClusters/d6fe35c5-f55/upgradeProfiles/default"; + Requests[2821] = new DefaultHttpContext(); + Requests[2821].RequestServices = CreateServices(); + Requests[2821].Request.Method = "POST"; + Requests[2821].Request.Path = "/subscriptions/d0a4e223-d279-/resourceGroups/38e92367-5a35-478/providers/Microsoft.CustomerInsights/hubs/fb0ba9b/images/getDataImageUploadUrl"; + Requests[2822] = new DefaultHttpContext(); + Requests[2822].RequestServices = CreateServices(); + Requests[2822].Request.Method = "POST"; + Requests[2822].Request.Path = "/subscriptions/954730fd-3120-/resourceGroups/2ce1fbc4-5123-464/providers/Microsoft.CustomerInsights/hubs/94b8e9b/images/getEntityTypeImageUploadUrl"; + Requests[2823] = new DefaultHttpContext(); + Requests[2823].RequestServices = CreateServices(); + Requests[2823].Request.Method = "GET"; + Requests[2823].Request.Path = "/subscriptions/41e85190-312f-/resourceGroups/9a982d9e-2e70-44e/providers/Microsoft.DocumentDB/databaseAccounts/74b29bd3-16/percentile/metrics"; + Requests[2824] = new DefaultHttpContext(); + Requests[2824].RequestServices = CreateServices(); + Requests[2824].Request.Method = "PATCH"; + Requests[2824].Request.Path = "/subscriptions/c79028ee-d046-/resourceGroups/71bbce8a-24cb-4e2/providers/Microsoft.EventHub/clusters/6c9504d3-9d/quotaConfiguration/default"; + Requests[2825] = new DefaultHttpContext(); + Requests[2825].RequestServices = CreateServices(); + Requests[2825].Request.Method = "GET"; + Requests[2825].Request.Path = "/subscriptions/56a26679-c6fa-/resourceGroups/1a57b509-ff3b-4cb/providers/Microsoft.EventHub/clusters/11b5486f-8b/quotaConfiguration/default"; + Requests[2826] = new DefaultHttpContext(); + Requests[2826].RequestServices = CreateServices(); + Requests[2826].Request.Method = "POST"; + Requests[2826].Request.Path = "/subscriptions/db92f9be-de3f-/resourceGroups/3a5c52f6-5215-410/providers/Microsoft.EventHub/namespaces/fdf0f2ef-a7e1/disasterRecoveryConfigs/CheckNameAvailability"; + Requests[2827] = new DefaultHttpContext(); + Requests[2827].RequestServices = CreateServices(); + Requests[2827].Request.Method = "GET"; + Requests[2827].Request.Path = "/subscriptions/dabc9790-5e1c-/resourceGroups/f0737d7a-93e1-4ce/providers/Microsoft.HDInsight/clusters/d1ea20d5-cf/extensions/clustermonitoring"; + Requests[2828] = new DefaultHttpContext(); + Requests[2828].RequestServices = CreateServices(); + Requests[2828].Request.Method = "PUT"; + Requests[2828].Request.Path = "/subscriptions/8900299e-41b1-/resourceGroups/fbf77a89-2771-4ba/providers/Microsoft.HDInsight/clusters/d13ec2d3-fc/extensions/clustermonitoring"; + Requests[2829] = new DefaultHttpContext(); + Requests[2829].RequestServices = CreateServices(); + Requests[2829].Request.Method = "DELETE"; + Requests[2829].Request.Path = "/subscriptions/f40debb9-157a-/resourceGroups/1ccf3a4d-4c08-433/providers/Microsoft.HDInsight/clusters/7e91f092-e2/extensions/clustermonitoring"; + Requests[2830] = new DefaultHttpContext(); + Requests[2830].RequestServices = CreateServices(); + Requests[2830].Request.Method = "PATCH"; + Requests[2830].Request.Path = "/subscriptions/8513bef6-a4b1-/resourceGroups/b60fabcc-daf1-436/providers/microsoft.insights/components/2964355b-e9d/pricingPlans/current"; + Requests[2831] = new DefaultHttpContext(); + Requests[2831].RequestServices = CreateServices(); + Requests[2831].Request.Method = "PUT"; + Requests[2831].Request.Path = "/subscriptions/1c7aecad-bb29-/resourceGroups/c80faec7-a08e-4fd/providers/microsoft.insights/components/b00c07b3-681/pricingPlans/current"; + Requests[2832] = new DefaultHttpContext(); + Requests[2832].RequestServices = CreateServices(); + Requests[2832].Request.Method = "GET"; + Requests[2832].Request.Path = "/subscriptions/72ff621d-2518-/resourceGroups/8ae50573-b981-49b/providers/microsoft.insights/components/3f3fb043-be7/pricingPlans/current"; + Requests[2833] = new DefaultHttpContext(); + Requests[2833].RequestServices = CreateServices(); + Requests[2833].Request.Method = "POST"; + Requests[2833].Request.Path = "/subscriptions/226396ea-d2d9-/resourceGroups/1ca0f0ad-5f2a-49e/providers/Microsoft.Network/connections/a5779011-83a5-4a90-89c3-3c34d6ad608/sharedkey/reset"; + Requests[2834] = new DefaultHttpContext(); + Requests[2834].RequestServices = CreateServices(); + Requests[2834].Request.Method = "POST"; + Requests[2834].Request.Path = "/Subscriptions/d5fee9d1-f860-/resourceGroups/cd098aec-6870-469/providers/Microsoft.RecoveryServices/vaults/87ad4430-226/replicationJobs/export"; + Requests[2835] = new DefaultHttpContext(); + Requests[2835].RequestServices = CreateServices(); + Requests[2835].Request.Method = "GET"; + Requests[2835].Request.Path = "/Subscriptions/21fa17b4-5d58-/resourceGroups/a18f4433-9237-417/providers/Microsoft.RecoveryServices/vaults/fc11f229-/backupconfig/vaultconfig"; + Requests[2836] = new DefaultHttpContext(); + Requests[2836].RequestServices = CreateServices(); + Requests[2836].Request.Method = "PATCH"; + Requests[2836].Request.Path = "/Subscriptions/d1755df3-a0c3-/resourceGroups/6f837ef5-0843-46e/providers/Microsoft.RecoveryServices/vaults/deb85497-/backupconfig/vaultconfig"; + Requests[2837] = new DefaultHttpContext(); + Requests[2837].RequestServices = CreateServices(); + Requests[2837].Request.Method = "PATCH"; + Requests[2837].Request.Path = "/Subscriptions/9f481e9d-930c-/resourceGroups/5945b77f-4fa4-4e5/providers/Microsoft.RecoveryServices/vaults/61dccd35-/backupstorageconfig/vaultstorageconfig"; + Requests[2838] = new DefaultHttpContext(); + Requests[2838].RequestServices = CreateServices(); + Requests[2838].Request.Method = "GET"; + Requests[2838].Request.Path = "/Subscriptions/04c6663f-77c4-/resourceGroups/1287af59-293d-453/providers/Microsoft.RecoveryServices/vaults/ea56a7bf-/backupstorageconfig/vaultstorageconfig"; + Requests[2839] = new DefaultHttpContext(); + Requests[2839].RequestServices = CreateServices(); + Requests[2839].Request.Method = "PATCH"; + Requests[2839].Request.Path = "/subscriptions/ebe7d06d-a3bb-/resourceGroups/4bc2b366-797b-4c9/providers/Microsoft.RecoveryServices/vaults/26b633c7-/extendedInformation/vaultExtendedInfo"; + Requests[2840] = new DefaultHttpContext(); + Requests[2840].RequestServices = CreateServices(); + Requests[2840].Request.Method = "PUT"; + Requests[2840].Request.Path = "/subscriptions/c1165156-220f-/resourceGroups/d560820b-fb78-404/providers/Microsoft.RecoveryServices/vaults/6a2c32cc-/extendedInformation/vaultExtendedInfo"; + Requests[2841] = new DefaultHttpContext(); + Requests[2841].RequestServices = CreateServices(); + Requests[2841].Request.Method = "GET"; + Requests[2841].Request.Path = "/subscriptions/4d973798-2cd4-/resourceGroups/b68a8d1a-1ca1-4fe/providers/Microsoft.RecoveryServices/vaults/6601296a-/extendedInformation/vaultExtendedInfo"; + Requests[2842] = new DefaultHttpContext(); + Requests[2842].RequestServices = CreateServices(); + Requests[2842].Request.Method = "POST"; + Requests[2842].Request.Path = "/subscriptions/ee3d96e7-6a68-/resourceGroups/3fdbe8c4-5554-4b2/providers/Microsoft.ServiceBus/namespaces/b91a4b2e-2c5a/disasterRecoveryConfigs/CheckNameAvailability"; + Requests[2843] = new DefaultHttpContext(); + Requests[2843].RequestServices = CreateServices(); + Requests[2843].Request.Method = "GET"; + Requests[2843].Request.Path = "/subscriptions/fe9b893c-cc02-/resourceGroups/7f558c7c-4328-42d/providers/Microsoft.Sql/servers/7e51f1ec-9/automaticTuning/current"; + Requests[2844] = new DefaultHttpContext(); + Requests[2844].RequestServices = CreateServices(); + Requests[2844].Request.Method = "PATCH"; + Requests[2844].Request.Path = "/subscriptions/d792883e-0c5d-/resourceGroups/f887ba1f-d375-451/providers/Microsoft.Sql/servers/a3b546b4-2/automaticTuning/current"; + Requests[2845] = new DefaultHttpContext(); + Requests[2845].RequestServices = CreateServices(); + Requests[2845].Request.Method = "GET"; + Requests[2845].Request.Path = "/subscriptions/c7e8019f-f2cf-/resourceGroups/2805c9c8-f821-4db/providers/Microsoft.StorSimple/managers/88e6dcc0-d3/encryptionSettings/default"; + Requests[2846] = new DefaultHttpContext(); + Requests[2846].RequestServices = CreateServices(); + Requests[2846].Request.Method = "DELETE"; + Requests[2846].Request.Path = "/subscriptions/34910e68-6239-/resourceGroups/bb1f81eb-2315-4cd/providers/Microsoft.StorSimple/managers/f5139c77-58/extendedInformation/vaultExtendedInfo"; + Requests[2847] = new DefaultHttpContext(); + Requests[2847].RequestServices = CreateServices(); + Requests[2847].Request.Method = "PATCH"; + Requests[2847].Request.Path = "/subscriptions/86cffec5-7e7a-/resourceGroups/c666ab6c-ec7a-499/providers/Microsoft.StorSimple/managers/91eab166-62/extendedInformation/vaultExtendedInfo"; + Requests[2848] = new DefaultHttpContext(); + Requests[2848].RequestServices = CreateServices(); + Requests[2848].Request.Method = "PUT"; + Requests[2848].Request.Path = "/subscriptions/9d21172b-a6e7-/resourceGroups/0a90ed07-fac9-42d/providers/Microsoft.StorSimple/managers/23df2368-5d/extendedInformation/vaultExtendedInfo"; + Requests[2849] = new DefaultHttpContext(); + Requests[2849].RequestServices = CreateServices(); + Requests[2849].Request.Method = "GET"; + Requests[2849].Request.Path = "/subscriptions/e37a4a41-f4c7-/resourceGroups/87d38aeb-accb-444/providers/Microsoft.StorSimple/managers/a21957d8-39/extendedInformation/vaultExtendedInfo"; + Requests[2850] = new DefaultHttpContext(); + Requests[2850].RequestServices = CreateServices(); + Requests[2850].Request.Method = "GET"; + Requests[2850].Request.Path = "/subscriptions/85bf2882-d001-/resourceGroups/29546527-875a-422/providers/Microsoft.Web/hostingEnvironments/97aa1/capacities/compute"; + Requests[2851] = new DefaultHttpContext(); + Requests[2851].RequestServices = CreateServices(); + Requests[2851].Request.Method = "GET"; + Requests[2851].Request.Path = "/subscriptions/d8af6205-e3da-/resourceGroups/2a1939e9-04ae-49f/providers/Microsoft.Web/hostingEnvironments/1ae6d/capacities/virtualip"; + Requests[2852] = new DefaultHttpContext(); + Requests[2852].RequestServices = CreateServices(); + Requests[2852].Request.Method = "PUT"; + Requests[2852].Request.Path = "/subscriptions/a2607f91-a5b4-/resourceGroups/cfc03d4f-6ad6-46a/providers/Microsoft.Web/hostingEnvironments/0038b/multiRolePools/default"; + Requests[2853] = new DefaultHttpContext(); + Requests[2853].RequestServices = CreateServices(); + Requests[2853].Request.Method = "PATCH"; + Requests[2853].Request.Path = "/subscriptions/36680d99-fdcd-/resourceGroups/1c3a76a6-871d-4b5/providers/Microsoft.Web/hostingEnvironments/46d02/multiRolePools/default"; + Requests[2854] = new DefaultHttpContext(); + Requests[2854].RequestServices = CreateServices(); + Requests[2854].Request.Method = "GET"; + Requests[2854].Request.Path = "/subscriptions/7d70ad09-37cf-/resourceGroups/6c0940ae-706d-401/providers/Microsoft.Web/hostingEnvironments/8e1d7/multiRolePools/default"; + Requests[2855] = new DefaultHttpContext(); + Requests[2855].RequestServices = CreateServices(); + Requests[2855].Request.Method = "GET"; + Requests[2855].Request.Path = "/subscriptions/2c00ee7a-052d-/resourceGroups/3441ec98-b0dc-4d6/providers/Microsoft.Web/managedHostingEnvironments/22340/capacities/virtualip"; + Requests[2856] = new DefaultHttpContext(); + Requests[2856].RequestServices = CreateServices(); + Requests[2856].Request.Method = "GET"; + Requests[2856].Request.Path = "/subscriptions/54aafda4-1ce1-/resourceGroups/8ff0660a-f63a-47b/providers/Microsoft.Web/serverfarms/8b460/hybridConnectionPlanLimits/limit"; + Requests[2857] = new DefaultHttpContext(); + Requests[2857].RequestServices = CreateServices(); + Requests[2857].Request.Method = "PUT"; + Requests[2857].Request.Path = "/subscriptions/9901d2fc-00e4-/resourceGroups/38b93efb-0fe6-4e2/providers/Microsoft.Web/sites/497f3/backups/discover"; + Requests[2858] = new DefaultHttpContext(); + Requests[2858].RequestServices = CreateServices(); + Requests[2858].Request.Method = "PUT"; + Requests[2858].Request.Path = "/subscriptions/9ec9fb34-d5a6-/resourceGroups/72d9ee4c-1211-431/providers/Microsoft.Web/sites/b1605/config/appsettings"; + Requests[2859] = new DefaultHttpContext(); + Requests[2859].RequestServices = CreateServices(); + Requests[2859].Request.Method = "PUT"; + Requests[2859].Request.Path = "/subscriptions/2a57d086-9f51-/resourceGroups/45b37779-c061-4a1/providers/Microsoft.Web/sites/99a41/config/authsettings"; + Requests[2860] = new DefaultHttpContext(); + Requests[2860].RequestServices = CreateServices(); + Requests[2860].Request.Method = "DELETE"; + Requests[2860].Request.Path = "/subscriptions/f5aef3fb-083e-/resourceGroups/90dbcf45-1489-47b/providers/Microsoft.Web/sites/d7962/config/backup"; + Requests[2861] = new DefaultHttpContext(); + Requests[2861].RequestServices = CreateServices(); + Requests[2861].Request.Method = "PUT"; + Requests[2861].Request.Path = "/subscriptions/ad60d8a5-72df-/resourceGroups/13f3b9d9-fa0b-4be/providers/Microsoft.Web/sites/5bc85/config/backup"; + Requests[2862] = new DefaultHttpContext(); + Requests[2862].RequestServices = CreateServices(); + Requests[2862].Request.Method = "PUT"; + Requests[2862].Request.Path = "/subscriptions/3f7035e8-a95d-/resourceGroups/61c8d55d-720f-4e5/providers/Microsoft.Web/sites/f0f41/config/connectionstrings"; + Requests[2863] = new DefaultHttpContext(); + Requests[2863].RequestServices = CreateServices(); + Requests[2863].Request.Method = "PUT"; + Requests[2863].Request.Path = "/subscriptions/3f05ede4-1e9b-/resourceGroups/1f570b76-40a1-4c2/providers/Microsoft.Web/sites/289c6/config/logs"; + Requests[2864] = new DefaultHttpContext(); + Requests[2864].RequestServices = CreateServices(); + Requests[2864].Request.Method = "GET"; + Requests[2864].Request.Path = "/subscriptions/1fc2ea88-6316-/resourceGroups/540006d7-3d7e-4cf/providers/Microsoft.Web/sites/1d691/config/logs"; + Requests[2865] = new DefaultHttpContext(); + Requests[2865].RequestServices = CreateServices(); + Requests[2865].Request.Method = "PUT"; + Requests[2865].Request.Path = "/subscriptions/b4dc3356-ce73-/resourceGroups/5d7fe10a-c1a2-4a1/providers/Microsoft.Web/sites/df798/config/metadata"; + Requests[2866] = new DefaultHttpContext(); + Requests[2866].RequestServices = CreateServices(); + Requests[2866].Request.Method = "PUT"; + Requests[2866].Request.Path = "/subscriptions/5f70dab3-db45-/resourceGroups/8a1025da-4ea9-4ab/providers/Microsoft.Web/sites/bad44/config/pushsettings"; + Requests[2867] = new DefaultHttpContext(); + Requests[2867].RequestServices = CreateServices(); + Requests[2867].Request.Method = "PUT"; + Requests[2867].Request.Path = "/subscriptions/255db266-8044-/resourceGroups/b0c45c3f-173d-4e4/providers/Microsoft.Web/sites/1a900/config/slotConfigNames"; + Requests[2868] = new DefaultHttpContext(); + Requests[2868].RequestServices = CreateServices(); + Requests[2868].Request.Method = "GET"; + Requests[2868].Request.Path = "/subscriptions/e808d843-0ad3-/resourceGroups/9cdc76c6-8352-4f9/providers/Microsoft.Web/sites/c7c3c/config/slotConfigNames"; + Requests[2869] = new DefaultHttpContext(); + Requests[2869].RequestServices = CreateServices(); + Requests[2869].Request.Method = "PUT"; + Requests[2869].Request.Path = "/subscriptions/2de73392-9394-/resourceGroups/28c0aa2c-e9df-4b5/providers/Microsoft.Web/sites/5a371/config/web"; + Requests[2870] = new DefaultHttpContext(); + Requests[2870].RequestServices = CreateServices(); + Requests[2870].Request.Method = "GET"; + Requests[2870].Request.Path = "/subscriptions/33d4fe65-312b-/resourceGroups/6d1bb784-84a2-470/providers/Microsoft.Web/sites/83268/config/web"; + Requests[2871] = new DefaultHttpContext(); + Requests[2871].RequestServices = CreateServices(); + Requests[2871].Request.Method = "PATCH"; + Requests[2871].Request.Path = "/subscriptions/ffd0a810-7248-/resourceGroups/79e2f883-eb2f-417/providers/Microsoft.Web/sites/73d04/config/web"; + Requests[2872] = new DefaultHttpContext(); + Requests[2872].RequestServices = CreateServices(); + Requests[2872].Request.Method = "PUT"; + Requests[2872].Request.Path = "/subscriptions/4f20f1c1-ff7b-/resourceGroups/b0fd4a64-2eda-478/providers/Microsoft.Web/sites/64e24/extensions/MSDeploy"; + Requests[2873] = new DefaultHttpContext(); + Requests[2873].RequestServices = CreateServices(); + Requests[2873].Request.Method = "GET"; + Requests[2873].Request.Path = "/subscriptions/4ed9fd02-1925-/resourceGroups/aa14053b-006a-4fc/providers/Microsoft.Web/sites/81774/extensions/MSDeploy"; + Requests[2874] = new DefaultHttpContext(); + Requests[2874].RequestServices = CreateServices(); + Requests[2874].Request.Method = "GET"; + Requests[2874].Request.Path = "/subscriptions/6be98a46-5930-/resourceGroups/2d36c9b4-060a-477/providers/Microsoft.Web/sites/b0d4c/migratemysql/status"; + Requests[2875] = new DefaultHttpContext(); + Requests[2875].RequestServices = CreateServices(); + Requests[2875].Request.Method = "POST"; + Requests[2875].Request.Path = "/subscriptions/12059745-2394-/resourceGroups/6e46535f-c91e-4af/providers/Microsoft.Web/sites/cf9da/networkTrace/start"; + Requests[2876] = new DefaultHttpContext(); + Requests[2876].RequestServices = CreateServices(); + Requests[2876].Request.Method = "POST"; + Requests[2876].Request.Path = "/subscriptions/d7884531-6555-/resourceGroups/8645ed51-5c8a-476/providers/Microsoft.Web/sites/c11e7/networkTrace/stop"; + Requests[2877] = new DefaultHttpContext(); + Requests[2877].RequestServices = CreateServices(); + Requests[2877].Request.Method = "PUT"; + Requests[2877].Request.Path = "/subscriptions/89f269ce-68bd-/resourceGroups/d2660434-de34-4be/providers/Microsoft.Web/sites/7cedb/privateAccess/virtualNetworks"; + Requests[2878] = new DefaultHttpContext(); + Requests[2878].RequestServices = CreateServices(); + Requests[2878].Request.Method = "GET"; + Requests[2878].Request.Path = "/subscriptions/d305f71e-23cd-/resourceGroups/25b8adab-8c56-440/providers/Microsoft.Web/sites/3f048/privateAccess/virtualNetworks"; + Requests[2879] = new DefaultHttpContext(); + Requests[2879].RequestServices = CreateServices(); + Requests[2879].Request.Method = "GET"; + Requests[2879].Request.Path = "/subscriptions/ab386275-b581-/resourceGroups/6c5a9781-bce9-4d9/providers/Microsoft.Web/sites/c655a/resourceHealthMetadata/default"; + Requests[2880] = new DefaultHttpContext(); + Requests[2880].RequestServices = CreateServices(); + Requests[2880].Request.Method = "PATCH"; + Requests[2880].Request.Path = "/subscriptions/a89084a4-9b22-/resourceGroups/5aee4870-511d-49c/providers/Microsoft.Web/sites/d7328/sourcecontrols/web"; + Requests[2881] = new DefaultHttpContext(); + Requests[2881].RequestServices = CreateServices(); + Requests[2881].Request.Method = "DELETE"; + Requests[2881].Request.Path = "/subscriptions/1fd27bf1-eefd-/resourceGroups/f5db06a9-6f95-4b2/providers/Microsoft.Web/sites/8de5d/sourcecontrols/web"; + Requests[2882] = new DefaultHttpContext(); + Requests[2882].RequestServices = CreateServices(); + Requests[2882].Request.Method = "GET"; + Requests[2882].Request.Path = "/subscriptions/e0557f6f-652f-/resourceGroups/7a77d56e-2d77-4fe/providers/Microsoft.Web/sites/bf9b3/sourcecontrols/web"; + Requests[2883] = new DefaultHttpContext(); + Requests[2883].RequestServices = CreateServices(); + Requests[2883].Request.Method = "PUT"; + Requests[2883].Request.Path = "/subscriptions/337e4ca3-a973-/resourceGroups/7b0c81a8-08de-477/providers/Microsoft.Web/sites/6d8c1/sourcecontrols/web"; + Requests[2884] = new DefaultHttpContext(); + Requests[2884].RequestServices = CreateServices(); + Requests[2884].Request.Method = "POST"; + Requests[2884].Request.Path = "/subscriptions/101a9a9f-6f9a-/resourceGroups/3158844f-c5ca-488/providers/Microsoft.Web/sites/9fb93b69/recommendations/disable"; + Requests[2885] = new DefaultHttpContext(); + Requests[2885].RequestServices = CreateServices(); + Requests[2885].Request.Method = "POST"; + Requests[2885].Request.Path = "/subscriptions/9b840bbf-7b04-/resourceGroups/c4e8a835-1ada-415/providers/Microsoft.Web/sites/ccd208b0/recommendations/reset"; + Requests[2886] = new DefaultHttpContext(); + Requests[2886].RequestServices = CreateServices(); + Requests[2886].Request.Method = "GET"; + Requests[2886].Request.Path = "/subscriptions/5e945aff-26c1-/resourceGroups/9416fbf6-7871-472/providers/Microsoft.ApiManagement/service/be7963b1-b5/tenant/access/git"; + Requests[2887] = new DefaultHttpContext(); + Requests[2887].RequestServices = CreateServices(); + Requests[2887].Request.Method = "POST"; + Requests[2887].Request.Path = "/subscriptions/b0c986a4-1c54-/resourceGroups/36beee13-5cd5-4ad/providers/Microsoft.ApiManagement/service/604fd38d-5c/tenant/access/regeneratePrimaryKey"; + Requests[2888] = new DefaultHttpContext(); + Requests[2888].RequestServices = CreateServices(); + Requests[2888].Request.Method = "POST"; + Requests[2888].Request.Path = "/subscriptions/1620900d-2bba-/resourceGroups/0b066871-8a14-425/providers/Microsoft.ApiManagement/service/e8fb01c2-3d/tenant/access/regenerateSecondaryKey"; + Requests[2889] = new DefaultHttpContext(); + Requests[2889].RequestServices = CreateServices(); + Requests[2889].Request.Method = "POST"; + Requests[2889].Request.Path = "/subscriptions/fd8a61ee-dc78-/resourceGroups/43f58a9b-76b6-42a/providers/Microsoft.ApiManagement/service/779b5226-f4/tenant/configuration/deploy"; + Requests[2890] = new DefaultHttpContext(); + Requests[2890].RequestServices = CreateServices(); + Requests[2890].Request.Method = "POST"; + Requests[2890].Request.Path = "/subscriptions/707baa00-1e42-/resourceGroups/83a089e5-f89a-487/providers/Microsoft.ApiManagement/service/a86614d7-95/tenant/configuration/save"; + Requests[2891] = new DefaultHttpContext(); + Requests[2891].RequestServices = CreateServices(); + Requests[2891].Request.Method = "GET"; + Requests[2891].Request.Path = "/subscriptions/57a236b2-838f-/resourceGroups/6c1ea24b-a5c1-427/providers/Microsoft.ApiManagement/service/e618f63b-48/tenant/configuration/syncState"; + Requests[2892] = new DefaultHttpContext(); + Requests[2892].RequestServices = CreateServices(); + Requests[2892].Request.Method = "POST"; + Requests[2892].Request.Path = "/subscriptions/446174df-94e6-/resourceGroups/cc538ac7-5fc0-427/providers/Microsoft.ApiManagement/service/1c193544-32/tenant/configuration/validate"; + Requests[2893] = new DefaultHttpContext(); + Requests[2893].RequestServices = CreateServices(); + Requests[2893].Request.Method = "POST"; + Requests[2893].Request.Path = "/subscriptions/381e1662-1e91-/resourceGroups/c5979d08-5ece-43b/providers/Microsoft.Devices/IotHubs/7289f418-c/routing/routes/$testall"; + Requests[2894] = new DefaultHttpContext(); + Requests[2894].RequestServices = CreateServices(); + Requests[2894].Request.Method = "POST"; + Requests[2894].Request.Path = "/subscriptions/2ab25799-5c87-/resourceGroups/9f017336-7af7-4eb/providers/Microsoft.Devices/IotHubs/65210e6a-f/routing/routes/$testnew"; + Requests[2895] = new DefaultHttpContext(); + Requests[2895].RequestServices = CreateServices(); + Requests[2895].Request.Method = "POST"; + Requests[2895].Request.Path = "/subscriptions/8f60b439-ac38-/resourceGroups/da3769e2-1abd-43b/providers/Microsoft.OperationalInsights/workspaces/9c6d7766-6f40/features/serviceMap/generateMap"; + Requests[2896] = new DefaultHttpContext(); + Requests[2896].RequestServices = CreateServices(); + Requests[2896].Request.Method = "GET"; + Requests[2896].Request.Path = "/subscriptions/5644e177-10f4-/resourceGroups/fd12a661-377f-490/providers/Microsoft.OperationalInsights/workspaces/3fc0178f-6a4f/features/serviceMap/machineGroups"; + Requests[2897] = new DefaultHttpContext(); + Requests[2897].RequestServices = CreateServices(); + Requests[2897].Request.Method = "POST"; + Requests[2897].Request.Path = "/subscriptions/86c4cd0b-ed39-/resourceGroups/4dfc8444-3035-475/providers/Microsoft.OperationalInsights/workspaces/4abac5b8-4a11/features/serviceMap/machineGroups"; + Requests[2898] = new DefaultHttpContext(); + Requests[2898].RequestServices = CreateServices(); + Requests[2898].Request.Method = "GET"; + Requests[2898].Request.Path = "/subscriptions/5a3fd3fc-42e8-/resourceGroups/973151eb-78ba-4f1/providers/Microsoft.OperationalInsights/workspaces/947d887f-9081/features/serviceMap/machines"; + Requests[2899] = new DefaultHttpContext(); + Requests[2899].RequestServices = CreateServices(); + Requests[2899].Request.Method = "POST"; + Requests[2899].Request.Path = "/Subscriptions/07439263-5298-/resourceGroups/5a287d13-8789-4ba/providers/Microsoft.RecoveryServices/vaults/0215176b-5ef/replicationVaultHealth/default/refresh"; + Requests[2900] = new DefaultHttpContext(); + Requests[2900].RequestServices = CreateServices(); + Requests[2900].Request.Method = "GET"; + Requests[2900].Request.Path = "/subscriptions/f9ef2486-aa03-/resourceGroups/b0a7a315-0780-48d/providers/Microsoft.Storage/storageAccounts/ccb40c5b-e4/blobServices/default/containers"; + Requests[2901] = new DefaultHttpContext(); + Requests[2901].RequestServices = CreateServices(); + Requests[2901].Request.Method = "GET"; + Requests[2901].Request.Path = "/subscriptions/e20f9b93-1f86-/resourceGroups/ab066640-b5b3-437/providers/Microsoft.Web/hostingEnvironments/26527/multiRolePools/default/metricdefinitions"; + Requests[2902] = new DefaultHttpContext(); + Requests[2902].RequestServices = CreateServices(); + Requests[2902].Request.Method = "GET"; + Requests[2902].Request.Path = "/subscriptions/4252a302-6f0c-/resourceGroups/b84f2a48-c980-442/providers/Microsoft.Web/hostingEnvironments/8650f/multiRolePools/default/metrics"; + Requests[2903] = new DefaultHttpContext(); + Requests[2903].RequestServices = CreateServices(); + Requests[2903].Request.Method = "GET"; + Requests[2903].Request.Path = "/subscriptions/548b79a0-395f-/resourceGroups/1c154bc3-4194-4fc/providers/Microsoft.Web/hostingEnvironments/98d7a/multiRolePools/default/skus"; + Requests[2904] = new DefaultHttpContext(); + Requests[2904].RequestServices = CreateServices(); + Requests[2904].Request.Method = "GET"; + Requests[2904].Request.Path = "/subscriptions/3a228f63-0df7-/resourceGroups/82dfb926-9d84-419/providers/Microsoft.Web/hostingEnvironments/70e74/multiRolePools/default/usages"; + Requests[2905] = new DefaultHttpContext(); + Requests[2905].RequestServices = CreateServices(); + Requests[2905].Request.Method = "POST"; + Requests[2905].Request.Path = "/subscriptions/b97f84fe-ab8f-/resourceGroups/cac74313-1a13-444/providers/Microsoft.Web/sites/f6b31/config/appsettings/list"; + Requests[2906] = new DefaultHttpContext(); + Requests[2906].RequestServices = CreateServices(); + Requests[2906].Request.Method = "POST"; + Requests[2906].Request.Path = "/subscriptions/543d84ea-9c6f-/resourceGroups/c6a10ae9-558d-443/providers/Microsoft.Web/sites/9e380/config/authsettings/list"; + Requests[2907] = new DefaultHttpContext(); + Requests[2907].RequestServices = CreateServices(); + Requests[2907].Request.Method = "POST"; + Requests[2907].Request.Path = "/subscriptions/03a212a8-f609-/resourceGroups/05bab127-ca81-4f2/providers/Microsoft.Web/sites/c603e/config/backup/list"; + Requests[2908] = new DefaultHttpContext(); + Requests[2908].RequestServices = CreateServices(); + Requests[2908].Request.Method = "POST"; + Requests[2908].Request.Path = "/subscriptions/c1a2223f-bd5c-/resourceGroups/d28e74ab-4e98-406/providers/Microsoft.Web/sites/8246c/config/connectionstrings/list"; + Requests[2909] = new DefaultHttpContext(); + Requests[2909].RequestServices = CreateServices(); + Requests[2909].Request.Method = "POST"; + Requests[2909].Request.Path = "/subscriptions/31bb39e0-53ea-/resourceGroups/2d3be9dd-e29b-4e6/providers/Microsoft.Web/sites/b1c88/config/metadata/list"; + Requests[2910] = new DefaultHttpContext(); + Requests[2910].RequestServices = CreateServices(); + Requests[2910].Request.Method = "POST"; + Requests[2910].Request.Path = "/subscriptions/36cf1ccf-9af2-/resourceGroups/44cffed6-6e29-43a/providers/Microsoft.Web/sites/fad72/config/publishingcredentials/list"; + Requests[2911] = new DefaultHttpContext(); + Requests[2911].RequestServices = CreateServices(); + Requests[2911].Request.Method = "POST"; + Requests[2911].Request.Path = "/subscriptions/b0c1f61b-2b9e-/resourceGroups/b6eeb473-502f-4f1/providers/Microsoft.Web/sites/43421/config/pushsettings/list"; + Requests[2912] = new DefaultHttpContext(); + Requests[2912].RequestServices = CreateServices(); + Requests[2912].Request.Method = "GET"; + Requests[2912].Request.Path = "/subscriptions/76563061-a2f2-/resourceGroups/ebea7ed1-e5b4-492/providers/Microsoft.Web/sites/bb690/config/web/snapshots"; + Requests[2913] = new DefaultHttpContext(); + Requests[2913].RequestServices = CreateServices(); + Requests[2913].Request.Method = "POST"; + Requests[2913].Request.Path = "/subscriptions/8c3f3871-69ef-/resourceGroups/fb2620df-179c-489/providers/Microsoft.Web/sites/c96f3/containerlogs/zip/download"; + Requests[2914] = new DefaultHttpContext(); + Requests[2914].RequestServices = CreateServices(); + Requests[2914].Request.Method = "GET"; + Requests[2914].Request.Path = "/subscriptions/567bbecf-7778-/resourceGroups/30650e6e-eba1-46f/providers/Microsoft.Web/sites/170c5/extensions/MSDeploy/log"; + Requests[2915] = new DefaultHttpContext(); + Requests[2915].RequestServices = CreateServices(); + Requests[2915].Request.Method = "GET"; + Requests[2915].Request.Path = "/subscriptions/1ddab599-3d28-/resourceGroups/76e4e131-df3c-4ad/providers/Microsoft.Web/sites/b637b/functions/admin/token"; + Requests[2916] = new DefaultHttpContext(); + Requests[2916].RequestServices = CreateServices(); + Requests[2916].Request.Method = "POST"; + Requests[2916].Request.Path = "/subscriptions/48b50f23-06b9-/resourceGroups/bbe91601-28dd-42c/providers/Microsoft.ApiManagement/service/9b6c6599-fa/tenant/access/git/regeneratePrimaryKey"; + Requests[2917] = new DefaultHttpContext(); + Requests[2917].RequestServices = CreateServices(); + Requests[2917].Request.Method = "POST"; + Requests[2917].Request.Path = "/subscriptions/3ad91b13-2aba-/resourceGroups/242268a5-6661-48f/providers/Microsoft.ApiManagement/service/9b7bceff-8d/tenant/access/git/regenerateSecondaryKey"; + Requests[2918] = new DefaultHttpContext(); + Requests[2918].RequestServices = CreateServices(); + Requests[2918].Request.Method = "GET"; + Requests[2918].Request.Path = "/subscriptions/7ba7e2fd-8be2-/resourceGroups/6efff822-6e0a-45c/providers/Microsoft.OperationalInsights/workspaces/1152ad3a-965a/features/serviceMap/summaries/machines"; + Requests[2919] = new DefaultHttpContext(); + Requests[2919].RequestServices = CreateServices(); + Requests[2919].Request.Method = "GET"; + Requests[2919].Request.Path = "/subscriptions/a29117e5-2dd3-/resourceGroups/3ddfeff6-2f01-459/providers/Microsoft.OperationalInsights/workspaces/6af9976e-0150/features/serviceMap/clientGroups/80d8c882-c25e-4"; + Requests[2920] = new DefaultHttpContext(); + Requests[2920].RequestServices = CreateServices(); + Requests[2920].Request.Method = "GET"; + Requests[2920].Request.Path = "/subscriptions/579a0d3a-8e25-/resourceGroups/b96fc04c-52d5-43c/providers/Microsoft.OperationalInsights/workspaces/5531ca94-a9a7/features/serviceMap/machineGroups/cb813092-645d-49"; + Requests[2921] = new DefaultHttpContext(); + Requests[2921].RequestServices = CreateServices(); + Requests[2921].Request.Method = "DELETE"; + Requests[2921].Request.Path = "/subscriptions/c40dc4e1-c5d1-/resourceGroups/783b9285-0b90-4c1/providers/Microsoft.OperationalInsights/workspaces/18584f0e-eab6/features/serviceMap/machineGroups/2c6c03f7-279c-46"; + Requests[2922] = new DefaultHttpContext(); + Requests[2922].RequestServices = CreateServices(); + Requests[2922].Request.Method = "PUT"; + Requests[2922].Request.Path = "/subscriptions/a13ebeb8-9c13-/resourceGroups/1de61a68-6038-421/providers/Microsoft.OperationalInsights/workspaces/08223cb8-5fbb/features/serviceMap/machineGroups/abb7f33a-1f43-4a"; + Requests[2923] = new DefaultHttpContext(); + Requests[2923].RequestServices = CreateServices(); + Requests[2923].Request.Method = "GET"; + Requests[2923].Request.Path = "/subscriptions/86374978-af0e-/resourceGroups/48e5c11d-3080-441/providers/Microsoft.OperationalInsights/workspaces/1a4cec37-85d1/features/serviceMap/machines/2eec9e03-1d"; + Requests[2924] = new DefaultHttpContext(); + Requests[2924].RequestServices = CreateServices(); + Requests[2924].Request.Method = "PATCH"; + Requests[2924].Request.Path = "/subscriptions/883d2106-3ccc-/resourceGroups/5ffa27d0-3611-422/providers/Microsoft.Storage/storageAccounts/93e06dd3-1e/blobServices/default/containers/37a4fcda-5a38"; + Requests[2925] = new DefaultHttpContext(); + Requests[2925].RequestServices = CreateServices(); + Requests[2925].Request.Method = "GET"; + Requests[2925].Request.Path = "/subscriptions/df23d8c1-88b0-/resourceGroups/b8cecee8-2b26-4ed/providers/Microsoft.Storage/storageAccounts/2cc0af3e-18/blobServices/default/containers/ccf8abcc-011f"; + Requests[2926] = new DefaultHttpContext(); + Requests[2926].RequestServices = CreateServices(); + Requests[2926].Request.Method = "DELETE"; + Requests[2926].Request.Path = "/subscriptions/017cb9da-008b-/resourceGroups/7e9fe602-973a-4f2/providers/Microsoft.Storage/storageAccounts/58fe1881-83/blobServices/default/containers/2ca33c13-5b7d"; + Requests[2927] = new DefaultHttpContext(); + Requests[2927].RequestServices = CreateServices(); + Requests[2927].Request.Method = "PUT"; + Requests[2927].Request.Path = "/subscriptions/1cc2d03a-68da-/resourceGroups/117eeed7-1642-4be/providers/Microsoft.Storage/storageAccounts/1e6d09ff-af/blobServices/default/containers/8ca32980-5329"; + Requests[2928] = new DefaultHttpContext(); + Requests[2928].RequestServices = CreateServices(); + Requests[2928].Request.Method = "GET"; + Requests[2928].Request.Path = "/subscriptions/7f4dea19-d521-/resourceGroups/0c67d0fb-b8c2-421/providers/Microsoft.Web/sites/73d18/config/web/snapshots/acfd0142-a"; + Requests[2929] = new DefaultHttpContext(); + Requests[2929].RequestServices = CreateServices(); + Requests[2929].Request.Method = "GET"; + Requests[2929].Request.Path = "/subscriptions/9941ddf6-6d80-/resourceGroups/86951fd3-6e50-453/providers/Microsoft.OperationalInsights/workspaces/7a67d15d-6c1f/features/serviceMap/clientGroups/b7b6d946-f5ae-4/members"; + Requests[2930] = new DefaultHttpContext(); + Requests[2930].RequestServices = CreateServices(); + Requests[2930].Request.Method = "GET"; + Requests[2930].Request.Path = "/subscriptions/69404a44-1df0-/resourceGroups/836ef9eb-7b64-40f/providers/Microsoft.OperationalInsights/workspaces/7e9d9f7d-7fa5/features/serviceMap/clientGroups/42e42663-ade7-4/membersCount"; + Requests[2931] = new DefaultHttpContext(); + Requests[2931].RequestServices = CreateServices(); + Requests[2931].Request.Method = "GET"; + Requests[2931].Request.Path = "/subscriptions/e248b657-4c22-/resourceGroups/229c04b6-3d2c-4db/providers/Microsoft.OperationalInsights/workspaces/a4713130-548e/features/serviceMap/machines/27e48d94-e1/connections"; + Requests[2932] = new DefaultHttpContext(); + Requests[2932].RequestServices = CreateServices(); + Requests[2932].Request.Method = "GET"; + Requests[2932].Request.Path = "/subscriptions/51cf8985-d8f3-/resourceGroups/a56d6494-f995-43b/providers/Microsoft.OperationalInsights/workspaces/b9798816-0b2e/features/serviceMap/machines/248074ab-c9/liveness"; + Requests[2933] = new DefaultHttpContext(); + Requests[2933].RequestServices = CreateServices(); + Requests[2933].Request.Method = "GET"; + Requests[2933].Request.Path = "/subscriptions/e7c1c270-32d7-/resourceGroups/f78d920a-439e-438/providers/Microsoft.OperationalInsights/workspaces/b8518a8d-a79d/features/serviceMap/machines/525ff651-2e/machineGroups"; + Requests[2934] = new DefaultHttpContext(); + Requests[2934].RequestServices = CreateServices(); + Requests[2934].Request.Method = "GET"; + Requests[2934].Request.Path = "/subscriptions/8ad0f175-427c-/resourceGroups/ca95b742-706c-42c/providers/Microsoft.OperationalInsights/workspaces/d526ffc9-a0d9/features/serviceMap/machines/35230518-6f/ports"; + Requests[2935] = new DefaultHttpContext(); + Requests[2935].RequestServices = CreateServices(); + Requests[2935].Request.Method = "GET"; + Requests[2935].Request.Path = "/subscriptions/71cf5c2f-c213-/resourceGroups/25805ee1-235e-44b/providers/Microsoft.OperationalInsights/workspaces/bcdb94bf-e86e/features/serviceMap/machines/295e42ba-1a/processes"; + Requests[2936] = new DefaultHttpContext(); + Requests[2936].RequestServices = CreateServices(); + Requests[2936].Request.Method = "POST"; + Requests[2936].Request.Path = "/subscriptions/a18be7eb-8e66-/resourceGroups/970a9cff-2d88-43c/providers/Microsoft.Storage/storageAccounts/5fe55a9c-d7/blobServices/default/containers/2ca04e44-7b1a/clearLegalHold"; + Requests[2937] = new DefaultHttpContext(); + Requests[2937].RequestServices = CreateServices(); + Requests[2937].Request.Method = "POST"; + Requests[2937].Request.Path = "/subscriptions/f7ea0fc1-80f6-/resourceGroups/d7211526-03bb-487/providers/Microsoft.Storage/storageAccounts/3ffa4aeb-99/blobServices/default/containers/f05f8032-2959/setLegalHold"; + Requests[2938] = new DefaultHttpContext(); + Requests[2938].RequestServices = CreateServices(); + Requests[2938].Request.Method = "GET"; + Requests[2938].Request.Path = "/subscriptions/03c13c38-5d95-/resourceGroups/163d1094-16dc-413/providers/Microsoft.Web/hostingEnvironments/3adf9/multiRolePools/default/instances/494eb1e7/metricdefinitions"; + Requests[2939] = new DefaultHttpContext(); + Requests[2939].RequestServices = CreateServices(); + Requests[2939].Request.Method = "GET"; + Requests[2939].Request.Path = "/subscriptions/dbdd400f-99cc-/resourceGroups/4f7b2fbb-0eaf-419/providers/Microsoft.Web/hostingEnvironments/1a85c/multiRolePools/default/instances/72322969/metrics"; + Requests[2940] = new DefaultHttpContext(); + Requests[2940].RequestServices = CreateServices(); + Requests[2940].Request.Method = "POST"; + Requests[2940].Request.Path = "/subscriptions/d69d51b3-3647-/resourceGroups/46c7cd3a-db7e-4b2/providers/Microsoft.Web/sites/e2c3f/config/web/snapshots/40b64303-3/recover"; + Requests[2941] = new DefaultHttpContext(); + Requests[2941].RequestServices = CreateServices(); + Requests[2941].Request.Method = "POST"; + Requests[2941].Request.Path = "/subscriptions/45f176e8-e179-/resourceGroups/9c25b417-9213-45d/providers/Microsoft.Storage/storageAccounts/860c0bba-bc/blobServices/default/containers/44761f56-aa6b/immutabilityPolicies/default/extend"; + Requests[2942] = new DefaultHttpContext(); + Requests[2942].RequestServices = CreateServices(); + Requests[2942].Request.Method = "POST"; + Requests[2942].Request.Path = "/subscriptions/f6da0121-63d5-/resourceGroups/1b58ff81-bfd5-444/providers/Microsoft.Storage/storageAccounts/cc209ea8-55/blobServices/default/containers/fe53148f-1eb8/immutabilityPolicies/default/lock"; + Requests[2943] = new DefaultHttpContext(); + Requests[2943].RequestServices = CreateServices(); + Requests[2943].Request.Method = "GET"; + Requests[2943].Request.Path = "/subscriptions/2879425a-9cdc-/resourceGroups/fce95a2e-8b81-4ac/providers/Microsoft.OperationalInsights/workspaces/d4aeede1-9e78/features/serviceMap/machines/a23fed31-9b/ports/caa07cb3"; + Requests[2944] = new DefaultHttpContext(); + Requests[2944].RequestServices = CreateServices(); + Requests[2944].Request.Method = "GET"; + Requests[2944].Request.Path = "/subscriptions/6beb076d-f11a-/resourceGroups/be75d81b-a850-49e/providers/Microsoft.OperationalInsights/workspaces/162f2784-c4be/features/serviceMap/machines/7ddeabb4-fb/processes/8c22eab6-2e"; + Requests[2945] = new DefaultHttpContext(); + Requests[2945].RequestServices = CreateServices(); + Requests[2945].Request.Method = "GET"; + Requests[2945].Request.Path = "/subscriptions/e607c8b0-9336-/resourceGroups/bf8428ef-1f98-445/providers/Microsoft.Storage/storageAccounts/2dfa7089-0d/blobServices/default/containers/dfcf67c7-8e0c/immutabilityPolicies/1b1e6c2a-e352-487f-be9"; + Requests[2946] = new DefaultHttpContext(); + Requests[2946].RequestServices = CreateServices(); + Requests[2946].Request.Method = "PUT"; + Requests[2946].Request.Path = "/subscriptions/238d9f79-f079-/resourceGroups/242148c9-9b6c-49e/providers/Microsoft.Storage/storageAccounts/ba4188d0-e3/blobServices/default/containers/f18b2350-646c/immutabilityPolicies/d7f11596-472b-464d-ae9"; + Requests[2947] = new DefaultHttpContext(); + Requests[2947].RequestServices = CreateServices(); + Requests[2947].Request.Method = "DELETE"; + Requests[2947].Request.Path = "/subscriptions/5f45bdea-9817-/resourceGroups/e8309781-3384-4d0/providers/Microsoft.Storage/storageAccounts/fdcc8ef1-75/blobServices/default/containers/2e05c99d-d4e3/immutabilityPolicies/6a1ed462-a6c4-4908-816"; + Requests[2948] = new DefaultHttpContext(); + Requests[2948].RequestServices = CreateServices(); + Requests[2948].Request.Method = "GET"; + Requests[2948].Request.Path = "/subscriptions/24bb2ced-979b-/resourceGroups/0e5ec9f6-38bd-417/providers/Microsoft.OperationalInsights/workspaces/4b898e52-735b/features/serviceMap/machines/51f5ae7c-8b/ports/74d52171/acceptingProcesses"; + Requests[2949] = new DefaultHttpContext(); + Requests[2949].RequestServices = CreateServices(); + Requests[2949].Request.Method = "GET"; + Requests[2949].Request.Path = "/subscriptions/032c94f2-f4da-/resourceGroups/918fd311-f84b-46a/providers/Microsoft.OperationalInsights/workspaces/36511d76-82f9/features/serviceMap/machines/4e0eb8c5-68/ports/c0d900c8/connections"; + Requests[2950] = new DefaultHttpContext(); + Requests[2950].RequestServices = CreateServices(); + Requests[2950].Request.Method = "GET"; + Requests[2950].Request.Path = "/subscriptions/5f040c0e-bd4e-/resourceGroups/bc330b0a-7469-454/providers/Microsoft.OperationalInsights/workspaces/58fd1608-931a/features/serviceMap/machines/3c9fd9a5-86/ports/5a4e1c6d/liveness"; + Requests[2951] = new DefaultHttpContext(); + Requests[2951].RequestServices = CreateServices(); + Requests[2951].Request.Method = "GET"; + Requests[2951].Request.Path = "/subscriptions/2724301f-eaa2-/resourceGroups/a4386a3b-a59f-4dd/providers/Microsoft.OperationalInsights/workspaces/b5cf9986-96c4/features/serviceMap/machines/fe397bbd-a9/processes/2dbc2efb-35/acceptingPorts"; + Requests[2952] = new DefaultHttpContext(); + Requests[2952].RequestServices = CreateServices(); + Requests[2952].Request.Method = "GET"; + Requests[2952].Request.Path = "/subscriptions/643d4cc4-5fc5-/resourceGroups/30c2b8a3-8830-4c2/providers/Microsoft.OperationalInsights/workspaces/2c9475d7-b372/features/serviceMap/machines/05f0999c-c6/processes/cdabae4e-05/connections"; + Requests[2953] = new DefaultHttpContext(); + Requests[2953].RequestServices = CreateServices(); + Requests[2953].Request.Method = "GET"; + Requests[2953].Request.Path = "/subscriptions/de35a878-611d-/resourceGroups/4105cda7-bf6b-46c/providers/Microsoft.OperationalInsights/workspaces/19f67907-9c33/features/serviceMap/machines/ee86153d-f9/processes/ba59ccfb-d7/liveness"; + Requests[2954] = new DefaultHttpContext(); + Requests[2954].RequestServices = CreateServices(); + Requests[2954].Request.Method = "GET"; + Requests[2954].Request.Path = "/Subscriptions/4d821db6-7cad-/resourceGroups/1ae87d02-0a12-4c0/providers/Microsoft.RecoveryServices/vaults/e809942f-/backupJobs/operationResults/ee4d9e84-59"; + Requests[2955] = new DefaultHttpContext(); + Requests[2955].RequestServices = CreateServices(); + Requests[2955].Request.Method = "POST"; + Requests[2955].Request.Path = "/subscriptions/068e489b-155d-/resourcegroups/dec74986-a1f7-4a7/providers/Microsoft.Storage.Admin/farms/8858ee/shares/operationresults/3c0fe0c2-35"; + Requests[2956] = new DefaultHttpContext(); + Requests[2956].RequestServices = CreateServices(); + Requests[2956].Request.Method = "GET"; + Requests[2956].Request.Path = "/subscriptions/4f9a33c4-b5f4-/resourcegroups/79c4533b-03e0-46f/providers/Microsoft.Storage.Admin/farms/d488a0/shares/operationresults/b9fe335c-d3"; + Requests[2957] = new DefaultHttpContext(); + Requests[2957].RequestServices = CreateServices(); + Requests[2957].Request.Method = "PUT"; + Requests[2957].Request.Path = "/subscriptions/20ff8131-1a48-/resourceGroup/5d70c143-63e3-418/providers/Microsoft.MachineLearningServices/workspaces/0306ae8e-53fe/computes/34a93725-ba"; + Requests[2958] = new DefaultHttpContext(); + Requests[2958].RequestServices = CreateServices(); + Requests[2958].Request.Method = "DELETE"; + Requests[2958].Request.Path = "/subscriptions/3e833b4c-b8c4-/resourceGroup/4135b13a-ce0c-450/providers/Microsoft.MachineLearningServices/workspaces/631185ba-014e/computes/c681152b-57"; + Requests[2959] = new DefaultHttpContext(); + Requests[2959].RequestServices = CreateServices(); + Requests[2959].Request.Method = "GET"; + Requests[2959].Request.Path = "/subscriptions/258f126d-1967-/resourceGroup/a420b6bb-cd1d-4e4/providers/Microsoft.MachineLearningServices/workspaces/da767a46-9aae/computes/0943fa06-72"; + Requests[2960] = new DefaultHttpContext(); + Requests[2960].RequestServices = CreateServices(); + Requests[2960].Request.Method = "PATCH"; + Requests[2960].Request.Path = "/subscriptions/42a82f0e-034e-/resourceGroups/f9612835-/providers/Microsoft.DataMigration/services/d47aed37-6c/projects/dd310e7e-03"; + Requests[2961] = new DefaultHttpContext(); + Requests[2961].RequestServices = CreateServices(); + Requests[2961].Request.Method = "DELETE"; + Requests[2961].Request.Path = "/subscriptions/ac46e81a-6a97-/resourceGroups/ac588f2d-/providers/Microsoft.DataMigration/services/bb9c126f-89/projects/f5e7e6db-47"; + Requests[2962] = new DefaultHttpContext(); + Requests[2962].RequestServices = CreateServices(); + Requests[2962].Request.Method = "GET"; + Requests[2962].Request.Path = "/subscriptions/04a607de-c556-/resourceGroups/d0c430f4-/providers/Microsoft.DataMigration/services/903f68c8-4c/projects/b30b303f-b8"; + Requests[2963] = new DefaultHttpContext(); + Requests[2963].RequestServices = CreateServices(); + Requests[2963].Request.Method = "PUT"; + Requests[2963].Request.Path = "/subscriptions/82a0394a-de3d-/resourceGroups/356cf4fa-/providers/Microsoft.DataMigration/services/8bce1ba1-16/projects/2d4f4ab8-2f"; + Requests[2964] = new DefaultHttpContext(); + Requests[2964].RequestServices = CreateServices(); + Requests[2964].Request.Method = "PARAMETERS"; + Requests[2964].Request.Path = "/subscriptions/a5f0d2b1-559a-/resourceGroups/0985517e-/providers/Microsoft.DataMigration/services/810e4f83-54/projects/9207050a-5d"; + Requests[2965] = new DefaultHttpContext(); + Requests[2965].RequestServices = CreateServices(); + Requests[2965].Request.Method = "GET"; + Requests[2965].Request.Path = "/subscriptions/b1ea3083-1ec8-/resourcegroups/ed071ff1-6752/providers/Microsoft.AzureBridge.Admin/activations/7d940ac4-e839-/downloadedProducts/29d52386-88"; + Requests[2966] = new DefaultHttpContext(); + Requests[2966].RequestServices = CreateServices(); + Requests[2966].Request.Method = "DELETE"; + Requests[2966].Request.Path = "/subscriptions/53e0a721-2016-/resourcegroups/d7188377-f9de/providers/Microsoft.AzureBridge.Admin/activations/b378806e-d305-/downloadedProducts/771e0bc0-e3"; + Requests[2967] = new DefaultHttpContext(); + Requests[2967].RequestServices = CreateServices(); + Requests[2967].Request.Method = "GET"; + Requests[2967].Request.Path = "/subscriptions/80e66663-8898-/resourcegroups/473df903-b8bc/providers/Microsoft.AzureBridge.Admin/activations/a3c3a2ba-ec27-/products/a7c39dff-bd"; + Requests[2968] = new DefaultHttpContext(); + Requests[2968].RequestServices = CreateServices(); + Requests[2968].Request.Method = "PUT"; + Requests[2968].Request.Path = "/subscriptions/85459ae0-fcad-/resourceGroups/b3712f7b-7205/providers/Microsoft.AzureStack/registrations/93f57b1e-2ef6-4c/customerSubscriptions/4c18401b-c92f-480a-82b8-"; + Requests[2969] = new DefaultHttpContext(); + Requests[2969].RequestServices = CreateServices(); + Requests[2969].Request.Method = "GET"; + Requests[2969].Request.Path = "/subscriptions/3c53eb75-6a41-/resourceGroups/f178cd16-0a26/providers/Microsoft.AzureStack/registrations/754e3885-6b85-45/customerSubscriptions/2ff6ee33-fc93-43c2-8cd2-"; + Requests[2970] = new DefaultHttpContext(); + Requests[2970].RequestServices = CreateServices(); + Requests[2970].Request.Method = "DELETE"; + Requests[2970].Request.Path = "/subscriptions/02e711e6-708d-/resourceGroups/45103859-626c/providers/Microsoft.AzureStack/registrations/c7a5641e-7289-43/customerSubscriptions/a938fb1a-3d84-4115-8900-"; + Requests[2971] = new DefaultHttpContext(); + Requests[2971].RequestServices = CreateServices(); + Requests[2971].Request.Method = "GET"; + Requests[2971].Request.Path = "/subscriptions/97316cda-26ce-/resourceGroups/fd4def52-2b8d/providers/Microsoft.AzureStack/registrations/dc7263bc-017d-4f/products/f6b7fb23-c3"; + Requests[2972] = new DefaultHttpContext(); + Requests[2972].RequestServices = CreateServices(); + Requests[2972].Request.Method = "PATCH"; + Requests[2972].Request.Path = "/subscriptions/c2b8fb8d-6abf-/resourceGroups/e841c65f-1373-411/providers/Microsoft.ApiManagement/service/37406ec6-97/apis/1a91e"; + Requests[2973] = new DefaultHttpContext(); + Requests[2973].RequestServices = CreateServices(); + Requests[2973].Request.Method = "DELETE"; + Requests[2973].Request.Path = "/subscriptions/ebc6d7cc-d7ef-/resourceGroups/2f099d6c-e2b8-430/providers/Microsoft.ApiManagement/service/095a4a80-a1/apis/410dc"; + Requests[2974] = new DefaultHttpContext(); + Requests[2974].RequestServices = CreateServices(); + Requests[2974].Request.Method = "HEAD"; + Requests[2974].Request.Path = "/subscriptions/e0d9387a-1df0-/resourceGroups/3e2c03b6-a7a3-475/providers/Microsoft.ApiManagement/service/2d7afe64-0e/apis/50885"; + Requests[2975] = new DefaultHttpContext(); + Requests[2975].RequestServices = CreateServices(); + Requests[2975].Request.Method = "GET"; + Requests[2975].Request.Path = "/subscriptions/ba40e904-fa86-/resourceGroups/88e06f13-6116-4c3/providers/Microsoft.ApiManagement/service/608411f3-66/apis/68d69"; + Requests[2976] = new DefaultHttpContext(); + Requests[2976].RequestServices = CreateServices(); + Requests[2976].Request.Method = "PUT"; + Requests[2976].Request.Path = "/subscriptions/75a6baa7-0abe-/resourceGroups/b0f039eb-7ae6-49b/providers/Microsoft.ApiManagement/service/47555aae-bb/apis/fc01f"; + Requests[2977] = new DefaultHttpContext(); + Requests[2977].RequestServices = CreateServices(); + Requests[2977].Request.Method = "HEAD"; + Requests[2977].Request.Path = "/subscriptions/97cff903-acd8-/resourceGroups/6b6d8dcd-66aa-4dc/providers/Microsoft.ApiManagement/service/bcadf16e-99/api-version-sets/43de1b8c-3be"; + Requests[2978] = new DefaultHttpContext(); + Requests[2978].RequestServices = CreateServices(); + Requests[2978].Request.Method = "DELETE"; + Requests[2978].Request.Path = "/subscriptions/3760ab11-a853-/resourceGroups/f22b8c3e-c50e-466/providers/Microsoft.ApiManagement/service/27e8fd44-7b/api-version-sets/a55f2f40-327"; + Requests[2979] = new DefaultHttpContext(); + Requests[2979].RequestServices = CreateServices(); + Requests[2979].Request.Method = "GET"; + Requests[2979].Request.Path = "/subscriptions/e4b60afc-fec6-/resourceGroups/eb60ec0d-2ca8-44c/providers/Microsoft.ApiManagement/service/72d352eb-fa/api-version-sets/649cfe33-f78"; + Requests[2980] = new DefaultHttpContext(); + Requests[2980].RequestServices = CreateServices(); + Requests[2980].Request.Method = "PUT"; + Requests[2980].Request.Path = "/subscriptions/dee154aa-4add-/resourceGroups/a5cb41bb-872e-464/providers/Microsoft.ApiManagement/service/d70070bc-91/api-version-sets/2deb3c69-5eb"; + Requests[2981] = new DefaultHttpContext(); + Requests[2981].RequestServices = CreateServices(); + Requests[2981].Request.Method = "PATCH"; + Requests[2981].Request.Path = "/subscriptions/620fa6fb-2392-/resourceGroups/d818719e-fd7c-44d/providers/Microsoft.ApiManagement/service/7755633b-88/api-version-sets/9238a65c-379"; + Requests[2982] = new DefaultHttpContext(); + Requests[2982].RequestServices = CreateServices(); + Requests[2982].Request.Method = "PARAMETERS"; + Requests[2982].Request.Path = "/subscriptions/4f320d72-1e03-/resourceGroups/8f1d6b48-0a75-4cd/providers/Microsoft.ApiManagement/service/0f212093-21/api-version-sets/b16a3104-993"; + Requests[2983] = new DefaultHttpContext(); + Requests[2983].RequestServices = CreateServices(); + Requests[2983].Request.Method = "HEAD"; + Requests[2983].Request.Path = "/subscriptions/fe2d6786-4ae7-/resourceGroups/b51e9a20-2335-402/providers/Microsoft.ApiManagement/service/7b975106-d4/authorizationServers/a345bfa"; + Requests[2984] = new DefaultHttpContext(); + Requests[2984].RequestServices = CreateServices(); + Requests[2984].Request.Method = "GET"; + Requests[2984].Request.Path = "/subscriptions/46667647-cd9f-/resourceGroups/76c6098f-738d-4a3/providers/Microsoft.ApiManagement/service/1505ba62-de/authorizationServers/206d389"; + Requests[2985] = new DefaultHttpContext(); + Requests[2985].RequestServices = CreateServices(); + Requests[2985].Request.Method = "DELETE"; + Requests[2985].Request.Path = "/subscriptions/fe58b0a3-c2a4-/resourceGroups/30d4565e-9518-4f4/providers/Microsoft.ApiManagement/service/af3ed4b0-93/authorizationServers/9cc8ab2"; + Requests[2986] = new DefaultHttpContext(); + Requests[2986].RequestServices = CreateServices(); + Requests[2986].Request.Method = "PATCH"; + Requests[2986].Request.Path = "/subscriptions/c3609445-f1c6-/resourceGroups/5e0c9db9-2182-469/providers/Microsoft.ApiManagement/service/6bf1f248-7f/authorizationServers/d2a4f40"; + Requests[2987] = new DefaultHttpContext(); + Requests[2987].RequestServices = CreateServices(); + Requests[2987].Request.Method = "PUT"; + Requests[2987].Request.Path = "/subscriptions/1e6eb197-ece9-/resourceGroups/f0176929-7350-406/providers/Microsoft.ApiManagement/service/9a3bb9d0-aa/authorizationServers/59695aa"; + Requests[2988] = new DefaultHttpContext(); + Requests[2988].RequestServices = CreateServices(); + Requests[2988].Request.Method = "PUT"; + Requests[2988].Request.Path = "/subscriptions/a286008a-f578-/resourceGroups/cbf2a9a3-62a9-4e1/providers/Microsoft.ApiManagement/service/e6195e47-2a/backends/bb0227c5-"; + Requests[2989] = new DefaultHttpContext(); + Requests[2989].RequestServices = CreateServices(); + Requests[2989].Request.Method = "GET"; + Requests[2989].Request.Path = "/subscriptions/f0a89759-be26-/resourceGroups/b5564fba-4429-4a0/providers/Microsoft.ApiManagement/service/3c570a59-a8/backends/43683750-"; + Requests[2990] = new DefaultHttpContext(); + Requests[2990].RequestServices = CreateServices(); + Requests[2990].Request.Method = "PATCH"; + Requests[2990].Request.Path = "/subscriptions/d6a2b1fc-3115-/resourceGroups/8de97dba-2bf6-44d/providers/Microsoft.ApiManagement/service/afaa1314-d0/backends/de8c2885-"; + Requests[2991] = new DefaultHttpContext(); + Requests[2991].RequestServices = CreateServices(); + Requests[2991].Request.Method = "DELETE"; + Requests[2991].Request.Path = "/subscriptions/67e38d11-5703-/resourceGroups/f11cc59e-f1bb-40a/providers/Microsoft.ApiManagement/service/6ea5b8f2-e4/backends/6dd9a573-"; + Requests[2992] = new DefaultHttpContext(); + Requests[2992].RequestServices = CreateServices(); + Requests[2992].Request.Method = "HEAD"; + Requests[2992].Request.Path = "/subscriptions/dec623de-06c8-/resourceGroups/51cee1ce-20fa-4d1/providers/Microsoft.ApiManagement/service/645105c7-a5/backends/6b3a0ace-"; + Requests[2993] = new DefaultHttpContext(); + Requests[2993].RequestServices = CreateServices(); + Requests[2993].Request.Method = "HEAD"; + Requests[2993].Request.Path = "/subscriptions/ed74d376-5d8f-/resourceGroups/dabf2883-9898-482/providers/Microsoft.ApiManagement/service/2ef3e9de-90/certificates/6f48a19b-554d"; + Requests[2994] = new DefaultHttpContext(); + Requests[2994].RequestServices = CreateServices(); + Requests[2994].Request.Method = "GET"; + Requests[2994].Request.Path = "/subscriptions/8be2d8ae-e246-/resourceGroups/ccaa4bd2-540c-46b/providers/Microsoft.ApiManagement/service/4faebbe6-26/certificates/682b4091-0e9d"; + Requests[2995] = new DefaultHttpContext(); + Requests[2995].RequestServices = CreateServices(); + Requests[2995].Request.Method = "PUT"; + Requests[2995].Request.Path = "/subscriptions/bf85fb61-3e48-/resourceGroups/ee455d21-4d81-44d/providers/Microsoft.ApiManagement/service/132239f1-d6/certificates/f023b1f6-75f8"; + Requests[2996] = new DefaultHttpContext(); + Requests[2996].RequestServices = CreateServices(); + Requests[2996].Request.Method = "DELETE"; + Requests[2996].Request.Path = "/subscriptions/defdf4e7-af42-/resourceGroups/9f6ac094-eb42-459/providers/Microsoft.ApiManagement/service/76503ea1-e8/certificates/e9c01b43-08e4"; + Requests[2997] = new DefaultHttpContext(); + Requests[2997].RequestServices = CreateServices(); + Requests[2997].Request.Method = "HEAD"; + Requests[2997].Request.Path = "/subscriptions/3a48a5bc-3252-/resourceGroups/177975ca-0178-411/providers/Microsoft.ApiManagement/service/813a04d1-19/diagnostics/db3ba92c-9dd"; + Requests[2998] = new DefaultHttpContext(); + Requests[2998].RequestServices = CreateServices(); + Requests[2998].Request.Method = "GET"; + Requests[2998].Request.Path = "/subscriptions/7710e56c-57af-/resourceGroups/c6cde74a-669e-412/providers/Microsoft.ApiManagement/service/a9d38522-b0/diagnostics/8ca53e3f-ad9"; + Requests[2999] = new DefaultHttpContext(); + Requests[2999].RequestServices = CreateServices(); + Requests[2999].Request.Method = "PUT"; + Requests[2999].Request.Path = "/subscriptions/f142565c-e121-/resourceGroups/0029d02e-60cb-482/providers/Microsoft.ApiManagement/service/b279f0a7-76/diagnostics/75997d1c-021"; + Requests[3000] = new DefaultHttpContext(); + Requests[3000].RequestServices = CreateServices(); + Requests[3000].Request.Method = "PATCH"; + Requests[3000].Request.Path = "/subscriptions/8b1cac27-0225-/resourceGroups/408db9e5-afb0-4a1/providers/Microsoft.ApiManagement/service/bc26895c-85/diagnostics/ecf1378c-e1e"; + Requests[3001] = new DefaultHttpContext(); + Requests[3001].RequestServices = CreateServices(); + Requests[3001].Request.Method = "DELETE"; + Requests[3001].Request.Path = "/subscriptions/ef29915b-6e23-/resourceGroups/53cd3320-8969-429/providers/Microsoft.ApiManagement/service/965e57cb-2b/diagnostics/69d5cc5a-6aa"; + Requests[3002] = new DefaultHttpContext(); + Requests[3002].RequestServices = CreateServices(); + Requests[3002].Request.Method = "DELETE"; + Requests[3002].Request.Path = "/subscriptions/ee0e8a46-c97e-/resourceGroups/84a69bf6-e714-46f/providers/Microsoft.ApiManagement/service/813c84fa-17/groups/ae5cd31"; + Requests[3003] = new DefaultHttpContext(); + Requests[3003].RequestServices = CreateServices(); + Requests[3003].Request.Method = "PATCH"; + Requests[3003].Request.Path = "/subscriptions/38b8904a-35a0-/resourceGroups/81779466-62c2-460/providers/Microsoft.ApiManagement/service/00876d0e-b4/groups/d051597"; + Requests[3004] = new DefaultHttpContext(); + Requests[3004].RequestServices = CreateServices(); + Requests[3004].Request.Method = "HEAD"; + Requests[3004].Request.Path = "/subscriptions/256d98c0-29aa-/resourceGroups/5e0864de-0851-46f/providers/Microsoft.ApiManagement/service/e238a53c-a1/groups/31bed2f"; + Requests[3005] = new DefaultHttpContext(); + Requests[3005].RequestServices = CreateServices(); + Requests[3005].Request.Method = "GET"; + Requests[3005].Request.Path = "/subscriptions/03f6fdee-1f8e-/resourceGroups/3908cd0a-0072-4ff/providers/Microsoft.ApiManagement/service/d535c1ba-1d/groups/0a2cdca"; + Requests[3006] = new DefaultHttpContext(); + Requests[3006].RequestServices = CreateServices(); + Requests[3006].Request.Method = "PUT"; + Requests[3006].Request.Path = "/subscriptions/d49370c4-ae89-/resourceGroups/65ccec5e-6826-4eb/providers/Microsoft.ApiManagement/service/4d885ee8-11/groups/bc2d83d"; + Requests[3007] = new DefaultHttpContext(); + Requests[3007].RequestServices = CreateServices(); + Requests[3007].Request.Method = "HEAD"; + Requests[3007].Request.Path = "/subscriptions/5d565a53-2e82-/resourceGroups/3e55b6e8-e12f-459/providers/Microsoft.ApiManagement/service/9b1e20d0-ec/identityProviders/6b5e2648-4262-4862-a"; + Requests[3008] = new DefaultHttpContext(); + Requests[3008].RequestServices = CreateServices(); + Requests[3008].Request.Method = "GET"; + Requests[3008].Request.Path = "/subscriptions/9783e7f5-fcc1-/resourceGroups/03a0293f-9d8b-43e/providers/Microsoft.ApiManagement/service/78d8857d-c7/identityProviders/a999ad23-0187-4ab6-a"; + Requests[3009] = new DefaultHttpContext(); + Requests[3009].RequestServices = CreateServices(); + Requests[3009].Request.Method = "DELETE"; + Requests[3009].Request.Path = "/subscriptions/45a9dc9c-018b-/resourceGroups/b6b89258-f1d5-41b/providers/Microsoft.ApiManagement/service/d24dd9d6-72/identityProviders/5e448e76-c35e-4e71-9"; + Requests[3010] = new DefaultHttpContext(); + Requests[3010].RequestServices = CreateServices(); + Requests[3010].Request.Method = "PUT"; + Requests[3010].Request.Path = "/subscriptions/2decda53-953f-/resourceGroups/055673a2-fa94-44f/providers/Microsoft.ApiManagement/service/534f3103-ac/identityProviders/0a557fe3-f415-4f2c-b"; + Requests[3011] = new DefaultHttpContext(); + Requests[3011].RequestServices = CreateServices(); + Requests[3011].Request.Method = "PATCH"; + Requests[3011].Request.Path = "/subscriptions/e9087213-7a1e-/resourceGroups/51364ccf-4b1e-46b/providers/Microsoft.ApiManagement/service/829648f0-90/identityProviders/2d0749e4-eb29-44ba-a"; + Requests[3012] = new DefaultHttpContext(); + Requests[3012].RequestServices = CreateServices(); + Requests[3012].Request.Method = "PUT"; + Requests[3012].Request.Path = "/subscriptions/8542c7de-ef4b-/resourceGroups/072cccdd-f278-458/providers/Microsoft.ApiManagement/service/e7c97461-46/loggers/a4dbac87"; + Requests[3013] = new DefaultHttpContext(); + Requests[3013].RequestServices = CreateServices(); + Requests[3013].Request.Method = "GET"; + Requests[3013].Request.Path = "/subscriptions/2f9a02f9-de0c-/resourceGroups/f05ea938-0ee3-4d2/providers/Microsoft.ApiManagement/service/278749bc-d2/loggers/aea473b3"; + Requests[3014] = new DefaultHttpContext(); + Requests[3014].RequestServices = CreateServices(); + Requests[3014].Request.Method = "HEAD"; + Requests[3014].Request.Path = "/subscriptions/17ccc322-55a1-/resourceGroups/bea9aaeb-7f94-4a6/providers/Microsoft.ApiManagement/service/01f1ce91-79/loggers/b9584901"; + Requests[3015] = new DefaultHttpContext(); + Requests[3015].RequestServices = CreateServices(); + Requests[3015].Request.Method = "PATCH"; + Requests[3015].Request.Path = "/subscriptions/a93b62ab-3cd1-/resourceGroups/9d33f101-2b3d-4de/providers/Microsoft.ApiManagement/service/e9b65f1a-bf/loggers/22665e98"; + Requests[3016] = new DefaultHttpContext(); + Requests[3016].RequestServices = CreateServices(); + Requests[3016].Request.Method = "DELETE"; + Requests[3016].Request.Path = "/subscriptions/903c9002-79bb-/resourceGroups/a96b6680-0b73-419/providers/Microsoft.ApiManagement/service/a86f4b42-24/loggers/a89cb7dc"; + Requests[3017] = new DefaultHttpContext(); + Requests[3017].RequestServices = CreateServices(); + Requests[3017].Request.Method = "PUT"; + Requests[3017].Request.Path = "/subscriptions/ff8b9918-9058-/resourceGroups/1cd47a54-5c2a-410/providers/Microsoft.ApiManagement/service/0e2c281f-3c/notifications/5762c692-abbb-4c"; + Requests[3018] = new DefaultHttpContext(); + Requests[3018].RequestServices = CreateServices(); + Requests[3018].Request.Method = "GET"; + Requests[3018].Request.Path = "/subscriptions/e470c69d-1166-/resourceGroups/dc34a7a2-2b9a-454/providers/Microsoft.ApiManagement/service/64b82b29-1a/notifications/a222a270-59af-4f"; + Requests[3019] = new DefaultHttpContext(); + Requests[3019].RequestServices = CreateServices(); + Requests[3019].Request.Method = "GET"; + Requests[3019].Request.Path = "/subscriptions/8695b3ba-a51b-/resourceGroups/74d7d192-cdb1-4cf/providers/Microsoft.ApiManagement/service/ab14f1ef-f1/openidConnectProviders/29ebf"; + Requests[3020] = new DefaultHttpContext(); + Requests[3020].RequestServices = CreateServices(); + Requests[3020].Request.Method = "HEAD"; + Requests[3020].Request.Path = "/subscriptions/3478d87c-3cfe-/resourceGroups/e694fcbb-fb7d-402/providers/Microsoft.ApiManagement/service/7bb290e5-08/openidConnectProviders/0357c"; + Requests[3021] = new DefaultHttpContext(); + Requests[3021].RequestServices = CreateServices(); + Requests[3021].Request.Method = "PUT"; + Requests[3021].Request.Path = "/subscriptions/24bc47ee-d70d-/resourceGroups/c5514dc1-7433-44a/providers/Microsoft.ApiManagement/service/906cab44-e3/openidConnectProviders/36586"; + Requests[3022] = new DefaultHttpContext(); + Requests[3022].RequestServices = CreateServices(); + Requests[3022].Request.Method = "PATCH"; + Requests[3022].Request.Path = "/subscriptions/53e658b3-5e6d-/resourceGroups/7075c5c0-695e-410/providers/Microsoft.ApiManagement/service/d0eb77c6-43/openidConnectProviders/00e2f"; + Requests[3023] = new DefaultHttpContext(); + Requests[3023].RequestServices = CreateServices(); + Requests[3023].Request.Method = "DELETE"; + Requests[3023].Request.Path = "/subscriptions/3a341b39-fb2f-/resourceGroups/af60c4f8-84f0-4ea/providers/Microsoft.ApiManagement/service/f3a436bb-71/openidConnectProviders/64448"; + Requests[3024] = new DefaultHttpContext(); + Requests[3024].RequestServices = CreateServices(); + Requests[3024].Request.Method = "DELETE"; + Requests[3024].Request.Path = "/subscriptions/5e7fb988-512d-/resourceGroups/29543082-7da0-4b2/providers/Microsoft.ApiManagement/service/4c809c28-50/policies/4279759e"; + Requests[3025] = new DefaultHttpContext(); + Requests[3025].RequestServices = CreateServices(); + Requests[3025].Request.Method = "GET"; + Requests[3025].Request.Path = "/subscriptions/bcd8a2b9-5a52-/resourceGroups/e6c5b16d-f585-476/providers/Microsoft.ApiManagement/service/8a9f12e1-b1/policies/5469b0b2"; + Requests[3026] = new DefaultHttpContext(); + Requests[3026].RequestServices = CreateServices(); + Requests[3026].Request.Method = "HEAD"; + Requests[3026].Request.Path = "/subscriptions/e48059c8-a93b-/resourceGroups/f1e6aab5-9e67-48c/providers/Microsoft.ApiManagement/service/d814d1be-1f/policies/26eb4283"; + Requests[3027] = new DefaultHttpContext(); + Requests[3027].RequestServices = CreateServices(); + Requests[3027].Request.Method = "PUT"; + Requests[3027].Request.Path = "/subscriptions/991dc958-12a5-/resourceGroups/da5b9162-25c7-417/providers/Microsoft.ApiManagement/service/e678330e-c7/policies/e2f16039"; + Requests[3028] = new DefaultHttpContext(); + Requests[3028].RequestServices = CreateServices(); + Requests[3028].Request.Method = "DELETE"; + Requests[3028].Request.Path = "/subscriptions/f06dcc82-44e7-/resourceGroups/96354e65-58d8-441/providers/Microsoft.ApiManagement/service/b86bfb8e-db/products/8a93cc29-"; + Requests[3029] = new DefaultHttpContext(); + Requests[3029].RequestServices = CreateServices(); + Requests[3029].Request.Method = "PUT"; + Requests[3029].Request.Path = "/subscriptions/4965274b-7654-/resourceGroups/2993eb87-cb21-4bf/providers/Microsoft.ApiManagement/service/1946a657-fc/products/80e8bb00-"; + Requests[3030] = new DefaultHttpContext(); + Requests[3030].RequestServices = CreateServices(); + Requests[3030].Request.Method = "PATCH"; + Requests[3030].Request.Path = "/subscriptions/2ceb4526-7fcd-/resourceGroups/c3a9b601-601f-49e/providers/Microsoft.ApiManagement/service/aa6685ca-ae/products/03dd0095-"; + Requests[3031] = new DefaultHttpContext(); + Requests[3031].RequestServices = CreateServices(); + Requests[3031].Request.Method = "GET"; + Requests[3031].Request.Path = "/subscriptions/0f0226f5-0dde-/resourceGroups/c3f4836d-194f-491/providers/Microsoft.ApiManagement/service/152b04d2-2e/products/e7f7e47b-"; + Requests[3032] = new DefaultHttpContext(); + Requests[3032].RequestServices = CreateServices(); + Requests[3032].Request.Method = "HEAD"; + Requests[3032].Request.Path = "/subscriptions/95c8e255-b08f-/resourceGroups/b31d92ea-78bf-4e1/providers/Microsoft.ApiManagement/service/18b4a487-3b/products/62344162-"; + Requests[3033] = new DefaultHttpContext(); + Requests[3033].RequestServices = CreateServices(); + Requests[3033].Request.Method = "GET"; + Requests[3033].Request.Path = "/subscriptions/72f3cd01-62eb-/resourceGroups/b2eaea41-c60d-4cb/providers/Microsoft.ApiManagement/service/5d51a9ae-83/properties/ef3c95"; + Requests[3034] = new DefaultHttpContext(); + Requests[3034].RequestServices = CreateServices(); + Requests[3034].Request.Method = "PUT"; + Requests[3034].Request.Path = "/subscriptions/3994542d-adcc-/resourceGroups/7779c05e-330c-48c/providers/Microsoft.ApiManagement/service/87986799-76/properties/e5fd1a"; + Requests[3035] = new DefaultHttpContext(); + Requests[3035].RequestServices = CreateServices(); + Requests[3035].Request.Method = "PATCH"; + Requests[3035].Request.Path = "/subscriptions/d18353bd-68c8-/resourceGroups/97b0fc39-ace1-466/providers/Microsoft.ApiManagement/service/e9085253-93/properties/64a76b"; + Requests[3036] = new DefaultHttpContext(); + Requests[3036].RequestServices = CreateServices(); + Requests[3036].Request.Method = "DELETE"; + Requests[3036].Request.Path = "/subscriptions/5cb6c805-d71a-/resourceGroups/6af7c672-7380-433/providers/Microsoft.ApiManagement/service/d1ba35f6-2b/properties/7dfe75"; + Requests[3037] = new DefaultHttpContext(); + Requests[3037].RequestServices = CreateServices(); + Requests[3037].Request.Method = "HEAD"; + Requests[3037].Request.Path = "/subscriptions/f0830b5b-7b3d-/resourceGroups/1b2710b9-a5e5-431/providers/Microsoft.ApiManagement/service/8bb3a388-37/properties/0d2538"; + Requests[3038] = new DefaultHttpContext(); + Requests[3038].RequestServices = CreateServices(); + Requests[3038].Request.Method = "GET"; + Requests[3038].Request.Path = "/subscriptions/536171fe-862b-/resourceGroups/2136bfca-8b4f-46d/providers/Microsoft.ApiManagement/service/a0e6c822-1b/quotas/40faedad-f3eb-4"; + Requests[3039] = new DefaultHttpContext(); + Requests[3039].RequestServices = CreateServices(); + Requests[3039].Request.Method = "PATCH"; + Requests[3039].Request.Path = "/subscriptions/65bd6861-f13f-/resourceGroups/df76693c-af29-441/providers/Microsoft.ApiManagement/service/5ce2123b-3b/quotas/4aeef56f-efad-4"; + Requests[3040] = new DefaultHttpContext(); + Requests[3040].RequestServices = CreateServices(); + Requests[3040].Request.Method = "GET"; + Requests[3040].Request.Path = "/subscriptions/d3190b27-ce25-/resourceGroups/16c3d61d-1706-4f4/providers/Microsoft.ApiManagement/service/fdff089e-5a/reports/dcd1a41c-01"; + Requests[3041] = new DefaultHttpContext(); + Requests[3041].RequestServices = CreateServices(); + Requests[3041].Request.Method = "DELETE"; + Requests[3041].Request.Path = "/subscriptions/7dfdb3e8-fc62-/resourceGroups/7cade622-e2a2-4cd/providers/Microsoft.ApiManagement/service/4bdb177a-a4/subscriptions/8c0ab"; + Requests[3042] = new DefaultHttpContext(); + Requests[3042].RequestServices = CreateServices(); + Requests[3042].Request.Method = "HEAD"; + Requests[3042].Request.Path = "/subscriptions/49212dc6-a414-/resourceGroups/4fd03937-0807-40b/providers/Microsoft.ApiManagement/service/00228d75-fb/subscriptions/332b7"; + Requests[3043] = new DefaultHttpContext(); + Requests[3043].RequestServices = CreateServices(); + Requests[3043].Request.Method = "GET"; + Requests[3043].Request.Path = "/subscriptions/0e6b63f1-f1db-/resourceGroups/c96985c0-8a71-4c4/providers/Microsoft.ApiManagement/service/988173d8-f8/subscriptions/32e55"; + Requests[3044] = new DefaultHttpContext(); + Requests[3044].RequestServices = CreateServices(); + Requests[3044].Request.Method = "PUT"; + Requests[3044].Request.Path = "/subscriptions/b61dc822-402c-/resourceGroups/6fe2d0d0-f848-468/providers/Microsoft.ApiManagement/service/05b5445d-cd/subscriptions/b001f"; + Requests[3045] = new DefaultHttpContext(); + Requests[3045].RequestServices = CreateServices(); + Requests[3045].Request.Method = "PATCH"; + Requests[3045].Request.Path = "/subscriptions/30d24d63-cac8-/resourceGroups/9018a0f3-6871-443/providers/Microsoft.ApiManagement/service/39ac14d2-67/subscriptions/7d383"; + Requests[3046] = new DefaultHttpContext(); + Requests[3046].RequestServices = CreateServices(); + Requests[3046].Request.Method = "HEAD"; + Requests[3046].Request.Path = "/subscriptions/53b87572-5bb7-/resourceGroups/d2444c6b-8fe7-499/providers/Microsoft.ApiManagement/service/85f5bdcd-59/tags/6ec8c"; + Requests[3047] = new DefaultHttpContext(); + Requests[3047].RequestServices = CreateServices(); + Requests[3047].Request.Method = "GET"; + Requests[3047].Request.Path = "/subscriptions/526ddc98-4b4e-/resourceGroups/afb46eae-871f-437/providers/Microsoft.ApiManagement/service/c54626cb-31/tags/6d746"; + Requests[3048] = new DefaultHttpContext(); + Requests[3048].RequestServices = CreateServices(); + Requests[3048].Request.Method = "DELETE"; + Requests[3048].Request.Path = "/subscriptions/868689e0-04f8-/resourceGroups/d9fb5e3c-8fcc-436/providers/Microsoft.ApiManagement/service/a958584e-9c/tags/1ee57"; + Requests[3049] = new DefaultHttpContext(); + Requests[3049].RequestServices = CreateServices(); + Requests[3049].Request.Method = "PATCH"; + Requests[3049].Request.Path = "/subscriptions/74113d28-6b49-/resourceGroups/e0a7b56c-bd82-48c/providers/Microsoft.ApiManagement/service/e3c1e678-16/tags/22ace"; + Requests[3050] = new DefaultHttpContext(); + Requests[3050].RequestServices = CreateServices(); + Requests[3050].Request.Method = "PUT"; + Requests[3050].Request.Path = "/subscriptions/113a3930-d51b-/resourceGroups/34f40b9c-93b8-4cd/providers/Microsoft.ApiManagement/service/bc2930a2-4c/tags/56061"; + Requests[3051] = new DefaultHttpContext(); + Requests[3051].RequestServices = CreateServices(); + Requests[3051].Request.Method = "PATCH"; + Requests[3051].Request.Path = "/subscriptions/7a22a6b2-fba7-/resourceGroups/07d06021-a1be-4fa/providers/Microsoft.ApiManagement/service/fbd3df26-59/templates/1490474b-90f"; + Requests[3052] = new DefaultHttpContext(); + Requests[3052].RequestServices = CreateServices(); + Requests[3052].Request.Method = "GET"; + Requests[3052].Request.Path = "/subscriptions/142106b2-bd19-/resourceGroups/b48d4289-7803-47b/providers/Microsoft.ApiManagement/service/fc5c45fd-7f/templates/e82da1a3-86a"; + Requests[3053] = new DefaultHttpContext(); + Requests[3053].RequestServices = CreateServices(); + Requests[3053].Request.Method = "HEAD"; + Requests[3053].Request.Path = "/subscriptions/89abb97d-b392-/resourceGroups/0a4bcdae-806b-40e/providers/Microsoft.ApiManagement/service/c191a065-1b/templates/ea7872b1-5ba"; + Requests[3054] = new DefaultHttpContext(); + Requests[3054].RequestServices = CreateServices(); + Requests[3054].Request.Method = "DELETE"; + Requests[3054].Request.Path = "/subscriptions/c61a432b-32bd-/resourceGroups/503aa104-7502-43e/providers/Microsoft.ApiManagement/service/db4d66a7-85/templates/3e1cd73d-cc4"; + Requests[3055] = new DefaultHttpContext(); + Requests[3055].RequestServices = CreateServices(); + Requests[3055].Request.Method = "PUT"; + Requests[3055].Request.Path = "/subscriptions/34ec5e97-9d49-/resourceGroups/4315de35-8203-4d3/providers/Microsoft.ApiManagement/service/4b328510-2f/templates/45fff909-317"; + Requests[3056] = new DefaultHttpContext(); + Requests[3056].RequestServices = CreateServices(); + Requests[3056].Request.Method = "GET"; + Requests[3056].Request.Path = "/subscriptions/9ef00301-7900-/resourceGroups/481dc838-3216-463/providers/Microsoft.ApiManagement/service/de510650-76/tenant/7c2383df-d"; + Requests[3057] = new DefaultHttpContext(); + Requests[3057].RequestServices = CreateServices(); + Requests[3057].Request.Method = "PATCH"; + Requests[3057].Request.Path = "/subscriptions/27b48a68-af45-/resourceGroups/f27bd94b-98cb-4e9/providers/Microsoft.ApiManagement/service/76736659-7f/tenant/eb1071bb-2"; + Requests[3058] = new DefaultHttpContext(); + Requests[3058].RequestServices = CreateServices(); + Requests[3058].Request.Method = "DELETE"; + Requests[3058].Request.Path = "/subscriptions/d2655b8d-af7d-/resourceGroups/c64109c3-6e09-402/providers/Microsoft.ApiManagement/service/83f23fd7-f3/users/dcf1b"; + Requests[3059] = new DefaultHttpContext(); + Requests[3059].RequestServices = CreateServices(); + Requests[3059].Request.Method = "PATCH"; + Requests[3059].Request.Path = "/subscriptions/5ac7c366-b196-/resourceGroups/5dad4c87-0076-4d6/providers/Microsoft.ApiManagement/service/48870894-84/users/ae4d5"; + Requests[3060] = new DefaultHttpContext(); + Requests[3060].RequestServices = CreateServices(); + Requests[3060].Request.Method = "HEAD"; + Requests[3060].Request.Path = "/subscriptions/02b665f4-043f-/resourceGroups/ac4f4432-9318-46d/providers/Microsoft.ApiManagement/service/a5e00d7d-4f/users/796ef"; + Requests[3061] = new DefaultHttpContext(); + Requests[3061].RequestServices = CreateServices(); + Requests[3061].Request.Method = "GET"; + Requests[3061].Request.Path = "/subscriptions/4c69db2a-6544-/resourceGroups/66f7b926-1af3-40d/providers/Microsoft.ApiManagement/service/7906d1b4-37/users/7ee78"; + Requests[3062] = new DefaultHttpContext(); + Requests[3062].RequestServices = CreateServices(); + Requests[3062].Request.Method = "PUT"; + Requests[3062].Request.Path = "/subscriptions/1fb66107-105e-/resourceGroups/badfa65f-a39e-44d/providers/Microsoft.ApiManagement/service/b97d5a82-e2/users/4a922"; + Requests[3063] = new DefaultHttpContext(); + Requests[3063].RequestServices = CreateServices(); + Requests[3063].Request.Method = "DELETE"; + Requests[3063].Request.Path = "/subscriptions/8c0d13b7-c022-/resourceGroups/57f8946f-ceba-48b/providers/Microsoft.Automation/automationAccounts/fe2fa66e-9fe9-4698-aa/certificates/ed86f1eb-8d2b-4"; + Requests[3064] = new DefaultHttpContext(); + Requests[3064].RequestServices = CreateServices(); + Requests[3064].Request.Method = "GET"; + Requests[3064].Request.Path = "/subscriptions/8152a45d-a250-/resourceGroups/63910a64-cb4b-4a6/providers/Microsoft.Automation/automationAccounts/3ecfedb6-054a-43b5-88/certificates/9bcb4420-8a76-4"; + Requests[3065] = new DefaultHttpContext(); + Requests[3065].RequestServices = CreateServices(); + Requests[3065].Request.Method = "PUT"; + Requests[3065].Request.Path = "/subscriptions/73a5335f-8199-/resourceGroups/301d2518-5376-441/providers/Microsoft.Automation/automationAccounts/a63f6562-a4d8-4364-91/certificates/b2767ea5-7702-4"; + Requests[3066] = new DefaultHttpContext(); + Requests[3066].RequestServices = CreateServices(); + Requests[3066].Request.Method = "PATCH"; + Requests[3066].Request.Path = "/subscriptions/02d8cd9f-24f0-/resourceGroups/da387c13-f6de-4ed/providers/Microsoft.Automation/automationAccounts/ab0fa6dc-15f6-42d3-8b/certificates/f2a4b410-f1ac-4"; + Requests[3067] = new DefaultHttpContext(); + Requests[3067].RequestServices = CreateServices(); + Requests[3067].Request.Method = "PUT"; + Requests[3067].Request.Path = "/subscriptions/68e89e34-fb45-/resourceGroups/172577b8-9e00-415/providers/Microsoft.Automation/automationAccounts/642efcd3-9e3c-4425-8c/compilationjobs/270bd442-1947-45df"; + Requests[3068] = new DefaultHttpContext(); + Requests[3068].RequestServices = CreateServices(); + Requests[3068].Request.Method = "GET"; + Requests[3068].Request.Path = "/subscriptions/c59bfdc0-ebba-/resourceGroups/f1609978-7b69-47f/providers/Microsoft.Automation/automationAccounts/acffc8a2-ab80-4acc-9c/compilationjobs/2c8717b3-0ea1-4d99"; + Requests[3069] = new DefaultHttpContext(); + Requests[3069].RequestServices = CreateServices(); + Requests[3069].Request.Method = "DELETE"; + Requests[3069].Request.Path = "/subscriptions/2cb06ebe-58c5-/resourceGroups/cb8af96c-5981-444/providers/Microsoft.Automation/automationAccounts/b99af91d-ddc9-4320-b0/configurations/5db6a334-ab69-4f6"; + Requests[3070] = new DefaultHttpContext(); + Requests[3070].RequestServices = CreateServices(); + Requests[3070].Request.Method = "GET"; + Requests[3070].Request.Path = "/subscriptions/3b8888e0-8e6f-/resourceGroups/0ed30bcc-e5fa-496/providers/Microsoft.Automation/automationAccounts/4f536c8c-4ad8-4f52-96/configurations/0de0ae69-9d76-4e3"; + Requests[3071] = new DefaultHttpContext(); + Requests[3071].RequestServices = CreateServices(); + Requests[3071].Request.Method = "PUT"; + Requests[3071].Request.Path = "/subscriptions/681f90b4-0f8f-/resourceGroups/8c6108f5-c8ce-4ed/providers/Microsoft.Automation/automationAccounts/aa5e8e6b-f004-45f5-8a/configurations/75ba48a3-41ee-44f"; + Requests[3072] = new DefaultHttpContext(); + Requests[3072].RequestServices = CreateServices(); + Requests[3072].Request.Method = "PATCH"; + Requests[3072].Request.Path = "/subscriptions/d51c0a84-19e2-/resourceGroups/9cb3373b-4b89-4cd/providers/Microsoft.Automation/automationAccounts/1d5eb55b-1162-4e41-8f/configurations/f5a6a3f8-bf32-4a6"; + Requests[3073] = new DefaultHttpContext(); + Requests[3073].RequestServices = CreateServices(); + Requests[3073].Request.Method = "GET"; + Requests[3073].Request.Path = "/subscriptions/8e9c65da-b94c-/resourceGroups/278242b7-b858-4b6/providers/Microsoft.Automation/automationAccounts/4c6dbcb9-bb7e-4407-8f/connections/b37a7756-7679-"; + Requests[3074] = new DefaultHttpContext(); + Requests[3074].RequestServices = CreateServices(); + Requests[3074].Request.Method = "PATCH"; + Requests[3074].Request.Path = "/subscriptions/9cddf19b-ce2e-/resourceGroups/c0e918ac-33fe-4fd/providers/Microsoft.Automation/automationAccounts/d4a7c01f-0e1f-485e-92/connections/9f422a41-8812-"; + Requests[3075] = new DefaultHttpContext(); + Requests[3075].RequestServices = CreateServices(); + Requests[3075].Request.Method = "PUT"; + Requests[3075].Request.Path = "/subscriptions/3640a0ec-ee81-/resourceGroups/6ffc2f76-05af-4bc/providers/Microsoft.Automation/automationAccounts/e0700816-e65c-4b06-a4/connections/5d54bdaf-2f98-"; + Requests[3076] = new DefaultHttpContext(); + Requests[3076].RequestServices = CreateServices(); + Requests[3076].Request.Method = "DELETE"; + Requests[3076].Request.Path = "/subscriptions/f2d986eb-98ef-/resourceGroups/136bcbdf-ff5e-496/providers/Microsoft.Automation/automationAccounts/a9e96bb8-f355-4ee4-ac/connections/bec749aa-4007-"; + Requests[3077] = new DefaultHttpContext(); + Requests[3077].RequestServices = CreateServices(); + Requests[3077].Request.Method = "PUT"; + Requests[3077].Request.Path = "/subscriptions/ef4b1150-8f67-/resourceGroups/a3a1c5a0-85de-467/providers/Microsoft.Automation/automationAccounts/44dc038a-b6df-410b-ab/connectionTypes/b869a637-655c-42b8"; + Requests[3078] = new DefaultHttpContext(); + Requests[3078].RequestServices = CreateServices(); + Requests[3078].Request.Method = "DELETE"; + Requests[3078].Request.Path = "/subscriptions/2830d4b5-43c7-/resourceGroups/1436189b-9622-4a8/providers/Microsoft.Automation/automationAccounts/a6cb4619-b8ff-4dd8-a4/connectionTypes/ab92c304-52a6-457a"; + Requests[3079] = new DefaultHttpContext(); + Requests[3079].RequestServices = CreateServices(); + Requests[3079].Request.Method = "GET"; + Requests[3079].Request.Path = "/subscriptions/52945d57-79af-/resourceGroups/57f823d1-8103-446/providers/Microsoft.Automation/automationAccounts/8937837c-fc70-4391-bf/connectionTypes/b5e631c2-868d-496e"; + Requests[3080] = new DefaultHttpContext(); + Requests[3080].RequestServices = CreateServices(); + Requests[3080].Request.Method = "PATCH"; + Requests[3080].Request.Path = "/subscriptions/17dc841a-be8c-/resourceGroups/04b78a0d-122a-454/providers/Microsoft.Automation/automationAccounts/fda6fe88-1e3b-46eb-94/credentials/37f0b4bf-ed3a-"; + Requests[3081] = new DefaultHttpContext(); + Requests[3081].RequestServices = CreateServices(); + Requests[3081].Request.Method = "GET"; + Requests[3081].Request.Path = "/subscriptions/5db38561-9ed9-/resourceGroups/73c5ac4e-0bcd-4b5/providers/Microsoft.Automation/automationAccounts/03827224-6d02-4eb2-b4/credentials/2fbd5336-d28b-"; + Requests[3082] = new DefaultHttpContext(); + Requests[3082].RequestServices = CreateServices(); + Requests[3082].Request.Method = "DELETE"; + Requests[3082].Request.Path = "/subscriptions/2e6c5512-45a5-/resourceGroups/8a1d85fa-2839-4cc/providers/Microsoft.Automation/automationAccounts/22efd9c6-2727-4ac3-97/credentials/acc194d5-d1fd-"; + Requests[3083] = new DefaultHttpContext(); + Requests[3083].RequestServices = CreateServices(); + Requests[3083].Request.Method = "PUT"; + Requests[3083].Request.Path = "/subscriptions/10108e3c-4785-/resourceGroups/0d83c041-f8ae-4e8/providers/Microsoft.Automation/automationAccounts/27e82ebf-3acd-4b5b-a5/credentials/23b4db2a-c04e-"; + Requests[3084] = new DefaultHttpContext(); + Requests[3084].RequestServices = CreateServices(); + Requests[3084].Request.Method = "PATCH"; + Requests[3084].Request.Path = "/subscriptions/5e93d8d0-5990-/resourceGroups/1eeacc7b-13f7-457/providers/Microsoft.Automation/automationAccounts/71ed6cab-c47f-4158-85/hybridRunbookWorkerGroups/4ee5a92f-d8d6-47b5-a073-c8bb"; + Requests[3085] = new DefaultHttpContext(); + Requests[3085].RequestServices = CreateServices(); + Requests[3085].Request.Method = "GET"; + Requests[3085].Request.Path = "/subscriptions/511fccf2-6fdf-/resourceGroups/a36015fc-d5eb-4e2/providers/Microsoft.Automation/automationAccounts/bd7f0991-d81f-4a22-85/hybridRunbookWorkerGroups/10e96e01-810f-4818-8e6c-5494"; + Requests[3086] = new DefaultHttpContext(); + Requests[3086].RequestServices = CreateServices(); + Requests[3086].Request.Method = "DELETE"; + Requests[3086].Request.Path = "/subscriptions/6bb121be-1e9d-/resourceGroups/454bfbde-9643-44d/providers/Microsoft.Automation/automationAccounts/0fd59c6e-5552-47c0-96/hybridRunbookWorkerGroups/84a96805-e304-4620-a42f-6686"; + Requests[3087] = new DefaultHttpContext(); + Requests[3087].RequestServices = CreateServices(); + Requests[3087].Request.Method = "PUT"; + Requests[3087].Request.Path = "/subscriptions/41e9b8ca-36a5-/resourceGroups/3c8e43f4-7e38-468/providers/Microsoft.Automation/automationAccounts/4814cf86-556a-4d15-af/jobs/1213d"; + Requests[3088] = new DefaultHttpContext(); + Requests[3088].RequestServices = CreateServices(); + Requests[3088].Request.Method = "GET"; + Requests[3088].Request.Path = "/subscriptions/c6704bda-0e46-/resourceGroups/5b7ddbd5-6860-4f1/providers/Microsoft.Automation/automationAccounts/eb5b7646-0f8c-4e2e-8a/jobs/abf5e"; + Requests[3089] = new DefaultHttpContext(); + Requests[3089].RequestServices = CreateServices(); + Requests[3089].Request.Method = "GET"; + Requests[3089].Request.Path = "/subscriptions/2fe2afd1-21ed-/resourceGroups/b0e436e0-017d-411/providers/Microsoft.Automation/automationAccounts/f2896e66-f301-424d-93/jobSchedules/1299bd09-3b1d"; + Requests[3090] = new DefaultHttpContext(); + Requests[3090].RequestServices = CreateServices(); + Requests[3090].Request.Method = "PUT"; + Requests[3090].Request.Path = "/subscriptions/7eed7f20-7fea-/resourceGroups/6631fc2d-23d5-4a4/providers/Microsoft.Automation/automationAccounts/f4c2db95-5518-47d3-a3/jobSchedules/54fc8eec-9b54"; + Requests[3091] = new DefaultHttpContext(); + Requests[3091].RequestServices = CreateServices(); + Requests[3091].Request.Method = "DELETE"; + Requests[3091].Request.Path = "/subscriptions/ec97f276-334a-/resourceGroups/077acbe0-f388-456/providers/Microsoft.Automation/automationAccounts/4a7a4404-5b7f-44a6-a6/jobSchedules/6dcd12c4-a6c2"; + Requests[3092] = new DefaultHttpContext(); + Requests[3092].RequestServices = CreateServices(); + Requests[3092].Request.Method = "GET"; + Requests[3092].Request.Path = "/subscriptions/04df760b-ed88-/resourceGroups/f23b592e-f395-459/providers/Microsoft.Automation/automationAccounts/87043ac9-6085-4758-97/modules/215ed900-4"; + Requests[3093] = new DefaultHttpContext(); + Requests[3093].RequestServices = CreateServices(); + Requests[3093].Request.Method = "PUT"; + Requests[3093].Request.Path = "/subscriptions/dc57c9d8-15f1-/resourceGroups/a26b4081-5618-4fa/providers/Microsoft.Automation/automationAccounts/3e652b9e-75a7-4c91-93/modules/fb4857dc-5"; + Requests[3094] = new DefaultHttpContext(); + Requests[3094].RequestServices = CreateServices(); + Requests[3094].Request.Method = "DELETE"; + Requests[3094].Request.Path = "/subscriptions/cc655fc2-dc05-/resourceGroups/714a77de-22a7-4ec/providers/Microsoft.Automation/automationAccounts/7ea09f67-6aa3-4491-99/modules/3aad3058-f"; + Requests[3095] = new DefaultHttpContext(); + Requests[3095].RequestServices = CreateServices(); + Requests[3095].Request.Method = "PATCH"; + Requests[3095].Request.Path = "/subscriptions/2673d7ca-7a99-/resourceGroups/73d718a5-505b-4dc/providers/Microsoft.Automation/automationAccounts/ef10561e-54d4-4d90-a3/modules/d61bb2f9-5"; + Requests[3096] = new DefaultHttpContext(); + Requests[3096].RequestServices = CreateServices(); + Requests[3096].Request.Method = "GET"; + Requests[3096].Request.Path = "/subscriptions/12d46d7b-8338-/resourceGroups/bb435d9e-7c02-46a/providers/Microsoft.Automation/automationAccounts/ef7e2063-4aae-4995-8c/nodeConfigurations/e71abf42-1bc1-4647-b7"; + Requests[3097] = new DefaultHttpContext(); + Requests[3097].RequestServices = CreateServices(); + Requests[3097].Request.Method = "DELETE"; + Requests[3097].Request.Path = "/subscriptions/956c0d3a-5265-/resourceGroups/4356ab5b-bf1d-46d/providers/Microsoft.Automation/automationAccounts/bbec7674-9d88-4de8-9b/nodeConfigurations/43502ffb-2f57-4e14-84"; + Requests[3098] = new DefaultHttpContext(); + Requests[3098].RequestServices = CreateServices(); + Requests[3098].Request.Method = "PUT"; + Requests[3098].Request.Path = "/subscriptions/c85ff2e1-60b6-/resourceGroups/8b20acac-a692-4e2/providers/Microsoft.Automation/automationAccounts/87ab0df6-4245-478c-88/nodeConfigurations/4006cbae-0af2-4c17-b9"; + Requests[3099] = new DefaultHttpContext(); + Requests[3099].RequestServices = CreateServices(); + Requests[3099].Request.Method = "GET"; + Requests[3099].Request.Path = "/subscriptions/918b34b2-f322-/resourceGroups/27831ba5-0a31-464/providers/Microsoft.Automation/automationAccounts/d2afd480-50f9-4d0f-a9/nodecounts/f6dd0fdc-"; + Requests[3100] = new DefaultHttpContext(); + Requests[3100].RequestServices = CreateServices(); + Requests[3100].Request.Method = "GET"; + Requests[3100].Request.Path = "/subscriptions/1f50a44e-5da9-/resourceGroups/3254252c-8562-4d8/providers/Microsoft.Automation/automationAccounts/61331d79-a3c2-4371-8f/nodes/865083"; + Requests[3101] = new DefaultHttpContext(); + Requests[3101].RequestServices = CreateServices(); + Requests[3101].Request.Method = "DELETE"; + Requests[3101].Request.Path = "/subscriptions/f759d3bd-0cca-/resourceGroups/4af3e660-fb99-4a5/providers/Microsoft.Automation/automationAccounts/6f489ce6-5325-4e95-b1/nodes/3966a3"; + Requests[3102] = new DefaultHttpContext(); + Requests[3102].RequestServices = CreateServices(); + Requests[3102].Request.Method = "PATCH"; + Requests[3102].Request.Path = "/subscriptions/407b70e7-0f10-/resourceGroups/0673cb13-3e62-431/providers/Microsoft.Automation/automationAccounts/386eb18b-b83c-4ccf-85/nodes/449ecb"; + Requests[3103] = new DefaultHttpContext(); + Requests[3103].RequestServices = CreateServices(); + Requests[3103].Request.Method = "GET"; + Requests[3103].Request.Path = "/subscriptions/2e36437c-03cc-/resourceGroups/8934cfd5-d833-477/providers/Microsoft.Automation/automationAccounts/2b6fc51a-6ea6-402b-93/runbooks/0b567141-c5"; + Requests[3104] = new DefaultHttpContext(); + Requests[3104].RequestServices = CreateServices(); + Requests[3104].Request.Method = "PUT"; + Requests[3104].Request.Path = "/subscriptions/e8870771-5980-/resourceGroups/32321226-d569-4f1/providers/Microsoft.Automation/automationAccounts/96044a77-adf7-41b4-be/runbooks/a749d577-c4"; + Requests[3105] = new DefaultHttpContext(); + Requests[3105].RequestServices = CreateServices(); + Requests[3105].Request.Method = "DELETE"; + Requests[3105].Request.Path = "/subscriptions/768220c0-f516-/resourceGroups/0d82757a-214e-422/providers/Microsoft.Automation/automationAccounts/934dd07b-7829-4353-b7/runbooks/d8a2867d-a4"; + Requests[3106] = new DefaultHttpContext(); + Requests[3106].RequestServices = CreateServices(); + Requests[3106].Request.Method = "PATCH"; + Requests[3106].Request.Path = "/subscriptions/e92e3ad5-e481-/resourceGroups/b75cf3c9-9a84-438/providers/Microsoft.Automation/automationAccounts/e1821107-2d99-4cfc-91/runbooks/7542c1b2-c8"; + Requests[3107] = new DefaultHttpContext(); + Requests[3107].RequestServices = CreateServices(); + Requests[3107].Request.Method = "DELETE"; + Requests[3107].Request.Path = "/subscriptions/662c8aaa-c711-/resourceGroups/f4f962fc-1b5c-454/providers/Microsoft.Automation/automationAccounts/3cee5970-1827-43ec-a8/schedules/ce903436-397"; + Requests[3108] = new DefaultHttpContext(); + Requests[3108].RequestServices = CreateServices(); + Requests[3108].Request.Method = "GET"; + Requests[3108].Request.Path = "/subscriptions/5f7ba516-ff6e-/resourceGroups/362ced5e-60c9-4e0/providers/Microsoft.Automation/automationAccounts/37390b6b-ac36-446a-a3/schedules/81db88eb-ed9"; + Requests[3109] = new DefaultHttpContext(); + Requests[3109].RequestServices = CreateServices(); + Requests[3109].Request.Method = "PATCH"; + Requests[3109].Request.Path = "/subscriptions/d5de57d3-7e31-/resourceGroups/ea67ef7c-5448-4ec/providers/Microsoft.Automation/automationAccounts/9c849fbf-798c-4a71-98/schedules/490d4f7d-b55"; + Requests[3110] = new DefaultHttpContext(); + Requests[3110].RequestServices = CreateServices(); + Requests[3110].Request.Method = "PUT"; + Requests[3110].Request.Path = "/subscriptions/672e2a41-36cc-/resourceGroups/7886342b-6483-441/providers/Microsoft.Automation/automationAccounts/bce3f555-db80-48f8-a2/schedules/dec07a3e-5a5"; + Requests[3111] = new DefaultHttpContext(); + Requests[3111].RequestServices = CreateServices(); + Requests[3111].Request.Method = "GET"; + Requests[3111].Request.Path = "/subscriptions/d1c46c03-8e59-/resourceGroups/9066218d-e095-4d9/providers/Microsoft.Automation/automationAccounts/a2d1c680-6b91-4b71-9f/softwareUpdateConfigurationMachineRuns/5e1e04fe-b89a-4de3-9bb2-ddcd3add11c1"; + Requests[3112] = new DefaultHttpContext(); + Requests[3112].RequestServices = CreateServices(); + Requests[3112].Request.Method = "GET"; + Requests[3112].Request.Path = "/subscriptions/b2ff3236-a54d-/resourceGroups/9a35ad8f-b314-400/providers/Microsoft.Automation/automationAccounts/a73381d5-5657-4c70-89/softwareUpdateConfigurationRuns/5feccf4c-4e47-4dca-8f92-a3cd4bfd"; + Requests[3113] = new DefaultHttpContext(); + Requests[3113].RequestServices = CreateServices(); + Requests[3113].Request.Method = "PUT"; + Requests[3113].Request.Path = "/subscriptions/d2576d23-7684-/resourceGroups/9b70d008-4443-49c/providers/Microsoft.Automation/automationAccounts/bf124235-f4ad-429d-85/softwareUpdateConfigurations/0dbcb7a0-5ee1-4396-90ed-7c0c53e"; + Requests[3114] = new DefaultHttpContext(); + Requests[3114].RequestServices = CreateServices(); + Requests[3114].Request.Method = "GET"; + Requests[3114].Request.Path = "/subscriptions/e371d4ed-0407-/resourceGroups/f2ac3219-413e-4a0/providers/Microsoft.Automation/automationAccounts/906fe21a-2b81-45e8-a8/softwareUpdateConfigurations/dc07f766-504b-455e-87ef-2a10e21"; + Requests[3115] = new DefaultHttpContext(); + Requests[3115].RequestServices = CreateServices(); + Requests[3115].Request.Method = "DELETE"; + Requests[3115].Request.Path = "/subscriptions/78008973-60a6-/resourceGroups/8070be3c-6e09-4e7/providers/Microsoft.Automation/automationAccounts/004670d8-e030-41d7-8c/softwareUpdateConfigurations/5b9e8b36-7704-46ec-ae0e-81f2132"; + Requests[3116] = new DefaultHttpContext(); + Requests[3116].RequestServices = CreateServices(); + Requests[3116].Request.Method = "GET"; + Requests[3116].Request.Path = "/subscriptions/68c44ac9-e2cb-/resourceGroups/b52aed6b-a24e-446/providers/Microsoft.Automation/automationAccounts/2b005435-72e8-443d-93/sourceControls/f46e6fdc-80e8-409"; + Requests[3117] = new DefaultHttpContext(); + Requests[3117].RequestServices = CreateServices(); + Requests[3117].Request.Method = "PUT"; + Requests[3117].Request.Path = "/subscriptions/7b7bae8a-86a0-/resourceGroups/42f361e9-deac-490/providers/Microsoft.Automation/automationAccounts/3d645f24-27af-471b-89/sourceControls/3b886788-93ba-451"; + Requests[3118] = new DefaultHttpContext(); + Requests[3118].RequestServices = CreateServices(); + Requests[3118].Request.Method = "DELETE"; + Requests[3118].Request.Path = "/subscriptions/a386974c-6868-/resourceGroups/524a763d-52ea-4f3/providers/Microsoft.Automation/automationAccounts/855a8572-9497-4b40-be/sourceControls/3d9ce267-b655-459"; + Requests[3119] = new DefaultHttpContext(); + Requests[3119].RequestServices = CreateServices(); + Requests[3119].Request.Method = "PATCH"; + Requests[3119].Request.Path = "/subscriptions/3e07c5f7-0df8-/resourceGroups/1a8cae5c-8012-47f/providers/Microsoft.Automation/automationAccounts/80e79926-8e2b-404b-a3/sourceControls/38269635-94a1-429"; + Requests[3120] = new DefaultHttpContext(); + Requests[3120].RequestServices = CreateServices(); + Requests[3120].Request.Method = "PATCH"; + Requests[3120].Request.Path = "/subscriptions/0abcf6e8-b457-/resourceGroups/075e721d-a352-4da/providers/Microsoft.Automation/automationAccounts/383dd9a9-bd1f-4ca3-8d/variables/8c887415-3f0"; + Requests[3121] = new DefaultHttpContext(); + Requests[3121].RequestServices = CreateServices(); + Requests[3121].Request.Method = "GET"; + Requests[3121].Request.Path = "/subscriptions/289a4fde-dc38-/resourceGroups/32cf5c2c-ed3b-4d2/providers/Microsoft.Automation/automationAccounts/0d978534-1ae6-4d96-a0/variables/53fbe406-6ca"; + Requests[3122] = new DefaultHttpContext(); + Requests[3122].RequestServices = CreateServices(); + Requests[3122].Request.Method = "PUT"; + Requests[3122].Request.Path = "/subscriptions/a9bfa23c-7b5a-/resourceGroups/d06b9211-74b8-4a2/providers/Microsoft.Automation/automationAccounts/8c063c48-8084-4df8-83/variables/27474804-1ef"; + Requests[3123] = new DefaultHttpContext(); + Requests[3123].RequestServices = CreateServices(); + Requests[3123].Request.Method = "DELETE"; + Requests[3123].Request.Path = "/subscriptions/56a24df0-8df6-/resourceGroups/cc4b5169-bc8c-450/providers/Microsoft.Automation/automationAccounts/7c012562-768d-41e1-bc/variables/868e2aab-fdf"; + Requests[3124] = new DefaultHttpContext(); + Requests[3124].RequestServices = CreateServices(); + Requests[3124].Request.Method = "DELETE"; + Requests[3124].Request.Path = "/subscriptions/6f637cd0-572b-/resourceGroups/3338dabd-4169-42c/providers/Microsoft.Automation/automationAccounts/67b69c77-f5b3-44f8-ad/watchers/51988d9d-e0"; + Requests[3125] = new DefaultHttpContext(); + Requests[3125].RequestServices = CreateServices(); + Requests[3125].Request.Method = "PATCH"; + Requests[3125].Request.Path = "/subscriptions/4d7b60ee-dc5f-/resourceGroups/b074e6cc-c7a1-4a8/providers/Microsoft.Automation/automationAccounts/bf295cbd-e59f-4469-ac/watchers/14a75a19-a4"; + Requests[3126] = new DefaultHttpContext(); + Requests[3126].RequestServices = CreateServices(); + Requests[3126].Request.Method = "GET"; + Requests[3126].Request.Path = "/subscriptions/5e178611-abff-/resourceGroups/4ae26e45-bead-4c9/providers/Microsoft.Automation/automationAccounts/b430fb95-a3d7-417b-86/watchers/bdf42300-fd"; + Requests[3127] = new DefaultHttpContext(); + Requests[3127].RequestServices = CreateServices(); + Requests[3127].Request.Method = "PUT"; + Requests[3127].Request.Path = "/subscriptions/c3bef65b-b8dd-/resourceGroups/53f40dab-c574-402/providers/Microsoft.Automation/automationAccounts/4a1d8ee6-15d8-43e4-96/watchers/0e006427-9c"; + Requests[3128] = new DefaultHttpContext(); + Requests[3128].RequestServices = CreateServices(); + Requests[3128].Request.Method = "PUT"; + Requests[3128].Request.Path = "/subscriptions/24b3b49b-2ff6-/resourceGroups/948e4c2e-e339-422/providers/Microsoft.Automation/automationAccounts/a73c7828-bff6-46cf-ae/webhooks/5de7698b-a4"; + Requests[3129] = new DefaultHttpContext(); + Requests[3129].RequestServices = CreateServices(); + Requests[3129].Request.Method = "GET"; + Requests[3129].Request.Path = "/subscriptions/2bb733b9-1757-/resourceGroups/b04469d0-99fa-46f/providers/Microsoft.Automation/automationAccounts/ed6f8963-eee8-47f9-b0/webhooks/552a63bb-2d"; + Requests[3130] = new DefaultHttpContext(); + Requests[3130].RequestServices = CreateServices(); + Requests[3130].Request.Method = "PATCH"; + Requests[3130].Request.Path = "/subscriptions/51d79b46-ebfb-/resourceGroups/5d16214e-dc82-46a/providers/Microsoft.Automation/automationAccounts/efd88a57-e14f-494d-85/webhooks/821938d5-07"; + Requests[3131] = new DefaultHttpContext(); + Requests[3131].RequestServices = CreateServices(); + Requests[3131].Request.Method = "DELETE"; + Requests[3131].Request.Path = "/subscriptions/1795ab1e-8ce3-/resourceGroups/1bbc24f7-baeb-452/providers/Microsoft.Automation/automationAccounts/430b675e-2ad6-4366-84/webhooks/6bf54bd8-ff"; + Requests[3132] = new DefaultHttpContext(); + Requests[3132].RequestServices = CreateServices(); + Requests[3132].Request.Method = "GET"; + Requests[3132].Request.Path = "/subscriptions/0c702b30-1260-/resourcegroups/b47820a3-dd7e-498/providers/Microsoft.Backup.Admin/backupLocations/5928b4e9/backups/407a9c"; + Requests[3133] = new DefaultHttpContext(); + Requests[3133].RequestServices = CreateServices(); + Requests[3133].Request.Method = "PATCH"; + Requests[3133].Request.Path = "/subscriptions/182c3197-5f8a-/resourceGroups/44d4f7cb-7f8b-43b/providers/Microsoft.Batch/batchAccounts/3ce6b72c-17/applications/0c7e9027-6837"; + Requests[3134] = new DefaultHttpContext(); + Requests[3134].RequestServices = CreateServices(); + Requests[3134].Request.Method = "GET"; + Requests[3134].Request.Path = "/subscriptions/94021efb-5700-/resourceGroups/cf0c8e66-61eb-417/providers/Microsoft.Batch/batchAccounts/10c0ece2-a3/applications/c0202748-668e"; + Requests[3135] = new DefaultHttpContext(); + Requests[3135].RequestServices = CreateServices(); + Requests[3135].Request.Method = "DELETE"; + Requests[3135].Request.Path = "/subscriptions/337b6e82-f2ab-/resourceGroups/408a2b37-1654-45d/providers/Microsoft.Batch/batchAccounts/e6465821-49/applications/9f9876e4-0530"; + Requests[3136] = new DefaultHttpContext(); + Requests[3136].RequestServices = CreateServices(); + Requests[3136].Request.Method = "PUT"; + Requests[3136].Request.Path = "/subscriptions/00bd06d4-2397-/resourceGroups/befe7653-79be-49b/providers/Microsoft.Batch/batchAccounts/37fcb2f1-84/applications/b74d56f5-fae8"; + Requests[3137] = new DefaultHttpContext(); + Requests[3137].RequestServices = CreateServices(); + Requests[3137].Request.Method = "PATCH"; + Requests[3137].Request.Path = "/subscriptions/5544659b-7bdd-/resourceGroups/66002cc3-632d-4df/providers/Microsoft.Batch/batchAccounts/8857ce97-57/certificates/ed6e3129-a553-4"; + Requests[3138] = new DefaultHttpContext(); + Requests[3138].RequestServices = CreateServices(); + Requests[3138].Request.Method = "GET"; + Requests[3138].Request.Path = "/subscriptions/5ec64fcc-8707-/resourceGroups/e2a01c92-cb99-41b/providers/Microsoft.Batch/batchAccounts/5d34bd8d-ed/certificates/8f3b3767-1381-4"; + Requests[3139] = new DefaultHttpContext(); + Requests[3139].RequestServices = CreateServices(); + Requests[3139].Request.Method = "DELETE"; + Requests[3139].Request.Path = "/subscriptions/b599e7f4-52e4-/resourceGroups/7bfce9e0-f565-481/providers/Microsoft.Batch/batchAccounts/66a2a687-a9/certificates/54962a39-6720-4"; + Requests[3140] = new DefaultHttpContext(); + Requests[3140].RequestServices = CreateServices(); + Requests[3140].Request.Method = "PUT"; + Requests[3140].Request.Path = "/subscriptions/9518a45c-1d83-/resourceGroups/5d02fde2-c8f0-475/providers/Microsoft.Batch/batchAccounts/aa08d062-d5/certificates/5255853e-d755-4"; + Requests[3141] = new DefaultHttpContext(); + Requests[3141].RequestServices = CreateServices(); + Requests[3141].Request.Method = "GET"; + Requests[3141].Request.Path = "/subscriptions/19a52de0-ccda-/resourceGroups/6e3ea7c2-240b-4b5/providers/Microsoft.Batch/batchAccounts/a0b51cef-59/pools/56708831"; + Requests[3142] = new DefaultHttpContext(); + Requests[3142].RequestServices = CreateServices(); + Requests[3142].Request.Method = "PATCH"; + Requests[3142].Request.Path = "/subscriptions/d0fe75be-e804-/resourceGroups/a6ae43ab-d210-4c9/providers/Microsoft.Batch/batchAccounts/41032ccf-f3/pools/2f23003d"; + Requests[3143] = new DefaultHttpContext(); + Requests[3143].RequestServices = CreateServices(); + Requests[3143].Request.Method = "PUT"; + Requests[3143].Request.Path = "/subscriptions/ca128058-5c82-/resourceGroups/2e227078-6c63-4be/providers/Microsoft.Batch/batchAccounts/da66edfd-14/pools/2b5ba1c6"; + Requests[3144] = new DefaultHttpContext(); + Requests[3144].RequestServices = CreateServices(); + Requests[3144].Request.Method = "DELETE"; + Requests[3144].Request.Path = "/subscriptions/49ba0e2a-44c0-/resourceGroups/8cdaf807-9b83-488/providers/Microsoft.Batch/batchAccounts/e2ff9288-c6/pools/dacbad26"; + Requests[3145] = new DefaultHttpContext(); + Requests[3145].RequestServices = CreateServices(); + Requests[3145].Request.Method = "PUT"; + Requests[3145].Request.Path = "/subscriptions/f392b1b6-9634-/resourceGroups/9ae9abbc-21fc-445/providers/Microsoft.BatchAI/workspaces/84244b11-d893/clusters/826d2724-8b"; + Requests[3146] = new DefaultHttpContext(); + Requests[3146].RequestServices = CreateServices(); + Requests[3146].Request.Method = "PATCH"; + Requests[3146].Request.Path = "/subscriptions/c0e1d9a8-798e-/resourceGroups/9d4f9e4a-3872-455/providers/Microsoft.BatchAI/workspaces/fc41be3f-aa03/clusters/4fef7be1-e2"; + Requests[3147] = new DefaultHttpContext(); + Requests[3147].RequestServices = CreateServices(); + Requests[3147].Request.Method = "GET"; + Requests[3147].Request.Path = "/subscriptions/0e518bda-21a0-/resourceGroups/6e8c8094-c8d2-436/providers/Microsoft.BatchAI/workspaces/e8dc0e88-3452/clusters/9dc0efe9-3d"; + Requests[3148] = new DefaultHttpContext(); + Requests[3148].RequestServices = CreateServices(); + Requests[3148].Request.Method = "DELETE"; + Requests[3148].Request.Path = "/subscriptions/905e244e-3b85-/resourceGroups/4ce38365-5ecb-457/providers/Microsoft.BatchAI/workspaces/82ffdc24-24d3/clusters/344de303-3a"; + Requests[3149] = new DefaultHttpContext(); + Requests[3149].RequestServices = CreateServices(); + Requests[3149].Request.Method = "GET"; + Requests[3149].Request.Path = "/subscriptions/aa1a09f4-4b5d-/resourceGroups/27f7d1cb-4c98-4f3/providers/Microsoft.BatchAI/workspaces/c4479347-5f53/experiments/a54f8402-90a0-"; + Requests[3150] = new DefaultHttpContext(); + Requests[3150].RequestServices = CreateServices(); + Requests[3150].Request.Method = "DELETE"; + Requests[3150].Request.Path = "/subscriptions/c9b6fece-b87d-/resourceGroups/b6955b0e-ece6-439/providers/Microsoft.BatchAI/workspaces/5dd5949b-683f/experiments/32c82ae9-bf1a-"; + Requests[3151] = new DefaultHttpContext(); + Requests[3151].RequestServices = CreateServices(); + Requests[3151].Request.Method = "PUT"; + Requests[3151].Request.Path = "/subscriptions/7f4254ed-5f9e-/resourceGroups/29b26f38-2267-493/providers/Microsoft.BatchAI/workspaces/592378ae-7ba0/experiments/f272df06-6350-"; + Requests[3152] = new DefaultHttpContext(); + Requests[3152].RequestServices = CreateServices(); + Requests[3152].Request.Method = "PUT"; + Requests[3152].Request.Path = "/subscriptions/b43349f3-c1f0-/resourceGroups/ed7ea0f7-2658-435/providers/Microsoft.BatchAI/workspaces/6255a4a0-c12a/fileServers/45032f20-960d-"; + Requests[3153] = new DefaultHttpContext(); + Requests[3153].RequestServices = CreateServices(); + Requests[3153].Request.Method = "GET"; + Requests[3153].Request.Path = "/subscriptions/7ba9320e-7901-/resourceGroups/68824242-f406-4e9/providers/Microsoft.BatchAI/workspaces/a9445a32-4d58/fileServers/ed3b6f6c-475e-"; + Requests[3154] = new DefaultHttpContext(); + Requests[3154].RequestServices = CreateServices(); + Requests[3154].Request.Method = "DELETE"; + Requests[3154].Request.Path = "/subscriptions/43143722-cc6f-/resourceGroups/79d8c8c6-e645-405/providers/Microsoft.BatchAI/workspaces/ee157c8b-1f88/fileServers/11654561-88a0-"; + Requests[3155] = new DefaultHttpContext(); + Requests[3155].RequestServices = CreateServices(); + Requests[3155].Request.Method = "GET"; + Requests[3155].Request.Path = "/subscriptions/eda11e7a-95e0-/resourceGroups/805de5cb-29cc-406/providers/Microsoft.BotService/botServices/4bde8877-62f/channels/9c2cddaa-2d"; + Requests[3156] = new DefaultHttpContext(); + Requests[3156].RequestServices = CreateServices(); + Requests[3156].Request.Method = "DELETE"; + Requests[3156].Request.Path = "/subscriptions/243a78b9-0529-/resourceGroups/48f7ad1b-01c3-48e/providers/Microsoft.BotService/botServices/76973058-261/channels/f273de4a-10"; + Requests[3157] = new DefaultHttpContext(); + Requests[3157].RequestServices = CreateServices(); + Requests[3157].Request.Method = "PUT"; + Requests[3157].Request.Path = "/subscriptions/e4ba7b2c-9232-/resourceGroups/413c4f28-1c9a-491/providers/Microsoft.BotService/botServices/3bb4dccf-735/channels/1d736b2e-47"; + Requests[3158] = new DefaultHttpContext(); + Requests[3158].RequestServices = CreateServices(); + Requests[3158].Request.Method = "PATCH"; + Requests[3158].Request.Path = "/subscriptions/0b9abf05-d88b-/resourceGroups/c37b5020-88d0-4b3/providers/Microsoft.BotService/botServices/faaef165-eb2/channels/81b8cf74-b8"; + Requests[3159] = new DefaultHttpContext(); + Requests[3159].RequestServices = CreateServices(); + Requests[3159].Request.Method = "PUT"; + Requests[3159].Request.Path = "/subscriptions/0db78f26-17ea-/resourceGroups/23ea66a1-6b8f-4c0/providers/Microsoft.BotService/botServices/ebd13dd2-571/Connections/57a8ab0b-31bc-"; + Requests[3160] = new DefaultHttpContext(); + Requests[3160].RequestServices = CreateServices(); + Requests[3160].Request.Method = "GET"; + Requests[3160].Request.Path = "/subscriptions/86aeacf9-16ed-/resourceGroups/4fcacb02-ed03-425/providers/Microsoft.BotService/botServices/f258b910-35e/Connections/8ec527de-393e-"; + Requests[3161] = new DefaultHttpContext(); + Requests[3161].RequestServices = CreateServices(); + Requests[3161].Request.Method = "PATCH"; + Requests[3161].Request.Path = "/subscriptions/52ddb069-05a4-/resourceGroups/021c776f-6d5a-4fc/providers/Microsoft.BotService/botServices/a9ee7c78-3d7/Connections/7604286a-7504-"; + Requests[3162] = new DefaultHttpContext(); + Requests[3162].RequestServices = CreateServices(); + Requests[3162].Request.Method = "DELETE"; + Requests[3162].Request.Path = "/subscriptions/8d30d9de-bf51-/resourceGroups/45678a68-342f-492/providers/Microsoft.BotService/botServices/a7ffce5c-13d/Connections/18fff1d8-24b4-"; + Requests[3163] = new DefaultHttpContext(); + Requests[3163].RequestServices = CreateServices(); + Requests[3163].Request.Method = "GET"; + Requests[3163].Request.Path = "/subscriptions/73d1bdf2-32c1-/resourceGroups/fea486d7-9f82-4cc/providers/Microsoft.Cache/Redis/248a931d-/firewallRules/80557267"; + Requests[3164] = new DefaultHttpContext(); + Requests[3164].RequestServices = CreateServices(); + Requests[3164].Request.Method = "PUT"; + Requests[3164].Request.Path = "/subscriptions/cc8bfdcd-a31d-/resourceGroups/2967fa1e-0b5f-455/providers/Microsoft.Cache/Redis/7fe8a5a2-/firewallRules/35d67bfa"; + Requests[3165] = new DefaultHttpContext(); + Requests[3165].RequestServices = CreateServices(); + Requests[3165].Request.Method = "DELETE"; + Requests[3165].Request.Path = "/subscriptions/a5a823ba-8b94-/resourceGroups/c72989fd-9ad4-452/providers/Microsoft.Cache/Redis/07c99c61-/firewallRules/2e90d015"; + Requests[3166] = new DefaultHttpContext(); + Requests[3166].RequestServices = CreateServices(); + Requests[3166].Request.Method = "PUT"; + Requests[3166].Request.Path = "/subscriptions/fb978744-9160-/resourceGroups/e81bc747-3fb2-472/providers/Microsoft.Cache/Redis/6901f/linkedServers/e878e1d9-f53a-48"; + Requests[3167] = new DefaultHttpContext(); + Requests[3167].RequestServices = CreateServices(); + Requests[3167].Request.Method = "GET"; + Requests[3167].Request.Path = "/subscriptions/1ff36b06-da5d-/resourceGroups/96267d27-ad51-4a0/providers/Microsoft.Cache/Redis/bebe7/linkedServers/f4befbe3-673f-4f"; + Requests[3168] = new DefaultHttpContext(); + Requests[3168].RequestServices = CreateServices(); + Requests[3168].Request.Method = "DELETE"; + Requests[3168].Request.Path = "/subscriptions/8b5a80c8-a8d3-/resourceGroups/6ff1ed1d-dcc6-426/providers/Microsoft.Cache/Redis/fc350/linkedServers/dea73de3-44bf-4a"; + Requests[3169] = new DefaultHttpContext(); + Requests[3169].RequestServices = CreateServices(); + Requests[3169].Request.Method = "GET"; + Requests[3169].Request.Path = "/subscriptions/0802c7ac-9be7-/resourceGroups/e41edd80-d0da-451/providers/Microsoft.Cache/Redis/13ccb/patchSchedules/88196c0"; + Requests[3170] = new DefaultHttpContext(); + Requests[3170].RequestServices = CreateServices(); + Requests[3170].Request.Method = "DELETE"; + Requests[3170].Request.Path = "/subscriptions/b56dfb0b-bbd8-/resourceGroups/5b05d06c-f4a8-444/providers/Microsoft.Cache/Redis/729f4/patchSchedules/ee31f71"; + Requests[3171] = new DefaultHttpContext(); + Requests[3171].RequestServices = CreateServices(); + Requests[3171].Request.Method = "PUT"; + Requests[3171].Request.Path = "/subscriptions/805fd567-9821-/resourceGroups/9f27ae7c-7990-4e9/providers/Microsoft.Cache/Redis/b3e2c/patchSchedules/7e3bed9"; + Requests[3172] = new DefaultHttpContext(); + Requests[3172].RequestServices = CreateServices(); + Requests[3172].Request.Method = "GET"; + Requests[3172].Request.Path = "/subscriptions/9d1b1886-5bfd-/resourceGroups/e3944ac4-fc08-44d/providers/Microsoft.Cdn/profiles/cf3bda2f-7c/endpoints/404331ce-ca1"; + Requests[3173] = new DefaultHttpContext(); + Requests[3173].RequestServices = CreateServices(); + Requests[3173].Request.Method = "PUT"; + Requests[3173].Request.Path = "/subscriptions/29fcce9b-2483-/resourceGroups/3432ae26-a940-440/providers/Microsoft.Cdn/profiles/a7464ecf-c0/endpoints/d29895cd-767"; + Requests[3174] = new DefaultHttpContext(); + Requests[3174].RequestServices = CreateServices(); + Requests[3174].Request.Method = "DELETE"; + Requests[3174].Request.Path = "/subscriptions/cd7130e0-85ac-/resourceGroups/c82e9c6f-69cb-4cc/providers/Microsoft.Cdn/profiles/423d8826-16/endpoints/55bdb275-bb0"; + Requests[3175] = new DefaultHttpContext(); + Requests[3175].RequestServices = CreateServices(); + Requests[3175].Request.Method = "PATCH"; + Requests[3175].Request.Path = "/subscriptions/3f861e80-00f8-/resourceGroups/238285e4-a969-4da/providers/Microsoft.Cdn/profiles/7939794f-3f/endpoints/3caaf38a-e19"; + Requests[3176] = new DefaultHttpContext(); + Requests[3176].RequestServices = CreateServices(); + Requests[3176].Request.Method = "GET"; + Requests[3176].Request.Path = "/subscriptions/21cc8918-2658-/resourceGroups/d0a21376-3eca-40c/providers/Microsoft.CertificateRegistration/certificateOrders/44ef59ab-6775-4163-b/certificates/c9b35"; + Requests[3177] = new DefaultHttpContext(); + Requests[3177].RequestServices = CreateServices(); + Requests[3177].Request.Method = "PUT"; + Requests[3177].Request.Path = "/subscriptions/c9e3777a-5151-/resourceGroups/8aff917b-4f51-483/providers/Microsoft.CertificateRegistration/certificateOrders/19f8c14e-bbb4-45b9-a/certificates/89d3c"; + Requests[3178] = new DefaultHttpContext(); + Requests[3178].RequestServices = CreateServices(); + Requests[3178].Request.Method = "DELETE"; + Requests[3178].Request.Path = "/subscriptions/76f19a38-734b-/resourceGroups/d0558ce3-13b6-407/providers/Microsoft.CertificateRegistration/certificateOrders/3aa9b1e0-3996-4dab-8/certificates/6472a"; + Requests[3179] = new DefaultHttpContext(); + Requests[3179].RequestServices = CreateServices(); + Requests[3179].Request.Method = "PATCH"; + Requests[3179].Request.Path = "/subscriptions/af37a1eb-775c-/resourceGroups/da9e4ca5-a08d-4ad/providers/Microsoft.CertificateRegistration/certificateOrders/64621ba0-55a0-4ade-9/certificates/1cdce"; + Requests[3180] = new DefaultHttpContext(); + Requests[3180].RequestServices = CreateServices(); + Requests[3180].Request.Method = "GET"; + Requests[3180].Request.Path = "/subscriptions/7a7e016e-2ca9-/resourceGroups/220c48b6-2e2c-4ec/providers/Microsoft.Compute/galleries/8f14e667-c2/images/bfed7932-bf5a-43"; + Requests[3181] = new DefaultHttpContext(); + Requests[3181].RequestServices = CreateServices(); + Requests[3181].Request.Method = "DELETE"; + Requests[3181].Request.Path = "/subscriptions/be1b9912-5a07-/resourceGroups/88e2e9e6-e802-473/providers/Microsoft.Compute/galleries/26a8513c-ef/images/d289b0d7-31c0-40"; + Requests[3182] = new DefaultHttpContext(); + Requests[3182].RequestServices = CreateServices(); + Requests[3182].Request.Method = "PUT"; + Requests[3182].Request.Path = "/subscriptions/fbb0cafe-b0d3-/resourceGroups/3ba30256-094b-4f4/providers/Microsoft.Compute/galleries/6f840928-d2/images/4e2ddbab-0eb6-4c"; + Requests[3183] = new DefaultHttpContext(); + Requests[3183].RequestServices = CreateServices(); + Requests[3183].Request.Method = "PUT"; + Requests[3183].Request.Path = "/subscriptions/03764a14-f598-/resourceGroups/3d976650-872a-481/providers/Microsoft.Compute/virtualMachines/ad40f6/extensions/a0fb6c66-9da4-4"; + Requests[3184] = new DefaultHttpContext(); + Requests[3184].RequestServices = CreateServices(); + Requests[3184].Request.Method = "PATCH"; + Requests[3184].Request.Path = "/subscriptions/efb69047-ec3e-/resourceGroups/b62a7d47-28a4-471/providers/Microsoft.Compute/virtualMachines/0bc0ee/extensions/2a4f2a1f-58b8-4"; + Requests[3185] = new DefaultHttpContext(); + Requests[3185].RequestServices = CreateServices(); + Requests[3185].Request.Method = "DELETE"; + Requests[3185].Request.Path = "/subscriptions/6037bbb6-ee61-/resourceGroups/10aa935a-2486-45a/providers/Microsoft.Compute/virtualMachines/e178c7/extensions/de0611bf-6edf-4"; + Requests[3186] = new DefaultHttpContext(); + Requests[3186].RequestServices = CreateServices(); + Requests[3186].Request.Method = "GET"; + Requests[3186].Request.Path = "/subscriptions/f048d009-6370-/resourceGroups/016834f2-f8b6-447/providers/Microsoft.Compute/virtualMachines/0ed5e7/extensions/9fe89f46-f96e-4"; + Requests[3187] = new DefaultHttpContext(); + Requests[3187].RequestServices = CreateServices(); + Requests[3187].Request.Method = "PUT"; + Requests[3187].Request.Path = "/subscriptions/93dd4c67-0b2b-/resourceGroups/a19f2a7d-78fe-4cf/providers/Microsoft.Compute/virtualMachineScaleSets/e1cfc243-4074-/extensions/28548944-7cee-4f7"; + Requests[3188] = new DefaultHttpContext(); + Requests[3188].RequestServices = CreateServices(); + Requests[3188].Request.Method = "DELETE"; + Requests[3188].Request.Path = "/subscriptions/8d8cea01-5a2d-/resourceGroups/06539fbf-0b5e-43d/providers/Microsoft.Compute/virtualMachineScaleSets/680bd233-18ad-/extensions/bfcf6af6-28af-405"; + Requests[3189] = new DefaultHttpContext(); + Requests[3189].RequestServices = CreateServices(); + Requests[3189].Request.Method = "GET"; + Requests[3189].Request.Path = "/subscriptions/9890acd7-c7ce-/resourceGroups/074f366d-a539-4aa/providers/Microsoft.Compute/virtualMachineScaleSets/8b668b56-bac7-/extensions/56116377-0a7b-44d"; + Requests[3190] = new DefaultHttpContext(); + Requests[3190].RequestServices = CreateServices(); + Requests[3190].Request.Method = "PUT"; + Requests[3190].Request.Path = "/subscriptions/344d3bcb-f300-/resourceGroups/2da790d8-2459-4d4/providers/Microsoft.Compute/virtualMachineScaleSets/9ef151d7-edbe-/virtualmachines/12d5960f-f"; + Requests[3191] = new DefaultHttpContext(); + Requests[3191].RequestServices = CreateServices(); + Requests[3191].Request.Method = "DELETE"; + Requests[3191].Request.Path = "/subscriptions/7ea2fe40-5aa0-/resourceGroups/22bf9cb1-ba50-4d0/providers/Microsoft.Compute/virtualMachineScaleSets/d340721d-9935-/virtualmachines/e77a378e-e"; + Requests[3192] = new DefaultHttpContext(); + Requests[3192].RequestServices = CreateServices(); + Requests[3192].Request.Method = "GET"; + Requests[3192].Request.Path = "/subscriptions/960b73d8-015e-/resourceGroups/a6420a43-dd82-436/providers/Microsoft.Compute/virtualMachineScaleSets/a20ab165-71e5-/virtualmachines/a63c4c71-e"; + Requests[3193] = new DefaultHttpContext(); + Requests[3193].RequestServices = CreateServices(); + Requests[3193].Request.Method = "PATCH"; + Requests[3193].Request.Path = "/subscriptions/a7226e52-1496-/resourceGroups/62c19e4e-d7cc-4cd/providers/Microsoft.ContainerRegistry/registries/1eab03ae-1de/builds/59fd372"; + Requests[3194] = new DefaultHttpContext(); + Requests[3194].RequestServices = CreateServices(); + Requests[3194].Request.Method = "GET"; + Requests[3194].Request.Path = "/subscriptions/fa853918-1f88-/resourceGroups/146a4e32-fa2d-4e7/providers/Microsoft.ContainerRegistry/registries/f6b9ec62-dea/builds/044a97f"; + Requests[3195] = new DefaultHttpContext(); + Requests[3195].RequestServices = CreateServices(); + Requests[3195].Request.Method = "PATCH"; + Requests[3195].Request.Path = "/subscriptions/3d6b22a2-21b8-/resourceGroups/48a21572-c8fd-4c6/providers/Microsoft.ContainerRegistry/registries/c3d86f2a-007/buildTasks/c1398489-9f81"; + Requests[3196] = new DefaultHttpContext(); + Requests[3196].RequestServices = CreateServices(); + Requests[3196].Request.Method = "DELETE"; + Requests[3196].Request.Path = "/subscriptions/aa1f275f-9074-/resourceGroups/013c3c94-4fd7-44f/providers/Microsoft.ContainerRegistry/registries/9441fa12-c1a/buildTasks/2f6cd4bc-c679"; + Requests[3197] = new DefaultHttpContext(); + Requests[3197].RequestServices = CreateServices(); + Requests[3197].Request.Method = "PUT"; + Requests[3197].Request.Path = "/subscriptions/24b15599-f6f1-/resourceGroups/14f1a660-9694-4c7/providers/Microsoft.ContainerRegistry/registries/218196a7-9a2/buildTasks/a87740db-ca40"; + Requests[3198] = new DefaultHttpContext(); + Requests[3198].RequestServices = CreateServices(); + Requests[3198].Request.Method = "GET"; + Requests[3198].Request.Path = "/subscriptions/2b28d619-c50b-/resourceGroups/88858008-4ad3-42d/providers/Microsoft.ContainerRegistry/registries/c79b97ed-d5d/buildTasks/3c526cd6-35d2"; + Requests[3199] = new DefaultHttpContext(); + Requests[3199].RequestServices = CreateServices(); + Requests[3199].Request.Method = "PATCH"; + Requests[3199].Request.Path = "/subscriptions/6ae0ee7f-16ea-/resourceGroups/63790ba6-9e68-40a/providers/Microsoft.ContainerRegistry/registries/922a1cee-095/replications/1d2594e1-35b7-4"; + Requests[3200] = new DefaultHttpContext(); + Requests[3200].RequestServices = CreateServices(); + Requests[3200].Request.Method = "PUT"; + Requests[3200].Request.Path = "/subscriptions/541e1e43-5b2a-/resourceGroups/e32a98a6-0176-480/providers/Microsoft.ContainerRegistry/registries/9ce1ee99-cc3/replications/5ade2877-739d-4"; + Requests[3201] = new DefaultHttpContext(); + Requests[3201].RequestServices = CreateServices(); + Requests[3201].Request.Method = "GET"; + Requests[3201].Request.Path = "/subscriptions/1d56b556-520d-/resourceGroups/f5fdc819-8b3a-490/providers/Microsoft.ContainerRegistry/registries/77a7795b-833/replications/118a018f-d7c8-4"; + Requests[3202] = new DefaultHttpContext(); + Requests[3202].RequestServices = CreateServices(); + Requests[3202].Request.Method = "DELETE"; + Requests[3202].Request.Path = "/subscriptions/535b89b6-c1f8-/resourceGroups/9acc2c99-1e0c-4e6/providers/Microsoft.ContainerRegistry/registries/72531f5e-b7a/replications/cb066bad-d63a-4"; + Requests[3203] = new DefaultHttpContext(); + Requests[3203].RequestServices = CreateServices(); + Requests[3203].Request.Method = "DELETE"; + Requests[3203].Request.Path = "/subscriptions/8c05b9ee-4ebb-/resourceGroups/f2e8064b-8b27-460/providers/Microsoft.ContainerRegistry/registries/9aa2356f-677/webhooks/651fefbf-72"; + Requests[3204] = new DefaultHttpContext(); + Requests[3204].RequestServices = CreateServices(); + Requests[3204].Request.Method = "GET"; + Requests[3204].Request.Path = "/subscriptions/bb5b6596-2e2a-/resourceGroups/6c110b04-98bb-42a/providers/Microsoft.ContainerRegistry/registries/ddd21abb-8b5/webhooks/3fa2af58-31"; + Requests[3205] = new DefaultHttpContext(); + Requests[3205].RequestServices = CreateServices(); + Requests[3205].Request.Method = "PUT"; + Requests[3205].Request.Path = "/subscriptions/2475aeca-b7f7-/resourceGroups/2271a31f-5858-437/providers/Microsoft.ContainerRegistry/registries/cca650e6-85e/webhooks/786530eb-8d"; + Requests[3206] = new DefaultHttpContext(); + Requests[3206].RequestServices = CreateServices(); + Requests[3206].Request.Method = "PATCH"; + Requests[3206].Request.Path = "/subscriptions/df589778-fc29-/resourceGroups/511a327b-f762-43c/providers/Microsoft.ContainerRegistry/registries/610415ad-547/webhooks/21075409-81"; + Requests[3207] = new DefaultHttpContext(); + Requests[3207].RequestServices = CreateServices(); + Requests[3207].Request.Method = "GET"; + Requests[3207].Request.Path = "/subscriptions/ae750838-d373-/resourceGroups/6fe264da-90d5-490/providers/Microsoft.ContainerService/managedClusters/6abf4cf1-28d/accessProfiles/26566545"; + Requests[3208] = new DefaultHttpContext(); + Requests[3208].RequestServices = CreateServices(); + Requests[3208].Request.Method = "PUT"; + Requests[3208].Request.Path = "/subscriptions/43285b2f-230c-/resourceGroups/2ce432d2-0cb8-410/providers/Microsoft.CustomerInsights/hubs/a19e032/authorizationPolicies/6e12fe51-bfe0-4f6c-ba32"; + Requests[3209] = new DefaultHttpContext(); + Requests[3209].RequestServices = CreateServices(); + Requests[3209].Request.Method = "GET"; + Requests[3209].Request.Path = "/subscriptions/ed3ce779-825b-/resourceGroups/acaaf706-a8a4-4c7/providers/Microsoft.CustomerInsights/hubs/27f0f6e/authorizationPolicies/ac32438a-bec4-4940-99d3"; + Requests[3210] = new DefaultHttpContext(); + Requests[3210].RequestServices = CreateServices(); + Requests[3210].Request.Method = "DELETE"; + Requests[3210].Request.Path = "/subscriptions/f502b6c0-895a-/resourceGroups/86a1f060-73ba-4b4/providers/Microsoft.CustomerInsights/hubs/5ef0e47/connectors/ccbf5713-09d6"; + Requests[3211] = new DefaultHttpContext(); + Requests[3211].RequestServices = CreateServices(); + Requests[3211].Request.Method = "PUT"; + Requests[3211].Request.Path = "/subscriptions/a09d51d9-ed7a-/resourceGroups/1c9633ad-a6cc-429/providers/Microsoft.CustomerInsights/hubs/692d779/connectors/3505aee4-0501"; + Requests[3212] = new DefaultHttpContext(); + Requests[3212].RequestServices = CreateServices(); + Requests[3212].Request.Method = "GET"; + Requests[3212].Request.Path = "/subscriptions/728d0b48-94cd-/resourceGroups/d7bfb1be-af3e-468/providers/Microsoft.CustomerInsights/hubs/c2db8a6/connectors/6229c841-dbd6"; + Requests[3213] = new DefaultHttpContext(); + Requests[3213].RequestServices = CreateServices(); + Requests[3213].Request.Method = "PUT"; + Requests[3213].Request.Path = "/subscriptions/0d37588c-ab25-/resourceGroups/9fad3206-20df-4ee/providers/Microsoft.CustomerInsights/hubs/c5488c1/interactions/9cdab60e-96b5-4"; + Requests[3214] = new DefaultHttpContext(); + Requests[3214].RequestServices = CreateServices(); + Requests[3214].Request.Method = "GET"; + Requests[3214].Request.Path = "/subscriptions/631ab1c9-a12f-/resourceGroups/f5594fac-1fca-4cd/providers/Microsoft.CustomerInsights/hubs/4c02c00/interactions/2e3daab9-93c3-4"; + Requests[3215] = new DefaultHttpContext(); + Requests[3215].RequestServices = CreateServices(); + Requests[3215].Request.Method = "DELETE"; + Requests[3215].Request.Path = "/subscriptions/ecb1652a-136d-/resourceGroups/cbea5a06-302f-4a9/providers/Microsoft.CustomerInsights/hubs/d54d57d/kpi/2e7837f"; + Requests[3216] = new DefaultHttpContext(); + Requests[3216].RequestServices = CreateServices(); + Requests[3216].Request.Method = "PUT"; + Requests[3216].Request.Path = "/subscriptions/b74bf062-f9a6-/resourceGroups/9ba49593-5f77-4f8/providers/Microsoft.CustomerInsights/hubs/4d195b0/kpi/2467a0a"; + Requests[3217] = new DefaultHttpContext(); + Requests[3217].RequestServices = CreateServices(); + Requests[3217].Request.Method = "GET"; + Requests[3217].Request.Path = "/subscriptions/aac6856c-332a-/resourceGroups/270ab3c1-2c65-431/providers/Microsoft.CustomerInsights/hubs/9a99793/kpi/72cbd15"; + Requests[3218] = new DefaultHttpContext(); + Requests[3218].RequestServices = CreateServices(); + Requests[3218].Request.Method = "PUT"; + Requests[3218].Request.Path = "/subscriptions/9cea25ac-ee67-/resourceGroups/6f752ffe-0415-4c3/providers/Microsoft.CustomerInsights/hubs/a9a4d20/links/1d696947"; + Requests[3219] = new DefaultHttpContext(); + Requests[3219].RequestServices = CreateServices(); + Requests[3219].Request.Method = "GET"; + Requests[3219].Request.Path = "/subscriptions/d30ccfe4-aae3-/resourceGroups/8bb2eb33-8ac4-453/providers/Microsoft.CustomerInsights/hubs/65eeb5e/links/675bc8ed"; + Requests[3220] = new DefaultHttpContext(); + Requests[3220].RequestServices = CreateServices(); + Requests[3220].Request.Method = "DELETE"; + Requests[3220].Request.Path = "/subscriptions/a18f06e2-d72f-/resourceGroups/566cc6b0-ad97-4b3/providers/Microsoft.CustomerInsights/hubs/730a0e7/links/83b8a981"; + Requests[3221] = new DefaultHttpContext(); + Requests[3221].RequestServices = CreateServices(); + Requests[3221].Request.Method = "DELETE"; + Requests[3221].Request.Path = "/subscriptions/630a00d7-5f02-/resourceGroups/64dcd845-323d-433/providers/Microsoft.CustomerInsights/hubs/826e654/predictions/f3fa0448-3c23-"; + Requests[3222] = new DefaultHttpContext(); + Requests[3222].RequestServices = CreateServices(); + Requests[3222].Request.Method = "PUT"; + Requests[3222].Request.Path = "/subscriptions/60e442d6-6039-/resourceGroups/b770bbca-63e1-4a5/providers/Microsoft.CustomerInsights/hubs/1a4d429/predictions/1d7d92b7-3b5f-"; + Requests[3223] = new DefaultHttpContext(); + Requests[3223].RequestServices = CreateServices(); + Requests[3223].Request.Method = "GET"; + Requests[3223].Request.Path = "/subscriptions/633c0aab-dee3-/resourceGroups/35308989-ca78-431/providers/Microsoft.CustomerInsights/hubs/9b92018/predictions/c4bf97b3-df5f-"; + Requests[3224] = new DefaultHttpContext(); + Requests[3224].RequestServices = CreateServices(); + Requests[3224].Request.Method = "GET"; + Requests[3224].Request.Path = "/subscriptions/423c0f6c-f4c9-/resourceGroups/f91956da-aaae-406/providers/Microsoft.CustomerInsights/hubs/8360c14/profiles/5acd1728-2d"; + Requests[3225] = new DefaultHttpContext(); + Requests[3225].RequestServices = CreateServices(); + Requests[3225].Request.Method = "DELETE"; + Requests[3225].Request.Path = "/subscriptions/5abb336c-3342-/resourceGroups/36305322-024f-432/providers/Microsoft.CustomerInsights/hubs/f5c1a2d/profiles/43cad0ad-7e"; + Requests[3226] = new DefaultHttpContext(); + Requests[3226].RequestServices = CreateServices(); + Requests[3226].Request.Method = "PUT"; + Requests[3226].Request.Path = "/subscriptions/c437ecd0-26ee-/resourceGroups/6eebf0e1-4791-44a/providers/Microsoft.CustomerInsights/hubs/45356bb/profiles/ff745938-d7"; + Requests[3227] = new DefaultHttpContext(); + Requests[3227].RequestServices = CreateServices(); + Requests[3227].Request.Method = "GET"; + Requests[3227].Request.Path = "/subscriptions/d645f967-54a7-/resourceGroups/5b1cf5ec-0808-419/providers/Microsoft.CustomerInsights/hubs/3ad35cb/relationshipLinks/442cdd7b-e530-446e-b"; + Requests[3228] = new DefaultHttpContext(); + Requests[3228].RequestServices = CreateServices(); + Requests[3228].Request.Method = "DELETE"; + Requests[3228].Request.Path = "/subscriptions/719cea6e-744a-/resourceGroups/540a474a-5b0e-4a3/providers/Microsoft.CustomerInsights/hubs/1584d3b/relationshipLinks/f91e0e93-2d75-4f5c-a"; + Requests[3229] = new DefaultHttpContext(); + Requests[3229].RequestServices = CreateServices(); + Requests[3229].Request.Method = "PUT"; + Requests[3229].Request.Path = "/subscriptions/b1022f0e-9d08-/resourceGroups/f0a2b676-7ce9-4a8/providers/Microsoft.CustomerInsights/hubs/deaff13/relationshipLinks/f7c51924-c531-4b02-b"; + Requests[3230] = new DefaultHttpContext(); + Requests[3230].RequestServices = CreateServices(); + Requests[3230].Request.Method = "GET"; + Requests[3230].Request.Path = "/subscriptions/407ecf68-e225-/resourceGroups/dced862b-d0c9-47f/providers/Microsoft.CustomerInsights/hubs/c8e5636/relationships/a34e6c9c-48de-40"; + Requests[3231] = new DefaultHttpContext(); + Requests[3231].RequestServices = CreateServices(); + Requests[3231].Request.Method = "DELETE"; + Requests[3231].Request.Path = "/subscriptions/81b6db86-8f6b-/resourceGroups/c51cc330-5d4b-4a1/providers/Microsoft.CustomerInsights/hubs/9b7730d/relationships/c22cf1ba-9461-44"; + Requests[3232] = new DefaultHttpContext(); + Requests[3232].RequestServices = CreateServices(); + Requests[3232].Request.Method = "PUT"; + Requests[3232].Request.Path = "/subscriptions/b2f687d2-469f-/resourceGroups/dc489880-fc2e-4c1/providers/Microsoft.CustomerInsights/hubs/b1b6ac8/relationships/8309d018-f81f-42"; + Requests[3233] = new DefaultHttpContext(); + Requests[3233].RequestServices = CreateServices(); + Requests[3233].Request.Method = "DELETE"; + Requests[3233].Request.Path = "/subscriptions/e2df591d-cb22-/resourceGroups/38d4cddf-3e8c-492/providers/Microsoft.CustomerInsights/hubs/d89dc8e/roleAssignments/02eb1d1d-5403-"; + Requests[3234] = new DefaultHttpContext(); + Requests[3234].RequestServices = CreateServices(); + Requests[3234].Request.Method = "PUT"; + Requests[3234].Request.Path = "/subscriptions/cc447069-5e14-/resourceGroups/8a08124f-72ef-482/providers/Microsoft.CustomerInsights/hubs/43bd303/roleAssignments/6a073c63-1b9b-"; + Requests[3235] = new DefaultHttpContext(); + Requests[3235].RequestServices = CreateServices(); + Requests[3235].Request.Method = "GET"; + Requests[3235].Request.Path = "/subscriptions/6ad2e1df-5045-/resourceGroups/7872f776-6e47-49c/providers/Microsoft.CustomerInsights/hubs/b26ab25/roleAssignments/4924eb9a-89e6-"; + Requests[3236] = new DefaultHttpContext(); + Requests[3236].RequestServices = CreateServices(); + Requests[3236].Request.Method = "GET"; + Requests[3236].Request.Path = "/subscriptions/82758579-fb4c-/resourceGroups/d1baa73f-bf56-4bd/providers/Microsoft.CustomerInsights/hubs/eabed77/views/680ba089"; + Requests[3237] = new DefaultHttpContext(); + Requests[3237].RequestServices = CreateServices(); + Requests[3237].Request.Method = "DELETE"; + Requests[3237].Request.Path = "/subscriptions/0a08e262-0263-/resourceGroups/db6c7f11-2fae-42b/providers/Microsoft.CustomerInsights/hubs/b09d9af/views/451ce2a6"; + Requests[3238] = new DefaultHttpContext(); + Requests[3238].RequestServices = CreateServices(); + Requests[3238].Request.Method = "PUT"; + Requests[3238].Request.Path = "/subscriptions/f80fa6fb-0f28-/resourceGroups/4ca8ed5a-fa7f-4b4/providers/Microsoft.CustomerInsights/hubs/d34a3b7/views/254d7eef"; + Requests[3239] = new DefaultHttpContext(); + Requests[3239].RequestServices = CreateServices(); + Requests[3239].Request.Method = "GET"; + Requests[3239].Request.Path = "/subscriptions/b2f486df-1e59-/resourceGroups/b540fb7b-e1c5-40d/providers/Microsoft.CustomerInsights/hubs/0a7be00/widgetTypes/f7c2bec8-87e6-"; + Requests[3240] = new DefaultHttpContext(); + Requests[3240].RequestServices = CreateServices(); + Requests[3240].Request.Method = "POST"; + Requests[3240].Request.Path = "/subscriptions/994dc681-5382-/resourceGroups/9fb8492c-97ac-492/providers/Microsoft.DataFactory/factories/cdac5c31-55/cancelpipelinerun/54282"; + Requests[3241] = new DefaultHttpContext(); + Requests[3241].RequestServices = CreateServices(); + Requests[3241].Request.Method = "DELETE"; + Requests[3241].Request.Path = "/subscriptions/fabfe797-e853-/resourceGroups/5073a852-3a5f-402/providers/Microsoft.DataFactory/factories/77eefa44-aa/datasets/d30f756b-49"; + Requests[3242] = new DefaultHttpContext(); + Requests[3242].RequestServices = CreateServices(); + Requests[3242].Request.Method = "PUT"; + Requests[3242].Request.Path = "/subscriptions/e9d0d5dd-bf42-/resourceGroups/2744bc21-88f4-4a6/providers/Microsoft.DataFactory/factories/9b334bd9-14/datasets/a4864ee8-bf"; + Requests[3243] = new DefaultHttpContext(); + Requests[3243].RequestServices = CreateServices(); + Requests[3243].Request.Method = "GET"; + Requests[3243].Request.Path = "/subscriptions/77b69811-6b2d-/resourceGroups/500fd66f-7e72-48c/providers/Microsoft.DataFactory/factories/5a7a0086-71/datasets/7d5984b8-2e"; + Requests[3244] = new DefaultHttpContext(); + Requests[3244].RequestServices = CreateServices(); + Requests[3244].Request.Method = "GET"; + Requests[3244].Request.Path = "/subscriptions/73e42e2f-5d3e-/resourceGroups/e0c6d6df-eebf-4c7/providers/Microsoft.DataFactory/factories/85f3d63e-e1/integrationRuntimes/922c68aa-beac-4dc9-935"; + Requests[3245] = new DefaultHttpContext(); + Requests[3245].RequestServices = CreateServices(); + Requests[3245].Request.Method = "PATCH"; + Requests[3245].Request.Path = "/subscriptions/d3cde6bf-83cb-/resourceGroups/f10eeae0-c9eb-4e4/providers/Microsoft.DataFactory/factories/d9f7bce6-55/integrationRuntimes/707cd55d-cefb-4439-826"; + Requests[3246] = new DefaultHttpContext(); + Requests[3246].RequestServices = CreateServices(); + Requests[3246].Request.Method = "DELETE"; + Requests[3246].Request.Path = "/subscriptions/abc4d98a-8c5b-/resourceGroups/597e0a4f-ea29-468/providers/Microsoft.DataFactory/factories/1e43a4b1-4d/integrationRuntimes/144b486a-f1f8-4991-9cc"; + Requests[3247] = new DefaultHttpContext(); + Requests[3247].RequestServices = CreateServices(); + Requests[3247].Request.Method = "PUT"; + Requests[3247].Request.Path = "/subscriptions/1cae88e4-5b40-/resourceGroups/d28760c9-f2ed-411/providers/Microsoft.DataFactory/factories/a95c31e5-d8/integrationRuntimes/bf648da0-f34e-4d99-b68"; + Requests[3248] = new DefaultHttpContext(); + Requests[3248].RequestServices = CreateServices(); + Requests[3248].Request.Method = "GET"; + Requests[3248].Request.Path = "/subscriptions/0680b2f0-a1d1-/resourceGroups/301ede59-a433-4cf/providers/Microsoft.DataFactory/factories/610f4a42-de/linkedservices/c69f7b73-0a2d-40b"; + Requests[3249] = new DefaultHttpContext(); + Requests[3249].RequestServices = CreateServices(); + Requests[3249].Request.Method = "DELETE"; + Requests[3249].Request.Path = "/subscriptions/7247da51-b260-/resourceGroups/c286910d-3d77-455/providers/Microsoft.DataFactory/factories/017eb700-17/linkedservices/b9972136-10ec-43a"; + Requests[3250] = new DefaultHttpContext(); + Requests[3250].RequestServices = CreateServices(); + Requests[3250].Request.Method = "PUT"; + Requests[3250].Request.Path = "/subscriptions/2a4404a9-8fba-/resourceGroups/5e5e35e1-f142-4b6/providers/Microsoft.DataFactory/factories/84cd810c-81/linkedservices/7541e626-3f32-494"; + Requests[3251] = new DefaultHttpContext(); + Requests[3251].RequestServices = CreateServices(); + Requests[3251].Request.Method = "GET"; + Requests[3251].Request.Path = "/subscriptions/1a183dae-05c9-/resourceGroups/80bd0388-3d17-4be/providers/Microsoft.DataFactory/factories/4b6b48d9-51/pipelineruns/13a67"; + Requests[3252] = new DefaultHttpContext(); + Requests[3252].RequestServices = CreateServices(); + Requests[3252].Request.Method = "GET"; + Requests[3252].Request.Path = "/subscriptions/6eba88a5-3634-/resourceGroups/c52c934f-56a1-4ef/providers/Microsoft.DataFactory/factories/48c9ed64-ce/pipelines/0936656e-05e"; + Requests[3253] = new DefaultHttpContext(); + Requests[3253].RequestServices = CreateServices(); + Requests[3253].Request.Method = "PUT"; + Requests[3253].Request.Path = "/subscriptions/803835e4-6ecf-/resourceGroups/1c11bb08-d671-4e1/providers/Microsoft.DataFactory/factories/eb926941-f5/pipelines/eb53a01a-885"; + Requests[3254] = new DefaultHttpContext(); + Requests[3254].RequestServices = CreateServices(); + Requests[3254].Request.Method = "DELETE"; + Requests[3254].Request.Path = "/subscriptions/cf6b88bc-0d05-/resourceGroups/2e02eecb-4fcf-410/providers/Microsoft.DataFactory/factories/42631591-55/pipelines/990c5f6e-9b4"; + Requests[3255] = new DefaultHttpContext(); + Requests[3255].RequestServices = CreateServices(); + Requests[3255].Request.Method = "GET"; + Requests[3255].Request.Path = "/subscriptions/cc91571f-58b6-/resourceGroups/150b077e-3db3-4fe/providers/Microsoft.DataFactory/factories/9dbf4ead-5c/triggers/0ccc478e-64"; + Requests[3256] = new DefaultHttpContext(); + Requests[3256].RequestServices = CreateServices(); + Requests[3256].Request.Method = "DELETE"; + Requests[3256].Request.Path = "/subscriptions/8a52cfdd-450e-/resourceGroups/8ecf7188-8ec3-479/providers/Microsoft.DataFactory/factories/58966022-78/triggers/5879bd8b-32"; + Requests[3257] = new DefaultHttpContext(); + Requests[3257].RequestServices = CreateServices(); + Requests[3257].Request.Method = "PUT"; + Requests[3257].Request.Path = "/subscriptions/1f045159-e0b9-/resourceGroups/cd584e94-c8d8-419/providers/Microsoft.DataFactory/factories/9dec22d5-a5/triggers/7f0457c2-b6"; + Requests[3258] = new DefaultHttpContext(); + Requests[3258].RequestServices = CreateServices(); + Requests[3258].Request.Method = "PUT"; + Requests[3258].Request.Path = "/subscriptions/411d6f6c-6341-/resourceGroups/31a1dd1c-6cbe-41f/providers/Microsoft.DataLakeAnalytics/accounts/08563d30-59/computePolicies/c0615065-ce4d-4d9"; + Requests[3259] = new DefaultHttpContext(); + Requests[3259].RequestServices = CreateServices(); + Requests[3259].Request.Method = "GET"; + Requests[3259].Request.Path = "/subscriptions/817a8089-87fa-/resourceGroups/db4ceeda-9f3c-4b2/providers/Microsoft.DataLakeAnalytics/accounts/8af37315-83/computePolicies/b049d89c-b70e-4bc"; + Requests[3260] = new DefaultHttpContext(); + Requests[3260].RequestServices = CreateServices(); + Requests[3260].Request.Method = "PATCH"; + Requests[3260].Request.Path = "/subscriptions/84db810a-bc8e-/resourceGroups/674d6e58-7cf1-49d/providers/Microsoft.DataLakeAnalytics/accounts/8637a8b2-1d/computePolicies/a393c7b4-4871-44f"; + Requests[3261] = new DefaultHttpContext(); + Requests[3261].RequestServices = CreateServices(); + Requests[3261].Request.Method = "DELETE"; + Requests[3261].Request.Path = "/subscriptions/7002107c-00ad-/resourceGroups/8afc9ffa-d5ee-48c/providers/Microsoft.DataLakeAnalytics/accounts/c191d0c6-3d/computePolicies/e304a0ee-e721-48f"; + Requests[3262] = new DefaultHttpContext(); + Requests[3262].RequestServices = CreateServices(); + Requests[3262].Request.Method = "GET"; + Requests[3262].Request.Path = "/subscriptions/bf829d64-8e80-/resourceGroups/202b9c80-5885-455/providers/Microsoft.DataLakeAnalytics/accounts/f90cb834-25/dataLakeStoreAccounts/c1e3246a-8fab-4913-84e9-"; + Requests[3263] = new DefaultHttpContext(); + Requests[3263].RequestServices = CreateServices(); + Requests[3263].Request.Method = "PUT"; + Requests[3263].Request.Path = "/subscriptions/f4c73e2a-d87d-/resourceGroups/e2870594-dcd6-4bf/providers/Microsoft.DataLakeAnalytics/accounts/2afbaee4-7e/dataLakeStoreAccounts/7e4004fa-23ca-47dd-bd70-"; + Requests[3264] = new DefaultHttpContext(); + Requests[3264].RequestServices = CreateServices(); + Requests[3264].Request.Method = "DELETE"; + Requests[3264].Request.Path = "/subscriptions/67b0cc16-3052-/resourceGroups/f3cb57d6-bfea-428/providers/Microsoft.DataLakeAnalytics/accounts/3fc6eb9e-5e/dataLakeStoreAccounts/98976533-951d-46b7-ab6b-"; + Requests[3265] = new DefaultHttpContext(); + Requests[3265].RequestServices = CreateServices(); + Requests[3265].Request.Method = "PUT"; + Requests[3265].Request.Path = "/subscriptions/cb3676a0-4710-/resourceGroups/b8febce3-97e2-4fe/providers/Microsoft.DataLakeAnalytics/accounts/d2db00fb-4d/firewallRules/7724934e-748f-4e"; + Requests[3266] = new DefaultHttpContext(); + Requests[3266].RequestServices = CreateServices(); + Requests[3266].Request.Method = "GET"; + Requests[3266].Request.Path = "/subscriptions/69342a01-8890-/resourceGroups/5c7564ae-695d-481/providers/Microsoft.DataLakeAnalytics/accounts/bbb9e308-d4/firewallRules/a5c03bf6-e38a-45"; + Requests[3267] = new DefaultHttpContext(); + Requests[3267].RequestServices = CreateServices(); + Requests[3267].Request.Method = "PATCH"; + Requests[3267].Request.Path = "/subscriptions/cd1f2584-a4ac-/resourceGroups/73e78cdc-6808-49a/providers/Microsoft.DataLakeAnalytics/accounts/b7178abf-49/firewallRules/ebb111d9-6f22-4f"; + Requests[3268] = new DefaultHttpContext(); + Requests[3268].RequestServices = CreateServices(); + Requests[3268].Request.Method = "DELETE"; + Requests[3268].Request.Path = "/subscriptions/81a4ecf6-4f93-/resourceGroups/7ffd12b7-aa30-470/providers/Microsoft.DataLakeAnalytics/accounts/f3615c19-f2/firewallRules/fc2a29c1-3057-44"; + Requests[3269] = new DefaultHttpContext(); + Requests[3269].RequestServices = CreateServices(); + Requests[3269].Request.Method = "PUT"; + Requests[3269].Request.Path = "/subscriptions/50598ea9-c772-/resourceGroups/79f9c590-56e4-4d2/providers/Microsoft.DataLakeAnalytics/accounts/7efd9227-2b/storageAccounts/cf2bd279-14c1-44cb"; + Requests[3270] = new DefaultHttpContext(); + Requests[3270].RequestServices = CreateServices(); + Requests[3270].Request.Method = "PATCH"; + Requests[3270].Request.Path = "/subscriptions/43ec7e25-0163-/resourceGroups/dd00a932-0a1d-41c/providers/Microsoft.DataLakeAnalytics/accounts/aa81e175-1a/storageAccounts/8ae783cb-3306-4fda"; + Requests[3271] = new DefaultHttpContext(); + Requests[3271].RequestServices = CreateServices(); + Requests[3271].Request.Method = "GET"; + Requests[3271].Request.Path = "/subscriptions/4b58835d-d298-/resourceGroups/528fb27f-1b3e-4ca/providers/Microsoft.DataLakeAnalytics/accounts/dc1d5147-e5/storageAccounts/599dfb76-a621-4090"; + Requests[3272] = new DefaultHttpContext(); + Requests[3272].RequestServices = CreateServices(); + Requests[3272].Request.Method = "DELETE"; + Requests[3272].Request.Path = "/subscriptions/a199fd8e-e5d8-/resourceGroups/84e802bd-7ee2-4fa/providers/Microsoft.DataLakeAnalytics/accounts/fa1a0711-ea/storageAccounts/8e5739ce-803e-4eee"; + Requests[3273] = new DefaultHttpContext(); + Requests[3273].RequestServices = CreateServices(); + Requests[3273].Request.Method = "GET"; + Requests[3273].Request.Path = "/subscriptions/eb3b18c3-23ac-/resourceGroups/14287f28-66df-44b/providers/Microsoft.DataLakeStore/accounts/9831f92f-d4/firewallRules/2a163772-db7b-48"; + Requests[3274] = new DefaultHttpContext(); + Requests[3274].RequestServices = CreateServices(); + Requests[3274].Request.Method = "PUT"; + Requests[3274].Request.Path = "/subscriptions/55e65673-a9d9-/resourceGroups/24fb2c9e-f0c3-4f3/providers/Microsoft.DataLakeStore/accounts/9b71de5a-13/firewallRules/143148f1-f5f8-47"; + Requests[3275] = new DefaultHttpContext(); + Requests[3275].RequestServices = CreateServices(); + Requests[3275].Request.Method = "DELETE"; + Requests[3275].Request.Path = "/subscriptions/ec9cd399-745e-/resourceGroups/624aea6b-06ef-4b1/providers/Microsoft.DataLakeStore/accounts/45e659f8-5f/firewallRules/15f72e23-75bd-44"; + Requests[3276] = new DefaultHttpContext(); + Requests[3276].RequestServices = CreateServices(); + Requests[3276].Request.Method = "PATCH"; + Requests[3276].Request.Path = "/subscriptions/429dc0b4-110b-/resourceGroups/614b82b9-9cd1-414/providers/Microsoft.DataLakeStore/accounts/a4676464-bc/firewallRules/2f117444-bde0-4b"; + Requests[3277] = new DefaultHttpContext(); + Requests[3277].RequestServices = CreateServices(); + Requests[3277].Request.Method = "PATCH"; + Requests[3277].Request.Path = "/subscriptions/5e48e7d3-0f0f-/resourceGroups/bff37667-2f71-4d3/providers/Microsoft.DataLakeStore/accounts/781feac2-9c/trustedIdProviders/f36df3a9-45b7-464a-b9"; + Requests[3278] = new DefaultHttpContext(); + Requests[3278].RequestServices = CreateServices(); + Requests[3278].Request.Method = "GET"; + Requests[3278].Request.Path = "/subscriptions/00b5eab5-1428-/resourceGroups/f4124a76-53d7-47f/providers/Microsoft.DataLakeStore/accounts/6f0c7e9e-5d/trustedIdProviders/12bd5403-36bc-49ca-b1"; + Requests[3279] = new DefaultHttpContext(); + Requests[3279].RequestServices = CreateServices(); + Requests[3279].Request.Method = "PUT"; + Requests[3279].Request.Path = "/subscriptions/bb31e79b-b28e-/resourceGroups/399c0847-402a-456/providers/Microsoft.DataLakeStore/accounts/e72e6d74-e1/trustedIdProviders/7890b478-b1c7-4e57-84"; + Requests[3280] = new DefaultHttpContext(); + Requests[3280].RequestServices = CreateServices(); + Requests[3280].Request.Method = "DELETE"; + Requests[3280].Request.Path = "/subscriptions/5b46f7c0-dbea-/resourceGroups/c2e8e5ee-bf7e-40a/providers/Microsoft.DataLakeStore/accounts/6136aee9-9c/trustedIdProviders/1cddef77-d8bc-4e59-a0"; + Requests[3281] = new DefaultHttpContext(); + Requests[3281].RequestServices = CreateServices(); + Requests[3281].Request.Method = "PUT"; + Requests[3281].Request.Path = "/subscriptions/313b53e1-0823-/resourceGroups/c10575cb-df18-4cb/providers/Microsoft.DataLakeStore/accounts/541f8d20-e7/virtualNetworkRules/08471677-554a-4e6e-b31"; + Requests[3282] = new DefaultHttpContext(); + Requests[3282].RequestServices = CreateServices(); + Requests[3282].Request.Method = "GET"; + Requests[3282].Request.Path = "/subscriptions/afa95250-2e55-/resourceGroups/e087b069-824e-42b/providers/Microsoft.DataLakeStore/accounts/7b4f990c-e9/virtualNetworkRules/d0aa5129-bffe-4c6d-831"; + Requests[3283] = new DefaultHttpContext(); + Requests[3283].RequestServices = CreateServices(); + Requests[3283].Request.Method = "DELETE"; + Requests[3283].Request.Path = "/subscriptions/e0795dbf-57c8-/resourceGroups/983ab409-49bd-464/providers/Microsoft.DataLakeStore/accounts/6d342f25-cd/virtualNetworkRules/42d236ef-dd08-47f5-a33"; + Requests[3284] = new DefaultHttpContext(); + Requests[3284].RequestServices = CreateServices(); + Requests[3284].Request.Method = "PATCH"; + Requests[3284].Request.Path = "/subscriptions/654269d1-255b-/resourceGroups/a8998b62-05c3-46b/providers/Microsoft.DataLakeStore/accounts/eea2e218-07/virtualNetworkRules/9e44a307-d049-41b0-8c3"; + Requests[3285] = new DefaultHttpContext(); + Requests[3285].RequestServices = CreateServices(); + Requests[3285].Request.Method = "PUT"; + Requests[3285].Request.Path = "/subscriptions/718a69f5-620d-/resourceGroups/d6a29d14-38d3-41f/providers/Microsoft.DBforMySQL/servers/ae491e9f-3/configurations/ffcb9b26-7c93-4e2"; + Requests[3286] = new DefaultHttpContext(); + Requests[3286].RequestServices = CreateServices(); + Requests[3286].Request.Method = "GET"; + Requests[3286].Request.Path = "/subscriptions/1699bbf6-519e-/resourceGroups/40cc6789-9c25-4f8/providers/Microsoft.DBforMySQL/servers/f72cb1c2-4/configurations/36440f9d-4d98-447"; + Requests[3287] = new DefaultHttpContext(); + Requests[3287].RequestServices = CreateServices(); + Requests[3287].Request.Method = "DELETE"; + Requests[3287].Request.Path = "/subscriptions/6affd3bb-79b1-/resourceGroups/e8777d78-2d7c-4c3/providers/Microsoft.DBforMySQL/servers/7f63058e-e/databases/33bcbedf-292"; + Requests[3288] = new DefaultHttpContext(); + Requests[3288].RequestServices = CreateServices(); + Requests[3288].Request.Method = "GET"; + Requests[3288].Request.Path = "/subscriptions/3baf41a5-fb01-/resourceGroups/c8b5c8bb-7229-43c/providers/Microsoft.DBforMySQL/servers/07d6e5e4-6/databases/0eb8f7ce-64c"; + Requests[3289] = new DefaultHttpContext(); + Requests[3289].RequestServices = CreateServices(); + Requests[3289].Request.Method = "PUT"; + Requests[3289].Request.Path = "/subscriptions/1ff4a6d3-b988-/resourceGroups/8c6b1850-af80-41c/providers/Microsoft.DBforMySQL/servers/71e873df-7/databases/1b7553a4-01e"; + Requests[3290] = new DefaultHttpContext(); + Requests[3290].RequestServices = CreateServices(); + Requests[3290].Request.Method = "DELETE"; + Requests[3290].Request.Path = "/subscriptions/a039ded1-36ea-/resourceGroups/6c6d78f1-f822-4d7/providers/Microsoft.DBforMySQL/servers/5e8cbcfc-1/firewallRules/69736c05-170e-4f"; + Requests[3291] = new DefaultHttpContext(); + Requests[3291].RequestServices = CreateServices(); + Requests[3291].Request.Method = "GET"; + Requests[3291].Request.Path = "/subscriptions/97af86d2-5d83-/resourceGroups/709d007b-9966-42a/providers/Microsoft.DBforMySQL/servers/14f7638b-5/firewallRules/0077dcef-9fad-48"; + Requests[3292] = new DefaultHttpContext(); + Requests[3292].RequestServices = CreateServices(); + Requests[3292].Request.Method = "PUT"; + Requests[3292].Request.Path = "/subscriptions/a4d16cfa-31da-/resourceGroups/e85f0a06-7fe2-42a/providers/Microsoft.DBforMySQL/servers/09ee6f71-c/firewallRules/f1c8e111-e651-42"; + Requests[3293] = new DefaultHttpContext(); + Requests[3293].RequestServices = CreateServices(); + Requests[3293].Request.Method = "DELETE"; + Requests[3293].Request.Path = "/subscriptions/efd21a8d-07a1-/resourceGroups/62d5b28e-f581-47b/providers/Microsoft.DBforMySQL/servers/e18e2b73-d/virtualNetworkRules/ed1acd8a-330b-47ca-813"; + Requests[3294] = new DefaultHttpContext(); + Requests[3294].RequestServices = CreateServices(); + Requests[3294].Request.Method = "PUT"; + Requests[3294].Request.Path = "/subscriptions/1b787c19-5501-/resourceGroups/36ac7f1d-5d0a-4a6/providers/Microsoft.DBforMySQL/servers/353d7bbb-d/virtualNetworkRules/b5ae5b20-66e1-48d6-a84"; + Requests[3295] = new DefaultHttpContext(); + Requests[3295].RequestServices = CreateServices(); + Requests[3295].Request.Method = "GET"; + Requests[3295].Request.Path = "/subscriptions/0936ae7b-600c-/resourceGroups/6a94955e-79e2-40c/providers/Microsoft.DBforMySQL/servers/5182c700-1/virtualNetworkRules/53611ba9-7d0d-46c3-b87"; + Requests[3296] = new DefaultHttpContext(); + Requests[3296].RequestServices = CreateServices(); + Requests[3296].Request.Method = "PUT"; + Requests[3296].Request.Path = "/subscriptions/f71d0a19-ca71-/resourceGroups/e057ee09-9016-463/providers/Microsoft.DBforPostgreSQL/servers/5e9cc08c-a/configurations/29a78beb-8455-44b"; + Requests[3297] = new DefaultHttpContext(); + Requests[3297].RequestServices = CreateServices(); + Requests[3297].Request.Method = "GET"; + Requests[3297].Request.Path = "/subscriptions/75d3c7e7-bd92-/resourceGroups/2d7f62b2-2323-4fd/providers/Microsoft.DBforPostgreSQL/servers/ed98d647-f/configurations/943841d1-4b76-407"; + Requests[3298] = new DefaultHttpContext(); + Requests[3298].RequestServices = CreateServices(); + Requests[3298].Request.Method = "GET"; + Requests[3298].Request.Path = "/subscriptions/ea405d01-4ee9-/resourceGroups/1b96c7e4-ee98-40a/providers/Microsoft.DBforPostgreSQL/servers/0bbd8067-8/databases/c8f8530f-0c4"; + Requests[3299] = new DefaultHttpContext(); + Requests[3299].RequestServices = CreateServices(); + Requests[3299].Request.Method = "DELETE"; + Requests[3299].Request.Path = "/subscriptions/c92569d1-6124-/resourceGroups/5097f821-9815-499/providers/Microsoft.DBforPostgreSQL/servers/cda18583-8/databases/e3e844da-d11"; + Requests[3300] = new DefaultHttpContext(); + Requests[3300].RequestServices = CreateServices(); + Requests[3300].Request.Method = "PUT"; + Requests[3300].Request.Path = "/subscriptions/bee43a96-8922-/resourceGroups/fcd4c568-322b-4dd/providers/Microsoft.DBforPostgreSQL/servers/64340cd0-1/databases/ee30c61c-9fb"; + Requests[3301] = new DefaultHttpContext(); + Requests[3301].RequestServices = CreateServices(); + Requests[3301].Request.Method = "PUT"; + Requests[3301].Request.Path = "/subscriptions/8c53848e-bc73-/resourceGroups/e7185759-a1d9-486/providers/Microsoft.DBforPostgreSQL/servers/51673f61-a/firewallRules/d1db9a27-21c6-40"; + Requests[3302] = new DefaultHttpContext(); + Requests[3302].RequestServices = CreateServices(); + Requests[3302].Request.Method = "GET"; + Requests[3302].Request.Path = "/subscriptions/4ce37339-874c-/resourceGroups/80ee4af7-76ef-48d/providers/Microsoft.DBforPostgreSQL/servers/b57f88d3-f/firewallRules/0b656473-ca3a-4f"; + Requests[3303] = new DefaultHttpContext(); + Requests[3303].RequestServices = CreateServices(); + Requests[3303].Request.Method = "DELETE"; + Requests[3303].Request.Path = "/subscriptions/305c0cb6-87be-/resourceGroups/daedecf8-da43-4dd/providers/Microsoft.DBforPostgreSQL/servers/a6a240ef-e/firewallRules/ebb2bb98-79f1-45"; + Requests[3304] = new DefaultHttpContext(); + Requests[3304].RequestServices = CreateServices(); + Requests[3304].Request.Method = "PUT"; + Requests[3304].Request.Path = "/subscriptions/6a2c74df-372a-/resourceGroups/b807e5c6-d147-434/providers/Microsoft.DBforPostgreSQL/servers/837dfb82-4/securityAlertPolicies/5d9ac267-31af-48a8-b881"; + Requests[3305] = new DefaultHttpContext(); + Requests[3305].RequestServices = CreateServices(); + Requests[3305].Request.Method = "GET"; + Requests[3305].Request.Path = "/subscriptions/9a781fb3-1457-/resourceGroups/86ce2ef3-159c-4fa/providers/Microsoft.DBforPostgreSQL/servers/227c4de1-c/securityAlertPolicies/003e86de-ae1e-4665-826f"; + Requests[3306] = new DefaultHttpContext(); + Requests[3306].RequestServices = CreateServices(); + Requests[3306].Request.Method = "GET"; + Requests[3306].Request.Path = "/subscriptions/d3776290-35b6-/resourceGroups/f263f7f6-85ba-476/providers/Microsoft.DBforPostgreSQL/servers/089ca6fa-1/virtualNetworkRules/3656b8b4-9da7-4b28-949"; + Requests[3307] = new DefaultHttpContext(); + Requests[3307].RequestServices = CreateServices(); + Requests[3307].Request.Method = "DELETE"; + Requests[3307].Request.Path = "/subscriptions/835e542a-ab7f-/resourceGroups/6968a590-45c3-4b8/providers/Microsoft.DBforPostgreSQL/servers/0ad015d9-2/virtualNetworkRules/28c68bf3-a2e7-4fcc-9c3"; + Requests[3308] = new DefaultHttpContext(); + Requests[3308].RequestServices = CreateServices(); + Requests[3308].Request.Method = "PUT"; + Requests[3308].Request.Path = "/subscriptions/9a66e23d-c66a-/resourceGroups/3cc50aa3-1723-4b3/providers/Microsoft.DBforPostgreSQL/servers/6c0dad0d-d/virtualNetworkRules/05dc9c49-e336-4bd6-800"; + Requests[3309] = new DefaultHttpContext(); + Requests[3309].RequestServices = CreateServices(); + Requests[3309].Request.Method = "GET"; + Requests[3309].Request.Path = "/subscriptions/19864397-1c3e-/resourceGroups/ef721d97-e854-441/providers/Microsoft.Devices/IotHubs/8cc57d86-f02/certificates/7a5eb507-3b62-4"; + Requests[3310] = new DefaultHttpContext(); + Requests[3310].RequestServices = CreateServices(); + Requests[3310].Request.Method = "PUT"; + Requests[3310].Request.Path = "/subscriptions/9686d0c3-41ee-/resourceGroups/4ce4cb91-4844-472/providers/Microsoft.Devices/IotHubs/225bcf21-025/certificates/1ee68ef1-f240-4"; + Requests[3311] = new DefaultHttpContext(); + Requests[3311].RequestServices = CreateServices(); + Requests[3311].Request.Method = "DELETE"; + Requests[3311].Request.Path = "/subscriptions/1cc060e7-95e4-/resourceGroups/b3332fd1-e369-4f0/providers/Microsoft.Devices/IotHubs/22cae28d-822/certificates/6530ba8d-b17d-4"; + Requests[3312] = new DefaultHttpContext(); + Requests[3312].RequestServices = CreateServices(); + Requests[3312].Request.Method = "GET"; + Requests[3312].Request.Path = "/subscriptions/d7071c9b-ffce-/resourceGroups/3a657494-9aa6-4fa/providers/Microsoft.Devices/IotHubs/062f130e-26f/jobs/39c8d"; + Requests[3313] = new DefaultHttpContext(); + Requests[3313].RequestServices = CreateServices(); + Requests[3313].Request.Method = "GET"; + Requests[3313].Request.Path = "/subscriptions/9d20efa3-e385-/resourceGroups/c2e3eb0a-ce12-43d/providers/Microsoft.Devices/provisioningServices/5071ec2c-659f-46cd-b501/certificates/4b0ad731-7ad2-4"; + Requests[3314] = new DefaultHttpContext(); + Requests[3314].RequestServices = CreateServices(); + Requests[3314].Request.Method = "PUT"; + Requests[3314].Request.Path = "/subscriptions/3408d739-40d9-/resourceGroups/9aec2105-7123-4b4/providers/Microsoft.Devices/provisioningServices/da66ee27-0f04-48dd-9022/certificates/de033251-8c1e-4"; + Requests[3315] = new DefaultHttpContext(); + Requests[3315].RequestServices = CreateServices(); + Requests[3315].Request.Method = "DELETE"; + Requests[3315].Request.Path = "/subscriptions/366717c6-6da3-/resourceGroups/633159be-ed5c-494/providers/Microsoft.Devices/provisioningServices/b53adebe-316b-4c92-8b55/certificates/f4962a55-8b1b-4"; + Requests[3316] = new DefaultHttpContext(); + Requests[3316].RequestServices = CreateServices(); + Requests[3316].Request.Method = "GET"; + Requests[3316].Request.Path = "/subscriptions/573b6fb9-6eab-/resourceGroups/ff90c6f3-31ca-44c/providers/Microsoft.Devices/provisioningServices/23d4bcd8-d67f-4ef0-bbe4/operationresults/71ac46b8-85"; + Requests[3317] = new DefaultHttpContext(); + Requests[3317].RequestServices = CreateServices(); + Requests[3317].Request.Method = "PATCH"; + Requests[3317].Request.Path = "/subscriptions/59c7d074-a627-/resourceGroups/566e10e4-b8d1-447/providers/Microsoft.DevTestLab/labs/07f13ff/artifactsources/8a40b"; + Requests[3318] = new DefaultHttpContext(); + Requests[3318].RequestServices = CreateServices(); + Requests[3318].Request.Method = "DELETE"; + Requests[3318].Request.Path = "/subscriptions/65c5db43-c668-/resourceGroups/2c766feb-7f42-46d/providers/Microsoft.DevTestLab/labs/0f27dc9/artifactsources/54c2d"; + Requests[3319] = new DefaultHttpContext(); + Requests[3319].RequestServices = CreateServices(); + Requests[3319].Request.Method = "PUT"; + Requests[3319].Request.Path = "/subscriptions/ed4b8ab5-3851-/resourceGroups/478ef68e-701a-445/providers/Microsoft.DevTestLab/labs/fa933b4/artifactsources/919ea"; + Requests[3320] = new DefaultHttpContext(); + Requests[3320].RequestServices = CreateServices(); + Requests[3320].Request.Method = "GET"; + Requests[3320].Request.Path = "/subscriptions/8747c820-aaa9-/resourceGroups/2fb7773a-2cf8-410/providers/Microsoft.DevTestLab/labs/7e69c87/artifactsources/5cf25"; + Requests[3321] = new DefaultHttpContext(); + Requests[3321].RequestServices = CreateServices(); + Requests[3321].Request.Method = "GET"; + Requests[3321].Request.Path = "/subscriptions/7a07526c-05fc-/resourceGroups/37e5c640-c7db-452/providers/Microsoft.DevTestLab/labs/ea0eacc/costinsights/669eb"; + Requests[3322] = new DefaultHttpContext(); + Requests[3322].RequestServices = CreateServices(); + Requests[3322].Request.Method = "GET"; + Requests[3322].Request.Path = "/subscriptions/82ebb964-b1ca-/resourceGroups/891e765e-084f-459/providers/Microsoft.DevTestLab/labs/47ad73e/costs/465b3"; + Requests[3323] = new DefaultHttpContext(); + Requests[3323].RequestServices = CreateServices(); + Requests[3323].Request.Method = "PUT"; + Requests[3323].Request.Path = "/subscriptions/240668a4-342a-/resourceGroups/4fa075e0-71be-4af/providers/Microsoft.DevTestLab/labs/41d87fc/costs/52f84"; + Requests[3324] = new DefaultHttpContext(); + Requests[3324].RequestServices = CreateServices(); + Requests[3324].Request.Method = "GET"; + Requests[3324].Request.Path = "/subscriptions/9ef65464-77ae-/resourceGroups/f6d7f940-e0d7-49f/providers/Microsoft.DevTestLab/labs/6ca31a9/customimages/4deaf"; + Requests[3325] = new DefaultHttpContext(); + Requests[3325].RequestServices = CreateServices(); + Requests[3325].Request.Method = "DELETE"; + Requests[3325].Request.Path = "/subscriptions/4bfe781e-6f26-/resourceGroups/c209f8fd-0243-497/providers/Microsoft.DevTestLab/labs/a2222a1/customimages/ee766"; + Requests[3326] = new DefaultHttpContext(); + Requests[3326].RequestServices = CreateServices(); + Requests[3326].Request.Method = "PUT"; + Requests[3326].Request.Path = "/subscriptions/cb2e7a6a-a007-/resourceGroups/d87590ae-1577-4fe/providers/Microsoft.DevTestLab/labs/1abe00a/customimages/47848"; + Requests[3327] = new DefaultHttpContext(); + Requests[3327].RequestServices = CreateServices(); + Requests[3327].Request.Method = "GET"; + Requests[3327].Request.Path = "/subscriptions/f58dbffb-e010-/resourceGroups/311c0f6e-30c6-46d/providers/Microsoft.DevTestLab/labs/93e773e/formulas/ecede"; + Requests[3328] = new DefaultHttpContext(); + Requests[3328].RequestServices = CreateServices(); + Requests[3328].Request.Method = "PUT"; + Requests[3328].Request.Path = "/subscriptions/c107cc04-9e27-/resourceGroups/ca49246d-43d8-4bc/providers/Microsoft.DevTestLab/labs/cba58af/formulas/9f233"; + Requests[3329] = new DefaultHttpContext(); + Requests[3329].RequestServices = CreateServices(); + Requests[3329].Request.Method = "DELETE"; + Requests[3329].Request.Path = "/subscriptions/5c6a6bc8-38f9-/resourceGroups/0e650a9c-4ea3-482/providers/Microsoft.DevTestLab/labs/737f53e/formulas/3b155"; + Requests[3330] = new DefaultHttpContext(); + Requests[3330].RequestServices = CreateServices(); + Requests[3330].Request.Method = "DELETE"; + Requests[3330].Request.Path = "/subscriptions/51fb22fc-6577-/resourceGroups/71bb36bd-5568-414/providers/Microsoft.DevTestLab/labs/97ba7ce/notificationchannels/3a20a"; + Requests[3331] = new DefaultHttpContext(); + Requests[3331].RequestServices = CreateServices(); + Requests[3331].Request.Method = "PUT"; + Requests[3331].Request.Path = "/subscriptions/464234a2-4df2-/resourceGroups/3b6543d3-a73d-4f0/providers/Microsoft.DevTestLab/labs/409cf53/notificationchannels/a3fa3"; + Requests[3332] = new DefaultHttpContext(); + Requests[3332].RequestServices = CreateServices(); + Requests[3332].Request.Method = "GET"; + Requests[3332].Request.Path = "/subscriptions/18b1af85-6964-/resourceGroups/17a06894-a6fc-4aa/providers/Microsoft.DevTestLab/labs/25c4f29/notificationchannels/203d0"; + Requests[3333] = new DefaultHttpContext(); + Requests[3333].RequestServices = CreateServices(); + Requests[3333].Request.Method = "PATCH"; + Requests[3333].Request.Path = "/subscriptions/8f70a958-7f4e-/resourceGroups/70365a2a-60af-414/providers/Microsoft.DevTestLab/labs/5953304/notificationchannels/066c4"; + Requests[3334] = new DefaultHttpContext(); + Requests[3334].RequestServices = CreateServices(); + Requests[3334].Request.Method = "GET"; + Requests[3334].Request.Path = "/subscriptions/3b81286e-e472-/resourceGroups/c9db874d-05f9-405/providers/Microsoft.DevTestLab/labs/a0aef12/schedules/079b4"; + Requests[3335] = new DefaultHttpContext(); + Requests[3335].RequestServices = CreateServices(); + Requests[3335].Request.Method = "PUT"; + Requests[3335].Request.Path = "/subscriptions/7211e999-c534-/resourceGroups/36abedd6-9741-4fe/providers/Microsoft.DevTestLab/labs/93fa90a/schedules/d02ee"; + Requests[3336] = new DefaultHttpContext(); + Requests[3336].RequestServices = CreateServices(); + Requests[3336].Request.Method = "DELETE"; + Requests[3336].Request.Path = "/subscriptions/8bdf8b2b-7395-/resourceGroups/01e1a2bc-9768-4ad/providers/Microsoft.DevTestLab/labs/6219948/schedules/22fbb"; + Requests[3337] = new DefaultHttpContext(); + Requests[3337].RequestServices = CreateServices(); + Requests[3337].Request.Method = "PATCH"; + Requests[3337].Request.Path = "/subscriptions/d30fb32f-5a4c-/resourceGroups/5e7d9d16-3889-420/providers/Microsoft.DevTestLab/labs/86d2731/schedules/3b99b"; + Requests[3338] = new DefaultHttpContext(); + Requests[3338].RequestServices = CreateServices(); + Requests[3338].Request.Method = "PUT"; + Requests[3338].Request.Path = "/subscriptions/c98055a5-1dbf-/resourceGroups/2fb800b8-98c8-411/providers/Microsoft.DevTestLab/labs/9c9f0bb/servicerunners/4ed6c"; + Requests[3339] = new DefaultHttpContext(); + Requests[3339].RequestServices = CreateServices(); + Requests[3339].Request.Method = "GET"; + Requests[3339].Request.Path = "/subscriptions/b6f2aa85-8e4c-/resourceGroups/537c5357-23af-4d8/providers/Microsoft.DevTestLab/labs/386b6ad/servicerunners/58d65"; + Requests[3340] = new DefaultHttpContext(); + Requests[3340].RequestServices = CreateServices(); + Requests[3340].Request.Method = "DELETE"; + Requests[3340].Request.Path = "/subscriptions/6781ad81-92cc-/resourceGroups/9a28c44b-8be0-4da/providers/Microsoft.DevTestLab/labs/c56a384/servicerunners/9534b"; + Requests[3341] = new DefaultHttpContext(); + Requests[3341].RequestServices = CreateServices(); + Requests[3341].Request.Method = "GET"; + Requests[3341].Request.Path = "/subscriptions/0bdce12c-8c88-/resourceGroups/6f2ac3db-915c-49d/providers/Microsoft.DevTestLab/labs/a0a15aa/users/414dd"; + Requests[3342] = new DefaultHttpContext(); + Requests[3342].RequestServices = CreateServices(); + Requests[3342].Request.Method = "PUT"; + Requests[3342].Request.Path = "/subscriptions/05d01c49-787f-/resourceGroups/0afc3f1b-1d03-444/providers/Microsoft.DevTestLab/labs/3ab9845/users/2b9f3"; + Requests[3343] = new DefaultHttpContext(); + Requests[3343].RequestServices = CreateServices(); + Requests[3343].Request.Method = "DELETE"; + Requests[3343].Request.Path = "/subscriptions/220fd84a-115c-/resourceGroups/fdf85ba9-deff-496/providers/Microsoft.DevTestLab/labs/71a4942/users/5ac40"; + Requests[3344] = new DefaultHttpContext(); + Requests[3344].RequestServices = CreateServices(); + Requests[3344].Request.Method = "PATCH"; + Requests[3344].Request.Path = "/subscriptions/76763d83-4c08-/resourceGroups/cf41c903-4bfe-4d0/providers/Microsoft.DevTestLab/labs/5d32669/users/94058"; + Requests[3345] = new DefaultHttpContext(); + Requests[3345].RequestServices = CreateServices(); + Requests[3345].Request.Method = "DELETE"; + Requests[3345].Request.Path = "/subscriptions/2c8d932c-39b0-/resourceGroups/fb86db9f-fa17-45e/providers/Microsoft.DevTestLab/labs/692d2cc/virtualmachines/25152"; + Requests[3346] = new DefaultHttpContext(); + Requests[3346].RequestServices = CreateServices(); + Requests[3346].Request.Method = "PATCH"; + Requests[3346].Request.Path = "/subscriptions/5ca11c2a-52e7-/resourceGroups/a540fb29-7445-439/providers/Microsoft.DevTestLab/labs/5592d78/virtualmachines/c899d"; + Requests[3347] = new DefaultHttpContext(); + Requests[3347].RequestServices = CreateServices(); + Requests[3347].Request.Method = "GET"; + Requests[3347].Request.Path = "/subscriptions/39ff1035-9ce9-/resourceGroups/194f061b-7bb6-4f7/providers/Microsoft.DevTestLab/labs/7f7470c/virtualmachines/c07b7"; + Requests[3348] = new DefaultHttpContext(); + Requests[3348].RequestServices = CreateServices(); + Requests[3348].Request.Method = "PUT"; + Requests[3348].Request.Path = "/subscriptions/7f9b298e-19c0-/resourceGroups/74d616a4-67ed-4a1/providers/Microsoft.DevTestLab/labs/7a1f506/virtualmachines/a15c8"; + Requests[3349] = new DefaultHttpContext(); + Requests[3349].RequestServices = CreateServices(); + Requests[3349].Request.Method = "DELETE"; + Requests[3349].Request.Path = "/subscriptions/cb92cf57-475b-/resourceGroups/b823fa93-26fe-48b/providers/Microsoft.DevTestLab/labs/c05489d/virtualnetworks/2d893"; + Requests[3350] = new DefaultHttpContext(); + Requests[3350].RequestServices = CreateServices(); + Requests[3350].Request.Method = "GET"; + Requests[3350].Request.Path = "/subscriptions/a8587cdc-be8b-/resourceGroups/c7cc3d3d-8444-440/providers/Microsoft.DevTestLab/labs/7e70167/virtualnetworks/6b8e5"; + Requests[3351] = new DefaultHttpContext(); + Requests[3351].RequestServices = CreateServices(); + Requests[3351].Request.Method = "PUT"; + Requests[3351].Request.Path = "/subscriptions/667b8e98-3a20-/resourceGroups/b5396589-e938-4ba/providers/Microsoft.DevTestLab/labs/94cf8c1/virtualnetworks/23743"; + Requests[3352] = new DefaultHttpContext(); + Requests[3352].RequestServices = CreateServices(); + Requests[3352].Request.Method = "PATCH"; + Requests[3352].Request.Path = "/subscriptions/a7f5142a-2fd3-/resourceGroups/844129af-4d90-436/providers/Microsoft.DevTestLab/labs/e82cd99/virtualnetworks/a6943"; + Requests[3353] = new DefaultHttpContext(); + Requests[3353].RequestServices = CreateServices(); + Requests[3353].Request.Method = "PUT"; + Requests[3353].Request.Path = "/subscriptions/86ba4e3d-e710-/resourceGroups/61eb1780-5fee-40f/providers/Microsoft.DomainRegistration/domains/6c552d7e-e/domainOwnershipIdentifiers/3d8b5"; + Requests[3354] = new DefaultHttpContext(); + Requests[3354].RequestServices = CreateServices(); + Requests[3354].Request.Method = "GET"; + Requests[3354].Request.Path = "/subscriptions/adea34b2-089b-/resourceGroups/9f7d2796-e2f2-411/providers/Microsoft.DomainRegistration/domains/69636791-f/domainOwnershipIdentifiers/4880d"; + Requests[3355] = new DefaultHttpContext(); + Requests[3355].RequestServices = CreateServices(); + Requests[3355].Request.Method = "PATCH"; + Requests[3355].Request.Path = "/subscriptions/fba78ec5-fdb7-/resourceGroups/00cb3332-2f1b-454/providers/Microsoft.DomainRegistration/domains/960bff62-d/domainOwnershipIdentifiers/58326"; + Requests[3356] = new DefaultHttpContext(); + Requests[3356].RequestServices = CreateServices(); + Requests[3356].Request.Method = "DELETE"; + Requests[3356].Request.Path = "/subscriptions/57721672-3269-/resourceGroups/b58886a1-0e84-4cf/providers/Microsoft.DomainRegistration/domains/03e0af28-5/domainOwnershipIdentifiers/0aae0"; + Requests[3357] = new DefaultHttpContext(); + Requests[3357].RequestServices = CreateServices(); + Requests[3357].Request.Method = "GET"; + Requests[3357].Request.Path = "/subscriptions/6d5730d6-e2f3-/resourceGroups/b14c49da-cdbd-45a/providers/Microsoft.DomainRegistration/domains/8885430d-e/operationresults/ac4033c5-27"; + Requests[3358] = new DefaultHttpContext(); + Requests[3358].RequestServices = CreateServices(); + Requests[3358].Request.Method = "GET"; + Requests[3358].Request.Path = "/subscriptions/86a6de46-2b56-/resourceGroups/1c3fdec5-3267-4ea/providers/Microsoft.EventHub/namespaces/93dab2ae-0d90/AuthorizationRules/e063678c-d1d9-4549-87"; + Requests[3359] = new DefaultHttpContext(); + Requests[3359].RequestServices = CreateServices(); + Requests[3359].Request.Method = "PUT"; + Requests[3359].Request.Path = "/subscriptions/e46b19c3-e39d-/resourceGroups/0effc4fc-dae0-4bc/providers/Microsoft.EventHub/namespaces/3323b33f-bcbb/AuthorizationRules/05e9d411-ace3-483a-b7"; + Requests[3360] = new DefaultHttpContext(); + Requests[3360].RequestServices = CreateServices(); + Requests[3360].Request.Method = "POST"; + Requests[3360].Request.Path = "/subscriptions/e6433cb7-25b8-/resourceGroups/60505573-ea5a-484/providers/Microsoft.EventHub/namespaces/b7494581-60b9/AuthorizationRules/9b8d7cf2-7070-402b-83"; + Requests[3361] = new DefaultHttpContext(); + Requests[3361].RequestServices = CreateServices(); + Requests[3361].Request.Method = "DELETE"; + Requests[3361].Request.Path = "/subscriptions/b07abb9b-6e38-/resourceGroups/7080ba45-969d-438/providers/Microsoft.EventHub/namespaces/df0be321-c236/AuthorizationRules/56b153ae-9b89-495d-87"; + Requests[3362] = new DefaultHttpContext(); + Requests[3362].RequestServices = CreateServices(); + Requests[3362].Request.Method = "DELETE"; + Requests[3362].Request.Path = "/subscriptions/63825588-0fa7-/resourceGroups/07200c4e-b42a-43f/providers/Microsoft.EventHub/namespaces/11e1d14f-6fce/disasterRecoveryConfigs/6ccca"; + Requests[3363] = new DefaultHttpContext(); + Requests[3363].RequestServices = CreateServices(); + Requests[3363].Request.Method = "GET"; + Requests[3363].Request.Path = "/subscriptions/f23c07a8-d070-/resourceGroups/8bc5104f-c1af-477/providers/Microsoft.EventHub/namespaces/f4b34246-7329/disasterRecoveryConfigs/014a4"; + Requests[3364] = new DefaultHttpContext(); + Requests[3364].RequestServices = CreateServices(); + Requests[3364].Request.Method = "PUT"; + Requests[3364].Request.Path = "/subscriptions/d676d25b-261c-/resourceGroups/d7156a20-3756-467/providers/Microsoft.EventHub/namespaces/f62f9285-1ebf/disasterRecoveryConfigs/b521e"; + Requests[3365] = new DefaultHttpContext(); + Requests[3365].RequestServices = CreateServices(); + Requests[3365].Request.Method = "GET"; + Requests[3365].Request.Path = "/subscriptions/a9dd8015-3a9e-/resourceGroups/d2a6b28d-6290-4f5/providers/Microsoft.EventHub/namespaces/25628983-c29b/eventhubs/e292c262-a7a"; + Requests[3366] = new DefaultHttpContext(); + Requests[3366].RequestServices = CreateServices(); + Requests[3366].Request.Method = "DELETE"; + Requests[3366].Request.Path = "/subscriptions/8245ce58-5b91-/resourceGroups/d0f26433-38fb-414/providers/Microsoft.EventHub/namespaces/7916cd2a-b685/eventhubs/20b23e8b-faf"; + Requests[3367] = new DefaultHttpContext(); + Requests[3367].RequestServices = CreateServices(); + Requests[3367].Request.Method = "PUT"; + Requests[3367].Request.Path = "/subscriptions/458069f6-a89d-/resourceGroups/f8bfef7a-51b7-414/providers/Microsoft.EventHub/namespaces/c037d5e7-9337/eventhubs/de7c2f9c-ba5"; + Requests[3368] = new DefaultHttpContext(); + Requests[3368].RequestServices = CreateServices(); + Requests[3368].Request.Method = "GET"; + Requests[3368].Request.Path = "/subscriptions/25b76931-5fc9-/resourceGroups/24a9fd7a-77f2-443/providers/Microsoft.Fabric.Admin/fabricLocations/888fffbe/edgeGatewayPools/7bc8685b-1907-4"; + Requests[3369] = new DefaultHttpContext(); + Requests[3369].RequestServices = CreateServices(); + Requests[3369].Request.Method = "GET"; + Requests[3369].Request.Path = "/subscriptions/e2c9ca06-4020-/resourceGroups/9d360a02-2346-4e3/providers/Microsoft.Fabric.Admin/fabricLocations/e135c41a/edgeGateways/6573a524-60"; + Requests[3370] = new DefaultHttpContext(); + Requests[3370].RequestServices = CreateServices(); + Requests[3370].Request.Method = "GET"; + Requests[3370].Request.Path = "/subscriptions/59f15b36-470d-/resourceGroups/cb51a063-d8eb-44a/providers/Microsoft.Fabric.Admin/fabricLocations/f28c26e4/fileShares/3749c9ae-"; + Requests[3371] = new DefaultHttpContext(); + Requests[3371].RequestServices = CreateServices(); + Requests[3371].Request.Method = "GET"; + Requests[3371].Request.Path = "/subscriptions/a6cffdcc-1be8-/resourceGroups/2a9d91c4-9bac-44a/providers/Microsoft.Fabric.Admin/fabricLocations/8c63f058/infraRoleInstances/13c19aab-e29f-4aa"; + Requests[3372] = new DefaultHttpContext(); + Requests[3372].RequestServices = CreateServices(); + Requests[3372].Request.Method = "GET"; + Requests[3372].Request.Path = "/subscriptions/f69f041a-10f7-/resourceGroups/85530446-0d6a-4ac/providers/Microsoft.Fabric.Admin/fabricLocations/31ce57e5/infraRoles/357a95e0-"; + Requests[3373] = new DefaultHttpContext(); + Requests[3373].RequestServices = CreateServices(); + Requests[3373].Request.Method = "PUT"; + Requests[3373].Request.Path = "/subscriptions/b055c01a-2205-/resourceGroups/2b4cd670-f1f5-4ba/providers/Microsoft.Fabric.Admin/fabricLocations/473414f9/ipPools/e0cadd"; + Requests[3374] = new DefaultHttpContext(); + Requests[3374].RequestServices = CreateServices(); + Requests[3374].Request.Method = "GET"; + Requests[3374].Request.Path = "/subscriptions/607e0a5c-9ec3-/resourceGroups/f2046b73-4bc4-411/providers/Microsoft.Fabric.Admin/fabricLocations/68c05827/ipPools/fbdc06"; + Requests[3375] = new DefaultHttpContext(); + Requests[3375].RequestServices = CreateServices(); + Requests[3375].Request.Method = "GET"; + Requests[3375].Request.Path = "/subscriptions/af6944b0-4488-/resourceGroups/96965296-0eb6-496/providers/Microsoft.Fabric.Admin/fabricLocations/1fc92547/logicalNetworks/b82509b1-2f46-"; + Requests[3376] = new DefaultHttpContext(); + Requests[3376].RequestServices = CreateServices(); + Requests[3376].Request.Method = "GET"; + Requests[3376].Request.Path = "/subscriptions/a608e910-b580-/resourceGroups/aefb76fa-eaf1-40c/providers/Microsoft.Fabric.Admin/fabricLocations/9524ab4d/macAddressPools/782d68bb-c97b-"; + Requests[3377] = new DefaultHttpContext(); + Requests[3377].RequestServices = CreateServices(); + Requests[3377].Request.Method = "GET"; + Requests[3377].Request.Path = "/subscriptions/c0322e01-76ad-/resourceGroups/5f5fedf9-624e-45b/providers/Microsoft.Fabric.Admin/fabricLocations/caa1b26f/scaleUnitNodes/affdefc4-e6d5"; + Requests[3378] = new DefaultHttpContext(); + Requests[3378].RequestServices = CreateServices(); + Requests[3378].Request.Method = "GET"; + Requests[3378].Request.Path = "/subscriptions/d6ead371-c303-/resourceGroups/294246dd-2e03-4dc/providers/Microsoft.Fabric.Admin/fabricLocations/c696e4a5/scaleUnits/7f60922d-"; + Requests[3379] = new DefaultHttpContext(); + Requests[3379].RequestServices = CreateServices(); + Requests[3379].Request.Method = "GET"; + Requests[3379].Request.Path = "/subscriptions/ec855de5-fd42-/resourceGroups/2425691a-109f-48c/providers/Microsoft.Fabric.Admin/fabricLocations/70228030/slbMuxInstances/c78aad27-2a1e-"; + Requests[3380] = new DefaultHttpContext(); + Requests[3380].RequestServices = CreateServices(); + Requests[3380].Request.Method = "GET"; + Requests[3380].Request.Path = "/subscriptions/45e3d360-438a-/resourceGroups/e1112a0c-cd02-442/providers/Microsoft.Fabric.Admin/fabricLocations/86ec0b20/storageSubSystems/420268fa-0d4e-4f"; + Requests[3381] = new DefaultHttpContext(); + Requests[3381].RequestServices = CreateServices(); + Requests[3381].Request.Method = "DELETE"; + Requests[3381].Request.Path = "/subscriptions/57fb55b7-f927-/resourceGroups/083aabc1-c511-43a/providers/Microsoft.HDInsight/clusters/af0a3ac0-4b/applications/80caa166-df58-4"; + Requests[3382] = new DefaultHttpContext(); + Requests[3382].RequestServices = CreateServices(); + Requests[3382].Request.Method = "PUT"; + Requests[3382].Request.Path = "/subscriptions/c94a8523-be81-/resourceGroups/90f73fcf-12b0-4f0/providers/Microsoft.HDInsight/clusters/86e9a7cc-e9/applications/331802e5-7243-4"; + Requests[3383] = new DefaultHttpContext(); + Requests[3383].RequestServices = CreateServices(); + Requests[3383].Request.Method = "GET"; + Requests[3383].Request.Path = "/subscriptions/86518104-a76a-/resourceGroups/f5f9ef31-5f26-4fa/providers/Microsoft.HDInsight/clusters/7d8d2930-71/applications/16ba760b-58d4-4"; + Requests[3384] = new DefaultHttpContext(); + Requests[3384].RequestServices = CreateServices(); + Requests[3384].Request.Method = "POST"; + Requests[3384].Request.Path = "/subscriptions/ec0ff1bf-7a24-/resourceGroups/f335941a-09d2-4db/providers/Microsoft.HDInsight/clusters/74c47d1e-ca/configurations/47375384-7f14-40a"; + Requests[3385] = new DefaultHttpContext(); + Requests[3385].RequestServices = CreateServices(); + Requests[3385].Request.Method = "GET"; + Requests[3385].Request.Path = "/subscriptions/84989d71-4649-/resourceGroups/7d8a4e21-4bde-46d/providers/Microsoft.HDInsight/clusters/600b673a-a9/configurations/4f34dad8-fbd0-463"; + Requests[3386] = new DefaultHttpContext(); + Requests[3386].RequestServices = CreateServices(); + Requests[3386].Request.Method = "PUT"; + Requests[3386].Request.Path = "/subscriptions/895adc7a-e6d7-/resourceGroups/5aec0f3c-3f35-4f8/providers/Microsoft.HDInsight/clusters/fd9f2077-e8/extensions/738b2267-5834"; + Requests[3387] = new DefaultHttpContext(); + Requests[3387].RequestServices = CreateServices(); + Requests[3387].Request.Method = "GET"; + Requests[3387].Request.Path = "/subscriptions/40dfacd0-88b7-/resourceGroups/95b0592b-8b30-484/providers/Microsoft.HDInsight/clusters/d66af711-41/extensions/eddf2322-f849"; + Requests[3388] = new DefaultHttpContext(); + Requests[3388].RequestServices = CreateServices(); + Requests[3388].Request.Method = "DELETE"; + Requests[3388].Request.Path = "/subscriptions/a5268cf5-f38e-/resourceGroups/3222354b-6d79-4e5/providers/Microsoft.HDInsight/clusters/7ab5314f-c3/extensions/6191cf63-170b"; + Requests[3389] = new DefaultHttpContext(); + Requests[3389].RequestServices = CreateServices(); + Requests[3389].Request.Method = "DELETE"; + Requests[3389].Request.Path = "/subscriptions/ba17eac9-4688-/resourceGroups/01d17d09-8b6b-45b/providers/Microsoft.HDInsight/clusters/8e7d7570-ff/scriptActions/c84ee3be-e"; + Requests[3390] = new DefaultHttpContext(); + Requests[3390].RequestServices = CreateServices(); + Requests[3390].Request.Method = "GET"; + Requests[3390].Request.Path = "/subscriptions/c9cb6624-2b5f-/resourceGroups/b9450e47-22f2-4d4/providers/Microsoft.HDInsight/clusters/40e019e9-0b/scriptExecutionHistory/f8de71ae-c1a9-40f"; + Requests[3391] = new DefaultHttpContext(); + Requests[3391].RequestServices = CreateServices(); + Requests[3391].Request.Method = "GET"; + Requests[3391].Request.Path = "/subscriptions/7ec477e5-ac16-/resourceGroups/c7f4325f-0d73-497/providers/Microsoft.InfrastructureInsights.Admin/regionHealths/c41e81a4/alerts/3da84651-"; + Requests[3392] = new DefaultHttpContext(); + Requests[3392].RequestServices = CreateServices(); + Requests[3392].Request.Method = "PUT"; + Requests[3392].Request.Path = "/subscriptions/bdfa19f5-5a49-/resourceGroups/75aa0f90-c478-4a7/providers/Microsoft.InfrastructureInsights.Admin/regionHealths/be5d02eb/alerts/99a7ba49-"; + Requests[3393] = new DefaultHttpContext(); + Requests[3393].RequestServices = CreateServices(); + Requests[3393].Request.Method = "GET"; + Requests[3393].Request.Path = "/subscriptions/6fff71b3-f607-/resourceGroups/7e748805-a8bf-48a/providers/Microsoft.InfrastructureInsights.Admin/regionHealths/e9c924a7/serviceHealths/90824631-9564"; + Requests[3394] = new DefaultHttpContext(); + Requests[3394].RequestServices = CreateServices(); + Requests[3394].Request.Method = "GET"; + Requests[3394].Request.Path = "/subscriptions/2a027b58-2cc4-/resourcegroups/d3b7f39d-2f52-456/providers/microsoft.insights/alertrules/8c880bcc/incidents/160930b8-908"; + Requests[3395] = new DefaultHttpContext(); + Requests[3395].RequestServices = CreateServices(); + Requests[3395].Request.Method = "DELETE"; + Requests[3395].Request.Path = "/subscriptions/91f08de7-3e16-/resourceGroups/b791199d-a916-4f9/providers/Microsoft.Insights/components/b68673d7-e47/Annotations/38ab4753-4ce"; + Requests[3396] = new DefaultHttpContext(); + Requests[3396].RequestServices = CreateServices(); + Requests[3396].Request.Method = "GET"; + Requests[3396].Request.Path = "/subscriptions/a01836a1-4237-/resourceGroups/7e9cb7ce-7141-459/providers/Microsoft.Insights/components/66177e4a-565/Annotations/57e8b636-97d"; + Requests[3397] = new DefaultHttpContext(); + Requests[3397].RequestServices = CreateServices(); + Requests[3397].Request.Method = "GET"; + Requests[3397].Request.Path = "/subscriptions/1e4cfe00-98e2-/resourceGroups/6bcaa751-d800-422/providers/Microsoft.Insights/components/24aa5bb7-291/APIKeys/061a5"; + Requests[3398] = new DefaultHttpContext(); + Requests[3398].RequestServices = CreateServices(); + Requests[3398].Request.Method = "DELETE"; + Requests[3398].Request.Path = "/subscriptions/21517f54-ce1d-/resourceGroups/8b66ce4c-7a57-41c/providers/Microsoft.Insights/components/ce38dda7-2ba/APIKeys/38984"; + Requests[3399] = new DefaultHttpContext(); + Requests[3399].RequestServices = CreateServices(); + Requests[3399].Request.Method = "GET"; + Requests[3399].Request.Path = "/subscriptions/6432cce1-84bb-/resourceGroups/d36ad5d3-ab58-407/providers/Microsoft.Insights/components/c43ba01d-f25/exportconfiguration/7a4d5df6"; + Requests[3400] = new DefaultHttpContext(); + Requests[3400].RequestServices = CreateServices(); + Requests[3400].Request.Method = "DELETE"; + Requests[3400].Request.Path = "/subscriptions/c5277787-8dfe-/resourceGroups/2ac7cedb-3175-4f5/providers/Microsoft.Insights/components/28486ac1-532/exportconfiguration/e2f45ed3"; + Requests[3401] = new DefaultHttpContext(); + Requests[3401].RequestServices = CreateServices(); + Requests[3401].Request.Method = "PUT"; + Requests[3401].Request.Path = "/subscriptions/3809cbaa-3fef-/resourceGroups/4e3eaafe-49ab-4e7/providers/Microsoft.Insights/components/6c7e4407-114/exportconfiguration/07c9b8fd"; + Requests[3402] = new DefaultHttpContext(); + Requests[3402].RequestServices = CreateServices(); + Requests[3402].Request.Method = "PATCH"; + Requests[3402].Request.Path = "/subscriptions/8ea3c354-a636-/resourceGroups/237a1060-030e-424/providers/Microsoft.Insights/components/c0c9e35b-3ff/favorites/b6a305b0-7"; + Requests[3403] = new DefaultHttpContext(); + Requests[3403].RequestServices = CreateServices(); + Requests[3403].Request.Method = "GET"; + Requests[3403].Request.Path = "/subscriptions/83c03a59-7aef-/resourceGroups/afbca39e-7782-484/providers/Microsoft.Insights/components/94ba494b-09d/favorites/724cca15-f"; + Requests[3404] = new DefaultHttpContext(); + Requests[3404].RequestServices = CreateServices(); + Requests[3404].Request.Method = "PUT"; + Requests[3404].Request.Path = "/subscriptions/50cc5434-4a9e-/resourceGroups/cbd3da14-c9e6-4de/providers/Microsoft.Insights/components/7c49186f-81c/favorites/7caf8368-2"; + Requests[3405] = new DefaultHttpContext(); + Requests[3405].RequestServices = CreateServices(); + Requests[3405].Request.Method = "DELETE"; + Requests[3405].Request.Path = "/subscriptions/7a756fdc-a524-/resourceGroups/8ddabb24-16f6-494/providers/Microsoft.Insights/components/475cb2ff-e29/favorites/fa76a670-3"; + Requests[3406] = new DefaultHttpContext(); + Requests[3406].RequestServices = CreateServices(); + Requests[3406].Request.Method = "GET"; + Requests[3406].Request.Path = "/subscriptions/f5c9d63f-f0ca-/resourceGroups/5b5d91a1-d59a-4ef/providers/Microsoft.Insights/components/f9ac0728-6a7/ProactiveDetectionConfigs/ec45fcf8-6aa4-4"; + Requests[3407] = new DefaultHttpContext(); + Requests[3407].RequestServices = CreateServices(); + Requests[3407].Request.Method = "PUT"; + Requests[3407].Request.Path = "/subscriptions/3e577ed7-427e-/resourceGroups/5263565b-38e0-4ed/providers/Microsoft.Insights/components/8c250dda-8c4/ProactiveDetectionConfigs/7444f46b-9f18-4"; + Requests[3408] = new DefaultHttpContext(); + Requests[3408].RequestServices = CreateServices(); + Requests[3408].Request.Method = "DELETE"; + Requests[3408].Request.Path = "/subscriptions/0a43c0cb-d928-/resourceGroups/a758f055-0ae3-4b3/providers/Microsoft.Insights/components/60d59084-310/WorkItemConfigs/3c3ed86f-ec71-4c"; + Requests[3409] = new DefaultHttpContext(); + Requests[3409].RequestServices = CreateServices(); + Requests[3409].Request.Method = "GET"; + Requests[3409].Request.Path = "/subscriptions/316ac405-ce13-/resourceGroups/e560146f-4833-42a/providers/Microsoft.Insights/metricAlerts/98975d82/status/42e57674-5"; + Requests[3410] = new DefaultHttpContext(); + Requests[3410].RequestServices = CreateServices(); + Requests[3410].Request.Method = "PUT"; + Requests[3410].Request.Path = "/subscriptions/fa740faa-02a7-/resourceGroups/06df777b-6828-495/providers/Microsoft.KeyVault/vaults/5c7c7a91-/accessPolicies/e58e91cf-880a"; + Requests[3411] = new DefaultHttpContext(); + Requests[3411].RequestServices = CreateServices(); + Requests[3411].Request.Method = "PUT"; + Requests[3411].Request.Path = "/subscriptions/bf7f52c5-c34e-/resourceGroups/6c1475dd-45cb-4da/providers/Microsoft.KeyVault/vaults/089d3ed2-/secrets/eeaf647a-3"; + Requests[3412] = new DefaultHttpContext(); + Requests[3412].RequestServices = CreateServices(); + Requests[3412].Request.Method = "GET"; + Requests[3412].Request.Path = "/subscriptions/8caf14cf-36d1-/resourceGroups/5ebec0af-47ae-486/providers/Microsoft.KeyVault/vaults/f8578ac6-/secrets/1e0b720e-f"; + Requests[3413] = new DefaultHttpContext(); + Requests[3413].RequestServices = CreateServices(); + Requests[3413].Request.Method = "PATCH"; + Requests[3413].Request.Path = "/subscriptions/e64be3f1-455e-/resourceGroups/77a10d7c-0826-41e/providers/Microsoft.KeyVault/vaults/4611d573-/secrets/77d1ae57-d"; + Requests[3414] = new DefaultHttpContext(); + Requests[3414].RequestServices = CreateServices(); + Requests[3414].Request.Method = "DELETE"; + Requests[3414].Request.Path = "/subscriptions/a89d2554-8b3d-/resourceGroups/5bb60ee0-961d-491/providers/Microsoft.Logic/integrationAccounts/ae87537e-a0c2-4345-8d0/agreements/b9443cbe-09f8"; + Requests[3415] = new DefaultHttpContext(); + Requests[3415].RequestServices = CreateServices(); + Requests[3415].Request.Method = "PUT"; + Requests[3415].Request.Path = "/subscriptions/83f77e9d-47c8-/resourceGroups/1fae412b-8bb1-436/providers/Microsoft.Logic/integrationAccounts/8da2006f-6d5b-43d0-84c/agreements/4179b367-47b9"; + Requests[3416] = new DefaultHttpContext(); + Requests[3416].RequestServices = CreateServices(); + Requests[3416].Request.Method = "GET"; + Requests[3416].Request.Path = "/subscriptions/9944d1f7-fcd6-/resourceGroups/59e12ce2-265e-4cd/providers/Microsoft.Logic/integrationAccounts/1c2cfc07-6f1b-4c26-a72/agreements/6e560d15-2de5"; + Requests[3417] = new DefaultHttpContext(); + Requests[3417].RequestServices = CreateServices(); + Requests[3417].Request.Method = "GET"; + Requests[3417].Request.Path = "/subscriptions/45b3c593-58f1-/resourceGroups/42735bdd-caf7-4e0/providers/Microsoft.Logic/integrationAccounts/8c199903-2dcd-421a-908/assemblies/aa9e3869-960d-4aad-8"; + Requests[3418] = new DefaultHttpContext(); + Requests[3418].RequestServices = CreateServices(); + Requests[3418].Request.Method = "PUT"; + Requests[3418].Request.Path = "/subscriptions/5be904ce-7027-/resourceGroups/c77e78d8-2960-44c/providers/Microsoft.Logic/integrationAccounts/fe042cde-897d-43db-812/assemblies/bfd033e0-3b86-494e-a"; + Requests[3419] = new DefaultHttpContext(); + Requests[3419].RequestServices = CreateServices(); + Requests[3419].Request.Method = "DELETE"; + Requests[3419].Request.Path = "/subscriptions/46d8692a-5efb-/resourceGroups/6ca63d18-a9c5-470/providers/Microsoft.Logic/integrationAccounts/1081cf25-bcfd-4f1e-88b/assemblies/42638952-6002-4a71-8"; + Requests[3420] = new DefaultHttpContext(); + Requests[3420].RequestServices = CreateServices(); + Requests[3420].Request.Method = "GET"; + Requests[3420].Request.Path = "/subscriptions/8258bf56-9050-/resourceGroups/63a4f130-3f3e-446/providers/Microsoft.Logic/integrationAccounts/a4e1b33b-086a-4c71-acf/batchConfigurations/48e5915f-0304-4a24-bdf"; + Requests[3421] = new DefaultHttpContext(); + Requests[3421].RequestServices = CreateServices(); + Requests[3421].Request.Method = "PUT"; + Requests[3421].Request.Path = "/subscriptions/3dcc6f9a-0607-/resourceGroups/1b6b0311-bb46-45d/providers/Microsoft.Logic/integrationAccounts/7ea78d7b-b5ff-461f-97c/batchConfigurations/f1329801-08a1-441a-92b"; + Requests[3422] = new DefaultHttpContext(); + Requests[3422].RequestServices = CreateServices(); + Requests[3422].Request.Method = "DELETE"; + Requests[3422].Request.Path = "/subscriptions/341494c5-a7a2-/resourceGroups/2d3ad9fc-8ad2-49a/providers/Microsoft.Logic/integrationAccounts/4557ff95-0810-45fd-b7d/batchConfigurations/3f5e2435-f53e-4e64-ac0"; + Requests[3423] = new DefaultHttpContext(); + Requests[3423].RequestServices = CreateServices(); + Requests[3423].Request.Method = "PUT"; + Requests[3423].Request.Path = "/subscriptions/facc9199-5c76-/resourceGroups/a9296b0d-c8cf-455/providers/Microsoft.Logic/integrationAccounts/109a723f-4a69-4c1d-b9d/certificates/9d3b354a-cb9a-4"; + Requests[3424] = new DefaultHttpContext(); + Requests[3424].RequestServices = CreateServices(); + Requests[3424].Request.Method = "GET"; + Requests[3424].Request.Path = "/subscriptions/770b950c-6c5f-/resourceGroups/40842794-92d4-465/providers/Microsoft.Logic/integrationAccounts/04596cda-b71c-4aed-8f7/certificates/232adb9b-532a-4"; + Requests[3425] = new DefaultHttpContext(); + Requests[3425].RequestServices = CreateServices(); + Requests[3425].Request.Method = "DELETE"; + Requests[3425].Request.Path = "/subscriptions/9fe019a5-7d4f-/resourceGroups/e4086f43-a5cf-412/providers/Microsoft.Logic/integrationAccounts/8ade6bc2-932c-4ab2-851/certificates/10f15b81-976f-4"; + Requests[3426] = new DefaultHttpContext(); + Requests[3426].RequestServices = CreateServices(); + Requests[3426].Request.Method = "PUT"; + Requests[3426].Request.Path = "/subscriptions/675e9ca0-bebc-/resourceGroups/df8c1564-079d-438/providers/Microsoft.Logic/integrationAccounts/c31d70ff-e44d-45a3-b94/maps/1492c7e"; + Requests[3427] = new DefaultHttpContext(); + Requests[3427].RequestServices = CreateServices(); + Requests[3427].Request.Method = "DELETE"; + Requests[3427].Request.Path = "/subscriptions/83805967-8966-/resourceGroups/88820d1b-3680-4a0/providers/Microsoft.Logic/integrationAccounts/06052c1d-5492-4690-8c7/maps/9749938"; + Requests[3428] = new DefaultHttpContext(); + Requests[3428].RequestServices = CreateServices(); + Requests[3428].Request.Method = "GET"; + Requests[3428].Request.Path = "/subscriptions/adae313f-3aaa-/resourceGroups/86a80972-a793-458/providers/Microsoft.Logic/integrationAccounts/beb4afd6-6118-4eac-a6c/maps/e415a0f"; + Requests[3429] = new DefaultHttpContext(); + Requests[3429].RequestServices = CreateServices(); + Requests[3429].Request.Method = "PUT"; + Requests[3429].Request.Path = "/subscriptions/8445dd71-95bc-/resourceGroups/2468edb6-a925-4df/providers/Microsoft.Logic/integrationAccounts/e6fbca30-a620-4b61-ad6/partners/dc0ae800-e3"; + Requests[3430] = new DefaultHttpContext(); + Requests[3430].RequestServices = CreateServices(); + Requests[3430].Request.Method = "DELETE"; + Requests[3430].Request.Path = "/subscriptions/a276c58d-0701-/resourceGroups/3f491580-e657-4a5/providers/Microsoft.Logic/integrationAccounts/d67a397c-2e15-4b0d-b0d/partners/2b0df951-aa"; + Requests[3431] = new DefaultHttpContext(); + Requests[3431].RequestServices = CreateServices(); + Requests[3431].Request.Method = "GET"; + Requests[3431].Request.Path = "/subscriptions/ae21e61d-abd6-/resourceGroups/a3f00f37-44b4-4cd/providers/Microsoft.Logic/integrationAccounts/3c340d12-79d8-4999-a05/partners/f45944ee-c2"; + Requests[3432] = new DefaultHttpContext(); + Requests[3432].RequestServices = CreateServices(); + Requests[3432].Request.Method = "GET"; + Requests[3432].Request.Path = "/subscriptions/edd99227-881c-/resourceGroups/7efc798d-64f4-415/providers/Microsoft.Logic/integrationAccounts/0c176140-3da5-4e72-b4c/schemas/f2dd5000-f"; + Requests[3433] = new DefaultHttpContext(); + Requests[3433].RequestServices = CreateServices(); + Requests[3433].Request.Method = "PUT"; + Requests[3433].Request.Path = "/subscriptions/b2f6bb05-6364-/resourceGroups/9f082b70-ac23-438/providers/Microsoft.Logic/integrationAccounts/520f51ee-c409-4652-9d4/schemas/33ae82b5-4"; + Requests[3434] = new DefaultHttpContext(); + Requests[3434].RequestServices = CreateServices(); + Requests[3434].Request.Method = "DELETE"; + Requests[3434].Request.Path = "/subscriptions/55d79d71-f66a-/resourceGroups/0ff3e5ec-2cf6-420/providers/Microsoft.Logic/integrationAccounts/b406af49-1a1e-4b44-889/schemas/001a8f66-1"; + Requests[3435] = new DefaultHttpContext(); + Requests[3435].RequestServices = CreateServices(); + Requests[3435].Request.Method = "GET"; + Requests[3435].Request.Path = "/subscriptions/ca06de7d-2384-/resourceGroups/c7b32f8a-537c-4c5/providers/Microsoft.Logic/integrationAccounts/da5c8b29-e1bf-4f27-b1e/sessions/fce204b4-59"; + Requests[3436] = new DefaultHttpContext(); + Requests[3436].RequestServices = CreateServices(); + Requests[3436].Request.Method = "PUT"; + Requests[3436].Request.Path = "/subscriptions/f4a773fa-3623-/resourceGroups/e8d57092-bd6c-4d0/providers/Microsoft.Logic/integrationAccounts/0b917153-9421-4dd2-863/sessions/a20f4dfe-bb"; + Requests[3437] = new DefaultHttpContext(); + Requests[3437].RequestServices = CreateServices(); + Requests[3437].Request.Method = "DELETE"; + Requests[3437].Request.Path = "/subscriptions/9dca12ee-3653-/resourceGroups/ac2811ea-658b-425/providers/Microsoft.Logic/integrationAccounts/f0a98d4f-83e8-48b3-936/sessions/13c8b848-08"; + Requests[3438] = new DefaultHttpContext(); + Requests[3438].RequestServices = CreateServices(); + Requests[3438].Request.Method = "GET"; + Requests[3438].Request.Path = "/subscriptions/a39d0d27-e75a-/resourceGroups/88e1ebcf-55bc-4df/providers/Microsoft.Logic/workflows/c9a7cfc9-e19/accessKeys/e3d14eec-6e40"; + Requests[3439] = new DefaultHttpContext(); + Requests[3439].RequestServices = CreateServices(); + Requests[3439].Request.Method = "PUT"; + Requests[3439].Request.Path = "/subscriptions/04728e65-a966-/resourceGroups/87649c29-119d-4d1/providers/Microsoft.Logic/workflows/d0057c23-f0b/accessKeys/80b98ff3-7c74"; + Requests[3440] = new DefaultHttpContext(); + Requests[3440].RequestServices = CreateServices(); + Requests[3440].Request.Method = "DELETE"; + Requests[3440].Request.Path = "/subscriptions/d25ea2c4-73b7-/resourceGroups/a2115e2c-6715-476/providers/Microsoft.Logic/workflows/520432c1-178/accessKeys/0f5f3699-5536"; + Requests[3441] = new DefaultHttpContext(); + Requests[3441].RequestServices = CreateServices(); + Requests[3441].Request.Method = "GET"; + Requests[3441].Request.Path = "/subscriptions/58dc1beb-427b-/resourceGroups/e0ae3904-15a6-441/providers/Microsoft.Logic/workflows/324a8e57-eb5/runs/9954b65"; + Requests[3442] = new DefaultHttpContext(); + Requests[3442].RequestServices = CreateServices(); + Requests[3442].Request.Method = "GET"; + Requests[3442].Request.Path = "/subscriptions/7ee18238-c94f-/resourceGroups/aaf26dab-be63-4a0/providers/Microsoft.Logic/workflows/5ac508d1-b74/triggers/e36ea17d-bc"; + Requests[3443] = new DefaultHttpContext(); + Requests[3443].RequestServices = CreateServices(); + Requests[3443].Request.Method = "GET"; + Requests[3443].Request.Path = "/subscriptions/04753533-3003-/resourceGroups/f0b53651-11c5-46a/providers/Microsoft.Logic/workflows/45cfd6e1-071/versions/a1d9beac-"; + Requests[3444] = new DefaultHttpContext(); + Requests[3444].RequestServices = CreateServices(); + Requests[3444].Request.Method = "GET"; + Requests[3444].Request.Path = "/subscriptions/7fe7659b-854c-/resourceGroups/7eeea410-0acf-44d/providers/Microsoft.MachineLearning/commitmentPlans/874bc03d-dc26-4b98/commitmentAssociations/3b7de80f-568e-47c7-8328-5"; + Requests[3445] = new DefaultHttpContext(); + Requests[3445].RequestServices = CreateServices(); + Requests[3445].Request.Method = "DELETE"; + Requests[3445].Request.Path = "/subscriptions/74f93457-340b-/resourceGroups/b5e3612f-e76c-4cd/providers/Microsoft.MachineLearningExperimentation/accounts/18236e0b-a9/workspaces/92fd2220-8536"; + Requests[3446] = new DefaultHttpContext(); + Requests[3446].RequestServices = CreateServices(); + Requests[3446].Request.Method = "PATCH"; + Requests[3446].Request.Path = "/subscriptions/6962ebd6-cc86-/resourceGroups/859efb4a-320e-46e/providers/Microsoft.MachineLearningExperimentation/accounts/e7122c1f-57/workspaces/ca11d1e2-3711"; + Requests[3447] = new DefaultHttpContext(); + Requests[3447].RequestServices = CreateServices(); + Requests[3447].Request.Method = "PUT"; + Requests[3447].Request.Path = "/subscriptions/9272f9d6-3e16-/resourceGroups/0eb450c0-4347-438/providers/Microsoft.MachineLearningExperimentation/accounts/1ca629f4-7c/workspaces/28d40310-65dd"; + Requests[3448] = new DefaultHttpContext(); + Requests[3448].RequestServices = CreateServices(); + Requests[3448].Request.Method = "GET"; + Requests[3448].Request.Path = "/subscriptions/e22207a2-a169-/resourceGroups/ed413dd8-5f6f-4ed/providers/Microsoft.MachineLearningExperimentation/accounts/2a38bfc5-45/workspaces/69d7d6b6-4df6"; + Requests[3449] = new DefaultHttpContext(); + Requests[3449].RequestServices = CreateServices(); + Requests[3449].Request.Method = "DELETE"; + Requests[3449].Request.Path = "/subscriptions/6b4618b9-a1f2-/resourceGroups/09598923-73e4-436/providers/Microsoft.Media/mediaServices/77b791d1-94/assets/9037a48f-"; + Requests[3450] = new DefaultHttpContext(); + Requests[3450].RequestServices = CreateServices(); + Requests[3450].Request.Method = "GET"; + Requests[3450].Request.Path = "/subscriptions/1c86d388-768b-/resourceGroups/5f3406fa-de9b-452/providers/Microsoft.Media/mediaServices/6da2edd1-4e/assets/0a6e653c-"; + Requests[3451] = new DefaultHttpContext(); + Requests[3451].RequestServices = CreateServices(); + Requests[3451].Request.Method = "PUT"; + Requests[3451].Request.Path = "/subscriptions/29c71370-ded1-/resourceGroups/01246921-d023-433/providers/Microsoft.Media/mediaServices/575aabb7-98/assets/dfb6574d-"; + Requests[3452] = new DefaultHttpContext(); + Requests[3452].RequestServices = CreateServices(); + Requests[3452].Request.Method = "PATCH"; + Requests[3452].Request.Path = "/subscriptions/fbe499ab-4a47-/resourceGroups/6e975c2c-e6ee-4cf/providers/Microsoft.Media/mediaServices/c04fb11b-29/assets/2098e208-"; + Requests[3453] = new DefaultHttpContext(); + Requests[3453].RequestServices = CreateServices(); + Requests[3453].Request.Method = "PUT"; + Requests[3453].Request.Path = "/subscriptions/431df7d0-1438-/resourceGroups/edd52ad9-e2da-42f/providers/Microsoft.Media/mediaServices/4fea9547-c4/contentKeyPolicies/ed45b748-6b2a-4140-9"; + Requests[3454] = new DefaultHttpContext(); + Requests[3454].RequestServices = CreateServices(); + Requests[3454].Request.Method = "PATCH"; + Requests[3454].Request.Path = "/subscriptions/560879bc-2edf-/resourceGroups/64cecb88-253d-447/providers/Microsoft.Media/mediaServices/565ca3f1-a1/contentKeyPolicies/bfa0ff76-b629-4df8-b"; + Requests[3455] = new DefaultHttpContext(); + Requests[3455].RequestServices = CreateServices(); + Requests[3455].Request.Method = "DELETE"; + Requests[3455].Request.Path = "/subscriptions/242ac867-1815-/resourceGroups/e595fd97-9394-456/providers/Microsoft.Media/mediaServices/d4009294-a9/contentKeyPolicies/1e39e331-e756-4aec-b"; + Requests[3456] = new DefaultHttpContext(); + Requests[3456].RequestServices = CreateServices(); + Requests[3456].Request.Method = "GET"; + Requests[3456].Request.Path = "/subscriptions/2ff1f888-ca70-/resourceGroups/f62a7b17-9974-41c/providers/Microsoft.Media/mediaServices/b3cb07d5-ff/contentKeyPolicies/8d411abb-a294-40c2-8"; + Requests[3457] = new DefaultHttpContext(); + Requests[3457].RequestServices = CreateServices(); + Requests[3457].Request.Method = "PUT"; + Requests[3457].Request.Path = "/subscriptions/ec94515f-30ec-/resourceGroups/6a5c3965-23e2-4b2/providers/Microsoft.Media/mediaservices/aa0289a6-94/liveEvents/3460be13-4902"; + Requests[3458] = new DefaultHttpContext(); + Requests[3458].RequestServices = CreateServices(); + Requests[3458].Request.Method = "DELETE"; + Requests[3458].Request.Path = "/subscriptions/fce00197-4414-/resourceGroups/24bae5da-f2d1-439/providers/Microsoft.Media/mediaservices/48ba7cc1-8c/liveEvents/ad7dabcb-4800"; + Requests[3459] = new DefaultHttpContext(); + Requests[3459].RequestServices = CreateServices(); + Requests[3459].Request.Method = "PATCH"; + Requests[3459].Request.Path = "/subscriptions/7d16a90e-6805-/resourceGroups/81d6308c-4ac5-44a/providers/Microsoft.Media/mediaservices/17d1c142-9e/liveEvents/894da6ee-5797"; + Requests[3460] = new DefaultHttpContext(); + Requests[3460].RequestServices = CreateServices(); + Requests[3460].Request.Method = "GET"; + Requests[3460].Request.Path = "/subscriptions/b05cbbe8-d596-/resourceGroups/bae581b4-f0a0-4a7/providers/Microsoft.Media/mediaservices/5d14d32b-28/liveEvents/a2d58cf7-97cd"; + Requests[3461] = new DefaultHttpContext(); + Requests[3461].RequestServices = CreateServices(); + Requests[3461].Request.Method = "GET"; + Requests[3461].Request.Path = "/subscriptions/b2d2dd83-6242-/resourceGroups/e432b4c5-1e33-4bb/providers/Microsoft.Media/mediaservices/ec36fbb8-e1/streamingEndpoints/8f85ac35-6236-47b7-82"; + Requests[3462] = new DefaultHttpContext(); + Requests[3462].RequestServices = CreateServices(); + Requests[3462].Request.Method = "PUT"; + Requests[3462].Request.Path = "/subscriptions/c7052482-1345-/resourceGroups/54d7ce81-c9a3-464/providers/Microsoft.Media/mediaservices/07d639bf-64/streamingEndpoints/5f16bd2e-7a44-4434-97"; + Requests[3463] = new DefaultHttpContext(); + Requests[3463].RequestServices = CreateServices(); + Requests[3463].Request.Method = "DELETE"; + Requests[3463].Request.Path = "/subscriptions/1b7b8379-9abf-/resourceGroups/42a42f00-e4ff-458/providers/Microsoft.Media/mediaservices/9d556a1f-5d/streamingEndpoints/fe984e90-14e8-4b18-8d"; + Requests[3464] = new DefaultHttpContext(); + Requests[3464].RequestServices = CreateServices(); + Requests[3464].Request.Method = "PATCH"; + Requests[3464].Request.Path = "/subscriptions/0a8ae250-edab-/resourceGroups/d8389ee8-525f-4e2/providers/Microsoft.Media/mediaservices/7593dbe6-c6/streamingEndpoints/da79415f-0b00-47d8-81"; + Requests[3465] = new DefaultHttpContext(); + Requests[3465].RequestServices = CreateServices(); + Requests[3465].Request.Method = "DELETE"; + Requests[3465].Request.Path = "/subscriptions/6f607e44-2c08-/resourceGroups/55e10e2d-b392-4e8/providers/Microsoft.Media/mediaServices/e0f0b994-c4/streamingLocators/4f057f4c-3138-442d-a"; + Requests[3466] = new DefaultHttpContext(); + Requests[3466].RequestServices = CreateServices(); + Requests[3466].Request.Method = "GET"; + Requests[3466].Request.Path = "/subscriptions/0724475b-6cef-/resourceGroups/be400e3b-4589-405/providers/Microsoft.Media/mediaServices/dab901a4-1a/streamingLocators/e6ebdf85-e020-4da3-8"; + Requests[3467] = new DefaultHttpContext(); + Requests[3467].RequestServices = CreateServices(); + Requests[3467].Request.Method = "PUT"; + Requests[3467].Request.Path = "/subscriptions/a1cc61ad-b4a5-/resourceGroups/6c64ae08-62c7-4cd/providers/Microsoft.Media/mediaServices/6c3bbb85-b7/streamingLocators/58c86d08-773d-49f1-9"; + Requests[3468] = new DefaultHttpContext(); + Requests[3468].RequestServices = CreateServices(); + Requests[3468].Request.Method = "DELETE"; + Requests[3468].Request.Path = "/subscriptions/f33c929d-8374-/resourceGroups/2b1f2831-bde1-438/providers/Microsoft.Media/mediaServices/7841d2e4-7b/streamingPolicies/819544ba-0f0d-4d61-"; + Requests[3469] = new DefaultHttpContext(); + Requests[3469].RequestServices = CreateServices(); + Requests[3469].Request.Method = "GET"; + Requests[3469].Request.Path = "/subscriptions/0e246b2e-5a5b-/resourceGroups/d6e9b20f-5f05-492/providers/Microsoft.Media/mediaServices/23a8ef34-cf/streamingPolicies/1a311120-ac7f-49ac-"; + Requests[3470] = new DefaultHttpContext(); + Requests[3470].RequestServices = CreateServices(); + Requests[3470].Request.Method = "PUT"; + Requests[3470].Request.Path = "/subscriptions/ee21fcef-6d6c-/resourceGroups/19d13cc9-4f4f-430/providers/Microsoft.Media/mediaServices/89979045-ce/streamingPolicies/ad4846f1-6292-4f23-"; + Requests[3471] = new DefaultHttpContext(); + Requests[3471].RequestServices = CreateServices(); + Requests[3471].Request.Method = "PUT"; + Requests[3471].Request.Path = "/subscriptions/8e152d6a-a8ef-/resourceGroups/a6a4ae7b-2ba0-4a0/providers/Microsoft.Media/mediaServices/281f2511-4d/transforms/2ddf13b1-5d1c"; + Requests[3472] = new DefaultHttpContext(); + Requests[3472].RequestServices = CreateServices(); + Requests[3472].Request.Method = "GET"; + Requests[3472].Request.Path = "/subscriptions/a738e7b6-5c24-/resourceGroups/ff6f8f79-6d91-48e/providers/Microsoft.Media/mediaServices/ffad459c-fb/transforms/74b0f4ec-e2b2"; + Requests[3473] = new DefaultHttpContext(); + Requests[3473].RequestServices = CreateServices(); + Requests[3473].Request.Method = "DELETE"; + Requests[3473].Request.Path = "/subscriptions/29032d00-bd97-/resourceGroups/70eed3bf-d608-446/providers/Microsoft.Media/mediaServices/82e5fdc5-28/transforms/e8dd47a9-f6b2"; + Requests[3474] = new DefaultHttpContext(); + Requests[3474].RequestServices = CreateServices(); + Requests[3474].Request.Method = "PATCH"; + Requests[3474].Request.Path = "/subscriptions/cae4330a-c2db-/resourceGroups/e5b692e6-9d4e-4d4/providers/Microsoft.Media/mediaServices/940bed30-f0/transforms/b1a4a952-ec2f"; + Requests[3475] = new DefaultHttpContext(); + Requests[3475].RequestServices = CreateServices(); + Requests[3475].Request.Method = "GET"; + Requests[3475].Request.Path = "/subscriptions/b1cde871-d53f-/resourceGroups/cb23be53-b3ec-4cf/providers/Microsoft.Migrate/projects/6a04db49-0d/groups/8310a8a8-"; + Requests[3476] = new DefaultHttpContext(); + Requests[3476].RequestServices = CreateServices(); + Requests[3476].Request.Method = "DELETE"; + Requests[3476].Request.Path = "/subscriptions/69e31c17-a1dd-/resourceGroups/96948bf6-8042-460/providers/Microsoft.Migrate/projects/5fe2908d-3f/groups/af6d0b61-"; + Requests[3477] = new DefaultHttpContext(); + Requests[3477].RequestServices = CreateServices(); + Requests[3477].Request.Method = "PUT"; + Requests[3477].Request.Path = "/subscriptions/0fede060-c092-/resourceGroups/889e957a-12af-450/providers/Microsoft.Migrate/projects/0b6d2ea8-6f/groups/cc09f2a0-"; + Requests[3478] = new DefaultHttpContext(); + Requests[3478].RequestServices = CreateServices(); + Requests[3478].Request.Method = "GET"; + Requests[3478].Request.Path = "/subscriptions/d5b448b2-fe13-/resourceGroups/3d43c187-84c8-438/providers/Microsoft.Migrate/projects/9fddb64a-f3/machines/da76e210-88"; + Requests[3479] = new DefaultHttpContext(); + Requests[3479].RequestServices = CreateServices(); + Requests[3479].Request.Method = "PUT"; + Requests[3479].Request.Path = "/subscriptions/66b629db-8bb7-/resourceGroups/6ab07d6e-d430-498/providers/Microsoft.Network/expressRouteCircuits/a6e42d3a-8f/authorizations/5382a1f2-d735-496"; + Requests[3480] = new DefaultHttpContext(); + Requests[3480].RequestServices = CreateServices(); + Requests[3480].Request.Method = "DELETE"; + Requests[3480].Request.Path = "/subscriptions/19d6eacf-828d-/resourceGroups/e95c5dd2-f1db-449/providers/Microsoft.Network/expressRouteCircuits/653b6e58-2f/authorizations/8d5e4209-95b0-44e"; + Requests[3481] = new DefaultHttpContext(); + Requests[3481].RequestServices = CreateServices(); + Requests[3481].Request.Method = "GET"; + Requests[3481].Request.Path = "/subscriptions/8b99a4d9-9927-/resourceGroups/66fa6cab-4016-4ef/providers/Microsoft.Network/expressRouteCircuits/7b047da0-7f/authorizations/81aaaf8a-7a2d-4fa"; + Requests[3482] = new DefaultHttpContext(); + Requests[3482].RequestServices = CreateServices(); + Requests[3482].Request.Method = "GET"; + Requests[3482].Request.Path = "/subscriptions/257048b4-9ee5-/resourceGroups/913860d6-5fa2-4cd/providers/Microsoft.Network/expressRouteCircuits/2a7ba91e-65/peerings/9b2e7641-4e"; + Requests[3483] = new DefaultHttpContext(); + Requests[3483].RequestServices = CreateServices(); + Requests[3483].Request.Method = "PUT"; + Requests[3483].Request.Path = "/subscriptions/03ce3505-de9f-/resourceGroups/45ea07df-d01a-4de/providers/Microsoft.Network/expressRouteCircuits/78de00a7-7b/peerings/825d05ea-97"; + Requests[3484] = new DefaultHttpContext(); + Requests[3484].RequestServices = CreateServices(); + Requests[3484].Request.Method = "DELETE"; + Requests[3484].Request.Path = "/subscriptions/50fce6bf-0405-/resourceGroups/089d2eae-e217-4ee/providers/Microsoft.Network/expressRouteCircuits/04227265-a0/peerings/1414f54f-f2"; + Requests[3485] = new DefaultHttpContext(); + Requests[3485].RequestServices = CreateServices(); + Requests[3485].Request.Method = "PUT"; + Requests[3485].Request.Path = "/subscriptions/3cae6b34-754a-/resourceGroups/96ec70cf-e66d-44e/providers/Microsoft.Network/expressRouteCrossConnections/04d2ebd6-2352-464c-/peerings/8b8b5ada-e2"; + Requests[3486] = new DefaultHttpContext(); + Requests[3486].RequestServices = CreateServices(); + Requests[3486].Request.Method = "GET"; + Requests[3486].Request.Path = "/subscriptions/b0b15d0e-3f77-/resourceGroups/4b596d96-7d88-466/providers/Microsoft.Network/expressRouteCrossConnections/2d1c3c49-d9ef-4ad6-/peerings/4973736a-31"; + Requests[3487] = new DefaultHttpContext(); + Requests[3487].RequestServices = CreateServices(); + Requests[3487].Request.Method = "DELETE"; + Requests[3487].Request.Path = "/subscriptions/100cd908-a6c8-/resourceGroups/05900e9d-03fa-45e/providers/Microsoft.Network/expressRouteCrossConnections/af306fae-5ab8-4e01-/peerings/73d1e4d5-a8"; + Requests[3488] = new DefaultHttpContext(); + Requests[3488].RequestServices = CreateServices(); + Requests[3488].Request.Method = "GET"; + Requests[3488].Request.Path = "/subscriptions/d15b397f-87e7-/resourceGroups/e53b121d-e898-461/providers/Microsoft.Network/loadBalancers/657ea4b9-80bc-4d/backendAddressPools/845b9bd4-eb60-4efd-a25"; + Requests[3489] = new DefaultHttpContext(); + Requests[3489].RequestServices = CreateServices(); + Requests[3489].Request.Method = "GET"; + Requests[3489].Request.Path = "/subscriptions/5eadf865-50fe-/resourceGroups/56ed28c1-4446-4be/providers/Microsoft.Network/loadBalancers/6d45e820-e9f3-44/frontendIPConfigurations/4d2c7fae-49c2-43be-b51a-ba0"; + Requests[3490] = new DefaultHttpContext(); + Requests[3490].RequestServices = CreateServices(); + Requests[3490].Request.Method = "DELETE"; + Requests[3490].Request.Path = "/subscriptions/92fed8da-a027-/resourceGroups/cf9329e0-acc4-40c/providers/Microsoft.Network/loadBalancers/9149b402-b735-49/inboundNatRules/05407719-0ced-440e"; + Requests[3491] = new DefaultHttpContext(); + Requests[3491].RequestServices = CreateServices(); + Requests[3491].Request.Method = "PUT"; + Requests[3491].Request.Path = "/subscriptions/e7cbb2bc-f673-/resourceGroups/c5e12e47-ecc3-428/providers/Microsoft.Network/loadBalancers/24a32522-8bce-4b/inboundNatRules/44e2be43-e8c5-4a7d"; + Requests[3492] = new DefaultHttpContext(); + Requests[3492].RequestServices = CreateServices(); + Requests[3492].Request.Method = "GET"; + Requests[3492].Request.Path = "/subscriptions/87a6f75a-4edb-/resourceGroups/4f2a16dd-59de-436/providers/Microsoft.Network/loadBalancers/20705bb8-9340-47/inboundNatRules/077940ae-6d04-47d7"; + Requests[3493] = new DefaultHttpContext(); + Requests[3493].RequestServices = CreateServices(); + Requests[3493].Request.Method = "GET"; + Requests[3493].Request.Path = "/subscriptions/539ecc95-3fd8-/resourceGroups/cc362dbe-3e8d-475/providers/Microsoft.Network/loadBalancers/993ec159-315f-40/loadBalancingRules/a2814eff-c5cb-4f77-9d"; + Requests[3494] = new DefaultHttpContext(); + Requests[3494].RequestServices = CreateServices(); + Requests[3494].Request.Method = "GET"; + Requests[3494].Request.Path = "/subscriptions/49548392-8520-/resourceGroups/8f88c160-0718-4aa/providers/Microsoft.Network/loadBalancers/83ca8776-b035-4f/probes/e17a5b15-"; + Requests[3495] = new DefaultHttpContext(); + Requests[3495].RequestServices = CreateServices(); + Requests[3495].Request.Method = "GET"; + Requests[3495].Request.Path = "/subscriptions/ae9e6ad1-39a3-/resourceGroups/6312cebc-0617-4cd/providers/Microsoft.Network/networkInterfaces/c13bc402-5ad7-42fe-9/ipConfigurations/2cc4b5b9-c51c-4587-"; + Requests[3496] = new DefaultHttpContext(); + Requests[3496].RequestServices = CreateServices(); + Requests[3496].Request.Method = "GET"; + Requests[3496].Request.Path = "/subscriptions/25352ebf-30d2-/resourceGroups/566b5f1c-c7e6-4da/providers/Microsoft.Network/networkSecurityGroups/87e41767-6fab-4ac7-a5a5-/defaultSecurityRules/5e871e30-467c-45f2-8606"; + Requests[3497] = new DefaultHttpContext(); + Requests[3497].RequestServices = CreateServices(); + Requests[3497].Request.Method = "PUT"; + Requests[3497].Request.Path = "/subscriptions/663da4a5-c53e-/resourceGroups/1c16b27e-bee4-4c6/providers/Microsoft.Network/networkSecurityGroups/b9fa6247-e969-4b15-91f1-/securityRules/cad39ae6-638c-40"; + Requests[3498] = new DefaultHttpContext(); + Requests[3498].RequestServices = CreateServices(); + Requests[3498].Request.Method = "GET"; + Requests[3498].Request.Path = "/subscriptions/7b2c1d21-0842-/resourceGroups/14e9a315-9d85-492/providers/Microsoft.Network/networkSecurityGroups/eefa68cd-49b8-493f-bc82-/securityRules/c3020b27-97c7-4d"; + Requests[3499] = new DefaultHttpContext(); + Requests[3499].RequestServices = CreateServices(); + Requests[3499].Request.Method = "DELETE"; + Requests[3499].Request.Path = "/subscriptions/74ad4561-642e-/resourceGroups/548e10e6-21ef-48d/providers/Microsoft.Network/networkSecurityGroups/cdaa2261-9a27-4164-bfd3-/securityRules/f755a7fe-150b-40"; + Requests[3500] = new DefaultHttpContext(); + Requests[3500].RequestServices = CreateServices(); + Requests[3500].Request.Method = "GET"; + Requests[3500].Request.Path = "/subscriptions/d5018188-f3da-/resourceGroups/34b1e79e-f8e8-4e7/providers/Microsoft.Network/networkWatchers/7ae3cdd7-6d63-436f/connectionMonitors/1d4b8c23-8f45-4228-b2"; + Requests[3501] = new DefaultHttpContext(); + Requests[3501].RequestServices = CreateServices(); + Requests[3501].Request.Method = "PUT"; + Requests[3501].Request.Path = "/subscriptions/812cbacc-9dae-/resourceGroups/113810f4-23a8-456/providers/Microsoft.Network/networkWatchers/a3b85687-2393-41f5/connectionMonitors/e41d6e08-0612-4e2c-b8"; + Requests[3502] = new DefaultHttpContext(); + Requests[3502].RequestServices = CreateServices(); + Requests[3502].Request.Method = "DELETE"; + Requests[3502].Request.Path = "/subscriptions/4c7b9ef9-d467-/resourceGroups/229eaf93-33ca-45f/providers/Microsoft.Network/networkWatchers/71cf04bf-e6c7-41b3/connectionMonitors/7e252119-8d6d-4329-95"; + Requests[3503] = new DefaultHttpContext(); + Requests[3503].RequestServices = CreateServices(); + Requests[3503].Request.Method = "DELETE"; + Requests[3503].Request.Path = "/subscriptions/e8ee2592-fb52-/resourceGroups/bfec8c7a-9255-4cd/providers/Microsoft.Network/networkWatchers/86b3a912-5557-4d50/packetCaptures/4d7fa849-1aa6-4a4"; + Requests[3504] = new DefaultHttpContext(); + Requests[3504].RequestServices = CreateServices(); + Requests[3504].Request.Method = "PUT"; + Requests[3504].Request.Path = "/subscriptions/3f8771fc-cf9c-/resourceGroups/51ea5769-7963-4c9/providers/Microsoft.Network/networkWatchers/e7ed7998-a975-4b66/packetCaptures/cc2d15e0-6167-46d"; + Requests[3505] = new DefaultHttpContext(); + Requests[3505].RequestServices = CreateServices(); + Requests[3505].Request.Method = "GET"; + Requests[3505].Request.Path = "/subscriptions/1c397139-f8b4-/resourceGroups/33350aff-f876-46c/providers/Microsoft.Network/networkWatchers/3cc2f582-a877-4c81/packetCaptures/c932b2cc-752e-479"; + Requests[3506] = new DefaultHttpContext(); + Requests[3506].RequestServices = CreateServices(); + Requests[3506].Request.Method = "PATCH"; + Requests[3506].Request.Path = "/subscriptions/c4ceeee2-499b-/resourceGroups/1b13683e-a54b-4ef/providers/Microsoft.Network/routeFilters/1a6512dc-7b59-4/routeFilterRules/c5447648"; + Requests[3507] = new DefaultHttpContext(); + Requests[3507].RequestServices = CreateServices(); + Requests[3507].Request.Method = "PUT"; + Requests[3507].Request.Path = "/subscriptions/4b5b50e5-71a8-/resourceGroups/8a7b1f6b-e319-411/providers/Microsoft.Network/routeFilters/965ece29-30a0-4/routeFilterRules/bb43553d"; + Requests[3508] = new DefaultHttpContext(); + Requests[3508].RequestServices = CreateServices(); + Requests[3508].Request.Method = "GET"; + Requests[3508].Request.Path = "/subscriptions/e85664f7-cb4d-/resourceGroups/de439e56-c194-47d/providers/Microsoft.Network/routeFilters/49ebd842-df69-4/routeFilterRules/485fb1e2"; + Requests[3509] = new DefaultHttpContext(); + Requests[3509].RequestServices = CreateServices(); + Requests[3509].Request.Method = "DELETE"; + Requests[3509].Request.Path = "/subscriptions/ca69deed-9837-/resourceGroups/97054c49-9288-42f/providers/Microsoft.Network/routeFilters/af54ef10-8a30-4/routeFilterRules/ad10f706"; + Requests[3510] = new DefaultHttpContext(); + Requests[3510].RequestServices = CreateServices(); + Requests[3510].Request.Method = "DELETE"; + Requests[3510].Request.Path = "/subscriptions/c4ce9705-3a5c-/resourceGroups/ee0861c9-1b4c-4a9/providers/Microsoft.Network/routeTables/74a90a65-c3ee-/routes/d8de5d25-"; + Requests[3511] = new DefaultHttpContext(); + Requests[3511].RequestServices = CreateServices(); + Requests[3511].Request.Method = "GET"; + Requests[3511].Request.Path = "/subscriptions/6b45e9b3-7a2e-/resourceGroups/6b5de833-7585-427/providers/Microsoft.Network/routeTables/70dc046a-7562-/routes/eebb21d4-"; + Requests[3512] = new DefaultHttpContext(); + Requests[3512].RequestServices = CreateServices(); + Requests[3512].Request.Method = "PUT"; + Requests[3512].Request.Path = "/subscriptions/e5d69f04-3056-/resourceGroups/7d90d3d4-5f57-42f/providers/Microsoft.Network/routeTables/904f088c-a724-/routes/dc5d32f4-"; + Requests[3513] = new DefaultHttpContext(); + Requests[3513].RequestServices = CreateServices(); + Requests[3513].Request.Method = "GET"; + Requests[3513].Request.Path = "/subscriptions/e6c5c6a0-8bc3-/resourceGroups/cd559ce5-1478-4ef/providers/Microsoft.Network/trafficmanagerprofiles/6844464f-42/heatMaps/e290e83f-81"; + Requests[3514] = new DefaultHttpContext(); + Requests[3514].RequestServices = CreateServices(); + Requests[3514].Request.Method = "PUT"; + Requests[3514].Request.Path = "/subscriptions/9f8c1c68-c62f-/resourceGroups/fb3c9fd1-0aed-475/providers/Microsoft.Network/virtualNetworks/99492edd-674a-4396/subnets/dd42e3ce-5"; + Requests[3515] = new DefaultHttpContext(); + Requests[3515].RequestServices = CreateServices(); + Requests[3515].Request.Method = "DELETE"; + Requests[3515].Request.Path = "/subscriptions/9ec94caa-1fa2-/resourceGroups/fa59ad3e-76a6-475/providers/Microsoft.Network/virtualNetworks/d2cbf431-aebf-465a/subnets/e165129d-7"; + Requests[3516] = new DefaultHttpContext(); + Requests[3516].RequestServices = CreateServices(); + Requests[3516].Request.Method = "GET"; + Requests[3516].Request.Path = "/subscriptions/84802f5d-0e20-/resourceGroups/46d89d5a-30c3-42e/providers/Microsoft.Network/virtualNetworks/94b2f236-e103-4fd5/subnets/eda77098-4"; + Requests[3517] = new DefaultHttpContext(); + Requests[3517].RequestServices = CreateServices(); + Requests[3517].Request.Method = "PUT"; + Requests[3517].Request.Path = "/subscriptions/5daf30dd-c1c2-/resourceGroups/a36200e0-21df-40b/providers/Microsoft.Network/virtualNetworks/7291513a-2bbb-4ac9/virtualNetworkPeerings/1eeab136-f13b-4e12-9165-f"; + Requests[3518] = new DefaultHttpContext(); + Requests[3518].RequestServices = CreateServices(); + Requests[3518].Request.Method = "GET"; + Requests[3518].Request.Path = "/subscriptions/5979864a-1e0e-/resourceGroups/35760caf-0ba4-4d9/providers/Microsoft.Network/virtualNetworks/65a1e7d2-f6db-486f/virtualNetworkPeerings/eb88034e-de66-4603-8068-d"; + Requests[3519] = new DefaultHttpContext(); + Requests[3519].RequestServices = CreateServices(); + Requests[3519].Request.Method = "DELETE"; + Requests[3519].Request.Path = "/subscriptions/3bc50e43-56f8-/resourceGroups/2e8e58a1-ccfe-40c/providers/Microsoft.Network/virtualNetworks/01d7ba2d-4f50-4325/virtualNetworkPeerings/2d7b59bb-44ae-4d45-89c1-e"; + Requests[3520] = new DefaultHttpContext(); + Requests[3520].RequestServices = CreateServices(); + Requests[3520].Request.Method = "GET"; + Requests[3520].Request.Path = "/subscriptions/d0e51f0f-e341-/resourceGroups/7015988f-c967-46d/providers/Microsoft.NotificationHubs/namespaces/5509cf7b-bbc2/AuthorizationRules/fa601838-c88b-4d3e-8a"; + Requests[3521] = new DefaultHttpContext(); + Requests[3521].RequestServices = CreateServices(); + Requests[3521].Request.Method = "POST"; + Requests[3521].Request.Path = "/subscriptions/ffe46171-0688-/resourceGroups/6d371afb-1342-4a9/providers/Microsoft.NotificationHubs/namespaces/573505a4-bfc1/AuthorizationRules/7e6cad8e-f67d-4a00-9e"; + Requests[3522] = new DefaultHttpContext(); + Requests[3522].RequestServices = CreateServices(); + Requests[3522].Request.Method = "PUT"; + Requests[3522].Request.Path = "/subscriptions/6bb218d6-ae5e-/resourceGroups/612529f0-6c64-4b4/providers/Microsoft.NotificationHubs/namespaces/54d977a2-d122/AuthorizationRules/ec3e663b-ec3e-492a-a0"; + Requests[3523] = new DefaultHttpContext(); + Requests[3523].RequestServices = CreateServices(); + Requests[3523].Request.Method = "DELETE"; + Requests[3523].Request.Path = "/subscriptions/3d8907b3-7f3a-/resourceGroups/0c6d05eb-eb56-491/providers/Microsoft.NotificationHubs/namespaces/8084355a-2f16/AuthorizationRules/fa175406-7bcd-4a52-a1"; + Requests[3524] = new DefaultHttpContext(); + Requests[3524].RequestServices = CreateServices(); + Requests[3524].Request.Method = "GET"; + Requests[3524].Request.Path = "/subscriptions/0b663048-b011-/resourceGroups/51ead463-7a5c-426/providers/Microsoft.NotificationHubs/namespaces/510666c2-0757/notificationHubs/497c6769-b883-442d-"; + Requests[3525] = new DefaultHttpContext(); + Requests[3525].RequestServices = CreateServices(); + Requests[3525].Request.Method = "PUT"; + Requests[3525].Request.Path = "/subscriptions/68cd1e09-d086-/resourceGroups/df90658b-9a4c-4f7/providers/Microsoft.NotificationHubs/namespaces/c30c7689-8344/notificationHubs/7d56aac1-c1ce-4741-"; + Requests[3526] = new DefaultHttpContext(); + Requests[3526].RequestServices = CreateServices(); + Requests[3526].Request.Method = "DELETE"; + Requests[3526].Request.Path = "/subscriptions/8e525449-ae5d-/resourceGroups/14f47cc7-e239-466/providers/Microsoft.NotificationHubs/namespaces/cd3315c9-566a/notificationHubs/2fc36085-358e-4441-"; + Requests[3527] = new DefaultHttpContext(); + Requests[3527].RequestServices = CreateServices(); + Requests[3527].Request.Method = "PUT"; + Requests[3527].Request.Path = "/subscriptions/710ee48c-ed7f-/resourcegroups/e61a06e0-5941-43f/providers/Microsoft.OperationalInsights/workspaces/bc28940f-1dc8/dataSources/e713d136-7fb9-"; + Requests[3528] = new DefaultHttpContext(); + Requests[3528].RequestServices = CreateServices(); + Requests[3528].Request.Method = "DELETE"; + Requests[3528].Request.Path = "/subscriptions/89c230c4-f669-/resourcegroups/06be5007-4c2e-43d/providers/Microsoft.OperationalInsights/workspaces/1c68c98e-5945/dataSources/81c7ea20-d414-"; + Requests[3529] = new DefaultHttpContext(); + Requests[3529].RequestServices = CreateServices(); + Requests[3529].Request.Method = "GET"; + Requests[3529].Request.Path = "/subscriptions/625a8b49-a0cb-/resourcegroups/620ff9ef-abad-4fd/providers/Microsoft.OperationalInsights/workspaces/dc5c6816-19d4/dataSources/720c06e3-d2f6-"; + Requests[3530] = new DefaultHttpContext(); + Requests[3530].RequestServices = CreateServices(); + Requests[3530].Request.Method = "GET"; + Requests[3530].Request.Path = "/subscriptions/4ad9920b-4a5a-/resourcegroups/89973266-5e39-4b5/providers/Microsoft.OperationalInsights/workspaces/4909c312-dbeb/linkedServices/0768e184-337d-40c"; + Requests[3531] = new DefaultHttpContext(); + Requests[3531].RequestServices = CreateServices(); + Requests[3531].Request.Method = "DELETE"; + Requests[3531].Request.Path = "/subscriptions/a42221bc-6939-/resourcegroups/eea66522-3c8f-423/providers/Microsoft.OperationalInsights/workspaces/f026dd23-7b03/linkedServices/99a350dc-1018-4ff"; + Requests[3532] = new DefaultHttpContext(); + Requests[3532].RequestServices = CreateServices(); + Requests[3532].Request.Method = "PUT"; + Requests[3532].Request.Path = "/subscriptions/854eef44-406c-/resourcegroups/cecb243c-ffae-40d/providers/Microsoft.OperationalInsights/workspaces/1b373304-b97f/linkedServices/e0fcc4c2-e01f-4a9"; + Requests[3533] = new DefaultHttpContext(); + Requests[3533].RequestServices = CreateServices(); + Requests[3533].Request.Method = "PUT"; + Requests[3533].Request.Path = "/subscriptions/e75eee98-b6e1-/resourcegroups/63bd8925-1692-4d3/providers/Microsoft.OperationalInsights/workspaces/44911d4b-fe80/savedSearches/e769a61f-99a8-4"; + Requests[3534] = new DefaultHttpContext(); + Requests[3534].RequestServices = CreateServices(); + Requests[3534].Request.Method = "GET"; + Requests[3534].Request.Path = "/subscriptions/5d38ef6f-01e3-/resourcegroups/e67da77a-ef46-419/providers/Microsoft.OperationalInsights/workspaces/e98b50c9-4b1b/savedSearches/61efa1ad-0f34-4"; + Requests[3535] = new DefaultHttpContext(); + Requests[3535].RequestServices = CreateServices(); + Requests[3535].Request.Method = "DELETE"; + Requests[3535].Request.Path = "/subscriptions/7e186464-2492-/resourcegroups/6808b2d6-4fc8-4a1/providers/Microsoft.OperationalInsights/workspaces/65ba8286-41e6/savedSearches/42742120-5a4d-4"; + Requests[3536] = new DefaultHttpContext(); + Requests[3536].RequestServices = CreateServices(); + Requests[3536].Request.Method = "POST"; + Requests[3536].Request.Path = "/subscriptions/0711c343-9d56-/resourcegroups/6b963c83-5dd9-463/providers/Microsoft.OperationalInsights/workspaces/c2fc1d95-a208/search/a2d68"; + Requests[3537] = new DefaultHttpContext(); + Requests[3537].RequestServices = CreateServices(); + Requests[3537].Request.Method = "GET"; + Requests[3537].Request.Path = "/subscriptions/b5e1fd8b-477c-/resourcegroups/a4184d19-140c-4a2/providers/Microsoft.OperationalInsights/workspaces/d1e19421-328b/storageInsightConfigs/bc4542e7-52f7-420f"; + Requests[3538] = new DefaultHttpContext(); + Requests[3538].RequestServices = CreateServices(); + Requests[3538].Request.Method = "PUT"; + Requests[3538].Request.Path = "/subscriptions/180b27eb-c0ef-/resourcegroups/be736599-edd9-4af/providers/Microsoft.OperationalInsights/workspaces/f4d97e63-0d72/storageInsightConfigs/e5dbdbf3-5a52-4766"; + Requests[3539] = new DefaultHttpContext(); + Requests[3539].RequestServices = CreateServices(); + Requests[3539].Request.Method = "DELETE"; + Requests[3539].Request.Path = "/subscriptions/976f60f0-7ec5-/resourcegroups/d9fbb8af-ee01-48c/providers/Microsoft.OperationalInsights/workspaces/e113c199-6720/storageInsightConfigs/19535fab-363f-45c2"; + Requests[3540] = new DefaultHttpContext(); + Requests[3540].RequestServices = CreateServices(); + Requests[3540].Request.Method = "GET"; + Requests[3540].Request.Path = "/Subscriptions/4c290d24-be40-/resourceGroups/698f0b3b-a8d2-4ff/providers/Microsoft.RecoveryServices/vaults/f7387631-1ac/replicationAlertSettings/382c300d-0536-4f"; + Requests[3541] = new DefaultHttpContext(); + Requests[3541].RequestServices = CreateServices(); + Requests[3541].Request.Method = "PUT"; + Requests[3541].Request.Path = "/Subscriptions/d65c917d-1573-/resourceGroups/5da6d08f-a858-433/providers/Microsoft.RecoveryServices/vaults/57b4ae74-499/replicationAlertSettings/a3506944-14c7-42"; + Requests[3542] = new DefaultHttpContext(); + Requests[3542].RequestServices = CreateServices(); + Requests[3542].Request.Method = "GET"; + Requests[3542].Request.Path = "/Subscriptions/42beeaa2-095a-/resourceGroups/97b6e781-6091-480/providers/Microsoft.RecoveryServices/vaults/889e9029-909/replicationEvents/680ef85e-"; + Requests[3543] = new DefaultHttpContext(); + Requests[3543].RequestServices = CreateServices(); + Requests[3543].Request.Method = "DELETE"; + Requests[3543].Request.Path = "/Subscriptions/bde811a2-f54b-/resourceGroups/1ba0c0cd-6e5b-40e/providers/Microsoft.RecoveryServices/vaults/1592acdf-b31/replicationFabrics/d0e1cfc9-8"; + Requests[3544] = new DefaultHttpContext(); + Requests[3544].RequestServices = CreateServices(); + Requests[3544].Request.Method = "PUT"; + Requests[3544].Request.Path = "/Subscriptions/f6bb761d-e13e-/resourceGroups/e5ea48fb-f05e-4dc/providers/Microsoft.RecoveryServices/vaults/0ad4de85-b03/replicationFabrics/720696fa-7"; + Requests[3545] = new DefaultHttpContext(); + Requests[3545].RequestServices = CreateServices(); + Requests[3545].Request.Method = "GET"; + Requests[3545].Request.Path = "/Subscriptions/4085e236-a93e-/resourceGroups/c3ad4b7f-9a5b-4e2/providers/Microsoft.RecoveryServices/vaults/d1d0adce-9a4/replicationFabrics/f39b8c82-5"; + Requests[3546] = new DefaultHttpContext(); + Requests[3546].RequestServices = CreateServices(); + Requests[3546].Request.Method = "GET"; + Requests[3546].Request.Path = "/Subscriptions/f26f4491-7b65-/resourceGroups/a98999ad-e073-4c2/providers/Microsoft.RecoveryServices/vaults/85398f53-159/replicationJobs/2167f3f"; + Requests[3547] = new DefaultHttpContext(); + Requests[3547].RequestServices = CreateServices(); + Requests[3547].Request.Method = "GET"; + Requests[3547].Request.Path = "/Subscriptions/b6b633ad-3bc9-/resourceGroups/7e9c9cb2-fc57-4b9/providers/Microsoft.RecoveryServices/vaults/ab02f798-b5b/replicationPolicies/951e6f56-f"; + Requests[3548] = new DefaultHttpContext(); + Requests[3548].RequestServices = CreateServices(); + Requests[3548].Request.Method = "DELETE"; + Requests[3548].Request.Path = "/Subscriptions/02b3cb39-15bc-/resourceGroups/5729d5e3-865c-4ae/providers/Microsoft.RecoveryServices/vaults/e4823c9e-7eb/replicationPolicies/a0447693-8"; + Requests[3549] = new DefaultHttpContext(); + Requests[3549].RequestServices = CreateServices(); + Requests[3549].Request.Method = "PUT"; + Requests[3549].Request.Path = "/Subscriptions/80993d9c-8aac-/resourceGroups/7610c0a5-63fc-422/providers/Microsoft.RecoveryServices/vaults/6add19a4-364/replicationPolicies/71d4364a-4"; + Requests[3550] = new DefaultHttpContext(); + Requests[3550].RequestServices = CreateServices(); + Requests[3550].Request.Method = "PATCH"; + Requests[3550].Request.Path = "/Subscriptions/dd2e523d-53c0-/resourceGroups/5dea2965-2f73-4f6/providers/Microsoft.RecoveryServices/vaults/708c80ee-6e3/replicationPolicies/3d85215b-6"; + Requests[3551] = new DefaultHttpContext(); + Requests[3551].RequestServices = CreateServices(); + Requests[3551].Request.Method = "GET"; + Requests[3551].Request.Path = "/Subscriptions/8be1698b-9633-/resourceGroups/b8af0288-46ba-44a/providers/Microsoft.RecoveryServices/vaults/9edff46d-605/replicationRecoveryPlans/2b750c60-3466-4a"; + Requests[3552] = new DefaultHttpContext(); + Requests[3552].RequestServices = CreateServices(); + Requests[3552].Request.Method = "PUT"; + Requests[3552].Request.Path = "/Subscriptions/6acadaf2-79e7-/resourceGroups/860fedc3-3e5d-417/providers/Microsoft.RecoveryServices/vaults/f3810dca-88b/replicationRecoveryPlans/dcd20ca9-3112-45"; + Requests[3553] = new DefaultHttpContext(); + Requests[3553].RequestServices = CreateServices(); + Requests[3553].Request.Method = "DELETE"; + Requests[3553].Request.Path = "/Subscriptions/1bbbbd66-166f-/resourceGroups/2a0f7cd7-4813-42a/providers/Microsoft.RecoveryServices/vaults/4c4e97f4-5ca/replicationRecoveryPlans/f1b3e3a6-4995-4b"; + Requests[3554] = new DefaultHttpContext(); + Requests[3554].RequestServices = CreateServices(); + Requests[3554].Request.Method = "PATCH"; + Requests[3554].Request.Path = "/Subscriptions/3216b4a6-2e5c-/resourceGroups/c12d1ebf-6196-4c7/providers/Microsoft.RecoveryServices/vaults/361df9be-59f/replicationRecoveryPlans/3d89e514-9d5e-4f"; + Requests[3555] = new DefaultHttpContext(); + Requests[3555].RequestServices = CreateServices(); + Requests[3555].Request.Method = "GET"; + Requests[3555].Request.Path = "/Subscriptions/efdacb8d-d8dd-/resourceGroups/24bce819-ffd6-4a3/providers/Microsoft.RecoveryServices/vaults/594eb53b-/backupEngines/3a910229-2d1e-4b"; + Requests[3556] = new DefaultHttpContext(); + Requests[3556].RequestServices = CreateServices(); + Requests[3556].Request.Method = "GET"; + Requests[3556].Request.Path = "/Subscriptions/de4f7f5b-5df4-/resourceGroups/e2d318db-443b-486/providers/Microsoft.RecoveryServices/vaults/f6c55619-/backupJobs/c0af570"; + Requests[3557] = new DefaultHttpContext(); + Requests[3557].RequestServices = CreateServices(); + Requests[3557].Request.Method = "GET"; + Requests[3557].Request.Path = "/Subscriptions/5c66b8ad-4974-/resourceGroups/8bd1f45e-2891-410/providers/Microsoft.RecoveryServices/vaults/8c50a2ad-/backupOperationResults/382690b7-81"; + Requests[3558] = new DefaultHttpContext(); + Requests[3558].RequestServices = CreateServices(); + Requests[3558].Request.Method = "GET"; + Requests[3558].Request.Path = "/Subscriptions/ad150d44-b4a4-/resourceGroups/128d5b84-98af-4c5/providers/Microsoft.RecoveryServices/vaults/7026290a-/backupOperations/438fd24c-33"; + Requests[3559] = new DefaultHttpContext(); + Requests[3559].RequestServices = CreateServices(); + Requests[3559].Request.Method = "DELETE"; + Requests[3559].Request.Path = "/Subscriptions/06a188e2-2b05-/resourceGroups/40421757-59d9-422/providers/Microsoft.RecoveryServices/vaults/d7935617-/backupPolicies/d0c38b89-f"; + Requests[3560] = new DefaultHttpContext(); + Requests[3560].RequestServices = CreateServices(); + Requests[3560].Request.Method = "PUT"; + Requests[3560].Request.Path = "/Subscriptions/a81e9878-7775-/resourceGroups/479edeee-719a-462/providers/Microsoft.RecoveryServices/vaults/0cf46f6d-/backupPolicies/8e435166-b"; + Requests[3561] = new DefaultHttpContext(); + Requests[3561].RequestServices = CreateServices(); + Requests[3561].Request.Method = "GET"; + Requests[3561].Request.Path = "/Subscriptions/17beb2f4-bd4a-/resourceGroups/af0395bb-c69f-491/providers/Microsoft.RecoveryServices/vaults/9e25151f-/backupPolicies/96962300-8"; + Requests[3562] = new DefaultHttpContext(); + Requests[3562].RequestServices = CreateServices(); + Requests[3562].Request.Method = "PUT"; + Requests[3562].Request.Path = "/Subscriptions/5e1766e7-781d-/resourceGroups/9b55e6cb-f4b5-474/providers/Microsoft.RecoveryServices/vaults/09251426-/certificates/3f5b3574-2496-4"; + Requests[3563] = new DefaultHttpContext(); + Requests[3563].RequestServices = CreateServices(); + Requests[3563].Request.Method = "DELETE"; + Requests[3563].Request.Path = "/subscriptions/341f3391-5a75-/resourceGroups/eb57e067-d906-45f/providers/Microsoft.RecoveryServices/vaults/896ebe23-/registeredIdentities/35011f31-688"; + Requests[3564] = new DefaultHttpContext(); + Requests[3564].RequestServices = CreateServices(); + Requests[3564].Request.Method = "PUT"; + Requests[3564].Request.Path = "/subscriptions/afa0aeab-834a-/resourceGroups/bd76a471-adbc-4fe/providers/Microsoft.Relay/namespaces/652a1ddf-29eb/authorizationRules/b8d8a368-973e-4667-bc"; + Requests[3565] = new DefaultHttpContext(); + Requests[3565].RequestServices = CreateServices(); + Requests[3565].Request.Method = "DELETE"; + Requests[3565].Request.Path = "/subscriptions/84a63d17-0c4f-/resourceGroups/c40e777f-d4af-4d7/providers/Microsoft.Relay/namespaces/db386569-f8da/authorizationRules/b5673846-5582-4827-a3"; + Requests[3566] = new DefaultHttpContext(); + Requests[3566].RequestServices = CreateServices(); + Requests[3566].Request.Method = "GET"; + Requests[3566].Request.Path = "/subscriptions/946d27a0-91b3-/resourceGroups/6d45b9b1-dc29-448/providers/Microsoft.Relay/namespaces/a8abf9b6-46a4/authorizationRules/880458e5-9ae8-4cd9-9d"; + Requests[3567] = new DefaultHttpContext(); + Requests[3567].RequestServices = CreateServices(); + Requests[3567].Request.Method = "POST"; + Requests[3567].Request.Path = "/subscriptions/5d843d54-d376-/resourceGroups/558dffa3-2610-455/providers/Microsoft.Relay/namespaces/a983cdf7-21c9/AuthorizationRules/1ce187b0-6eba-4acc-8f"; + Requests[3568] = new DefaultHttpContext(); + Requests[3568].RequestServices = CreateServices(); + Requests[3568].Request.Method = "PUT"; + Requests[3568].Request.Path = "/subscriptions/b27e94a2-3d79-/resourceGroups/42bf3f7e-3ea0-46b/providers/Microsoft.Relay/namespaces/cc33fdce-7f44/hybridConnections/e712cfda-6198-4d56-a"; + Requests[3569] = new DefaultHttpContext(); + Requests[3569].RequestServices = CreateServices(); + Requests[3569].Request.Method = "DELETE"; + Requests[3569].Request.Path = "/subscriptions/e358184f-5e25-/resourceGroups/5bb5c3f1-7948-444/providers/Microsoft.Relay/namespaces/4d268b06-2975/hybridConnections/756be23e-a201-4aea-9"; + Requests[3570] = new DefaultHttpContext(); + Requests[3570].RequestServices = CreateServices(); + Requests[3570].Request.Method = "GET"; + Requests[3570].Request.Path = "/subscriptions/39218c84-0254-/resourceGroups/fff6ff11-adba-4ed/providers/Microsoft.Relay/namespaces/e3532a03-142d/hybridConnections/168e163c-ff9c-45e0-8"; + Requests[3571] = new DefaultHttpContext(); + Requests[3571].RequestServices = CreateServices(); + Requests[3571].Request.Method = "GET"; + Requests[3571].Request.Path = "/subscriptions/cb2640a6-7903-/resourceGroups/7144f497-93d3-429/providers/Microsoft.Relay/namespaces/e9e04427-c3bd/wcfRelays/d8395d8b-"; + Requests[3572] = new DefaultHttpContext(); + Requests[3572].RequestServices = CreateServices(); + Requests[3572].Request.Method = "DELETE"; + Requests[3572].Request.Path = "/subscriptions/8a71dfb9-5712-/resourceGroups/41961868-f1c4-41f/providers/Microsoft.Relay/namespaces/55d4ce48-e669/wcfRelays/9f2bcf06-"; + Requests[3573] = new DefaultHttpContext(); + Requests[3573].RequestServices = CreateServices(); + Requests[3573].Request.Method = "PUT"; + Requests[3573].Request.Path = "/subscriptions/0d9f7526-e658-/resourceGroups/86a55245-03f2-429/providers/Microsoft.Relay/namespaces/d8e50b36-e481/wcfRelays/a26ef109-"; + Requests[3574] = new DefaultHttpContext(); + Requests[3574].RequestServices = CreateServices(); + Requests[3574].Request.Method = "PATCH"; + Requests[3574].Request.Path = "/subscriptions/49ccb59e-6417-/resourceGroups/ef065643-f9ac-416/providers/Microsoft.Scheduler/jobCollections/ad10abb9-0078-49c/jobs/a5be877"; + Requests[3575] = new DefaultHttpContext(); + Requests[3575].RequestServices = CreateServices(); + Requests[3575].Request.Method = "GET"; + Requests[3575].Request.Path = "/subscriptions/a945db49-974d-/resourceGroups/195d7562-3fbe-4f0/providers/Microsoft.Scheduler/jobCollections/8d3219a5-6956-47e/jobs/121ca5d"; + Requests[3576] = new DefaultHttpContext(); + Requests[3576].RequestServices = CreateServices(); + Requests[3576].Request.Method = "DELETE"; + Requests[3576].Request.Path = "/subscriptions/70fd58c9-cd6f-/resourceGroups/d1a18956-b8f3-498/providers/Microsoft.Scheduler/jobCollections/0d0c6ab2-0530-4ca/jobs/b7afbed"; + Requests[3577] = new DefaultHttpContext(); + Requests[3577].RequestServices = CreateServices(); + Requests[3577].Request.Method = "PUT"; + Requests[3577].Request.Path = "/subscriptions/aab3f90b-83dd-/resourceGroups/dbc49cd3-b1b0-48f/providers/Microsoft.Scheduler/jobCollections/e5121cb9-69f2-479/jobs/cab9fcd"; + Requests[3578] = new DefaultHttpContext(); + Requests[3578].RequestServices = CreateServices(); + Requests[3578].Request.Method = "POST"; + Requests[3578].Request.Path = "/subscriptions/b9f66040-e1bd-/resourceGroups/5328484a-9d53-40a/providers/Microsoft.Search/searchServices/a3332744-f3db-471/createQueryKey/ed05b"; + Requests[3579] = new DefaultHttpContext(); + Requests[3579].RequestServices = CreateServices(); + Requests[3579].Request.Method = "DELETE"; + Requests[3579].Request.Path = "/subscriptions/1a560876-e35a-/resourceGroups/2ea10e5a-445d-4b2/providers/Microsoft.Search/searchServices/45ab4008-d21a-4da/deleteQueryKey/1c966"; + Requests[3580] = new DefaultHttpContext(); + Requests[3580].RequestServices = CreateServices(); + Requests[3580].Request.Method = "POST"; + Requests[3580].Request.Path = "/subscriptions/df4af081-af25-/resourceGroups/e3c98ba4-4471-45c/providers/Microsoft.Search/searchServices/90365768-5f05-4f5/regenerateAdminKey/6dc4366"; + Requests[3581] = new DefaultHttpContext(); + Requests[3581].RequestServices = CreateServices(); + Requests[3581].Request.Method = "GET"; + Requests[3581].Request.Path = "/subscriptions/4f3f5327-bc73-/resourceGroups/9e736c76-9cca-4f0/providers/Microsoft.Security/locations/24fd2d57-a0/alerts/1e8511ae-"; + Requests[3582] = new DefaultHttpContext(); + Requests[3582].RequestServices = CreateServices(); + Requests[3582].Request.Method = "GET"; + Requests[3582].Request.Path = "/subscriptions/59350987-c1d7-/resourceGroups/7f774d6d-05de-4b6/providers/Microsoft.Security/locations/045adeb9-16/discoveredSecuritySolutions/40d6e5ed-e1a5-47c2-8dec-996357"; + Requests[3583] = new DefaultHttpContext(); + Requests[3583].RequestServices = CreateServices(); + Requests[3583].Request.Method = "GET"; + Requests[3583].Request.Path = "/subscriptions/bde5b1bb-da11-/resourceGroups/f058e130-bd88-460/providers/Microsoft.Security/locations/9af6ecd8-62/ExternalSecuritySolutions/4c9b1aa8-04ed-4320-ba9e-4665c"; + Requests[3584] = new DefaultHttpContext(); + Requests[3584].RequestServices = CreateServices(); + Requests[3584].Request.Method = "PUT"; + Requests[3584].Request.Path = "/subscriptions/9c051a76-8ce4-/resourceGroups/9203e62b-395e-4da/providers/Microsoft.Security/locations/719914da-3f/jitNetworkAccessPolicies/015091a4-a630-41c5-a821-b3"; + Requests[3585] = new DefaultHttpContext(); + Requests[3585].RequestServices = CreateServices(); + Requests[3585].Request.Method = "GET"; + Requests[3585].Request.Path = "/subscriptions/c306798d-1389-/resourceGroups/e4c1c367-b8c3-443/providers/Microsoft.Security/locations/ce012f39-86/jitNetworkAccessPolicies/69c7d0d1-d5f0-44b3-8d12-c5"; + Requests[3586] = new DefaultHttpContext(); + Requests[3586].RequestServices = CreateServices(); + Requests[3586].Request.Method = "DELETE"; + Requests[3586].Request.Path = "/subscriptions/9a06bcc7-4053-/resourceGroups/99fd5ccf-8eb4-419/providers/Microsoft.Security/locations/586de508-7a/jitNetworkAccessPolicies/59a8088c-b62c-4c9b-9b4f-91"; + Requests[3587] = new DefaultHttpContext(); + Requests[3587].RequestServices = CreateServices(); + Requests[3587].Request.Method = "GET"; + Requests[3587].Request.Path = "/subscriptions/df00b862-60b6-/resourceGroups/59fff4ee-414a-416/providers/Microsoft.Security/locations/40fc0870-1e/tasks/cf42cb55"; + Requests[3588] = new DefaultHttpContext(); + Requests[3588].RequestServices = CreateServices(); + Requests[3588].Request.Method = "GET"; + Requests[3588].Request.Path = "/subscriptions/ceadc42b-b4b8-/resourceGroups/a5992715-a78b-4a1/providers/Microsoft.ServerManagement/nodes/4a474d74/sessions/a9dda03"; + Requests[3589] = new DefaultHttpContext(); + Requests[3589].RequestServices = CreateServices(); + Requests[3589].Request.Method = "DELETE"; + Requests[3589].Request.Path = "/subscriptions/1fe3f0ff-9fb7-/resourceGroups/3f98e429-cc0e-442/providers/Microsoft.ServerManagement/nodes/966455cd/sessions/337d144"; + Requests[3590] = new DefaultHttpContext(); + Requests[3590].RequestServices = CreateServices(); + Requests[3590].Request.Method = "PUT"; + Requests[3590].Request.Path = "/subscriptions/1b4abc04-213b-/resourceGroups/f9717435-2a41-4eb/providers/Microsoft.ServerManagement/nodes/136d2e76/sessions/4982171"; + Requests[3591] = new DefaultHttpContext(); + Requests[3591].RequestServices = CreateServices(); + Requests[3591].Request.Method = "PUT"; + Requests[3591].Request.Path = "/subscriptions/1cca3ed1-6a93-/resourceGroups/6dd75fc1-0a14-4f8/providers/Microsoft.ServiceBus/namespaces/216b8f97-29c0/AuthorizationRules/e45ca7b5-57f1-4202-a7"; + Requests[3592] = new DefaultHttpContext(); + Requests[3592].RequestServices = CreateServices(); + Requests[3592].Request.Method = "DELETE"; + Requests[3592].Request.Path = "/subscriptions/b0270832-57d6-/resourceGroups/0a5cdccb-afb3-447/providers/Microsoft.ServiceBus/namespaces/c4e39f9e-0fef/AuthorizationRules/5705da5b-dc9c-42f0-86"; + Requests[3593] = new DefaultHttpContext(); + Requests[3593].RequestServices = CreateServices(); + Requests[3593].Request.Method = "GET"; + Requests[3593].Request.Path = "/subscriptions/c9155b32-3054-/resourceGroups/064149d8-f542-482/providers/Microsoft.ServiceBus/namespaces/03d25a39-563b/AuthorizationRules/a96da34e-28a6-4cbe-85"; + Requests[3594] = new DefaultHttpContext(); + Requests[3594].RequestServices = CreateServices(); + Requests[3594].Request.Method = "POST"; + Requests[3594].Request.Path = "/subscriptions/8b3f4538-d073-/resourceGroups/419a5c28-dd79-4db/providers/Microsoft.ServiceBus/namespaces/16216f23-c19b/AuthorizationRules/4907955a-7a4d-447e-a7"; + Requests[3595] = new DefaultHttpContext(); + Requests[3595].RequestServices = CreateServices(); + Requests[3595].Request.Method = "GET"; + Requests[3595].Request.Path = "/subscriptions/e91cd07b-39d2-/resourceGroups/8032b272-897c-4bd/providers/Microsoft.ServiceBus/namespaces/59b39ef7-0bea/disasterRecoveryConfigs/25453"; + Requests[3596] = new DefaultHttpContext(); + Requests[3596].RequestServices = CreateServices(); + Requests[3596].Request.Method = "DELETE"; + Requests[3596].Request.Path = "/subscriptions/5b58e621-8ad3-/resourceGroups/48d6e71f-5d64-42f/providers/Microsoft.ServiceBus/namespaces/d2a645bc-492d/disasterRecoveryConfigs/3e688"; + Requests[3597] = new DefaultHttpContext(); + Requests[3597].RequestServices = CreateServices(); + Requests[3597].Request.Method = "PUT"; + Requests[3597].Request.Path = "/subscriptions/fcab6a4a-e250-/resourceGroups/2b7d754c-667d-4f1/providers/Microsoft.ServiceBus/namespaces/9b53b9e4-cfa6/disasterRecoveryConfigs/5ceaa"; + Requests[3598] = new DefaultHttpContext(); + Requests[3598].RequestServices = CreateServices(); + Requests[3598].Request.Method = "DELETE"; + Requests[3598].Request.Path = "/subscriptions/5a664d0d-6c32-/resourceGroups/7c10d9fa-eaa6-4b7/providers/Microsoft.ServiceBus/namespaces/a110839b-e7d5/migrationConfigurations/0c542530-5"; + Requests[3599] = new DefaultHttpContext(); + Requests[3599].RequestServices = CreateServices(); + Requests[3599].Request.Method = "GET"; + Requests[3599].Request.Path = "/subscriptions/8c920654-b1ae-/resourceGroups/43beba9a-3309-41d/providers/Microsoft.ServiceBus/namespaces/c5ddf40a-e9eb/migrationConfigurations/b1f6ecdb-f"; + Requests[3600] = new DefaultHttpContext(); + Requests[3600].RequestServices = CreateServices(); + Requests[3600].Request.Method = "PUT"; + Requests[3600].Request.Path = "/subscriptions/bbb1be86-1ef9-/resourceGroups/ab9b0927-9c2f-45f/providers/Microsoft.ServiceBus/namespaces/f0d487bd-86c8/migrationConfigurations/ac9d0476-3"; + Requests[3601] = new DefaultHttpContext(); + Requests[3601].RequestServices = CreateServices(); + Requests[3601].Request.Method = "GET"; + Requests[3601].Request.Path = "/subscriptions/bb093ba6-7192-/resourceGroups/afbb3b68-6dc9-441/providers/Microsoft.ServiceBus/namespaces/727666d6-9c5c/queues/0a91b761-"; + Requests[3602] = new DefaultHttpContext(); + Requests[3602].RequestServices = CreateServices(); + Requests[3602].Request.Method = "DELETE"; + Requests[3602].Request.Path = "/subscriptions/b56bdbb3-da78-/resourceGroups/a9b0ccb0-b954-44d/providers/Microsoft.ServiceBus/namespaces/2fd7ab2f-51fd/queues/88e0cef5-"; + Requests[3603] = new DefaultHttpContext(); + Requests[3603].RequestServices = CreateServices(); + Requests[3603].Request.Method = "PUT"; + Requests[3603].Request.Path = "/subscriptions/c9446009-4ddc-/resourceGroups/eeed8376-80b6-412/providers/Microsoft.ServiceBus/namespaces/998220c6-3477/queues/66609b48-"; + Requests[3604] = new DefaultHttpContext(); + Requests[3604].RequestServices = CreateServices(); + Requests[3604].Request.Method = "DELETE"; + Requests[3604].Request.Path = "/subscriptions/a772b83d-b6c7-/resourceGroups/141f0f6e-0be7-46c/providers/Microsoft.ServiceBus/namespaces/c9e65d53-42e8/topics/2fb8b097-"; + Requests[3605] = new DefaultHttpContext(); + Requests[3605].RequestServices = CreateServices(); + Requests[3605].Request.Method = "PUT"; + Requests[3605].Request.Path = "/subscriptions/bf97ddc8-e729-/resourceGroups/2bfa74f3-e406-484/providers/Microsoft.ServiceBus/namespaces/3a01c77f-0192/topics/99c96d74-"; + Requests[3606] = new DefaultHttpContext(); + Requests[3606].RequestServices = CreateServices(); + Requests[3606].Request.Method = "GET"; + Requests[3606].Request.Path = "/subscriptions/763c747b-560b-/resourceGroups/c086ad3b-ce61-414/providers/Microsoft.ServiceBus/namespaces/04d61576-a4e5/topics/f39dbcf4-"; + Requests[3607] = new DefaultHttpContext(); + Requests[3607].RequestServices = CreateServices(); + Requests[3607].Request.Method = "DELETE"; + Requests[3607].Request.Path = "/subscriptions/78f85495-0feb-/resourceGroups/3a3010a3-1f23-410/providers/Microsoft.ServiceFabric/clusters/e123c7e7-69/applications/2e0c19d3-5e56-4"; + Requests[3608] = new DefaultHttpContext(); + Requests[3608].RequestServices = CreateServices(); + Requests[3608].Request.Method = "PATCH"; + Requests[3608].Request.Path = "/subscriptions/f292dbc8-3b07-/resourceGroups/57c34f72-4980-47f/providers/Microsoft.ServiceFabric/clusters/42be9cd7-94/applications/12cdcfd8-3e9f-4"; + Requests[3609] = new DefaultHttpContext(); + Requests[3609].RequestServices = CreateServices(); + Requests[3609].Request.Method = "PUT"; + Requests[3609].Request.Path = "/subscriptions/32a8b82b-b015-/resourceGroups/2a424666-429c-49e/providers/Microsoft.ServiceFabric/clusters/771517e2-bb/applications/d8a6bc5d-8474-4"; + Requests[3610] = new DefaultHttpContext(); + Requests[3610].RequestServices = CreateServices(); + Requests[3610].Request.Method = "GET"; + Requests[3610].Request.Path = "/subscriptions/38dd114a-e79d-/resourceGroups/eecc7ef7-e44b-4b1/providers/Microsoft.ServiceFabric/clusters/e679a19c-d0/applications/bbdc3fe8-e2d4-4"; + Requests[3611] = new DefaultHttpContext(); + Requests[3611].RequestServices = CreateServices(); + Requests[3611].Request.Method = "GET"; + Requests[3611].Request.Path = "/subscriptions/78c1e480-67e9-/resourceGroups/2e7e3cf0-8191-48a/providers/Microsoft.ServiceFabric/clusters/d04abb8f-83/applicationTypes/275e7132-5268-46b6-"; + Requests[3612] = new DefaultHttpContext(); + Requests[3612].RequestServices = CreateServices(); + Requests[3612].Request.Method = "PUT"; + Requests[3612].Request.Path = "/subscriptions/99991146-7888-/resourceGroups/8dc90734-28a4-44d/providers/Microsoft.ServiceFabric/clusters/51adaad8-0c/applicationTypes/27588c5a-dfc0-41f7-"; + Requests[3613] = new DefaultHttpContext(); + Requests[3613].RequestServices = CreateServices(); + Requests[3613].Request.Method = "DELETE"; + Requests[3613].Request.Path = "/subscriptions/b1660710-3b01-/resourceGroups/78ac331a-fd2f-4e6/providers/Microsoft.ServiceFabric/clusters/13c769e7-2c/applicationTypes/fe2fc946-172f-492b-"; + Requests[3614] = new DefaultHttpContext(); + Requests[3614].RequestServices = CreateServices(); + Requests[3614].Request.Method = "PUT"; + Requests[3614].Request.Path = "/subscriptions/53936cc0-a23e-/resourceGroups/3b36a41e-5cde-45c/providers/Microsoft.Sql/locations/f05f2945-641/instanceFailoverGroups/c8f1f2d0-4f6a-44e"; + Requests[3615] = new DefaultHttpContext(); + Requests[3615].RequestServices = CreateServices(); + Requests[3615].Request.Method = "GET"; + Requests[3615].Request.Path = "/subscriptions/73430bbc-3a23-/resourceGroups/086cf9b0-2245-47f/providers/Microsoft.Sql/locations/69d55bbd-e34/instanceFailoverGroups/43cf9c7c-85ff-467"; + Requests[3616] = new DefaultHttpContext(); + Requests[3616].RequestServices = CreateServices(); + Requests[3616].Request.Method = "DELETE"; + Requests[3616].Request.Path = "/subscriptions/ca8e1224-8bab-/resourceGroups/9e231561-3c41-462/providers/Microsoft.Sql/locations/b94bcd99-6fe/instanceFailoverGroups/40408b8e-b96d-473"; + Requests[3617] = new DefaultHttpContext(); + Requests[3617].RequestServices = CreateServices(); + Requests[3617].Request.Method = "PUT"; + Requests[3617].Request.Path = "/subscriptions/fc1ff79b-be3b-/resourceGroups/7520b907-3425-4c1/providers/Microsoft.Sql/managedInstances/f6c83ff3-5189-4d62-/databases/b0a34872-ea4"; + Requests[3618] = new DefaultHttpContext(); + Requests[3618].RequestServices = CreateServices(); + Requests[3618].Request.Method = "PATCH"; + Requests[3618].Request.Path = "/subscriptions/61078b3a-5778-/resourceGroups/54cc77fb-b958-4eb/providers/Microsoft.Sql/managedInstances/2aeb9a86-b203-40c6-/databases/cb8aa49c-7bd"; + Requests[3619] = new DefaultHttpContext(); + Requests[3619].RequestServices = CreateServices(); + Requests[3619].Request.Method = "DELETE"; + Requests[3619].Request.Path = "/subscriptions/41aea38f-65ab-/resourceGroups/941c6486-3bfd-4cb/providers/Microsoft.Sql/managedInstances/9f2ec492-8ebe-4e31-/databases/c69cd4ef-e18"; + Requests[3620] = new DefaultHttpContext(); + Requests[3620].RequestServices = CreateServices(); + Requests[3620].Request.Method = "GET"; + Requests[3620].Request.Path = "/subscriptions/6fa29189-7047-/resourceGroups/aed4ef3b-4ea9-451/providers/Microsoft.Sql/managedInstances/7026ef70-a6df-47ba-/databases/53b857da-e07"; + Requests[3621] = new DefaultHttpContext(); + Requests[3621].RequestServices = CreateServices(); + Requests[3621].Request.Method = "GET"; + Requests[3621].Request.Path = "/subscriptions/a5efbd7b-19e0-/resourceGroups/3a402cfc-7f5b-458/providers/Microsoft.Sql/servers/53307d15-2/administrators/56bd6556-4d8d-46e"; + Requests[3622] = new DefaultHttpContext(); + Requests[3622].RequestServices = CreateServices(); + Requests[3622].Request.Method = "DELETE"; + Requests[3622].Request.Path = "/subscriptions/96e69c52-482b-/resourceGroups/affb13c3-f4b9-4ba/providers/Microsoft.Sql/servers/cc78a68a-d/administrators/db1d2fac-dbbc-4d7"; + Requests[3623] = new DefaultHttpContext(); + Requests[3623].RequestServices = CreateServices(); + Requests[3623].Request.Method = "PUT"; + Requests[3623].Request.Path = "/subscriptions/7658e30b-132f-/resourceGroups/c3ca3345-4bf6-452/providers/Microsoft.Sql/servers/52003ba6-2/administrators/dab02be0-41ae-4c1"; + Requests[3624] = new DefaultHttpContext(); + Requests[3624].RequestServices = CreateServices(); + Requests[3624].Request.Method = "GET"; + Requests[3624].Request.Path = "/subscriptions/97d179ff-c257-/resourceGroups/55f1802a-8a41-40a/providers/Microsoft.Sql/servers/1ce91983-0/advisors/72b956f6-c3"; + Requests[3625] = new DefaultHttpContext(); + Requests[3625].RequestServices = CreateServices(); + Requests[3625].Request.Method = "PATCH"; + Requests[3625].Request.Path = "/subscriptions/46e3e2b1-c5a6-/resourceGroups/7bdc7c8b-3dbe-428/providers/Microsoft.Sql/servers/fb95cbe8-f/advisors/61313abd-72"; + Requests[3626] = new DefaultHttpContext(); + Requests[3626].RequestServices = CreateServices(); + Requests[3626].Request.Method = "PUT"; + Requests[3626].Request.Path = "/subscriptions/e2768db7-527f-/resourceGroups/ea10042e-03a9-4d3/providers/Microsoft.Sql/servers/2630bade-4/advisors/f59388b5-27"; + Requests[3627] = new DefaultHttpContext(); + Requests[3627].RequestServices = CreateServices(); + Requests[3627].Request.Method = "PUT"; + Requests[3627].Request.Path = "/subscriptions/28f12b5c-0767-/resourceGroups/8793c6aa-522b-419/providers/Microsoft.Sql/servers/73fd62a3-0/auditingPolicies/65357168-f9a0-4420-a6da"; + Requests[3628] = new DefaultHttpContext(); + Requests[3628].RequestServices = CreateServices(); + Requests[3628].Request.Method = "GET"; + Requests[3628].Request.Path = "/subscriptions/8958d1eb-a557-/resourceGroups/c891c9a7-d417-462/providers/Microsoft.Sql/servers/614ef8e5-1/auditingPolicies/bea1612b-745e-4042-842a"; + Requests[3629] = new DefaultHttpContext(); + Requests[3629].RequestServices = CreateServices(); + Requests[3629].Request.Method = "PUT"; + Requests[3629].Request.Path = "/subscriptions/af1fcaf6-02c6-/resourceGroups/0c66bae2-9791-4fb/providers/Microsoft.Sql/servers/1bb48be4-9/backupLongTermRetentionVaults/593df173-8337-4f8a-9032-d84fa7d9"; + Requests[3630] = new DefaultHttpContext(); + Requests[3630].RequestServices = CreateServices(); + Requests[3630].Request.Method = "GET"; + Requests[3630].Request.Path = "/subscriptions/a5b29161-0c6d-/resourceGroups/f78be39b-1cbf-44e/providers/Microsoft.Sql/servers/7823aece-a/backupLongTermRetentionVaults/fe795322-c3b3-4cf3-ab00-6fef4b3c"; + Requests[3631] = new DefaultHttpContext(); + Requests[3631].RequestServices = CreateServices(); + Requests[3631].Request.Method = "DELETE"; + Requests[3631].Request.Path = "/subscriptions/3c82c3b6-d53a-/resourceGroups/b3a92e31-a33d-4f9/providers/Microsoft.Sql/servers/dc3f54f4-e/communicationLinks/9fb18fa1-4d1b-4b7b-97"; + Requests[3632] = new DefaultHttpContext(); + Requests[3632].RequestServices = CreateServices(); + Requests[3632].Request.Method = "PUT"; + Requests[3632].Request.Path = "/subscriptions/6f7ddbf4-2213-/resourceGroups/d9c92278-a39c-42d/providers/Microsoft.Sql/servers/54e5f231-0/communicationLinks/45f58af8-94de-4bf9-ae"; + Requests[3633] = new DefaultHttpContext(); + Requests[3633].RequestServices = CreateServices(); + Requests[3633].Request.Method = "GET"; + Requests[3633].Request.Path = "/subscriptions/c7f659aa-e56f-/resourceGroups/8444f9d8-b118-441/providers/Microsoft.Sql/servers/9039a1c0-d/communicationLinks/f7039088-1cbd-4e10-82"; + Requests[3634] = new DefaultHttpContext(); + Requests[3634].RequestServices = CreateServices(); + Requests[3634].Request.Method = "GET"; + Requests[3634].Request.Path = "/subscriptions/74fc0852-7975-/resourceGroups/c6a61b5b-f753-42f/providers/Microsoft.Sql/servers/a1a9ce5c-1/connectionPolicies/5924e074-b27d-4100-9"; + Requests[3635] = new DefaultHttpContext(); + Requests[3635].RequestServices = CreateServices(); + Requests[3635].Request.Method = "PUT"; + Requests[3635].Request.Path = "/subscriptions/5c430f86-df17-/resourceGroups/684ac433-50e9-48d/providers/Microsoft.Sql/servers/8dd38507-0/connectionPolicies/ce1b1db7-1cb4-420b-9"; + Requests[3636] = new DefaultHttpContext(); + Requests[3636].RequestServices = CreateServices(); + Requests[3636].Request.Method = "PATCH"; + Requests[3636].Request.Path = "/subscriptions/1b470e22-b6c7-/resourceGroups/1c94e2cf-7faf-408/providers/Microsoft.Sql/servers/fe5f74fd-f/databases/0fae7977-a7c"; + Requests[3637] = new DefaultHttpContext(); + Requests[3637].RequestServices = CreateServices(); + Requests[3637].Request.Method = "GET"; + Requests[3637].Request.Path = "/subscriptions/30703fa9-bb7b-/resourceGroups/eb90cfb1-9419-49a/providers/Microsoft.Sql/servers/d296fcb0-4/databases/ac1c1aa0-71e"; + Requests[3638] = new DefaultHttpContext(); + Requests[3638].RequestServices = CreateServices(); + Requests[3638].Request.Method = "DELETE"; + Requests[3638].Request.Path = "/subscriptions/ad076480-200e-/resourceGroups/270680b0-6e03-435/providers/Microsoft.Sql/servers/00777c95-6/databases/2bc360d0-871"; + Requests[3639] = new DefaultHttpContext(); + Requests[3639].RequestServices = CreateServices(); + Requests[3639].Request.Method = "PUT"; + Requests[3639].Request.Path = "/subscriptions/5b0856c6-422b-/resourceGroups/aa0b7e4b-1061-48f/providers/Microsoft.Sql/servers/fc555022-8/databases/f27cdf49-9cf"; + Requests[3640] = new DefaultHttpContext(); + Requests[3640].RequestServices = CreateServices(); + Requests[3640].Request.Method = "PUT"; + Requests[3640].Request.Path = "/subscriptions/eeee3538-ece5-/resourceGroups/20eeee13-9375-487/providers/Microsoft.Sql/servers/45b86e10-8/disasterRecoveryConfiguration/9684f623-762a-4dae-885f-12d319540"; + Requests[3641] = new DefaultHttpContext(); + Requests[3641].RequestServices = CreateServices(); + Requests[3641].Request.Method = "GET"; + Requests[3641].Request.Path = "/subscriptions/54b32210-21b8-/resourceGroups/391a35ed-288c-4b9/providers/Microsoft.Sql/servers/25ee6885-6/disasterRecoveryConfiguration/0b34f3ea-9505-4556-a359-284418cc2"; + Requests[3642] = new DefaultHttpContext(); + Requests[3642].RequestServices = CreateServices(); + Requests[3642].Request.Method = "DELETE"; + Requests[3642].Request.Path = "/subscriptions/55163867-c648-/resourceGroups/aaac97a5-0730-417/providers/Microsoft.Sql/servers/ef8269d4-d/disasterRecoveryConfiguration/dcf3f629-d12b-4218-ac9c-167022d51"; + Requests[3643] = new DefaultHttpContext(); + Requests[3643].RequestServices = CreateServices(); + Requests[3643].Request.Method = "GET"; + Requests[3643].Request.Path = "/subscriptions/17e23a5a-3b4b-/resourceGroups/74430ff1-7fc4-47b/providers/Microsoft.Sql/servers/6ede82a3-5/dnsAliases/ba21d2f5-0b6"; + Requests[3644] = new DefaultHttpContext(); + Requests[3644].RequestServices = CreateServices(); + Requests[3644].Request.Method = "PUT"; + Requests[3644].Request.Path = "/subscriptions/90f3c42c-cc5f-/resourceGroups/898e6c61-a7e4-484/providers/Microsoft.Sql/servers/dc407848-9/dnsAliases/02f0fdf8-52d"; + Requests[3645] = new DefaultHttpContext(); + Requests[3645].RequestServices = CreateServices(); + Requests[3645].Request.Method = "DELETE"; + Requests[3645].Request.Path = "/subscriptions/4d0a41b3-65f7-/resourceGroups/0117d15d-81ca-415/providers/Microsoft.Sql/servers/c69d5f25-5/dnsAliases/d1c70cba-442"; + Requests[3646] = new DefaultHttpContext(); + Requests[3646].RequestServices = CreateServices(); + Requests[3646].Request.Method = "GET"; + Requests[3646].Request.Path = "/subscriptions/28ea0723-fb83-/resourceGroups/8ea39bc1-ed31-475/providers/Microsoft.Sql/servers/2741b403-7/elasticPools/7f3a7018-7f59-4"; + Requests[3647] = new DefaultHttpContext(); + Requests[3647].RequestServices = CreateServices(); + Requests[3647].Request.Method = "DELETE"; + Requests[3647].Request.Path = "/subscriptions/07dd2e6d-bce5-/resourceGroups/01eaecdd-b503-4c9/providers/Microsoft.Sql/servers/5c113b32-f/elasticPools/3e5464a8-c236-4"; + Requests[3648] = new DefaultHttpContext(); + Requests[3648].RequestServices = CreateServices(); + Requests[3648].Request.Method = "PUT"; + Requests[3648].Request.Path = "/subscriptions/e81075b4-3d25-/resourceGroups/7fd483e8-a153-433/providers/Microsoft.Sql/servers/8c119753-e/elasticPools/3b1f386e-26fa-4"; + Requests[3649] = new DefaultHttpContext(); + Requests[3649].RequestServices = CreateServices(); + Requests[3649].Request.Method = "PATCH"; + Requests[3649].Request.Path = "/subscriptions/0b115db3-aa98-/resourceGroups/b57e97ce-0740-44a/providers/Microsoft.Sql/servers/f155ba8c-9/elasticPools/96d3bf2a-0185-4"; + Requests[3650] = new DefaultHttpContext(); + Requests[3650].RequestServices = CreateServices(); + Requests[3650].Request.Method = "GET"; + Requests[3650].Request.Path = "/subscriptions/eb3a4f63-2663-/resourceGroups/0698336a-67df-42c/providers/Microsoft.Sql/servers/59236b98-e/encryptionProtector/d4a94ca4-14a9-4b67-a5b4"; + Requests[3651] = new DefaultHttpContext(); + Requests[3651].RequestServices = CreateServices(); + Requests[3651].Request.Method = "PUT"; + Requests[3651].Request.Path = "/subscriptions/3fd7563d-f536-/resourceGroups/da48220f-2c41-4b6/providers/Microsoft.Sql/servers/6a792d72-5/encryptionProtector/97bbb22d-9f55-46ee-ad10"; + Requests[3652] = new DefaultHttpContext(); + Requests[3652].RequestServices = CreateServices(); + Requests[3652].Request.Method = "PATCH"; + Requests[3652].Request.Path = "/subscriptions/bcac6d00-d107-/resourceGroups/5b951425-aff4-44a/providers/Microsoft.Sql/servers/6396a62d-9/failoverGroups/e25a7aea-abe6-4c7"; + Requests[3653] = new DefaultHttpContext(); + Requests[3653].RequestServices = CreateServices(); + Requests[3653].Request.Method = "DELETE"; + Requests[3653].Request.Path = "/subscriptions/43c14a34-6587-/resourceGroups/84da74c4-8c0e-473/providers/Microsoft.Sql/servers/38dde54f-d/failoverGroups/09124e4d-a175-4c8"; + Requests[3654] = new DefaultHttpContext(); + Requests[3654].RequestServices = CreateServices(); + Requests[3654].Request.Method = "PUT"; + Requests[3654].Request.Path = "/subscriptions/d84864f9-010d-/resourceGroups/ce0d15f1-9c03-492/providers/Microsoft.Sql/servers/66a043c0-9/failoverGroups/d1363882-ffeb-4f8"; + Requests[3655] = new DefaultHttpContext(); + Requests[3655].RequestServices = CreateServices(); + Requests[3655].Request.Method = "GET"; + Requests[3655].Request.Path = "/subscriptions/ee7f23f3-548d-/resourceGroups/37d68090-b899-423/providers/Microsoft.Sql/servers/e7cbe8e3-8/failoverGroups/80d69693-cb02-49d"; + Requests[3656] = new DefaultHttpContext(); + Requests[3656].RequestServices = CreateServices(); + Requests[3656].Request.Method = "DELETE"; + Requests[3656].Request.Path = "/subscriptions/1c7f7a85-cdbb-/resourceGroups/7e5f7fc0-f754-461/providers/Microsoft.Sql/servers/fbff8a59-4/firewallRules/e6a3dbcb-d920-43"; + Requests[3657] = new DefaultHttpContext(); + Requests[3657].RequestServices = CreateServices(); + Requests[3657].Request.Method = "GET"; + Requests[3657].Request.Path = "/subscriptions/6eb68ce4-9400-/resourceGroups/e068320f-99c0-4a0/providers/Microsoft.Sql/servers/6ce3eb47-2/firewallRules/b7f478ae-d205-4c"; + Requests[3658] = new DefaultHttpContext(); + Requests[3658].RequestServices = CreateServices(); + Requests[3658].Request.Method = "PUT"; + Requests[3658].Request.Path = "/subscriptions/b6ea026c-4a96-/resourceGroups/d5b3d7fd-6cb7-45d/providers/Microsoft.Sql/servers/649378a6-0/firewallRules/768cbd5c-099b-46"; + Requests[3659] = new DefaultHttpContext(); + Requests[3659].RequestServices = CreateServices(); + Requests[3659].Request.Method = "GET"; + Requests[3659].Request.Path = "/subscriptions/4c95af31-6266-/resourceGroups/dfe75acb-cbc4-4bf/providers/Microsoft.Sql/servers/7867db67-5/jobAgents/b7cf119a-26e"; + Requests[3660] = new DefaultHttpContext(); + Requests[3660].RequestServices = CreateServices(); + Requests[3660].Request.Method = "PATCH"; + Requests[3660].Request.Path = "/subscriptions/99bdbbcc-3e5e-/resourceGroups/4697c908-7cf4-486/providers/Microsoft.Sql/servers/101f46cd-6/jobAgents/8ed57837-b55"; + Requests[3661] = new DefaultHttpContext(); + Requests[3661].RequestServices = CreateServices(); + Requests[3661].Request.Method = "DELETE"; + Requests[3661].Request.Path = "/subscriptions/9aea31ac-7134-/resourceGroups/c87979aa-d8ad-41a/providers/Microsoft.Sql/servers/57d10e01-e/jobAgents/a555a75b-196"; + Requests[3662] = new DefaultHttpContext(); + Requests[3662].RequestServices = CreateServices(); + Requests[3662].Request.Method = "PUT"; + Requests[3662].Request.Path = "/subscriptions/87ac8d36-c84a-/resourceGroups/bad826e2-6c2a-4db/providers/Microsoft.Sql/servers/da9e81a2-b/jobAgents/218d19c6-bf2"; + Requests[3663] = new DefaultHttpContext(); + Requests[3663].RequestServices = CreateServices(); + Requests[3663].Request.Method = "DELETE"; + Requests[3663].Request.Path = "/subscriptions/301c2c43-d4ed-/resourceGroups/29e5e849-7c13-453/providers/Microsoft.Sql/servers/2c809f1e-7/keys/803d66d"; + Requests[3664] = new DefaultHttpContext(); + Requests[3664].RequestServices = CreateServices(); + Requests[3664].Request.Method = "PUT"; + Requests[3664].Request.Path = "/subscriptions/155211b4-bbcc-/resourceGroups/d8841ae8-8547-47d/providers/Microsoft.Sql/servers/8da67c10-3/keys/3d9f767"; + Requests[3665] = new DefaultHttpContext(); + Requests[3665].RequestServices = CreateServices(); + Requests[3665].Request.Method = "GET"; + Requests[3665].Request.Path = "/subscriptions/d8c2cd7f-c2d0-/resourceGroups/7c6b2ba7-6633-46e/providers/Microsoft.Sql/servers/c49826ae-7/keys/1fef8bc"; + Requests[3666] = new DefaultHttpContext(); + Requests[3666].RequestServices = CreateServices(); + Requests[3666].Request.Method = "GET"; + Requests[3666].Request.Path = "/subscriptions/a91ea4e4-8bd3-/resourceGroups/9efad4f8-b5fb-48e/providers/Microsoft.Sql/servers/befdde85-7/recommendedElasticPools/68fae41a-62e6-4330-8ba7-de"; + Requests[3667] = new DefaultHttpContext(); + Requests[3667].RequestServices = CreateServices(); + Requests[3667].Request.Method = "GET"; + Requests[3667].Request.Path = "/subscriptions/a64d8136-8a72-/resourceGroups/7cf8d81f-6d85-451/providers/Microsoft.Sql/servers/9355b75f-b/recoverableDatabases/0938ef12-bb5"; + Requests[3668] = new DefaultHttpContext(); + Requests[3668].RequestServices = CreateServices(); + Requests[3668].Request.Method = "GET"; + Requests[3668].Request.Path = "/subscriptions/ef17d84d-8988-/resourceGroups/3440242c-883a-4d4/providers/Microsoft.Sql/servers/73632d9c-4/restorableDroppedDatabases/f4999d14-a2cb-48a2-8b81-1a791"; + Requests[3669] = new DefaultHttpContext(); + Requests[3669].RequestServices = CreateServices(); + Requests[3669].Request.Method = "GET"; + Requests[3669].Request.Path = "/subscriptions/eeaf0a55-5b54-/resourceGroups/c8ee0d1b-1f02-4f7/providers/Microsoft.Sql/servers/1018be95-7/serviceObjectives/130764ae-d8cc-4e14-8"; + Requests[3670] = new DefaultHttpContext(); + Requests[3670].RequestServices = CreateServices(); + Requests[3670].Request.Method = "DELETE"; + Requests[3670].Request.Path = "/subscriptions/519b8264-2eeb-/resourceGroups/4de11410-8247-413/providers/Microsoft.Sql/servers/99637833-b/syncAgents/a132c1a2-1c37"; + Requests[3671] = new DefaultHttpContext(); + Requests[3671].RequestServices = CreateServices(); + Requests[3671].Request.Method = "GET"; + Requests[3671].Request.Path = "/subscriptions/7d53d480-3247-/resourceGroups/690ce51b-3b60-4c1/providers/Microsoft.Sql/servers/c0f8f996-3/syncAgents/99d0a75b-dd49"; + Requests[3672] = new DefaultHttpContext(); + Requests[3672].RequestServices = CreateServices(); + Requests[3672].Request.Method = "PUT"; + Requests[3672].Request.Path = "/subscriptions/10228d13-07cb-/resourceGroups/67c41592-8b4d-478/providers/Microsoft.Sql/servers/9f72e9b7-9/syncAgents/e494d0be-631a"; + Requests[3673] = new DefaultHttpContext(); + Requests[3673].RequestServices = CreateServices(); + Requests[3673].Request.Method = "DELETE"; + Requests[3673].Request.Path = "/subscriptions/3d46c805-0b9f-/resourceGroups/a03f03c8-6b7e-444/providers/Microsoft.Sql/servers/5fe98dab-9/virtualNetworkRules/5e11f064-8539-4b5b-842"; + Requests[3674] = new DefaultHttpContext(); + Requests[3674].RequestServices = CreateServices(); + Requests[3674].Request.Method = "PUT"; + Requests[3674].Request.Path = "/subscriptions/39f6001a-a902-/resourceGroups/a69e8a77-0136-41a/providers/Microsoft.Sql/servers/bea34886-9/virtualNetworkRules/d22b2538-d0e1-4c59-813"; + Requests[3675] = new DefaultHttpContext(); + Requests[3675].RequestServices = CreateServices(); + Requests[3675].Request.Method = "GET"; + Requests[3675].Request.Path = "/subscriptions/4436eabf-7fb6-/resourceGroups/66ae917e-7096-494/providers/Microsoft.Sql/servers/34dcc0da-9/virtualNetworkRules/b04e0122-107a-496b-84f"; + Requests[3676] = new DefaultHttpContext(); + Requests[3676].RequestServices = CreateServices(); + Requests[3676].Request.Method = "GET"; + Requests[3676].Request.Path = "/subscriptions/4e94fc68-807f-/resourcegroups/3a90be95-f0cd-451/providers/Microsoft.Storage.Admin/farms/85f536/blobservices/c3ef5c62-28"; + Requests[3677] = new DefaultHttpContext(); + Requests[3677].RequestServices = CreateServices(); + Requests[3677].Request.Method = "GET"; + Requests[3677].Request.Path = "/subscriptions/c0565da1-b47a-/resourcegroups/3bd34546-a537-42a/providers/Microsoft.Storage.Admin/farms/d689bd/operationresults/f7fc99bd-bb"; + Requests[3678] = new DefaultHttpContext(); + Requests[3678].RequestServices = CreateServices(); + Requests[3678].Request.Method = "GET"; + Requests[3678].Request.Path = "/subscriptions/d34d0dc3-de4a-/resourcegroups/3452f1cc-2f7c-4f6/providers/Microsoft.Storage.Admin/farms/822e97/queueservices/8608a9a2-20"; + Requests[3679] = new DefaultHttpContext(); + Requests[3679].RequestServices = CreateServices(); + Requests[3679].Request.Method = "GET"; + Requests[3679].Request.Path = "/subscriptions/bd597ae8-aacc-/resourcegroups/544d37f0-7c91-4d3/providers/Microsoft.Storage.Admin/farms/e2c33d/shares/f9069feb-"; + Requests[3680] = new DefaultHttpContext(); + Requests[3680].RequestServices = CreateServices(); + Requests[3680].Request.Method = "POST"; + Requests[3680].Request.Path = "/subscriptions/3b0e9ea8-c8de-/resourcegroups/4e8ee799-bf6d-408/providers/Microsoft.Storage.Admin/farms/6c853f/storageaccounts/8266a3a0-"; + Requests[3681] = new DefaultHttpContext(); + Requests[3681].RequestServices = CreateServices(); + Requests[3681].Request.Method = "GET"; + Requests[3681].Request.Path = "/subscriptions/6770ceae-7b83-/resourcegroups/1089c040-6639-44e/providers/Microsoft.Storage.Admin/farms/42ebb8/storageaccounts/6ac4f4ba-"; + Requests[3682] = new DefaultHttpContext(); + Requests[3682].RequestServices = CreateServices(); + Requests[3682].Request.Method = "GET"; + Requests[3682].Request.Path = "/subscriptions/84682694-0b62-/resourcegroups/6a8c05fb-dbeb-452/providers/Microsoft.Storage.Admin/farms/442ef1/tableservices/70f73580-41"; + Requests[3683] = new DefaultHttpContext(); + Requests[3683].RequestServices = CreateServices(); + Requests[3683].Request.Method = "DELETE"; + Requests[3683].Request.Path = "/subscriptions/3df9232b-683f-/resourceGroups/dd57df6b-ad8e-4d7/providers/Microsoft.Storage/storageAccounts/38dd76ce-a7/managementPolicies/90364da4-82f5-49a1-a"; + Requests[3684] = new DefaultHttpContext(); + Requests[3684].RequestServices = CreateServices(); + Requests[3684].Request.Method = "GET"; + Requests[3684].Request.Path = "/subscriptions/febb1089-7194-/resourceGroups/b4dbd1ab-bd68-40a/providers/Microsoft.Storage/storageAccounts/a5ca5063-ea/managementPolicies/4f834371-132e-47eb-8"; + Requests[3685] = new DefaultHttpContext(); + Requests[3685].RequestServices = CreateServices(); + Requests[3685].Request.Method = "PUT"; + Requests[3685].Request.Path = "/subscriptions/6f3dda26-2e6c-/resourceGroups/8e1428e4-f238-4ed/providers/Microsoft.Storage/storageAccounts/4f1e4848-93/managementPolicies/81b2fafc-9726-44bb-8"; + Requests[3686] = new DefaultHttpContext(); + Requests[3686].RequestServices = CreateServices(); + Requests[3686].Request.Method = "DELETE"; + Requests[3686].Request.Path = "/subscriptions/e746e6a7-14cd-/resourceGroups/39ca1c6d-2e76-452/providers/Microsoft.StorSimple/managers/028c33fa-4e/accessControlRecords/631b7c5a-adfa-4d50-abd0"; + Requests[3687] = new DefaultHttpContext(); + Requests[3687].RequestServices = CreateServices(); + Requests[3687].Request.Method = "PUT"; + Requests[3687].Request.Path = "/subscriptions/9b010ebe-cd35-/resourceGroups/2c40312a-2ab3-41f/providers/Microsoft.StorSimple/managers/57720dd1-97/accessControlRecords/0c4ed516-7395-4098-a8dc"; + Requests[3688] = new DefaultHttpContext(); + Requests[3688].RequestServices = CreateServices(); + Requests[3688].Request.Method = "GET"; + Requests[3688].Request.Path = "/subscriptions/c7fd6d70-929e-/resourceGroups/a89f81da-689a-4f5/providers/Microsoft.StorSimple/managers/5b579b6e-be/accessControlRecords/a4005d84-e62e-4283-a2ed"; + Requests[3689] = new DefaultHttpContext(); + Requests[3689].RequestServices = CreateServices(); + Requests[3689].Request.Method = "DELETE"; + Requests[3689].Request.Path = "/subscriptions/d1bcffa9-159a-/resourceGroups/6f3d67fa-586a-456/providers/Microsoft.StorSimple/managers/beded94d-0a/bandwidthSettings/9c94cf76-79bc-49cc-8"; + Requests[3690] = new DefaultHttpContext(); + Requests[3690].RequestServices = CreateServices(); + Requests[3690].Request.Method = "GET"; + Requests[3690].Request.Path = "/subscriptions/80430817-d887-/resourceGroups/4dd905ad-3520-468/providers/Microsoft.StorSimple/managers/8fc6217d-e8/bandwidthSettings/2c166486-884a-4766-9"; + Requests[3691] = new DefaultHttpContext(); + Requests[3691].RequestServices = CreateServices(); + Requests[3691].Request.Method = "PUT"; + Requests[3691].Request.Path = "/subscriptions/a50559b4-83e6-/resourceGroups/41d4cf2e-785b-466/providers/Microsoft.StorSimple/managers/449b4776-ea/bandwidthSettings/4c0254fa-562a-4111-b"; + Requests[3692] = new DefaultHttpContext(); + Requests[3692].RequestServices = CreateServices(); + Requests[3692].Request.Method = "DELETE"; + Requests[3692].Request.Path = "/subscriptions/8f1a1859-1178-/resourceGroups/de8a82e7-abab-435/providers/Microsoft.StorSimple/managers/95d02b26-e0/devices/2c7a8408-f"; + Requests[3693] = new DefaultHttpContext(); + Requests[3693].RequestServices = CreateServices(); + Requests[3693].Request.Method = "GET"; + Requests[3693].Request.Path = "/subscriptions/5bffdcda-f485-/resourceGroups/290bd609-c12a-423/providers/Microsoft.StorSimple/managers/a4b4746b-fa/devices/ce3c79c4-1"; + Requests[3694] = new DefaultHttpContext(); + Requests[3694].RequestServices = CreateServices(); + Requests[3694].Request.Method = "PATCH"; + Requests[3694].Request.Path = "/subscriptions/5ee482d6-3f13-/resourceGroups/a3afa95f-15c8-4d4/providers/Microsoft.StorSimple/managers/6feb4822-99/devices/9571dfda-9"; + Requests[3695] = new DefaultHttpContext(); + Requests[3695].RequestServices = CreateServices(); + Requests[3695].Request.Method = "GET"; + Requests[3695].Request.Path = "/subscriptions/b2efd7e6-3169-/resourceGroups/9db060ca-4b3d-4ba/providers/Microsoft.StorSimple/managers/a1c75e8c-d5/storageAccountCredentials/4215c996-27a1-47bb-a75b-4836"; + Requests[3696] = new DefaultHttpContext(); + Requests[3696].RequestServices = CreateServices(); + Requests[3696].Request.Method = "PUT"; + Requests[3696].Request.Path = "/subscriptions/3705b9e0-095d-/resourceGroups/b179f280-ecc8-43f/providers/Microsoft.StorSimple/managers/bc6414d2-d8/storageAccountCredentials/d53aff2a-6f01-4520-a9b5-67cd"; + Requests[3697] = new DefaultHttpContext(); + Requests[3697].RequestServices = CreateServices(); + Requests[3697].Request.Method = "DELETE"; + Requests[3697].Request.Path = "/subscriptions/da520851-7a41-/resourceGroups/6a413775-0d22-4f5/providers/Microsoft.StorSimple/managers/e397479b-69/storageAccountCredentials/44f108fc-565d-45dd-b912-cfe2"; + Requests[3698] = new DefaultHttpContext(); + Requests[3698].RequestServices = CreateServices(); + Requests[3698].Request.Method = "PATCH"; + Requests[3698].Request.Path = "/subscriptions/a7edfe14-fc8b-/resourcegroups/f220c17b-6000-478/providers/Microsoft.StreamAnalytics/streamingjobs/4b9358d/functions/98f4c085-b70"; + Requests[3699] = new DefaultHttpContext(); + Requests[3699].RequestServices = CreateServices(); + Requests[3699].Request.Method = "GET"; + Requests[3699].Request.Path = "/subscriptions/bd99fcaf-fdd0-/resourcegroups/839864b2-3371-4f8/providers/Microsoft.StreamAnalytics/streamingjobs/5b71120/functions/68255ae8-0c7"; + Requests[3700] = new DefaultHttpContext(); + Requests[3700].RequestServices = CreateServices(); + Requests[3700].Request.Method = "DELETE"; + Requests[3700].Request.Path = "/subscriptions/5cb2c693-c320-/resourcegroups/c6695f59-5081-431/providers/Microsoft.StreamAnalytics/streamingjobs/d1f8c47/functions/fa15ee3f-c0c"; + Requests[3701] = new DefaultHttpContext(); + Requests[3701].RequestServices = CreateServices(); + Requests[3701].Request.Method = "PUT"; + Requests[3701].Request.Path = "/subscriptions/0d04e5a4-819e-/resourcegroups/6d12f844-7b1b-44b/providers/Microsoft.StreamAnalytics/streamingjobs/5378aad/functions/050c6ed0-140"; + Requests[3702] = new DefaultHttpContext(); + Requests[3702].RequestServices = CreateServices(); + Requests[3702].Request.Method = "GET"; + Requests[3702].Request.Path = "/subscriptions/ccaf6cf4-77d6-/resourcegroups/89b74795-a9bf-4ec/providers/Microsoft.StreamAnalytics/streamingjobs/1e5e43f/inputs/c4703eae-"; + Requests[3703] = new DefaultHttpContext(); + Requests[3703].RequestServices = CreateServices(); + Requests[3703].Request.Method = "DELETE"; + Requests[3703].Request.Path = "/subscriptions/fafb9dfe-a716-/resourcegroups/da58a232-1853-495/providers/Microsoft.StreamAnalytics/streamingjobs/72bb9c8/inputs/416bcc32-"; + Requests[3704] = new DefaultHttpContext(); + Requests[3704].RequestServices = CreateServices(); + Requests[3704].Request.Method = "PATCH"; + Requests[3704].Request.Path = "/subscriptions/4bc23531-ad91-/resourcegroups/31e6a1aa-b145-4d3/providers/Microsoft.StreamAnalytics/streamingjobs/ee61093/inputs/c247816a-"; + Requests[3705] = new DefaultHttpContext(); + Requests[3705].RequestServices = CreateServices(); + Requests[3705].Request.Method = "PUT"; + Requests[3705].Request.Path = "/subscriptions/fbf04647-cce8-/resourcegroups/99a3c804-c94c-4fe/providers/Microsoft.StreamAnalytics/streamingjobs/eb400fc/inputs/6ca31c34-"; + Requests[3706] = new DefaultHttpContext(); + Requests[3706].RequestServices = CreateServices(); + Requests[3706].Request.Method = "GET"; + Requests[3706].Request.Path = "/subscriptions/3c45a57f-4932-/resourcegroups/1b059ec7-5311-44c/providers/Microsoft.StreamAnalytics/streamingjobs/d3b26d4/outputs/e2bb7893-d"; + Requests[3707] = new DefaultHttpContext(); + Requests[3707].RequestServices = CreateServices(); + Requests[3707].Request.Method = "PUT"; + Requests[3707].Request.Path = "/subscriptions/d0fd2abe-8670-/resourcegroups/0111d435-a5ca-4b3/providers/Microsoft.StreamAnalytics/streamingjobs/ee0b641/outputs/2310afee-2"; + Requests[3708] = new DefaultHttpContext(); + Requests[3708].RequestServices = CreateServices(); + Requests[3708].Request.Method = "DELETE"; + Requests[3708].Request.Path = "/subscriptions/6388f132-f35d-/resourcegroups/a8ee2bbb-d8ee-43d/providers/Microsoft.StreamAnalytics/streamingjobs/9e88823/outputs/ec8677b9-3"; + Requests[3709] = new DefaultHttpContext(); + Requests[3709].RequestServices = CreateServices(); + Requests[3709].Request.Method = "PATCH"; + Requests[3709].Request.Path = "/subscriptions/b6142eeb-cdf7-/resourcegroups/36d15a38-8303-432/providers/Microsoft.StreamAnalytics/streamingjobs/02d31a0/outputs/e5c926b5-4"; + Requests[3710] = new DefaultHttpContext(); + Requests[3710].RequestServices = CreateServices(); + Requests[3710].Request.Method = "GET"; + Requests[3710].Request.Path = "/subscriptions/ec3fd25c-3577-/resourcegroups/36547fb6-6a52-4cd/providers/Microsoft.StreamAnalytics/streamingjobs/3cf129e/transformations/5bc84c66-89fe-4852"; + Requests[3711] = new DefaultHttpContext(); + Requests[3711].RequestServices = CreateServices(); + Requests[3711].Request.Method = "PATCH"; + Requests[3711].Request.Path = "/subscriptions/fdbe6213-83c4-/resourcegroups/ebd323eb-1385-4db/providers/Microsoft.StreamAnalytics/streamingjobs/6955454/transformations/f7812853-af95-49d5"; + Requests[3712] = new DefaultHttpContext(); + Requests[3712].RequestServices = CreateServices(); + Requests[3712].Request.Method = "PUT"; + Requests[3712].Request.Path = "/subscriptions/a624f2a9-4536-/resourcegroups/4af89dc0-254a-481/providers/Microsoft.StreamAnalytics/streamingjobs/8d4aff5/transformations/3296fdda-8468-4b71"; + Requests[3713] = new DefaultHttpContext(); + Requests[3713].RequestServices = CreateServices(); + Requests[3713].Request.Method = "DELETE"; + Requests[3713].Request.Path = "/subscriptions/8e8fce73-b4d3-/resourcegroups/c5d1810d-2083-4bd/providers/Microsoft.Subscriptions.Admin/offers/2b334/offerDelegations/895e2861-e515-4b60-"; + Requests[3714] = new DefaultHttpContext(); + Requests[3714].RequestServices = CreateServices(); + Requests[3714].Request.Method = "PUT"; + Requests[3714].Request.Path = "/subscriptions/0c089167-485f-/resourcegroups/4fe6e6a7-5e5d-463/providers/Microsoft.Subscriptions.Admin/offers/e429e/offerDelegations/9fdb242c-0895-46ec-"; + Requests[3715] = new DefaultHttpContext(); + Requests[3715].RequestServices = CreateServices(); + Requests[3715].Request.Method = "GET"; + Requests[3715].Request.Path = "/subscriptions/a3daf8af-0602-/resourcegroups/97f99cb5-b250-42d/providers/Microsoft.Subscriptions.Admin/offers/5e875/offerDelegations/9ebad908-01ee-42de-"; + Requests[3716] = new DefaultHttpContext(); + Requests[3716].RequestServices = CreateServices(); + Requests[3716].Request.Method = "DELETE"; + Requests[3716].Request.Path = "/subscriptions/fc4b570e-32d7-/resourceGroups/7dc56720-08e7-406/providers/Microsoft.TimeSeriesInsights/environments/9f2dfb4c-dc73-4/accessPolicies/5babf0c9-d9e4-4a"; + Requests[3717] = new DefaultHttpContext(); + Requests[3717].RequestServices = CreateServices(); + Requests[3717].Request.Method = "PATCH"; + Requests[3717].Request.Path = "/subscriptions/6f0f56b0-61f2-/resourceGroups/b96807eb-65a5-43f/providers/Microsoft.TimeSeriesInsights/environments/49a4275f-4b44-4/accessPolicies/d3d1a309-9f10-4b"; + Requests[3718] = new DefaultHttpContext(); + Requests[3718].RequestServices = CreateServices(); + Requests[3718].Request.Method = "GET"; + Requests[3718].Request.Path = "/subscriptions/be2e1350-2733-/resourceGroups/e0e15ad3-fc51-420/providers/Microsoft.TimeSeriesInsights/environments/9ab967e4-2e44-4/accessPolicies/4f7f3f3c-81c2-4d"; + Requests[3719] = new DefaultHttpContext(); + Requests[3719].RequestServices = CreateServices(); + Requests[3719].Request.Method = "PUT"; + Requests[3719].Request.Path = "/subscriptions/4550be7c-aa12-/resourceGroups/8ddb5bc8-8aa7-47b/providers/Microsoft.TimeSeriesInsights/environments/b6e4b979-9f6c-4/accessPolicies/8670716a-3188-42"; + Requests[3720] = new DefaultHttpContext(); + Requests[3720].RequestServices = CreateServices(); + Requests[3720].Request.Method = "PUT"; + Requests[3720].Request.Path = "/subscriptions/1bc0caf0-1c53-/resourceGroups/d1483324-b0c2-4e5/providers/Microsoft.TimeSeriesInsights/environments/e07eadad-177c-4/eventSources/41df518f-0cd6-4"; + Requests[3721] = new DefaultHttpContext(); + Requests[3721].RequestServices = CreateServices(); + Requests[3721].Request.Method = "GET"; + Requests[3721].Request.Path = "/subscriptions/45869e24-b13f-/resourceGroups/9b411cfd-33c9-4b0/providers/Microsoft.TimeSeriesInsights/environments/36fc1bca-c7bc-4/eventSources/53251857-0614-4"; + Requests[3722] = new DefaultHttpContext(); + Requests[3722].RequestServices = CreateServices(); + Requests[3722].Request.Method = "PATCH"; + Requests[3722].Request.Path = "/subscriptions/61d7f18c-f459-/resourceGroups/38c7e756-27f2-45b/providers/Microsoft.TimeSeriesInsights/environments/8e306eb6-baef-4/eventSources/9e458cf3-20d8-4"; + Requests[3723] = new DefaultHttpContext(); + Requests[3723].RequestServices = CreateServices(); + Requests[3723].Request.Method = "DELETE"; + Requests[3723].Request.Path = "/subscriptions/1b1a6ddc-f9f0-/resourceGroups/b8bce253-488a-45c/providers/Microsoft.TimeSeriesInsights/environments/0a90c26e-f537-4/eventSources/ef41bcda-5740-4"; + Requests[3724] = new DefaultHttpContext(); + Requests[3724].RequestServices = CreateServices(); + Requests[3724].Request.Method = "PUT"; + Requests[3724].Request.Path = "/subscriptions/adece0ad-620d-/resourceGroups/6f8c179b-8e24-413/providers/Microsoft.TimeSeriesInsights/environments/30bb4cc7-27ae-4/referenceDataSets/7cba5340-b92f-46a8-b"; + Requests[3725] = new DefaultHttpContext(); + Requests[3725].RequestServices = CreateServices(); + Requests[3725].Request.Method = "GET"; + Requests[3725].Request.Path = "/subscriptions/99709a78-56e9-/resourceGroups/003e14ea-6be9-48e/providers/Microsoft.TimeSeriesInsights/environments/ee529ac5-3301-4/referenceDataSets/9811620e-a9e4-48f4-8"; + Requests[3726] = new DefaultHttpContext(); + Requests[3726].RequestServices = CreateServices(); + Requests[3726].Request.Method = "DELETE"; + Requests[3726].Request.Path = "/subscriptions/63683018-1899-/resourceGroups/13d4653f-ae80-466/providers/Microsoft.TimeSeriesInsights/environments/27308c43-0c36-4/referenceDataSets/522af3e7-f70c-4572-8"; + Requests[3727] = new DefaultHttpContext(); + Requests[3727].RequestServices = CreateServices(); + Requests[3727].Request.Method = "PATCH"; + Requests[3727].Request.Path = "/subscriptions/08e2bae7-36cf-/resourceGroups/68a4749f-f8d2-47b/providers/Microsoft.TimeSeriesInsights/environments/34f7232d-d3a8-4/referenceDataSets/4bbeef96-5cd2-4582-b"; + Requests[3728] = new DefaultHttpContext(); + Requests[3728].RequestServices = CreateServices(); + Requests[3728].Request.Method = "GET"; + Requests[3728].Request.Path = "/subscriptions/e7344f4b-2345-/resourcegroups/92cc4afc-a9be-485/providers/Microsoft.Update.Admin/updateLocations/230dbce0-fe97-/updates/6f9204a0-e"; + Requests[3729] = new DefaultHttpContext(); + Requests[3729].RequestServices = CreateServices(); + Requests[3729].Request.Method = "DELETE"; + Requests[3729].Request.Path = "/subscriptions/09243a7a-9e93-/resourcegroups/b0deca74-02c6-41a/providers/microsoft.visualstudio/account/256a4234-33e7-4b8c-/extension/07a3000f-4651-4d32-a1"; + Requests[3730] = new DefaultHttpContext(); + Requests[3730].RequestServices = CreateServices(); + Requests[3730].Request.Method = "GET"; + Requests[3730].Request.Path = "/subscriptions/62359f28-85b0-/resourcegroups/8f3f727b-bba9-427/providers/microsoft.visualstudio/account/b19fd86b-0f53-4e37-/extension/42f77ee5-02e6-4650-8f"; + Requests[3731] = new DefaultHttpContext(); + Requests[3731].RequestServices = CreateServices(); + Requests[3731].Request.Method = "PATCH"; + Requests[3731].Request.Path = "/subscriptions/1dde984b-1f47-/resourcegroups/5a1b6193-9870-42e/providers/microsoft.visualstudio/account/a9337878-861a-4851-/extension/455843a0-b976-477a-a4"; + Requests[3732] = new DefaultHttpContext(); + Requests[3732].RequestServices = CreateServices(); + Requests[3732].Request.Method = "PUT"; + Requests[3732].Request.Path = "/subscriptions/d32cde11-d945-/resourcegroups/7c3cccf7-be02-4b0/providers/microsoft.visualstudio/account/3bde32f0-7e72-466c-/extension/bef9fa18-a3e8-4f7e-82"; + Requests[3733] = new DefaultHttpContext(); + Requests[3733].RequestServices = CreateServices(); + Requests[3733].Request.Method = "PATCH"; + Requests[3733].Request.Path = "/subscriptions/a25f426d-3a62-/resourceGroups/1090a41c-f4d4-429/providers/microsoft.visualstudio/account/4d57f2b0-2b12-47/project/6cd255d7-b48"; + Requests[3734] = new DefaultHttpContext(); + Requests[3734].RequestServices = CreateServices(); + Requests[3734].Request.Method = "GET"; + Requests[3734].Request.Path = "/subscriptions/99226427-c678-/resourceGroups/6c8a3c43-cf24-4f6/providers/microsoft.visualstudio/account/131994d4-12a0-41/project/6906222a-0a0"; + Requests[3735] = new DefaultHttpContext(); + Requests[3735].RequestServices = CreateServices(); + Requests[3735].Request.Method = "PUT"; + Requests[3735].Request.Path = "/subscriptions/5a879885-ab0a-/resourceGroups/2de0788f-3365-4c7/providers/microsoft.visualstudio/account/160244c8-bd18-46/project/22d09f5b-255"; + Requests[3736] = new DefaultHttpContext(); + Requests[3736].RequestServices = CreateServices(); + Requests[3736].Request.Method = "GET"; + Requests[3736].Request.Path = "/subscriptions/7334cb8c-6395-/resourceGroups/f40dccf7-92ff-406/providers/Microsoft.Web/hostingEnvironments/85127/detectors/830d9d71-323"; + Requests[3737] = new DefaultHttpContext(); + Requests[3737].RequestServices = CreateServices(); + Requests[3737].Request.Method = "GET"; + Requests[3737].Request.Path = "/subscriptions/577a5caa-ef18-/resourceGroups/220dde04-e8f7-401/providers/Microsoft.Web/hostingEnvironments/3f0d6/diagnostics/3bd28575-62cc-4"; + Requests[3738] = new DefaultHttpContext(); + Requests[3738].RequestServices = CreateServices(); + Requests[3738].Request.Method = "GET"; + Requests[3738].Request.Path = "/subscriptions/71fbcfd4-a5e3-/resourceGroups/c66ee38d-918e-4c1/providers/Microsoft.Web/hostingEnvironments/4451a/operations/14d9f194-7d"; + Requests[3739] = new DefaultHttpContext(); + Requests[3739].RequestServices = CreateServices(); + Requests[3739].Request.Method = "PATCH"; + Requests[3739].Request.Path = "/subscriptions/0f44d081-da3d-/resourceGroups/f74e9e16-643d-472/providers/Microsoft.Web/hostingEnvironments/a456b/workerPools/447c5449-6533-"; + Requests[3740] = new DefaultHttpContext(); + Requests[3740].RequestServices = CreateServices(); + Requests[3740].Request.Method = "GET"; + Requests[3740].Request.Path = "/subscriptions/ede86ac2-2810-/resourceGroups/77d9e0f8-c41c-41c/providers/Microsoft.Web/hostingEnvironments/72665/workerPools/a59b1d60-5156-"; + Requests[3741] = new DefaultHttpContext(); + Requests[3741].RequestServices = CreateServices(); + Requests[3741].Request.Method = "PUT"; + Requests[3741].Request.Path = "/subscriptions/6170631f-4da4-/resourceGroups/51421974-844f-46f/providers/Microsoft.Web/hostingEnvironments/05414/workerPools/4c3cc883-7359-"; + Requests[3742] = new DefaultHttpContext(); + Requests[3742].RequestServices = CreateServices(); + Requests[3742].Request.Method = "GET"; + Requests[3742].Request.Path = "/subscriptions/78991c18-8a6e-/resourceGroups/8506a028-5081-409/providers/Microsoft.Web/managedHostingEnvironments/fbf28/operations/ed44ba32-04"; + Requests[3743] = new DefaultHttpContext(); + Requests[3743].RequestServices = CreateServices(); + Requests[3743].Request.Method = "GET"; + Requests[3743].Request.Path = "/subscriptions/59ce306d-b71d-/resourceGroups/61ddb88b-b4c1-485/providers/Microsoft.Web/serverfarms/4cfcd/operationresults/152e3d13-bd"; + Requests[3744] = new DefaultHttpContext(); + Requests[3744].RequestServices = CreateServices(); + Requests[3744].Request.Method = "GET"; + Requests[3744].Request.Path = "/subscriptions/c7e9882e-3c79-/resourceGroups/4195a4b6-10d5-445/providers/Microsoft.Web/serverfarms/1dc04/virtualNetworkConnections/06659603"; + Requests[3745] = new DefaultHttpContext(); + Requests[3745].RequestServices = CreateServices(); + Requests[3745].Request.Method = "GET"; + Requests[3745].Request.Path = "/subscriptions/9e11364c-734e-/resourceGroups/d826010d-1555-4e6/providers/Microsoft.Web/sites/59d86/backups/37e9269f"; + Requests[3746] = new DefaultHttpContext(); + Requests[3746].RequestServices = CreateServices(); + Requests[3746].Request.Method = "DELETE"; + Requests[3746].Request.Path = "/subscriptions/0961c058-0fb8-/resourceGroups/c0aa8117-3f65-4a9/providers/Microsoft.Web/sites/5b05a/backups/1319fcbe"; + Requests[3747] = new DefaultHttpContext(); + Requests[3747].RequestServices = CreateServices(); + Requests[3747].Request.Method = "GET"; + Requests[3747].Request.Path = "/subscriptions/f105535c-b156-/resourceGroups/e3217de6-e1cf-4f2/providers/Microsoft.Web/sites/c1068/continuouswebjobs/703587ea-a"; + Requests[3748] = new DefaultHttpContext(); + Requests[3748].RequestServices = CreateServices(); + Requests[3748].Request.Method = "DELETE"; + Requests[3748].Request.Path = "/subscriptions/48b31958-70f9-/resourceGroups/46717d41-742b-449/providers/Microsoft.Web/sites/4cdb5/continuouswebjobs/1cd1ac91-f"; + Requests[3749] = new DefaultHttpContext(); + Requests[3749].RequestServices = CreateServices(); + Requests[3749].Request.Method = "GET"; + Requests[3749].Request.Path = "/subscriptions/672f0322-1af5-/resourceGroups/84f861a2-44df-48b/providers/Microsoft.Web/sites/0d423/deployments/7479d"; + Requests[3750] = new DefaultHttpContext(); + Requests[3750].RequestServices = CreateServices(); + Requests[3750].Request.Method = "DELETE"; + Requests[3750].Request.Path = "/subscriptions/5a223f0b-2a7a-/resourceGroups/273f9f43-97dc-485/providers/Microsoft.Web/sites/1f2dc/deployments/23c47"; + Requests[3751] = new DefaultHttpContext(); + Requests[3751].RequestServices = CreateServices(); + Requests[3751].Request.Method = "PUT"; + Requests[3751].Request.Path = "/subscriptions/8e36c384-274a-/resourceGroups/67706b72-b7c7-4c8/providers/Microsoft.Web/sites/faf41/deployments/79a0a"; + Requests[3752] = new DefaultHttpContext(); + Requests[3752].RequestServices = CreateServices(); + Requests[3752].Request.Method = "PATCH"; + Requests[3752].Request.Path = "/subscriptions/352a404d-8235-/resourceGroups/f728ad3b-75b3-4ac/providers/Microsoft.Web/sites/5e892/domainOwnershipIdentifiers/a8caa4be-8915-4b6a-b113-4de07"; + Requests[3753] = new DefaultHttpContext(); + Requests[3753].RequestServices = CreateServices(); + Requests[3753].Request.Method = "GET"; + Requests[3753].Request.Path = "/subscriptions/bcf19e4e-0205-/resourceGroups/37468510-aa5a-472/providers/Microsoft.Web/sites/270e1/domainOwnershipIdentifiers/de64ccd9-0c3b-4a61-b6a9-2826c"; + Requests[3754] = new DefaultHttpContext(); + Requests[3754].RequestServices = CreateServices(); + Requests[3754].Request.Method = "PUT"; + Requests[3754].Request.Path = "/subscriptions/6f9a4580-899d-/resourceGroups/04af77c7-808c-4ea/providers/Microsoft.Web/sites/b41ff/domainOwnershipIdentifiers/a86c1084-f7ae-45cd-9aef-95709"; + Requests[3755] = new DefaultHttpContext(); + Requests[3755].RequestServices = CreateServices(); + Requests[3755].Request.Method = "DELETE"; + Requests[3755].Request.Path = "/subscriptions/ab4802a3-cea4-/resourceGroups/829d3967-fc41-43a/providers/Microsoft.Web/sites/20c68/domainOwnershipIdentifiers/bc819a2f-d4fb-41c8-98b5-7a257"; + Requests[3756] = new DefaultHttpContext(); + Requests[3756].RequestServices = CreateServices(); + Requests[3756].Request.Method = "DELETE"; + Requests[3756].Request.Path = "/subscriptions/e028af5d-810b-/resourceGroups/e5612ef7-cc2f-42c/providers/Microsoft.Web/sites/b908a/functions/eb6f4572-412"; + Requests[3757] = new DefaultHttpContext(); + Requests[3757].RequestServices = CreateServices(); + Requests[3757].Request.Method = "GET"; + Requests[3757].Request.Path = "/subscriptions/d7336829-3e48-/resourceGroups/be5070b4-2773-41c/providers/Microsoft.Web/sites/47952/functions/e048f8c6-a8a"; + Requests[3758] = new DefaultHttpContext(); + Requests[3758].RequestServices = CreateServices(); + Requests[3758].Request.Method = "PUT"; + Requests[3758].Request.Path = "/subscriptions/4dbdd877-028a-/resourceGroups/092d2066-1890-45f/providers/Microsoft.Web/sites/e70b5/functions/b000049d-1f0"; + Requests[3759] = new DefaultHttpContext(); + Requests[3759].RequestServices = CreateServices(); + Requests[3759].Request.Method = "DELETE"; + Requests[3759].Request.Path = "/subscriptions/c312b330-478d-/resourceGroups/724feece-7110-423/providers/Microsoft.Web/sites/a093a/hostNameBindings/df644e47"; + Requests[3760] = new DefaultHttpContext(); + Requests[3760].RequestServices = CreateServices(); + Requests[3760].Request.Method = "PUT"; + Requests[3760].Request.Path = "/subscriptions/754e7855-5a03-/resourceGroups/03545b98-4734-4fd/providers/Microsoft.Web/sites/3b22d/hostNameBindings/9685ab90"; + Requests[3761] = new DefaultHttpContext(); + Requests[3761].RequestServices = CreateServices(); + Requests[3761].Request.Method = "GET"; + Requests[3761].Request.Path = "/subscriptions/8ba0b039-51b0-/resourceGroups/5ab94869-75e9-4d8/providers/Microsoft.Web/sites/39cf9/hostNameBindings/521e98c6"; + Requests[3762] = new DefaultHttpContext(); + Requests[3762].RequestServices = CreateServices(); + Requests[3762].Request.Method = "PATCH"; + Requests[3762].Request.Path = "/subscriptions/ae661d39-3077-/resourceGroups/00a7ebff-f143-41d/providers/Microsoft.Web/sites/2c7f0/hybridconnection/a512b8aa-6"; + Requests[3763] = new DefaultHttpContext(); + Requests[3763].RequestServices = CreateServices(); + Requests[3763].Request.Method = "DELETE"; + Requests[3763].Request.Path = "/subscriptions/a56af18f-f6b6-/resourceGroups/a36fed2e-4828-42e/providers/Microsoft.Web/sites/aeee5/hybridconnection/b3c5c5ab-6"; + Requests[3764] = new DefaultHttpContext(); + Requests[3764].RequestServices = CreateServices(); + Requests[3764].Request.Method = "PUT"; + Requests[3764].Request.Path = "/subscriptions/c4c0ab32-f43a-/resourceGroups/611f079e-ab35-427/providers/Microsoft.Web/sites/f3264/hybridconnection/82a4b810-2"; + Requests[3765] = new DefaultHttpContext(); + Requests[3765].RequestServices = CreateServices(); + Requests[3765].Request.Method = "GET"; + Requests[3765].Request.Path = "/subscriptions/f0d88475-d2fc-/resourceGroups/6bd3ab63-3a93-44b/providers/Microsoft.Web/sites/20255/hybridconnection/c2d47cd6-d"; + Requests[3766] = new DefaultHttpContext(); + Requests[3766].RequestServices = CreateServices(); + Requests[3766].Request.Method = "GET"; + Requests[3766].Request.Path = "/subscriptions/493a566f-8d09-/resourceGroups/3774a9e1-f239-433/providers/Microsoft.Web/sites/d7478/networkFeatures/e8309"; + Requests[3767] = new DefaultHttpContext(); + Requests[3767].RequestServices = CreateServices(); + Requests[3767].Request.Method = "GET"; + Requests[3767].Request.Path = "/subscriptions/4b350d39-c54f-/resourceGroups/bab69dc1-ef62-487/providers/Microsoft.Web/sites/47fe0/operationresults/72e058f9-22"; + Requests[3768] = new DefaultHttpContext(); + Requests[3768].RequestServices = CreateServices(); + Requests[3768].Request.Method = "PUT"; + Requests[3768].Request.Path = "/subscriptions/c29b35b8-9aef-/resourceGroups/b7ed4eb0-8e15-472/providers/Microsoft.Web/sites/82012/premieraddons/e28e6c33-3239-40"; + Requests[3769] = new DefaultHttpContext(); + Requests[3769].RequestServices = CreateServices(); + Requests[3769].Request.Method = "DELETE"; + Requests[3769].Request.Path = "/subscriptions/6bd4966f-7e34-/resourceGroups/6180d404-4947-4cd/providers/Microsoft.Web/sites/3278e/premieraddons/3b3f0c0f-2560-43"; + Requests[3770] = new DefaultHttpContext(); + Requests[3770].RequestServices = CreateServices(); + Requests[3770].Request.Method = "GET"; + Requests[3770].Request.Path = "/subscriptions/4ea66b76-6304-/resourceGroups/65f01404-182d-479/providers/Microsoft.Web/sites/a326d/premieraddons/289429ef-e20b-4b"; + Requests[3771] = new DefaultHttpContext(); + Requests[3771].RequestServices = CreateServices(); + Requests[3771].Request.Method = "DELETE"; + Requests[3771].Request.Path = "/subscriptions/bdddff6f-7f3b-/resourceGroups/4d5a4086-eacb-4e6/providers/Microsoft.Web/sites/10fd6/processes/3615ee01-"; + Requests[3772] = new DefaultHttpContext(); + Requests[3772].RequestServices = CreateServices(); + Requests[3772].Request.Method = "GET"; + Requests[3772].Request.Path = "/subscriptions/90c2dc55-0e03-/resourceGroups/e27b2dcc-02ec-450/providers/Microsoft.Web/sites/5e038/processes/bd323886-"; + Requests[3773] = new DefaultHttpContext(); + Requests[3773].RequestServices = CreateServices(); + Requests[3773].Request.Method = "DELETE"; + Requests[3773].Request.Path = "/subscriptions/a5681f1b-af39-/resourceGroups/47939ea9-812c-4d0/providers/Microsoft.Web/sites/9928c/publicCertificates/c78beaa2-b140-4c3d-bc"; + Requests[3774] = new DefaultHttpContext(); + Requests[3774].RequestServices = CreateServices(); + Requests[3774].Request.Method = "PUT"; + Requests[3774].Request.Path = "/subscriptions/7fbfe263-9e66-/resourceGroups/8c66855b-2609-48b/providers/Microsoft.Web/sites/33491/publicCertificates/ef303502-8380-43fe-93"; + Requests[3775] = new DefaultHttpContext(); + Requests[3775].RequestServices = CreateServices(); + Requests[3775].Request.Method = "GET"; + Requests[3775].Request.Path = "/subscriptions/552d48a7-1f9c-/resourceGroups/54710385-3dab-430/providers/Microsoft.Web/sites/bca24/publicCertificates/552d7cb3-f332-45e6-94"; + Requests[3776] = new DefaultHttpContext(); + Requests[3776].RequestServices = CreateServices(); + Requests[3776].Request.Method = "PUT"; + Requests[3776].Request.Path = "/subscriptions/f4952572-77a7-/resourceGroups/c3a3552d-ce89-4fd/providers/Microsoft.Web/sites/1efbc/siteextensions/2cb7c38f-af00-4"; + Requests[3777] = new DefaultHttpContext(); + Requests[3777].RequestServices = CreateServices(); + Requests[3777].Request.Method = "GET"; + Requests[3777].Request.Path = "/subscriptions/ef7848ab-d7c1-/resourceGroups/7c0a3285-d9fa-444/providers/Microsoft.Web/sites/c685c/siteextensions/a6b6cf31-9c22-4"; + Requests[3778] = new DefaultHttpContext(); + Requests[3778].RequestServices = CreateServices(); + Requests[3778].Request.Method = "DELETE"; + Requests[3778].Request.Path = "/subscriptions/2d97a7f8-da41-/resourceGroups/95227e4e-5542-426/providers/Microsoft.Web/sites/7ab49/siteextensions/0cc827f6-3d9c-4"; + Requests[3779] = new DefaultHttpContext(); + Requests[3779].RequestServices = CreateServices(); + Requests[3779].Request.Method = "GET"; + Requests[3779].Request.Path = "/subscriptions/8ab9533b-40b5-/resourceGroups/f57ae4e9-0e0d-413/providers/Microsoft.Web/sites/fec40/slots/ed57e"; + Requests[3780] = new DefaultHttpContext(); + Requests[3780].RequestServices = CreateServices(); + Requests[3780].Request.Method = "PUT"; + Requests[3780].Request.Path = "/subscriptions/5ee30cc5-f00d-/resourceGroups/4f5fa93a-0bd3-402/providers/Microsoft.Web/sites/abe10/slots/0374a"; + Requests[3781] = new DefaultHttpContext(); + Requests[3781].RequestServices = CreateServices(); + Requests[3781].Request.Method = "DELETE"; + Requests[3781].Request.Path = "/subscriptions/3c6e347f-1c90-/resourceGroups/976c21dc-1dc5-42e/providers/Microsoft.Web/sites/aa5d5/slots/5db44"; + Requests[3782] = new DefaultHttpContext(); + Requests[3782].RequestServices = CreateServices(); + Requests[3782].Request.Method = "PATCH"; + Requests[3782].Request.Path = "/subscriptions/699b359b-fe97-/resourceGroups/d384dc5d-798a-4e9/providers/Microsoft.Web/sites/ca4b8/slots/63b90"; + Requests[3783] = new DefaultHttpContext(); + Requests[3783].RequestServices = CreateServices(); + Requests[3783].Request.Method = "GET"; + Requests[3783].Request.Path = "/subscriptions/a5c40202-7fb4-/resourceGroups/0b57606f-f369-40f/providers/Microsoft.Web/sites/7bc0a/triggeredwebjobs/29c49a21-5"; + Requests[3784] = new DefaultHttpContext(); + Requests[3784].RequestServices = CreateServices(); + Requests[3784].Request.Method = "DELETE"; + Requests[3784].Request.Path = "/subscriptions/4e4528f6-770d-/resourceGroups/be259e46-c2e3-478/providers/Microsoft.Web/sites/7f2fa/triggeredwebjobs/455eba18-9"; + Requests[3785] = new DefaultHttpContext(); + Requests[3785].RequestServices = CreateServices(); + Requests[3785].Request.Method = "PATCH"; + Requests[3785].Request.Path = "/subscriptions/cad2fe36-27d4-/resourceGroups/682464cd-a124-403/providers/Microsoft.Web/sites/6ff00/virtualNetworkConnections/501fabab"; + Requests[3786] = new DefaultHttpContext(); + Requests[3786].RequestServices = CreateServices(); + Requests[3786].Request.Method = "DELETE"; + Requests[3786].Request.Path = "/subscriptions/0fcd6570-7af1-/resourceGroups/ce69187a-f32d-4df/providers/Microsoft.Web/sites/47fa2/virtualNetworkConnections/d12c5f0f"; + Requests[3787] = new DefaultHttpContext(); + Requests[3787].RequestServices = CreateServices(); + Requests[3787].Request.Method = "PUT"; + Requests[3787].Request.Path = "/subscriptions/b31ec4cc-6e5c-/resourceGroups/52983183-fbda-44b/providers/Microsoft.Web/sites/6a5b1/virtualNetworkConnections/ca6bf850"; + Requests[3788] = new DefaultHttpContext(); + Requests[3788].RequestServices = CreateServices(); + Requests[3788].Request.Method = "GET"; + Requests[3788].Request.Path = "/subscriptions/7a121464-cfa2-/resourceGroups/ef41073e-3f9f-48e/providers/Microsoft.Web/sites/304f3/virtualNetworkConnections/1ab73d51"; + Requests[3789] = new DefaultHttpContext(); + Requests[3789].RequestServices = CreateServices(); + Requests[3789].Request.Method = "GET"; + Requests[3789].Request.Path = "/subscriptions/0ac2fc25-df24-/resourceGroups/bdccada9-96c9-468/providers/Microsoft.Web/sites/0460c/webjobs/4139d255-f"; + Requests[3790] = new DefaultHttpContext(); + Requests[3790].RequestServices = CreateServices(); + Requests[3790].Request.Method = "GET"; + Requests[3790].Request.Path = "/subscriptions/75d316bf-cc32-/resourceGroups/376215b1-12a9-49b/providers/Microsoft.Web/sites/144b2cac/detectors/97a5802e-b67"; + Requests[3791] = new DefaultHttpContext(); + Requests[3791].RequestServices = CreateServices(); + Requests[3791].Request.Method = "GET"; + Requests[3791].Request.Path = "/subscriptions/21e8b550-144f-/resourceGroups/d1e1f7a4-11c2-496/providers/Microsoft.Web/sites/e6995884/diagnostics/249bacad-96b8-4708"; + Requests[3792] = new DefaultHttpContext(); + Requests[3792].RequestServices = CreateServices(); + Requests[3792].Request.Method = "GET"; + Requests[3792].Request.Path = "/subscriptions/8cc7b346-5c09-/resourceGroups/2bc39383-a75c-413/providers/Microsoft.Web/sites/4b65e8e0/recommendations/86800"; + Requests[3793] = new DefaultHttpContext(); + Requests[3793].RequestServices = CreateServices(); + Requests[3793].Request.Method = "POST"; + Requests[3793].Request.Path = "/subscriptions/e07e8d78-f11a-/resourceGroup/ebad9344-7ce6-4f9/providers/Microsoft.MachineLearningServices/workspaces/8d88b02b-09c0/computes/c335097f-77/listKeys"; + Requests[3794] = new DefaultHttpContext(); + Requests[3794].RequestServices = CreateServices(); + Requests[3794].Request.Method = "GET"; + Requests[3794].Request.Path = "/subscriptions/077a0fd5-18bc-/resourceGroups/ce8b8c43-/providers/Microsoft.DataMigration/services/e9c753c5-97/projects/0cc116c7-59/tasks"; + Requests[3795] = new DefaultHttpContext(); + Requests[3795].RequestServices = CreateServices(); + Requests[3795].Request.Method = "POST"; + Requests[3795].Request.Path = "/subscriptions/36b25caf-dcd6-/resourcegroups/889a3058-ecd8/providers/Microsoft.AzureBridge.Admin/activations/c752968a-c169-/products/bf50a8b9-a5/download"; + Requests[3796] = new DefaultHttpContext(); + Requests[3796].RequestServices = CreateServices(); + Requests[3796].Request.Method = "POST"; + Requests[3796].Request.Path = "/subscriptions/b76ec582-61ca-/resourceGroups/27e0e7ed-a766/providers/Microsoft.AzureStack/registrations/32490e7e-cc5c-40/products/a25208e4-1c/listDetails"; + Requests[3797] = new DefaultHttpContext(); + Requests[3797].RequestServices = CreateServices(); + Requests[3797].Request.Method = "GET"; + Requests[3797].Request.Path = "/subscriptions/47e2365d-c173-/resourceGroups/29fa8663-b38d-4d9/providers/Microsoft.ApiManagement/service/73c5627f-7d/apis/afdd2/diagnostics"; + Requests[3798] = new DefaultHttpContext(); + Requests[3798].RequestServices = CreateServices(); + Requests[3798].Request.Method = "GET"; + Requests[3798].Request.Path = "/subscriptions/c4dff69c-f2c0-/resourceGroups/2cb23ae0-4418-4b2/providers/Microsoft.ApiManagement/service/a599a843-12/apis/d0846/issues"; + Requests[3799] = new DefaultHttpContext(); + Requests[3799].RequestServices = CreateServices(); + Requests[3799].Request.Method = "GET"; + Requests[3799].Request.Path = "/subscriptions/c98207c0-0ba2-/resourceGroups/b4eacc85-e7ce-482/providers/Microsoft.ApiManagement/service/908b9223-6f/apis/cbf64/operations"; + Requests[3800] = new DefaultHttpContext(); + Requests[3800].RequestServices = CreateServices(); + Requests[3800].Request.Method = "GET"; + Requests[3800].Request.Path = "/subscriptions/04572060-b1e5-/resourceGroups/35c6bbfb-5b9a-4e2/providers/Microsoft.ApiManagement/service/91a3ede2-c3/apis/baded/operationsByTags"; + Requests[3801] = new DefaultHttpContext(); + Requests[3801].RequestServices = CreateServices(); + Requests[3801].Request.Method = "GET"; + Requests[3801].Request.Path = "/subscriptions/b3a07ed1-5a1d-/resourceGroups/e071aa64-741d-49e/providers/Microsoft.ApiManagement/service/65fcb055-11/apis/c4e0e/policies"; + Requests[3802] = new DefaultHttpContext(); + Requests[3802].RequestServices = CreateServices(); + Requests[3802].Request.Method = "PUT"; + Requests[3802].Request.Path = "/subscriptions/da3e6b87-4641-/resourceGroups/72d6b935-710a-4db/providers/Microsoft.ApiManagement/service/f8ea2841-e8/apis/9fcf2/policy"; + Requests[3803] = new DefaultHttpContext(); + Requests[3803].RequestServices = CreateServices(); + Requests[3803].Request.Method = "DELETE"; + Requests[3803].Request.Path = "/subscriptions/5a692697-2ff4-/resourceGroups/47ef1e76-c5b6-48e/providers/Microsoft.ApiManagement/service/720bc9df-37/apis/eb968/policy"; + Requests[3804] = new DefaultHttpContext(); + Requests[3804].RequestServices = CreateServices(); + Requests[3804].Request.Method = "GET"; + Requests[3804].Request.Path = "/subscriptions/6ab0c038-b08e-/resourceGroups/54f0fdca-97e8-490/providers/Microsoft.ApiManagement/service/9c854a3c-68/apis/3aa26/policy"; + Requests[3805] = new DefaultHttpContext(); + Requests[3805].RequestServices = CreateServices(); + Requests[3805].Request.Method = "GET"; + Requests[3805].Request.Path = "/subscriptions/e372b77d-f8bd-/resourceGroups/17232b58-f349-44b/providers/Microsoft.ApiManagement/service/b106afdc-d0/apis/ca315/products"; + Requests[3806] = new DefaultHttpContext(); + Requests[3806].RequestServices = CreateServices(); + Requests[3806].Request.Method = "PARAMETERS"; + Requests[3806].Request.Path = "/subscriptions/36b5e7d2-f5bc-/resourceGroups/b3ba9b5c-23bf-479/providers/Microsoft.ApiManagement/service/24bea8c3-95/apis/20637/releases"; + Requests[3807] = new DefaultHttpContext(); + Requests[3807].RequestServices = CreateServices(); + Requests[3807].Request.Method = "GET"; + Requests[3807].Request.Path = "/subscriptions/813561ec-13bc-/resourceGroups/d51ab0bc-855d-452/providers/Microsoft.ApiManagement/service/e0dd3e8f-ea/apis/d18f4/releases"; + Requests[3808] = new DefaultHttpContext(); + Requests[3808].RequestServices = CreateServices(); + Requests[3808].Request.Method = "PARAMETERS"; + Requests[3808].Request.Path = "/subscriptions/b9243163-d6c3-/resourceGroups/7822e8af-7ca9-451/providers/Microsoft.ApiManagement/service/632a35f2-bb/apis/51d17/revisions"; + Requests[3809] = new DefaultHttpContext(); + Requests[3809].RequestServices = CreateServices(); + Requests[3809].Request.Method = "GET"; + Requests[3809].Request.Path = "/subscriptions/06731f44-dace-/resourceGroups/c5902e45-1b9d-486/providers/Microsoft.ApiManagement/service/3ac19b26-c6/apis/56206/revisions"; + Requests[3810] = new DefaultHttpContext(); + Requests[3810].RequestServices = CreateServices(); + Requests[3810].Request.Method = "GET"; + Requests[3810].Request.Path = "/subscriptions/3220c235-23db-/resourceGroups/f9668dd2-6252-45c/providers/Microsoft.ApiManagement/service/8efc3594-2b/apis/fa45b/schemas"; + Requests[3811] = new DefaultHttpContext(); + Requests[3811].RequestServices = CreateServices(); + Requests[3811].Request.Method = "GET"; + Requests[3811].Request.Path = "/subscriptions/caa519ba-1f2c-/resourceGroups/96f022f1-a2e4-45c/providers/Microsoft.ApiManagement/service/e91fabf8-a4/apis/894d2/tagDescriptions"; + Requests[3812] = new DefaultHttpContext(); + Requests[3812].RequestServices = CreateServices(); + Requests[3812].Request.Method = "GET"; + Requests[3812].Request.Path = "/subscriptions/4630971c-6447-/resourceGroups/1bcedf56-df66-4fb/providers/Microsoft.ApiManagement/service/a3fe4869-f0/apis/a32f5/tags"; + Requests[3813] = new DefaultHttpContext(); + Requests[3813].RequestServices = CreateServices(); + Requests[3813].Request.Method = "POST"; + Requests[3813].Request.Path = "/subscriptions/0e7613e0-c85a-/resourceGroups/b1ece843-197e-448/providers/Microsoft.ApiManagement/service/30592452-6f/backends/e32060c2-/reconnect"; + Requests[3814] = new DefaultHttpContext(); + Requests[3814].RequestServices = CreateServices(); + Requests[3814].Request.Method = "GET"; + Requests[3814].Request.Path = "/subscriptions/c992b2ea-f7ab-/resourceGroups/36fa7f18-e63a-40f/providers/Microsoft.ApiManagement/service/92dfec04-7d/diagnostics/16edd64d-a3c/loggers"; + Requests[3815] = new DefaultHttpContext(); + Requests[3815].RequestServices = CreateServices(); + Requests[3815].Request.Method = "GET"; + Requests[3815].Request.Path = "/subscriptions/14068d11-77a6-/resourceGroups/c2251292-323a-484/providers/Microsoft.ApiManagement/service/32698aa8-b2/groups/5512f08/users"; + Requests[3816] = new DefaultHttpContext(); + Requests[3816].RequestServices = CreateServices(); + Requests[3816].Request.Method = "GET"; + Requests[3816].Request.Path = "/subscriptions/0447dc19-19fc-/resourceGroups/bc11873d-ee96-4a9/providers/Microsoft.ApiManagement/service/691eb80f-79/locations/b35ba8da-2bc/networkstatus"; + Requests[3817] = new DefaultHttpContext(); + Requests[3817].RequestServices = CreateServices(); + Requests[3817].Request.Method = "GET"; + Requests[3817].Request.Path = "/subscriptions/ab141841-b514-/resourceGroups/319edd85-5f1a-45f/providers/Microsoft.ApiManagement/service/a7f4abc2-a3/notifications/122b3802-c79d-44/recipientEmails"; + Requests[3818] = new DefaultHttpContext(); + Requests[3818].RequestServices = CreateServices(); + Requests[3818].Request.Method = "GET"; + Requests[3818].Request.Path = "/subscriptions/ddc69703-b186-/resourceGroups/3131f6fd-8697-4cf/providers/Microsoft.ApiManagement/service/180cc9bf-14/notifications/dfd83d71-698f-48/recipientUsers"; + Requests[3819] = new DefaultHttpContext(); + Requests[3819].RequestServices = CreateServices(); + Requests[3819].Request.Method = "GET"; + Requests[3819].Request.Path = "/subscriptions/c5bfd62f-09e2-/resourceGroups/421679be-d67e-449/providers/Microsoft.ApiManagement/service/740f99af-68/products/9aadad28-/apis"; + Requests[3820] = new DefaultHttpContext(); + Requests[3820].RequestServices = CreateServices(); + Requests[3820].Request.Method = "GET"; + Requests[3820].Request.Path = "/subscriptions/f18fb4a1-032f-/resourceGroups/5a649172-828d-4a9/providers/Microsoft.ApiManagement/service/fa7d01f8-ed/products/da976d48-/groups"; + Requests[3821] = new DefaultHttpContext(); + Requests[3821].RequestServices = CreateServices(); + Requests[3821].Request.Method = "GET"; + Requests[3821].Request.Path = "/subscriptions/f684152b-06c5-/resourceGroups/2f7041af-4ed9-4e8/providers/Microsoft.ApiManagement/service/c9e0f60c-34/products/64bcd868-/policies"; + Requests[3822] = new DefaultHttpContext(); + Requests[3822].RequestServices = CreateServices(); + Requests[3822].Request.Method = "PUT"; + Requests[3822].Request.Path = "/subscriptions/a517d684-5eb9-/resourceGroups/10749360-4f5f-45f/providers/Microsoft.ApiManagement/service/4d56eb7b-c0/products/e80d71b2-/policy"; + Requests[3823] = new DefaultHttpContext(); + Requests[3823].RequestServices = CreateServices(); + Requests[3823].Request.Method = "GET"; + Requests[3823].Request.Path = "/subscriptions/a0d9c73d-a02f-/resourceGroups/e0f79c51-157f-4e5/providers/Microsoft.ApiManagement/service/e90be2f2-76/products/767fb6ee-/policy"; + Requests[3824] = new DefaultHttpContext(); + Requests[3824].RequestServices = CreateServices(); + Requests[3824].Request.Method = "DELETE"; + Requests[3824].Request.Path = "/subscriptions/9f4aafc6-3d8f-/resourceGroups/a0c4f264-2051-406/providers/Microsoft.ApiManagement/service/f45085f8-49/products/8e116fb1-/policy"; + Requests[3825] = new DefaultHttpContext(); + Requests[3825].RequestServices = CreateServices(); + Requests[3825].Request.Method = "GET"; + Requests[3825].Request.Path = "/subscriptions/79a672bf-8c7b-/resourceGroups/ac71f8b6-3af2-4b7/providers/Microsoft.ApiManagement/service/f3d5c455-c0/products/9b8a1344-/subscriptions"; + Requests[3826] = new DefaultHttpContext(); + Requests[3826].RequestServices = CreateServices(); + Requests[3826].Request.Method = "GET"; + Requests[3826].Request.Path = "/subscriptions/860b3ff9-53e2-/resourceGroups/edb6a6ef-a927-45a/providers/Microsoft.ApiManagement/service/c19fb786-a4/products/e836bcc6-/tags"; + Requests[3827] = new DefaultHttpContext(); + Requests[3827].RequestServices = CreateServices(); + Requests[3827].Request.Method = "POST"; + Requests[3827].Request.Path = "/subscriptions/3ded32f4-d7ba-/resourceGroups/53fdb9ef-eeee-4fc/providers/Microsoft.ApiManagement/service/9fbb7610-61/subscriptions/7f080/regeneratePrimaryKey"; + Requests[3828] = new DefaultHttpContext(); + Requests[3828].RequestServices = CreateServices(); + Requests[3828].Request.Method = "POST"; + Requests[3828].Request.Path = "/subscriptions/176f5854-f94c-/resourceGroups/5bbade06-acf0-4f6/providers/Microsoft.ApiManagement/service/ead6e8ee-4d/subscriptions/d86be/regenerateSecondaryKey"; + Requests[3829] = new DefaultHttpContext(); + Requests[3829].RequestServices = CreateServices(); + Requests[3829].Request.Method = "GET"; + Requests[3829].Request.Path = "/subscriptions/4a1cce99-44f5-/resourceGroups/f4090669-2a8e-4de/providers/Microsoft.ApiManagement/service/df8370cc-73/tenant/0e08677c-f/git"; + Requests[3830] = new DefaultHttpContext(); + Requests[3830].RequestServices = CreateServices(); + Requests[3830].Request.Method = "POST"; + Requests[3830].Request.Path = "/subscriptions/6d6a14e9-8946-/resourceGroups/0794c2bd-19c8-433/providers/Microsoft.ApiManagement/service/a93dde6b-a9/tenant/62b8f8c5-1/regeneratePrimaryKey"; + Requests[3831] = new DefaultHttpContext(); + Requests[3831].RequestServices = CreateServices(); + Requests[3831].Request.Method = "POST"; + Requests[3831].Request.Path = "/subscriptions/580e695b-b1e4-/resourceGroups/31ed66f5-a85e-4b7/providers/Microsoft.ApiManagement/service/a099c83c-e4/tenant/7bcff023-f/regenerateSecondaryKey"; + Requests[3832] = new DefaultHttpContext(); + Requests[3832].RequestServices = CreateServices(); + Requests[3832].Request.Method = "POST"; + Requests[3832].Request.Path = "/subscriptions/49324851-b7dc-/resourceGroups/02366f58-9e16-4f7/providers/Microsoft.ApiManagement/service/5e1c8b86-28/tenant/6a223e5c-426d-404/deploy"; + Requests[3833] = new DefaultHttpContext(); + Requests[3833].RequestServices = CreateServices(); + Requests[3833].Request.Method = "POST"; + Requests[3833].Request.Path = "/subscriptions/6c9ffbdc-5326-/resourceGroups/e31d6fa2-90ff-445/providers/Microsoft.ApiManagement/service/05de86ea-39/tenant/a8456482-7c64-406/save"; + Requests[3834] = new DefaultHttpContext(); + Requests[3834].RequestServices = CreateServices(); + Requests[3834].Request.Method = "GET"; + Requests[3834].Request.Path = "/subscriptions/75c1f2e0-0bec-/resourceGroups/569076c2-37e4-404/providers/Microsoft.ApiManagement/service/28204d3b-94/tenant/5e453b59-097f-494/syncState"; + Requests[3835] = new DefaultHttpContext(); + Requests[3835].RequestServices = CreateServices(); + Requests[3835].Request.Method = "POST"; + Requests[3835].Request.Path = "/subscriptions/c950c177-bc1f-/resourceGroups/ac480fff-6b92-452/providers/Microsoft.ApiManagement/service/9cf9bbd5-20/tenant/8400b5fd-5010-43d/validate"; + Requests[3836] = new DefaultHttpContext(); + Requests[3836].RequestServices = CreateServices(); + Requests[3836].Request.Method = "POST"; + Requests[3836].Request.Path = "/subscriptions/cf590942-3ff5-/resourceGroups/e9c74933-698c-4b3/providers/Microsoft.ApiManagement/service/a4c58e7b-63/users/46fe8/generateSsoUrl"; + Requests[3837] = new DefaultHttpContext(); + Requests[3837].RequestServices = CreateServices(); + Requests[3837].Request.Method = "GET"; + Requests[3837].Request.Path = "/subscriptions/d4ec4fe6-9363-/resourceGroups/f6cb60e7-2465-4ea/providers/Microsoft.ApiManagement/service/3bf26a64-a5/users/df1be/groups"; + Requests[3838] = new DefaultHttpContext(); + Requests[3838].RequestServices = CreateServices(); + Requests[3838].Request.Method = "GET"; + Requests[3838].Request.Path = "/subscriptions/8072465d-ab48-/resourceGroups/a792de2e-7ddd-4f0/providers/Microsoft.ApiManagement/service/9ded7f49-ec/users/a0da9/identities"; + Requests[3839] = new DefaultHttpContext(); + Requests[3839].RequestServices = CreateServices(); + Requests[3839].Request.Method = "GET"; + Requests[3839].Request.Path = "/subscriptions/b0b146f9-363b-/resourceGroups/ba388a37-0551-451/providers/Microsoft.ApiManagement/service/74a585d5-29/users/c61dc/subscriptions"; + Requests[3840] = new DefaultHttpContext(); + Requests[3840].RequestServices = CreateServices(); + Requests[3840].Request.Method = "POST"; + Requests[3840].Request.Path = "/subscriptions/c7c80af6-3aa4-/resourceGroups/564c0b1a-3231-4dd/providers/Microsoft.ApiManagement/service/4ebc951e-4f/users/f06b4/token"; + Requests[3841] = new DefaultHttpContext(); + Requests[3841].RequestServices = CreateServices(); + Requests[3841].Request.Method = "GET"; + Requests[3841].Request.Path = "/subscriptions/c8dffa5a-807e-/resourceGroups/e9952974-e684-4e6/providers/Microsoft.Automation/automationAccounts/4f30404f-ec91-4390-a2/compilationjobs/5a4ed/streams"; + Requests[3842] = new DefaultHttpContext(); + Requests[3842].RequestServices = CreateServices(); + Requests[3842].Request.Method = "GET"; + Requests[3842].Request.Path = "/subscriptions/72aff501-ce60-/resourceGroups/e27ebba8-1f55-416/providers/Microsoft.Automation/automationAccounts/6dafd8c4-aa59-4488-b0/configurations/25c072b1-1756-4bd/content"; + Requests[3843] = new DefaultHttpContext(); + Requests[3843].RequestServices = CreateServices(); + Requests[3843].Request.Method = "GET"; + Requests[3843].Request.Path = "/subscriptions/c5cb4dc2-91c1-/resourceGroups/4a7fd612-7286-4b1/providers/Microsoft.Automation/automationAccounts/84b5bc2a-ec39-44ba-90/jobs/8a35b/output"; + Requests[3844] = new DefaultHttpContext(); + Requests[3844].RequestServices = CreateServices(); + Requests[3844].Request.Method = "POST"; + Requests[3844].Request.Path = "/subscriptions/0ebe54a5-1fde-/resourceGroups/b72046d1-a885-44d/providers/Microsoft.Automation/automationAccounts/3b8aa075-7633-4166-89/jobs/0935d/resume"; + Requests[3845] = new DefaultHttpContext(); + Requests[3845].RequestServices = CreateServices(); + Requests[3845].Request.Method = "GET"; + Requests[3845].Request.Path = "/subscriptions/28c605a1-3653-/resourceGroups/50dd9c32-5675-450/providers/Microsoft.Automation/automationAccounts/5f1774c8-0c94-4bca-9e/jobs/90954/runbookContent"; + Requests[3846] = new DefaultHttpContext(); + Requests[3846].RequestServices = CreateServices(); + Requests[3846].Request.Method = "POST"; + Requests[3846].Request.Path = "/subscriptions/1ec8a62d-db22-/resourceGroups/e4b77632-a8bb-492/providers/Microsoft.Automation/automationAccounts/50ccb68c-41b2-42af-85/jobs/6531f/stop"; + Requests[3847] = new DefaultHttpContext(); + Requests[3847].RequestServices = CreateServices(); + Requests[3847].Request.Method = "GET"; + Requests[3847].Request.Path = "/subscriptions/89fe012a-395e-/resourceGroups/05188d6d-4ebd-441/providers/Microsoft.Automation/automationAccounts/1941c128-cda4-4323-95/jobs/08367/streams"; + Requests[3848] = new DefaultHttpContext(); + Requests[3848].RequestServices = CreateServices(); + Requests[3848].Request.Method = "POST"; + Requests[3848].Request.Path = "/subscriptions/d504aecd-6653-/resourceGroups/d2e84ec3-236e-428/providers/Microsoft.Automation/automationAccounts/6b05a669-3cfe-4cb2-9d/jobs/7873e/suspend"; + Requests[3849] = new DefaultHttpContext(); + Requests[3849].RequestServices = CreateServices(); + Requests[3849].Request.Method = "GET"; + Requests[3849].Request.Path = "/subscriptions/d4de0e90-a003-/resourceGroups/6cbbb2e4-2f86-4c4/providers/Microsoft.Automation/automationAccounts/ce08325f-5ead-4fd2-ad/modules/594ab6aa-d/activities"; + Requests[3850] = new DefaultHttpContext(); + Requests[3850].RequestServices = CreateServices(); + Requests[3850].Request.Method = "GET"; + Requests[3850].Request.Path = "/subscriptions/4af34b12-2f48-/resourceGroups/75f074c0-e2c5-4ae/providers/Microsoft.Automation/automationAccounts/9589bd36-79b8-4c93-91/nodes/ef9f48/reports"; + Requests[3851] = new DefaultHttpContext(); + Requests[3851].RequestServices = CreateServices(); + Requests[3851].Request.Method = "GET"; + Requests[3851].Request.Path = "/subscriptions/0e5d8d60-b2ab-/resourceGroups/560d9421-5bdc-458/providers/Microsoft.Automation/automationAccounts/3047471e-6a17-486a-a4/objectDataTypes/ffc3bab1/fields"; + Requests[3852] = new DefaultHttpContext(); + Requests[3852].RequestServices = CreateServices(); + Requests[3852].Request.Method = "GET"; + Requests[3852].Request.Path = "/subscriptions/6a9009eb-34c1-/resourceGroups/098ad8a6-ee55-48d/providers/Microsoft.Automation/automationAccounts/b4b6e3d3-e060-4d83-b6/runbooks/90680981-3c/content"; + Requests[3853] = new DefaultHttpContext(); + Requests[3853].RequestServices = CreateServices(); + Requests[3853].Request.Method = "GET"; + Requests[3853].Request.Path = "/subscriptions/1edafe2a-a314-/resourceGroups/adbd9338-7c43-472/providers/Microsoft.Automation/automationAccounts/e31cc128-25ea-44af-9b/runbooks/df1e8d2e-81/draft"; + Requests[3854] = new DefaultHttpContext(); + Requests[3854].RequestServices = CreateServices(); + Requests[3854].Request.Method = "GET"; + Requests[3854].Request.Path = "/subscriptions/b752abbd-45d6-/resourceGroups/fb6ae255-7b6b-4db/providers/Microsoft.Automation/automationAccounts/88619468-d739-4610-81/sourceControls/c6aa65fc-d2a3-414/sourceControlSyncJobs"; + Requests[3855] = new DefaultHttpContext(); + Requests[3855].RequestServices = CreateServices(); + Requests[3855].Request.Method = "POST"; + Requests[3855].Request.Path = "/subscriptions/3e31903c-222d-/resourceGroups/723c715e-fc95-494/providers/Microsoft.Automation/automationAccounts/3eb782f6-5f12-4acd-9e/watchers/5974ac71-80/start"; + Requests[3856] = new DefaultHttpContext(); + Requests[3856].RequestServices = CreateServices(); + Requests[3856].Request.Method = "POST"; + Requests[3856].Request.Path = "/subscriptions/4d0f4ea4-78cb-/resourceGroups/0da10b55-1888-4da/providers/Microsoft.Automation/automationAccounts/919efafa-89b7-48a8-aa/watchers/578cba9f-89/stop"; + Requests[3857] = new DefaultHttpContext(); + Requests[3857].RequestServices = CreateServices(); + Requests[3857].Request.Method = "POST"; + Requests[3857].Request.Path = "/subscriptions/8e62fc77-cdf7-/resourcegroups/47c70e47-baa2-419/providers/Microsoft.Backup.Admin/backupLocations/f457cc75/backups/1dc8ac/restore"; + Requests[3858] = new DefaultHttpContext(); + Requests[3858].RequestServices = CreateServices(); + Requests[3858].Request.Method = "POST"; + Requests[3858].Request.Path = "/subscriptions/5c4a096e-87d2-/resourceGroups/9d2d7935-dd5c-466/providers/Microsoft.Batch/batchAccounts/999efb44-1a/certificates/3149d7ac-13c0-4/cancelDelete"; + Requests[3859] = new DefaultHttpContext(); + Requests[3859].RequestServices = CreateServices(); + Requests[3859].Request.Method = "POST"; + Requests[3859].Request.Path = "/subscriptions/45251a6c-e4f1-/resourceGroups/48942da9-1bfb-4af/providers/Microsoft.Batch/batchAccounts/1ae89bdf-8e/pools/1c1ef48f/disableAutoScale"; + Requests[3860] = new DefaultHttpContext(); + Requests[3860].RequestServices = CreateServices(); + Requests[3860].Request.Method = "POST"; + Requests[3860].Request.Path = "/subscriptions/b1f6ee85-3f0f-/resourceGroups/9ba38741-d7b3-498/providers/Microsoft.Batch/batchAccounts/955a95b1-3e/pools/1bd25b1e/stopResize"; + Requests[3861] = new DefaultHttpContext(); + Requests[3861].RequestServices = CreateServices(); + Requests[3861].Request.Method = "POST"; + Requests[3861].Request.Path = "/subscriptions/ad6be55e-ff3e-/resourceGroups/2c1b7933-be3e-48a/providers/Microsoft.BatchAI/workspaces/db8f8c74-267a/clusters/ec520238-1e/listRemoteLoginInformation"; + Requests[3862] = new DefaultHttpContext(); + Requests[3862].RequestServices = CreateServices(); + Requests[3862].Request.Method = "GET"; + Requests[3862].Request.Path = "/subscriptions/d150d776-8095-/resourceGroups/3c7ea214-4792-48a/providers/Microsoft.BatchAI/workspaces/9e0bccc2-3840/experiments/50242426-2a4b-/jobs"; + Requests[3863] = new DefaultHttpContext(); + Requests[3863].RequestServices = CreateServices(); + Requests[3863].Request.Method = "POST"; + Requests[3863].Request.Path = "/subscriptions/96f3a0ce-97fc-/resourceGroups/8b9b4f29-996d-462/providers/Microsoft.BotService/botServices/bb90a05d-d3a/channels/39968973-c1/listChannelWithKeys"; + Requests[3864] = new DefaultHttpContext(); + Requests[3864].RequestServices = CreateServices(); + Requests[3864].Request.Method = "POST"; + Requests[3864].Request.Path = "/subscriptions/9c93e2d5-d042-/resourceGroups/ee81894d-3b2f-418/providers/Microsoft.BotService/botServices/21f67fbd-a65/Connections/7877dd79-eda9-/listWithSecrets"; + Requests[3865] = new DefaultHttpContext(); + Requests[3865].RequestServices = CreateServices(); + Requests[3865].Request.Method = "POST"; + Requests[3865].Request.Path = "/subscriptions/c763aebd-bb2b-/resourceGroups/7f1aca9b-3903-44a/providers/Microsoft.Cdn/profiles/f0073b84-5f/endpoints/0e662c7b-6d5/checkResourceUsage"; + Requests[3866] = new DefaultHttpContext(); + Requests[3866].RequestServices = CreateServices(); + Requests[3866].Request.Method = "GET"; + Requests[3866].Request.Path = "/subscriptions/45cce753-12cd-/resourceGroups/29a4ed20-c264-4aa/providers/Microsoft.Cdn/profiles/b31fc582-fc/endpoints/ab2851e5-dec/customDomains"; + Requests[3867] = new DefaultHttpContext(); + Requests[3867].RequestServices = CreateServices(); + Requests[3867].Request.Method = "POST"; + Requests[3867].Request.Path = "/subscriptions/2e751242-de87-/resourceGroups/1d9852a8-637f-424/providers/Microsoft.Cdn/profiles/11ca6289-79/endpoints/0fe85d45-00a/load"; + Requests[3868] = new DefaultHttpContext(); + Requests[3868].RequestServices = CreateServices(); + Requests[3868].Request.Method = "GET"; + Requests[3868].Request.Path = "/subscriptions/f7aadd52-b923-/resourceGroups/f528da9b-2f2d-4d6/providers/Microsoft.Cdn/profiles/6e84303c-3b/endpoints/4174a136-577/origins"; + Requests[3869] = new DefaultHttpContext(); + Requests[3869].RequestServices = CreateServices(); + Requests[3869].Request.Method = "POST"; + Requests[3869].Request.Path = "/subscriptions/cfcb594d-ce8c-/resourceGroups/efa12525-b819-491/providers/Microsoft.Cdn/profiles/118ebbc3-30/endpoints/03468f98-b6d/purge"; + Requests[3870] = new DefaultHttpContext(); + Requests[3870].RequestServices = CreateServices(); + Requests[3870].Request.Method = "POST"; + Requests[3870].Request.Path = "/subscriptions/f0615c57-2d8c-/resourceGroups/0282d5c7-8ada-414/providers/Microsoft.Cdn/profiles/398af687-9a/endpoints/bbf0c4c6-d1a/start"; + Requests[3871] = new DefaultHttpContext(); + Requests[3871].RequestServices = CreateServices(); + Requests[3871].Request.Method = "POST"; + Requests[3871].Request.Path = "/subscriptions/9b68c030-b2ad-/resourceGroups/dd45b0ab-e535-4e4/providers/Microsoft.Cdn/profiles/e7c56fd4-46/endpoints/031bef3c-dc6/stop"; + Requests[3872] = new DefaultHttpContext(); + Requests[3872].RequestServices = CreateServices(); + Requests[3872].Request.Method = "POST"; + Requests[3872].Request.Path = "/subscriptions/9990a053-6d32-/resourceGroups/7ae693cc-f98a-493/providers/Microsoft.Cdn/profiles/a2ab5401-17/endpoints/b676fc29-c85/validateCustomDomain"; + Requests[3873] = new DefaultHttpContext(); + Requests[3873].RequestServices = CreateServices(); + Requests[3873].Request.Method = "GET"; + Requests[3873].Request.Path = "/subscriptions/790704bb-0151-/resourceGroups/8b4d40e4-d976-4b1/providers/Microsoft.Compute/galleries/9e8a7978-63/images/5c8c7824-2282-43/versions"; + Requests[3874] = new DefaultHttpContext(); + Requests[3874].RequestServices = CreateServices(); + Requests[3874].Request.Method = "GET"; + Requests[3874].Request.Path = "/subscriptions/2de39a6e-ffaf-/resourceGroups/9c39a25a-9fea-4e3/providers/microsoft.Compute/virtualMachineScaleSets/0384eb6b-f4ef-48fc-ba19-99/virtualMachines/c2abb64c-9eee-454f-/networkInterfaces"; + Requests[3875] = new DefaultHttpContext(); + Requests[3875].RequestServices = CreateServices(); + Requests[3875].Request.Method = "POST"; + Requests[3875].Request.Path = "/subscriptions/7ef99ff0-340c-/resourceGroups/6ff4940b-1245-4dc/providers/Microsoft.Compute/virtualMachineScaleSets/74169111-acfa-/virtualmachines/ce099df3-5/deallocate"; + Requests[3876] = new DefaultHttpContext(); + Requests[3876].RequestServices = CreateServices(); + Requests[3876].Request.Method = "GET"; + Requests[3876].Request.Path = "/subscriptions/28ceafa3-7d1c-/resourceGroups/bfc3c67c-2db0-4ec/providers/Microsoft.Compute/virtualMachineScaleSets/75f21679-6867-/virtualmachines/51f93d0c-f/instanceView"; + Requests[3877] = new DefaultHttpContext(); + Requests[3877].RequestServices = CreateServices(); + Requests[3877].Request.Method = "POST"; + Requests[3877].Request.Path = "/subscriptions/c8fa9333-1113-/resourceGroups/f6d56097-c1b4-4cb/providers/Microsoft.Compute/virtualMachineScaleSets/fa4a7b4d-e6bc-/virtualmachines/cace8e61-b/performMaintenance"; + Requests[3878] = new DefaultHttpContext(); + Requests[3878].RequestServices = CreateServices(); + Requests[3878].Request.Method = "POST"; + Requests[3878].Request.Path = "/subscriptions/25709df8-4194-/resourceGroups/5bd20531-b503-41a/providers/Microsoft.Compute/virtualMachineScaleSets/501897fa-32db-/virtualmachines/d58b1515-3/poweroff"; + Requests[3879] = new DefaultHttpContext(); + Requests[3879].RequestServices = CreateServices(); + Requests[3879].Request.Method = "POST"; + Requests[3879].Request.Path = "/subscriptions/2324e0d1-c45a-/resourceGroups/5324cd6a-074a-485/providers/Microsoft.Compute/virtualMachineScaleSets/d1076b16-c5ff-/virtualmachines/67b6d63a-4/redeploy"; + Requests[3880] = new DefaultHttpContext(); + Requests[3880].RequestServices = CreateServices(); + Requests[3880].Request.Method = "POST"; + Requests[3880].Request.Path = "/subscriptions/ba08154f-5bf7-/resourceGroups/719db02d-2d48-44b/providers/Microsoft.Compute/virtualMachineScaleSets/3bb1ea1c-3505-/virtualmachines/a39e9583-c/reimage"; + Requests[3881] = new DefaultHttpContext(); + Requests[3881].RequestServices = CreateServices(); + Requests[3881].Request.Method = "POST"; + Requests[3881].Request.Path = "/subscriptions/42168226-d288-/resourceGroups/28229f10-b15c-4f1/providers/Microsoft.Compute/virtualMachineScaleSets/8dc8c478-61b6-/virtualmachines/ceefa225-8/reimageall"; + Requests[3882] = new DefaultHttpContext(); + Requests[3882].RequestServices = CreateServices(); + Requests[3882].Request.Method = "POST"; + Requests[3882].Request.Path = "/subscriptions/88a55e5a-bc7f-/resourceGroups/038f554e-7726-4db/providers/Microsoft.Compute/virtualMachineScaleSets/4224ab3c-740a-/virtualmachines/bc9093b0-2/restart"; + Requests[3883] = new DefaultHttpContext(); + Requests[3883].RequestServices = CreateServices(); + Requests[3883].Request.Method = "POST"; + Requests[3883].Request.Path = "/subscriptions/9083c7c0-8f6f-/resourceGroups/c104e0f0-ef73-4f2/providers/Microsoft.Compute/virtualMachineScaleSets/263ec3a5-df10-/virtualmachines/100e15bf-0/start"; + Requests[3884] = new DefaultHttpContext(); + Requests[3884].RequestServices = CreateServices(); + Requests[3884].Request.Method = "POST"; + Requests[3884].Request.Path = "/subscriptions/ef88f3f0-4cfc-/resourceGroups/0531a345-4dee-4a8/providers/Microsoft.ContainerInstance/containerGroups/ef4142cb-2193-40a2/containers/04044390-bb68/exec"; + Requests[3885] = new DefaultHttpContext(); + Requests[3885].RequestServices = CreateServices(); + Requests[3885].Request.Method = "GET"; + Requests[3885].Request.Path = "/subscriptions/a50d13cb-4fb1-/resourceGroups/7c7141be-8517-48e/providers/Microsoft.ContainerInstance/containerGroups/eb2f9bc2-8664-47c0/containers/71f416af-9b80/logs"; + Requests[3886] = new DefaultHttpContext(); + Requests[3886].RequestServices = CreateServices(); + Requests[3886].Request.Method = "POST"; + Requests[3886].Request.Path = "/subscriptions/8672a101-337c-/resourceGroups/66495630-8c4d-43a/providers/Microsoft.ContainerRegistry/registries/be8eb9eb-f9b/builds/0d461a7/cancel"; + Requests[3887] = new DefaultHttpContext(); + Requests[3887].RequestServices = CreateServices(); + Requests[3887].Request.Method = "POST"; + Requests[3887].Request.Path = "/subscriptions/6571cfcd-40b4-/resourceGroups/1868741a-605a-4a8/providers/Microsoft.ContainerRegistry/registries/4ccba60a-6e8/builds/10ee1ad/getLogLink"; + Requests[3888] = new DefaultHttpContext(); + Requests[3888].RequestServices = CreateServices(); + Requests[3888].Request.Method = "POST"; + Requests[3888].Request.Path = "/subscriptions/eff130bd-4df6-/resourceGroups/37b92ac9-d6da-41f/providers/Microsoft.ContainerRegistry/registries/64ab3fb0-04d/buildTasks/8f171a29-703d/listSourceRepositoryProperties"; + Requests[3889] = new DefaultHttpContext(); + Requests[3889].RequestServices = CreateServices(); + Requests[3889].Request.Method = "GET"; + Requests[3889].Request.Path = "/subscriptions/f40077ac-ef8d-/resourceGroups/9eb8b28c-bb5a-48d/providers/Microsoft.ContainerRegistry/registries/3afdbe97-6b1/buildTasks/efe1bfc8-5aef/steps"; + Requests[3890] = new DefaultHttpContext(); + Requests[3890].RequestServices = CreateServices(); + Requests[3890].Request.Method = "POST"; + Requests[3890].Request.Path = "/subscriptions/42fd5aaf-155b-/resourceGroups/1031049d-44ef-419/providers/Microsoft.ContainerRegistry/registries/096c459b-e00/webhooks/a9c7680d-a4/getCallbackConfig"; + Requests[3891] = new DefaultHttpContext(); + Requests[3891].RequestServices = CreateServices(); + Requests[3891].Request.Method = "POST"; + Requests[3891].Request.Path = "/subscriptions/163b10b6-1ef1-/resourceGroups/8aedafc8-20fb-472/providers/Microsoft.ContainerRegistry/registries/a744aa4a-d35/webhooks/becd47fb-d1/listEvents"; + Requests[3892] = new DefaultHttpContext(); + Requests[3892].RequestServices = CreateServices(); + Requests[3892].Request.Method = "POST"; + Requests[3892].Request.Path = "/subscriptions/c754ef0a-a9d4-/resourceGroups/17b816d7-79c2-4d0/providers/Microsoft.ContainerRegistry/registries/e24558ab-a90/webhooks/7a66108e-8e/ping"; + Requests[3893] = new DefaultHttpContext(); + Requests[3893].RequestServices = CreateServices(); + Requests[3893].Request.Method = "POST"; + Requests[3893].Request.Path = "/subscriptions/5a74b1db-f6b6-/resourceGroups/a29136d1-b3ab-4b5/providers/Microsoft.ContainerService/managedClusters/d51df64d-e5f/accessProfiles/8e9592ef/listCredential"; + Requests[3894] = new DefaultHttpContext(); + Requests[3894].RequestServices = CreateServices(); + Requests[3894].Request.Method = "POST"; + Requests[3894].Request.Path = "/subscriptions/7075178e-4ff4-/resourceGroups/0aea62df-590c-428/providers/Microsoft.CustomerInsights/hubs/f26c04b/authorizationPolicies/444b3757-5c1a-49ca-a707/regeneratePrimaryKey"; + Requests[3895] = new DefaultHttpContext(); + Requests[3895].RequestServices = CreateServices(); + Requests[3895].Request.Method = "POST"; + Requests[3895].Request.Path = "/subscriptions/a07ba9eb-c6a9-/resourceGroups/23138420-f3ea-43d/providers/Microsoft.CustomerInsights/hubs/6588453/authorizationPolicies/6380905b-3a11-4d26-ad55/regenerateSecondaryKey"; + Requests[3896] = new DefaultHttpContext(); + Requests[3896].RequestServices = CreateServices(); + Requests[3896].Request.Method = "GET"; + Requests[3896].Request.Path = "/subscriptions/20e03d9c-de58-/resourceGroups/7ea00634-d2d3-420/providers/Microsoft.CustomerInsights/hubs/72e9086/connectors/634e8f78-8192/mappings"; + Requests[3897] = new DefaultHttpContext(); + Requests[3897].RequestServices = CreateServices(); + Requests[3897].Request.Method = "POST"; + Requests[3897].Request.Path = "/subscriptions/8f3c4373-b3df-/resourceGroups/9d92797c-00e3-496/providers/Microsoft.CustomerInsights/hubs/76f1b92/interactions/0c2c0086-d794-4/suggestRelationshipLinks"; + Requests[3898] = new DefaultHttpContext(); + Requests[3898].RequestServices = CreateServices(); + Requests[3898].Request.Method = "POST"; + Requests[3898].Request.Path = "/subscriptions/e8834317-968b-/resourceGroups/cfa04c18-7580-44d/providers/Microsoft.CustomerInsights/hubs/b55d5fa/kpi/6c1677d/reprocess"; + Requests[3899] = new DefaultHttpContext(); + Requests[3899].RequestServices = CreateServices(); + Requests[3899].Request.Method = "POST"; + Requests[3899].Request.Path = "/subscriptions/8074f528-07d9-/resourceGroups/ef271695-ad27-4be/providers/Microsoft.CustomerInsights/hubs/0afee87/predictions/96d19ab2-6e0e-/getModelStatus"; + Requests[3900] = new DefaultHttpContext(); + Requests[3900].RequestServices = CreateServices(); + Requests[3900].Request.Method = "POST"; + Requests[3900].Request.Path = "/subscriptions/d36ebcac-504c-/resourceGroups/7c47ec05-cc52-436/providers/Microsoft.CustomerInsights/hubs/b7c7f27/predictions/1c0e3993-e334-/getTrainingResults"; + Requests[3901] = new DefaultHttpContext(); + Requests[3901].RequestServices = CreateServices(); + Requests[3901].Request.Method = "POST"; + Requests[3901].Request.Path = "/subscriptions/2cefb358-667f-/resourceGroups/29744e54-a120-4c5/providers/Microsoft.CustomerInsights/hubs/3d34458/predictions/d5556f82-5d5d-/modelStatus"; + Requests[3902] = new DefaultHttpContext(); + Requests[3902].RequestServices = CreateServices(); + Requests[3902].Request.Method = "POST"; + Requests[3902].Request.Path = "/subscriptions/4456a0ba-81ff-/resourceGroups/4657d9c2-54d0-47c/providers/Microsoft.CustomerInsights/hubs/04ec55f/profiles/c5bbd841-31/getEnrichingKpis"; + Requests[3903] = new DefaultHttpContext(); + Requests[3903].RequestServices = CreateServices(); + Requests[3903].Request.Method = "POST"; + Requests[3903].Request.Path = "/subscriptions/d3924d5b-7aac-/resourceGroups/eb7b848f-1839-4d1/providers/Microsoft.DataFactory/factories/a71cafb7-8e/integrationRuntimes/8b9c2e73-bbca-439f-9a9/getConnectionInfo"; + Requests[3904] = new DefaultHttpContext(); + Requests[3904].RequestServices = CreateServices(); + Requests[3904].Request.Method = "POST"; + Requests[3904].Request.Path = "/subscriptions/a0783a3c-187a-/resourceGroups/6fcd6b16-26c4-4f7/providers/Microsoft.DataFactory/factories/27fb73eb-c9/integrationRuntimes/11f6e504-15d8-4cb6-a67/getStatus"; + Requests[3905] = new DefaultHttpContext(); + Requests[3905].RequestServices = CreateServices(); + Requests[3905].Request.Method = "POST"; + Requests[3905].Request.Path = "/subscriptions/af3093db-0331-/resourceGroups/57769fe3-0918-4b4/providers/Microsoft.DataFactory/factories/4eba0e3a-11/integrationRuntimes/20816381-db1f-482c-ad3/listAuthKeys"; + Requests[3906] = new DefaultHttpContext(); + Requests[3906].RequestServices = CreateServices(); + Requests[3906].Request.Method = "POST"; + Requests[3906].Request.Path = "/subscriptions/8909fc56-0714-/resourceGroups/652d3b4e-20f3-4d5/providers/Microsoft.DataFactory/factories/d35859e4-c0/integrationRuntimes/38e138d7-54e0-4b80-ac9/monitoringData"; + Requests[3907] = new DefaultHttpContext(); + Requests[3907].RequestServices = CreateServices(); + Requests[3907].Request.Method = "POST"; + Requests[3907].Request.Path = "/subscriptions/41fe297f-1ebc-/resourceGroups/7cbf0b28-a032-4b9/providers/Microsoft.DataFactory/factories/d0cd9245-96/integrationRuntimes/8d5933dc-d182-459c-ae4/regenerateAuthKey"; + Requests[3908] = new DefaultHttpContext(); + Requests[3908].RequestServices = CreateServices(); + Requests[3908].Request.Method = "POST"; + Requests[3908].Request.Path = "/subscriptions/7c5e3dd6-0afa-/resourceGroups/26492686-d61d-4b7/providers/Microsoft.DataFactory/factories/d5baa79e-fe/integrationRuntimes/c8149648-6e73-4727-ac0/removeNode"; + Requests[3909] = new DefaultHttpContext(); + Requests[3909].RequestServices = CreateServices(); + Requests[3909].Request.Method = "POST"; + Requests[3909].Request.Path = "/subscriptions/bb3a9e3f-3df1-/resourceGroups/b2f6c2cb-42d8-437/providers/Microsoft.DataFactory/factories/ee9ac219-cc/integrationRuntimes/5b1664d6-8496-4ca9-8f4/start"; + Requests[3910] = new DefaultHttpContext(); + Requests[3910].RequestServices = CreateServices(); + Requests[3910].Request.Method = "POST"; + Requests[3910].Request.Path = "/subscriptions/863c4b49-6ca1-/resourceGroups/9e81de85-127d-4a8/providers/Microsoft.DataFactory/factories/29d6af01-2e/integrationRuntimes/2b2f535b-73e9-49ec-8a0/stop"; + Requests[3911] = new DefaultHttpContext(); + Requests[3911].RequestServices = CreateServices(); + Requests[3911].Request.Method = "POST"; + Requests[3911].Request.Path = "/subscriptions/cb4ad45a-83fc-/resourceGroups/05e35151-e88e-458/providers/Microsoft.DataFactory/factories/d2b9772c-c4/integrationRuntimes/be1ea13b-ceda-4c78-989/syncCredentials"; + Requests[3912] = new DefaultHttpContext(); + Requests[3912].RequestServices = CreateServices(); + Requests[3912].Request.Method = "POST"; + Requests[3912].Request.Path = "/subscriptions/cd304ba8-99e7-/resourceGroups/b80ade59-42be-4a2/providers/Microsoft.DataFactory/factories/61a01dae-ef/integrationRuntimes/43596aaf-1461-4d58-b91/upgrade"; + Requests[3913] = new DefaultHttpContext(); + Requests[3913].RequestServices = CreateServices(); + Requests[3913].Request.Method = "GET"; + Requests[3913].Request.Path = "/subscriptions/1ab09b79-efb5-/resourceGroups/1607e18d-9619-408/providers/Microsoft.DataFactory/factories/3656aba7-ff/pipelineruns/fb668/activityruns"; + Requests[3914] = new DefaultHttpContext(); + Requests[3914].RequestServices = CreateServices(); + Requests[3914].Request.Method = "POST"; + Requests[3914].Request.Path = "/subscriptions/bacddc95-eabe-/resourceGroups/9d507039-e504-436/providers/Microsoft.DataFactory/factories/a831bca1-05/pipelines/bc86c1c9-5e5/createRun"; + Requests[3915] = new DefaultHttpContext(); + Requests[3915].RequestServices = CreateServices(); + Requests[3915].Request.Method = "POST"; + Requests[3915].Request.Path = "/subscriptions/cdd1e347-8807-/resourceGroups/3bf71f17-c952-4c2/providers/Microsoft.DataFactory/factories/b0fe79af-c6/triggers/b7d4c785-af/start"; + Requests[3916] = new DefaultHttpContext(); + Requests[3916].RequestServices = CreateServices(); + Requests[3916].Request.Method = "POST"; + Requests[3916].Request.Path = "/subscriptions/40e2ce56-e7bf-/resourceGroups/95d4f9e6-750d-4c0/providers/Microsoft.DataFactory/factories/a072eee2-01/triggers/1396ba54-15/stop"; + Requests[3917] = new DefaultHttpContext(); + Requests[3917].RequestServices = CreateServices(); + Requests[3917].Request.Method = "GET"; + Requests[3917].Request.Path = "/subscriptions/562cd6eb-dc58-/resourceGroups/fc5e3647-4637-411/providers/Microsoft.DataFactory/factories/bc7b7424-4b/triggers/ba236dcb-02/triggerruns"; + Requests[3918] = new DefaultHttpContext(); + Requests[3918].RequestServices = CreateServices(); + Requests[3918].Request.Method = "GET"; + Requests[3918].Request.Path = "/subscriptions/71b25ac1-2b6a-/resourceGroups/684c7484-982d-4bf/providers/Microsoft.DataLakeAnalytics/accounts/7a21530f-06/storageAccounts/a6afa904-7931-4bf0/containers"; + Requests[3919] = new DefaultHttpContext(); + Requests[3919].RequestServices = CreateServices(); + Requests[3919].Request.Method = "POST"; + Requests[3919].Request.Path = "/subscriptions/ffdeeca5-5383-/resourceGroups/b39fa11f-060c-4f9/providers/Microsoft.Devices/IotHubs/ad0b5e26-a72/certificates/28215eb5-77a0-4/generateVerificationCode"; + Requests[3920] = new DefaultHttpContext(); + Requests[3920].RequestServices = CreateServices(); + Requests[3920].Request.Method = "POST"; + Requests[3920].Request.Path = "/subscriptions/b5aea6de-8ac4-/resourceGroups/0e7f5cc5-ae9c-4a1/providers/Microsoft.Devices/IotHubs/c20cfd9c-27e/certificates/7d9df220-664e-4/verify"; + Requests[3921] = new DefaultHttpContext(); + Requests[3921].RequestServices = CreateServices(); + Requests[3921].Request.Method = "GET"; + Requests[3921].Request.Path = "/subscriptions/c308d2b3-195a-/resourceGroups/4257a5ea-d6b7-4a7/providers/Microsoft.Devices/IotHubs/6a09fdd5-2f0/eventHubEndpoints/c8515d1f-4021-47ff-b/ConsumerGroups"; + Requests[3922] = new DefaultHttpContext(); + Requests[3922].RequestServices = CreateServices(); + Requests[3922].Request.Method = "POST"; + Requests[3922].Request.Path = "/subscriptions/9d597319-d399-/resourceGroups/88fced10-7eb5-46e/providers/Microsoft.Devices/IotHubs/40615f36-dc6/IotHubKeys/3920100/listkeys"; + Requests[3923] = new DefaultHttpContext(); + Requests[3923].RequestServices = CreateServices(); + Requests[3923].Request.Method = "POST"; + Requests[3923].Request.Path = "/subscriptions/d1a8497e-dd7a-/resourceGroups/cb4a2d28-51e4-464/providers/Microsoft.Devices/provisioningServices/b6959a04-678d-4c56-9b75/certificates/40c3f716-b8fe-4/generateVerificationCode"; + Requests[3924] = new DefaultHttpContext(); + Requests[3924].RequestServices = CreateServices(); + Requests[3924].Request.Method = "POST"; + Requests[3924].Request.Path = "/subscriptions/532ba51c-0737-/resourceGroups/2574c30b-29af-4dd/providers/Microsoft.Devices/provisioningServices/03579272-88dc-4016-99d9/certificates/a37b397c-472b-4/verify"; + Requests[3925] = new DefaultHttpContext(); + Requests[3925].RequestServices = CreateServices(); + Requests[3925].Request.Method = "POST"; + Requests[3925].Request.Path = "/subscriptions/146df8e2-11f1-/resourceGroups/eb77c8d7-3d58-4f6/providers/Microsoft.Devices/provisioningServices/31df9779-bed6-4b18-99ae/keys/3b5362c/listkeys"; + Requests[3926] = new DefaultHttpContext(); + Requests[3926].RequestServices = CreateServices(); + Requests[3926].Request.Method = "GET"; + Requests[3926].Request.Path = "/subscriptions/6a67577a-3d69-/resourceGroups/e8470821-3368-449/providers/Microsoft.DevTestLab/labs/02a58c6/artifactsources/87d92219-cbf8-4179/armtemplates"; + Requests[3927] = new DefaultHttpContext(); + Requests[3927].RequestServices = CreateServices(); + Requests[3927].Request.Method = "GET"; + Requests[3927].Request.Path = "/subscriptions/3f47c078-bf7f-/resourceGroups/5fc4255a-c80e-407/providers/Microsoft.DevTestLab/labs/8e04015/artifactsources/3d02244c-e322-43cd/artifacts"; + Requests[3928] = new DefaultHttpContext(); + Requests[3928].RequestServices = CreateServices(); + Requests[3928].Request.Method = "POST"; + Requests[3928].Request.Path = "/subscriptions/eca2a233-b183-/resourceGroups/4b6f20cc-7ec5-4c4/providers/Microsoft.DevTestLab/labs/1387091/costinsights/88cd7/refreshData"; + Requests[3929] = new DefaultHttpContext(); + Requests[3929].RequestServices = CreateServices(); + Requests[3929].Request.Method = "POST"; + Requests[3929].Request.Path = "/subscriptions/765a9b34-4c3d-/resourceGroups/61e49221-66d9-40a/providers/Microsoft.DevTestLab/labs/607aa52/costs/c54a5/refreshData"; + Requests[3930] = new DefaultHttpContext(); + Requests[3930].RequestServices = CreateServices(); + Requests[3930].Request.Method = "POST"; + Requests[3930].Request.Path = "/subscriptions/6e70d267-217d-/resourceGroups/76a74e9c-3604-49a/providers/Microsoft.DevTestLab/labs/b07d5ac/notificationchannels/9a921/notify"; + Requests[3931] = new DefaultHttpContext(); + Requests[3931].RequestServices = CreateServices(); + Requests[3931].Request.Method = "POST"; + Requests[3931].Request.Path = "/subscriptions/f41c1658-565e-/resourceGroups/49af5e86-8bd9-437/providers/Microsoft.DevTestLab/labs/71b26f4/policysets/bce8a/evaluatePolicies"; + Requests[3932] = new DefaultHttpContext(); + Requests[3932].RequestServices = CreateServices(); + Requests[3932].Request.Method = "GET"; + Requests[3932].Request.Path = "/subscriptions/242c5408-99e8-/resourceGroups/f44a9fe5-dd03-442/providers/Microsoft.DevTestLab/labs/6fc9ba5/policysets/9778642b-68bd/policies"; + Requests[3933] = new DefaultHttpContext(); + Requests[3933].RequestServices = CreateServices(); + Requests[3933].Request.Method = "POST"; + Requests[3933].Request.Path = "/subscriptions/b49f555c-5d50-/resourceGroups/e8e197c2-aa1a-44e/providers/Microsoft.DevTestLab/labs/880085b/schedules/1e249/execute"; + Requests[3934] = new DefaultHttpContext(); + Requests[3934].RequestServices = CreateServices(); + Requests[3934].Request.Method = "POST"; + Requests[3934].Request.Path = "/subscriptions/e57d2bb5-3cd1-/resourceGroups/be2c3252-bf26-4cc/providers/Microsoft.DevTestLab/labs/582a0e7/schedules/1469d/listApplicable"; + Requests[3935] = new DefaultHttpContext(); + Requests[3935].RequestServices = CreateServices(); + Requests[3935].Request.Method = "GET"; + Requests[3935].Request.Path = "/subscriptions/71c88fab-b8d2-/resourceGroups/ce96a037-6b5b-4e3/providers/Microsoft.DevTestLab/labs/a45a4f7/users/dc622b6e/disks"; + Requests[3936] = new DefaultHttpContext(); + Requests[3936].RequestServices = CreateServices(); + Requests[3936].Request.Method = "GET"; + Requests[3936].Request.Path = "/subscriptions/24565dea-5330-/resourceGroups/e8de240b-80e5-431/providers/Microsoft.DevTestLab/labs/acd45b8/users/10392f4b/environments"; + Requests[3937] = new DefaultHttpContext(); + Requests[3937].RequestServices = CreateServices(); + Requests[3937].Request.Method = "GET"; + Requests[3937].Request.Path = "/subscriptions/5e4f4863-51af-/resourceGroups/174479ab-4f94-427/providers/Microsoft.DevTestLab/labs/597e66c/users/a337b9ae/secrets"; + Requests[3938] = new DefaultHttpContext(); + Requests[3938].RequestServices = CreateServices(); + Requests[3938].Request.Method = "POST"; + Requests[3938].Request.Path = "/subscriptions/2d9b3fbf-3a11-/resourceGroups/aa9a1de0-039b-46e/providers/Microsoft.DevTestLab/labs/448297a/virtualmachines/f0dab/addDataDisk"; + Requests[3939] = new DefaultHttpContext(); + Requests[3939].RequestServices = CreateServices(); + Requests[3939].Request.Method = "POST"; + Requests[3939].Request.Path = "/subscriptions/6301cf2d-3d3e-/resourceGroups/fd329987-9b2c-45f/providers/Microsoft.DevTestLab/labs/49e5c64/virtualmachines/b6c0f/applyArtifacts"; + Requests[3940] = new DefaultHttpContext(); + Requests[3940].RequestServices = CreateServices(); + Requests[3940].Request.Method = "POST"; + Requests[3940].Request.Path = "/subscriptions/5c2550af-0c4f-/resourceGroups/433e300a-9921-414/providers/Microsoft.DevTestLab/labs/26c90ff/virtualmachines/7751c/claim"; + Requests[3941] = new DefaultHttpContext(); + Requests[3941].RequestServices = CreateServices(); + Requests[3941].Request.Method = "POST"; + Requests[3941].Request.Path = "/subscriptions/eb3992c3-3b78-/resourceGroups/1a92d991-5870-459/providers/Microsoft.DevTestLab/labs/b1b0d93/virtualmachines/e3c35/detachDataDisk"; + Requests[3942] = new DefaultHttpContext(); + Requests[3942].RequestServices = CreateServices(); + Requests[3942].Request.Method = "POST"; + Requests[3942].Request.Path = "/subscriptions/8ced5264-d1df-/resourceGroups/f07dc3df-0ed8-4fa/providers/Microsoft.DevTestLab/labs/a46eff5/virtualmachines/1d3ed/listApplicableSchedules"; + Requests[3943] = new DefaultHttpContext(); + Requests[3943].RequestServices = CreateServices(); + Requests[3943].Request.Method = "POST"; + Requests[3943].Request.Path = "/subscriptions/51384316-b25f-/resourceGroups/b133dd43-1f2a-493/providers/Microsoft.DevTestLab/labs/ad87515/virtualmachines/01f26/start"; + Requests[3944] = new DefaultHttpContext(); + Requests[3944].RequestServices = CreateServices(); + Requests[3944].Request.Method = "POST"; + Requests[3944].Request.Path = "/subscriptions/17a0daa5-ef9a-/resourceGroups/9f60aaa8-79e2-453/providers/Microsoft.DevTestLab/labs/04bc807/virtualmachines/a0070/stop"; + Requests[3945] = new DefaultHttpContext(); + Requests[3945].RequestServices = CreateServices(); + Requests[3945].Request.Method = "GET"; + Requests[3945].Request.Path = "/subscriptions/7e65253b-4a29-/resourceGroups/c7437169-f1c2-405/providers/Microsoft.DevTestLab/labs/0f31a8c/virtualmachines/b7371032-f92a-4118/schedules"; + Requests[3946] = new DefaultHttpContext(); + Requests[3946].RequestServices = CreateServices(); + Requests[3946].Request.Method = "GET"; + Requests[3946].Request.Path = "/subscriptions/2b003331-ca01-/resourceGroups/b2872e6c-662f-407/providers/Microsoft.DocumentDB/databaseAccounts/69ebaa78-f5/databases/1200731e-41/metricDefinitions"; + Requests[3947] = new DefaultHttpContext(); + Requests[3947].RequestServices = CreateServices(); + Requests[3947].Request.Method = "GET"; + Requests[3947].Request.Path = "/subscriptions/d5c2f451-be5c-/resourceGroups/ac650636-6d01-436/providers/Microsoft.DocumentDB/databaseAccounts/c8c4ac4b-20/databases/08cea02f-0c/metrics"; + Requests[3948] = new DefaultHttpContext(); + Requests[3948].RequestServices = CreateServices(); + Requests[3948].Request.Method = "GET"; + Requests[3948].Request.Path = "/subscriptions/7cd26de5-3a2c-/resourceGroups/aba06210-82d8-45e/providers/Microsoft.DocumentDB/databaseAccounts/b8ad85c0-b0/databases/973d8eed-1f/usages"; + Requests[3949] = new DefaultHttpContext(); + Requests[3949].RequestServices = CreateServices(); + Requests[3949].Request.Method = "GET"; + Requests[3949].Request.Path = "/subscriptions/3f6ceb3c-9f4e-/resourceGroups/94713a14-58c0-40e/providers/Microsoft.DocumentDB/databaseAccounts/dae6cb0a-ec/region/d67ecb/metrics"; + Requests[3950] = new DefaultHttpContext(); + Requests[3950].RequestServices = CreateServices(); + Requests[3950].Request.Method = "GET"; + Requests[3950].Request.Path = "/subscriptions/dd1662fd-a112-/resourceGroups/ef7a2415-7315-4de/providers/Microsoft.EventGrid/locations/db4fdb9c/topicTypes/5fa83125-5b31/eventSubscriptions"; + Requests[3951] = new DefaultHttpContext(); + Requests[3951].RequestServices = CreateServices(); + Requests[3951].Request.Method = "POST"; + Requests[3951].Request.Path = "/subscriptions/2dc0b4b2-478e-/resourceGroups/f9cf0a73-bd07-47e/providers/Microsoft.EventHub/namespaces/79009c7e-4aa3/AuthorizationRules/9fc7debf-ca6f-481a-b6/listKeys"; + Requests[3952] = new DefaultHttpContext(); + Requests[3952].RequestServices = CreateServices(); + Requests[3952].Request.Method = "POST"; + Requests[3952].Request.Path = "/subscriptions/68355d79-a398-/resourceGroups/5b4011ad-b821-410/providers/Microsoft.EventHub/namespaces/2187e68c-cedd/AuthorizationRules/ddd216c6-efca-4f9d-a0/regenerateKeys"; + Requests[3953] = new DefaultHttpContext(); + Requests[3953].RequestServices = CreateServices(); + Requests[3953].Request.Method = "GET"; + Requests[3953].Request.Path = "/subscriptions/3a0271d4-728a-/resourceGroups/12cc097d-bc61-492/providers/Microsoft.EventHub/namespaces/4b1a60bc-8f5a/disasterRecoveryConfigs/78f49/AuthorizationRules"; + Requests[3954] = new DefaultHttpContext(); + Requests[3954].RequestServices = CreateServices(); + Requests[3954].Request.Method = "POST"; + Requests[3954].Request.Path = "/subscriptions/723f7a14-1349-/resourceGroups/05a3c565-e503-496/providers/Microsoft.EventHub/namespaces/30fc31ee-d3eb/disasterRecoveryConfigs/73840/breakPairing"; + Requests[3955] = new DefaultHttpContext(); + Requests[3955].RequestServices = CreateServices(); + Requests[3955].Request.Method = "POST"; + Requests[3955].Request.Path = "/subscriptions/a6621589-33d4-/resourceGroups/37a1cca7-32fa-452/providers/Microsoft.EventHub/namespaces/b9e9440d-0c3b/disasterRecoveryConfigs/79fce/failover"; + Requests[3956] = new DefaultHttpContext(); + Requests[3956].RequestServices = CreateServices(); + Requests[3956].Request.Method = "GET"; + Requests[3956].Request.Path = "/subscriptions/13ecf24d-6099-/resourceGroups/09408709-1bf7-4c7/providers/Microsoft.EventHub/namespaces/04dd6b43-93f3/eventhubs/21e029f6-2d3/authorizationRules"; + Requests[3957] = new DefaultHttpContext(); + Requests[3957].RequestServices = CreateServices(); + Requests[3957].Request.Method = "GET"; + Requests[3957].Request.Path = "/subscriptions/71b06c72-b7de-/resourceGroups/3d5f9c99-3e1b-4a3/providers/Microsoft.EventHub/namespaces/938a6d96-aab7/eventhubs/d8e5117f-e77/consumergroups"; + Requests[3958] = new DefaultHttpContext(); + Requests[3958].RequestServices = CreateServices(); + Requests[3958].Request.Method = "POST"; + Requests[3958].Request.Path = "/subscriptions/bd0507fa-7827-/resourceGroups/a46bbef4-703b-402/providers/Microsoft.Fabric.Admin/fabricLocations/4eece12c/infraRoleInstances/b53636a5-51f1-441/PowerOff"; + Requests[3959] = new DefaultHttpContext(); + Requests[3959].RequestServices = CreateServices(); + Requests[3959].Request.Method = "POST"; + Requests[3959].Request.Path = "/subscriptions/65086138-b524-/resourceGroups/f5d95590-3e2e-401/providers/Microsoft.Fabric.Admin/fabricLocations/8a164834/infraRoleInstances/ff0da6e8-3ea5-4b7/PowerOn"; + Requests[3960] = new DefaultHttpContext(); + Requests[3960].RequestServices = CreateServices(); + Requests[3960].Request.Method = "POST"; + Requests[3960].Request.Path = "/subscriptions/92cadc22-33d4-/resourceGroups/5e662666-f6a3-476/providers/Microsoft.Fabric.Admin/fabricLocations/5e35de70/infraRoleInstances/9e1ca717-7b10-47e/Reboot"; + Requests[3961] = new DefaultHttpContext(); + Requests[3961].RequestServices = CreateServices(); + Requests[3961].Request.Method = "POST"; + Requests[3961].Request.Path = "/subscriptions/892653ea-c611-/resourceGroups/afbdf5c4-772a-442/providers/Microsoft.Fabric.Admin/fabricLocations/b74abd0b/infraRoleInstances/de954d36-bb8c-485/Shutdown"; + Requests[3962] = new DefaultHttpContext(); + Requests[3962].RequestServices = CreateServices(); + Requests[3962].Request.Method = "POST"; + Requests[3962].Request.Path = "/subscriptions/c07c2730-3347-/resourceGroups/eadbe4fe-da81-422/providers/Microsoft.Fabric.Admin/fabricLocations/5c204962/infraRoles/85627345-/Restart"; + Requests[3963] = new DefaultHttpContext(); + Requests[3963].RequestServices = CreateServices(); + Requests[3963].Request.Method = "GET"; + Requests[3963].Request.Path = "/subscriptions/7f40de4f-9b23-/resourceGroups/82d9abf3-fc37-4c7/providers/Microsoft.Fabric.Admin/fabricLocations/b8437c75/logicalNetworks/341430eb-9858-/logicalSubnets"; + Requests[3964] = new DefaultHttpContext(); + Requests[3964].RequestServices = CreateServices(); + Requests[3964].Request.Method = "POST"; + Requests[3964].Request.Path = "/subscriptions/245a6bbd-4083-/resourceGroups/15e44c9a-0bc4-422/providers/Microsoft.Fabric.Admin/fabricLocations/273d273f/scaleUnitNodes/07900cee-0345/PowerOff"; + Requests[3965] = new DefaultHttpContext(); + Requests[3965].RequestServices = CreateServices(); + Requests[3965].Request.Method = "POST"; + Requests[3965].Request.Path = "/subscriptions/c06d786f-fa02-/resourceGroups/aa6c85c0-3331-4c5/providers/Microsoft.Fabric.Admin/fabricLocations/a2e0e2f9/scaleUnitNodes/eea542fe-0c82/PowerOn"; + Requests[3966] = new DefaultHttpContext(); + Requests[3966].RequestServices = CreateServices(); + Requests[3966].Request.Method = "POST"; + Requests[3966].Request.Path = "/subscriptions/276423cc-b66d-/resourceGroups/60f28b05-110e-423/providers/Microsoft.Fabric.Admin/fabricLocations/65699f26/scaleUnitNodes/57409945-53b3/Repair"; + Requests[3967] = new DefaultHttpContext(); + Requests[3967].RequestServices = CreateServices(); + Requests[3967].Request.Method = "POST"; + Requests[3967].Request.Path = "/subscriptions/f72f35c8-22e5-/resourceGroups/cef52d7d-6c1f-4c9/providers/Microsoft.Fabric.Admin/fabricLocations/d83e8057/scaleUnitNodes/0bb1844f-9bd9/Shutdown"; + Requests[3968] = new DefaultHttpContext(); + Requests[3968].RequestServices = CreateServices(); + Requests[3968].Request.Method = "POST"; + Requests[3968].Request.Path = "/subscriptions/e054f26a-6ada-/resourceGroups/cea891bb-05ca-426/providers/Microsoft.Fabric.Admin/fabricLocations/423956a4/scaleUnitNodes/597d064c-7123/StartMaintenanceMode"; + Requests[3969] = new DefaultHttpContext(); + Requests[3969].RequestServices = CreateServices(); + Requests[3969].Request.Method = "POST"; + Requests[3969].Request.Path = "/subscriptions/90c38b31-ca30-/resourceGroups/c7180e48-f96d-4a1/providers/Microsoft.Fabric.Admin/fabricLocations/8223c907/scaleUnitNodes/b52e171b-4c16/StopMaintenanceMode"; + Requests[3970] = new DefaultHttpContext(); + Requests[3970].RequestServices = CreateServices(); + Requests[3970].Request.Method = "POST"; + Requests[3970].Request.Path = "/subscriptions/0e4c100c-73bf-/resourceGroups/d65f35b5-008c-44f/providers/Microsoft.Fabric.Admin/fabricLocations/0db8ed79/scaleUnits/14a761da-/ScaleOut"; + Requests[3971] = new DefaultHttpContext(); + Requests[3971].RequestServices = CreateServices(); + Requests[3971].Request.Method = "GET"; + Requests[3971].Request.Path = "/subscriptions/e2c11c96-1610-/resourceGroups/281dffe8-923d-411/providers/Microsoft.Fabric.Admin/fabricLocations/1b1417ef/storageSubSystems/f93b076c-2487-40/storagePools"; + Requests[3972] = new DefaultHttpContext(); + Requests[3972].RequestServices = CreateServices(); + Requests[3972].Request.Method = "POST"; + Requests[3972].Request.Path = "/subscriptions/c0338296-35e8-/resourceGroups/3fa56e8d-02f8-4fd/providers/Microsoft.HDInsight/clusters/dbe67d0a-a9/roles/8a279ccc/resize"; + Requests[3973] = new DefaultHttpContext(); + Requests[3973].RequestServices = CreateServices(); + Requests[3973].Request.Method = "POST"; + Requests[3973].Request.Path = "/subscriptions/3ff6ace5-de2d-/resourceGroups/13a5fa1d-7625-42e/providers/Microsoft.HDInsight/clusters/ed0980ba-88/scriptExecutionHistory/6df083dd-f012-4da/promote"; + Requests[3974] = new DefaultHttpContext(); + Requests[3974].RequestServices = CreateServices(); + Requests[3974].Request.Method = "GET"; + Requests[3974].Request.Path = "/subscriptions/ddd7e171-45e5-/resourceGroups/18f69bae-ef54-45b/providers/Microsoft.InfrastructureInsights.Admin/regionHealths/326d7aa9/serviceHealths/14453da5-0c53-4eac-8e/resourceHealths"; + Requests[3975] = new DefaultHttpContext(); + Requests[3975].RequestServices = CreateServices(); + Requests[3975].Request.Method = "POST"; + Requests[3975].Request.Path = "/subscriptions/aded9ca9-c0a5-/resourceGroups/79825cd6-7c33-4e0/providers/Microsoft.Logic/integrationAccounts/9df7d8ff-6cc3-4c0a-831/agreements/753e8a6c-0756/listContentCallbackUrl"; + Requests[3976] = new DefaultHttpContext(); + Requests[3976].RequestServices = CreateServices(); + Requests[3976].Request.Method = "POST"; + Requests[3976].Request.Path = "/subscriptions/2cb9b53c-e289-/resourceGroups/8792e42e-09ac-45e/providers/Microsoft.Logic/integrationAccounts/8fd33e73-ac9d-4455-9eb/assemblies/3453e344-b751-4848-9/listContentCallbackUrl"; + Requests[3977] = new DefaultHttpContext(); + Requests[3977].RequestServices = CreateServices(); + Requests[3977].Request.Method = "POST"; + Requests[3977].Request.Path = "/subscriptions/386687e6-3b61-/resourceGroups/b0d1e39b-c9be-437/providers/Microsoft.Logic/integrationAccounts/981bf8dc-dec8-4f8e-891/maps/dc0968a/listContentCallbackUrl"; + Requests[3978] = new DefaultHttpContext(); + Requests[3978].RequestServices = CreateServices(); + Requests[3978].Request.Method = "POST"; + Requests[3978].Request.Path = "/subscriptions/b34631b2-f896-/resourceGroups/1654b31a-860b-442/providers/Microsoft.Logic/integrationAccounts/b14a92e4-17f8-4601-b21/partners/59d542d3-48/listContentCallbackUrl"; + Requests[3979] = new DefaultHttpContext(); + Requests[3979].RequestServices = CreateServices(); + Requests[3979].Request.Method = "POST"; + Requests[3979].Request.Path = "/subscriptions/6fd5341d-ffeb-/resourceGroups/f3be1e8f-b38f-458/providers/Microsoft.Logic/integrationAccounts/2b1a21d9-5151-4245-be0/schemas/ee4e0823-4/listContentCallbackUrl"; + Requests[3980] = new DefaultHttpContext(); + Requests[3980].RequestServices = CreateServices(); + Requests[3980].Request.Method = "POST"; + Requests[3980].Request.Path = "/subscriptions/bab260cd-7f68-/resourceGroups/5f9e5b17-d4dc-49c/providers/Microsoft.Logic/locations/aea4dc2c/workflows/e96c52fc-dc0/validate"; + Requests[3981] = new DefaultHttpContext(); + Requests[3981].RequestServices = CreateServices(); + Requests[3981].Request.Method = "POST"; + Requests[3981].Request.Path = "/subscriptions/bf6744a4-5828-/resourceGroups/51df9ae8-799a-49d/providers/Microsoft.Logic/workflows/cf421000-d4e/accessKeys/9f5ab74e-a356/list"; + Requests[3982] = new DefaultHttpContext(); + Requests[3982].RequestServices = CreateServices(); + Requests[3982].Request.Method = "POST"; + Requests[3982].Request.Path = "/subscriptions/80596c6d-8fe6-/resourceGroups/87760f7a-60fc-4d3/providers/Microsoft.Logic/workflows/84e8699f-a83/accessKeys/f50956a0-0edd/regenerate"; + Requests[3983] = new DefaultHttpContext(); + Requests[3983].RequestServices = CreateServices(); + Requests[3983].Request.Method = "GET"; + Requests[3983].Request.Path = "/subscriptions/83aabfa2-24ea-/resourceGroups/3614d50e-f80c-417/providers/Microsoft.Logic/workflows/7965df25-324/runs/a3f1002/actions"; + Requests[3984] = new DefaultHttpContext(); + Requests[3984].RequestServices = CreateServices(); + Requests[3984].Request.Method = "POST"; + Requests[3984].Request.Path = "/subscriptions/6f7da107-5c88-/resourceGroups/76d35e29-140a-48a/providers/Microsoft.Logic/workflows/ec169774-1b8/runs/c9bb82e/cancel"; + Requests[3985] = new DefaultHttpContext(); + Requests[3985].RequestServices = CreateServices(); + Requests[3985].Request.Method = "GET"; + Requests[3985].Request.Path = "/subscriptions/856e346d-9bf8-/resourceGroups/407972a3-101f-4af/providers/Microsoft.Logic/workflows/29f48480-3ef/triggers/5c24d8cc-3f/histories"; + Requests[3986] = new DefaultHttpContext(); + Requests[3986].RequestServices = CreateServices(); + Requests[3986].Request.Method = "POST"; + Requests[3986].Request.Path = "/subscriptions/80ebe598-4b99-/resourceGroups/a09d388e-d048-46d/providers/Microsoft.Logic/workflows/2643f673-660/triggers/2a856419-ab/listCallbackUrl"; + Requests[3987] = new DefaultHttpContext(); + Requests[3987].RequestServices = CreateServices(); + Requests[3987].Request.Method = "POST"; + Requests[3987].Request.Path = "/subscriptions/4f110266-96f5-/resourceGroups/db0b9497-4bdc-4b1/providers/Microsoft.Logic/workflows/cd2d1bfd-106/triggers/7befebdc-d3/reset"; + Requests[3988] = new DefaultHttpContext(); + Requests[3988].RequestServices = CreateServices(); + Requests[3988].Request.Method = "POST"; + Requests[3988].Request.Path = "/subscriptions/122da36d-10be-/resourceGroups/aa77cb08-1ed7-4ee/providers/Microsoft.Logic/workflows/4d002500-6fa/triggers/d42e51d9-55/run"; + Requests[3989] = new DefaultHttpContext(); + Requests[3989].RequestServices = CreateServices(); + Requests[3989].Request.Method = "POST"; + Requests[3989].Request.Path = "/subscriptions/d21e2089-73a6-/resourceGroups/ae02b2f1-a455-460/providers/Microsoft.Logic/workflows/1f39ebd2-207/triggers/5cfa4f93-e9/setState"; + Requests[3990] = new DefaultHttpContext(); + Requests[3990].RequestServices = CreateServices(); + Requests[3990].Request.Method = "POST"; + Requests[3990].Request.Path = "/subscriptions/f50a67ec-7ae5-/resourceGroups/0b72c676-c650-443/providers/Microsoft.MachineLearning/commitmentPlans/812685c6-fbe3-4c51/commitmentAssociations/a5314ea6-a1db-406b-ad7e-6/move"; + Requests[3991] = new DefaultHttpContext(); + Requests[3991].RequestServices = CreateServices(); + Requests[3991].Request.Method = "POST"; + Requests[3991].Request.Path = "/subscriptions/628e666b-30ad-/resourceGroups/229ed232-12d3-4f8/providers/Microsoft.Media/mediaServices/3c266170-74/assets/f6a26f0e-/getEncryptionKey"; + Requests[3992] = new DefaultHttpContext(); + Requests[3992].RequestServices = CreateServices(); + Requests[3992].Request.Method = "POST"; + Requests[3992].Request.Path = "/subscriptions/1691b50c-8089-/resourceGroups/99ec0d77-5eb6-45f/providers/Microsoft.Media/mediaServices/c9f93bb1-7f/assets/7e505d55-/listContainerSas"; + Requests[3993] = new DefaultHttpContext(); + Requests[3993].RequestServices = CreateServices(); + Requests[3993].Request.Method = "POST"; + Requests[3993].Request.Path = "/subscriptions/a9ae2cf0-0a58-/resourceGroups/2ff0009f-426e-46c/providers/Microsoft.Media/mediaServices/dcc175ed-59/contentKeyPolicies/5d9d6f19-2157-492c-9/getPolicyPropertiesWithSecrets"; + Requests[3994] = new DefaultHttpContext(); + Requests[3994].RequestServices = CreateServices(); + Requests[3994].Request.Method = "GET"; + Requests[3994].Request.Path = "/subscriptions/f61ca657-1220-/resourceGroups/e04dc50f-081e-489/providers/Microsoft.Media/mediaservices/d4a46686-b8/liveEvents/14cc4635-ed36/liveOutputs"; + Requests[3995] = new DefaultHttpContext(); + Requests[3995].RequestServices = CreateServices(); + Requests[3995].Request.Method = "POST"; + Requests[3995].Request.Path = "/subscriptions/8d3dc237-9525-/resourceGroups/dd7c92cc-a1c9-4c6/providers/Microsoft.Media/mediaservices/db2ca602-0c/liveEvents/cb4cb978-e2d8/reset"; + Requests[3996] = new DefaultHttpContext(); + Requests[3996].RequestServices = CreateServices(); + Requests[3996].Request.Method = "POST"; + Requests[3996].Request.Path = "/subscriptions/460e604f-ca88-/resourceGroups/47f5bd45-12ad-499/providers/Microsoft.Media/mediaservices/b3364fa2-0e/liveEvents/48e4ddcc-7f8d/start"; + Requests[3997] = new DefaultHttpContext(); + Requests[3997].RequestServices = CreateServices(); + Requests[3997].Request.Method = "POST"; + Requests[3997].Request.Path = "/subscriptions/514ca765-5d18-/resourceGroups/9cde063a-63d8-489/providers/Microsoft.Media/mediaservices/39dbaf25-8e/liveEvents/d27a0d4c-9b78/stop"; + Requests[3998] = new DefaultHttpContext(); + Requests[3998].RequestServices = CreateServices(); + Requests[3998].Request.Method = "POST"; + Requests[3998].Request.Path = "/subscriptions/c5ce0dbb-42a3-/resourceGroups/ef99b5bf-ce64-4d6/providers/Microsoft.Media/mediaservices/3e66aa60-5d/streamingEndpoints/485aecdf-8901-4e44-b2/scale"; + Requests[3999] = new DefaultHttpContext(); + Requests[3999].RequestServices = CreateServices(); + Requests[3999].Request.Method = "POST"; + Requests[3999].Request.Path = "/subscriptions/dfc60bbe-d570-/resourceGroups/0c8a8a64-fa38-4dd/providers/Microsoft.Media/mediaservices/e3c88ede-45/streamingEndpoints/6cf3e17e-17bd-422f-9e/start"; + Requests[4000] = new DefaultHttpContext(); + Requests[4000].RequestServices = CreateServices(); + Requests[4000].Request.Method = "POST"; + Requests[4000].Request.Path = "/subscriptions/ea46da1c-1d74-/resourceGroups/7b1a4905-1635-4ed/providers/Microsoft.Media/mediaservices/2a66eb23-f0/streamingEndpoints/5311e4d6-2bfd-4eec-b3/stop"; + Requests[4001] = new DefaultHttpContext(); + Requests[4001].RequestServices = CreateServices(); + Requests[4001].Request.Method = "POST"; + Requests[4001].Request.Path = "/subscriptions/bb18384f-63de-/resourceGroups/ea7c8cea-a757-4a7/providers/Microsoft.Media/mediaServices/5a96fac9-15/streamingLocators/6f4554fc-10ea-4895-8/listContentKeys"; + Requests[4002] = new DefaultHttpContext(); + Requests[4002].RequestServices = CreateServices(); + Requests[4002].Request.Method = "POST"; + Requests[4002].Request.Path = "/subscriptions/1a5a4276-0de5-/resourceGroups/1df158b4-a136-439/providers/Microsoft.Media/mediaServices/cb09b7f0-64/streamingLocators/d4dd7329-860d-43d5-8/listPaths"; + Requests[4003] = new DefaultHttpContext(); + Requests[4003].RequestServices = CreateServices(); + Requests[4003].Request.Method = "GET"; + Requests[4003].Request.Path = "/subscriptions/01bc3ca8-557e-/resourceGroups/08cbeb8c-351f-4a3/providers/Microsoft.Media/mediaServices/0c51f3aa-f7/transforms/5ad88ded-cc32/jobs"; + Requests[4004] = new DefaultHttpContext(); + Requests[4004].RequestServices = CreateServices(); + Requests[4004].Request.Method = "GET"; + Requests[4004].Request.Path = "/subscriptions/cebaf05a-a6e3-/resourceGroups/746ca6c9-f48e-4c0/providers/Microsoft.Migrate/projects/64f772fe-f7/groups/7bb0970e-/assessments"; + Requests[4005] = new DefaultHttpContext(); + Requests[4005].RequestServices = CreateServices(); + Requests[4005].Request.Method = "GET"; + Requests[4005].Request.Path = "/subscriptions/aea5b43e-19ea-/resourceGroups/6be157f6-3d5e-457/providers/Microsoft.Network/expressRouteCircuits/fe7d7499-f2/peerings/13a643a1-04/stats"; + Requests[4006] = new DefaultHttpContext(); + Requests[4006].RequestServices = CreateServices(); + Requests[4006].Request.Method = "POST"; + Requests[4006].Request.Path = "/subscriptions/76c6b900-7a07-/resourceGroups/c6ef234e-9211-4f4/providers/Microsoft.Network/networkWatchers/91ede275-944f-4169/connectionMonitors/b4e2d99e-0081-422c-b3/query"; + Requests[4007] = new DefaultHttpContext(); + Requests[4007].RequestServices = CreateServices(); + Requests[4007].Request.Method = "POST"; + Requests[4007].Request.Path = "/subscriptions/83181606-0321-/resourceGroups/931a2696-3c73-4df/providers/Microsoft.Network/networkWatchers/80371a05-e8f8-4c45/connectionMonitors/90450e4a-c6dd-4f24-8e/start"; + Requests[4008] = new DefaultHttpContext(); + Requests[4008].RequestServices = CreateServices(); + Requests[4008].Request.Method = "POST"; + Requests[4008].Request.Path = "/subscriptions/1ba788f9-adf4-/resourceGroups/2e47a6c2-7b78-4d0/providers/Microsoft.Network/networkWatchers/be8c4df4-c028-4603/connectionMonitors/e1230a4f-6da8-4c02-97/stop"; + Requests[4009] = new DefaultHttpContext(); + Requests[4009].RequestServices = CreateServices(); + Requests[4009].Request.Method = "POST"; + Requests[4009].Request.Path = "/subscriptions/858dffe9-0731-/resourceGroups/4391ab54-3e69-400/providers/Microsoft.Network/networkWatchers/e49952c7-ba3e-40ba/packetCaptures/9a6c63ca-1028-405/queryStatus"; + Requests[4010] = new DefaultHttpContext(); + Requests[4010].RequestServices = CreateServices(); + Requests[4010].Request.Method = "POST"; + Requests[4010].Request.Path = "/subscriptions/1e06ea93-b4d5-/resourceGroups/8f2d562c-8521-4be/providers/Microsoft.Network/networkWatchers/36016387-c515-49f5/packetCaptures/6bd0ec63-3b45-420/stop"; + Requests[4011] = new DefaultHttpContext(); + Requests[4011].RequestServices = CreateServices(); + Requests[4011].Request.Method = "POST"; + Requests[4011].Request.Path = "/subscriptions/cfaaed05-a23e-/resourceGroups/ab23672e-71a9-43e/providers/Microsoft.NotificationHubs/namespaces/0736bd53-7f9f/AuthorizationRules/4ea4c84c-d254-4dbc-a3/listKeys"; + Requests[4012] = new DefaultHttpContext(); + Requests[4012].RequestServices = CreateServices(); + Requests[4012].Request.Method = "POST"; + Requests[4012].Request.Path = "/subscriptions/1bf37509-c42c-/resourceGroups/01cd71bb-4334-4e9/providers/Microsoft.NotificationHubs/namespaces/a8ad4a62-e57a/AuthorizationRules/d0605620-6c33-4805-8d/regenerateKeys"; + Requests[4013] = new DefaultHttpContext(); + Requests[4013].RequestServices = CreateServices(); + Requests[4013].Request.Method = "POST"; + Requests[4013].Request.Path = "/subscriptions/4c262eea-5f38-/resourceGroups/2f33525e-bd80-469/providers/Microsoft.NotificationHubs/namespaces/55a31c0b-3d7d/notificationHubs/8f503cf5-2d1a-4f32-/AuthorizationRules"; + Requests[4014] = new DefaultHttpContext(); + Requests[4014].RequestServices = CreateServices(); + Requests[4014].Request.Method = "GET"; + Requests[4014].Request.Path = "/subscriptions/b218c86c-46cc-/resourceGroups/724c07eb-9e2b-448/providers/Microsoft.NotificationHubs/namespaces/9585b6ac-c061/notificationHubs/b9cdb1c4-3118-4a02-/AuthorizationRules"; + Requests[4015] = new DefaultHttpContext(); + Requests[4015].RequestServices = CreateServices(); + Requests[4015].Request.Method = "POST"; + Requests[4015].Request.Path = "/subscriptions/9006c375-8fd9-/resourceGroups/1326795c-7dda-40e/providers/Microsoft.NotificationHubs/namespaces/6d4980a5-e1f0/notificationHubs/289927c4-ccd2-4a0b-/pnsCredentials"; + Requests[4016] = new DefaultHttpContext(); + Requests[4016].RequestServices = CreateServices(); + Requests[4016].Request.Method = "POST"; + Requests[4016].Request.Path = "/subscriptions/16446aba-fe46-/resourcegroups/be1674c1-2b22-446/providers/Microsoft.OperationalInsights/workspaces/cd210ca0-66d0/intelligencePacks/b8f2d0f5-566b-427c-a/Disable"; + Requests[4017] = new DefaultHttpContext(); + Requests[4017].RequestServices = CreateServices(); + Requests[4017].Request.Method = "POST"; + Requests[4017].Request.Path = "/subscriptions/2ec84dbe-9c68-/resourcegroups/658f83d3-e45d-436/providers/Microsoft.OperationalInsights/workspaces/aac743c7-ef59/intelligencePacks/0adeb479-7395-460b-b/Enable"; + Requests[4018] = new DefaultHttpContext(); + Requests[4018].RequestServices = CreateServices(); + Requests[4018].Request.Method = "GET"; + Requests[4018].Request.Path = "/subscriptions/8670c1a5-8d4e-/resourcegroups/66c122c3-48e2-4f4/providers/Microsoft.OperationalInsights/workspaces/dd31e771-52a3/savedSearches/bfe478a8-123d-4/results"; + Requests[4019] = new DefaultHttpContext(); + Requests[4019].RequestServices = CreateServices(); + Requests[4019].Request.Method = "POST"; + Requests[4019].Request.Path = "/Subscriptions/c09f0fad-4e8e-/resourceGroups/b9a4784d-21c7-432/providers/Microsoft.RecoveryServices/vaults/dd88cd8d-bbc/replicationFabrics/84391cb8-1/checkConsistency"; + Requests[4020] = new DefaultHttpContext(); + Requests[4020].RequestServices = CreateServices(); + Requests[4020].Request.Method = "POST"; + Requests[4020].Request.Path = "/Subscriptions/d8a49084-5565-/resourceGroups/2aec4684-c11a-4f4/providers/Microsoft.RecoveryServices/vaults/0f529304-220/replicationFabrics/0709a3a7-6/migratetoaad"; + Requests[4021] = new DefaultHttpContext(); + Requests[4021].RequestServices = CreateServices(); + Requests[4021].Request.Method = "POST"; + Requests[4021].Request.Path = "/Subscriptions/a5aa447c-9847-/resourceGroups/ca30e8c4-3a6b-42f/providers/Microsoft.RecoveryServices/vaults/605a54a1-4b4/replicationFabrics/3507b639-7/reassociateGateway"; + Requests[4022] = new DefaultHttpContext(); + Requests[4022].RequestServices = CreateServices(); + Requests[4022].Request.Method = "POST"; + Requests[4022].Request.Path = "/Subscriptions/017852ae-4ba1-/resourceGroups/af891d30-66df-460/providers/Microsoft.RecoveryServices/vaults/2a2d3df4-b08/replicationFabrics/fad1343f-1/remove"; + Requests[4023] = new DefaultHttpContext(); + Requests[4023].RequestServices = CreateServices(); + Requests[4023].Request.Method = "POST"; + Requests[4023].Request.Path = "/Subscriptions/f66f3d6c-f1ba-/resourceGroups/f84eb934-518b-4ad/providers/Microsoft.RecoveryServices/vaults/3f581c87-def/replicationFabrics/7880384e-7/renewCertificate"; + Requests[4024] = new DefaultHttpContext(); + Requests[4024].RequestServices = CreateServices(); + Requests[4024].Request.Method = "GET"; + Requests[4024].Request.Path = "/Subscriptions/91b4871b-9248-/resourceGroups/313b4e28-d6ff-421/providers/Microsoft.RecoveryServices/vaults/078e199a-8f7/replicationFabrics/4f2422ff-8/replicationLogicalNetworks"; + Requests[4025] = new DefaultHttpContext(); + Requests[4025].RequestServices = CreateServices(); + Requests[4025].Request.Method = "GET"; + Requests[4025].Request.Path = "/Subscriptions/cf793c5b-0790-/resourceGroups/cf4b13ee-567b-424/providers/Microsoft.RecoveryServices/vaults/ae4c0357-a6c/replicationFabrics/63a2d3c4-d/replicationNetworks"; + Requests[4026] = new DefaultHttpContext(); + Requests[4026].RequestServices = CreateServices(); + Requests[4026].Request.Method = "GET"; + Requests[4026].Request.Path = "/Subscriptions/2dd88ce9-8156-/resourceGroups/c16b2d5b-adce-45a/providers/Microsoft.RecoveryServices/vaults/dcec3c01-fa2/replicationFabrics/ee759d57-2/replicationProtectionContainers"; + Requests[4027] = new DefaultHttpContext(); + Requests[4027].RequestServices = CreateServices(); + Requests[4027].Request.Method = "GET"; + Requests[4027].Request.Path = "/Subscriptions/07b6d986-58f6-/resourceGroups/123ea17b-9d93-4a9/providers/Microsoft.RecoveryServices/vaults/ff708d9b-be0/replicationFabrics/4fe86e5b-1/replicationRecoveryServicesProviders"; + Requests[4028] = new DefaultHttpContext(); + Requests[4028].RequestServices = CreateServices(); + Requests[4028].Request.Method = "GET"; + Requests[4028].Request.Path = "/Subscriptions/4e8b9dc0-4530-/resourceGroups/3fca1826-972a-4d5/providers/Microsoft.RecoveryServices/vaults/9e9f8cc3-c32/replicationFabrics/d2915b01-b/replicationStorageClassifications"; + Requests[4029] = new DefaultHttpContext(); + Requests[4029].RequestServices = CreateServices(); + Requests[4029].Request.Method = "GET"; + Requests[4029].Request.Path = "/Subscriptions/b021ea67-d6f6-/resourceGroups/2ece245d-aeaf-462/providers/Microsoft.RecoveryServices/vaults/081e8c81-635/replicationFabrics/8167d0ef-c/replicationvCenters"; + Requests[4030] = new DefaultHttpContext(); + Requests[4030].RequestServices = CreateServices(); + Requests[4030].Request.Method = "POST"; + Requests[4030].Request.Path = "/Subscriptions/3cf9fbb4-cad8-/resourceGroups/6936f58d-de5c-438/providers/Microsoft.RecoveryServices/vaults/dd946025-8d3/replicationJobs/44be095/cancel"; + Requests[4031] = new DefaultHttpContext(); + Requests[4031].RequestServices = CreateServices(); + Requests[4031].Request.Method = "POST"; + Requests[4031].Request.Path = "/Subscriptions/cac1ac8b-aefc-/resourceGroups/13349630-204d-471/providers/Microsoft.RecoveryServices/vaults/058e3a92-ef3/replicationJobs/7e5bb3e/restart"; + Requests[4032] = new DefaultHttpContext(); + Requests[4032].RequestServices = CreateServices(); + Requests[4032].Request.Method = "POST"; + Requests[4032].Request.Path = "/Subscriptions/d095926c-4861-/resourceGroups/496c1767-ecde-49e/providers/Microsoft.RecoveryServices/vaults/a2fbf04a-98a/replicationJobs/20aca28/resume"; + Requests[4033] = new DefaultHttpContext(); + Requests[4033].RequestServices = CreateServices(); + Requests[4033].Request.Method = "POST"; + Requests[4033].Request.Path = "/Subscriptions/eb6247a2-80d8-/resourceGroups/2abc1e61-c70c-416/providers/Microsoft.RecoveryServices/vaults/0fdf72bc-375/replicationRecoveryPlans/1ea03e31-4490-48/failoverCommit"; + Requests[4034] = new DefaultHttpContext(); + Requests[4034].RequestServices = CreateServices(); + Requests[4034].Request.Method = "POST"; + Requests[4034].Request.Path = "/Subscriptions/81967920-2f44-/resourceGroups/c08118bc-1b18-4d1/providers/Microsoft.RecoveryServices/vaults/a0084390-667/replicationRecoveryPlans/d6c72f38-bc13-47/plannedFailover"; + Requests[4035] = new DefaultHttpContext(); + Requests[4035].RequestServices = CreateServices(); + Requests[4035].Request.Method = "POST"; + Requests[4035].Request.Path = "/Subscriptions/d49334ba-0f15-/resourceGroups/ee99d653-1b67-46b/providers/Microsoft.RecoveryServices/vaults/021a5300-59d/replicationRecoveryPlans/8deed780-57d6-45/reProtect"; + Requests[4036] = new DefaultHttpContext(); + Requests[4036].RequestServices = CreateServices(); + Requests[4036].Request.Method = "POST"; + Requests[4036].Request.Path = "/Subscriptions/27cd1c6c-3610-/resourceGroups/b738fb2a-a3ad-443/providers/Microsoft.RecoveryServices/vaults/9db9e16e-ec1/replicationRecoveryPlans/1743aa2d-c454-4a/testFailover"; + Requests[4037] = new DefaultHttpContext(); + Requests[4037].RequestServices = CreateServices(); + Requests[4037].Request.Method = "POST"; + Requests[4037].Request.Path = "/Subscriptions/41f4c4f5-e412-/resourceGroups/59902af0-449c-4bd/providers/Microsoft.RecoveryServices/vaults/1d1feefd-a0a/replicationRecoveryPlans/a11e7d61-1b97-4f/testFailoverCleanup"; + Requests[4038] = new DefaultHttpContext(); + Requests[4038].RequestServices = CreateServices(); + Requests[4038].Request.Method = "POST"; + Requests[4038].Request.Path = "/Subscriptions/48d6da82-ec2c-/resourceGroups/418a0ef2-43ae-4e7/providers/Microsoft.RecoveryServices/vaults/6f46a014-724/replicationRecoveryPlans/48a9fed5-495d-48/unplannedFailover"; + Requests[4039] = new DefaultHttpContext(); + Requests[4039].RequestServices = CreateServices(); + Requests[4039].Request.Method = "GET"; + Requests[4039].Request.Path = "/Subscriptions/f13c870b-9da2-/resourceGroups/ec6302f6-83fc-4f1/providers/Microsoft.RecoveryServices/vaults/8a183ab3-/backupFabrics/fd101d6b-d/protectableContainers"; + Requests[4040] = new DefaultHttpContext(); + Requests[4040].RequestServices = CreateServices(); + Requests[4040].Request.Method = "POST"; + Requests[4040].Request.Path = "/Subscriptions/5e1024b9-ac63-/resourceGroups/b4f8eed4-c9e4-474/providers/Microsoft.RecoveryServices/vaults/6d8b9b8b-/backupFabrics/060fc690-b/refreshContainers"; + Requests[4041] = new DefaultHttpContext(); + Requests[4041].RequestServices = CreateServices(); + Requests[4041].Request.Method = "POST"; + Requests[4041].Request.Path = "/Subscriptions/4d4d94e7-a086-/resourceGroups/5be6dfae-c283-4a1/providers/Microsoft.RecoveryServices/vaults/a98b5e29-/backupJobs/126874d/cancel"; + Requests[4042] = new DefaultHttpContext(); + Requests[4042].RequestServices = CreateServices(); + Requests[4042].Request.Method = "POST"; + Requests[4042].Request.Path = "/subscriptions/0ed10aea-8a13-/resourceGroups/34b3136b-233e-436/providers/Microsoft.Relay/namespaces/fa21d0ff-6124/authorizationRules/ceb5defd-de12-46be-9a/listKeys"; + Requests[4043] = new DefaultHttpContext(); + Requests[4043].RequestServices = CreateServices(); + Requests[4043].Request.Method = "POST"; + Requests[4043].Request.Path = "/subscriptions/628f1224-1e12-/resourceGroups/add916c4-6829-454/providers/Microsoft.Relay/namespaces/49d8677d-ec8c/authorizationRules/cbb1dacb-6d5c-4c11-8d/regenerateKeys"; + Requests[4044] = new DefaultHttpContext(); + Requests[4044].RequestServices = CreateServices(); + Requests[4044].Request.Method = "GET"; + Requests[4044].Request.Path = "/subscriptions/ef588118-5f6d-/resourceGroups/175834d6-eb47-47b/providers/Microsoft.Relay/namespaces/f91d60f1-d602/hybridConnections/25808f7b-5bc1-4ea7-a/authorizationRules"; + Requests[4045] = new DefaultHttpContext(); + Requests[4045].RequestServices = CreateServices(); + Requests[4045].Request.Method = "POST"; + Requests[4045].Request.Path = "/subscriptions/b16c366d-f4d9-/resourceGroups/054a9446-7596-4f8/providers/Microsoft.Relay/namespaces/9b5bd446-c4dd/HybridConnections/fffc7b41-1328-4e6f-8/authorizationRules"; + Requests[4046] = new DefaultHttpContext(); + Requests[4046].RequestServices = CreateServices(); + Requests[4046].Request.Method = "GET"; + Requests[4046].Request.Path = "/subscriptions/b58fd2a1-ef0f-/resourceGroups/5ee9d42c-d3d0-4f3/providers/Microsoft.Relay/namespaces/1e5f1aff-2c81/wcfRelays/da7ec357-/authorizationRules"; + Requests[4047] = new DefaultHttpContext(); + Requests[4047].RequestServices = CreateServices(); + Requests[4047].Request.Method = "POST"; + Requests[4047].Request.Path = "/subscriptions/ec8ec8e7-f954-/resourceGroups/a8732944-a604-4c3/providers/Microsoft.Relay/namespaces/5f884d7d-8e74/WcfRelays/913db73b-/authorizationRules"; + Requests[4048] = new DefaultHttpContext(); + Requests[4048].RequestServices = CreateServices(); + Requests[4048].Request.Method = "GET"; + Requests[4048].Request.Path = "/subscriptions/f55400af-c37a-/resourceGroups/5df251c5-b7a0-437/providers/Microsoft.Scheduler/jobCollections/f674942d-bf55-41f/jobs/1f75068/history"; + Requests[4049] = new DefaultHttpContext(); + Requests[4049].RequestServices = CreateServices(); + Requests[4049].Request.Method = "POST"; + Requests[4049].Request.Path = "/subscriptions/d0fd1a2b-1018-/resourceGroups/43a35453-de16-4e0/providers/Microsoft.Scheduler/jobCollections/7d424910-3ba6-4ff/jobs/8b69978/run"; + Requests[4050] = new DefaultHttpContext(); + Requests[4050].RequestServices = CreateServices(); + Requests[4050].Request.Method = "POST"; + Requests[4050].Request.Path = "/subscriptions/344aa008-c317-/resourceGroups/cb736d2e-e0b1-4d7/providers/Microsoft.ServiceBus/namespaces/d6c72fc7-4773/AuthorizationRules/9485a2ed-b0c5-4afd-b3/listKeys"; + Requests[4051] = new DefaultHttpContext(); + Requests[4051].RequestServices = CreateServices(); + Requests[4051].Request.Method = "POST"; + Requests[4051].Request.Path = "/subscriptions/76b2be4b-9d72-/resourceGroups/3dc76d09-07fe-47e/providers/Microsoft.ServiceBus/namespaces/122f53d7-cf8f/AuthorizationRules/e2a551f1-4755-4f36-94/regenerateKeys"; + Requests[4052] = new DefaultHttpContext(); + Requests[4052].RequestServices = CreateServices(); + Requests[4052].Request.Method = "GET"; + Requests[4052].Request.Path = "/subscriptions/5f51e46c-5fc8-/resourceGroups/70176dd6-39cd-476/providers/Microsoft.ServiceBus/namespaces/6c48f799-0450/disasterRecoveryConfigs/02785/AuthorizationRules"; + Requests[4053] = new DefaultHttpContext(); + Requests[4053].RequestServices = CreateServices(); + Requests[4053].Request.Method = "POST"; + Requests[4053].Request.Path = "/subscriptions/2dd3fae6-dfa2-/resourceGroups/ba5bab8a-f69e-4af/providers/Microsoft.ServiceBus/namespaces/5839dffe-cd38/disasterRecoveryConfigs/84b9b/breakPairing"; + Requests[4054] = new DefaultHttpContext(); + Requests[4054].RequestServices = CreateServices(); + Requests[4054].Request.Method = "POST"; + Requests[4054].Request.Path = "/subscriptions/c6c9d88a-a3ea-/resourceGroups/153d57f5-46b7-4e6/providers/Microsoft.ServiceBus/namespaces/731594b2-1188/disasterRecoveryConfigs/dab94/failover"; + Requests[4055] = new DefaultHttpContext(); + Requests[4055].RequestServices = CreateServices(); + Requests[4055].Request.Method = "GET"; + Requests[4055].Request.Path = "/subscriptions/7990110d-b074-/resourceGroups/52317172-c652-413/providers/Microsoft.ServiceBus/namespaces/f41ddf5b-9649/eventhubs/dc3b7687-8ab/authorizationRules"; + Requests[4056] = new DefaultHttpContext(); + Requests[4056].RequestServices = CreateServices(); + Requests[4056].Request.Method = "POST"; + Requests[4056].Request.Path = "/subscriptions/dd62bad8-62a7-/resourceGroups/41fda039-ae72-402/providers/Microsoft.ServiceBus/namespaces/db93ec3e-2227/migrationConfigurations/7bb668af-1/revert"; + Requests[4057] = new DefaultHttpContext(); + Requests[4057].RequestServices = CreateServices(); + Requests[4057].Request.Method = "POST"; + Requests[4057].Request.Path = "/subscriptions/be12bbbd-6e41-/resourceGroups/e62a6973-407c-4bd/providers/Microsoft.ServiceBus/namespaces/053881c6-a4ea/migrationConfigurations/f50bc13c-2/upgrade"; + Requests[4058] = new DefaultHttpContext(); + Requests[4058].RequestServices = CreateServices(); + Requests[4058].Request.Method = "GET"; + Requests[4058].Request.Path = "/subscriptions/df6c83f4-59d8-/resourceGroups/aeea59a1-27bd-46b/providers/Microsoft.ServiceBus/namespaces/223666e5-42d6/queues/d8f9ce12-/authorizationRules"; + Requests[4059] = new DefaultHttpContext(); + Requests[4059].RequestServices = CreateServices(); + Requests[4059].Request.Method = "GET"; + Requests[4059].Request.Path = "/subscriptions/b57c31e0-6923-/resourceGroups/20b93907-4e3b-40f/providers/Microsoft.ServiceBus/namespaces/026a51dc-ca0f/topics/29688ac2-/authorizationRules"; + Requests[4060] = new DefaultHttpContext(); + Requests[4060].RequestServices = CreateServices(); + Requests[4060].Request.Method = "GET"; + Requests[4060].Request.Path = "/subscriptions/7178860d-3414-/resourceGroups/fbfafedc-d7e2-4f7/providers/Microsoft.ServiceBus/namespaces/7c4236cd-06fb/topics/56291553-/subscriptions"; + Requests[4061] = new DefaultHttpContext(); + Requests[4061].RequestServices = CreateServices(); + Requests[4061].Request.Method = "GET"; + Requests[4061].Request.Path = "/subscriptions/5fed8a2a-9803-/resourceGroups/43b4fab9-5512-42c/providers/Microsoft.ServiceFabric/clusters/8e71fe71-e1/applications/14e84916-8bdb-4/services"; + Requests[4062] = new DefaultHttpContext(); + Requests[4062].RequestServices = CreateServices(); + Requests[4062].Request.Method = "GET"; + Requests[4062].Request.Path = "/subscriptions/4c66dda3-d2db-/resourceGroups/7996beb1-178b-459/providers/Microsoft.ServiceFabric/clusters/142fe7c0-2d/applicationTypes/3667416c-a156-4b9f-/versions"; + Requests[4063] = new DefaultHttpContext(); + Requests[4063].RequestServices = CreateServices(); + Requests[4063].Request.Method = "POST"; + Requests[4063].Request.Path = "/subscriptions/33dc384d-b4db-/resourceGroups/1b963713-bd12-4de/providers/Microsoft.Sql/locations/2c03a424-ec4/instanceFailoverGroups/22b438d5-0018-439/failover"; + Requests[4064] = new DefaultHttpContext(); + Requests[4064].RequestServices = CreateServices(); + Requests[4064].Request.Method = "POST"; + Requests[4064].Request.Path = "/subscriptions/7ec06be1-2c60-/resourceGroups/4414bbd7-e1ca-426/providers/Microsoft.Sql/locations/351ae9ee-ab5/instanceFailoverGroups/63afb08d-2083-4a2/forceFailoverAllowDataLoss"; + Requests[4065] = new DefaultHttpContext(); + Requests[4065].RequestServices = CreateServices(); + Requests[4065].Request.Method = "GET"; + Requests[4065].Request.Path = "/subscriptions/4c55251f-b057-/resourceGroups/0af02473-f58d-442/providers/Microsoft.Sql/servers/c7e0437c-d/databases/ab09b617-ef4/advisors"; + Requests[4066] = new DefaultHttpContext(); + Requests[4066].RequestServices = CreateServices(); + Requests[4066].Request.Method = "GET"; + Requests[4066].Request.Path = "/subscriptions/4fad441f-a202-/resourceGroups/02e4320c-d686-42e/providers/Microsoft.Sql/servers/91cf31ca-d/databases/440f3680-67c/auditingPolicies"; + Requests[4067] = new DefaultHttpContext(); + Requests[4067].RequestServices = CreateServices(); + Requests[4067].Request.Method = "GET"; + Requests[4067].Request.Path = "/subscriptions/07ca7951-ddbf-/resourceGroups/8ef94fdf-a926-481/providers/Microsoft.Sql/servers/82a88d91-f/databases/99b3e890-6fe/backupLongTermRetentionPolicies"; + Requests[4068] = new DefaultHttpContext(); + Requests[4068].RequestServices = CreateServices(); + Requests[4068].Request.Method = "POST"; + Requests[4068].Request.Path = "/subscriptions/4aeaf1a2-a81c-/resourceGroups/9555c8d6-20d6-4ae/providers/Microsoft.Sql/servers/e1357a78-0/databases/24a44ed3-809/export"; + Requests[4069] = new DefaultHttpContext(); + Requests[4069].RequestServices = CreateServices(); + Requests[4069].Request.Method = "GET"; + Requests[4069].Request.Path = "/subscriptions/485d51db-d908-/resourceGroups/c1b9c533-021d-48d/providers/Microsoft.Sql/servers/dfdc6fdd-3/databases/914cf4c0-f48/extensions"; + Requests[4070] = new DefaultHttpContext(); + Requests[4070].RequestServices = CreateServices(); + Requests[4070].Request.Method = "GET"; + Requests[4070].Request.Path = "/subscriptions/e0ba042a-888b-/resourceGroups/43ff4fbc-9b06-4e6/providers/Microsoft.Sql/servers/216a20b4-8/databases/d25e9438-e06/geoBackupPolicies"; + Requests[4071] = new DefaultHttpContext(); + Requests[4071].RequestServices = CreateServices(); + Requests[4071].Request.Method = "GET"; + Requests[4071].Request.Path = "/subscriptions/70848d07-4d39-/resourceGroups/885b4e6a-5b93-436/providers/Microsoft.Sql/servers/c83227bb-8/databases/4271c0c4-e80/metricDefinitions"; + Requests[4072] = new DefaultHttpContext(); + Requests[4072].RequestServices = CreateServices(); + Requests[4072].Request.Method = "GET"; + Requests[4072].Request.Path = "/subscriptions/ed53eca0-6491-/resourceGroups/27956df9-0a14-4f5/providers/Microsoft.Sql/servers/8c6802ae-7/databases/62d8f322-207/metrics"; + Requests[4073] = new DefaultHttpContext(); + Requests[4073].RequestServices = CreateServices(); + Requests[4073].Request.Method = "POST"; + Requests[4073].Request.Path = "/subscriptions/28a3011d-3f3b-/resourceGroups/5c1fe03c-94d1-4d1/providers/Microsoft.Sql/servers/ac8bb435-6/databases/47192920-19d/move"; + Requests[4074] = new DefaultHttpContext(); + Requests[4074].RequestServices = CreateServices(); + Requests[4074].Request.Method = "GET"; + Requests[4074].Request.Path = "/subscriptions/58a4e35c-baa0-/resourceGroups/68cf638f-b83c-4e5/providers/Microsoft.Sql/servers/3f355f11-7/databases/64d2fcb7-b3b/operations"; + Requests[4075] = new DefaultHttpContext(); + Requests[4075].RequestServices = CreateServices(); + Requests[4075].Request.Method = "POST"; + Requests[4075].Request.Path = "/subscriptions/fd7917f4-275a-/resourceGroups/13b4144a-85ce-42b/providers/Microsoft.Sql/servers/5c7f7ae6-d/databases/e7d1fdc2-37a/pause"; + Requests[4076] = new DefaultHttpContext(); + Requests[4076].RequestServices = CreateServices(); + Requests[4076].Request.Method = "GET"; + Requests[4076].Request.Path = "/subscriptions/8d756277-f886-/resourceGroups/5aa18d26-7c9f-4e4/providers/Microsoft.Sql/servers/6d40a674-5/databases/d8c2bfe6-c9f/replicationLinks"; + Requests[4077] = new DefaultHttpContext(); + Requests[4077].RequestServices = CreateServices(); + Requests[4077].Request.Method = "POST"; + Requests[4077].Request.Path = "/subscriptions/358aa90b-a91b-/resourceGroups/84679703-662f-443/providers/Microsoft.Sql/servers/35857ff0-4/databases/3afcb549-e84/restorePoints"; + Requests[4078] = new DefaultHttpContext(); + Requests[4078].RequestServices = CreateServices(); + Requests[4078].Request.Method = "GET"; + Requests[4078].Request.Path = "/subscriptions/c81826ed-faa6-/resourceGroups/f285be3c-f19e-412/providers/Microsoft.Sql/servers/a7752002-e/databases/6d8258ec-eca/restorePoints"; + Requests[4079] = new DefaultHttpContext(); + Requests[4079].RequestServices = CreateServices(); + Requests[4079].Request.Method = "POST"; + Requests[4079].Request.Path = "/subscriptions/0b26875e-fbe3-/resourceGroups/100026f3-f0bc-49f/providers/Microsoft.Sql/servers/522bdd6b-c/databases/f9059b18-ad3/resume"; + Requests[4080] = new DefaultHttpContext(); + Requests[4080].RequestServices = CreateServices(); + Requests[4080].Request.Method = "GET"; + Requests[4080].Request.Path = "/subscriptions/8dba771e-38f9-/resourceGroups/8b36220d-c130-49c/providers/Microsoft.Sql/servers/fedbf707-e/databases/45c152d7-a93/serviceTierAdvisors"; + Requests[4081] = new DefaultHttpContext(); + Requests[4081].RequestServices = CreateServices(); + Requests[4081].Request.Method = "GET"; + Requests[4081].Request.Path = "/subscriptions/bb561083-e2a7-/resourceGroups/1d7836ee-d052-4de/providers/Microsoft.Sql/servers/aab3589f-d/databases/77517860-696/syncGroups"; + Requests[4082] = new DefaultHttpContext(); + Requests[4082].RequestServices = CreateServices(); + Requests[4082].Request.Method = "GET"; + Requests[4082].Request.Path = "/subscriptions/4ace7562-5978-/resourceGroups/4913c310-fd0a-445/providers/Microsoft.Sql/servers/150743c4-3/databases/e0c8a648-0ee/topQueries"; + Requests[4083] = new DefaultHttpContext(); + Requests[4083].RequestServices = CreateServices(); + Requests[4083].Request.Method = "GET"; + Requests[4083].Request.Path = "/subscriptions/bcbde091-7e47-/resourceGroups/060e0651-a230-4eb/providers/Microsoft.Sql/servers/e41b54de-c/databases/76d6c054-cd1/transparentDataEncryption"; + Requests[4084] = new DefaultHttpContext(); + Requests[4084].RequestServices = CreateServices(); + Requests[4084].Request.Method = "POST"; + Requests[4084].Request.Path = "/subscriptions/80e28f7a-a199-/resourceGroups/a9af339f-b54e-495/providers/Microsoft.Sql/servers/80b88210-6/databases/101e82bf-b66/upgradeDataWarehouse"; + Requests[4085] = new DefaultHttpContext(); + Requests[4085].RequestServices = CreateServices(); + Requests[4085].Request.Method = "GET"; + Requests[4085].Request.Path = "/subscriptions/581ddbf4-3a41-/resourceGroups/f33eddcd-4dab-415/providers/Microsoft.Sql/servers/ce897adf-4/databases/256a87ad-148/usages"; + Requests[4086] = new DefaultHttpContext(); + Requests[4086].RequestServices = CreateServices(); + Requests[4086].Request.Method = "POST"; + Requests[4086].Request.Path = "/subscriptions/fd405096-ce02-/resourceGroups/60e3c4e7-b3de-424/providers/Microsoft.Sql/servers/e27d0fe3-d/disasterRecoveryConfiguration/e8f9591b-e106-4fb4-997a-da535d869/failover"; + Requests[4087] = new DefaultHttpContext(); + Requests[4087].RequestServices = CreateServices(); + Requests[4087].Request.Method = "POST"; + Requests[4087].Request.Path = "/subscriptions/d85b2b46-7f20-/resourceGroups/05978a35-aede-4f3/providers/Microsoft.Sql/servers/d6f4df0b-a/disasterRecoveryConfiguration/1f42321a-03cb-4d89-b48e-549673329/forceFailoverAllowDataLoss"; + Requests[4088] = new DefaultHttpContext(); + Requests[4088].RequestServices = CreateServices(); + Requests[4088].Request.Method = "POST"; + Requests[4088].Request.Path = "/subscriptions/3e5eb92f-6026-/resourceGroups/371f14ce-9310-44d/providers/Microsoft.Sql/servers/150ff49d-a/dnsAliases/9408aefc-a72/acquire"; + Requests[4089] = new DefaultHttpContext(); + Requests[4089].RequestServices = CreateServices(); + Requests[4089].Request.Method = "GET"; + Requests[4089].Request.Path = "/subscriptions/39b75c2f-4666-/resourceGroups/94660e77-effc-472/providers/Microsoft.Sql/servers/e3f3cb5a-0/elasticPools/9d031a30-c41b-4/databases"; + Requests[4090] = new DefaultHttpContext(); + Requests[4090].RequestServices = CreateServices(); + Requests[4090].Request.Method = "GET"; + Requests[4090].Request.Path = "/subscriptions/bf03c06e-c2c1-/resourceGroups/c1666304-a44b-408/providers/Microsoft.Sql/servers/4772623d-c/elasticPools/1acfbae6-d3a5-4/elasticPoolActivity"; + Requests[4091] = new DefaultHttpContext(); + Requests[4091].RequestServices = CreateServices(); + Requests[4091].Request.Method = "GET"; + Requests[4091].Request.Path = "/subscriptions/a551c634-fc47-/resourceGroups/c1efb5e3-fb11-42d/providers/Microsoft.Sql/servers/bd727c66-3/elasticPools/1dcc47a9-36ae-4/elasticPoolDatabaseActivity"; + Requests[4092] = new DefaultHttpContext(); + Requests[4092].RequestServices = CreateServices(); + Requests[4092].Request.Method = "GET"; + Requests[4092].Request.Path = "/subscriptions/e66e50d0-1cae-/resourceGroups/e2aee8ba-0696-4d3/providers/Microsoft.Sql/servers/6c0d41c8-f/elasticPools/d0971e23-10c5-4/metricDefinitions"; + Requests[4093] = new DefaultHttpContext(); + Requests[4093].RequestServices = CreateServices(); + Requests[4093].Request.Method = "GET"; + Requests[4093].Request.Path = "/subscriptions/0ae8cc5a-1b23-/resourceGroups/06d8d233-29a1-4a2/providers/Microsoft.Sql/servers/7de4f348-a/elasticPools/1b9c49ab-650e-4/metrics"; + Requests[4094] = new DefaultHttpContext(); + Requests[4094].RequestServices = CreateServices(); + Requests[4094].Request.Method = "GET"; + Requests[4094].Request.Path = "/subscriptions/7bddc7c0-acb2-/resourceGroups/c7bdb25b-5267-4cd/providers/Microsoft.Sql/servers/ec95db66-3/elasticPools/7d6cbfc3-48d9-4/operations"; + Requests[4095] = new DefaultHttpContext(); + Requests[4095].RequestServices = CreateServices(); + Requests[4095].Request.Method = "POST"; + Requests[4095].Request.Path = "/subscriptions/13a391a8-8994-/resourceGroups/353ce4cc-b564-42d/providers/Microsoft.Sql/servers/8f78ddd8-1/failoverGroups/b26f94c1-ce83-40f/failover"; + Requests[4096] = new DefaultHttpContext(); + Requests[4096].RequestServices = CreateServices(); + Requests[4096].Request.Method = "POST"; + Requests[4096].Request.Path = "/subscriptions/ddc11ea9-9407-/resourceGroups/a9b34d00-292b-417/providers/Microsoft.Sql/servers/467cda5b-1/failoverGroups/9fb39fe6-48a2-490/forceFailoverAllowDataLoss"; + Requests[4097] = new DefaultHttpContext(); + Requests[4097].RequestServices = CreateServices(); + Requests[4097].Request.Method = "GET"; + Requests[4097].Request.Path = "/subscriptions/cd85caa6-6ffd-/resourceGroups/02d83105-7bdc-463/providers/Microsoft.Sql/servers/f9c727b1-8/jobAgents/3f4f560d-78c/credentials"; + Requests[4098] = new DefaultHttpContext(); + Requests[4098].RequestServices = CreateServices(); + Requests[4098].Request.Method = "GET"; + Requests[4098].Request.Path = "/subscriptions/7ed8960d-85a9-/resourceGroups/75625f08-fc89-4f2/providers/Microsoft.Sql/servers/0c1c5d56-3/jobAgents/e8196cdb-5b7/executions"; + Requests[4099] = new DefaultHttpContext(); + Requests[4099].RequestServices = CreateServices(); + Requests[4099].Request.Method = "GET"; + Requests[4099].Request.Path = "/subscriptions/b7e686ed-c5df-/resourceGroups/c562396f-ab99-483/providers/Microsoft.Sql/servers/efe2cb4f-3/jobAgents/282a6f6b-768/jobs"; + Requests[4100] = new DefaultHttpContext(); + Requests[4100].RequestServices = CreateServices(); + Requests[4100].Request.Method = "GET"; + Requests[4100].Request.Path = "/subscriptions/e9b97e86-25be-/resourceGroups/4b145cd6-d848-477/providers/Microsoft.Sql/servers/e487c86d-6/jobAgents/f0cdc376-fba/targetGroups"; + Requests[4101] = new DefaultHttpContext(); + Requests[4101].RequestServices = CreateServices(); + Requests[4101].Request.Method = "GET"; + Requests[4101].Request.Path = "/subscriptions/b72ac899-76e7-/resourceGroups/710288e4-8816-462/providers/Microsoft.Sql/servers/7f694cce-7/recommendedElasticPools/b842c4f1-a1b5-4b0b-83b5-7c/databases"; + Requests[4102] = new DefaultHttpContext(); + Requests[4102].RequestServices = CreateServices(); + Requests[4102].Request.Method = "GET"; + Requests[4102].Request.Path = "/subscriptions/c12bfdd6-1958-/resourceGroups/7be61783-d5fb-452/providers/Microsoft.Sql/servers/c433c8fe-6/recommendedElasticPools/3ddaf2e4-2354-4826-9991-42/metrics"; + Requests[4103] = new DefaultHttpContext(); + Requests[4103].RequestServices = CreateServices(); + Requests[4103].Request.Method = "POST"; + Requests[4103].Request.Path = "/subscriptions/85c5b055-0c87-/resourceGroups/6b615ea4-f1ff-46f/providers/Microsoft.Sql/servers/10187d79-7/syncAgents/6fc95099-1933/generateKey"; + Requests[4104] = new DefaultHttpContext(); + Requests[4104].RequestServices = CreateServices(); + Requests[4104].Request.Method = "GET"; + Requests[4104].Request.Path = "/subscriptions/f81b8aeb-446a-/resourceGroups/25085b91-99a3-438/providers/Microsoft.Sql/servers/8df7c7ff-1/syncAgents/fa06ad6d-bd45/linkedDatabases"; + Requests[4105] = new DefaultHttpContext(); + Requests[4105].RequestServices = CreateServices(); + Requests[4105].Request.Method = "GET"; + Requests[4105].Request.Path = "/subscriptions/96b2197c-7702-/resourcegroups/25f99eb8-d0a3-4e6/providers/Microsoft.Storage.Admin/farms/17bd13/blobservices/a4d807a5-d8/metricdefinitions"; + Requests[4106] = new DefaultHttpContext(); + Requests[4106].RequestServices = CreateServices(); + Requests[4106].Request.Method = "GET"; + Requests[4106].Request.Path = "/subscriptions/9e0eb74a-31fe-/resourcegroups/5b43f0fc-30f4-4e0/providers/Microsoft.Storage.Admin/farms/3f8d3f/blobservices/a34060ed-80/metrics"; + Requests[4107] = new DefaultHttpContext(); + Requests[4107].RequestServices = CreateServices(); + Requests[4107].Request.Method = "GET"; + Requests[4107].Request.Path = "/subscriptions/8d8237cf-f73e-/resourcegroups/b43f0ca9-eeec-4bd/providers/Microsoft.Storage.Admin/farms/83020a/queueservices/ba34f9e1-31/metricdefinitions"; + Requests[4108] = new DefaultHttpContext(); + Requests[4108].RequestServices = CreateServices(); + Requests[4108].Request.Method = "GET"; + Requests[4108].Request.Path = "/subscriptions/e657c570-4ea4-/resourcegroups/a44d6ded-401b-4d1/providers/Microsoft.Storage.Admin/farms/be8ff2/queueservices/d452c864-1d/metrics"; + Requests[4109] = new DefaultHttpContext(); + Requests[4109].RequestServices = CreateServices(); + Requests[4109].Request.Method = "GET"; + Requests[4109].Request.Path = "/subscriptions/6ca63f58-3fd6-/resourcegroups/331bf66b-da95-4bc/providers/Microsoft.Storage.Admin/farms/98d6af/shares/2e5828b0-/containers"; + Requests[4110] = new DefaultHttpContext(); + Requests[4110].RequestServices = CreateServices(); + Requests[4110].Request.Method = "GET"; + Requests[4110].Request.Path = "/subscriptions/f230a047-4a48-/resourcegroups/372cd596-c588-487/providers/Microsoft.Storage.Admin/farms/ed3cae/shares/7e5f6163-/destinationshares"; + Requests[4111] = new DefaultHttpContext(); + Requests[4111].RequestServices = CreateServices(); + Requests[4111].Request.Method = "GET"; + Requests[4111].Request.Path = "/subscriptions/5722ac1d-0b52-/resourcegroups/b648f6f8-ddfe-48f/providers/Microsoft.Storage.Admin/farms/bf9939/shares/75d979da-/metricdefinitions"; + Requests[4112] = new DefaultHttpContext(); + Requests[4112].RequestServices = CreateServices(); + Requests[4112].Request.Method = "GET"; + Requests[4112].Request.Path = "/subscriptions/09d6c723-8be2-/resourcegroups/a6e7abfa-58b3-4c4/providers/Microsoft.Storage.Admin/farms/227790/shares/9942a643-/metrics"; + Requests[4113] = new DefaultHttpContext(); + Requests[4113].RequestServices = CreateServices(); + Requests[4113].Request.Method = "POST"; + Requests[4113].Request.Path = "/subscriptions/86908261-ab93-/resourcegroups/7c2c17ce-f19f-427/providers/Microsoft.Storage.Admin/farms/53f738/shares/c475d08e-/migrate"; + Requests[4114] = new DefaultHttpContext(); + Requests[4114].RequestServices = CreateServices(); + Requests[4114].Request.Method = "GET"; + Requests[4114].Request.Path = "/subscriptions/a7189b7f-1ba4-/resourcegroups/46651eb1-956e-4ea/providers/Microsoft.Storage.Admin/farms/28c997/tableservices/3dbeca99-fb/metricdefinitions"; + Requests[4115] = new DefaultHttpContext(); + Requests[4115].RequestServices = CreateServices(); + Requests[4115].Request.Method = "GET"; + Requests[4115].Request.Path = "/subscriptions/6c8a6248-44d3-/resourcegroups/4d5840b3-c41d-42b/providers/Microsoft.Storage.Admin/farms/cf9a3a/tableservices/2353a610-8b/metrics"; + Requests[4116] = new DefaultHttpContext(); + Requests[4116].RequestServices = CreateServices(); + Requests[4116].Request.Method = "POST"; + Requests[4116].Request.Path = "/subscriptions/585c7300-80d7-/resourceGroups/7a44d064-04c8-44f/providers/Microsoft.StorSimple/managers/be6d9542-87/devices/4da13c85-0/authorizeForServiceEncryptionKeyRollover"; + Requests[4117] = new DefaultHttpContext(); + Requests[4117].RequestServices = CreateServices(); + Requests[4117].Request.Method = "GET"; + Requests[4117].Request.Path = "/subscriptions/d1b68202-d5fc-/resourceGroups/e0553172-60ac-4ad/providers/Microsoft.StorSimple/managers/7a052c9b-2f/devices/092e3a31-e/backupPolicies"; + Requests[4118] = new DefaultHttpContext(); + Requests[4118].RequestServices = CreateServices(); + Requests[4118].Request.Method = "GET"; + Requests[4118].Request.Path = "/subscriptions/a1b9917c-4907-/resourceGroups/836c7815-c8b9-4b4/providers/Microsoft.StorSimple/managers/588a2b8a-6d/devices/f9d4460c-b/backups"; + Requests[4119] = new DefaultHttpContext(); + Requests[4119].RequestServices = CreateServices(); + Requests[4119].Request.Method = "POST"; + Requests[4119].Request.Path = "/subscriptions/6df976f2-7582-/resourceGroups/bff6f8a7-aa6b-4d2/providers/Microsoft.StorSimple/managers/de7eb703-3f/devices/f7a876dd-e/deactivate"; + Requests[4120] = new DefaultHttpContext(); + Requests[4120].RequestServices = CreateServices(); + Requests[4120].Request.Method = "GET"; + Requests[4120].Request.Path = "/subscriptions/7147451c-66b6-/resourceGroups/aeb266c6-028e-4c4/providers/Microsoft.StorSimple/managers/f26f1046-fd/devices/15213e74-1/hardwareComponentGroups"; + Requests[4121] = new DefaultHttpContext(); + Requests[4121].RequestServices = CreateServices(); + Requests[4121].Request.Method = "POST"; + Requests[4121].Request.Path = "/subscriptions/73493cf7-6035-/resourceGroups/dd242ac7-a2f6-4e4/providers/Microsoft.StorSimple/managers/aa748925-42/devices/e1a2d945-0/installUpdates"; + Requests[4122] = new DefaultHttpContext(); + Requests[4122].RequestServices = CreateServices(); + Requests[4122].Request.Method = "GET"; + Requests[4122].Request.Path = "/subscriptions/136589c6-0b38-/resourceGroups/bf60b8de-e3d2-44b/providers/Microsoft.StorSimple/managers/afe7a8fe-00/devices/e6b9e54c-a/jobs"; + Requests[4123] = new DefaultHttpContext(); + Requests[4123].RequestServices = CreateServices(); + Requests[4123].Request.Method = "POST"; + Requests[4123].Request.Path = "/subscriptions/a7604571-0f54-/resourceGroups/63ede15b-c41a-47d/providers/Microsoft.StorSimple/managers/9a7a6f25-ae/devices/5a636e76-5/listFailoverSets"; + Requests[4124] = new DefaultHttpContext(); + Requests[4124].RequestServices = CreateServices(); + Requests[4124].Request.Method = "GET"; + Requests[4124].Request.Path = "/subscriptions/aaa3c82a-ea7c-/resourceGroups/1edebfb0-e5fb-409/providers/Microsoft.StorSimple/managers/fd9121ee-7b/devices/40a9696e-1/metrics"; + Requests[4125] = new DefaultHttpContext(); + Requests[4125].RequestServices = CreateServices(); + Requests[4125].Request.Method = "GET"; + Requests[4125].Request.Path = "/subscriptions/8469ccaa-fd68-/resourceGroups/af8ae925-340a-4fc/providers/Microsoft.StorSimple/managers/21534cbf-47/devices/5d7edc19-b/metricsDefinitions"; + Requests[4126] = new DefaultHttpContext(); + Requests[4126].RequestServices = CreateServices(); + Requests[4126].Request.Method = "POST"; + Requests[4126].Request.Path = "/subscriptions/a70acf37-9199-/resourceGroups/a556cf28-5954-412/providers/Microsoft.StorSimple/managers/e61cac02-0e/devices/49a40e54-e/publicEncryptionKey"; + Requests[4127] = new DefaultHttpContext(); + Requests[4127].RequestServices = CreateServices(); + Requests[4127].Request.Method = "POST"; + Requests[4127].Request.Path = "/subscriptions/cc7fc980-df79-/resourceGroups/98be1d72-ba92-445/providers/Microsoft.StorSimple/managers/3b2a22ed-ef/devices/03081db5-1/scanForUpdates"; + Requests[4128] = new DefaultHttpContext(); + Requests[4128].RequestServices = CreateServices(); + Requests[4128].Request.Method = "POST"; + Requests[4128].Request.Path = "/subscriptions/2ffa17a4-90f4-/resourceGroups/8c9adedf-aa2d-4e2/providers/Microsoft.StorSimple/managers/1d3ab165-d5/devices/0c93a720-5/sendTestAlertEmail"; + Requests[4129] = new DefaultHttpContext(); + Requests[4129].RequestServices = CreateServices(); + Requests[4129].Request.Method = "GET"; + Requests[4129].Request.Path = "/subscriptions/95468bc9-f3e6-/resourceGroups/3f36d7a5-dd74-463/providers/Microsoft.StorSimple/managers/5e90b11a-0b/devices/506ec1cd-c/volumeContainers"; + Requests[4130] = new DefaultHttpContext(); + Requests[4130].RequestServices = CreateServices(); + Requests[4130].Request.Method = "GET"; + Requests[4130].Request.Path = "/subscriptions/4c70c5a5-20f8-/resourceGroups/0f6844ae-da1d-42e/providers/Microsoft.StorSimple/managers/c5ea5bd4-53/devices/74071118-9/volumes"; + Requests[4131] = new DefaultHttpContext(); + Requests[4131].RequestServices = CreateServices(); + Requests[4131].Request.Method = "POST"; + Requests[4131].Request.Path = "/subscriptions/bed1713e-bf85-/resourceGroups/555303ab-65bb-4d4/providers/Microsoft.StorSimple/managers/419215b2-3d/devices/d3fb4a10-9c27-4b/failover"; + Requests[4132] = new DefaultHttpContext(); + Requests[4132].RequestServices = CreateServices(); + Requests[4132].Request.Method = "POST"; + Requests[4132].Request.Path = "/subscriptions/ccb2a109-0fc3-/resourceGroups/9eda3d1f-651e-49f/providers/Microsoft.StorSimple/managers/c78e17a9-dd/devices/f3d75e7c-41d4-45/listFailoverTargets"; + Requests[4133] = new DefaultHttpContext(); + Requests[4133].RequestServices = CreateServices(); + Requests[4133].Request.Method = "POST"; + Requests[4133].Request.Path = "/subscriptions/f805f932-4566-/resourcegroups/3c82ce71-d515-4d9/providers/Microsoft.StreamAnalytics/streamingjobs/422630f/functions/f55133b2-41b/RetrieveDefaultDefinition"; + Requests[4134] = new DefaultHttpContext(); + Requests[4134].RequestServices = CreateServices(); + Requests[4134].Request.Method = "POST"; + Requests[4134].Request.Path = "/subscriptions/32de5a47-b44e-/resourcegroups/d60aeb36-11f9-4eb/providers/Microsoft.StreamAnalytics/streamingjobs/4ab78b2/functions/a1d8cfd7-c1f/test"; + Requests[4135] = new DefaultHttpContext(); + Requests[4135].RequestServices = CreateServices(); + Requests[4135].Request.Method = "POST"; + Requests[4135].Request.Path = "/subscriptions/907942b0-1a43-/resourcegroups/52c35117-7a93-488/providers/Microsoft.StreamAnalytics/streamingjobs/8616ff2/inputs/0f608cbf-/test"; + Requests[4136] = new DefaultHttpContext(); + Requests[4136].RequestServices = CreateServices(); + Requests[4136].Request.Method = "POST"; + Requests[4136].Request.Path = "/subscriptions/12e19fb9-39cd-/resourcegroups/bc369872-38db-4ac/providers/Microsoft.StreamAnalytics/streamingjobs/10d8bbe/outputs/832f1981-6/test"; + Requests[4137] = new DefaultHttpContext(); + Requests[4137].RequestServices = CreateServices(); + Requests[4137].Request.Method = "POST"; + Requests[4137].Request.Path = "/subscriptions/b7868d1e-3440-/resourcegroups/e108265f-4c3c-41b/providers/Microsoft.Update.Admin/updateLocations/1bbb3a65-7f9d-/updates/cdae78db-d/Apply"; + Requests[4138] = new DefaultHttpContext(); + Requests[4138].RequestServices = CreateServices(); + Requests[4138].Request.Method = "GET"; + Requests[4138].Request.Path = "/subscriptions/419315e5-292d-/resourcegroups/d638f3fd-58ab-4d6/providers/Microsoft.Update.Admin/updateLocations/3c57610f-d4b6-/updates/e4976e44-5/updateRuns"; + Requests[4139] = new DefaultHttpContext(); + Requests[4139].RequestServices = CreateServices(); + Requests[4139].Request.Method = "GET"; + Requests[4139].Request.Path = "/subscriptions/3df7cc88-939a-/resourceGroups/d19d8c79-54b9-4fc/providers/Microsoft.Web/hostingEnvironments/dee6e/workerPools/a38ed005-08fa-/metricdefinitions"; + Requests[4140] = new DefaultHttpContext(); + Requests[4140].RequestServices = CreateServices(); + Requests[4140].Request.Method = "GET"; + Requests[4140].Request.Path = "/subscriptions/790759c4-c1f7-/resourceGroups/c076757a-a7f2-4b6/providers/Microsoft.Web/hostingEnvironments/2606b/workerPools/a64907ca-33ba-/metrics"; + Requests[4141] = new DefaultHttpContext(); + Requests[4141].RequestServices = CreateServices(); + Requests[4141].Request.Method = "GET"; + Requests[4141].Request.Path = "/subscriptions/d98bd8b7-e644-/resourceGroups/a7632b17-ff5a-4f4/providers/Microsoft.Web/hostingEnvironments/1cb38/workerPools/41084bfa-d60a-/skus"; + Requests[4142] = new DefaultHttpContext(); + Requests[4142].RequestServices = CreateServices(); + Requests[4142].Request.Method = "GET"; + Requests[4142].Request.Path = "/subscriptions/6eb28ed5-750f-/resourceGroups/1c7824dc-25f0-409/providers/Microsoft.Web/hostingEnvironments/1c83e/workerPools/68c805d0-4516-/usages"; + Requests[4143] = new DefaultHttpContext(); + Requests[4143].RequestServices = CreateServices(); + Requests[4143].Request.Method = "GET"; + Requests[4143].Request.Path = "/subscriptions/6507ca04-ae79-/resourceGroups/65bd38ef-b3a0-4dd/providers/Microsoft.Web/serverfarms/000bf/virtualNetworkConnections/8f34e587/routes"; + Requests[4144] = new DefaultHttpContext(); + Requests[4144].RequestServices = CreateServices(); + Requests[4144].Request.Method = "POST"; + Requests[4144].Request.Path = "/subscriptions/29d2647e-e9f0-/resourceGroups/fe26daaa-9201-480/providers/Microsoft.Web/serverfarms/92ec0/workers/7c97a158-c/reboot"; + Requests[4145] = new DefaultHttpContext(); + Requests[4145].RequestServices = CreateServices(); + Requests[4145].Request.Method = "POST"; + Requests[4145].Request.Path = "/subscriptions/2b6af97e-1e33-/resourceGroups/8c3f2efb-07f9-483/providers/Microsoft.Web/sites/11a74/backups/57a5f94f/list"; + Requests[4146] = new DefaultHttpContext(); + Requests[4146].RequestServices = CreateServices(); + Requests[4146].Request.Method = "POST"; + Requests[4146].Request.Path = "/subscriptions/21e736c3-52d4-/resourceGroups/b4a8a17f-b377-423/providers/Microsoft.Web/sites/79aee/backups/9b268d08/restore"; + Requests[4147] = new DefaultHttpContext(); + Requests[4147].RequestServices = CreateServices(); + Requests[4147].Request.Method = "POST"; + Requests[4147].Request.Path = "/subscriptions/901e1a06-9230-/resourceGroups/54b7895b-658b-4c4/providers/Microsoft.Web/sites/e6a80/continuouswebjobs/5554ad64-b/start"; + Requests[4148] = new DefaultHttpContext(); + Requests[4148].RequestServices = CreateServices(); + Requests[4148].Request.Method = "POST"; + Requests[4148].Request.Path = "/subscriptions/ea104955-092e-/resourceGroups/e728a0ba-0bf4-42e/providers/Microsoft.Web/sites/b26af/continuouswebjobs/41a3e21e-e/stop"; + Requests[4149] = new DefaultHttpContext(); + Requests[4149].RequestServices = CreateServices(); + Requests[4149].Request.Method = "GET"; + Requests[4149].Request.Path = "/subscriptions/65579011-fb98-/resourceGroups/ac781b03-1890-4e8/providers/Microsoft.Web/sites/a0662/deployments/fcaeb/log"; + Requests[4150] = new DefaultHttpContext(); + Requests[4150].RequestServices = CreateServices(); + Requests[4150].Request.Method = "POST"; + Requests[4150].Request.Path = "/subscriptions/209d926b-54fa-/resourceGroups/fb3fab45-4c95-4ee/providers/Microsoft.Web/sites/785ea/functions/5f2e6c18-ebc/listsecrets"; + Requests[4151] = new DefaultHttpContext(); + Requests[4151].RequestServices = CreateServices(); + Requests[4151].Request.Method = "GET"; + Requests[4151].Request.Path = "/subscriptions/8a674e65-8211-/resourceGroups/cd107727-b1d9-48a/providers/Microsoft.Web/sites/fc086/instances/d3e22eb6-0/deployments"; + Requests[4152] = new DefaultHttpContext(); + Requests[4152].RequestServices = CreateServices(); + Requests[4152].Request.Method = "GET"; + Requests[4152].Request.Path = "/subscriptions/199a06b3-dd8c-/resourceGroups/0aa5fa44-58e8-47c/providers/Microsoft.Web/sites/70af1/instances/49afbb54-a/processes"; + Requests[4153] = new DefaultHttpContext(); + Requests[4153].RequestServices = CreateServices(); + Requests[4153].Request.Method = "GET"; + Requests[4153].Request.Path = "/subscriptions/ab687277-4eba-/resourceGroups/444c6c79-13a5-492/providers/Microsoft.Web/sites/d2d55/processes/b9a2873e-/dump"; + Requests[4154] = new DefaultHttpContext(); + Requests[4154].RequestServices = CreateServices(); + Requests[4154].Request.Method = "GET"; + Requests[4154].Request.Path = "/subscriptions/fc364538-d2b4-/resourceGroups/2def57a1-c18a-4d4/providers/Microsoft.Web/sites/64424/processes/2bd391e0-/modules"; + Requests[4155] = new DefaultHttpContext(); + Requests[4155].RequestServices = CreateServices(); + Requests[4155].Request.Method = "GET"; + Requests[4155].Request.Path = "/subscriptions/eb4972de-9510-/resourceGroups/0ae9ce3a-2fe4-48e/providers/Microsoft.Web/sites/eb1bd/processes/857702a4-/threads"; + Requests[4156] = new DefaultHttpContext(); + Requests[4156].RequestServices = CreateServices(); + Requests[4156].Request.Method = "GET"; + Requests[4156].Request.Path = "/subscriptions/bf38bcfe-2b07-/resourceGroups/b5620ef2-c29c-406/providers/Microsoft.Web/sites/b3c69/slots/4ba88/analyzeCustomHostname"; + Requests[4157] = new DefaultHttpContext(); + Requests[4157].RequestServices = CreateServices(); + Requests[4157].Request.Method = "POST"; + Requests[4157].Request.Path = "/subscriptions/88fbe4c9-1f21-/resourceGroups/9fddd403-2ffc-4d8/providers/Microsoft.Web/sites/08f85/slots/d5ffa/applySlotConfig"; + Requests[4158] = new DefaultHttpContext(); + Requests[4158].RequestServices = CreateServices(); + Requests[4158].Request.Method = "POST"; + Requests[4158].Request.Path = "/subscriptions/418e0d53-51f6-/resourceGroups/595c8a01-4439-417/providers/Microsoft.Web/sites/30fe7/slots/c0a05/backup"; + Requests[4159] = new DefaultHttpContext(); + Requests[4159].RequestServices = CreateServices(); + Requests[4159].Request.Method = "GET"; + Requests[4159].Request.Path = "/subscriptions/18d2b3ea-f463-/resourceGroups/3a659e3a-f13e-447/providers/Microsoft.Web/sites/21102/slots/8ca6d/backups"; + Requests[4160] = new DefaultHttpContext(); + Requests[4160].RequestServices = CreateServices(); + Requests[4160].Request.Method = "GET"; + Requests[4160].Request.Path = "/subscriptions/28c17d29-87b5-/resourceGroups/1fdab06e-68b2-48c/providers/Microsoft.Web/sites/222e1/slots/c1e3c/config"; + Requests[4161] = new DefaultHttpContext(); + Requests[4161].RequestServices = CreateServices(); + Requests[4161].Request.Method = "POST"; + Requests[4161].Request.Path = "/subscriptions/8d69d03d-be0a-/resourceGroups/08532158-3dff-426/providers/Microsoft.Web/sites/b645a/slots/f79a6/containerlogs"; + Requests[4162] = new DefaultHttpContext(); + Requests[4162].RequestServices = CreateServices(); + Requests[4162].Request.Method = "GET"; + Requests[4162].Request.Path = "/subscriptions/d3e6b7d4-0f5f-/resourceGroups/2e77cfc9-bafa-439/providers/Microsoft.Web/sites/7e768/slots/7d71d/continuouswebjobs"; + Requests[4163] = new DefaultHttpContext(); + Requests[4163].RequestServices = CreateServices(); + Requests[4163].Request.Method = "GET"; + Requests[4163].Request.Path = "/subscriptions/54788982-812b-/resourceGroups/55a92289-222b-4c4/providers/Microsoft.Web/sites/4470d/slots/f86a0/deployments"; + Requests[4164] = new DefaultHttpContext(); + Requests[4164].RequestServices = CreateServices(); + Requests[4164].Request.Method = "GET"; + Requests[4164].Request.Path = "/subscriptions/d48e57cb-762d-/resourceGroups/f7852a1c-2591-427/providers/Microsoft.Web/sites/c5c31/slots/2e072/domainOwnershipIdentifiers"; + Requests[4165] = new DefaultHttpContext(); + Requests[4165].RequestServices = CreateServices(); + Requests[4165].Request.Method = "GET"; + Requests[4165].Request.Path = "/subscriptions/0419c632-66bc-/resourceGroups/2d992cb1-9903-46f/providers/Microsoft.Web/sites/cb6f4/slots/a710d/functions"; + Requests[4166] = new DefaultHttpContext(); + Requests[4166].RequestServices = CreateServices(); + Requests[4166].Request.Method = "GET"; + Requests[4166].Request.Path = "/subscriptions/9046cdf1-b8a7-/resourceGroups/12096beb-249f-470/providers/Microsoft.Web/sites/cf032/slots/88d86/hostNameBindings"; + Requests[4167] = new DefaultHttpContext(); + Requests[4167].RequestServices = CreateServices(); + Requests[4167].Request.Method = "GET"; + Requests[4167].Request.Path = "/subscriptions/d38146f3-a4e8-/resourceGroups/51d56dfb-4c3a-443/providers/Microsoft.Web/sites/52b28/slots/115aa/hybridconnection"; + Requests[4168] = new DefaultHttpContext(); + Requests[4168].RequestServices = CreateServices(); + Requests[4168].Request.Method = "GET"; + Requests[4168].Request.Path = "/subscriptions/77548f4b-aa88-/resourceGroups/ccfff242-2530-45e/providers/Microsoft.Web/sites/0af6a/slots/1e0c8/hybridConnectionRelays"; + Requests[4169] = new DefaultHttpContext(); + Requests[4169].RequestServices = CreateServices(); + Requests[4169].Request.Method = "GET"; + Requests[4169].Request.Path = "/subscriptions/354071f0-0a4c-/resourceGroups/f4329da4-d9d3-4f0/providers/Microsoft.Web/sites/21c11/slots/622f4/instances"; + Requests[4170] = new DefaultHttpContext(); + Requests[4170].RequestServices = CreateServices(); + Requests[4170].Request.Method = "POST"; + Requests[4170].Request.Path = "/subscriptions/d5cb17ef-adfc-/resourceGroups/8514dfef-06ad-4e2/providers/Microsoft.Web/sites/3546b/slots/3d0b3/iscloneable"; + Requests[4171] = new DefaultHttpContext(); + Requests[4171].RequestServices = CreateServices(); + Requests[4171].Request.Method = "POST"; + Requests[4171].Request.Path = "/subscriptions/1f9e02ba-2c50-/resourceGroups/7b97f188-5f11-4b0/providers/Microsoft.Web/sites/196e9/slots/1e90a/listsyncfunctiontriggerstatus"; + Requests[4172] = new DefaultHttpContext(); + Requests[4172].RequestServices = CreateServices(); + Requests[4172].Request.Method = "GET"; + Requests[4172].Request.Path = "/subscriptions/036c6e58-b598-/resourceGroups/6910f166-fcc8-4f3/providers/Microsoft.Web/sites/e1127/slots/cce59/metricdefinitions"; + Requests[4173] = new DefaultHttpContext(); + Requests[4173].RequestServices = CreateServices(); + Requests[4173].Request.Method = "GET"; + Requests[4173].Request.Path = "/subscriptions/8864e06b-1c34-/resourceGroups/a8aeab9b-637e-40e/providers/Microsoft.Web/sites/84c8b/slots/51e7b/metrics"; + Requests[4174] = new DefaultHttpContext(); + Requests[4174].RequestServices = CreateServices(); + Requests[4174].Request.Method = "POST"; + Requests[4174].Request.Path = "/subscriptions/1618f723-24c3-/resourceGroups/35e2bfae-a480-48d/providers/Microsoft.Web/sites/ba554/slots/514cd/newpassword"; + Requests[4175] = new DefaultHttpContext(); + Requests[4175].RequestServices = CreateServices(); + Requests[4175].Request.Method = "GET"; + Requests[4175].Request.Path = "/subscriptions/fbae4f96-cdf7-/resourceGroups/d4764665-39ab-45e/providers/Microsoft.Web/sites/d1392/slots/e07ef/perfcounters"; + Requests[4176] = new DefaultHttpContext(); + Requests[4176].RequestServices = CreateServices(); + Requests[4176].Request.Method = "GET"; + Requests[4176].Request.Path = "/subscriptions/149186c3-8a7b-/resourceGroups/a5c6c544-86d6-4e7/providers/Microsoft.Web/sites/b2be5/slots/d40ec/phplogging"; + Requests[4177] = new DefaultHttpContext(); + Requests[4177].RequestServices = CreateServices(); + Requests[4177].Request.Method = "GET"; + Requests[4177].Request.Path = "/subscriptions/cbd97841-c53b-/resourceGroups/835f5cc6-d553-404/providers/Microsoft.Web/sites/e7312/slots/15563/premieraddons"; + Requests[4178] = new DefaultHttpContext(); + Requests[4178].RequestServices = CreateServices(); + Requests[4178].Request.Method = "GET"; + Requests[4178].Request.Path = "/subscriptions/dcb9c8d4-aee6-/resourceGroups/2e13b31d-3c29-4dc/providers/Microsoft.Web/sites/84936/slots/b3adb/processes"; + Requests[4179] = new DefaultHttpContext(); + Requests[4179].RequestServices = CreateServices(); + Requests[4179].Request.Method = "GET"; + Requests[4179].Request.Path = "/subscriptions/898acb6f-5c2a-/resourceGroups/4cc8c94b-5ec0-4d6/providers/Microsoft.Web/sites/f9c17/slots/744fc/publicCertificates"; + Requests[4180] = new DefaultHttpContext(); + Requests[4180].RequestServices = CreateServices(); + Requests[4180].Request.Method = "POST"; + Requests[4180].Request.Path = "/subscriptions/0340450e-4b45-/resourceGroups/0a7d1ea1-e96e-436/providers/Microsoft.Web/sites/c6794/slots/e73fb/publishxml"; + Requests[4181] = new DefaultHttpContext(); + Requests[4181].RequestServices = CreateServices(); + Requests[4181].Request.Method = "POST"; + Requests[4181].Request.Path = "/subscriptions/112ca163-0b67-/resourceGroups/889af39b-7205-4b2/providers/Microsoft.Web/sites/ce35d/slots/ecce0/recover"; + Requests[4182] = new DefaultHttpContext(); + Requests[4182].RequestServices = CreateServices(); + Requests[4182].Request.Method = "POST"; + Requests[4182].Request.Path = "/subscriptions/d3d17267-a589-/resourceGroups/5ce30be4-1bee-4b6/providers/Microsoft.Web/sites/71678/slots/c248d/resetSlotConfig"; + Requests[4183] = new DefaultHttpContext(); + Requests[4183].RequestServices = CreateServices(); + Requests[4183].Request.Method = "GET"; + Requests[4183].Request.Path = "/subscriptions/ec04229e-1e3c-/resourceGroups/3c753e26-69c8-421/providers/Microsoft.Web/sites/e896b/slots/44bde/resourceHealthMetadata"; + Requests[4184] = new DefaultHttpContext(); + Requests[4184].RequestServices = CreateServices(); + Requests[4184].Request.Method = "POST"; + Requests[4184].Request.Path = "/subscriptions/f183650c-90b3-/resourceGroups/a3512086-7d29-464/providers/Microsoft.Web/sites/4ca16/slots/93670/restart"; + Requests[4185] = new DefaultHttpContext(); + Requests[4185].RequestServices = CreateServices(); + Requests[4185].Request.Method = "POST"; + Requests[4185].Request.Path = "/subscriptions/e99d36da-784f-/resourceGroups/27b2b8eb-a78f-41e/providers/Microsoft.Web/sites/89884/slots/c3178/restoreFromBackupBlob"; + Requests[4186] = new DefaultHttpContext(); + Requests[4186].RequestServices = CreateServices(); + Requests[4186].Request.Method = "POST"; + Requests[4186].Request.Path = "/subscriptions/2e0dee3f-cafb-/resourceGroups/2a0a4876-7434-449/providers/Microsoft.Web/sites/2da88/slots/b2ee3/restoreFromDeletedApp"; + Requests[4187] = new DefaultHttpContext(); + Requests[4187].RequestServices = CreateServices(); + Requests[4187].Request.Method = "POST"; + Requests[4187].Request.Path = "/subscriptions/0b079898-d5e8-/resourceGroups/6fb35ffe-4b9a-416/providers/Microsoft.Web/sites/0fe55/slots/10bab/restoreSnapshot"; + Requests[4188] = new DefaultHttpContext(); + Requests[4188].RequestServices = CreateServices(); + Requests[4188].Request.Method = "GET"; + Requests[4188].Request.Path = "/subscriptions/a9a04015-f27c-/resourceGroups/948fd7c2-9e36-40a/providers/Microsoft.Web/sites/1cf07/slots/2c03d/siteextensions"; + Requests[4189] = new DefaultHttpContext(); + Requests[4189].RequestServices = CreateServices(); + Requests[4189].Request.Method = "POST"; + Requests[4189].Request.Path = "/subscriptions/6e4b04d5-cbc9-/resourceGroups/d053913b-c82d-4c9/providers/Microsoft.Web/sites/81ce9/slots/8f284/slotsdiffs"; + Requests[4190] = new DefaultHttpContext(); + Requests[4190].RequestServices = CreateServices(); + Requests[4190].Request.Method = "POST"; + Requests[4190].Request.Path = "/subscriptions/c1b984c9-9ff1-/resourceGroups/d44c5db3-594c-439/providers/Microsoft.Web/sites/54831/slots/af3fe/slotsswap"; + Requests[4191] = new DefaultHttpContext(); + Requests[4191].RequestServices = CreateServices(); + Requests[4191].Request.Method = "GET"; + Requests[4191].Request.Path = "/subscriptions/461026bd-ddef-/resourceGroups/de73e390-7501-4bd/providers/Microsoft.Web/sites/269c2/slots/b5ef5/snapshots"; + Requests[4192] = new DefaultHttpContext(); + Requests[4192].RequestServices = CreateServices(); + Requests[4192].Request.Method = "PUT"; + Requests[4192].Request.Path = "/subscriptions/46901df9-b51c-/resourceGroups/e5db0a68-161e-46d/providers/Microsoft.Web/sites/57dfe/slots/ea3bf/snapshots"; + Requests[4193] = new DefaultHttpContext(); + Requests[4193].RequestServices = CreateServices(); + Requests[4193].Request.Method = "POST"; + Requests[4193].Request.Path = "/subscriptions/cd2da230-5624-/resourceGroups/b97c3975-41b7-4ff/providers/Microsoft.Web/sites/302b3/slots/0355d/start"; + Requests[4194] = new DefaultHttpContext(); + Requests[4194].RequestServices = CreateServices(); + Requests[4194].Request.Method = "POST"; + Requests[4194].Request.Path = "/subscriptions/0854492d-d715-/resourceGroups/0bf4e5ed-40a7-492/providers/Microsoft.Web/sites/e57b0/slots/0a0b4/stop"; + Requests[4195] = new DefaultHttpContext(); + Requests[4195].RequestServices = CreateServices(); + Requests[4195].Request.Method = "POST"; + Requests[4195].Request.Path = "/subscriptions/82e9ba1f-22ea-/resourceGroups/1c617e29-d9d8-404/providers/Microsoft.Web/sites/b41fb/slots/a7134/sync"; + Requests[4196] = new DefaultHttpContext(); + Requests[4196].RequestServices = CreateServices(); + Requests[4196].Request.Method = "POST"; + Requests[4196].Request.Path = "/subscriptions/933cf52c-ac58-/resourceGroups/4b479d37-1612-43f/providers/Microsoft.Web/sites/772e1/slots/31343/syncfunctiontriggers"; + Requests[4197] = new DefaultHttpContext(); + Requests[4197].RequestServices = CreateServices(); + Requests[4197].Request.Method = "GET"; + Requests[4197].Request.Path = "/subscriptions/af9ebf3a-7f96-/resourceGroups/4a3edd86-f319-42c/providers/Microsoft.Web/sites/1fb6b/slots/64478/triggeredwebjobs"; + Requests[4198] = new DefaultHttpContext(); + Requests[4198].RequestServices = CreateServices(); + Requests[4198].Request.Method = "GET"; + Requests[4198].Request.Path = "/subscriptions/825cca41-7ae0-/resourceGroups/587aae5a-4806-4a3/providers/Microsoft.Web/sites/9c87a/slots/fbb96/usages"; + Requests[4199] = new DefaultHttpContext(); + Requests[4199].RequestServices = CreateServices(); + Requests[4199].Request.Method = "GET"; + Requests[4199].Request.Path = "/subscriptions/f598e403-bf3d-/resourceGroups/01cd2f67-2c35-43c/providers/Microsoft.Web/sites/bb689/slots/9d079/virtualNetworkConnections"; + Requests[4200] = new DefaultHttpContext(); + Requests[4200].RequestServices = CreateServices(); + Requests[4200].Request.Method = "GET"; + Requests[4200].Request.Path = "/subscriptions/52c9744a-550e-/resourceGroups/6012d98c-f716-47e/providers/Microsoft.Web/sites/c8349/slots/78623/webjobs"; + Requests[4201] = new DefaultHttpContext(); + Requests[4201].RequestServices = CreateServices(); + Requests[4201].Request.Method = "GET"; + Requests[4201].Request.Path = "/subscriptions/20f8a0ce-1b47-/resourceGroups/100013bc-6c15-4ee/providers/Microsoft.Web/sites/9b82f/triggeredwebjobs/3b177cf9-c/history"; + Requests[4202] = new DefaultHttpContext(); + Requests[4202].RequestServices = CreateServices(); + Requests[4202].Request.Method = "POST"; + Requests[4202].Request.Path = "/subscriptions/c8dc64f9-9917-/resourceGroups/c2361277-7946-495/providers/Microsoft.Web/sites/88820/triggeredwebjobs/7abc551e-a/run"; + Requests[4203] = new DefaultHttpContext(); + Requests[4203].RequestServices = CreateServices(); + Requests[4203].Request.Method = "GET"; + Requests[4203].Request.Path = "/subscriptions/b2752a74-0db1-/resourceGroups/b307e32b-f033-434/providers/Microsoft.Web/sites/214fc246/diagnostics/9ffc2156-3e48-46b5/analyses"; + Requests[4204] = new DefaultHttpContext(); + Requests[4204].RequestServices = CreateServices(); + Requests[4204].Request.Method = "GET"; + Requests[4204].Request.Path = "/subscriptions/1a353df5-d08d-/resourceGroups/aa023988-be17-414/providers/Microsoft.Web/sites/5aa5a3ff/diagnostics/cf7ec21d-7565-4353/detectors"; + Requests[4205] = new DefaultHttpContext(); + Requests[4205].RequestServices = CreateServices(); + Requests[4205].Request.Method = "POST"; + Requests[4205].Request.Path = "/subscriptions/fae2c9bf-d180-/resourceGroups/9f46e38b-38c3-4d8/providers/Microsoft.Web/sites/8ab17ebe/recommendations/2fefe/disable"; + Requests[4206] = new DefaultHttpContext(); + Requests[4206].RequestServices = CreateServices(); + Requests[4206].Request.Method = "GET"; + Requests[4206].Request.Path = "/subscriptions/9ca7d6cd-7d7e-/resourceGroups/b619a14e-d369-4cd/providers/Microsoft.Web/sites/c3dffdb8/slots/d615c/detectors"; + Requests[4207] = new DefaultHttpContext(); + Requests[4207].RequestServices = CreateServices(); + Requests[4207].Request.Method = "GET"; + Requests[4207].Request.Path = "/subscriptions/f174e85c-1f61-/resourceGroups/0238b356-52ef-4b7/providers/Microsoft.Web/sites/0a1f0783/slots/66c5c/diagnostics"; + Requests[4208] = new DefaultHttpContext(); + Requests[4208].RequestServices = CreateServices(); + Requests[4208].Request.Method = "POST"; + Requests[4208].Request.Path = "/subscriptions/a2b8e549-8571-/resourceGroups/f0b6b455-2929-4e4/providers/Microsoft.ApiManagement/service/17058d50-08/tenant/318bd5a3-6/git/regeneratePrimaryKey"; + Requests[4209] = new DefaultHttpContext(); + Requests[4209].RequestServices = CreateServices(); + Requests[4209].Request.Method = "POST"; + Requests[4209].Request.Path = "/subscriptions/82b85b4a-253a-/resourceGroups/015721f6-f134-4eb/providers/Microsoft.ApiManagement/service/c692cf21-6a/tenant/41b8e813-f/git/regenerateSecondaryKey"; + Requests[4210] = new DefaultHttpContext(); + Requests[4210].RequestServices = CreateServices(); + Requests[4210].Request.Method = "PUT"; + Requests[4210].Request.Path = "/subscriptions/2f1f4d0f-4ce6-/resourceGroups/6c82099c-2f1a-459/providers/Microsoft.Automation/automationAccounts/2af34bb9-5da1-4dcc-ae/runbooks/0e1a859d-7c/draft/content"; + Requests[4211] = new DefaultHttpContext(); + Requests[4211].RequestServices = CreateServices(); + Requests[4211].Request.Method = "GET"; + Requests[4211].Request.Path = "/subscriptions/6ff8ceb2-a1bf-/resourceGroups/aa51c86b-fefa-433/providers/Microsoft.Automation/automationAccounts/d8bb01be-a4ae-400e-b7/runbooks/045f0f7b-37/draft/content"; + Requests[4212] = new DefaultHttpContext(); + Requests[4212].RequestServices = CreateServices(); + Requests[4212].Request.Method = "POST"; + Requests[4212].Request.Path = "/subscriptions/26ae0f25-d6fa-/resourceGroups/97cc9e54-16f4-47e/providers/Microsoft.Automation/automationAccounts/c8d01c85-b1e3-4cfd-ae/runbooks/0a68bd04-1b/draft/publish"; + Requests[4213] = new DefaultHttpContext(); + Requests[4213].RequestServices = CreateServices(); + Requests[4213].Request.Method = "GET"; + Requests[4213].Request.Path = "/subscriptions/5c6af6fa-2d06-/resourceGroups/ecb9849c-758a-4f8/providers/Microsoft.Automation/automationAccounts/15ba3e92-18aa-4ae5-9f/runbooks/4aa14304-17/draft/testJob"; + Requests[4214] = new DefaultHttpContext(); + Requests[4214].RequestServices = CreateServices(); + Requests[4214].Request.Method = "PUT"; + Requests[4214].Request.Path = "/subscriptions/f66c6b68-2d00-/resourceGroups/43a36d40-3460-4cb/providers/Microsoft.Automation/automationAccounts/30f03224-a3f4-4a54-b6/runbooks/291b9edf-ad/draft/testJob"; + Requests[4215] = new DefaultHttpContext(); + Requests[4215].RequestServices = CreateServices(); + Requests[4215].Request.Method = "POST"; + Requests[4215].Request.Path = "/subscriptions/affb8791-e435-/resourceGroups/c2cce16f-0a77-4a8/providers/Microsoft.Automation/automationAccounts/289663f5-df23-4b28-9f/runbooks/130c12e9-01/draft/undoEdit"; + Requests[4216] = new DefaultHttpContext(); + Requests[4216].RequestServices = CreateServices(); + Requests[4216].Request.Method = "GET"; + Requests[4216].Request.Path = "/subscriptions/6b852888-3cc0-/resourceGroups/63fd974a-c0b6-434/providers/Microsoft.DocumentDB/databaseAccounts/26829c92-96/targetRegion/88e16de9-a83/percentile/metrics"; + Requests[4217] = new DefaultHttpContext(); + Requests[4217].RequestServices = CreateServices(); + Requests[4217].Request.Method = "GET"; + Requests[4217].Request.Path = "/subscriptions/042b0a95-5d44-/resourceGroups/bf897844-24b0-436/providers/Microsoft.Logic/workflows/0c3b27f2-1db/triggers/02565f82-e5/schemas/json"; + Requests[4218] = new DefaultHttpContext(); + Requests[4218].RequestServices = CreateServices(); + Requests[4218].Request.Method = "GET"; + Requests[4218].Request.Path = "/subscriptions/208a7a6a-af40-/resourceGroups/c899258b-45c7-409/providers/Microsoft.Sql/servers/4c4f74e0-b/databases/2b6b15c6-4d0/automaticTuning/current"; + Requests[4219] = new DefaultHttpContext(); + Requests[4219].RequestServices = CreateServices(); + Requests[4219].Request.Method = "PATCH"; + Requests[4219].Request.Path = "/subscriptions/c6c61b0b-dd77-/resourceGroups/3710665e-3e11-410/providers/Microsoft.Sql/servers/cb46e677-3/databases/c3005ba7-134/automaticTuning/current"; + Requests[4220] = new DefaultHttpContext(); + Requests[4220].RequestServices = CreateServices(); + Requests[4220].Request.Method = "GET"; + Requests[4220].Request.Path = "/subscriptions/0b9f260d-1ee7-/resourceGroups/95e9012a-b2b1-4de/providers/Microsoft.StorSimple/managers/8581b173-37/devices/587e8a8e-c/alertSettings/default"; + Requests[4221] = new DefaultHttpContext(); + Requests[4221].RequestServices = CreateServices(); + Requests[4221].Request.Method = "PUT"; + Requests[4221].Request.Path = "/subscriptions/a68d0c33-cf03-/resourceGroups/b983f94c-7653-49f/providers/Microsoft.StorSimple/managers/9fa665a2-d2/devices/d3ae9348-4/alertSettings/default"; + Requests[4222] = new DefaultHttpContext(); + Requests[4222].RequestServices = CreateServices(); + Requests[4222].Request.Method = "GET"; + Requests[4222].Request.Path = "/subscriptions/ff2c40ef-101c-/resourceGroups/01d13f45-da36-46b/providers/Microsoft.StorSimple/managers/301c1f76-4d/devices/45b0e83d-7/networkSettings/default"; + Requests[4223] = new DefaultHttpContext(); + Requests[4223].RequestServices = CreateServices(); + Requests[4223].Request.Method = "PATCH"; + Requests[4223].Request.Path = "/subscriptions/e9ee0679-5c31-/resourceGroups/fe3fad38-0394-483/providers/Microsoft.StorSimple/managers/2be7ffff-7d/devices/43999e57-5/networkSettings/default"; + Requests[4224] = new DefaultHttpContext(); + Requests[4224].RequestServices = CreateServices(); + Requests[4224].Request.Method = "GET"; + Requests[4224].Request.Path = "/subscriptions/f2941e36-e325-/resourceGroups/2a16a0c6-f095-4a5/providers/Microsoft.StorSimple/managers/37c6674d-b6/devices/73e439b6-5/securitySettings/default"; + Requests[4225] = new DefaultHttpContext(); + Requests[4225].RequestServices = CreateServices(); + Requests[4225].Request.Method = "PATCH"; + Requests[4225].Request.Path = "/subscriptions/55e264a8-13aa-/resourceGroups/ec664ceb-ea0d-48e/providers/Microsoft.StorSimple/managers/0c8f2424-a6/devices/8d48a68f-8/securitySettings/default"; + Requests[4226] = new DefaultHttpContext(); + Requests[4226].RequestServices = CreateServices(); + Requests[4226].Request.Method = "GET"; + Requests[4226].Request.Path = "/subscriptions/cfda6225-d465-/resourceGroups/014a78a8-c72a-4ce/providers/Microsoft.StorSimple/managers/274b5027-45/devices/dd987cc6-8/timeSettings/default"; + Requests[4227] = new DefaultHttpContext(); + Requests[4227].RequestServices = CreateServices(); + Requests[4227].Request.Method = "PUT"; + Requests[4227].Request.Path = "/subscriptions/5f7a08dc-803a-/resourceGroups/72f5b171-be19-4a1/providers/Microsoft.StorSimple/managers/b7e2547d-17/devices/a223b0f1-d/timeSettings/default"; + Requests[4228] = new DefaultHttpContext(); + Requests[4228].RequestServices = CreateServices(); + Requests[4228].Request.Method = "GET"; + Requests[4228].Request.Path = "/subscriptions/21b1e1d2-3cf6-/resourceGroups/66e99452-6740-499/providers/Microsoft.StorSimple/managers/04ea0464-43/devices/eca960b7-6/updateSummary/default"; + Requests[4229] = new DefaultHttpContext(); + Requests[4229].RequestServices = CreateServices(); + Requests[4229].Request.Method = "PUT"; + Requests[4229].Request.Path = "/subscriptions/39453c4b-effe-/resourceGroups/6dcedf9b-e07a-481/providers/Microsoft.Web/sites/b87c4/instances/a0e54888-7/extensions/MSDeploy"; + Requests[4230] = new DefaultHttpContext(); + Requests[4230].RequestServices = CreateServices(); + Requests[4230].Request.Method = "GET"; + Requests[4230].Request.Path = "/subscriptions/a1f0e162-3337-/resourceGroups/d2001411-8863-49f/providers/Microsoft.Web/sites/33f91/instances/0b3742e4-e/extensions/MSDeploy"; + Requests[4231] = new DefaultHttpContext(); + Requests[4231].RequestServices = CreateServices(); + Requests[4231].Request.Method = "PUT"; + Requests[4231].Request.Path = "/subscriptions/30c60d6f-7f1d-/resourceGroups/8ec28b5b-a47f-442/providers/Microsoft.Web/sites/3bb50/slots/5cb0c/backups/discover"; + Requests[4232] = new DefaultHttpContext(); + Requests[4232].RequestServices = CreateServices(); + Requests[4232].Request.Method = "PUT"; + Requests[4232].Request.Path = "/subscriptions/9be96dde-80f5-/resourceGroups/aa036280-a4ba-42c/providers/Microsoft.Web/sites/f6352/slots/4ac72/config/appsettings"; + Requests[4233] = new DefaultHttpContext(); + Requests[4233].RequestServices = CreateServices(); + Requests[4233].Request.Method = "PUT"; + Requests[4233].Request.Path = "/subscriptions/d02d630d-ee27-/resourceGroups/8aa67292-f298-454/providers/Microsoft.Web/sites/51123/slots/3bff8/config/authsettings"; + Requests[4234] = new DefaultHttpContext(); + Requests[4234].RequestServices = CreateServices(); + Requests[4234].Request.Method = "DELETE"; + Requests[4234].Request.Path = "/subscriptions/0cebbe76-cbf6-/resourceGroups/f32be4a5-fc14-4c6/providers/Microsoft.Web/sites/a865b/slots/3ceac/config/backup"; + Requests[4235] = new DefaultHttpContext(); + Requests[4235].RequestServices = CreateServices(); + Requests[4235].Request.Method = "PUT"; + Requests[4235].Request.Path = "/subscriptions/ab5dce22-d424-/resourceGroups/1dda3ed5-3a5a-44d/providers/Microsoft.Web/sites/2ec6d/slots/418f2/config/backup"; + Requests[4236] = new DefaultHttpContext(); + Requests[4236].RequestServices = CreateServices(); + Requests[4236].Request.Method = "PUT"; + Requests[4236].Request.Path = "/subscriptions/1c9119fc-b6c5-/resourceGroups/0b2d634d-b695-440/providers/Microsoft.Web/sites/46489/slots/278fd/config/connectionstrings"; + Requests[4237] = new DefaultHttpContext(); + Requests[4237].RequestServices = CreateServices(); + Requests[4237].Request.Method = "GET"; + Requests[4237].Request.Path = "/subscriptions/2dc9edd9-5820-/resourceGroups/ccc6d01c-1c38-422/providers/Microsoft.Web/sites/5731c/slots/ec681/config/logs"; + Requests[4238] = new DefaultHttpContext(); + Requests[4238].RequestServices = CreateServices(); + Requests[4238].Request.Method = "PUT"; + Requests[4238].Request.Path = "/subscriptions/468bfe0a-d25b-/resourceGroups/1d78d402-7173-4bd/providers/Microsoft.Web/sites/6789b/slots/11758/config/logs"; + Requests[4239] = new DefaultHttpContext(); + Requests[4239].RequestServices = CreateServices(); + Requests[4239].Request.Method = "PUT"; + Requests[4239].Request.Path = "/subscriptions/a3fc5b48-9be7-/resourceGroups/528f20f1-ed82-417/providers/Microsoft.Web/sites/145fd/slots/8663a/config/metadata"; + Requests[4240] = new DefaultHttpContext(); + Requests[4240].RequestServices = CreateServices(); + Requests[4240].Request.Method = "PUT"; + Requests[4240].Request.Path = "/subscriptions/aaa9fbf6-8116-/resourceGroups/e9352311-4efa-4a1/providers/Microsoft.Web/sites/c1893/slots/a9734/config/pushsettings"; + Requests[4241] = new DefaultHttpContext(); + Requests[4241].RequestServices = CreateServices(); + Requests[4241].Request.Method = "GET"; + Requests[4241].Request.Path = "/subscriptions/1cfb2057-1df3-/resourceGroups/0addff53-7f12-488/providers/Microsoft.Web/sites/7dcee/slots/800db/config/web"; + Requests[4242] = new DefaultHttpContext(); + Requests[4242].RequestServices = CreateServices(); + Requests[4242].Request.Method = "PUT"; + Requests[4242].Request.Path = "/subscriptions/0f8c529f-5449-/resourceGroups/5f9bfaf1-8e6d-49a/providers/Microsoft.Web/sites/9f5e2/slots/e5b3a/config/web"; + Requests[4243] = new DefaultHttpContext(); + Requests[4243].RequestServices = CreateServices(); + Requests[4243].Request.Method = "PATCH"; + Requests[4243].Request.Path = "/subscriptions/f39f32c1-78ab-/resourceGroups/3a5107c4-c3eb-493/providers/Microsoft.Web/sites/b7bfc/slots/036ac/config/web"; + Requests[4244] = new DefaultHttpContext(); + Requests[4244].RequestServices = CreateServices(); + Requests[4244].Request.Method = "GET"; + Requests[4244].Request.Path = "/subscriptions/b6d382df-5959-/resourceGroups/cf9caabb-7329-49c/providers/Microsoft.Web/sites/690b9/slots/7fa57/extensions/MSDeploy"; + Requests[4245] = new DefaultHttpContext(); + Requests[4245].RequestServices = CreateServices(); + Requests[4245].Request.Method = "PUT"; + Requests[4245].Request.Path = "/subscriptions/78a5d582-36af-/resourceGroups/6a3321d4-c59c-468/providers/Microsoft.Web/sites/60348/slots/298d5/extensions/MSDeploy"; + Requests[4246] = new DefaultHttpContext(); + Requests[4246].RequestServices = CreateServices(); + Requests[4246].Request.Method = "GET"; + Requests[4246].Request.Path = "/subscriptions/79c9cf8b-0d34-/resourceGroups/538ff978-c506-483/providers/Microsoft.Web/sites/31f55/slots/53f9e/migratemysql/status"; + Requests[4247] = new DefaultHttpContext(); + Requests[4247].RequestServices = CreateServices(); + Requests[4247].Request.Method = "POST"; + Requests[4247].Request.Path = "/subscriptions/43b1dd1b-b941-/resourceGroups/20687112-036e-4c6/providers/Microsoft.Web/sites/9f7fc/slots/857e3/networkTrace/start"; + Requests[4248] = new DefaultHttpContext(); + Requests[4248].RequestServices = CreateServices(); + Requests[4248].Request.Method = "POST"; + Requests[4248].Request.Path = "/subscriptions/0c99341a-1aee-/resourceGroups/89a570fe-2d16-478/providers/Microsoft.Web/sites/877d9/slots/93a58/networkTrace/stop"; + Requests[4249] = new DefaultHttpContext(); + Requests[4249].RequestServices = CreateServices(); + Requests[4249].Request.Method = "GET"; + Requests[4249].Request.Path = "/subscriptions/c35b1266-1f98-/resourceGroups/a4fabde7-34a1-42e/providers/Microsoft.Web/sites/745c9/slots/d29c7/privateAccess/virtualNetworks"; + Requests[4250] = new DefaultHttpContext(); + Requests[4250].RequestServices = CreateServices(); + Requests[4250].Request.Method = "PUT"; + Requests[4250].Request.Path = "/subscriptions/e65ebec4-9800-/resourceGroups/8867524e-95bf-4fb/providers/Microsoft.Web/sites/95abc/slots/cad13/privateAccess/virtualNetworks"; + Requests[4251] = new DefaultHttpContext(); + Requests[4251].RequestServices = CreateServices(); + Requests[4251].Request.Method = "GET"; + Requests[4251].Request.Path = "/subscriptions/e592780a-faf4-/resourceGroups/570c8b34-60b3-461/providers/Microsoft.Web/sites/44236/slots/ffc42/resourceHealthMetadata/default"; + Requests[4252] = new DefaultHttpContext(); + Requests[4252].RequestServices = CreateServices(); + Requests[4252].Request.Method = "PUT"; + Requests[4252].Request.Path = "/subscriptions/cf716c85-6a17-/resourceGroups/a32a6e03-dd09-48f/providers/Microsoft.Web/sites/73619/slots/91384/sourcecontrols/web"; + Requests[4253] = new DefaultHttpContext(); + Requests[4253].RequestServices = CreateServices(); + Requests[4253].Request.Method = "GET"; + Requests[4253].Request.Path = "/subscriptions/bbe96f09-ae14-/resourceGroups/9ab81152-5292-4c9/providers/Microsoft.Web/sites/fbd1b/slots/ea348/sourcecontrols/web"; + Requests[4254] = new DefaultHttpContext(); + Requests[4254].RequestServices = CreateServices(); + Requests[4254].Request.Method = "DELETE"; + Requests[4254].Request.Path = "/subscriptions/d3dc52bd-87aa-/resourceGroups/e0928dc3-890f-492/providers/Microsoft.Web/sites/ae7b6/slots/88bee/sourcecontrols/web"; + Requests[4255] = new DefaultHttpContext(); + Requests[4255].RequestServices = CreateServices(); + Requests[4255].Request.Method = "PATCH"; + Requests[4255].Request.Path = "/subscriptions/4bc137bb-a7ef-/resourceGroups/ff20ea30-2f39-490/providers/Microsoft.Web/sites/aff7c/slots/15b3b/sourcecontrols/web"; + Requests[4256] = new DefaultHttpContext(); + Requests[4256].RequestServices = CreateServices(); + Requests[4256].Request.Method = "POST"; + Requests[4256].Request.Path = "/subscriptions/bbd54d5a-857f-/resourceGroups/01807944-9fc6-45a/providers/Microsoft.Automation/automationAccounts/8a1a9042-71dd-4653-8b/runbooks/9efe1777-54/draft/testJob/resume"; + Requests[4257] = new DefaultHttpContext(); + Requests[4257].RequestServices = CreateServices(); + Requests[4257].Request.Method = "POST"; + Requests[4257].Request.Path = "/subscriptions/d30c184a-4400-/resourceGroups/07c77bda-acbf-4e0/providers/Microsoft.Automation/automationAccounts/bf8b45df-3388-438c-86/runbooks/0624116b-0f/draft/testJob/stop"; + Requests[4258] = new DefaultHttpContext(); + Requests[4258].RequestServices = CreateServices(); + Requests[4258].Request.Method = "GET"; + Requests[4258].Request.Path = "/subscriptions/5b740ae9-b90c-/resourceGroups/1f5afec5-041c-461/providers/Microsoft.Automation/automationAccounts/e08f681f-072a-4707-8e/runbooks/37ab5e3e-00/draft/testJob/streams"; + Requests[4259] = new DefaultHttpContext(); + Requests[4259].RequestServices = CreateServices(); + Requests[4259].Request.Method = "POST"; + Requests[4259].Request.Path = "/subscriptions/9003416a-6a91-/resourceGroups/fae6a169-22ff-408/providers/Microsoft.Automation/automationAccounts/2f2468c0-a4c9-41dd-8b/runbooks/946976a1-da/draft/testJob/suspend"; + Requests[4260] = new DefaultHttpContext(); + Requests[4260].RequestServices = CreateServices(); + Requests[4260].Request.Method = "GET"; + Requests[4260].Request.Path = "/subscriptions/a25090fe-a741-/resourceGroups/6ff7fe51-1dec-4e9/providers/Microsoft.ServerManagement/nodes/cab0ed0e/sessions/937c78d/features/powerShellConsole/pssessions"; + Requests[4261] = new DefaultHttpContext(); + Requests[4261].RequestServices = CreateServices(); + Requests[4261].Request.Method = "POST"; + Requests[4261].Request.Path = "/subscriptions/c2f8a439-4309-/resourceGroups/5c7ce02e-1a5e-429/providers/Microsoft.StorSimple/managers/a64114c1-3c/devices/cd578b70-7/securitySettings/default/syncRemoteManagementCertificate"; + Requests[4262] = new DefaultHttpContext(); + Requests[4262].RequestServices = CreateServices(); + Requests[4262].Request.Method = "GET"; + Requests[4262].Request.Path = "/subscriptions/42bc1005-c7d7-/resourceGroups/7d5b9ac5-af67-477/providers/Microsoft.Web/sites/cb690/instances/7fd9c715-f/extensions/MSDeploy/log"; + Requests[4263] = new DefaultHttpContext(); + Requests[4263].RequestServices = CreateServices(); + Requests[4263].Request.Method = "POST"; + Requests[4263].Request.Path = "/subscriptions/47864e9d-419a-/resourceGroups/4b339d80-17b4-47f/providers/Microsoft.Web/sites/ab1e4/slots/73b7a/config/appsettings/list"; + Requests[4264] = new DefaultHttpContext(); + Requests[4264].RequestServices = CreateServices(); + Requests[4264].Request.Method = "POST"; + Requests[4264].Request.Path = "/subscriptions/fcbdeef3-f813-/resourceGroups/7e1eb892-9fdd-4ea/providers/Microsoft.Web/sites/45ecd/slots/7d01a/config/authsettings/list"; + Requests[4265] = new DefaultHttpContext(); + Requests[4265].RequestServices = CreateServices(); + Requests[4265].Request.Method = "POST"; + Requests[4265].Request.Path = "/subscriptions/883930c2-de2e-/resourceGroups/34239e47-9c1f-4c4/providers/Microsoft.Web/sites/48a6f/slots/10e80/config/backup/list"; + Requests[4266] = new DefaultHttpContext(); + Requests[4266].RequestServices = CreateServices(); + Requests[4266].Request.Method = "POST"; + Requests[4266].Request.Path = "/subscriptions/344e20df-2de5-/resourceGroups/e6549230-545a-48d/providers/Microsoft.Web/sites/d55cf/slots/2b413/config/connectionstrings/list"; + Requests[4267] = new DefaultHttpContext(); + Requests[4267].RequestServices = CreateServices(); + Requests[4267].Request.Method = "POST"; + Requests[4267].Request.Path = "/subscriptions/3839ff45-97bc-/resourceGroups/052b523a-adf9-4d6/providers/Microsoft.Web/sites/d5776/slots/88edc/config/metadata/list"; + Requests[4268] = new DefaultHttpContext(); + Requests[4268].RequestServices = CreateServices(); + Requests[4268].Request.Method = "POST"; + Requests[4268].Request.Path = "/subscriptions/9eedc674-7ce2-/resourceGroups/847db486-e2fe-49c/providers/Microsoft.Web/sites/dc2a9/slots/73337/config/publishingcredentials/list"; + Requests[4269] = new DefaultHttpContext(); + Requests[4269].RequestServices = CreateServices(); + Requests[4269].Request.Method = "POST"; + Requests[4269].Request.Path = "/subscriptions/d33e0536-ef83-/resourceGroups/0abaa606-6e91-4c0/providers/Microsoft.Web/sites/24980/slots/a609e/config/pushsettings/list"; + Requests[4270] = new DefaultHttpContext(); + Requests[4270].RequestServices = CreateServices(); + Requests[4270].Request.Method = "GET"; + Requests[4270].Request.Path = "/subscriptions/2c05058f-144b-/resourceGroups/ce037ffb-5244-458/providers/Microsoft.Web/sites/0791c/slots/d7f92/config/web/snapshots"; + Requests[4271] = new DefaultHttpContext(); + Requests[4271].RequestServices = CreateServices(); + Requests[4271].Request.Method = "POST"; + Requests[4271].Request.Path = "/subscriptions/862d9a2d-bfa4-/resourceGroups/116e668a-67b0-48f/providers/Microsoft.Web/sites/9154c/slots/4a3f3/containerlogs/zip/download"; + Requests[4272] = new DefaultHttpContext(); + Requests[4272].RequestServices = CreateServices(); + Requests[4272].Request.Method = "GET"; + Requests[4272].Request.Path = "/subscriptions/04231f85-21de-/resourceGroups/d74a00d1-a538-46e/providers/Microsoft.Web/sites/65ce4/slots/08776/extensions/MSDeploy/log"; + Requests[4273] = new DefaultHttpContext(); + Requests[4273].RequestServices = CreateServices(); + Requests[4273].Request.Method = "GET"; + Requests[4273].Request.Path = "/subscriptions/bcca6820-1b87-/resourceGroups/9fc6d697-717b-488/providers/Microsoft.Web/sites/f5a61/slots/6e659/functions/admin/token"; + Requests[4274] = new DefaultHttpContext(); + Requests[4274].RequestServices = CreateServices(); + Requests[4274].Request.Method = "GET"; + Requests[4274].Request.Path = "/subscriptions/d6dbcbed-1ba3-/resourceGroups/361082b9-85a9-4f7/providers/Microsoft.Automation/automationAccounts/e9845c2d-6e94-4da2-ad/runbooks/aaf4d25c-6c/draft/testJob/streams/fe0ae72c-6a"; + Requests[4275] = new DefaultHttpContext(); + Requests[4275].RequestServices = CreateServices(); + Requests[4275].Request.Method = "PUT"; + Requests[4275].Request.Path = "/subscriptions/3c8998e5-3c3b-/resourceGroups/66dd6110-23df-47f/providers/Microsoft.ServerManagement/nodes/287d6181/sessions/d3912b4/features/powerShellConsole/pssessions/bec626b9-"; + Requests[4276] = new DefaultHttpContext(); + Requests[4276].RequestServices = CreateServices(); + Requests[4276].Request.Method = "GET"; + Requests[4276].Request.Path = "/subscriptions/5f6ad2fd-f2b5-/resourceGroups/64e25aea-7e78-4e6/providers/Microsoft.ServerManagement/nodes/b0f8f7f6/sessions/4ef2ad0/features/powerShellConsole/pssessions/4ff824e9-"; + Requests[4277] = new DefaultHttpContext(); + Requests[4277].RequestServices = CreateServices(); + Requests[4277].Request.Method = "PATCH"; + Requests[4277].Request.Path = "/subscriptions/40ae5759-5ac6-/resourceGroups/8ff62095-5884-42a/providers/Microsoft.ServerManagement/nodes/6ee92b81/sessions/fe92cbb/features/powerShellConsole/pssessions/0fc9b2c5-"; + Requests[4278] = new DefaultHttpContext(); + Requests[4278].RequestServices = CreateServices(); + Requests[4278].Request.Method = "GET"; + Requests[4278].Request.Path = "/subscriptions/eed33d39-5898-/resourceGroups/b8ff06ef-639a-412/providers/Microsoft.Web/sites/772d5/slots/05da5/config/web/snapshots/6e8038e6-b"; + Requests[4279] = new DefaultHttpContext(); + Requests[4279].RequestServices = CreateServices(); + Requests[4279].Request.Method = "POST"; + Requests[4279].Request.Path = "/subscriptions/6ca94f9e-39a3-/resourceGroups/123c1dbf-060a-429/providers/Microsoft.ServerManagement/nodes/da409b73/sessions/2ed0a2d/features/powerShellConsole/pssessions/5a5296ab-/cancel"; + Requests[4280] = new DefaultHttpContext(); + Requests[4280].RequestServices = CreateServices(); + Requests[4280].Request.Method = "POST"; + Requests[4280].Request.Path = "/subscriptions/0591d618-3f0a-/resourceGroups/bac4e063-4ea1-4d8/providers/Microsoft.ServerManagement/nodes/720fc5da/sessions/1f96ed6/features/powerShellConsole/pssessions/064909e6-/invokeCommand"; + Requests[4281] = new DefaultHttpContext(); + Requests[4281].RequestServices = CreateServices(); + Requests[4281].Request.Method = "POST"; + Requests[4281].Request.Path = "/subscriptions/dc67e379-ff8c-/resourceGroups/1dabcc89-df48-40d/providers/Microsoft.ServerManagement/nodes/a2f52b00/sessions/e1b33ab/features/powerShellConsole/pssessions/492922c3-/tab"; + Requests[4282] = new DefaultHttpContext(); + Requests[4282].RequestServices = CreateServices(); + Requests[4282].Request.Method = "POST"; + Requests[4282].Request.Path = "/subscriptions/3a3f5beb-d1f7-/resourceGroups/a39ef0fa-8e8a-415/providers/Microsoft.Web/sites/05c43/slots/5f850/config/web/snapshots/d8b69541-b/recover"; + Requests[4283] = new DefaultHttpContext(); + Requests[4283].RequestServices = CreateServices(); + Requests[4283].Request.Method = "DELETE"; + Requests[4283].Request.Path = "/subscriptions/3003e987-e1ed-/resourceGroups/2cf9f107-/providers/Microsoft.DataMigration/services/ab4ce02a-a7/projects/b5be2ea7-f6/tasks/9e74fb60"; + Requests[4284] = new DefaultHttpContext(); + Requests[4284].RequestServices = CreateServices(); + Requests[4284].Request.Method = "PATCH"; + Requests[4284].Request.Path = "/subscriptions/297af4fd-060c-/resourceGroups/eeb7f41a-/providers/Microsoft.DataMigration/services/bc2ae242-e4/projects/5be90488-07/tasks/f71959c8"; + Requests[4285] = new DefaultHttpContext(); + Requests[4285].RequestServices = CreateServices(); + Requests[4285].Request.Method = "GET"; + Requests[4285].Request.Path = "/subscriptions/32999b2f-4840-/resourceGroups/60db154f-/providers/Microsoft.DataMigration/services/791518bb-6a/projects/c18fe9aa-2f/tasks/857bda96"; + Requests[4286] = new DefaultHttpContext(); + Requests[4286].RequestServices = CreateServices(); + Requests[4286].Request.Method = "PUT"; + Requests[4286].Request.Path = "/subscriptions/d4fd1ac6-c773-/resourceGroups/99cb6e99-/providers/Microsoft.DataMigration/services/f81ed551-7a/projects/b60207c3-b4/tasks/3c4ef4af"; + Requests[4287] = new DefaultHttpContext(); + Requests[4287].RequestServices = CreateServices(); + Requests[4287].Request.Method = "PARAMETERS"; + Requests[4287].Request.Path = "/subscriptions/c410a6bb-a74d-/resourceGroups/57ce5129-/providers/Microsoft.DataMigration/services/8624a17d-28/projects/e001bdf7-16/tasks/0dbdf3cc"; + Requests[4288] = new DefaultHttpContext(); + Requests[4288].RequestServices = CreateServices(); + Requests[4288].Request.Method = "HEAD"; + Requests[4288].Request.Path = "/subscriptions/8d0f95d0-023f-/resourceGroups/636e4704-cf5e-4c3/providers/Microsoft.ApiManagement/service/2308506e-bf/apis/1abd6/diagnostics/2a1513b1-1ea"; + Requests[4289] = new DefaultHttpContext(); + Requests[4289].RequestServices = CreateServices(); + Requests[4289].Request.Method = "PUT"; + Requests[4289].Request.Path = "/subscriptions/58c58208-323e-/resourceGroups/c985085f-8848-45e/providers/Microsoft.ApiManagement/service/55d30973-93/apis/34482/diagnostics/76a6b6a4-69c"; + Requests[4290] = new DefaultHttpContext(); + Requests[4290].RequestServices = CreateServices(); + Requests[4290].Request.Method = "PATCH"; + Requests[4290].Request.Path = "/subscriptions/3419e3ee-2eda-/resourceGroups/da894604-adcd-4d5/providers/Microsoft.ApiManagement/service/bbcdba61-be/apis/48298/diagnostics/c03b67d2-2ca"; + Requests[4291] = new DefaultHttpContext(); + Requests[4291].RequestServices = CreateServices(); + Requests[4291].Request.Method = "DELETE"; + Requests[4291].Request.Path = "/subscriptions/dd345062-5d31-/resourceGroups/156508c6-fa2a-41a/providers/Microsoft.ApiManagement/service/33731b1e-c5/apis/0c8e0/diagnostics/6fe28913-0e1"; + Requests[4292] = new DefaultHttpContext(); + Requests[4292].RequestServices = CreateServices(); + Requests[4292].Request.Method = "GET"; + Requests[4292].Request.Path = "/subscriptions/f001a713-7588-/resourceGroups/0b43cb35-37e3-465/providers/Microsoft.ApiManagement/service/ce981247-73/apis/33bed/diagnostics/a7ad6250-f04"; + Requests[4293] = new DefaultHttpContext(); + Requests[4293].RequestServices = CreateServices(); + Requests[4293].Request.Method = "PUT"; + Requests[4293].Request.Path = "/subscriptions/b99a0cbd-95ff-/resourceGroups/966f0c99-45e7-493/providers/Microsoft.ApiManagement/service/d6c03ee9-5d/apis/a6d2a/issues/6323c14"; + Requests[4294] = new DefaultHttpContext(); + Requests[4294].RequestServices = CreateServices(); + Requests[4294].Request.Method = "GET"; + Requests[4294].Request.Path = "/subscriptions/e94991df-04d0-/resourceGroups/8bea9e7c-9dd0-4ff/providers/Microsoft.ApiManagement/service/5db691b8-a6/apis/19a2f/issues/cdeb1f1"; + Requests[4295] = new DefaultHttpContext(); + Requests[4295].RequestServices = CreateServices(); + Requests[4295].Request.Method = "HEAD"; + Requests[4295].Request.Path = "/subscriptions/873a6e1b-2c98-/resourceGroups/7bac2778-a6dd-402/providers/Microsoft.ApiManagement/service/9ed2af07-b0/apis/a9074/issues/2012323"; + Requests[4296] = new DefaultHttpContext(); + Requests[4296].RequestServices = CreateServices(); + Requests[4296].Request.Method = "DELETE"; + Requests[4296].Request.Path = "/subscriptions/9a50b7bd-bd4d-/resourceGroups/11a720cd-0f99-420/providers/Microsoft.ApiManagement/service/f5fccb09-ad/apis/b49e8/issues/b0a2d34"; + Requests[4297] = new DefaultHttpContext(); + Requests[4297].RequestServices = CreateServices(); + Requests[4297].Request.Method = "PUT"; + Requests[4297].Request.Path = "/subscriptions/6ad1a739-794f-/resourceGroups/10c955bf-93f2-483/providers/Microsoft.ApiManagement/service/952c175e-20/apis/583fa/operations/7bf56dc1-36"; + Requests[4298] = new DefaultHttpContext(); + Requests[4298].RequestServices = CreateServices(); + Requests[4298].Request.Method = "GET"; + Requests[4298].Request.Path = "/subscriptions/6e9f263c-6c31-/resourceGroups/72585735-d9ff-442/providers/Microsoft.ApiManagement/service/09f8ed16-bf/apis/19cd1/operations/e3037973-a4"; + Requests[4299] = new DefaultHttpContext(); + Requests[4299].RequestServices = CreateServices(); + Requests[4299].Request.Method = "HEAD"; + Requests[4299].Request.Path = "/subscriptions/55f9721b-52e4-/resourceGroups/cb396e0f-7025-4f3/providers/Microsoft.ApiManagement/service/0b455117-9a/apis/33b67/operations/d66ddb31-f2"; + Requests[4300] = new DefaultHttpContext(); + Requests[4300].RequestServices = CreateServices(); + Requests[4300].Request.Method = "DELETE"; + Requests[4300].Request.Path = "/subscriptions/8a18cb3a-7ef0-/resourceGroups/5f23a38c-2864-42d/providers/Microsoft.ApiManagement/service/6b0d19ba-d6/apis/56edc/operations/6923dbad-2b"; + Requests[4301] = new DefaultHttpContext(); + Requests[4301].RequestServices = CreateServices(); + Requests[4301].Request.Method = "PATCH"; + Requests[4301].Request.Path = "/subscriptions/85b154c6-393f-/resourceGroups/798d4350-20b5-45d/providers/Microsoft.ApiManagement/service/eac44db7-2e/apis/94a48/operations/7067a307-06"; + Requests[4302] = new DefaultHttpContext(); + Requests[4302].RequestServices = CreateServices(); + Requests[4302].Request.Method = "DELETE"; + Requests[4302].Request.Path = "/subscriptions/726ea3af-29bb-/resourceGroups/2c871a33-733d-486/providers/Microsoft.ApiManagement/service/c8408e00-65/apis/113f9/policies/04996aec"; + Requests[4303] = new DefaultHttpContext(); + Requests[4303].RequestServices = CreateServices(); + Requests[4303].Request.Method = "GET"; + Requests[4303].Request.Path = "/subscriptions/9d0d8db4-0f3b-/resourceGroups/445315b0-d414-4a3/providers/Microsoft.ApiManagement/service/70e8da28-91/apis/cf02c/policies/0a4b6c51"; + Requests[4304] = new DefaultHttpContext(); + Requests[4304].RequestServices = CreateServices(); + Requests[4304].Request.Method = "HEAD"; + Requests[4304].Request.Path = "/subscriptions/00cbf108-b9c0-/resourceGroups/582aaeb6-d18e-435/providers/Microsoft.ApiManagement/service/0932247f-10/apis/8d9b0/policies/9442115d"; + Requests[4305] = new DefaultHttpContext(); + Requests[4305].RequestServices = CreateServices(); + Requests[4305].Request.Method = "PUT"; + Requests[4305].Request.Path = "/subscriptions/63e6811a-ee0b-/resourceGroups/0765d562-2acb-42e/providers/Microsoft.ApiManagement/service/4dcea6b5-77/apis/6903b/policies/c2bb02a1"; + Requests[4306] = new DefaultHttpContext(); + Requests[4306].RequestServices = CreateServices(); + Requests[4306].Request.Method = "PATCH"; + Requests[4306].Request.Path = "/subscriptions/3d456829-acfa-/resourceGroups/cd8d54c8-cfc9-4ac/providers/Microsoft.ApiManagement/service/f18f5ba8-63/apis/efeb1/releases/44fbadb5-"; + Requests[4307] = new DefaultHttpContext(); + Requests[4307].RequestServices = CreateServices(); + Requests[4307].Request.Method = "PUT"; + Requests[4307].Request.Path = "/subscriptions/829fc722-5258-/resourceGroups/431e82c6-69fc-46f/providers/Microsoft.ApiManagement/service/e121265a-a8/apis/af219/releases/02c7f529-"; + Requests[4308] = new DefaultHttpContext(); + Requests[4308].RequestServices = CreateServices(); + Requests[4308].Request.Method = "GET"; + Requests[4308].Request.Path = "/subscriptions/700c4743-2140-/resourceGroups/3d1b1269-cb92-49f/providers/Microsoft.ApiManagement/service/149bd963-b2/apis/75cd2/releases/833c060b-"; + Requests[4309] = new DefaultHttpContext(); + Requests[4309].RequestServices = CreateServices(); + Requests[4309].Request.Method = "DELETE"; + Requests[4309].Request.Path = "/subscriptions/3dc85a3e-0b58-/resourceGroups/334837e6-4f8b-493/providers/Microsoft.ApiManagement/service/a7924908-d3/apis/ff03c/releases/a1818a50-"; + Requests[4310] = new DefaultHttpContext(); + Requests[4310].RequestServices = CreateServices(); + Requests[4310].Request.Method = "PARAMETERS"; + Requests[4310].Request.Path = "/subscriptions/e597238e-6d07-/resourceGroups/e46ee08d-043c-4b0/providers/Microsoft.ApiManagement/service/4a2c5684-0a/apis/e53ce/releases/f057a631-"; + Requests[4311] = new DefaultHttpContext(); + Requests[4311].RequestServices = CreateServices(); + Requests[4311].Request.Method = "HEAD"; + Requests[4311].Request.Path = "/subscriptions/717c04aa-9110-/resourceGroups/5b06794b-016c-480/providers/Microsoft.ApiManagement/service/7c56691d-86/apis/cae75/releases/baeb967e-"; + Requests[4312] = new DefaultHttpContext(); + Requests[4312].RequestServices = CreateServices(); + Requests[4312].Request.Method = "HEAD"; + Requests[4312].Request.Path = "/subscriptions/b090bda8-9f17-/resourceGroups/aee2d28c-b150-41e/providers/Microsoft.ApiManagement/service/c20acbc6-0b/apis/231a6/schemas/38963ec4"; + Requests[4313] = new DefaultHttpContext(); + Requests[4313].RequestServices = CreateServices(); + Requests[4313].Request.Method = "GET"; + Requests[4313].Request.Path = "/subscriptions/b6ceb903-e7ea-/resourceGroups/091e56d2-2b04-4c6/providers/Microsoft.ApiManagement/service/8546fc2f-c1/apis/b278d/schemas/10fd8714"; + Requests[4314] = new DefaultHttpContext(); + Requests[4314].RequestServices = CreateServices(); + Requests[4314].Request.Method = "PUT"; + Requests[4314].Request.Path = "/subscriptions/c1d8e3d8-742f-/resourceGroups/aeb14fba-b2c7-44a/providers/Microsoft.ApiManagement/service/181741cf-88/apis/56258/schemas/51b48917"; + Requests[4315] = new DefaultHttpContext(); + Requests[4315].RequestServices = CreateServices(); + Requests[4315].Request.Method = "DELETE"; + Requests[4315].Request.Path = "/subscriptions/b808e2af-3b4c-/resourceGroups/48b1baab-17f4-424/providers/Microsoft.ApiManagement/service/f6e6a2e0-5d/apis/e2a0c/schemas/a873d73d"; + Requests[4316] = new DefaultHttpContext(); + Requests[4316].RequestServices = CreateServices(); + Requests[4316].Request.Method = "PUT"; + Requests[4316].Request.Path = "/subscriptions/93c97280-1115-/resourceGroups/7af02bc7-8035-472/providers/Microsoft.ApiManagement/service/cd9c7e74-a0/apis/24744/tagDescriptions/e3a85"; + Requests[4317] = new DefaultHttpContext(); + Requests[4317].RequestServices = CreateServices(); + Requests[4317].Request.Method = "GET"; + Requests[4317].Request.Path = "/subscriptions/c62dc5ed-6bca-/resourceGroups/4c0321a3-a0f6-462/providers/Microsoft.ApiManagement/service/65c749cb-28/apis/56714/tagDescriptions/7e382"; + Requests[4318] = new DefaultHttpContext(); + Requests[4318].RequestServices = CreateServices(); + Requests[4318].Request.Method = "HEAD"; + Requests[4318].Request.Path = "/subscriptions/eebafcb8-e2cb-/resourceGroups/2ad0c723-2f2e-40b/providers/Microsoft.ApiManagement/service/a564b238-55/apis/e7646/tagDescriptions/72cc1"; + Requests[4319] = new DefaultHttpContext(); + Requests[4319].RequestServices = CreateServices(); + Requests[4319].Request.Method = "DELETE"; + Requests[4319].Request.Path = "/subscriptions/1e29b489-2597-/resourceGroups/94cbcaf9-aa93-4a6/providers/Microsoft.ApiManagement/service/31880838-2b/apis/12ea1/tagDescriptions/373ca"; + Requests[4320] = new DefaultHttpContext(); + Requests[4320].RequestServices = CreateServices(); + Requests[4320].Request.Method = "DELETE"; + Requests[4320].Request.Path = "/subscriptions/3b2ff7e0-5bd5-/resourceGroups/3ff6fdb8-df9d-4fe/providers/Microsoft.ApiManagement/service/0e1b940d-2c/apis/97ef7/tags/ced89"; + Requests[4321] = new DefaultHttpContext(); + Requests[4321].RequestServices = CreateServices(); + Requests[4321].Request.Method = "PUT"; + Requests[4321].Request.Path = "/subscriptions/7ae78607-aa3f-/resourceGroups/705a341e-68c5-400/providers/Microsoft.ApiManagement/service/299d71e3-db/apis/9591a/tags/6a522"; + Requests[4322] = new DefaultHttpContext(); + Requests[4322].RequestServices = CreateServices(); + Requests[4322].Request.Method = "GET"; + Requests[4322].Request.Path = "/subscriptions/2ad71bd4-778c-/resourceGroups/e516987c-9301-4da/providers/Microsoft.ApiManagement/service/b75363f8-80/apis/e7e61/tags/d76c0"; + Requests[4323] = new DefaultHttpContext(); + Requests[4323].RequestServices = CreateServices(); + Requests[4323].Request.Method = "HEAD"; + Requests[4323].Request.Path = "/subscriptions/05c3b140-6ade-/resourceGroups/cdacf19e-b259-4e2/providers/Microsoft.ApiManagement/service/91584eba-1f/apis/a2166/tags/b0328"; + Requests[4324] = new DefaultHttpContext(); + Requests[4324].RequestServices = CreateServices(); + Requests[4324].Request.Method = "DELETE"; + Requests[4324].Request.Path = "/subscriptions/ae291f0f-f2ca-/resourceGroups/541d0152-4409-462/providers/Microsoft.ApiManagement/service/ca747134-2d/diagnostics/bfdab92c-bc8/loggers/b27b26b4"; + Requests[4325] = new DefaultHttpContext(); + Requests[4325].RequestServices = CreateServices(); + Requests[4325].Request.Method = "HEAD"; + Requests[4325].Request.Path = "/subscriptions/e4f7ca52-6696-/resourceGroups/1898b09f-5c9a-4e2/providers/Microsoft.ApiManagement/service/b1ba3a72-c0/diagnostics/9d61cb0e-2cb/loggers/6cad41a7"; + Requests[4326] = new DefaultHttpContext(); + Requests[4326].RequestServices = CreateServices(); + Requests[4326].Request.Method = "PUT"; + Requests[4326].Request.Path = "/subscriptions/809eac6c-701b-/resourceGroups/af78f886-9109-460/providers/Microsoft.ApiManagement/service/46f7f232-f7/diagnostics/8f89ecf4-de5/loggers/08d1c081"; + Requests[4327] = new DefaultHttpContext(); + Requests[4327].RequestServices = CreateServices(); + Requests[4327].Request.Method = "PUT"; + Requests[4327].Request.Path = "/subscriptions/3d848b09-fb1a-/resourceGroups/3a39eda7-43fb-49a/providers/Microsoft.ApiManagement/service/3978279a-03/groups/66e5aba/users/260a1"; + Requests[4328] = new DefaultHttpContext(); + Requests[4328].RequestServices = CreateServices(); + Requests[4328].Request.Method = "HEAD"; + Requests[4328].Request.Path = "/subscriptions/2e7ec089-1ffe-/resourceGroups/1a76991f-204a-464/providers/Microsoft.ApiManagement/service/029f0db2-9a/groups/099c053/users/35b50"; + Requests[4329] = new DefaultHttpContext(); + Requests[4329].RequestServices = CreateServices(); + Requests[4329].Request.Method = "DELETE"; + Requests[4329].Request.Path = "/subscriptions/529eb0c5-58e7-/resourceGroups/3232070b-256c-4c3/providers/Microsoft.ApiManagement/service/30a25078-a5/groups/e56f0ff/users/b72ef"; + Requests[4330] = new DefaultHttpContext(); + Requests[4330].RequestServices = CreateServices(); + Requests[4330].Request.Method = "HEAD"; + Requests[4330].Request.Path = "/subscriptions/9765d347-8b91-/resourceGroups/21641c89-e593-47f/providers/Microsoft.ApiManagement/service/7bae0e71-ae/notifications/b2245f4a-3b36-45/recipientEmails/d2967"; + Requests[4331] = new DefaultHttpContext(); + Requests[4331].RequestServices = CreateServices(); + Requests[4331].Request.Method = "PUT"; + Requests[4331].Request.Path = "/subscriptions/0d038a42-cb6b-/resourceGroups/4311acd8-2372-4c0/providers/Microsoft.ApiManagement/service/59745d83-62/notifications/1b5e92ff-a0fe-4a/recipientEmails/80c1b"; + Requests[4332] = new DefaultHttpContext(); + Requests[4332].RequestServices = CreateServices(); + Requests[4332].Request.Method = "DELETE"; + Requests[4332].Request.Path = "/subscriptions/c4cbb2d0-8d5f-/resourceGroups/d88535ec-f810-4d2/providers/Microsoft.ApiManagement/service/031e1a52-20/notifications/1400aed9-98b3-46/recipientEmails/6971f"; + Requests[4333] = new DefaultHttpContext(); + Requests[4333].RequestServices = CreateServices(); + Requests[4333].Request.Method = "HEAD"; + Requests[4333].Request.Path = "/subscriptions/13130a41-2be8-/resourceGroups/923aa577-adbf-4ae/providers/Microsoft.ApiManagement/service/1f11acd3-bd/notifications/128b2b2d-551b-4b/recipientUsers/98ada"; + Requests[4334] = new DefaultHttpContext(); + Requests[4334].RequestServices = CreateServices(); + Requests[4334].Request.Method = "DELETE"; + Requests[4334].Request.Path = "/subscriptions/151b89a5-fd5a-/resourceGroups/c6959186-23c3-411/providers/Microsoft.ApiManagement/service/81463d89-cf/notifications/6b68969c-000b-4d/recipientUsers/5e9f4"; + Requests[4335] = new DefaultHttpContext(); + Requests[4335].RequestServices = CreateServices(); + Requests[4335].Request.Method = "PUT"; + Requests[4335].Request.Path = "/subscriptions/efe97d9a-6533-/resourceGroups/c44c37bd-db4d-447/providers/Microsoft.ApiManagement/service/5e9337cf-b2/notifications/117fa284-9afd-4f/recipientUsers/82b35"; + Requests[4336] = new DefaultHttpContext(); + Requests[4336].RequestServices = CreateServices(); + Requests[4336].Request.Method = "DELETE"; + Requests[4336].Request.Path = "/subscriptions/07c33d78-88e1-/resourceGroups/8e0afb6f-c9be-4de/providers/Microsoft.ApiManagement/service/45259e93-74/products/edee6945-/apis/574b4"; + Requests[4337] = new DefaultHttpContext(); + Requests[4337].RequestServices = CreateServices(); + Requests[4337].Request.Method = "HEAD"; + Requests[4337].Request.Path = "/subscriptions/2e2f47c3-9af0-/resourceGroups/f0e47984-606e-485/providers/Microsoft.ApiManagement/service/bba152f6-33/products/711b25b3-/apis/687cd"; + Requests[4338] = new DefaultHttpContext(); + Requests[4338].RequestServices = CreateServices(); + Requests[4338].Request.Method = "PUT"; + Requests[4338].Request.Path = "/subscriptions/702d533e-946a-/resourceGroups/c135110f-e422-4b0/providers/Microsoft.ApiManagement/service/94067196-eb/products/e2b796e4-/apis/d81b1"; + Requests[4339] = new DefaultHttpContext(); + Requests[4339].RequestServices = CreateServices(); + Requests[4339].Request.Method = "PUT"; + Requests[4339].Request.Path = "/subscriptions/2821d6b9-98bb-/resourceGroups/46cdbbbe-e5a0-40f/providers/Microsoft.ApiManagement/service/eb70332a-03/products/b7bb9fee-/groups/69c20c2"; + Requests[4340] = new DefaultHttpContext(); + Requests[4340].RequestServices = CreateServices(); + Requests[4340].Request.Method = "HEAD"; + Requests[4340].Request.Path = "/subscriptions/f1f82150-dabe-/resourceGroups/d87877a2-369a-4ee/providers/Microsoft.ApiManagement/service/3afc00e8-8d/products/dad5ea6d-/groups/a465f97"; + Requests[4341] = new DefaultHttpContext(); + Requests[4341].RequestServices = CreateServices(); + Requests[4341].Request.Method = "DELETE"; + Requests[4341].Request.Path = "/subscriptions/64312b63-0289-/resourceGroups/4c32543d-17ef-4f0/providers/Microsoft.ApiManagement/service/d9fcce21-3f/products/e17ffd52-/groups/fa95cf7"; + Requests[4342] = new DefaultHttpContext(); + Requests[4342].RequestServices = CreateServices(); + Requests[4342].Request.Method = "GET"; + Requests[4342].Request.Path = "/subscriptions/0ce37f16-e32a-/resourceGroups/3cfd8846-ae18-499/providers/Microsoft.ApiManagement/service/1df79e6f-3c/products/22d83510-/policies/1353bae7"; + Requests[4343] = new DefaultHttpContext(); + Requests[4343].RequestServices = CreateServices(); + Requests[4343].Request.Method = "HEAD"; + Requests[4343].Request.Path = "/subscriptions/dd096144-35d7-/resourceGroups/01f20cac-01fa-49a/providers/Microsoft.ApiManagement/service/6f571c7e-a8/products/4b732021-/policies/a5a2ae4e"; + Requests[4344] = new DefaultHttpContext(); + Requests[4344].RequestServices = CreateServices(); + Requests[4344].Request.Method = "DELETE"; + Requests[4344].Request.Path = "/subscriptions/f3a377b5-87f7-/resourceGroups/70d1ef16-8c13-49d/providers/Microsoft.ApiManagement/service/5454f3c4-d9/products/ee3f3ca3-/policies/6ca4a6cc"; + Requests[4345] = new DefaultHttpContext(); + Requests[4345].RequestServices = CreateServices(); + Requests[4345].Request.Method = "PUT"; + Requests[4345].Request.Path = "/subscriptions/620286ae-4d90-/resourceGroups/4fc3d8aa-e1b4-49b/providers/Microsoft.ApiManagement/service/9b2d58d8-0b/products/297050a0-/policies/8326bd1a"; + Requests[4346] = new DefaultHttpContext(); + Requests[4346].RequestServices = CreateServices(); + Requests[4346].Request.Method = "DELETE"; + Requests[4346].Request.Path = "/subscriptions/1f9d6741-e2ab-/resourceGroups/cfded6a3-8cf2-48f/providers/Microsoft.ApiManagement/service/c991e006-08/products/f97fbb01-/tags/17604"; + Requests[4347] = new DefaultHttpContext(); + Requests[4347].RequestServices = CreateServices(); + Requests[4347].Request.Method = "HEAD"; + Requests[4347].Request.Path = "/subscriptions/319c2a91-b76e-/resourceGroups/7a95dd78-ecc6-4ca/providers/Microsoft.ApiManagement/service/a894c065-11/products/c086c8c8-/tags/02083"; + Requests[4348] = new DefaultHttpContext(); + Requests[4348].RequestServices = CreateServices(); + Requests[4348].Request.Method = "PUT"; + Requests[4348].Request.Path = "/subscriptions/f1d3b5f1-04dc-/resourceGroups/7ee152f5-ae29-4d8/providers/Microsoft.ApiManagement/service/30e00323-50/products/c06a2d7d-/tags/8c649"; + Requests[4349] = new DefaultHttpContext(); + Requests[4349].RequestServices = CreateServices(); + Requests[4349].Request.Method = "GET"; + Requests[4349].Request.Path = "/subscriptions/bd00ba50-463c-/resourceGroups/800f02be-27fe-4b0/providers/Microsoft.ApiManagement/service/dd924dc7-06/products/11d84ff0-/tags/c1db0"; + Requests[4350] = new DefaultHttpContext(); + Requests[4350].RequestServices = CreateServices(); + Requests[4350].Request.Method = "PATCH"; + Requests[4350].Request.Path = "/subscriptions/10156ece-3476-/resourceGroups/4c4f977f-b7ac-480/providers/Microsoft.ApiManagement/service/ca055d6f-0b/quotas/f0467e9c-a0a1-4/periods/f6beab4b-06ba-"; + Requests[4351] = new DefaultHttpContext(); + Requests[4351].RequestServices = CreateServices(); + Requests[4351].Request.Method = "GET"; + Requests[4351].Request.Path = "/subscriptions/ccb70350-4936-/resourceGroups/da24846d-b0d8-4b7/providers/Microsoft.ApiManagement/service/f52fd071-f8/quotas/5d4fecc0-bdd8-4/periods/20b74e46-ab74-"; + Requests[4352] = new DefaultHttpContext(); + Requests[4352].RequestServices = CreateServices(); + Requests[4352].Request.Method = "GET"; + Requests[4352].Request.Path = "/subscriptions/87668fa0-f701-/resourceGroups/24faa827-1305-45b/providers/Microsoft.Automation/automationAccounts/f8d9784b-db69-458f-93/compilationjobs/4ea6d/streams/5cb6e1e7-7d"; + Requests[4353] = new DefaultHttpContext(); + Requests[4353].RequestServices = CreateServices(); + Requests[4353].Request.Method = "GET"; + Requests[4353].Request.Path = "/subscriptions/1b496e5e-88bd-/resourceGroups/6e5e9d99-d36f-46d/providers/Microsoft.Automation/automationAccounts/fb87dcee-2201-4688-80/jobs/b7aa4/streams/e8efb90e-e3"; + Requests[4354] = new DefaultHttpContext(); + Requests[4354].RequestServices = CreateServices(); + Requests[4354].Request.Method = "GET"; + Requests[4354].Request.Path = "/subscriptions/35d42db3-aa4c-/resourceGroups/de197673-2f4a-4e2/providers/Microsoft.Automation/automationAccounts/9e20b6b3-b2ad-4dde-b9/modules/9486c622-d/activities/a784b204-4fa"; + Requests[4355] = new DefaultHttpContext(); + Requests[4355].RequestServices = CreateServices(); + Requests[4355].Request.Method = "GET"; + Requests[4355].Request.Path = "/subscriptions/fb383b2d-cb50-/resourceGroups/86f41eaa-2994-480/providers/Microsoft.Automation/automationAccounts/85d5430a-f416-48c4-82/nodes/dd417b/reports/99f7535e"; + Requests[4356] = new DefaultHttpContext(); + Requests[4356].RequestServices = CreateServices(); + Requests[4356].Request.Method = "GET"; + Requests[4356].Request.Path = "/subscriptions/72e7681e-afe8-/resourceGroups/af04ed61-54e9-4ca/providers/Microsoft.Automation/automationAccounts/763e482e-d8ae-48bf-87/sourceControls/2f77152a-4303-414/sourceControlSyncJobs/9896b835-6590-4111-9b2"; + Requests[4357] = new DefaultHttpContext(); + Requests[4357].RequestServices = CreateServices(); + Requests[4357].Request.Method = "PUT"; + Requests[4357].Request.Path = "/subscriptions/f5c8988c-dfcc-/resourceGroups/2231c03a-5d4b-441/providers/Microsoft.Automation/automationAccounts/3471dcdb-8a9e-4423-92/sourceControls/164b4ded-9250-4c7/sourceControlSyncJobs/a3bf6222-3e0b-4f68-aab"; + Requests[4358] = new DefaultHttpContext(); + Requests[4358].RequestServices = CreateServices(); + Requests[4358].Request.Method = "GET"; + Requests[4358].Request.Path = "/subscriptions/fcfd7893-83df-/resourceGroups/cd374742-2791-488/providers/Microsoft.Batch/batchAccounts/e420e6b7-20/applications/5a5435b7-74a3/versions/209fa88"; + Requests[4359] = new DefaultHttpContext(); + Requests[4359].RequestServices = CreateServices(); + Requests[4359].Request.Method = "PUT"; + Requests[4359].Request.Path = "/subscriptions/fb1a33cc-aaee-/resourceGroups/07c7a323-4540-431/providers/Microsoft.Batch/batchAccounts/f5eec4bc-c7/applications/826c4754-b69b/versions/c4da47f"; + Requests[4360] = new DefaultHttpContext(); + Requests[4360].RequestServices = CreateServices(); + Requests[4360].Request.Method = "DELETE"; + Requests[4360].Request.Path = "/subscriptions/cace4d43-5177-/resourceGroups/66a6d137-0cf1-4cd/providers/Microsoft.Batch/batchAccounts/66ac9b49-c2/applications/ed6c67ab-0500/versions/65feb66"; + Requests[4361] = new DefaultHttpContext(); + Requests[4361].RequestServices = CreateServices(); + Requests[4361].Request.Method = "GET"; + Requests[4361].Request.Path = "/subscriptions/c7243f92-c2f3-/resourceGroups/5ce9bbac-782a-43e/providers/Microsoft.BatchAI/workspaces/e9427097-c028/experiments/f704066c-7db8-/jobs/4b9f561"; + Requests[4362] = new DefaultHttpContext(); + Requests[4362].RequestServices = CreateServices(); + Requests[4362].Request.Method = "PUT"; + Requests[4362].Request.Path = "/subscriptions/bea2215b-0a45-/resourceGroups/ae235a06-048e-4bb/providers/Microsoft.BatchAI/workspaces/823fba45-ddd7/experiments/1e6e9e28-fce2-/jobs/00bc81e"; + Requests[4363] = new DefaultHttpContext(); + Requests[4363].RequestServices = CreateServices(); + Requests[4363].Request.Method = "DELETE"; + Requests[4363].Request.Path = "/subscriptions/25a4a196-9deb-/resourceGroups/34f42d78-f795-4b1/providers/Microsoft.BatchAI/workspaces/27ce25f1-5275/experiments/6b94db1a-275a-/jobs/4a334fd"; + Requests[4364] = new DefaultHttpContext(); + Requests[4364].RequestServices = CreateServices(); + Requests[4364].Request.Method = "GET"; + Requests[4364].Request.Path = "/subscriptions/de4f112d-2188-/resourceGroups/b8bf6b7a-7cf7-40d/providers/Microsoft.Cdn/profiles/66733fd4-c9/endpoints/2bb68f63-7d5/customDomains/9ca6fc1d-bf16-47"; + Requests[4365] = new DefaultHttpContext(); + Requests[4365].RequestServices = CreateServices(); + Requests[4365].Request.Method = "PUT"; + Requests[4365].Request.Path = "/subscriptions/1ac88c51-a3ea-/resourceGroups/28b287bc-0ca8-43a/providers/Microsoft.Cdn/profiles/b01e7bc0-5c/endpoints/9a290ecb-95e/customDomains/94e84a36-3e28-4c"; + Requests[4366] = new DefaultHttpContext(); + Requests[4366].RequestServices = CreateServices(); + Requests[4366].Request.Method = "DELETE"; + Requests[4366].Request.Path = "/subscriptions/877c493e-03c6-/resourceGroups/786d1b4c-a2ba-47b/providers/Microsoft.Cdn/profiles/636bf573-e6/endpoints/72ac1bdc-699/customDomains/431c1fdd-d772-48"; + Requests[4367] = new DefaultHttpContext(); + Requests[4367].RequestServices = CreateServices(); + Requests[4367].Request.Method = "PATCH"; + Requests[4367].Request.Path = "/subscriptions/3f4d7750-8126-/resourceGroups/db676599-b3ba-4d9/providers/Microsoft.Cdn/profiles/a9aba429-6f/endpoints/dbef7e48-ba2/customDomains/c15fd34a-0e62-46"; + Requests[4368] = new DefaultHttpContext(); + Requests[4368].RequestServices = CreateServices(); + Requests[4368].Request.Method = "DELETE"; + Requests[4368].Request.Path = "/subscriptions/b7d94508-a829-/resourceGroups/e9d0712c-154b-415/providers/Microsoft.Cdn/profiles/97934019-80/endpoints/27e53af0-28d/origins/3c3db66d-3"; + Requests[4369] = new DefaultHttpContext(); + Requests[4369].RequestServices = CreateServices(); + Requests[4369].Request.Method = "PATCH"; + Requests[4369].Request.Path = "/subscriptions/f0383acc-ddff-/resourceGroups/a25c1ada-779b-422/providers/Microsoft.Cdn/profiles/d01ff87b-b8/endpoints/da5827eb-f6e/origins/1be6d6b2-1"; + Requests[4370] = new DefaultHttpContext(); + Requests[4370].RequestServices = CreateServices(); + Requests[4370].Request.Method = "GET"; + Requests[4370].Request.Path = "/subscriptions/3d7f770a-e3f9-/resourceGroups/4583df72-618c-4dd/providers/Microsoft.Cdn/profiles/606afd8c-6b/endpoints/5fd24a00-6a8/origins/cb752370-0"; + Requests[4371] = new DefaultHttpContext(); + Requests[4371].RequestServices = CreateServices(); + Requests[4371].Request.Method = "PUT"; + Requests[4371].Request.Path = "/subscriptions/aecee748-817f-/resourceGroups/a464dc61-c0aa-403/providers/Microsoft.Cdn/profiles/0836fa78-30/endpoints/c3cf7adc-260/origins/d2791f4a-2"; + Requests[4372] = new DefaultHttpContext(); + Requests[4372].RequestServices = CreateServices(); + Requests[4372].Request.Method = "PUT"; + Requests[4372].Request.Path = "/subscriptions/b2e19f18-e3c6-/resourceGroups/b79f1d27-83c1-495/providers/Microsoft.Compute/galleries/65a5a3ee-c1/images/6d1c18af-8913-4e/versions/c8deadbf-6ed1-4886-875e"; + Requests[4373] = new DefaultHttpContext(); + Requests[4373].RequestServices = CreateServices(); + Requests[4373].Request.Method = "GET"; + Requests[4373].Request.Path = "/subscriptions/170fc540-970c-/resourceGroups/c392aae3-5ef6-492/providers/Microsoft.Compute/galleries/119ad7f0-55/images/4ee2a8f3-5e6e-48/versions/c31cf077-77fc-442c-b668"; + Requests[4374] = new DefaultHttpContext(); + Requests[4374].RequestServices = CreateServices(); + Requests[4374].Request.Method = "DELETE"; + Requests[4374].Request.Path = "/subscriptions/7ef1753f-4be5-/resourceGroups/04621af5-230f-469/providers/Microsoft.Compute/galleries/0050133f-84/images/863d9591-97ae-4a/versions/705911c3-47cb-4a0f-ae9f"; + Requests[4375] = new DefaultHttpContext(); + Requests[4375].RequestServices = CreateServices(); + Requests[4375].Request.Method = "GET"; + Requests[4375].Request.Path = "/subscriptions/0b557ebd-b017-/resourceGroups/4916d78a-8bb2-41d/providers/microsoft.Compute/virtualMachineScaleSets/9de76e66-2804-4f25-91fb-34/virtualMachines/6ddc6e01-9b5e-4a1e-/networkInterfaces/dee08e48-87e5-430f-a"; + Requests[4376] = new DefaultHttpContext(); + Requests[4376].RequestServices = CreateServices(); + Requests[4376].Request.Method = "PATCH"; + Requests[4376].Request.Path = "/subscriptions/c59109c6-9354-/resourceGroups/8ff303cd-b10e-49a/providers/Microsoft.ContainerRegistry/registries/f772bdf2-951/buildTasks/87460e6d-dccb/steps/d88eb8cb"; + Requests[4377] = new DefaultHttpContext(); + Requests[4377].RequestServices = CreateServices(); + Requests[4377].Request.Method = "GET"; + Requests[4377].Request.Path = "/subscriptions/a72bb62c-479d-/resourceGroups/88d53526-1bcb-4be/providers/Microsoft.ContainerRegistry/registries/4586b30e-850/buildTasks/5bd5c678-36e8/steps/d4887131"; + Requests[4378] = new DefaultHttpContext(); + Requests[4378].RequestServices = CreateServices(); + Requests[4378].Request.Method = "PUT"; + Requests[4378].Request.Path = "/subscriptions/e21a2114-7b47-/resourceGroups/f877b5ed-123f-44a/providers/Microsoft.ContainerRegistry/registries/ba676020-a4b/buildTasks/0b3ac179-c754/steps/48f438a9"; + Requests[4379] = new DefaultHttpContext(); + Requests[4379].RequestServices = CreateServices(); + Requests[4379].Request.Method = "DELETE"; + Requests[4379].Request.Path = "/subscriptions/dfa96d4c-191a-/resourceGroups/f2bdde56-69b3-4fb/providers/Microsoft.ContainerRegistry/registries/592ab436-2d9/buildTasks/c7ab3ac4-d330/steps/b0cb6f5e"; + Requests[4380] = new DefaultHttpContext(); + Requests[4380].RequestServices = CreateServices(); + Requests[4380].Request.Method = "PUT"; + Requests[4380].Request.Path = "/subscriptions/8040ce12-cd3e-/resourceGroups/93292649-51a6-453/providers/Microsoft.CustomerInsights/hubs/aac9066/connectors/dae306fd-fe4c/mappings/e4889a10-3b"; + Requests[4381] = new DefaultHttpContext(); + Requests[4381].RequestServices = CreateServices(); + Requests[4381].Request.Method = "GET"; + Requests[4381].Request.Path = "/subscriptions/bd930bc4-1fe8-/resourceGroups/dd74914e-e6f8-405/providers/Microsoft.CustomerInsights/hubs/4cd3fc0/connectors/1982b550-7d5a/mappings/6844bbf8-a3"; + Requests[4382] = new DefaultHttpContext(); + Requests[4382].RequestServices = CreateServices(); + Requests[4382].Request.Method = "DELETE"; + Requests[4382].Request.Path = "/subscriptions/e012df12-c69f-/resourceGroups/2947851e-a2e5-414/providers/Microsoft.CustomerInsights/hubs/9e7453c/connectors/0d0c73fd-8db6/mappings/86dc631d-fc"; + Requests[4383] = new DefaultHttpContext(); + Requests[4383].RequestServices = CreateServices(); + Requests[4383].Request.Method = "PATCH"; + Requests[4383].Request.Path = "/subscriptions/aae6bb09-4448-/resourceGroups/1a6a8699-bcb8-4d9/providers/Microsoft.DataFactory/factories/98aa12e1-18/integrationRuntimes/6716e56c-2a6e-4e54-971/nodes/a7e8867e"; + Requests[4384] = new DefaultHttpContext(); + Requests[4384].RequestServices = CreateServices(); + Requests[4384].Request.Method = "DELETE"; + Requests[4384].Request.Path = "/subscriptions/35753c21-7017-/resourceGroups/22d0e14d-1d8b-42f/providers/Microsoft.DataFactory/factories/1d2a807d-7a/integrationRuntimes/54a78c31-1e60-4536-afe/nodes/f40a5419"; + Requests[4385] = new DefaultHttpContext(); + Requests[4385].RequestServices = CreateServices(); + Requests[4385].Request.Method = "GET"; + Requests[4385].Request.Path = "/subscriptions/210a82d9-df8d-/resourceGroups/b6dbd9eb-9ea1-409/providers/Microsoft.DataLakeAnalytics/accounts/634e4e8f-5a/storageAccounts/a32c4170-3d6f-48ef/containers/77df7014-02f6"; + Requests[4386] = new DefaultHttpContext(); + Requests[4386].RequestServices = CreateServices(); + Requests[4386].Request.Method = "GET"; + Requests[4386].Request.Path = "/subscriptions/9eb6a51b-bb75-/resourceGroups/53e2b57d-be74-40d/providers/Microsoft.Devices/IotHubs/db22610d-0fd/eventHubEndpoints/18039d46-0ac3-45a4-9/ConsumerGroups/3659a"; + Requests[4387] = new DefaultHttpContext(); + Requests[4387].RequestServices = CreateServices(); + Requests[4387].Request.Method = "PUT"; + Requests[4387].Request.Path = "/subscriptions/11dc93ec-c6da-/resourceGroups/079c5553-0a1a-452/providers/Microsoft.Devices/IotHubs/61c5ea31-488/eventHubEndpoints/4b6a81ac-561a-4ab9-b/ConsumerGroups/a48b1"; + Requests[4388] = new DefaultHttpContext(); + Requests[4388].RequestServices = CreateServices(); + Requests[4388].Request.Method = "DELETE"; + Requests[4388].Request.Path = "/subscriptions/46d3c8e0-291a-/resourceGroups/5ad1e39a-4b21-42c/providers/Microsoft.Devices/IotHubs/6ff96c89-877/eventHubEndpoints/3ac2445e-ee74-4217-9/ConsumerGroups/d9166"; + Requests[4389] = new DefaultHttpContext(); + Requests[4389].RequestServices = CreateServices(); + Requests[4389].Request.Method = "GET"; + Requests[4389].Request.Path = "/subscriptions/2185bd6a-0f13-/resourceGroups/1d632f01-ddfb-495/providers/Microsoft.DevTestLab/labs/8110b0c/artifactsources/44cd9798-e4b1-4204/armtemplates/b18a2"; + Requests[4390] = new DefaultHttpContext(); + Requests[4390].RequestServices = CreateServices(); + Requests[4390].Request.Method = "GET"; + Requests[4390].Request.Path = "/subscriptions/29cf2561-6066-/resourceGroups/c1117e1d-8c2e-485/providers/Microsoft.DevTestLab/labs/b6a9ed8/artifactsources/446134f0-36ce-4e6f/artifacts/31e7e"; + Requests[4391] = new DefaultHttpContext(); + Requests[4391].RequestServices = CreateServices(); + Requests[4391].Request.Method = "GET"; + Requests[4391].Request.Path = "/subscriptions/30dace52-2c7f-/resourceGroups/208871a2-a748-477/providers/Microsoft.DevTestLab/labs/744545f/policysets/915c53e9-c1d8/policies/64030"; + Requests[4392] = new DefaultHttpContext(); + Requests[4392].RequestServices = CreateServices(); + Requests[4392].Request.Method = "PUT"; + Requests[4392].Request.Path = "/subscriptions/7e8eb124-f0a0-/resourceGroups/e7d8dceb-b2fc-401/providers/Microsoft.DevTestLab/labs/84c1a71/policysets/2e4a68a1-1acd/policies/3332e"; + Requests[4393] = new DefaultHttpContext(); + Requests[4393].RequestServices = CreateServices(); + Requests[4393].Request.Method = "DELETE"; + Requests[4393].Request.Path = "/subscriptions/5cf0d26e-da40-/resourceGroups/5129db8d-1e64-4f5/providers/Microsoft.DevTestLab/labs/9a3705b/policysets/164e8031-57ea/policies/65928"; + Requests[4394] = new DefaultHttpContext(); + Requests[4394].RequestServices = CreateServices(); + Requests[4394].Request.Method = "PATCH"; + Requests[4394].Request.Path = "/subscriptions/71246fdc-d470-/resourceGroups/05a1345b-1490-442/providers/Microsoft.DevTestLab/labs/6e019ac/policysets/f3305056-e8f1/policies/d8f14"; + Requests[4395] = new DefaultHttpContext(); + Requests[4395].RequestServices = CreateServices(); + Requests[4395].Request.Method = "PUT"; + Requests[4395].Request.Path = "/subscriptions/a9a7a1dc-c7eb-/resourceGroups/27ca4ac1-34dd-403/providers/Microsoft.DevTestLab/labs/df542c4/users/9c7c53f8/disks/2b935"; + Requests[4396] = new DefaultHttpContext(); + Requests[4396].RequestServices = CreateServices(); + Requests[4396].Request.Method = "DELETE"; + Requests[4396].Request.Path = "/subscriptions/66e07458-9bf5-/resourceGroups/170df48c-1e8c-495/providers/Microsoft.DevTestLab/labs/7f7637a/users/a6c3b093/disks/d86fb"; + Requests[4397] = new DefaultHttpContext(); + Requests[4397].RequestServices = CreateServices(); + Requests[4397].Request.Method = "GET"; + Requests[4397].Request.Path = "/subscriptions/07e38586-2b83-/resourceGroups/9735f5e1-e67d-4eb/providers/Microsoft.DevTestLab/labs/6d2c12c/users/160d1010/disks/40a8a"; + Requests[4398] = new DefaultHttpContext(); + Requests[4398].RequestServices = CreateServices(); + Requests[4398].Request.Method = "DELETE"; + Requests[4398].Request.Path = "/subscriptions/9089a805-3477-/resourceGroups/bfac1388-7792-449/providers/Microsoft.DevTestLab/labs/5195230/users/fd2645b5/environments/08598"; + Requests[4399] = new DefaultHttpContext(); + Requests[4399].RequestServices = CreateServices(); + Requests[4399].Request.Method = "GET"; + Requests[4399].Request.Path = "/subscriptions/2f8dc9ea-5aab-/resourceGroups/1fb4b269-49f7-416/providers/Microsoft.DevTestLab/labs/bd42b53/users/2d71af8c/environments/33b3f"; + Requests[4400] = new DefaultHttpContext(); + Requests[4400].RequestServices = CreateServices(); + Requests[4400].Request.Method = "PUT"; + Requests[4400].Request.Path = "/subscriptions/0ff2f1ec-ec91-/resourceGroups/b3e89b93-db08-43b/providers/Microsoft.DevTestLab/labs/03d5abf/users/fc1b0fcd/environments/1b990"; + Requests[4401] = new DefaultHttpContext(); + Requests[4401].RequestServices = CreateServices(); + Requests[4401].Request.Method = "GET"; + Requests[4401].Request.Path = "/subscriptions/8bb11d9e-8b5a-/resourceGroups/16fe87c1-6a29-429/providers/Microsoft.DevTestLab/labs/c9a336c/users/b45f3994/secrets/bd2ac"; + Requests[4402] = new DefaultHttpContext(); + Requests[4402].RequestServices = CreateServices(); + Requests[4402].Request.Method = "PUT"; + Requests[4402].Request.Path = "/subscriptions/945daed6-c686-/resourceGroups/c1954ee5-41e7-49c/providers/Microsoft.DevTestLab/labs/4717f87/users/b1b37128/secrets/d4601"; + Requests[4403] = new DefaultHttpContext(); + Requests[4403].RequestServices = CreateServices(); + Requests[4403].Request.Method = "DELETE"; + Requests[4403].Request.Path = "/subscriptions/fb8c5a9c-69dd-/resourceGroups/21c20fef-ec96-4f5/providers/Microsoft.DevTestLab/labs/60dc217/users/87a703b5/secrets/79767"; + Requests[4404] = new DefaultHttpContext(); + Requests[4404].RequestServices = CreateServices(); + Requests[4404].Request.Method = "GET"; + Requests[4404].Request.Path = "/subscriptions/e13f5994-d706-/resourceGroups/9d4de131-4b62-457/providers/Microsoft.DevTestLab/labs/de839f2/virtualmachines/df0edf4f-6f59-4324/schedules/a06a4"; + Requests[4405] = new DefaultHttpContext(); + Requests[4405].RequestServices = CreateServices(); + Requests[4405].Request.Method = "PUT"; + Requests[4405].Request.Path = "/subscriptions/78e6ff0b-3c55-/resourceGroups/f6c4a64b-5815-4f6/providers/Microsoft.DevTestLab/labs/6c02510/virtualmachines/51d8297e-5aa2-446f/schedules/3a809"; + Requests[4406] = new DefaultHttpContext(); + Requests[4406].RequestServices = CreateServices(); + Requests[4406].Request.Method = "DELETE"; + Requests[4406].Request.Path = "/subscriptions/4434b837-8346-/resourceGroups/67ac73ad-5178-40e/providers/Microsoft.DevTestLab/labs/0a1a400/virtualmachines/12a8e5eb-dfd2-4172/schedules/af8a1"; + Requests[4407] = new DefaultHttpContext(); + Requests[4407].RequestServices = CreateServices(); + Requests[4407].Request.Method = "PATCH"; + Requests[4407].Request.Path = "/subscriptions/2c7d9df9-6677-/resourceGroups/5e16b834-136f-4a3/providers/Microsoft.DevTestLab/labs/9c73b3d/virtualmachines/0e68e578-fa5b-43e3/schedules/ea907"; + Requests[4408] = new DefaultHttpContext(); + Requests[4408].RequestServices = CreateServices(); + Requests[4408].Request.Method = "GET"; + Requests[4408].Request.Path = "/subscriptions/946bc226-9629-/resourceGroups/ac28abd9-5bb1-479/providers/Microsoft.EventHub/namespaces/7a98f2d6-1688/disasterRecoveryConfigs/9a38e/AuthorizationRules/2716716e-ef7a-405a-a9"; + Requests[4409] = new DefaultHttpContext(); + Requests[4409].RequestServices = CreateServices(); + Requests[4409].Request.Method = "PUT"; + Requests[4409].Request.Path = "/subscriptions/a4e1a96c-4a2c-/resourceGroups/c57fdfda-57b1-4eb/providers/Microsoft.EventHub/namespaces/7346c05d-ff31/eventhubs/59d68e4d-a61/authorizationRules/4e07a53a-8ff5-4af5-af"; + Requests[4410] = new DefaultHttpContext(); + Requests[4410].RequestServices = CreateServices(); + Requests[4410].Request.Method = "GET"; + Requests[4410].Request.Path = "/subscriptions/81943dbe-4f1e-/resourceGroups/4bd4163d-22b5-4c0/providers/Microsoft.EventHub/namespaces/e0e74e8a-db67/eventhubs/8efae918-4a4/authorizationRules/e3b4d1f3-5c57-4df6-89"; + Requests[4411] = new DefaultHttpContext(); + Requests[4411].RequestServices = CreateServices(); + Requests[4411].Request.Method = "DELETE"; + Requests[4411].Request.Path = "/subscriptions/959f28da-3a87-/resourceGroups/a5d8b8d9-0ddd-4b8/providers/Microsoft.EventHub/namespaces/d82c3611-4f37/eventhubs/be717fe4-0c1/authorizationRules/881f5660-0e7f-4d6b-b0"; + Requests[4412] = new DefaultHttpContext(); + Requests[4412].RequestServices = CreateServices(); + Requests[4412].Request.Method = "POST"; + Requests[4412].Request.Path = "/subscriptions/3e65f528-de7d-/resourceGroups/6904774f-2d34-482/providers/Microsoft.EventHub/namespaces/f6079328-72a5/eventhubs/b4e8ee4d-086/authorizationRules/fd777eb4-d971-4926-bc"; + Requests[4413] = new DefaultHttpContext(); + Requests[4413].RequestServices = CreateServices(); + Requests[4413].Request.Method = "PUT"; + Requests[4413].Request.Path = "/subscriptions/9b23fe0a-c8a0-/resourceGroups/3750505a-d06f-411/providers/Microsoft.EventHub/namespaces/35464de6-343e/eventhubs/c5df2c70-f33/consumergroups/cd527096-df33-40d"; + Requests[4414] = new DefaultHttpContext(); + Requests[4414].RequestServices = CreateServices(); + Requests[4414].Request.Method = "DELETE"; + Requests[4414].Request.Path = "/subscriptions/2c19af94-7b7b-/resourceGroups/e8c8ee1b-b16b-4a7/providers/Microsoft.EventHub/namespaces/2efc130c-6073/eventhubs/8728bcd1-15c/consumergroups/75491a11-4e96-4e1"; + Requests[4415] = new DefaultHttpContext(); + Requests[4415].RequestServices = CreateServices(); + Requests[4415].Request.Method = "GET"; + Requests[4415].Request.Path = "/subscriptions/4fda9977-0fe5-/resourceGroups/ea8facc6-1b73-426/providers/Microsoft.EventHub/namespaces/729d9b56-c8c0/eventhubs/1bd3f9c2-d8f/consumergroups/e3cf165f-6307-4ac"; + Requests[4416] = new DefaultHttpContext(); + Requests[4416].RequestServices = CreateServices(); + Requests[4416].Request.Method = "GET"; + Requests[4416].Request.Path = "/subscriptions/f1a6e438-3075-/resourceGroups/d4555ef3-bfda-4d7/providers/Microsoft.Fabric.Admin/fabricLocations/eb21462c/logicalNetworks/855d5d9f-e906-/logicalSubnets/a81f0b86-78d9"; + Requests[4417] = new DefaultHttpContext(); + Requests[4417].RequestServices = CreateServices(); + Requests[4417].Request.Method = "GET"; + Requests[4417].Request.Path = "/subscriptions/6cd48ff8-2ab9-/resourceGroups/b769bf33-9730-490/providers/Microsoft.Fabric.Admin/fabricLocations/dab288dd/storageSubSystems/a4f74405-a2a5-48/storagePools/0b23bdd9-6f"; + Requests[4418] = new DefaultHttpContext(); + Requests[4418].RequestServices = CreateServices(); + Requests[4418].Request.Method = "GET"; + Requests[4418].Request.Path = "/subscriptions/987a4d23-fb09-/resourceGroups/c9343880-e495-4fa/providers/Microsoft.InfrastructureInsights.Admin/regionHealths/90485390/serviceHealths/0c513afc-1ec9-45a5-a7/resourceHealths/f2543171-d8ee-49b2-943"; + Requests[4419] = new DefaultHttpContext(); + Requests[4419].RequestServices = CreateServices(); + Requests[4419].Request.Method = "GET"; + Requests[4419].Request.Path = "/subscriptions/402f435f-2498-/resourceGroups/2d935771-9ffb-49d/providers/Microsoft.Logic/workflows/584b588b-afd/runs/0913653/actions/f51d5181-b"; + Requests[4420] = new DefaultHttpContext(); + Requests[4420].RequestServices = CreateServices(); + Requests[4420].Request.Method = "GET"; + Requests[4420].Request.Path = "/subscriptions/59d4c9fd-19a1-/resourceGroups/b548b702-8a20-45e/providers/Microsoft.Logic/workflows/6c08758d-87d/runs/3ab00c8/operations/ee0edd86-69"; + Requests[4421] = new DefaultHttpContext(); + Requests[4421].RequestServices = CreateServices(); + Requests[4421].Request.Method = "GET"; + Requests[4421].Request.Path = "/subscriptions/c1705c90-14d9-/resourceGroups/498269e8-ce9e-49c/providers/Microsoft.Logic/workflows/4cd8ea1e-928/triggers/7ae4f9d8-27/histories/dbed6ea2-75"; + Requests[4422] = new DefaultHttpContext(); + Requests[4422].RequestServices = CreateServices(); + Requests[4422].Request.Method = "PATCH"; + Requests[4422].Request.Path = "/subscriptions/1a064f63-4078-/resourceGroups/912e8cc4-731e-4aa/providers/Microsoft.MachineLearningExperimentation/accounts/7f8efee5-f3/workspaces/8654a7f9-5ba5/projects/ecd615ae-0c"; + Requests[4423] = new DefaultHttpContext(); + Requests[4423].RequestServices = CreateServices(); + Requests[4423].Request.Method = "DELETE"; + Requests[4423].Request.Path = "/subscriptions/718fba67-c745-/resourceGroups/59f585d0-7a8f-47c/providers/Microsoft.MachineLearningExperimentation/accounts/8250ec98-2e/workspaces/4423d1ad-2c90/projects/35a3c507-2c"; + Requests[4424] = new DefaultHttpContext(); + Requests[4424].RequestServices = CreateServices(); + Requests[4424].Request.Method = "GET"; + Requests[4424].Request.Path = "/subscriptions/659585a9-6fb8-/resourceGroups/fc96fefa-d043-4e1/providers/Microsoft.MachineLearningExperimentation/accounts/aa31afed-a1/workspaces/accbbd4c-7a11/projects/1f1c1331-98"; + Requests[4425] = new DefaultHttpContext(); + Requests[4425].RequestServices = CreateServices(); + Requests[4425].Request.Method = "PUT"; + Requests[4425].Request.Path = "/subscriptions/3380cc00-f610-/resourceGroups/f0bb00ca-b633-4ab/providers/Microsoft.MachineLearningExperimentation/accounts/d2fa309e-e3/workspaces/8f252a74-a972/projects/4ede368b-5a"; + Requests[4426] = new DefaultHttpContext(); + Requests[4426].RequestServices = CreateServices(); + Requests[4426].Request.Method = "PUT"; + Requests[4426].Request.Path = "/subscriptions/df128fac-11c7-/resourceGroups/e39f5749-b863-4e3/providers/Microsoft.Media/mediaservices/c00cf84f-80/liveEvents/55e1cbe9-312c/liveOutputs/fac36753-c599-"; + Requests[4427] = new DefaultHttpContext(); + Requests[4427].RequestServices = CreateServices(); + Requests[4427].Request.Method = "DELETE"; + Requests[4427].Request.Path = "/subscriptions/c0fb3528-f034-/resourceGroups/e4c90a12-7031-421/providers/Microsoft.Media/mediaservices/61f703c5-50/liveEvents/5fac18b9-d0f0/liveOutputs/b004db3c-54fc-"; + Requests[4428] = new DefaultHttpContext(); + Requests[4428].RequestServices = CreateServices(); + Requests[4428].Request.Method = "GET"; + Requests[4428].Request.Path = "/subscriptions/edb03389-b39b-/resourceGroups/554b845e-5a2f-42c/providers/Microsoft.Media/mediaservices/e3192b0c-6f/liveEvents/2e6a7962-5a86/liveOutputs/78fd2215-85b9-"; + Requests[4429] = new DefaultHttpContext(); + Requests[4429].RequestServices = CreateServices(); + Requests[4429].Request.Method = "DELETE"; + Requests[4429].Request.Path = "/subscriptions/f56ee134-792d-/resourceGroups/a303eb81-634d-46c/providers/Microsoft.Media/mediaServices/bcd3acba-2d/transforms/48b6a1db-a45a/jobs/33122dc"; + Requests[4430] = new DefaultHttpContext(); + Requests[4430].RequestServices = CreateServices(); + Requests[4430].Request.Method = "GET"; + Requests[4430].Request.Path = "/subscriptions/9f173b10-b8e2-/resourceGroups/a8ea9937-0745-43f/providers/Microsoft.Media/mediaServices/a404b8c4-df/transforms/74da470f-2783/jobs/4b90312"; + Requests[4431] = new DefaultHttpContext(); + Requests[4431].RequestServices = CreateServices(); + Requests[4431].Request.Method = "PUT"; + Requests[4431].Request.Path = "/subscriptions/1e013798-1175-/resourceGroups/aad44fd7-ce3e-464/providers/Microsoft.Media/mediaServices/2eed4e65-9a/transforms/def06628-948f/jobs/466c6b1"; + Requests[4432] = new DefaultHttpContext(); + Requests[4432].RequestServices = CreateServices(); + Requests[4432].Request.Method = "GET"; + Requests[4432].Request.Path = "/subscriptions/ba160b96-6fe3-/resourceGroups/c639fb4a-ecda-403/providers/Microsoft.Migrate/projects/b3ed474e-0b/groups/4d77f8cb-/assessments/f5502f06-4723-"; + Requests[4433] = new DefaultHttpContext(); + Requests[4433].RequestServices = CreateServices(); + Requests[4433].Request.Method = "PUT"; + Requests[4433].Request.Path = "/subscriptions/08e5d772-ecc3-/resourceGroups/b3155527-2859-4cf/providers/Microsoft.Migrate/projects/99791d88-f3/groups/39526bc2-/assessments/6058bee5-10a6-"; + Requests[4434] = new DefaultHttpContext(); + Requests[4434].RequestServices = CreateServices(); + Requests[4434].Request.Method = "DELETE"; + Requests[4434].Request.Path = "/subscriptions/5dbc883f-c99a-/resourceGroups/61c70c5a-2995-499/providers/Microsoft.Migrate/projects/855aef6c-6b/groups/36d72b82-/assessments/572893f1-abea-"; + Requests[4435] = new DefaultHttpContext(); + Requests[4435].RequestServices = CreateServices(); + Requests[4435].Request.Method = "POST"; + Requests[4435].Request.Path = "/subscriptions/2755759a-5c65-/resourceGroups/de27c987-02e0-4e9/providers/Microsoft.Network/expressRouteCircuits/a27b900f-0c/peerings/0db4755b-44/arpTables/cb50151c-0"; + Requests[4436] = new DefaultHttpContext(); + Requests[4436].RequestServices = CreateServices(); + Requests[4436].Request.Method = "DELETE"; + Requests[4436].Request.Path = "/subscriptions/725822f4-8941-/resourceGroups/8a7f0bff-42f2-47a/providers/Microsoft.Network/expressRouteCircuits/7d57f261-8b/peerings/c8f0c66c-64/connections/21fec69c-90c5-"; + Requests[4437] = new DefaultHttpContext(); + Requests[4437].RequestServices = CreateServices(); + Requests[4437].Request.Method = "PUT"; + Requests[4437].Request.Path = "/subscriptions/cf0f2d8d-fee3-/resourceGroups/eb7d39db-61f3-49d/providers/Microsoft.Network/expressRouteCircuits/fa46a525-72/peerings/508b439b-a4/connections/5f754b5e-69b8-"; + Requests[4438] = new DefaultHttpContext(); + Requests[4438].RequestServices = CreateServices(); + Requests[4438].Request.Method = "GET"; + Requests[4438].Request.Path = "/subscriptions/577f43fc-2d2b-/resourceGroups/bddbab9b-f49f-4a4/providers/Microsoft.Network/expressRouteCircuits/76f4a05b-52/peerings/2db1285e-54/connections/9239eeb1-1fc6-"; + Requests[4439] = new DefaultHttpContext(); + Requests[4439].RequestServices = CreateServices(); + Requests[4439].Request.Method = "POST"; + Requests[4439].Request.Path = "/subscriptions/b45bce2c-1fec-/resourceGroups/6dce34d5-1e67-418/providers/Microsoft.Network/expressRouteCircuits/48423cd1-bc/peerings/980a78fd-ef/routeTables/586636d7-2"; + Requests[4440] = new DefaultHttpContext(); + Requests[4440].RequestServices = CreateServices(); + Requests[4440].Request.Method = "POST"; + Requests[4440].Request.Path = "/subscriptions/c41d4d65-2711-/resourceGroups/8c532d55-8165-463/providers/Microsoft.Network/expressRouteCircuits/fc0b9d98-09/peerings/f4f271b0-c9/routeTablesSummary/a0ba4238-a"; + Requests[4441] = new DefaultHttpContext(); + Requests[4441].RequestServices = CreateServices(); + Requests[4441].Request.Method = "POST"; + Requests[4441].Request.Path = "/subscriptions/10072391-ae13-/resourceGroups/47fa6ed6-b47a-445/providers/Microsoft.Network/expressRouteCrossConnections/f32591b1-bc38-4f2b-/peerings/45f19d6d-02/arpTables/cae3d142-0"; + Requests[4442] = new DefaultHttpContext(); + Requests[4442].RequestServices = CreateServices(); + Requests[4442].Request.Method = "POST"; + Requests[4442].Request.Path = "/subscriptions/4f27245e-5834-/resourceGroups/ec73d946-1d3e-463/providers/Microsoft.Network/expressRouteCrossConnections/8ba922a9-68b4-4c1e-/peerings/9f358cb1-a7/routeTables/c9b4c0f2-5"; + Requests[4443] = new DefaultHttpContext(); + Requests[4443].RequestServices = CreateServices(); + Requests[4443].Request.Method = "POST"; + Requests[4443].Request.Path = "/subscriptions/e4dcd2a6-9a0e-/resourceGroups/e5cb2b97-7e19-498/providers/Microsoft.Network/expressRouteCrossConnections/dd7924e8-9dd8-4950-/peerings/81789a51-d1/routeTablesSummary/bd05ec03-f"; + Requests[4444] = new DefaultHttpContext(); + Requests[4444].RequestServices = CreateServices(); + Requests[4444].Request.Method = "PUT"; + Requests[4444].Request.Path = "/subscriptions/d1456a40-000f-/resourceGroups/d8b3b3f0-fb29-4fd/providers/Microsoft.NotificationHubs/namespaces/20e6d6c8-e2ef/notificationHubs/932a269c-9f2e-415b-/AuthorizationRules/a1206545-118c-456c-89"; + Requests[4445] = new DefaultHttpContext(); + Requests[4445].RequestServices = CreateServices(); + Requests[4445].Request.Method = "POST"; + Requests[4445].Request.Path = "/subscriptions/74b71b0c-d508-/resourceGroups/449ba751-8e3f-443/providers/Microsoft.NotificationHubs/namespaces/bdda7366-fd37/notificationHubs/06b7c755-ab99-4bff-/AuthorizationRules/2fb0604a-f907-4eae-9d"; + Requests[4446] = new DefaultHttpContext(); + Requests[4446].RequestServices = CreateServices(); + Requests[4446].Request.Method = "DELETE"; + Requests[4446].Request.Path = "/subscriptions/e9cb26c9-8b17-/resourceGroups/ddd39437-7eb9-4b8/providers/Microsoft.NotificationHubs/namespaces/9e3fc399-3f24/notificationHubs/11fec0d7-21c1-483d-/AuthorizationRules/ca4140af-1580-480f-97"; + Requests[4447] = new DefaultHttpContext(); + Requests[4447].RequestServices = CreateServices(); + Requests[4447].Request.Method = "GET"; + Requests[4447].Request.Path = "/subscriptions/66b51505-a5a7-/resourceGroups/4f261dfe-57a0-4e8/providers/Microsoft.NotificationHubs/namespaces/3e869de4-98d3/notificationHubs/48d76539-3a19-4464-/AuthorizationRules/6369a8da-6f81-4ffd-9b"; + Requests[4448] = new DefaultHttpContext(); + Requests[4448].RequestServices = CreateServices(); + Requests[4448].Request.Method = "GET"; + Requests[4448].Request.Path = "/Subscriptions/cdd9e450-4f8f-/resourceGroups/c4281b30-0855-4e0/providers/Microsoft.RecoveryServices/vaults/ab22a6cd-7f8/replicationFabrics/81208aef-7/replicationLogicalNetworks/995ebd45-6700-4cd4"; + Requests[4449] = new DefaultHttpContext(); + Requests[4449].RequestServices = CreateServices(); + Requests[4449].Request.Method = "GET"; + Requests[4449].Request.Path = "/Subscriptions/06897a2f-8da8-/resourceGroups/360e2d8f-0abe-413/providers/Microsoft.RecoveryServices/vaults/de5c2c26-404/replicationFabrics/adb14c00-2/replicationNetworks/d592b102-b1"; + Requests[4450] = new DefaultHttpContext(); + Requests[4450].RequestServices = CreateServices(); + Requests[4450].Request.Method = "GET"; + Requests[4450].Request.Path = "/Subscriptions/1bea81fd-46a2-/resourceGroups/d2c8708f-144a-43a/providers/Microsoft.RecoveryServices/vaults/e3a41592-94e/replicationFabrics/cba0e37b-1/replicationProtectionContainers/ffb00a70-b986-4735-90ef"; + Requests[4451] = new DefaultHttpContext(); + Requests[4451].RequestServices = CreateServices(); + Requests[4451].Request.Method = "PUT"; + Requests[4451].Request.Path = "/Subscriptions/d923dad7-53fc-/resourceGroups/82b4eec5-0ac8-4e8/providers/Microsoft.RecoveryServices/vaults/6f1a8e49-6c1/replicationFabrics/be193d53-9/replicationProtectionContainers/1b5155fb-3935-42e7-9901"; + Requests[4452] = new DefaultHttpContext(); + Requests[4452].RequestServices = CreateServices(); + Requests[4452].Request.Method = "GET"; + Requests[4452].Request.Path = "/Subscriptions/4c969d3f-0271-/resourceGroups/bd49011c-5c22-470/providers/Microsoft.RecoveryServices/vaults/81eb09be-bae/replicationFabrics/e4f77a51-3/replicationRecoveryServicesProviders/9a4eb051-cec"; + Requests[4453] = new DefaultHttpContext(); + Requests[4453].RequestServices = CreateServices(); + Requests[4453].Request.Method = "DELETE"; + Requests[4453].Request.Path = "/Subscriptions/53012660-8d69-/resourceGroups/189eb8c9-5f82-41d/providers/Microsoft.RecoveryServices/vaults/39754150-b8c/replicationFabrics/069622a4-7/replicationRecoveryServicesProviders/e4492308-e1d"; + Requests[4454] = new DefaultHttpContext(); + Requests[4454].RequestServices = CreateServices(); + Requests[4454].Request.Method = "GET"; + Requests[4454].Request.Path = "/Subscriptions/44dc83ed-bcb1-/resourceGroups/42107cb1-cda4-47d/providers/Microsoft.RecoveryServices/vaults/25ed8e14-033/replicationFabrics/0d7a47da-c/replicationStorageClassifications/87a95ae6-abc9-41c3-858a-b"; + Requests[4455] = new DefaultHttpContext(); + Requests[4455].RequestServices = CreateServices(); + Requests[4455].Request.Method = "PUT"; + Requests[4455].Request.Path = "/Subscriptions/7285a7f9-65f8-/resourceGroups/38765f53-5317-496/providers/Microsoft.RecoveryServices/vaults/df48d950-4f7/replicationFabrics/23eb5ba8-d/replicationvCenters/2c01d786-65"; + Requests[4456] = new DefaultHttpContext(); + Requests[4456].RequestServices = CreateServices(); + Requests[4456].Request.Method = "PATCH"; + Requests[4456].Request.Path = "/Subscriptions/3b55b13c-499f-/resourceGroups/c3e783ea-3448-4b0/providers/Microsoft.RecoveryServices/vaults/318f0100-295/replicationFabrics/88f610d0-6/replicationvCenters/67bd2ecc-66"; + Requests[4457] = new DefaultHttpContext(); + Requests[4457].RequestServices = CreateServices(); + Requests[4457].Request.Method = "DELETE"; + Requests[4457].Request.Path = "/Subscriptions/9e7aec8b-fd5f-/resourceGroups/c88f27bb-e9fe-407/providers/Microsoft.RecoveryServices/vaults/a4f1b8f2-80f/replicationFabrics/f56c93cc-d/replicationvCenters/3d885b4a-24"; + Requests[4458] = new DefaultHttpContext(); + Requests[4458].RequestServices = CreateServices(); + Requests[4458].Request.Method = "GET"; + Requests[4458].Request.Path = "/Subscriptions/8f3f220d-faa4-/resourceGroups/39513b82-e7ac-4a2/providers/Microsoft.RecoveryServices/vaults/35b914d7-955/replicationFabrics/a14ac938-0/replicationvCenters/cc36812c-11"; + Requests[4459] = new DefaultHttpContext(); + Requests[4459].RequestServices = CreateServices(); + Requests[4459].Request.Method = "PUT"; + Requests[4459].Request.Path = "/Subscriptions/858cb863-5245-/resourceGroups/992c7073-10c6-4ed/providers/Microsoft.RecoveryServices/vaults/88f00b9a-/backupFabrics/51fa5349-d/backupProtectionIntent/ad7a7a83-de86-4e"; + Requests[4460] = new DefaultHttpContext(); + Requests[4460].RequestServices = CreateServices(); + Requests[4460].Request.Method = "GET"; + Requests[4460].Request.Path = "/Subscriptions/6951d392-6f19-/resourceGroups/ae7128bf-d8fc-4e8/providers/Microsoft.RecoveryServices/vaults/45c57af9-/backupFabrics/6322d600-e/operationResults/ad00d676-c6"; + Requests[4461] = new DefaultHttpContext(); + Requests[4461].RequestServices = CreateServices(); + Requests[4461].Request.Method = "DELETE"; + Requests[4461].Request.Path = "/Subscriptions/2362be26-7c44-/resourceGroups/1b40273d-9f9f-405/providers/Microsoft.RecoveryServices/vaults/c5fd8ebc-/backupFabrics/33ac99fa-5/protectionContainers/a25b0104-fd77"; + Requests[4462] = new DefaultHttpContext(); + Requests[4462].RequestServices = CreateServices(); + Requests[4462].Request.Method = "PUT"; + Requests[4462].Request.Path = "/Subscriptions/2318d8c1-7746-/resourceGroups/18499df2-4e1e-4c8/providers/Microsoft.RecoveryServices/vaults/2f782516-/backupFabrics/37c77949-2/protectionContainers/e6443de0-9a9e"; + Requests[4463] = new DefaultHttpContext(); + Requests[4463].RequestServices = CreateServices(); + Requests[4463].Request.Method = "GET"; + Requests[4463].Request.Path = "/Subscriptions/057606f5-d54c-/resourceGroups/ea7545ed-7b81-4e8/providers/Microsoft.RecoveryServices/vaults/cd6760a1-/backupFabrics/d8e28565-a/protectionContainers/87a422cb-e402"; + Requests[4464] = new DefaultHttpContext(); + Requests[4464].RequestServices = CreateServices(); + Requests[4464].Request.Method = "GET"; + Requests[4464].Request.Path = "/Subscriptions/b59531b2-c13e-/resourceGroups/8ad5f788-513a-495/providers/Microsoft.RecoveryServices/vaults/d42a0ab5-/backupJobs/bb7ce57/operationResults/e5fce4ad-9a"; + Requests[4465] = new DefaultHttpContext(); + Requests[4465].RequestServices = CreateServices(); + Requests[4465].Request.Method = "GET"; + Requests[4465].Request.Path = "/Subscriptions/d7926ea0-ea5c-/resourceGroups/05b922dc-bab1-411/providers/Microsoft.RecoveryServices/vaults/6e561c6c-/backupPolicies/3ee2f6e2-2/operationResults/867ff175-25"; + Requests[4466] = new DefaultHttpContext(); + Requests[4466].RequestServices = CreateServices(); + Requests[4466].Request.Method = "GET"; + Requests[4466].Request.Path = "/Subscriptions/1eece1bc-3568-/resourceGroups/ffd748c0-3ea3-465/providers/Microsoft.RecoveryServices/vaults/51ed241e-/backupPolicies/69dcf757-0/operations/426449bd-4a"; + Requests[4467] = new DefaultHttpContext(); + Requests[4467].RequestServices = CreateServices(); + Requests[4467].Request.Method = "GET"; + Requests[4467].Request.Path = "/subscriptions/47ac0eed-133d-/resourceGroups/4771e9d0-ce77-4d4/providers/Microsoft.Relay/namespaces/2d80e95e-0229/hybridConnections/380dff0e-98e0-414f-8/authorizationRules/65796472-ee4b-497d-90"; + Requests[4468] = new DefaultHttpContext(); + Requests[4468].RequestServices = CreateServices(); + Requests[4468].Request.Method = "DELETE"; + Requests[4468].Request.Path = "/subscriptions/060c60eb-5321-/resourceGroups/1ed97bcf-49e5-400/providers/Microsoft.Relay/namespaces/b88dc137-522b/hybridConnections/da23e506-1f6b-43dc-8/authorizationRules/84af15c2-9204-4cb7-96"; + Requests[4469] = new DefaultHttpContext(); + Requests[4469].RequestServices = CreateServices(); + Requests[4469].Request.Method = "PUT"; + Requests[4469].Request.Path = "/subscriptions/5ee12e16-6331-/resourceGroups/37e0d680-c682-494/providers/Microsoft.Relay/namespaces/286f534b-3221/hybridConnections/e95f3417-559d-4482-9/authorizationRules/a181985e-2579-4176-99"; + Requests[4470] = new DefaultHttpContext(); + Requests[4470].RequestServices = CreateServices(); + Requests[4470].Request.Method = "POST"; + Requests[4470].Request.Path = "/subscriptions/f45741cd-3102-/resourceGroups/abcdcc1a-b67e-41e/providers/Microsoft.Relay/namespaces/4905dbd2-09de/HybridConnections/ad2735fe-f5bf-4b3f-8/authorizationRules/e83152ec-3610-42c5-a5"; + Requests[4471] = new DefaultHttpContext(); + Requests[4471].RequestServices = CreateServices(); + Requests[4471].Request.Method = "GET"; + Requests[4471].Request.Path = "/subscriptions/e80422ab-d73f-/resourceGroups/cc94b3e2-2373-4e9/providers/Microsoft.Relay/namespaces/7636200d-3c6f/wcfRelays/4cb6fe5b-/authorizationRules/a7889d2b-f498-47f0-8e"; + Requests[4472] = new DefaultHttpContext(); + Requests[4472].RequestServices = CreateServices(); + Requests[4472].Request.Method = "PUT"; + Requests[4472].Request.Path = "/subscriptions/14b85444-4a3c-/resourceGroups/e3a974b3-9d1d-437/providers/Microsoft.Relay/namespaces/0e3a1c58-298b/wcfRelays/0e4a9390-/authorizationRules/9f373eb1-71e6-42a1-bd"; + Requests[4473] = new DefaultHttpContext(); + Requests[4473].RequestServices = CreateServices(); + Requests[4473].Request.Method = "DELETE"; + Requests[4473].Request.Path = "/subscriptions/c95c55de-2518-/resourceGroups/70188c2f-c06c-449/providers/Microsoft.Relay/namespaces/e910c926-e741/wcfRelays/7f089377-/authorizationRules/dd27602d-5481-47d7-95"; + Requests[4474] = new DefaultHttpContext(); + Requests[4474].RequestServices = CreateServices(); + Requests[4474].Request.Method = "POST"; + Requests[4474].Request.Path = "/subscriptions/691e7b00-8613-/resourceGroups/99ee2718-fc86-431/providers/Microsoft.Relay/namespaces/758f80c6-f67c/WcfRelays/5f15e9a0-/authorizationRules/d9a4e8ff-5fc4-4bdd-bf"; + Requests[4475] = new DefaultHttpContext(); + Requests[4475].RequestServices = CreateServices(); + Requests[4475].Request.Method = "GET"; + Requests[4475].Request.Path = "/subscriptions/9d40a130-998b-/resourceGroups/fbc43114-4f48-412/providers/Microsoft.ServiceBus/namespaces/36128f66-bbf4/disasterRecoveryConfigs/ef6dd/AuthorizationRules/5f591c39-4427-4b4e-89"; + Requests[4476] = new DefaultHttpContext(); + Requests[4476].RequestServices = CreateServices(); + Requests[4476].Request.Method = "GET"; + Requests[4476].Request.Path = "/subscriptions/60ffb837-2b46-/resourceGroups/79b2d755-3a84-4bf/providers/Microsoft.ServiceBus/namespaces/f7c19a45-8f5a/eventhubs/94e83d7f-0b1/authorizationRules/9e560758-b77c-4035-b3"; + Requests[4477] = new DefaultHttpContext(); + Requests[4477].RequestServices = CreateServices(); + Requests[4477].Request.Method = "GET"; + Requests[4477].Request.Path = "/subscriptions/d338c503-9167-/resourceGroups/3e201cdc-9bb5-49b/providers/Microsoft.ServiceBus/namespaces/225feba2-2292/queues/1549942b-/authorizationRules/2c5d65e1-dbc2-4a57-84"; + Requests[4478] = new DefaultHttpContext(); + Requests[4478].RequestServices = CreateServices(); + Requests[4478].Request.Method = "POST"; + Requests[4478].Request.Path = "/subscriptions/3c113b2b-a005-/resourceGroups/4aeeaccb-74cf-49e/providers/Microsoft.ServiceBus/namespaces/36741172-a808/queues/67c96d4e-/authorizationRules/86514621-4f69-430d-97"; + Requests[4479] = new DefaultHttpContext(); + Requests[4479].RequestServices = CreateServices(); + Requests[4479].Request.Method = "DELETE"; + Requests[4479].Request.Path = "/subscriptions/749d31c6-4628-/resourceGroups/47420dd3-d714-48d/providers/Microsoft.ServiceBus/namespaces/e9797fdd-827c/queues/475e01d3-/authorizationRules/ed208ace-5fee-43d1-b3"; + Requests[4480] = new DefaultHttpContext(); + Requests[4480].RequestServices = CreateServices(); + Requests[4480].Request.Method = "PUT"; + Requests[4480].Request.Path = "/subscriptions/41408cdb-3d2b-/resourceGroups/3e7d049b-6d85-48c/providers/Microsoft.ServiceBus/namespaces/e990282e-63fc/queues/49f42514-/authorizationRules/1eac5786-095b-4bd0-9b"; + Requests[4481] = new DefaultHttpContext(); + Requests[4481].RequestServices = CreateServices(); + Requests[4481].Request.Method = "PUT"; + Requests[4481].Request.Path = "/subscriptions/40274d98-85bc-/resourceGroups/cc15b62b-d4c8-433/providers/Microsoft.ServiceBus/namespaces/80ffe563-f895/topics/7416f8b7-/authorizationRules/09d754b3-0ab4-41c3-98"; + Requests[4482] = new DefaultHttpContext(); + Requests[4482].RequestServices = CreateServices(); + Requests[4482].Request.Method = "GET"; + Requests[4482].Request.Path = "/subscriptions/7279b54c-97bd-/resourceGroups/34b07cc8-ef3d-4ec/providers/Microsoft.ServiceBus/namespaces/11f80720-5ac5/topics/03958773-/authorizationRules/222eae8f-13ef-45ad-90"; + Requests[4483] = new DefaultHttpContext(); + Requests[4483].RequestServices = CreateServices(); + Requests[4483].Request.Method = "DELETE"; + Requests[4483].Request.Path = "/subscriptions/286509fe-8726-/resourceGroups/54405b4d-7dff-4df/providers/Microsoft.ServiceBus/namespaces/6ba95a96-90d0/topics/41563381-/authorizationRules/0c514c0b-990f-44ae-b5"; + Requests[4484] = new DefaultHttpContext(); + Requests[4484].RequestServices = CreateServices(); + Requests[4484].Request.Method = "POST"; + Requests[4484].Request.Path = "/subscriptions/2292c893-7ef7-/resourceGroups/3e3b7a11-9ee9-427/providers/Microsoft.ServiceBus/namespaces/e5ade1df-5c42/topics/07630d75-/authorizationRules/d7ae4e81-e828-403b-a4"; + Requests[4485] = new DefaultHttpContext(); + Requests[4485].RequestServices = CreateServices(); + Requests[4485].Request.Method = "PUT"; + Requests[4485].Request.Path = "/subscriptions/ba8ce476-a8e1-/resourceGroups/7bb9eb81-4b02-442/providers/Microsoft.ServiceBus/namespaces/138f0ffd-ba8f/topics/1f3bd577-/subscriptions/c4d2d094-1af4-44"; + Requests[4486] = new DefaultHttpContext(); + Requests[4486].RequestServices = CreateServices(); + Requests[4486].Request.Method = "GET"; + Requests[4486].Request.Path = "/subscriptions/4d7a7799-49c1-/resourceGroups/e7247d9a-900f-4e6/providers/Microsoft.ServiceBus/namespaces/adebda40-9173/topics/2f8e954f-/subscriptions/c3a6d85c-d7ad-4a"; + Requests[4487] = new DefaultHttpContext(); + Requests[4487].RequestServices = CreateServices(); + Requests[4487].Request.Method = "DELETE"; + Requests[4487].Request.Path = "/subscriptions/be3969a8-dc8c-/resourceGroups/23694471-4f32-4b8/providers/Microsoft.ServiceBus/namespaces/41275aae-29ab/topics/644228ed-/subscriptions/edab250e-d193-46"; + Requests[4488] = new DefaultHttpContext(); + Requests[4488].RequestServices = CreateServices(); + Requests[4488].Request.Method = "PATCH"; + Requests[4488].Request.Path = "/subscriptions/c9d62b93-78b9-/resourceGroups/928d366d-cb1a-4c0/providers/Microsoft.ServiceFabric/clusters/37805ab0-7e/applications/5d7a9b09-56ce-4/services/bee45205-6f"; + Requests[4489] = new DefaultHttpContext(); + Requests[4489].RequestServices = CreateServices(); + Requests[4489].Request.Method = "DELETE"; + Requests[4489].Request.Path = "/subscriptions/5d82b7f2-be03-/resourceGroups/83f2d26a-71a4-42f/providers/Microsoft.ServiceFabric/clusters/b9e0c82c-39/applications/c300c11f-e79a-4/services/f5d48cdf-a0"; + Requests[4490] = new DefaultHttpContext(); + Requests[4490].RequestServices = CreateServices(); + Requests[4490].Request.Method = "PUT"; + Requests[4490].Request.Path = "/subscriptions/8bf33e4f-3674-/resourceGroups/65df01aa-57a4-4da/providers/Microsoft.ServiceFabric/clusters/bed2fde6-30/applications/cb8ee2b0-9b26-4/services/4417eded-ef"; + Requests[4491] = new DefaultHttpContext(); + Requests[4491].RequestServices = CreateServices(); + Requests[4491].Request.Method = "GET"; + Requests[4491].Request.Path = "/subscriptions/ed0b04d5-f1ae-/resourceGroups/492b9b89-74ec-420/providers/Microsoft.ServiceFabric/clusters/2ff674df-95/applications/ed248691-24a8-4/services/3518bf5c-8f"; + Requests[4492] = new DefaultHttpContext(); + Requests[4492].RequestServices = CreateServices(); + Requests[4492].Request.Method = "GET"; + Requests[4492].Request.Path = "/subscriptions/b65e91d1-c69d-/resourceGroups/0a5c715a-cbe4-4f3/providers/Microsoft.ServiceFabric/clusters/c40d08ee-a8/applicationTypes/d31ee81d-e8b0-4c98-/versions/56705f4"; + Requests[4493] = new DefaultHttpContext(); + Requests[4493].RequestServices = CreateServices(); + Requests[4493].Request.Method = "PUT"; + Requests[4493].Request.Path = "/subscriptions/cc18eb3e-4aaf-/resourceGroups/f2739850-355b-4d2/providers/Microsoft.ServiceFabric/clusters/2b642b9e-ab/applicationTypes/9be418c1-6103-4049-/versions/e686d77"; + Requests[4494] = new DefaultHttpContext(); + Requests[4494].RequestServices = CreateServices(); + Requests[4494].Request.Method = "DELETE"; + Requests[4494].Request.Path = "/subscriptions/a97357bb-3d83-/resourceGroups/e8dcc9af-6501-443/providers/Microsoft.ServiceFabric/clusters/84618f76-15/applicationTypes/e77abe13-0447-47e9-/versions/ebac2cb"; + Requests[4495] = new DefaultHttpContext(); + Requests[4495].RequestServices = CreateServices(); + Requests[4495].Request.Method = "GET"; + Requests[4495].Request.Path = "/subscriptions/22429bd9-ef1d-/resourceGroups/13629c96-ad68-44d/providers/Microsoft.Sql/servers/dcb528c3-1/databases/cdf2b4a9-e07/advisors/87cdc2e3-74"; + Requests[4496] = new DefaultHttpContext(); + Requests[4496].RequestServices = CreateServices(); + Requests[4496].Request.Method = "PATCH"; + Requests[4496].Request.Path = "/subscriptions/5653ae2b-8f6f-/resourceGroups/bccea365-d82d-4d8/providers/Microsoft.Sql/servers/e87e951e-1/databases/35452763-24a/advisors/fdf89806-d9"; + Requests[4497] = new DefaultHttpContext(); + Requests[4497].RequestServices = CreateServices(); + Requests[4497].Request.Method = "PUT"; + Requests[4497].Request.Path = "/subscriptions/3f53d93e-5130-/resourceGroups/1cc5cbfb-b6c6-4ae/providers/Microsoft.Sql/servers/e110f26d-7/databases/f76d6f57-469/advisors/9a4fef69-f8"; + Requests[4498] = new DefaultHttpContext(); + Requests[4498].RequestServices = CreateServices(); + Requests[4498].Request.Method = "GET"; + Requests[4498].Request.Path = "/subscriptions/fd1b8609-5f7d-/resourceGroups/d04b3e7f-ff6e-4c5/providers/Microsoft.Sql/servers/0bd40985-4/databases/3feaa4e1-3d3/auditingPolicies/c89abdc8-5cc9-4529-a585"; + Requests[4499] = new DefaultHttpContext(); + Requests[4499].RequestServices = CreateServices(); + Requests[4499].Request.Method = "PUT"; + Requests[4499].Request.Path = "/subscriptions/b0a01f5f-0c70-/resourceGroups/1bf22e71-6788-403/providers/Microsoft.Sql/servers/6ca633aa-9/databases/3c8cbcf8-463/auditingPolicies/8124d57e-2c60-43d3-90c5"; + Requests[4500] = new DefaultHttpContext(); + Requests[4500].RequestServices = CreateServices(); + Requests[4500].Request.Method = "GET"; + Requests[4500].Request.Path = "/subscriptions/fb29fdf0-f7d8-/resourceGroups/2ec92452-92c3-4a0/providers/Microsoft.Sql/servers/a7813ec8-7/databases/be23f818-d57/auditingSettings/6bc25ec6-38fe-457d-9af"; + Requests[4501] = new DefaultHttpContext(); + Requests[4501].RequestServices = CreateServices(); + Requests[4501].Request.Method = "PUT"; + Requests[4501].Request.Path = "/subscriptions/81b672e5-d4da-/resourceGroups/7b43f0ac-23fb-46c/providers/Microsoft.Sql/servers/c08383a9-6/databases/a291c386-793/auditingSettings/624e1fcc-23c8-40d7-ae9"; + Requests[4502] = new DefaultHttpContext(); + Requests[4502].RequestServices = CreateServices(); + Requests[4502].Request.Method = "GET"; + Requests[4502].Request.Path = "/subscriptions/c1974cdf-beba-/resourceGroups/6bcfdada-36ec-40f/providers/Microsoft.Sql/servers/2e129073-5/databases/f5e67cbb-009/backupLongTermRetentionPolicies/889d5159-76e6-4728-8d30-867071e68"; + Requests[4503] = new DefaultHttpContext(); + Requests[4503].RequestServices = CreateServices(); + Requests[4503].Request.Method = "PUT"; + Requests[4503].Request.Path = "/subscriptions/70f42522-13ca-/resourceGroups/8bdbd738-b587-420/providers/Microsoft.Sql/servers/42fe80e3-2/databases/1086ff63-62f/backupLongTermRetentionPolicies/67e26f48-af03-4745-947f-1eeb1725b"; + Requests[4504] = new DefaultHttpContext(); + Requests[4504].RequestServices = CreateServices(); + Requests[4504].Request.Method = "PATCH"; + Requests[4504].Request.Path = "/subscriptions/9c61262a-e46d-/resourceGroups/f9c36fbf-1791-403/providers/Microsoft.Sql/servers/7851ae1d-b/databases/5c2e0556-1b3/backupShortTermRetentionPolicies/13ba7ed1-9"; + Requests[4505] = new DefaultHttpContext(); + Requests[4505].RequestServices = CreateServices(); + Requests[4505].Request.Method = "PUT"; + Requests[4505].Request.Path = "/subscriptions/88776d41-d196-/resourceGroups/431fe17b-b512-49c/providers/Microsoft.Sql/servers/7bff09b0-c/databases/b7f4ccbb-696/backupShortTermRetentionPolicies/4be324e4-e"; + Requests[4506] = new DefaultHttpContext(); + Requests[4506].RequestServices = CreateServices(); + Requests[4506].Request.Method = "GET"; + Requests[4506].Request.Path = "/subscriptions/2c9d04eb-edd0-/resourceGroups/7e9b9090-c706-420/providers/Microsoft.Sql/servers/7b6de07a-1/databases/26af1f3c-f01/backupShortTermRetentionPolicies/195e1218-6"; + Requests[4507] = new DefaultHttpContext(); + Requests[4507].RequestServices = CreateServices(); + Requests[4507].Request.Method = "GET"; + Requests[4507].Request.Path = "/subscriptions/49fc5f89-8998-/resourceGroups/5e7216a8-45f4-43e/providers/Microsoft.Sql/servers/ec9a3a69-6/databases/3fb1655b-01e/connectionPolicies/f277b1ad-8417-49e0-8"; + Requests[4508] = new DefaultHttpContext(); + Requests[4508].RequestServices = CreateServices(); + Requests[4508].Request.Method = "PUT"; + Requests[4508].Request.Path = "/subscriptions/ad036033-c32e-/resourceGroups/8b14a549-ea4a-44d/providers/Microsoft.Sql/servers/54397e5e-d/databases/0fcd8511-8db/connectionPolicies/a97b9f85-327b-45d2-9"; + Requests[4509] = new DefaultHttpContext(); + Requests[4509].RequestServices = CreateServices(); + Requests[4509].Request.Method = "GET"; + Requests[4509].Request.Path = "/subscriptions/01e219d7-7ba3-/resourceGroups/586289ad-7a28-41f/providers/Microsoft.Sql/servers/8a322a70-c/databases/d7621faa-1b8/dataMaskingPolicies/36b63ef3-c40c-4c68-97"; + Requests[4510] = new DefaultHttpContext(); + Requests[4510].RequestServices = CreateServices(); + Requests[4510].Request.Method = "PUT"; + Requests[4510].Request.Path = "/subscriptions/be670cb0-f40c-/resourceGroups/d73d5631-9bac-423/providers/Microsoft.Sql/servers/fa93ebaa-c/databases/845e3ca0-e70/dataMaskingPolicies/07c8925c-3215-4858-82"; + Requests[4511] = new DefaultHttpContext(); + Requests[4511].RequestServices = CreateServices(); + Requests[4511].Request.Method = "GET"; + Requests[4511].Request.Path = "/subscriptions/258c8a56-ac1f-/resourceGroups/42fc00e4-b852-441/providers/Microsoft.Sql/servers/1d7753dc-6/databases/02a0fd31-ced/dataWarehouseUserActivities/81c33476-b11a-447a-9814-29176"; + Requests[4512] = new DefaultHttpContext(); + Requests[4512].RequestServices = CreateServices(); + Requests[4512].Request.Method = "PUT"; + Requests[4512].Request.Path = "/subscriptions/c74d7c69-9aaa-/resourceGroups/56cacb96-f951-4d3/providers/Microsoft.Sql/servers/c8806a7d-8/databases/064c89e2-65c/extensions/7bc53efd-f90d"; + Requests[4513] = new DefaultHttpContext(); + Requests[4513].RequestServices = CreateServices(); + Requests[4513].Request.Method = "GET"; + Requests[4513].Request.Path = "/subscriptions/2cbbef57-0474-/resourceGroups/19dd9497-1da0-4dc/providers/Microsoft.Sql/servers/a8c4cfc6-e/databases/9b60d6e6-b3d/geoBackupPolicies/9f9ec187-4dc6-48e8-"; + Requests[4514] = new DefaultHttpContext(); + Requests[4514].RequestServices = CreateServices(); + Requests[4514].Request.Method = "PUT"; + Requests[4514].Request.Path = "/subscriptions/99ad9b35-154b-/resourceGroups/5682f149-f5d5-482/providers/Microsoft.Sql/servers/b537b357-e/databases/faee1d23-1ac/geoBackupPolicies/e1bee0fe-f1c5-40e1-"; + Requests[4515] = new DefaultHttpContext(); + Requests[4515].RequestServices = CreateServices(); + Requests[4515].Request.Method = "GET"; + Requests[4515].Request.Path = "/subscriptions/4dedea09-4f27-/resourceGroups/aaee8bf2-fa1f-43e/providers/Microsoft.Sql/servers/2c763e91-4/databases/7df93deb-fd9/replicationLinks/7cc377"; + Requests[4516] = new DefaultHttpContext(); + Requests[4516].RequestServices = CreateServices(); + Requests[4516].Request.Method = "DELETE"; + Requests[4516].Request.Path = "/subscriptions/f2b6a1a9-81cb-/resourceGroups/2121e4c3-fd84-45c/providers/Microsoft.Sql/servers/870672d2-e/databases/3602174a-363/replicationLinks/098b45"; + Requests[4517] = new DefaultHttpContext(); + Requests[4517].RequestServices = CreateServices(); + Requests[4517].Request.Method = "DELETE"; + Requests[4517].Request.Path = "/subscriptions/1308755e-0c21-/resourceGroups/f89597f3-f535-44e/providers/Microsoft.Sql/servers/7b91a1b9-2/databases/516f5853-22f/restorePoints/f42ea6dc-2361-4f"; + Requests[4518] = new DefaultHttpContext(); + Requests[4518].RequestServices = CreateServices(); + Requests[4518].Request.Method = "GET"; + Requests[4518].Request.Path = "/subscriptions/39b49b16-0d55-/resourceGroups/f66d2eec-0c3a-4c6/providers/Microsoft.Sql/servers/4cfd0ea0-0/databases/e3628eac-877/restorePoints/0c46238a-339b-43"; + Requests[4519] = new DefaultHttpContext(); + Requests[4519].RequestServices = CreateServices(); + Requests[4519].Request.Method = "PUT"; + Requests[4519].Request.Path = "/subscriptions/51e4847d-0403-/resourceGroups/9f16b6b6-9b72-4ac/providers/Microsoft.Sql/servers/824c39d4-8/databases/9fc51aa9-4ce/securityAlertPolicies/c7920286-6399-4494-abf1"; + Requests[4520] = new DefaultHttpContext(); + Requests[4520].RequestServices = CreateServices(); + Requests[4520].Request.Method = "GET"; + Requests[4520].Request.Path = "/subscriptions/54fc9a41-7b78-/resourceGroups/727093dc-cc6c-4a4/providers/Microsoft.Sql/servers/6f90a8f5-a/databases/c6e56975-243/securityAlertPolicies/dfd51533-bb6b-4b61-b2ce"; + Requests[4521] = new DefaultHttpContext(); + Requests[4521].RequestServices = CreateServices(); + Requests[4521].Request.Method = "GET"; + Requests[4521].Request.Path = "/subscriptions/1167c9e6-20ba-/resourceGroups/b0d8d6e7-9fd5-443/providers/Microsoft.Sql/servers/baefe578-d/databases/6942b82c-9fd/serviceTierAdvisors/57578aff-ed17-441d-af3"; + Requests[4522] = new DefaultHttpContext(); + Requests[4522].RequestServices = CreateServices(); + Requests[4522].Request.Method = "GET"; + Requests[4522].Request.Path = "/subscriptions/dd1d6216-cceb-/resourceGroups/1552b142-b2aa-400/providers/Microsoft.Sql/servers/0c5fa366-b/databases/d4291900-390/syncGroups/74f83a44-37e0"; + Requests[4523] = new DefaultHttpContext(); + Requests[4523].RequestServices = CreateServices(); + Requests[4523].Request.Method = "PATCH"; + Requests[4523].Request.Path = "/subscriptions/dcb88a58-fa1a-/resourceGroups/8e434d35-27ed-416/providers/Microsoft.Sql/servers/d956a391-e/databases/0bbc995b-d46/syncGroups/4e309e41-8c64"; + Requests[4524] = new DefaultHttpContext(); + Requests[4524].RequestServices = CreateServices(); + Requests[4524].Request.Method = "DELETE"; + Requests[4524].Request.Path = "/subscriptions/fa75bdbd-84a4-/resourceGroups/bcb45b89-b296-444/providers/Microsoft.Sql/servers/25da84cb-a/databases/2759d491-827/syncGroups/b47f1421-0393"; + Requests[4525] = new DefaultHttpContext(); + Requests[4525].RequestServices = CreateServices(); + Requests[4525].Request.Method = "PUT"; + Requests[4525].Request.Path = "/subscriptions/046f9886-55b3-/resourceGroups/ecd3d628-a690-411/providers/Microsoft.Sql/servers/fd529180-3/databases/c3d44f9b-6b8/syncGroups/0c6438bb-8fb9"; + Requests[4526] = new DefaultHttpContext(); + Requests[4526].RequestServices = CreateServices(); + Requests[4526].Request.Method = "PUT"; + Requests[4526].Request.Path = "/subscriptions/9ff977ab-9b5f-/resourceGroups/fd3abce9-0c39-497/providers/Microsoft.Sql/servers/0e22ac00-2/databases/c93d9985-6bd/transparentDataEncryption/7003a46b-a9ab-423b-9424-c448d"; + Requests[4527] = new DefaultHttpContext(); + Requests[4527].RequestServices = CreateServices(); + Requests[4527].Request.Method = "GET"; + Requests[4527].Request.Path = "/subscriptions/e6253e97-aa3c-/resourceGroups/81b74a90-13b9-48f/providers/Microsoft.Sql/servers/5a9559cd-0/databases/3c745ee5-21b/transparentDataEncryption/8718aa71-6ca4-4128-b483-72050"; + Requests[4528] = new DefaultHttpContext(); + Requests[4528].RequestServices = CreateServices(); + Requests[4528].Request.Method = "PUT"; + Requests[4528].Request.Path = "/subscriptions/134403da-d180-/resourceGroups/6c7a4109-c70f-479/providers/Microsoft.Sql/servers/8eed49bc-e/databases/3c6e2eb1-515/vulnerabilityAssessments/1e232ed7-3aa2-4008-8b6c-83f"; + Requests[4529] = new DefaultHttpContext(); + Requests[4529].RequestServices = CreateServices(); + Requests[4529].Request.Method = "DELETE"; + Requests[4529].Request.Path = "/subscriptions/f6fcc18e-6b57-/resourceGroups/224fc884-553f-4eb/providers/Microsoft.Sql/servers/bf7ffb5d-7/databases/d445f03e-915/vulnerabilityAssessments/210021ca-6b48-433e-a66a-d47"; + Requests[4530] = new DefaultHttpContext(); + Requests[4530].RequestServices = CreateServices(); + Requests[4530].Request.Method = "GET"; + Requests[4530].Request.Path = "/subscriptions/9e70092f-a65b-/resourceGroups/ba976dee-a91d-4a9/providers/Microsoft.Sql/servers/2bc1c8e2-e/databases/e5bcafdd-5dc/vulnerabilityAssessments/4558f911-b93b-4f9a-9a2c-742"; + Requests[4531] = new DefaultHttpContext(); + Requests[4531].RequestServices = CreateServices(); + Requests[4531].Request.Method = "GET"; + Requests[4531].Request.Path = "/subscriptions/777139d3-7d35-/resourceGroups/790983e3-b9f9-437/providers/Microsoft.Sql/servers/a0c5af0e-9/elasticPools/27114879-8c3d-4/databases/f945eb02-42d"; + Requests[4532] = new DefaultHttpContext(); + Requests[4532].RequestServices = CreateServices(); + Requests[4532].Request.Method = "DELETE"; + Requests[4532].Request.Path = "/subscriptions/f6a8ecce-3c2a-/resourceGroups/ea088ef9-07b2-405/providers/Microsoft.Sql/servers/5f625b94-5/jobAgents/38d11e14-1e4/credentials/c8a4b146-1e53-"; + Requests[4533] = new DefaultHttpContext(); + Requests[4533].RequestServices = CreateServices(); + Requests[4533].Request.Method = "PUT"; + Requests[4533].Request.Path = "/subscriptions/82317178-bf09-/resourceGroups/be0fe157-1ab4-4bf/providers/Microsoft.Sql/servers/5b156814-9/jobAgents/325ad53f-b17/credentials/075f01dc-0cf2-"; + Requests[4534] = new DefaultHttpContext(); + Requests[4534].RequestServices = CreateServices(); + Requests[4534].Request.Method = "GET"; + Requests[4534].Request.Path = "/subscriptions/9dbe350d-66d9-/resourceGroups/f33f0a87-db9d-4b6/providers/Microsoft.Sql/servers/ee3c3094-7/jobAgents/0812ebc3-4d3/credentials/530fa450-9cae-"; + Requests[4535] = new DefaultHttpContext(); + Requests[4535].RequestServices = CreateServices(); + Requests[4535].Request.Method = "GET"; + Requests[4535].Request.Path = "/subscriptions/f1fc7b10-9b73-/resourceGroups/4c7fc6ed-e7f5-4eb/providers/Microsoft.Sql/servers/2454cd9a-6/jobAgents/08862a00-55e/jobs/eaab2d0"; + Requests[4536] = new DefaultHttpContext(); + Requests[4536].RequestServices = CreateServices(); + Requests[4536].Request.Method = "PUT"; + Requests[4536].Request.Path = "/subscriptions/f5e0ef43-82ce-/resourceGroups/7ebc2865-7808-4e3/providers/Microsoft.Sql/servers/557634c6-a/jobAgents/c8d0caa3-ef4/jobs/60aa1c8"; + Requests[4537] = new DefaultHttpContext(); + Requests[4537].RequestServices = CreateServices(); + Requests[4537].Request.Method = "DELETE"; + Requests[4537].Request.Path = "/subscriptions/03b89e4d-43f3-/resourceGroups/c7f2be20-2929-40f/providers/Microsoft.Sql/servers/73bb82fa-e/jobAgents/96ba982f-0df/jobs/cc0ab9a"; + Requests[4538] = new DefaultHttpContext(); + Requests[4538].RequestServices = CreateServices(); + Requests[4538].Request.Method = "PUT"; + Requests[4538].Request.Path = "/subscriptions/eab6d186-ee37-/resourceGroups/13bb68af-72da-474/providers/Microsoft.Sql/servers/8520a5dd-a/jobAgents/1e7c51e8-788/targetGroups/c90d4c5c-c5a3-4"; + Requests[4539] = new DefaultHttpContext(); + Requests[4539].RequestServices = CreateServices(); + Requests[4539].Request.Method = "DELETE"; + Requests[4539].Request.Path = "/subscriptions/5b5c0bc1-7f73-/resourceGroups/5516e4ae-f047-46e/providers/Microsoft.Sql/servers/2e1c142d-3/jobAgents/8193eff4-d27/targetGroups/626fde63-3295-4"; + Requests[4540] = new DefaultHttpContext(); + Requests[4540].RequestServices = CreateServices(); + Requests[4540].Request.Method = "GET"; + Requests[4540].Request.Path = "/subscriptions/fdb6b865-4477-/resourceGroups/a55b014b-544a-4ac/providers/Microsoft.Sql/servers/1dd448ca-a/jobAgents/bf669473-ee0/targetGroups/c3bf3231-83b2-4"; + Requests[4541] = new DefaultHttpContext(); + Requests[4541].RequestServices = CreateServices(); + Requests[4541].Request.Method = "GET"; + Requests[4541].Request.Path = "/subscriptions/23dfa115-fe08-/resourceGroups/55004a3a-086e-498/providers/Microsoft.Sql/servers/12af77cd-b/recommendedElasticPools/3be2fc56-e1bf-4e86-981e-27/databases/619a2d3a-7df"; + Requests[4542] = new DefaultHttpContext(); + Requests[4542].RequestServices = CreateServices(); + Requests[4542].Request.Method = "GET"; + Requests[4542].Request.Path = "/subscriptions/e9b0098c-e553-/resourceGroups/aae93ab6-80f4-45a/providers/Microsoft.StorSimple/managers/9ed8a879-01/devices/c452ae90-d/backupPolicies/8806fa21-0eee-47"; + Requests[4543] = new DefaultHttpContext(); + Requests[4543].RequestServices = CreateServices(); + Requests[4543].Request.Method = "PUT"; + Requests[4543].Request.Path = "/subscriptions/134af5d9-03d2-/resourceGroups/6832e6a7-deb0-4e4/providers/Microsoft.StorSimple/managers/9fc73d39-e0/devices/fc568390-c/backupPolicies/f49606ad-594e-45"; + Requests[4544] = new DefaultHttpContext(); + Requests[4544].RequestServices = CreateServices(); + Requests[4544].Request.Method = "DELETE"; + Requests[4544].Request.Path = "/subscriptions/bb9b3ea0-ef3c-/resourceGroups/146e7a23-dfaf-44a/providers/Microsoft.StorSimple/managers/b788d429-08/devices/357bb1fc-3/backupPolicies/f1ba325e-f118-4e"; + Requests[4545] = new DefaultHttpContext(); + Requests[4545].RequestServices = CreateServices(); + Requests[4545].Request.Method = "DELETE"; + Requests[4545].Request.Path = "/subscriptions/1a53ca10-a3e9-/resourceGroups/fa6c5b18-bc34-421/providers/Microsoft.StorSimple/managers/e1bd4232-1e/devices/71125bd0-d/backups/e1d37bf4-a"; + Requests[4546] = new DefaultHttpContext(); + Requests[4546].RequestServices = CreateServices(); + Requests[4546].Request.Method = "GET"; + Requests[4546].Request.Path = "/subscriptions/fc30bd36-b871-/resourceGroups/e3009f1e-aa7d-4f0/providers/Microsoft.StorSimple/managers/50859317-43/devices/771082e5-f/jobs/c43b6aa"; + Requests[4547] = new DefaultHttpContext(); + Requests[4547].RequestServices = CreateServices(); + Requests[4547].Request.Method = "DELETE"; + Requests[4547].Request.Path = "/subscriptions/dd9b4fb1-1acb-/resourceGroups/7e0e75d1-c4de-466/providers/Microsoft.StorSimple/managers/1fd71c47-48/devices/70595bf1-c/volumeContainers/3ca52d5d-8218-459f-"; + Requests[4548] = new DefaultHttpContext(); + Requests[4548].RequestServices = CreateServices(); + Requests[4548].Request.Method = "PUT"; + Requests[4548].Request.Path = "/subscriptions/bf0eef84-787d-/resourceGroups/86949a1f-5fe8-4b9/providers/Microsoft.StorSimple/managers/aad30150-f1/devices/1816f18b-8/volumeContainers/7841a8cf-dbcc-46e9-"; + Requests[4549] = new DefaultHttpContext(); + Requests[4549].RequestServices = CreateServices(); + Requests[4549].Request.Method = "GET"; + Requests[4549].Request.Path = "/subscriptions/2454e852-ad9f-/resourceGroups/61e37f65-da6d-4ab/providers/Microsoft.StorSimple/managers/8da5b4b4-03/devices/dc25aece-c/volumeContainers/3b8a133e-97eb-48a5-"; + Requests[4550] = new DefaultHttpContext(); + Requests[4550].RequestServices = CreateServices(); + Requests[4550].Request.Method = "GET"; + Requests[4550].Request.Path = "/subscriptions/7c4c311e-255c-/resourcegroups/27c547c5-f201-494/providers/Microsoft.Update.Admin/updateLocations/a160f3b4-d0d9-/updates/db5b0d27-9/updateRuns/6b5f323"; + Requests[4551] = new DefaultHttpContext(); + Requests[4551].RequestServices = CreateServices(); + Requests[4551].Request.Method = "GET"; + Requests[4551].Request.Path = "/subscriptions/8ccc44b2-7bbd-/resourceGroups/18599c76-ae04-4aa/providers/Microsoft.Web/serverfarms/9c34c/hybridConnectionNamespaces/3f5ee84c-981c/relays/65a5cee8-"; + Requests[4552] = new DefaultHttpContext(); + Requests[4552].RequestServices = CreateServices(); + Requests[4552].Request.Method = "DELETE"; + Requests[4552].Request.Path = "/subscriptions/16b81bed-2a95-/resourceGroups/99dc0c0a-e2bb-447/providers/Microsoft.Web/serverfarms/1a3a1/hybridConnectionNamespaces/63a3458f-256c/relays/b103f3eb-"; + Requests[4553] = new DefaultHttpContext(); + Requests[4553].RequestServices = CreateServices(); + Requests[4553].Request.Method = "GET"; + Requests[4553].Request.Path = "/subscriptions/02a28c4e-afe6-/resourceGroups/0c1722a5-2ff6-41f/providers/Microsoft.Web/serverfarms/91de0/virtualNetworkConnections/bb0d60b8/gateways/fd801e1a-97"; + Requests[4554] = new DefaultHttpContext(); + Requests[4554].RequestServices = CreateServices(); + Requests[4554].Request.Method = "PUT"; + Requests[4554].Request.Path = "/subscriptions/ab68a19c-a12d-/resourceGroups/8329e33a-1243-4d9/providers/Microsoft.Web/serverfarms/c4dae/virtualNetworkConnections/6a03d0f2/gateways/53428e36-bc"; + Requests[4555] = new DefaultHttpContext(); + Requests[4555].RequestServices = CreateServices(); + Requests[4555].Request.Method = "PATCH"; + Requests[4555].Request.Path = "/subscriptions/bc1ec11d-4ebb-/resourceGroups/281e510e-d4c3-471/providers/Microsoft.Web/serverfarms/05ade/virtualNetworkConnections/d0311fae/routes/b09cda9f-"; + Requests[4556] = new DefaultHttpContext(); + Requests[4556].RequestServices = CreateServices(); + Requests[4556].Request.Method = "GET"; + Requests[4556].Request.Path = "/subscriptions/0eca9e28-5da3-/resourceGroups/eacbecb1-598f-427/providers/Microsoft.Web/serverfarms/4cdc9/virtualNetworkConnections/66dd524d/routes/7490fcd3-"; + Requests[4557] = new DefaultHttpContext(); + Requests[4557].RequestServices = CreateServices(); + Requests[4557].Request.Method = "DELETE"; + Requests[4557].Request.Path = "/subscriptions/1f101410-0c7b-/resourceGroups/22d110c7-4371-47e/providers/Microsoft.Web/serverfarms/2c0e6/virtualNetworkConnections/127d0852/routes/18f0f4c1-"; + Requests[4558] = new DefaultHttpContext(); + Requests[4558].RequestServices = CreateServices(); + Requests[4558].Request.Method = "PUT"; + Requests[4558].Request.Path = "/subscriptions/e66d3e7f-4e68-/resourceGroups/656a1d4a-84e0-41c/providers/Microsoft.Web/serverfarms/a9df7/virtualNetworkConnections/22fdfce8/routes/a3d8dcce-"; + Requests[4559] = new DefaultHttpContext(); + Requests[4559].RequestServices = CreateServices(); + Requests[4559].Request.Method = "GET"; + Requests[4559].Request.Path = "/subscriptions/4bf9662f-1ae2-/resourceGroups/b1e9c924-31f2-459/providers/Microsoft.Web/sites/2f7cc/hybridConnectionNamespaces/e043d137-ff2a/relays/203f0589-"; + Requests[4560] = new DefaultHttpContext(); + Requests[4560].RequestServices = CreateServices(); + Requests[4560].Request.Method = "DELETE"; + Requests[4560].Request.Path = "/subscriptions/71572216-2a7e-/resourceGroups/28e0c593-d566-405/providers/Microsoft.Web/sites/ca1c0/hybridConnectionNamespaces/96b5b856-f94f/relays/a36bcd34-"; + Requests[4561] = new DefaultHttpContext(); + Requests[4561].RequestServices = CreateServices(); + Requests[4561].Request.Method = "PUT"; + Requests[4561].Request.Path = "/subscriptions/065959b4-00aa-/resourceGroups/9184f02a-4537-4f0/providers/Microsoft.Web/sites/41c69/hybridConnectionNamespaces/29f1b5ac-d229/relays/a4ee2098-"; + Requests[4562] = new DefaultHttpContext(); + Requests[4562].RequestServices = CreateServices(); + Requests[4562].Request.Method = "PATCH"; + Requests[4562].Request.Path = "/subscriptions/e9288c67-a224-/resourceGroups/769f7a44-c71e-4ca/providers/Microsoft.Web/sites/967e7/hybridConnectionNamespaces/a40df96a-af0b/relays/a09da9e0-"; + Requests[4563] = new DefaultHttpContext(); + Requests[4563].RequestServices = CreateServices(); + Requests[4563].Request.Method = "DELETE"; + Requests[4563].Request.Path = "/subscriptions/16577e4a-8f68-/resourceGroups/daf73c0f-7e05-400/providers/Microsoft.Web/sites/0c601/instances/4c592637-8/deployments/3efa9"; + Requests[4564] = new DefaultHttpContext(); + Requests[4564].RequestServices = CreateServices(); + Requests[4564].Request.Method = "GET"; + Requests[4564].Request.Path = "/subscriptions/a4a2f174-199b-/resourceGroups/8316df1c-8ab2-47e/providers/Microsoft.Web/sites/22c37/instances/13073901-1/deployments/77cab"; + Requests[4565] = new DefaultHttpContext(); + Requests[4565].RequestServices = CreateServices(); + Requests[4565].Request.Method = "PUT"; + Requests[4565].Request.Path = "/subscriptions/9aeff4d7-8b80-/resourceGroups/41dabbc3-26d6-469/providers/Microsoft.Web/sites/108f5/instances/2daac5cf-8/deployments/47b48"; + Requests[4566] = new DefaultHttpContext(); + Requests[4566].RequestServices = CreateServices(); + Requests[4566].Request.Method = "GET"; + Requests[4566].Request.Path = "/subscriptions/86167d36-a41d-/resourceGroups/9d07b603-59ea-45a/providers/Microsoft.Web/sites/65ddd/instances/e4d7b9cc-e/processes/773de4a5-"; + Requests[4567] = new DefaultHttpContext(); + Requests[4567].RequestServices = CreateServices(); + Requests[4567].Request.Method = "DELETE"; + Requests[4567].Request.Path = "/subscriptions/5bca078b-ec4a-/resourceGroups/10526fea-45fe-4bc/providers/Microsoft.Web/sites/e295b/instances/fe47870c-f/processes/cdb2697a-"; + Requests[4568] = new DefaultHttpContext(); + Requests[4568].RequestServices = CreateServices(); + Requests[4568].Request.Method = "GET"; + Requests[4568].Request.Path = "/subscriptions/683d8a88-4531-/resourceGroups/9d1ac3dc-f3aa-4c0/providers/Microsoft.Web/sites/14408/processes/3d01fa6f-/modules/03254486-75"; + Requests[4569] = new DefaultHttpContext(); + Requests[4569].RequestServices = CreateServices(); + Requests[4569].Request.Method = "GET"; + Requests[4569].Request.Path = "/subscriptions/dcb1def1-77a4-/resourceGroups/4e58ffb3-59da-4c7/providers/Microsoft.Web/sites/e3e4f/processes/ce118d36-/threads/853c4503"; + Requests[4570] = new DefaultHttpContext(); + Requests[4570].RequestServices = CreateServices(); + Requests[4570].Request.Method = "DELETE"; + Requests[4570].Request.Path = "/subscriptions/4bd13842-f3f1-/resourceGroups/f830c583-26ca-486/providers/Microsoft.Web/sites/2e4f7/slots/ddcbc/backups/e695d36e"; + Requests[4571] = new DefaultHttpContext(); + Requests[4571].RequestServices = CreateServices(); + Requests[4571].Request.Method = "GET"; + Requests[4571].Request.Path = "/subscriptions/e4b04022-13cf-/resourceGroups/56bb82ba-050e-414/providers/Microsoft.Web/sites/9ff49/slots/91118/backups/d8bf1ab9"; + Requests[4572] = new DefaultHttpContext(); + Requests[4572].RequestServices = CreateServices(); + Requests[4572].Request.Method = "GET"; + Requests[4572].Request.Path = "/subscriptions/7290dbbe-a447-/resourceGroups/ecfe6357-cc78-43f/providers/Microsoft.Web/sites/a5075/slots/35a61/continuouswebjobs/77820268-d"; + Requests[4573] = new DefaultHttpContext(); + Requests[4573].RequestServices = CreateServices(); + Requests[4573].Request.Method = "DELETE"; + Requests[4573].Request.Path = "/subscriptions/23fe0af1-bffa-/resourceGroups/76027531-555f-425/providers/Microsoft.Web/sites/ccd21/slots/1954e/continuouswebjobs/2369abb2-8"; + Requests[4574] = new DefaultHttpContext(); + Requests[4574].RequestServices = CreateServices(); + Requests[4574].Request.Method = "GET"; + Requests[4574].Request.Path = "/subscriptions/2aa18cad-5f1c-/resourceGroups/6bcce4dd-dc29-497/providers/Microsoft.Web/sites/6da7a/slots/581ae/deployments/0935f"; + Requests[4575] = new DefaultHttpContext(); + Requests[4575].RequestServices = CreateServices(); + Requests[4575].Request.Method = "PUT"; + Requests[4575].Request.Path = "/subscriptions/f2c9e740-cbd0-/resourceGroups/677a1275-4e52-4f8/providers/Microsoft.Web/sites/f3e76/slots/ab59f/deployments/d6531"; + Requests[4576] = new DefaultHttpContext(); + Requests[4576].RequestServices = CreateServices(); + Requests[4576].Request.Method = "DELETE"; + Requests[4576].Request.Path = "/subscriptions/f21c1bbe-c4d1-/resourceGroups/ccceb7f3-ccb0-4bc/providers/Microsoft.Web/sites/a6000/slots/918a6/deployments/fe983"; + Requests[4577] = new DefaultHttpContext(); + Requests[4577].RequestServices = CreateServices(); + Requests[4577].Request.Method = "PUT"; + Requests[4577].Request.Path = "/subscriptions/c8952bf5-94e9-/resourceGroups/e670e7aa-0b8a-40b/providers/Microsoft.Web/sites/b6679/slots/0926e/domainOwnershipIdentifiers/60455006-66f9-43e8-b085-43b2e"; + Requests[4578] = new DefaultHttpContext(); + Requests[4578].RequestServices = CreateServices(); + Requests[4578].Request.Method = "PATCH"; + Requests[4578].Request.Path = "/subscriptions/5c88e16d-2f5e-/resourceGroups/18a0294f-2acb-4e9/providers/Microsoft.Web/sites/38fc2/slots/dd532/domainOwnershipIdentifiers/ba49226f-fc1f-4f7f-bb06-1eb4c"; + Requests[4579] = new DefaultHttpContext(); + Requests[4579].RequestServices = CreateServices(); + Requests[4579].Request.Method = "DELETE"; + Requests[4579].Request.Path = "/subscriptions/1e5ba95b-1bc7-/resourceGroups/e4b9f1ce-0002-416/providers/Microsoft.Web/sites/91378/slots/3f42d/domainOwnershipIdentifiers/87b12425-9789-4517-bdfd-59057"; + Requests[4580] = new DefaultHttpContext(); + Requests[4580].RequestServices = CreateServices(); + Requests[4580].Request.Method = "GET"; + Requests[4580].Request.Path = "/subscriptions/6148a252-3427-/resourceGroups/5cb2651a-3565-4f9/providers/Microsoft.Web/sites/261f9/slots/355de/domainOwnershipIdentifiers/b4b14643-0cb0-49f9-a8d3-7c3e3"; + Requests[4581] = new DefaultHttpContext(); + Requests[4581].RequestServices = CreateServices(); + Requests[4581].Request.Method = "PUT"; + Requests[4581].Request.Path = "/subscriptions/64b127a8-316e-/resourceGroups/bc4c8305-1058-4c8/providers/Microsoft.Web/sites/fd8a7/slots/55c52/functions/68884b4b-756"; + Requests[4582] = new DefaultHttpContext(); + Requests[4582].RequestServices = CreateServices(); + Requests[4582].Request.Method = "GET"; + Requests[4582].Request.Path = "/subscriptions/79f8d6f3-f5c1-/resourceGroups/31dea9d0-6140-47e/providers/Microsoft.Web/sites/998a6/slots/1cc4d/functions/32ee21c8-b1a"; + Requests[4583] = new DefaultHttpContext(); + Requests[4583].RequestServices = CreateServices(); + Requests[4583].Request.Method = "DELETE"; + Requests[4583].Request.Path = "/subscriptions/247c6684-df17-/resourceGroups/ce9f4bd7-4c49-441/providers/Microsoft.Web/sites/93437/slots/3d932/functions/8636d20c-380"; + Requests[4584] = new DefaultHttpContext(); + Requests[4584].RequestServices = CreateServices(); + Requests[4584].Request.Method = "GET"; + Requests[4584].Request.Path = "/subscriptions/10ce481c-9799-/resourceGroups/f1e74413-3fb8-4a9/providers/Microsoft.Web/sites/2e87a/slots/aa8d4/hostNameBindings/3a60f5d5"; + Requests[4585] = new DefaultHttpContext(); + Requests[4585].RequestServices = CreateServices(); + Requests[4585].Request.Method = "PUT"; + Requests[4585].Request.Path = "/subscriptions/fbf9a11b-a558-/resourceGroups/c9cb330a-9e3b-461/providers/Microsoft.Web/sites/d29e1/slots/6e312/hostNameBindings/2a62bfc9"; + Requests[4586] = new DefaultHttpContext(); + Requests[4586].RequestServices = CreateServices(); + Requests[4586].Request.Method = "DELETE"; + Requests[4586].Request.Path = "/subscriptions/e77eed08-7020-/resourceGroups/f99f5322-693b-43e/providers/Microsoft.Web/sites/1d139/slots/f0886/hostNameBindings/4187e3c1"; + Requests[4587] = new DefaultHttpContext(); + Requests[4587].RequestServices = CreateServices(); + Requests[4587].Request.Method = "GET"; + Requests[4587].Request.Path = "/subscriptions/ece2b0d7-d41a-/resourceGroups/f574814d-2c41-4d9/providers/Microsoft.Web/sites/9f697/slots/3dc3f/hybridconnection/ff820818-b"; + Requests[4588] = new DefaultHttpContext(); + Requests[4588].RequestServices = CreateServices(); + Requests[4588].Request.Method = "PUT"; + Requests[4588].Request.Path = "/subscriptions/a59a0277-70bc-/resourceGroups/7dc8e73b-3595-443/providers/Microsoft.Web/sites/d9f43/slots/36556/hybridconnection/ec707d39-6"; + Requests[4589] = new DefaultHttpContext(); + Requests[4589].RequestServices = CreateServices(); + Requests[4589].Request.Method = "DELETE"; + Requests[4589].Request.Path = "/subscriptions/b2c30c33-5d0d-/resourceGroups/079da6fb-df48-48d/providers/Microsoft.Web/sites/7d66b/slots/5fa7a/hybridconnection/b6ee9be8-d"; + Requests[4590] = new DefaultHttpContext(); + Requests[4590].RequestServices = CreateServices(); + Requests[4590].Request.Method = "PATCH"; + Requests[4590].Request.Path = "/subscriptions/8451bce9-1425-/resourceGroups/f20c9b02-6922-47b/providers/Microsoft.Web/sites/c66fd/slots/e7b99/hybridconnection/e3f49a16-9"; + Requests[4591] = new DefaultHttpContext(); + Requests[4591].RequestServices = CreateServices(); + Requests[4591].Request.Method = "GET"; + Requests[4591].Request.Path = "/subscriptions/f1a995f9-6699-/resourceGroups/a87649db-6846-4e4/providers/Microsoft.Web/sites/2446d/slots/5d3d0/networkFeatures/ce2d9"; + Requests[4592] = new DefaultHttpContext(); + Requests[4592].RequestServices = CreateServices(); + Requests[4592].Request.Method = "GET"; + Requests[4592].Request.Path = "/subscriptions/cb235d84-8f4f-/resourceGroups/34c322e2-182f-4cf/providers/Microsoft.Web/sites/863ce/slots/d104e/operationresults/28e70d4d-af"; + Requests[4593] = new DefaultHttpContext(); + Requests[4593].RequestServices = CreateServices(); + Requests[4593].Request.Method = "DELETE"; + Requests[4593].Request.Path = "/subscriptions/ed896b9e-0959-/resourceGroups/e3edc4be-3baa-49e/providers/Microsoft.Web/sites/3b1ad/slots/cd84a/premieraddons/740f6262-2506-45"; + Requests[4594] = new DefaultHttpContext(); + Requests[4594].RequestServices = CreateServices(); + Requests[4594].Request.Method = "PUT"; + Requests[4594].Request.Path = "/subscriptions/08f8cad7-ca9c-/resourceGroups/a4a453a6-3a10-438/providers/Microsoft.Web/sites/1567c/slots/1ff48/premieraddons/a96b5d2e-ef8c-4f"; + Requests[4595] = new DefaultHttpContext(); + Requests[4595].RequestServices = CreateServices(); + Requests[4595].Request.Method = "GET"; + Requests[4595].Request.Path = "/subscriptions/4b1dc19b-9bdc-/resourceGroups/d8692c18-5ea9-446/providers/Microsoft.Web/sites/61cbe/slots/3dbb7/premieraddons/962e6a02-e883-42"; + Requests[4596] = new DefaultHttpContext(); + Requests[4596].RequestServices = CreateServices(); + Requests[4596].Request.Method = "DELETE"; + Requests[4596].Request.Path = "/subscriptions/4fbf8013-daf3-/resourceGroups/0e147d81-c585-4e2/providers/Microsoft.Web/sites/e5337/slots/2c00b/processes/99376403-"; + Requests[4597] = new DefaultHttpContext(); + Requests[4597].RequestServices = CreateServices(); + Requests[4597].Request.Method = "GET"; + Requests[4597].Request.Path = "/subscriptions/de888ba1-c339-/resourceGroups/b4d18007-7de7-464/providers/Microsoft.Web/sites/ffee2/slots/9b34e/processes/e558d153-"; + Requests[4598] = new DefaultHttpContext(); + Requests[4598].RequestServices = CreateServices(); + Requests[4598].Request.Method = "DELETE"; + Requests[4598].Request.Path = "/subscriptions/b1c961c5-1fa0-/resourceGroups/37ac507c-c2e1-466/providers/Microsoft.Web/sites/b7ba7/slots/45df2/publicCertificates/852195db-f17d-4af9-8c"; + Requests[4599] = new DefaultHttpContext(); + Requests[4599].RequestServices = CreateServices(); + Requests[4599].Request.Method = "PUT"; + Requests[4599].Request.Path = "/subscriptions/19e868ba-2b60-/resourceGroups/cd81327d-118a-4fa/providers/Microsoft.Web/sites/1b622/slots/97e67/publicCertificates/d15b43c6-95fe-420b-95"; + Requests[4600] = new DefaultHttpContext(); + Requests[4600].RequestServices = CreateServices(); + Requests[4600].Request.Method = "GET"; + Requests[4600].Request.Path = "/subscriptions/4150fd67-2add-/resourceGroups/474f5374-0d4f-4e0/providers/Microsoft.Web/sites/b6268/slots/01c72/publicCertificates/2500b811-c647-41ae-91"; + Requests[4601] = new DefaultHttpContext(); + Requests[4601].RequestServices = CreateServices(); + Requests[4601].Request.Method = "PUT"; + Requests[4601].Request.Path = "/subscriptions/be150fd5-da2e-/resourceGroups/67ec8879-58df-470/providers/Microsoft.Web/sites/0f85c/slots/ea767/siteextensions/3fb1c96b-1afd-4"; + Requests[4602] = new DefaultHttpContext(); + Requests[4602].RequestServices = CreateServices(); + Requests[4602].Request.Method = "GET"; + Requests[4602].Request.Path = "/subscriptions/482f456f-dd99-/resourceGroups/5b65d08f-f0ad-46d/providers/Microsoft.Web/sites/830b3/slots/e74f3/siteextensions/33bfaa78-9423-4"; + Requests[4603] = new DefaultHttpContext(); + Requests[4603].RequestServices = CreateServices(); + Requests[4603].Request.Method = "DELETE"; + Requests[4603].Request.Path = "/subscriptions/d29037ce-c7ba-/resourceGroups/21f0623c-a79c-46a/providers/Microsoft.Web/sites/6acfd/slots/7f6b3/siteextensions/dc5e107d-538a-4"; + Requests[4604] = new DefaultHttpContext(); + Requests[4604].RequestServices = CreateServices(); + Requests[4604].Request.Method = "GET"; + Requests[4604].Request.Path = "/subscriptions/5359afd6-5d97-/resourceGroups/e4375b42-246d-45f/providers/Microsoft.Web/sites/5e954/slots/dc2a3/triggeredwebjobs/cfaebbdd-f"; + Requests[4605] = new DefaultHttpContext(); + Requests[4605].RequestServices = CreateServices(); + Requests[4605].Request.Method = "DELETE"; + Requests[4605].Request.Path = "/subscriptions/ed6fcef2-1000-/resourceGroups/6b09c0ee-06c2-467/providers/Microsoft.Web/sites/bc0e9/slots/92a5f/triggeredwebjobs/95231cd5-6"; + Requests[4606] = new DefaultHttpContext(); + Requests[4606].RequestServices = CreateServices(); + Requests[4606].Request.Method = "PATCH"; + Requests[4606].Request.Path = "/subscriptions/ff5ddeb0-5302-/resourceGroups/61450bef-1ac8-433/providers/Microsoft.Web/sites/2a6df/slots/a3bc0/virtualNetworkConnections/2fdab763"; + Requests[4607] = new DefaultHttpContext(); + Requests[4607].RequestServices = CreateServices(); + Requests[4607].Request.Method = "DELETE"; + Requests[4607].Request.Path = "/subscriptions/785158fb-c47e-/resourceGroups/d02f0a9e-22cd-405/providers/Microsoft.Web/sites/d37fc/slots/73b8b/virtualNetworkConnections/220bf774"; + Requests[4608] = new DefaultHttpContext(); + Requests[4608].RequestServices = CreateServices(); + Requests[4608].Request.Method = "PUT"; + Requests[4608].Request.Path = "/subscriptions/9888e673-7dd5-/resourceGroups/404c35d1-9c15-405/providers/Microsoft.Web/sites/09ffc/slots/0768d/virtualNetworkConnections/a708b8fe"; + Requests[4609] = new DefaultHttpContext(); + Requests[4609].RequestServices = CreateServices(); + Requests[4609].Request.Method = "GET"; + Requests[4609].Request.Path = "/subscriptions/29883260-e3b9-/resourceGroups/d175fa98-6a2c-447/providers/Microsoft.Web/sites/5c77b/slots/6f140/virtualNetworkConnections/cb4ce436"; + Requests[4610] = new DefaultHttpContext(); + Requests[4610].RequestServices = CreateServices(); + Requests[4610].Request.Method = "GET"; + Requests[4610].Request.Path = "/subscriptions/5ba93901-2837-/resourceGroups/98cadafe-f685-4e2/providers/Microsoft.Web/sites/21a57/slots/b2a5c/webjobs/ab6406ac-8"; + Requests[4611] = new DefaultHttpContext(); + Requests[4611].RequestServices = CreateServices(); + Requests[4611].Request.Method = "GET"; + Requests[4611].Request.Path = "/subscriptions/fe9f3f35-f557-/resourceGroups/61a650a7-900a-454/providers/Microsoft.Web/sites/e144a/triggeredwebjobs/54e7f94d-b/history/3609d"; + Requests[4612] = new DefaultHttpContext(); + Requests[4612].RequestServices = CreateServices(); + Requests[4612].Request.Method = "GET"; + Requests[4612].Request.Path = "/subscriptions/7e77ecf3-c312-/resourceGroups/808b4175-5cb7-4db/providers/Microsoft.Web/sites/16300/virtualNetworkConnections/e96608d9/gateways/b90bfb7f-a8"; + Requests[4613] = new DefaultHttpContext(); + Requests[4613].RequestServices = CreateServices(); + Requests[4613].Request.Method = "PUT"; + Requests[4613].Request.Path = "/subscriptions/1f4c6c88-6d7a-/resourceGroups/f4645429-cac6-4e8/providers/Microsoft.Web/sites/345e4/virtualNetworkConnections/b71a6628/gateways/85141d67-f1"; + Requests[4614] = new DefaultHttpContext(); + Requests[4614].RequestServices = CreateServices(); + Requests[4614].Request.Method = "PATCH"; + Requests[4614].Request.Path = "/subscriptions/823f79b4-e70d-/resourceGroups/bf83f065-9947-472/providers/Microsoft.Web/sites/acb7b/virtualNetworkConnections/642a333f/gateways/3d7fba09-c4"; + Requests[4615] = new DefaultHttpContext(); + Requests[4615].RequestServices = CreateServices(); + Requests[4615].Request.Method = "GET"; + Requests[4615].Request.Path = "/subscriptions/ed870972-db93-/resourceGroups/6539e7e4-c445-4b4/providers/Microsoft.Web/sites/e211bed1/diagnostics/aa0472c0-7975-4c4c/analyses/5d871c08-9ed"; + Requests[4616] = new DefaultHttpContext(); + Requests[4616].RequestServices = CreateServices(); + Requests[4616].Request.Method = "GET"; + Requests[4616].Request.Path = "/subscriptions/20e51a72-3b29-/resourceGroups/390e9a83-cced-49b/providers/Microsoft.Web/sites/f37b756a/diagnostics/c4aaf014-4fa1-4970/detectors/1f8ac36e-c7b"; + Requests[4617] = new DefaultHttpContext(); + Requests[4617].RequestServices = CreateServices(); + Requests[4617].Request.Method = "GET"; + Requests[4617].Request.Path = "/subscriptions/6e36d8b9-41e7-/resourceGroups/84d0d63d-1985-450/providers/Microsoft.Web/sites/2254cbdd/slots/c2e91/detectors/0dde1c70-f99"; + Requests[4618] = new DefaultHttpContext(); + Requests[4618].RequestServices = CreateServices(); + Requests[4618].Request.Method = "GET"; + Requests[4618].Request.Path = "/subscriptions/7aaa83d3-e907-/resourceGroups/de61d3e3-0865-460/providers/Microsoft.Web/sites/c67b5a11/slots/02f73/diagnostics/64cdc8e5-5bca-4a7b"; + Requests[4619] = new DefaultHttpContext(); + Requests[4619].RequestServices = CreateServices(); + Requests[4619].Request.Method = "POST"; + Requests[4619].Request.Path = "/subscriptions/2a316c13-2f75-/resourceGroups/901ad935-/providers/Microsoft.DataMigration/services/b6c2b86e-82/projects/26b49766-2e/tasks/39e5b158/cancel"; + Requests[4620] = new DefaultHttpContext(); + Requests[4620].RequestServices = CreateServices(); + Requests[4620].Request.Method = "GET"; + Requests[4620].Request.Path = "/subscriptions/5e57a40c-bd9b-/resourceGroups/ed0859a2-a184-4a6/providers/Microsoft.ApiManagement/service/bb214a5e-cc/apis/9a587/diagnostics/043ed1c8-dc7/loggers"; + Requests[4621] = new DefaultHttpContext(); + Requests[4621].RequestServices = CreateServices(); + Requests[4621].Request.Method = "GET"; + Requests[4621].Request.Path = "/subscriptions/cc0d592e-da8a-/resourceGroups/0ce03460-8044-4ef/providers/Microsoft.ApiManagement/service/9cdc6ec4-ae/apis/9fb0d/issues/e6abb7b/attachments"; + Requests[4622] = new DefaultHttpContext(); + Requests[4622].RequestServices = CreateServices(); + Requests[4622].Request.Method = "GET"; + Requests[4622].Request.Path = "/subscriptions/678a1e0c-ad8e-/resourceGroups/56fa7705-4654-4b4/providers/Microsoft.ApiManagement/service/0558df17-7a/apis/ce611/issues/5e85a77/comments"; + Requests[4623] = new DefaultHttpContext(); + Requests[4623].RequestServices = CreateServices(); + Requests[4623].Request.Method = "GET"; + Requests[4623].Request.Path = "/subscriptions/eccc38f2-de22-/resourceGroups/bf1a7e17-97d3-45c/providers/Microsoft.ApiManagement/service/bd721139-56/apis/7ba1c/operations/d814d534-5d/policies"; + Requests[4624] = new DefaultHttpContext(); + Requests[4624].RequestServices = CreateServices(); + Requests[4624].Request.Method = "PUT"; + Requests[4624].Request.Path = "/subscriptions/4ea67935-f2df-/resourceGroups/5d960586-1088-423/providers/Microsoft.ApiManagement/service/7b5387a2-88/apis/a9bb2/operations/fe64242b-fc/policy"; + Requests[4625] = new DefaultHttpContext(); + Requests[4625].RequestServices = CreateServices(); + Requests[4625].Request.Method = "GET"; + Requests[4625].Request.Path = "/subscriptions/70ac1d0e-d736-/resourceGroups/aa7f14bb-614d-4a4/providers/Microsoft.ApiManagement/service/eb195c97-37/apis/1309a/operations/718d032f-34/policy"; + Requests[4626] = new DefaultHttpContext(); + Requests[4626].RequestServices = CreateServices(); + Requests[4626].Request.Method = "DELETE"; + Requests[4626].Request.Path = "/subscriptions/26aaed21-205f-/resourceGroups/38a2df36-337e-487/providers/Microsoft.ApiManagement/service/e5d4adab-cf/apis/c7960/operations/4fa149e0-f3/policy"; + Requests[4627] = new DefaultHttpContext(); + Requests[4627].RequestServices = CreateServices(); + Requests[4627].Request.Method = "GET"; + Requests[4627].Request.Path = "/subscriptions/c96856e6-5843-/resourceGroups/6f8771fc-556a-465/providers/Microsoft.ApiManagement/service/254a7370-9d/apis/af343/operations/67f710fb-9e/tags"; + Requests[4628] = new DefaultHttpContext(); + Requests[4628].RequestServices = CreateServices(); + Requests[4628].Request.Method = "GET"; + Requests[4628].Request.Path = "/subscriptions/b49afa26-1213-/resourceGroups/636f271d-d773-49b/providers/Microsoft.Automation/automationAccounts/a862d37f-07b0-4073-83/modules/711981e7-d/objectDataTypes/c5c50511/fields"; + Requests[4629] = new DefaultHttpContext(); + Requests[4629].RequestServices = CreateServices(); + Requests[4629].Request.Method = "GET"; + Requests[4629].Request.Path = "/subscriptions/a3a04081-cff3-/resourceGroups/ab362107-9b20-44a/providers/Microsoft.Automation/automationAccounts/77043c17-27b8-4964-bd/modules/c4eaab46-5/types/635a9ca7/fields"; + Requests[4630] = new DefaultHttpContext(); + Requests[4630].RequestServices = CreateServices(); + Requests[4630].Request.Method = "GET"; + Requests[4630].Request.Path = "/subscriptions/884a48eb-4ed5-/resourceGroups/a09994e4-f847-480/providers/Microsoft.Automation/automationAccounts/92e8ac8a-c95b-42e8-8b/nodes/2b4d19/reports/1fe50df2/content"; + Requests[4631] = new DefaultHttpContext(); + Requests[4631].RequestServices = CreateServices(); + Requests[4631].Request.Method = "GET"; + Requests[4631].Request.Path = "/subscriptions/678919d0-aa5c-/resourceGroups/dbcfbdae-92c4-455/providers/Microsoft.Automation/automationAccounts/026652d0-6071-43b7-8a/sourceControls/ae231b78-3d27-4d4/sourceControlSyncJobs/7563da3d-da1b-4a01-b51/streams"; + Requests[4632] = new DefaultHttpContext(); + Requests[4632].RequestServices = CreateServices(); + Requests[4632].Request.Method = "POST"; + Requests[4632].Request.Path = "/subscriptions/784da95c-3596-/resourceGroups/fd6d9dfe-5916-438/providers/Microsoft.Batch/batchAccounts/cc73dcc0-12/applications/175de30a-8f25/versions/c8674c6/activate"; + Requests[4633] = new DefaultHttpContext(); + Requests[4633].RequestServices = CreateServices(); + Requests[4633].Request.Method = "POST"; + Requests[4633].Request.Path = "/subscriptions/2b9d0055-af79-/resourceGroups/be52db09-8378-4de/providers/Microsoft.BatchAI/workspaces/643d8985-9881/experiments/1061cf2f-ae20-/jobs/7c9cf45/listOutputFiles"; + Requests[4634] = new DefaultHttpContext(); + Requests[4634].RequestServices = CreateServices(); + Requests[4634].Request.Method = "POST"; + Requests[4634].Request.Path = "/subscriptions/0a445623-51c0-/resourceGroups/65c2df20-3fd0-4d7/providers/Microsoft.BatchAI/workspaces/956bcfb1-a170/experiments/59cce4c5-bb7d-/jobs/32225fe/listRemoteLoginInformation"; + Requests[4635] = new DefaultHttpContext(); + Requests[4635].RequestServices = CreateServices(); + Requests[4635].Request.Method = "POST"; + Requests[4635].Request.Path = "/subscriptions/262ae6ab-a641-/resourceGroups/545fd887-56ce-4e1/providers/Microsoft.BatchAI/workspaces/f0da82e6-c0cf/experiments/76b98b18-f16f-/jobs/729e4af/terminate"; + Requests[4636] = new DefaultHttpContext(); + Requests[4636].RequestServices = CreateServices(); + Requests[4636].Request.Method = "POST"; + Requests[4636].Request.Path = "/subscriptions/a9ff0280-b67f-/resourceGroups/09b0b288-ba02-4fd/providers/Microsoft.Cdn/profiles/ebdbcc77-0a/endpoints/5fa2ee94-1bf/customDomains/36742a7a-834f-45/disableCustomHttps"; + Requests[4637] = new DefaultHttpContext(); + Requests[4637].RequestServices = CreateServices(); + Requests[4637].Request.Method = "POST"; + Requests[4637].Request.Path = "/subscriptions/fc12f3e0-ca95-/resourceGroups/499e19a5-c964-46e/providers/Microsoft.Cdn/profiles/2563cce7-28/endpoints/e60722c2-593/customDomains/6fc08f69-c1bc-4c/enableCustomHttps"; + Requests[4638] = new DefaultHttpContext(); + Requests[4638].RequestServices = CreateServices(); + Requests[4638].Request.Method = "GET"; + Requests[4638].Request.Path = "/subscriptions/474c69ea-ca47-/resourceGroups/3ded1517-20b2-4fd/providers/microsoft.Compute/virtualMachineScaleSets/2d75a9f9-3b1e-43e8-866f-1a/virtualMachines/357ee815-0798-45e9-/networkInterfaces/0f99f9ea-e602-4966-9/ipConfigurations"; + Requests[4639] = new DefaultHttpContext(); + Requests[4639].RequestServices = CreateServices(); + Requests[4639].Request.Method = "POST"; + Requests[4639].Request.Path = "/subscriptions/da1f0b6a-0d33-/resourceGroups/ff911d7b-276d-4e2/providers/Microsoft.ContainerRegistry/registries/2fb0e010-875/buildTasks/9bdd70a1-3b2d/steps/440ce127/listBuildArguments"; + Requests[4640] = new DefaultHttpContext(); + Requests[4640].RequestServices = CreateServices(); + Requests[4640].Request.Method = "POST"; + Requests[4640].Request.Path = "/subscriptions/9157eee2-c8e2-/resourceGroups/0b88d096-3bad-433/providers/Microsoft.DataFactory/factories/7bbe89be-84/integrationRuntimes/ea860637-732a-4345-b0d/nodes/06a750ff/ipAddress"; + Requests[4641] = new DefaultHttpContext(); + Requests[4641].RequestServices = CreateServices(); + Requests[4641].Request.Method = "POST"; + Requests[4641].Request.Path = "/subscriptions/41a69696-1fc2-/resourceGroups/8e610dfa-ffd9-4c5/providers/Microsoft.DataLakeAnalytics/accounts/1fd47faf-ed/storageAccounts/bfd221f9-2ec4-4f44/containers/d4d29c49-42c8/listSasTokens"; + Requests[4642] = new DefaultHttpContext(); + Requests[4642].RequestServices = CreateServices(); + Requests[4642].Request.Method = "POST"; + Requests[4642].Request.Path = "/subscriptions/aae4c8d2-4807-/resourceGroups/e380f542-52b4-463/providers/Microsoft.DevTestLab/labs/edde0e1/artifactsources/472d0d3e-7bb9-4ec8/artifacts/6d6c0/generateArmTemplate"; + Requests[4643] = new DefaultHttpContext(); + Requests[4643].RequestServices = CreateServices(); + Requests[4643].Request.Method = "POST"; + Requests[4643].Request.Path = "/subscriptions/0016b289-f138-/resourceGroups/62b144c9-49ea-40b/providers/Microsoft.DevTestLab/labs/cb81d45/users/31c3a41d/disks/eb9e8/attach"; + Requests[4644] = new DefaultHttpContext(); + Requests[4644].RequestServices = CreateServices(); + Requests[4644].Request.Method = "POST"; + Requests[4644].Request.Path = "/subscriptions/125f8b06-eaa0-/resourceGroups/17da6220-2bb9-4c7/providers/Microsoft.DevTestLab/labs/21e03c7/users/dcb89229/disks/5abf3/detach"; + Requests[4645] = new DefaultHttpContext(); + Requests[4645].RequestServices = CreateServices(); + Requests[4645].Request.Method = "POST"; + Requests[4645].Request.Path = "/subscriptions/7621f7c7-350e-/resourceGroups/0ef9b370-4142-4fc/providers/Microsoft.DevTestLab/labs/8acedc4/virtualmachines/906da87f-cba3-49aa/schedules/d3113/execute"; + Requests[4646] = new DefaultHttpContext(); + Requests[4646].RequestServices = CreateServices(); + Requests[4646].Request.Method = "GET"; + Requests[4646].Request.Path = "/subscriptions/5b14cf5b-e3e9-/resourceGroups/8afb3ce0-f16b-49d/providers/Microsoft.DocumentDB/databaseAccounts/f2882873-07/databases/305f2a42-70/collections/17e331c1-55ce/metricDefinitions"; + Requests[4647] = new DefaultHttpContext(); + Requests[4647].RequestServices = CreateServices(); + Requests[4647].Request.Method = "GET"; + Requests[4647].Request.Path = "/subscriptions/f23e7ead-6eac-/resourceGroups/17a4bdcf-eaaa-450/providers/Microsoft.DocumentDB/databaseAccounts/f9d2656e-7d/databases/d3ae8da4-f8/collections/a875001b-c083/metrics"; + Requests[4648] = new DefaultHttpContext(); + Requests[4648].RequestServices = CreateServices(); + Requests[4648].Request.Method = "GET"; + Requests[4648].Request.Path = "/subscriptions/65e1a259-19ed-/resourceGroups/515e01fa-92ef-4a9/providers/Microsoft.DocumentDB/databaseAccounts/7c53955c-6f/databases/bc5cc661-00/collections/07279bcd-2a78/usages"; + Requests[4649] = new DefaultHttpContext(); + Requests[4649].RequestServices = CreateServices(); + Requests[4649].Request.Method = "POST"; + Requests[4649].Request.Path = "/subscriptions/7c5edb0f-53f4-/resourceGroups/cf702679-907f-44b/providers/Microsoft.EventHub/namespaces/fffd0290-bc92/disasterRecoveryConfigs/010a8/AuthorizationRules/e2cd77a6-a86a-4ab5-8c/listKeys"; + Requests[4650] = new DefaultHttpContext(); + Requests[4650].RequestServices = CreateServices(); + Requests[4650].Request.Method = "POST"; + Requests[4650].Request.Path = "/subscriptions/7963ed7e-3a99-/resourceGroups/a2474553-f861-4d0/providers/Microsoft.EventHub/namespaces/9141bc12-e6e6/eventhubs/22dae399-ce5/authorizationRules/be7d1081-a946-437b-94/ListKeys"; + Requests[4651] = new DefaultHttpContext(); + Requests[4651].RequestServices = CreateServices(); + Requests[4651].Request.Method = "POST"; + Requests[4651].Request.Path = "/subscriptions/a3113c66-6749-/resourceGroups/01b773fb-c197-40d/providers/Microsoft.EventHub/namespaces/722d0e1b-76d7/eventhubs/c219d873-106/authorizationRules/119d43a2-a88e-4a82-b5/regenerateKeys"; + Requests[4652] = new DefaultHttpContext(); + Requests[4652].RequestServices = CreateServices(); + Requests[4652].Request.Method = "GET"; + Requests[4652].Request.Path = "/subscriptions/5def1ca9-9971-/resourceGroups/10ef1a53-8979-4b4/providers/Microsoft.Fabric.Admin/fabricLocations/66dcf053/storageSubSystems/9ce69a39-68c5-47/storagePools/ad2a80b9-05/volumes"; + Requests[4653] = new DefaultHttpContext(); + Requests[4653].RequestServices = CreateServices(); + Requests[4653].Request.Method = "POST"; + Requests[4653].Request.Path = "/subscriptions/63bbc153-b24f-/resourceGroups/14db5988-d13c-4eb/providers/Microsoft.Logic/workflows/fa5a2022-7c2/runs/ed19236/actions/75f1caec-8/listExpressionTraces"; + Requests[4654] = new DefaultHttpContext(); + Requests[4654].RequestServices = CreateServices(); + Requests[4654].Request.Method = "GET"; + Requests[4654].Request.Path = "/subscriptions/2d178029-846d-/resourceGroups/b7c9baad-5d58-45a/providers/Microsoft.Logic/workflows/ffe9bfaa-7bb/runs/9ad51bd/actions/d8dc37e2-3/repetitions"; + Requests[4655] = new DefaultHttpContext(); + Requests[4655].RequestServices = CreateServices(); + Requests[4655].Request.Method = "GET"; + Requests[4655].Request.Path = "/subscriptions/be93f2d2-54d5-/resourceGroups/595f1f7f-297f-400/providers/Microsoft.Logic/workflows/fec89924-c87/runs/13b51e1/actions/2a201158-3/scopeRepetitions"; + Requests[4656] = new DefaultHttpContext(); + Requests[4656].RequestServices = CreateServices(); + Requests[4656].Request.Method = "POST"; + Requests[4656].Request.Path = "/subscriptions/5fbe9fd3-ae90-/resourceGroups/bac0d39d-4e54-4a1/providers/Microsoft.Logic/workflows/1a4772f1-7ea/triggers/1cc22dcf-b6/histories/5b88bcac-84/resubmit"; + Requests[4657] = new DefaultHttpContext(); + Requests[4657].RequestServices = CreateServices(); + Requests[4657].Request.Method = "POST"; + Requests[4657].Request.Path = "/subscriptions/a53bdebb-dd89-/resourceGroups/5941e4e4-5c7f-46b/providers/Microsoft.Logic/workflows/7c38cf0f-62d/versions/0b4a2ded-/triggers/3e2876a5-ca/listCallbackUrl"; + Requests[4658] = new DefaultHttpContext(); + Requests[4658].RequestServices = CreateServices(); + Requests[4658].Request.Method = "POST"; + Requests[4658].Request.Path = "/subscriptions/2ee476fa-07b2-/resourceGroups/9b77e36b-025b-415/providers/Microsoft.Media/mediaServices/8c0bca80-0d/transforms/78d35721-8f7d/jobs/b2fd2a9/cancelJob"; + Requests[4659] = new DefaultHttpContext(); + Requests[4659].RequestServices = CreateServices(); + Requests[4659].Request.Method = "GET"; + Requests[4659].Request.Path = "/subscriptions/d0559ffd-fb60-/resourceGroups/3c43f589-fa33-4c7/providers/Microsoft.Migrate/projects/d04dd1a9-5d/groups/aac7f4e5-/assessments/03e5132b-633c-/assessedMachines"; + Requests[4660] = new DefaultHttpContext(); + Requests[4660].RequestServices = CreateServices(); + Requests[4660].Request.Method = "POST"; + Requests[4660].Request.Path = "/subscriptions/6fdb25c9-d215-/resourceGroups/e13b4287-d454-4a4/providers/Microsoft.Migrate/projects/9b9e97ea-b5/groups/9caa0903-/assessments/5e8e41c0-9e7d-/downloadUrl"; + Requests[4661] = new DefaultHttpContext(); + Requests[4661].RequestServices = CreateServices(); + Requests[4661].Request.Method = "POST"; + Requests[4661].Request.Path = "/subscriptions/65d7f796-ae90-/resourceGroups/353455e1-13ff-474/providers/Microsoft.NotificationHubs/namespaces/50c5512f-9aee/notificationHubs/82766c93-edc2-4826-/AuthorizationRules/ec2b873d-cc31-40fb-b5/listKeys"; + Requests[4662] = new DefaultHttpContext(); + Requests[4662].RequestServices = CreateServices(); + Requests[4662].Request.Method = "POST"; + Requests[4662].Request.Path = "/subscriptions/f969b351-dd03-/resourceGroups/6e44ae2f-0ba2-4b3/providers/Microsoft.NotificationHubs/namespaces/25b57d62-45d8/notificationHubs/e6fcd064-568a-452e-/AuthorizationRules/ef99ffaa-84af-4f26-a4/regenerateKeys"; + Requests[4663] = new DefaultHttpContext(); + Requests[4663].RequestServices = CreateServices(); + Requests[4663].Request.Method = "GET"; + Requests[4663].Request.Path = "/Subscriptions/6aba2340-370e-/resourceGroups/540e8d07-6a0f-4b7/providers/Microsoft.RecoveryServices/vaults/14da01ce-903/replicationFabrics/0ee159cc-7/replicationNetworks/39814117-ea/replicationNetworkMappings"; + Requests[4664] = new DefaultHttpContext(); + Requests[4664].RequestServices = CreateServices(); + Requests[4664].Request.Method = "POST"; + Requests[4664].Request.Path = "/Subscriptions/c5e215e2-2479-/resourceGroups/c8f01c00-9b6b-4bd/providers/Microsoft.RecoveryServices/vaults/8f74172e-546/replicationFabrics/82a320ff-0/replicationProtectionContainers/ab4b1efb-44b8-4e45-be4f/discoverProtectableItem"; + Requests[4665] = new DefaultHttpContext(); + Requests[4665].RequestServices = CreateServices(); + Requests[4665].Request.Method = "POST"; + Requests[4665].Request.Path = "/Subscriptions/8a2b05d1-81e4-/resourceGroups/0f282f9e-6ad2-4c1/providers/Microsoft.RecoveryServices/vaults/11b95254-473/replicationFabrics/c921516e-d/replicationProtectionContainers/3445708a-7acf-4ed9-8ea6/remove"; + Requests[4666] = new DefaultHttpContext(); + Requests[4666].RequestServices = CreateServices(); + Requests[4666].Request.Method = "GET"; + Requests[4666].Request.Path = "/Subscriptions/c4491098-ca46-/resourceGroups/7a88d262-efb1-40a/providers/Microsoft.RecoveryServices/vaults/3245de85-fd3/replicationFabrics/739c6549-5/replicationProtectionContainers/0dbbb1ca-de0a-4cb2-9b24/replicationProtectableItems"; + Requests[4667] = new DefaultHttpContext(); + Requests[4667].RequestServices = CreateServices(); + Requests[4667].Request.Method = "GET"; + Requests[4667].Request.Path = "/Subscriptions/822239b8-2ccf-/resourceGroups/0510ae5d-5328-454/providers/Microsoft.RecoveryServices/vaults/17defc1e-f9b/replicationFabrics/809eb86d-9/replicationProtectionContainers/d72128be-f428-4c62-9060/replicationProtectedItems"; + Requests[4668] = new DefaultHttpContext(); + Requests[4668].RequestServices = CreateServices(); + Requests[4668].Request.Method = "GET"; + Requests[4668].Request.Path = "/Subscriptions/c2ada439-4963-/resourceGroups/30c2206b-9656-465/providers/Microsoft.RecoveryServices/vaults/0c3ea38b-872/replicationFabrics/c739e896-e/replicationProtectionContainers/c8b3c5a0-6c20-4e95-bf78/replicationProtectionContainerMappings"; + Requests[4669] = new DefaultHttpContext(); + Requests[4669].RequestServices = CreateServices(); + Requests[4669].Request.Method = "POST"; + Requests[4669].Request.Path = "/Subscriptions/a3183be3-4daa-/resourceGroups/3052c27c-f8d1-4aa/providers/Microsoft.RecoveryServices/vaults/d8e2f4de-5b0/replicationFabrics/f04cd597-6/replicationProtectionContainers/e26674eb-ce54-4232-b8dc/switchprotection"; + Requests[4670] = new DefaultHttpContext(); + Requests[4670].RequestServices = CreateServices(); + Requests[4670].Request.Method = "POST"; + Requests[4670].Request.Path = "/Subscriptions/d5df6584-3e8d-/resourceGroups/4b53d401-d181-439/providers/Microsoft.RecoveryServices/vaults/3b1c5728-7df/replicationFabrics/48a66a92-9/replicationRecoveryServicesProviders/70ae3a32-684/refreshProvider"; + Requests[4671] = new DefaultHttpContext(); + Requests[4671].RequestServices = CreateServices(); + Requests[4671].Request.Method = "POST"; + Requests[4671].Request.Path = "/Subscriptions/cadf7c24-79a0-/resourceGroups/4d06de25-e340-47e/providers/Microsoft.RecoveryServices/vaults/768f1669-d24/replicationFabrics/e7cc6d57-9/replicationRecoveryServicesProviders/9db7ae9f-6be/remove"; + Requests[4672] = new DefaultHttpContext(); + Requests[4672].RequestServices = CreateServices(); + Requests[4672].Request.Method = "GET"; + Requests[4672].Request.Path = "/Subscriptions/d7de5254-537d-/resourceGroups/e4ebbfab-0790-47a/providers/Microsoft.RecoveryServices/vaults/420b6dee-c7d/replicationFabrics/8fe510b9-5/replicationStorageClassifications/5578070c-4b45-4a38-a9a5-0/replicationStorageClassificationMappings"; + Requests[4673] = new DefaultHttpContext(); + Requests[4673].RequestServices = CreateServices(); + Requests[4673].Request.Method = "POST"; + Requests[4673].Request.Path = "/Subscriptions/2070276f-b530-/resourceGroups/aa9d4eae-70a6-473/providers/Microsoft.RecoveryServices/vaults/29bfac61-/backupFabrics/0dcd26df-3/protectionContainers/cf529f27-790c/inquire"; + Requests[4674] = new DefaultHttpContext(); + Requests[4674].RequestServices = CreateServices(); + Requests[4674].Request.Method = "GET"; + Requests[4674].Request.Path = "/Subscriptions/11a4b573-3108-/resourceGroups/08333068-d245-468/providers/Microsoft.RecoveryServices/vaults/1839bbfd-/backupFabrics/f5786d7f-7/protectionContainers/52c6c31a-1580/items"; + Requests[4675] = new DefaultHttpContext(); + Requests[4675].RequestServices = CreateServices(); + Requests[4675].Request.Method = "POST"; + Requests[4675].Request.Path = "/subscriptions/911b869e-4422-/resourceGroups/8a924bad-2054-40f/providers/Microsoft.Relay/namespaces/6a7f006c-0fdf/hybridConnections/31ec8e46-7a8e-4294-a/authorizationRules/3a480abd-650b-46a2-a4/listKeys"; + Requests[4676] = new DefaultHttpContext(); + Requests[4676].RequestServices = CreateServices(); + Requests[4676].Request.Method = "POST"; + Requests[4676].Request.Path = "/subscriptions/586e199e-a833-/resourceGroups/db6be129-11c7-492/providers/Microsoft.Relay/namespaces/e6862172-9893/hybridConnections/c2a3d948-6908-424b-b/authorizationRules/be4af6b3-539c-43d9-86/regenerateKeys"; + Requests[4677] = new DefaultHttpContext(); + Requests[4677].RequestServices = CreateServices(); + Requests[4677].Request.Method = "POST"; + Requests[4677].Request.Path = "/subscriptions/83febe01-dafa-/resourceGroups/de5a1bb8-c4fb-4b6/providers/Microsoft.Relay/namespaces/2d8f8967-4f53/wcfRelays/6adce0eb-/authorizationRules/72f60aad-5d64-4521-98/listKeys"; + Requests[4678] = new DefaultHttpContext(); + Requests[4678].RequestServices = CreateServices(); + Requests[4678].Request.Method = "POST"; + Requests[4678].Request.Path = "/subscriptions/a50358e1-50af-/resourceGroups/211a65af-7149-473/providers/Microsoft.Relay/namespaces/68749888-ca4b/wcfRelays/23195713-/authorizationRules/81428a13-822c-4e55-8e/regenerateKeys"; + Requests[4679] = new DefaultHttpContext(); + Requests[4679].RequestServices = CreateServices(); + Requests[4679].Request.Method = "POST"; + Requests[4679].Request.Path = "/subscriptions/f102749f-6832-/resourceGroups/4f63ab82-a61a-4e7/providers/Microsoft.ServiceBus/namespaces/bd72599c-4cbf/disasterRecoveryConfigs/68f2c/AuthorizationRules/11c9058b-aeb9-49e5-82/listKeys"; + Requests[4680] = new DefaultHttpContext(); + Requests[4680].RequestServices = CreateServices(); + Requests[4680].Request.Method = "POST"; + Requests[4680].Request.Path = "/subscriptions/839cf181-8d06-/resourceGroups/b160f93f-e36a-400/providers/Microsoft.ServiceBus/namespaces/cdb9fceb-bb98/queues/f34a7b32-/authorizationRules/87a47e56-9718-448c-97/ListKeys"; + Requests[4681] = new DefaultHttpContext(); + Requests[4681].RequestServices = CreateServices(); + Requests[4681].Request.Method = "POST"; + Requests[4681].Request.Path = "/subscriptions/0780dc43-ac7f-/resourceGroups/1f8cdb8a-fcab-43b/providers/Microsoft.ServiceBus/namespaces/44521384-1e1f/queues/37b35271-/authorizationRules/16cbdb43-0e84-43e2-84/regenerateKeys"; + Requests[4682] = new DefaultHttpContext(); + Requests[4682].RequestServices = CreateServices(); + Requests[4682].Request.Method = "POST"; + Requests[4682].Request.Path = "/subscriptions/e98d13d9-e4da-/resourceGroups/1f7d8474-1eec-499/providers/Microsoft.ServiceBus/namespaces/b82b1d83-1b6a/topics/9da93e08-/authorizationRules/0fc1395b-05f9-447c-b2/ListKeys"; + Requests[4683] = new DefaultHttpContext(); + Requests[4683].RequestServices = CreateServices(); + Requests[4683].Request.Method = "POST"; + Requests[4683].Request.Path = "/subscriptions/9efcf109-3e5c-/resourceGroups/14c3fd92-161d-427/providers/Microsoft.ServiceBus/namespaces/e4577389-109c/topics/023f69bd-/authorizationRules/0502565c-2767-4592-82/regenerateKeys"; + Requests[4684] = new DefaultHttpContext(); + Requests[4684].RequestServices = CreateServices(); + Requests[4684].Request.Method = "GET"; + Requests[4684].Request.Path = "/subscriptions/3bc075d7-cd8d-/resourceGroups/7049c115-2ec8-4e0/providers/Microsoft.ServiceBus/namespaces/e600c3cd-927d/topics/fc070140-/subscriptions/086d6001-65ed-40/rules"; + Requests[4685] = new DefaultHttpContext(); + Requests[4685].RequestServices = CreateServices(); + Requests[4685].Request.Method = "GET"; + Requests[4685].Request.Path = "/subscriptions/aedeb6d2-21c0-/resourceGroups/34953713-7b7f-4ef/providers/Microsoft.Sql/servers/c4df2bd6-0/databases/4a169048-f2c/advisors/1a1b2c1a-ac/recommendedActions"; + Requests[4686] = new DefaultHttpContext(); + Requests[4686].RequestServices = CreateServices(); + Requests[4686].Request.Method = "GET"; + Requests[4686].Request.Path = "/subscriptions/6fdbca7e-60c7-/resourceGroups/427c759e-1c49-429/providers/Microsoft.Sql/servers/0ed65828-c/databases/ccd709a5-dde/dataMaskingPolicies/f6d3e26e-cabc-4f1b-b0/rules"; + Requests[4687] = new DefaultHttpContext(); + Requests[4687].RequestServices = CreateServices(); + Requests[4687].Request.Method = "POST"; + Requests[4687].Request.Path = "/subscriptions/19e9ce3c-e17a-/resourceGroups/418c3339-9395-46a/providers/Microsoft.Sql/servers/a0fcc753-b/databases/4873880d-b84/operations/5be1f5f6-7f/cancel"; + Requests[4688] = new DefaultHttpContext(); + Requests[4688].RequestServices = CreateServices(); + Requests[4688].Request.Method = "POST"; + Requests[4688].Request.Path = "/subscriptions/36155b64-2246-/resourceGroups/7f86d35b-e628-421/providers/Microsoft.Sql/servers/129c692f-1/databases/7c5ff197-d8c/replicationLinks/af1d4d/failover"; + Requests[4689] = new DefaultHttpContext(); + Requests[4689].RequestServices = CreateServices(); + Requests[4689].Request.Method = "POST"; + Requests[4689].Request.Path = "/subscriptions/5152d741-d7d7-/resourceGroups/cae16b1a-ebf3-416/providers/Microsoft.Sql/servers/cdbfdfbd-8/databases/56c862cb-0fc/replicationLinks/960110/forceFailoverAllowDataLoss"; + Requests[4690] = new DefaultHttpContext(); + Requests[4690].RequestServices = CreateServices(); + Requests[4690].Request.Method = "POST"; + Requests[4690].Request.Path = "/subscriptions/81f519a6-d79b-/resourceGroups/c17a1d72-71e5-423/providers/Microsoft.Sql/servers/3092aef9-6/databases/2b413165-141/syncGroups/ba4934a6-6465/cancelSync"; + Requests[4691] = new DefaultHttpContext(); + Requests[4691].RequestServices = CreateServices(); + Requests[4691].Request.Method = "GET"; + Requests[4691].Request.Path = "/subscriptions/34a145b0-828a-/resourceGroups/e87dfdb9-faac-4f8/providers/Microsoft.Sql/servers/a357d667-9/databases/01af54e7-0d4/syncGroups/22672162-3bf0/hubSchemas"; + Requests[4692] = new DefaultHttpContext(); + Requests[4692].RequestServices = CreateServices(); + Requests[4692].Request.Method = "GET"; + Requests[4692].Request.Path = "/subscriptions/bc699320-8c2f-/resourceGroups/cf551b05-e8ca-455/providers/Microsoft.Sql/servers/1858f3da-0/databases/8d7aa38f-7b6/syncGroups/aa2b86d3-b72c/logs"; + Requests[4693] = new DefaultHttpContext(); + Requests[4693].RequestServices = CreateServices(); + Requests[4693].Request.Method = "POST"; + Requests[4693].Request.Path = "/subscriptions/87fb2f4d-e98c-/resourceGroups/087d20c9-ec83-441/providers/Microsoft.Sql/servers/1bb5dbc5-6/databases/ed312cce-98d/syncGroups/f6fb9cbf-367c/refreshHubSchema"; + Requests[4694] = new DefaultHttpContext(); + Requests[4694].RequestServices = CreateServices(); + Requests[4694].Request.Method = "GET"; + Requests[4694].Request.Path = "/subscriptions/a0a15705-7d50-/resourceGroups/1313bc11-6f88-4bc/providers/Microsoft.Sql/servers/9ed52a25-a/databases/0fb56c7d-94a/syncGroups/3b40c86b-6ed1/syncMembers"; + Requests[4695] = new DefaultHttpContext(); + Requests[4695].RequestServices = CreateServices(); + Requests[4695].Request.Method = "POST"; + Requests[4695].Request.Path = "/subscriptions/bf546b78-a622-/resourceGroups/97a94277-9353-48a/providers/Microsoft.Sql/servers/b86952ec-5/databases/8533ff5f-b2d/syncGroups/bd10c679-03db/triggerSync"; + Requests[4696] = new DefaultHttpContext(); + Requests[4696].RequestServices = CreateServices(); + Requests[4696].Request.Method = "GET"; + Requests[4696].Request.Path = "/subscriptions/9569b722-d1f5-/resourceGroups/fb14475a-e9b5-4ad/providers/Microsoft.Sql/servers/545b6131-d/databases/51735829-b1a/topQueries/4d60dbb/queryText"; + Requests[4697] = new DefaultHttpContext(); + Requests[4697].RequestServices = CreateServices(); + Requests[4697].Request.Method = "GET"; + Requests[4697].Request.Path = "/subscriptions/015736d6-1004-/resourceGroups/36d23458-5aa0-459/providers/Microsoft.Sql/servers/1043a224-e/databases/688ef447-419/topQueries/2fc5629/statistics"; + Requests[4698] = new DefaultHttpContext(); + Requests[4698].RequestServices = CreateServices(); + Requests[4698].Request.Method = "GET"; + Requests[4698].Request.Path = "/subscriptions/367e3302-5492-/resourceGroups/adafaa8e-26ae-4db/providers/Microsoft.Sql/servers/cd4fda18-5/databases/cb5add52-2de/transparentDataEncryption/916708db-379f-48b3-8cde-c7727/operationResults"; + Requests[4699] = new DefaultHttpContext(); + Requests[4699].RequestServices = CreateServices(); + Requests[4699].Request.Method = "GET"; + Requests[4699].Request.Path = "/subscriptions/dfdf9316-9a28-/resourceGroups/80215e82-ca78-4d2/providers/Microsoft.Sql/servers/9dde9758-1/databases/ddd92c19-2d4/vulnerabilityAssessments/cda84e08-b380-46c8-a093-8b9/scans"; + Requests[4700] = new DefaultHttpContext(); + Requests[4700].RequestServices = CreateServices(); + Requests[4700].Request.Method = "POST"; + Requests[4700].Request.Path = "/subscriptions/0d1ff1d2-8dd6-/resourceGroups/3240aed3-63fd-4b2/providers/Microsoft.Sql/servers/6606e035-8/elasticPools/6eaca3f4-4ceb-4/operations/6d221ba7-7d/cancel"; + Requests[4701] = new DefaultHttpContext(); + Requests[4701].RequestServices = CreateServices(); + Requests[4701].Request.Method = "GET"; + Requests[4701].Request.Path = "/subscriptions/52206174-1433-/resourceGroups/0610659e-4e26-495/providers/Microsoft.Sql/servers/f1cd5251-6/jobAgents/bf9b650e-cca/jobs/6847231/executions"; + Requests[4702] = new DefaultHttpContext(); + Requests[4702].RequestServices = CreateServices(); + Requests[4702].Request.Method = "POST"; + Requests[4702].Request.Path = "/subscriptions/d9410692-ab84-/resourceGroups/5ca100f4-6a77-48a/providers/Microsoft.Sql/servers/29d26321-1/jobAgents/2fd617f5-495/jobs/67c2a19/start"; + Requests[4703] = new DefaultHttpContext(); + Requests[4703].RequestServices = CreateServices(); + Requests[4703].Request.Method = "GET"; + Requests[4703].Request.Path = "/subscriptions/cfa3a137-b6f3-/resourceGroups/862c4c6d-33ae-49f/providers/Microsoft.Sql/servers/ee23247d-c/jobAgents/feff4dd0-e0b/jobs/bd596a1/steps"; + Requests[4704] = new DefaultHttpContext(); + Requests[4704].RequestServices = CreateServices(); + Requests[4704].Request.Method = "GET"; + Requests[4704].Request.Path = "/subscriptions/5f8915c5-d7d6-/resourceGroups/6c4c8822-fa4c-4e2/providers/Microsoft.Sql/servers/12655a71-8/jobAgents/e2affdca-717/jobs/947c517/versions"; + Requests[4705] = new DefaultHttpContext(); + Requests[4705].RequestServices = CreateServices(); + Requests[4705].Request.Method = "POST"; + Requests[4705].Request.Path = "/subscriptions/7b3a2d90-0795-/resourceGroups/aa0cb78d-591a-413/providers/Microsoft.StorSimple/managers/f543da65-72/devices/52e059b0-3/backupPolicies/31bc03ee-7196-44/backup"; + Requests[4706] = new DefaultHttpContext(); + Requests[4706].RequestServices = CreateServices(); + Requests[4706].Request.Method = "GET"; + Requests[4706].Request.Path = "/subscriptions/01949470-483c-/resourceGroups/0e8bcb27-db14-45f/providers/Microsoft.StorSimple/managers/2b512ffe-1f/devices/51fa0967-a/backupPolicies/6db23787-2e1c-4b/schedules"; + Requests[4707] = new DefaultHttpContext(); + Requests[4707].RequestServices = CreateServices(); + Requests[4707].Request.Method = "POST"; + Requests[4707].Request.Path = "/subscriptions/072497e7-029f-/resourceGroups/d6515e9d-90c4-452/providers/Microsoft.StorSimple/managers/dcea5dc5-49/devices/b6ae51da-2/backups/58a77d65-c/restore"; + Requests[4708] = new DefaultHttpContext(); + Requests[4708].RequestServices = CreateServices(); + Requests[4708].Request.Method = "POST"; + Requests[4708].Request.Path = "/subscriptions/739c4b9c-c235-/resourceGroups/f1723b6c-2e0f-4a8/providers/Microsoft.StorSimple/managers/17f08e31-7a/devices/81c97e26-b/hardwareComponentGroups/e6101485-0b3c-42dd-ba82-be/changeControllerPowerState"; + Requests[4709] = new DefaultHttpContext(); + Requests[4709].RequestServices = CreateServices(); + Requests[4709].Request.Method = "POST"; + Requests[4709].Request.Path = "/subscriptions/662696f7-4e36-/resourceGroups/c1216f47-3765-495/providers/Microsoft.StorSimple/managers/a776a335-e1/devices/04c8f5db-8/jobs/93a0114/cancel"; + Requests[4710] = new DefaultHttpContext(); + Requests[4710].RequestServices = CreateServices(); + Requests[4710].Request.Method = "GET"; + Requests[4710].Request.Path = "/subscriptions/f3649e35-4dfc-/resourceGroups/2cdd1271-b176-497/providers/Microsoft.StorSimple/managers/721b2c59-91/devices/9dfe2b85-0/volumeContainers/1c83dfc3-2b94-47fb-/metrics"; + Requests[4711] = new DefaultHttpContext(); + Requests[4711].RequestServices = CreateServices(); + Requests[4711].Request.Method = "GET"; + Requests[4711].Request.Path = "/subscriptions/6620de1d-85da-/resourceGroups/bd9f7bd3-cfc7-4c2/providers/Microsoft.StorSimple/managers/ffb2c835-6f/devices/5d5961bc-2/volumeContainers/5f1bfdbd-049b-4951-/metricsDefinitions"; + Requests[4712] = new DefaultHttpContext(); + Requests[4712].RequestServices = CreateServices(); + Requests[4712].Request.Method = "GET"; + Requests[4712].Request.Path = "/subscriptions/c0e4fdfb-01bf-/resourceGroups/42efb110-8322-433/providers/Microsoft.StorSimple/managers/77be429d-c0/devices/32a3424f-3/volumeContainers/2ebebbfa-8539-4d73-/volumes"; + Requests[4713] = new DefaultHttpContext(); + Requests[4713].RequestServices = CreateServices(); + Requests[4713].Request.Method = "POST"; + Requests[4713].Request.Path = "/subscriptions/86b450fd-23cf-/resourcegroups/c4b95d5d-d6c8-43c/providers/Microsoft.Update.Admin/updateLocations/5304ee6c-ba34-/updates/00e5fa06-7/updateRuns/02499b7/rerun"; + Requests[4714] = new DefaultHttpContext(); + Requests[4714].RequestServices = CreateServices(); + Requests[4714].Request.Method = "GET"; + Requests[4714].Request.Path = "/subscriptions/971d74a6-f0e9-/resourceGroups/5e6e2cac-2fd0-438/providers/microsoft.visualstudio/account/cda5a7d1-4d80-42/project/cb3a7963-e20/subContainers/51bb20ec-7de9-43/status"; + Requests[4715] = new DefaultHttpContext(); + Requests[4715].RequestServices = CreateServices(); + Requests[4715].Request.Method = "GET"; + Requests[4715].Request.Path = "/subscriptions/abbccf32-0301-/resourceGroups/e55db8cf-51cf-49f/providers/Microsoft.Web/hostingEnvironments/9468c/workerPools/3c660201-dd20-/instances/fdf3659f/metricdefinitions"; + Requests[4716] = new DefaultHttpContext(); + Requests[4716].RequestServices = CreateServices(); + Requests[4716].Request.Method = "GET"; + Requests[4716].Request.Path = "/subscriptions/2df5af01-8525-/resourceGroups/c711fd37-cad2-4c5/providers/Microsoft.Web/hostingEnvironments/b1df8/workerPools/461b2366-7fa2-/instances/ddcc8870/metrics"; + Requests[4717] = new DefaultHttpContext(); + Requests[4717].RequestServices = CreateServices(); + Requests[4717].Request.Method = "POST"; + Requests[4717].Request.Path = "/subscriptions/e38db067-ea8f-/resourceGroups/5f3cbc7c-5cd1-4b8/providers/Microsoft.Web/serverfarms/c7309/hybridConnectionNamespaces/e202c0e2-3127/relays/82e4534d-/listKeys"; + Requests[4718] = new DefaultHttpContext(); + Requests[4718].RequestServices = CreateServices(); + Requests[4718].Request.Method = "GET"; + Requests[4718].Request.Path = "/subscriptions/73e734d2-2eed-/resourceGroups/26d9a2a9-7244-44c/providers/Microsoft.Web/serverfarms/77482/hybridConnectionNamespaces/a4c782de-9565/relays/0ddb6212-/sites"; + Requests[4719] = new DefaultHttpContext(); + Requests[4719].RequestServices = CreateServices(); + Requests[4719].Request.Method = "POST"; + Requests[4719].Request.Path = "/subscriptions/cc7a787c-804d-/resourceGroups/686d2d3b-bcb8-42d/providers/Microsoft.Web/sites/648c2/hybridConnectionNamespaces/e629aa62-2af1/relays/f8425431-/listKeys"; + Requests[4720] = new DefaultHttpContext(); + Requests[4720].RequestServices = CreateServices(); + Requests[4720].Request.Method = "GET"; + Requests[4720].Request.Path = "/subscriptions/3f4aaa95-0a00-/resourceGroups/292d992e-12f9-4b3/providers/Microsoft.Web/sites/a37a8/instances/576a2278-6/processes/8c34d123-/dump"; + Requests[4721] = new DefaultHttpContext(); + Requests[4721].RequestServices = CreateServices(); + Requests[4721].Request.Method = "GET"; + Requests[4721].Request.Path = "/subscriptions/7dbf9bd9-fab7-/resourceGroups/cdf64ec1-dde3-4a0/providers/Microsoft.Web/sites/49903/instances/7909d947-a/processes/7e207f2d-/modules"; + Requests[4722] = new DefaultHttpContext(); + Requests[4722].RequestServices = CreateServices(); + Requests[4722].Request.Method = "GET"; + Requests[4722].Request.Path = "/subscriptions/a2c1f3b1-98f1-/resourceGroups/f401e095-5d4a-4f7/providers/Microsoft.Web/sites/f33cf/instances/8bfa4ad5-a/processes/2dbd8d47-/threads"; + Requests[4723] = new DefaultHttpContext(); + Requests[4723].RequestServices = CreateServices(); + Requests[4723].Request.Method = "POST"; + Requests[4723].Request.Path = "/subscriptions/e63b8497-fa92-/resourceGroups/08625ecd-9a31-48f/providers/Microsoft.Web/sites/3b93b/slots/3a5f6/backups/c6f8a1ba/list"; + Requests[4724] = new DefaultHttpContext(); + Requests[4724].RequestServices = CreateServices(); + Requests[4724].Request.Method = "POST"; + Requests[4724].Request.Path = "/subscriptions/10e44171-3574-/resourceGroups/a49523f9-0d5a-427/providers/Microsoft.Web/sites/ad3fc/slots/28b1d/backups/d097a76b/restore"; + Requests[4725] = new DefaultHttpContext(); + Requests[4725].RequestServices = CreateServices(); + Requests[4725].Request.Method = "POST"; + Requests[4725].Request.Path = "/subscriptions/4eeef959-0aa4-/resourceGroups/cc65aaca-08a4-4ae/providers/Microsoft.Web/sites/fa177/slots/ab596/continuouswebjobs/987c1393-c/start"; + Requests[4726] = new DefaultHttpContext(); + Requests[4726].RequestServices = CreateServices(); + Requests[4726].Request.Method = "POST"; + Requests[4726].Request.Path = "/subscriptions/9c01ed79-4b96-/resourceGroups/a0166bab-31da-4bb/providers/Microsoft.Web/sites/c4be1/slots/247a9/continuouswebjobs/d9d64be0-d/stop"; + Requests[4727] = new DefaultHttpContext(); + Requests[4727].RequestServices = CreateServices(); + Requests[4727].Request.Method = "GET"; + Requests[4727].Request.Path = "/subscriptions/df2d8d91-66b8-/resourceGroups/7bac8d39-7716-469/providers/Microsoft.Web/sites/7e1c0/slots/d471f/deployments/ad62c/log"; + Requests[4728] = new DefaultHttpContext(); + Requests[4728].RequestServices = CreateServices(); + Requests[4728].Request.Method = "POST"; + Requests[4728].Request.Path = "/subscriptions/938c682b-ab5c-/resourceGroups/a74630b8-5e8c-412/providers/Microsoft.Web/sites/f4a94/slots/d4326/functions/5a31c99c-386/listsecrets"; + Requests[4729] = new DefaultHttpContext(); + Requests[4729].RequestServices = CreateServices(); + Requests[4729].Request.Method = "GET"; + Requests[4729].Request.Path = "/subscriptions/b5d60395-1f9b-/resourceGroups/1723f217-fa12-483/providers/Microsoft.Web/sites/c5c99/slots/748e5/instances/814ddb80-a/deployments"; + Requests[4730] = new DefaultHttpContext(); + Requests[4730].RequestServices = CreateServices(); + Requests[4730].Request.Method = "GET"; + Requests[4730].Request.Path = "/subscriptions/b5259ddb-18eb-/resourceGroups/62b0a6e8-2a00-4d0/providers/Microsoft.Web/sites/502bb/slots/5985e/instances/96923854-8/processes"; + Requests[4731] = new DefaultHttpContext(); + Requests[4731].RequestServices = CreateServices(); + Requests[4731].Request.Method = "GET"; + Requests[4731].Request.Path = "/subscriptions/7b7cc0e1-282b-/resourceGroups/c303567e-65cb-432/providers/Microsoft.Web/sites/3d550/slots/489e5/processes/67871ad8-/dump"; + Requests[4732] = new DefaultHttpContext(); + Requests[4732].RequestServices = CreateServices(); + Requests[4732].Request.Method = "GET"; + Requests[4732].Request.Path = "/subscriptions/1578dbc0-fdd4-/resourceGroups/75f948dd-81a6-4fb/providers/Microsoft.Web/sites/175bf/slots/b0778/processes/8fc3cdf7-/modules"; + Requests[4733] = new DefaultHttpContext(); + Requests[4733].RequestServices = CreateServices(); + Requests[4733].Request.Method = "GET"; + Requests[4733].Request.Path = "/subscriptions/d401ff72-7041-/resourceGroups/a14228c0-2e6c-4d2/providers/Microsoft.Web/sites/7ce52/slots/8d8f6/processes/23999d1b-/threads"; + Requests[4734] = new DefaultHttpContext(); + Requests[4734].RequestServices = CreateServices(); + Requests[4734].Request.Method = "GET"; + Requests[4734].Request.Path = "/subscriptions/a5265d51-6c8d-/resourceGroups/69b94a40-d07d-465/providers/Microsoft.Web/sites/2cbbb/slots/9a78d/triggeredwebjobs/9862a73b-2/history"; + Requests[4735] = new DefaultHttpContext(); + Requests[4735].RequestServices = CreateServices(); + Requests[4735].Request.Method = "POST"; + Requests[4735].Request.Path = "/subscriptions/7a4cc787-eb36-/resourceGroups/159e8375-52d5-482/providers/Microsoft.Web/sites/95ab2/slots/84be4/triggeredwebjobs/9acb76b5-0/run"; + Requests[4736] = new DefaultHttpContext(); + Requests[4736].RequestServices = CreateServices(); + Requests[4736].Request.Method = "POST"; + Requests[4736].Request.Path = "/subscriptions/813f6259-46c3-/resourceGroups/7c22e7f5-187c-4df/providers/Microsoft.Web/sites/8c4c6acf/diagnostics/4fe196df-5460-4dbb/analyses/25f2a823-d9d/execute"; + Requests[4737] = new DefaultHttpContext(); + Requests[4737].RequestServices = CreateServices(); + Requests[4737].Request.Method = "POST"; + Requests[4737].Request.Path = "/subscriptions/a75688e1-14dd-/resourceGroups/2a0184ae-ca5e-419/providers/Microsoft.Web/sites/9b2179fc/diagnostics/8cb065bd-f234-42d9/detectors/4a65baf6-9e9/execute"; + Requests[4738] = new DefaultHttpContext(); + Requests[4738].RequestServices = CreateServices(); + Requests[4738].Request.Method = "GET"; + Requests[4738].Request.Path = "/subscriptions/6dbb2bbe-a30c-/resourceGroups/d352c478-968c-40e/providers/Microsoft.Web/sites/adbcb251/slots/2ccaa/diagnostics/5075d801-30b0-4af5/analyses"; + Requests[4739] = new DefaultHttpContext(); + Requests[4739].RequestServices = CreateServices(); + Requests[4739].Request.Method = "GET"; + Requests[4739].Request.Path = "/subscriptions/d363edf9-84a5-/resourceGroups/b950f4b0-3a7d-4bc/providers/Microsoft.Web/sites/7c42d520/slots/f8a74/diagnostics/a07a5ffe-2432-4ae5/detectors"; + Requests[4740] = new DefaultHttpContext(); + Requests[4740].RequestServices = CreateServices(); + Requests[4740].Request.Method = "GET"; + Requests[4740].Request.Path = "/subscriptions/9b72213d-36ac-/resourceGroups/c7ab163f-db23-400/providers/Microsoft.DocumentDB/databaseAccounts/ab8566e6-09/databases/c2ffb20e-0d/collections/dec3f44d-822a/partitions/metrics"; + Requests[4741] = new DefaultHttpContext(); + Requests[4741].RequestServices = CreateServices(); + Requests[4741].Request.Method = "GET"; + Requests[4741].Request.Path = "/subscriptions/3b0351f3-aaf0-/resourceGroups/aab01426-9090-449/providers/Microsoft.DocumentDB/databaseAccounts/d348dddd-8b/databases/464544c1-9b/collections/7aaa1004-ba61/partitions/usages"; + Requests[4742] = new DefaultHttpContext(); + Requests[4742].RequestServices = CreateServices(); + Requests[4742].Request.Method = "GET"; + Requests[4742].Request.Path = "/subscriptions/937c34b3-6b48-/resourceGroups/ad343e0c-8a6e-484/providers/Microsoft.DocumentDB/databaseAccounts/c8e854a7-9a/sourceRegion/693e51cf-639/targetRegion/2f47c2d0-ed4/percentile/metrics"; + Requests[4743] = new DefaultHttpContext(); + Requests[4743].RequestServices = CreateServices(); + Requests[4743].Request.Method = "PUT"; + Requests[4743].Request.Path = "/subscriptions/59bc0d98-3608-/resourceGroups/4abfb1c5-f1cd-478/providers/Microsoft.Web/sites/f8b1d/slots/66dff/instances/d7d3c1c9-7/extensions/MSDeploy"; + Requests[4744] = new DefaultHttpContext(); + Requests[4744].RequestServices = CreateServices(); + Requests[4744].Request.Method = "GET"; + Requests[4744].Request.Path = "/subscriptions/a782917a-8cb2-/resourceGroups/89364626-1fd4-4bd/providers/Microsoft.Web/sites/a938a/slots/8fca2/instances/71cbb791-4/extensions/MSDeploy"; + Requests[4745] = new DefaultHttpContext(); + Requests[4745].RequestServices = CreateServices(); + Requests[4745].Request.Method = "GET"; + Requests[4745].Request.Path = "/subscriptions/18621338-a8f2-/resourceGroups/e437fea3-9687-4c4/providers/Microsoft.Web/sites/05d79/slots/b5d2f/instances/0512666b-a/extensions/MSDeploy/log"; + Requests[4746] = new DefaultHttpContext(); + Requests[4746].RequestServices = CreateServices(); + Requests[4746].Request.Method = "DELETE"; + Requests[4746].Request.Path = "/subscriptions/349cc4f8-65db-/resourceGroups/971713cf-c863-44a/providers/Microsoft.ApiManagement/service/fbf1680a-b9/apis/fa151/diagnostics/e43877d6-cf2/loggers/4a3439f7"; + Requests[4747] = new DefaultHttpContext(); + Requests[4747].RequestServices = CreateServices(); + Requests[4747].Request.Method = "PUT"; + Requests[4747].Request.Path = "/subscriptions/eb53272f-ac6a-/resourceGroups/f8290dc4-819a-448/providers/Microsoft.ApiManagement/service/dbc8cac1-cc/apis/91d27/diagnostics/34790a10-dce/loggers/b91dd92d"; + Requests[4748] = new DefaultHttpContext(); + Requests[4748].RequestServices = CreateServices(); + Requests[4748].Request.Method = "HEAD"; + Requests[4748].Request.Path = "/subscriptions/c1b45f81-eaee-/resourceGroups/64bd37ce-22b5-433/providers/Microsoft.ApiManagement/service/ba64efeb-29/apis/604e4/diagnostics/80d460eb-01a/loggers/3bf428ad"; + Requests[4749] = new DefaultHttpContext(); + Requests[4749].RequestServices = CreateServices(); + Requests[4749].Request.Method = "DELETE"; + Requests[4749].Request.Path = "/subscriptions/e7437b56-9aac-/resourceGroups/8ec3e2b0-5cc1-492/providers/Microsoft.ApiManagement/service/7f9f4427-ef/apis/d24e6/issues/e8e0801/attachments/d876621d-da9"; + Requests[4750] = new DefaultHttpContext(); + Requests[4750].RequestServices = CreateServices(); + Requests[4750].Request.Method = "PUT"; + Requests[4750].Request.Path = "/subscriptions/72e3928c-00ef-/resourceGroups/1eab03e0-d78d-423/providers/Microsoft.ApiManagement/service/d7639d3e-66/apis/e5a4e/issues/1494765/attachments/673601ad-71b"; + Requests[4751] = new DefaultHttpContext(); + Requests[4751].RequestServices = CreateServices(); + Requests[4751].Request.Method = "GET"; + Requests[4751].Request.Path = "/subscriptions/a4d600b5-d027-/resourceGroups/a27f5cfb-f8e1-47a/providers/Microsoft.ApiManagement/service/02139296-37/apis/8a245/issues/ef5d77b/attachments/1b162378-b2c"; + Requests[4752] = new DefaultHttpContext(); + Requests[4752].RequestServices = CreateServices(); + Requests[4752].Request.Method = "HEAD"; + Requests[4752].Request.Path = "/subscriptions/908eb58a-6183-/resourceGroups/cd6d16a9-f7cb-4aa/providers/Microsoft.ApiManagement/service/d704c8dc-7f/apis/74b95/issues/924cc6e/attachments/dd66a33e-a4a"; + Requests[4753] = new DefaultHttpContext(); + Requests[4753].RequestServices = CreateServices(); + Requests[4753].Request.Method = "HEAD"; + Requests[4753].Request.Path = "/subscriptions/62554447-6185-/resourceGroups/d7abf8f2-81bb-429/providers/Microsoft.ApiManagement/service/9970ab4d-8d/apis/77bb6/issues/3dd36f6/comments/40785c63-"; + Requests[4754] = new DefaultHttpContext(); + Requests[4754].RequestServices = CreateServices(); + Requests[4754].Request.Method = "DELETE"; + Requests[4754].Request.Path = "/subscriptions/803be9e1-35e1-/resourceGroups/0591e801-df6d-40f/providers/Microsoft.ApiManagement/service/087675fa-33/apis/815fb/issues/a97b609/comments/3828b636-"; + Requests[4755] = new DefaultHttpContext(); + Requests[4755].RequestServices = CreateServices(); + Requests[4755].Request.Method = "GET"; + Requests[4755].Request.Path = "/subscriptions/8fe9ad48-d441-/resourceGroups/11df3a8f-2bfb-450/providers/Microsoft.ApiManagement/service/e50b4f64-59/apis/23f73/issues/d786dcf/comments/caefd52a-"; + Requests[4756] = new DefaultHttpContext(); + Requests[4756].RequestServices = CreateServices(); + Requests[4756].Request.Method = "PUT"; + Requests[4756].Request.Path = "/subscriptions/91526a03-da36-/resourceGroups/10cdcd17-c920-463/providers/Microsoft.ApiManagement/service/4657e0d1-28/apis/ec72c/issues/1340396/comments/0f440a54-"; + Requests[4757] = new DefaultHttpContext(); + Requests[4757].RequestServices = CreateServices(); + Requests[4757].Request.Method = "GET"; + Requests[4757].Request.Path = "/subscriptions/08287950-64d1-/resourceGroups/8df4e939-f4fb-462/providers/Microsoft.ApiManagement/service/57dd4d64-33/apis/59d78/operations/36a278ea-80/policies/e2a68346"; + Requests[4758] = new DefaultHttpContext(); + Requests[4758].RequestServices = CreateServices(); + Requests[4758].Request.Method = "DELETE"; + Requests[4758].Request.Path = "/subscriptions/78d8485e-20ea-/resourceGroups/e75b983c-6d26-407/providers/Microsoft.ApiManagement/service/8c76a1bd-42/apis/feaae/operations/5c5098ff-fb/policies/eca3df56"; + Requests[4759] = new DefaultHttpContext(); + Requests[4759].RequestServices = CreateServices(); + Requests[4759].Request.Method = "PUT"; + Requests[4759].Request.Path = "/subscriptions/23359b2b-d635-/resourceGroups/edc14e4a-34b4-469/providers/Microsoft.ApiManagement/service/573d1b0e-06/apis/bbeb3/operations/f446cb42-64/policies/797ba76f"; + Requests[4760] = new DefaultHttpContext(); + Requests[4760].RequestServices = CreateServices(); + Requests[4760].Request.Method = "HEAD"; + Requests[4760].Request.Path = "/subscriptions/46806f56-7bae-/resourceGroups/ba7c65ab-340e-47a/providers/Microsoft.ApiManagement/service/8f26d53c-e4/apis/a4f7b/operations/1b30fc01-8f/policies/901c129a"; + Requests[4761] = new DefaultHttpContext(); + Requests[4761].RequestServices = CreateServices(); + Requests[4761].Request.Method = "DELETE"; + Requests[4761].Request.Path = "/subscriptions/21cf600e-7b2e-/resourceGroups/c52f0599-b7c6-4a4/providers/Microsoft.ApiManagement/service/d9562c9f-42/apis/08e9a/operations/f4c419f3-dd/tags/bde47"; + Requests[4762] = new DefaultHttpContext(); + Requests[4762].RequestServices = CreateServices(); + Requests[4762].Request.Method = "HEAD"; + Requests[4762].Request.Path = "/subscriptions/70dd1520-06fc-/resourceGroups/b4f08660-4781-43b/providers/Microsoft.ApiManagement/service/937757ee-44/apis/4b4f1/operations/1e456995-c2/tags/31d8b"; + Requests[4763] = new DefaultHttpContext(); + Requests[4763].RequestServices = CreateServices(); + Requests[4763].Request.Method = "GET"; + Requests[4763].Request.Path = "/subscriptions/ff0ed774-547e-/resourceGroups/8424b4e2-8693-4e3/providers/Microsoft.ApiManagement/service/3ae9a88f-c8/apis/e3e79/operations/827c0b9f-17/tags/5e7a8"; + Requests[4764] = new DefaultHttpContext(); + Requests[4764].RequestServices = CreateServices(); + Requests[4764].Request.Method = "PUT"; + Requests[4764].Request.Path = "/subscriptions/3ab04dd8-983d-/resourceGroups/813707af-c2b2-494/providers/Microsoft.ApiManagement/service/a50343d1-72/apis/d9a02/operations/6c901e09-c7/tags/62c6f"; + Requests[4765] = new DefaultHttpContext(); + Requests[4765].RequestServices = CreateServices(); + Requests[4765].Request.Method = "GET"; + Requests[4765].Request.Path = "/subscriptions/9a06d9ec-a4b0-/resourceGroups/72387a38-81c7-43b/providers/Microsoft.Automation/automationAccounts/90c17807-5b47-47a8-91/sourceControls/19846e35-9793-47e/sourceControlSyncJobs/eede4b06-cac1-4343-80f/streams/0c6144b2"; + Requests[4766] = new DefaultHttpContext(); + Requests[4766].RequestServices = CreateServices(); + Requests[4766].Request.Method = "GET"; + Requests[4766].Request.Path = "/subscriptions/45e854b1-eb16-/resourceGroups/ec2f3c8c-4305-456/providers/microsoft.Compute/virtualMachineScaleSets/20b8565d-6dd6-4b27-b25b-4b/virtualMachines/9c4848f2-3cd0-4d34-/networkInterfaces/d613c5b7-c1a0-4442-a/ipConfigurations/d047a990-2e09-4e5d-"; + Requests[4767] = new DefaultHttpContext(); + Requests[4767].RequestServices = CreateServices(); + Requests[4767].Request.Method = "GET"; + Requests[4767].Request.Path = "/subscriptions/23810bd9-bcb4-/resourceGroups/a0c1d8f9-ae8b-446/providers/Microsoft.Fabric.Admin/fabricLocations/aff278f7/storageSubSystems/99414968-964d-4a/storagePools/2c0bfbc5-3e/volumes/6ed7e6"; + Requests[4768] = new DefaultHttpContext(); + Requests[4768].RequestServices = CreateServices(); + Requests[4768].Request.Method = "GET"; + Requests[4768].Request.Path = "/subscriptions/eb2184a2-d88d-/resourceGroups/2207a5da-edc0-434/providers/Microsoft.Logic/workflows/365f0614-aa7/runs/beedc89/actions/66b52a1b-5/repetitions/0d1f91c1-4400-"; + Requests[4769] = new DefaultHttpContext(); + Requests[4769].RequestServices = CreateServices(); + Requests[4769].Request.Method = "GET"; + Requests[4769].Request.Path = "/subscriptions/97bf43c4-f607-/resourceGroups/1869fdc8-697a-46c/providers/Microsoft.Logic/workflows/63db5d76-225/runs/4199f86/actions/c841bc87-d/scopeRepetitions/2b9be8c2-a690-"; + Requests[4770] = new DefaultHttpContext(); + Requests[4770].RequestServices = CreateServices(); + Requests[4770].Request.Method = "GET"; + Requests[4770].Request.Path = "/subscriptions/71b5a0a7-f519-/resourceGroups/aa57f075-6f9d-4cb/providers/Microsoft.Migrate/projects/e07c74e1-77/groups/cfa5cd2d-/assessments/2a3ed42b-b698-/assessedMachines/009782ae-ba87-4f38-"; + Requests[4771] = new DefaultHttpContext(); + Requests[4771].RequestServices = CreateServices(); + Requests[4771].Request.Method = "GET"; + Requests[4771].Request.Path = "/Subscriptions/6b595f74-b1d8-/resourceGroups/6821f2ec-db69-4c5/providers/Microsoft.RecoveryServices/vaults/6682e677-f5e/replicationFabrics/2371e549-9/replicationNetworks/8de96dca-10/replicationNetworkMappings/30398f66-c05b-402b"; + Requests[4772] = new DefaultHttpContext(); + Requests[4772].RequestServices = CreateServices(); + Requests[4772].Request.Method = "DELETE"; + Requests[4772].Request.Path = "/Subscriptions/2a556a7e-3983-/resourceGroups/b15e9a5b-4375-403/providers/Microsoft.RecoveryServices/vaults/1e921340-fcf/replicationFabrics/c7fb4169-c/replicationNetworks/604f556a-bc/replicationNetworkMappings/606ef4cb-37b1-4fb8"; + Requests[4773] = new DefaultHttpContext(); + Requests[4773].RequestServices = CreateServices(); + Requests[4773].Request.Method = "PUT"; + Requests[4773].Request.Path = "/Subscriptions/043cf461-72ec-/resourceGroups/58bff61b-26d4-4eb/providers/Microsoft.RecoveryServices/vaults/f36af61e-7fd/replicationFabrics/3acdc4e4-b/replicationNetworks/1675be78-e1/replicationNetworkMappings/f790f9bb-9d17-4df6"; + Requests[4774] = new DefaultHttpContext(); + Requests[4774].RequestServices = CreateServices(); + Requests[4774].Request.Method = "PATCH"; + Requests[4774].Request.Path = "/Subscriptions/49bccff9-535c-/resourceGroups/a999a17d-1b85-405/providers/Microsoft.RecoveryServices/vaults/6c673dbf-47c/replicationFabrics/02ac9fbd-f/replicationNetworks/f13b955b-a1/replicationNetworkMappings/d6423d9a-7201-4efa"; + Requests[4775] = new DefaultHttpContext(); + Requests[4775].RequestServices = CreateServices(); + Requests[4775].Request.Method = "GET"; + Requests[4775].Request.Path = "/Subscriptions/ac8eb8e4-0adc-/resourceGroups/91d8a396-65e9-431/providers/Microsoft.RecoveryServices/vaults/1ae7bfe4-8ac/replicationFabrics/4bc939f8-4/replicationProtectionContainers/0f1fdf89-7915-40b4-a422/replicationProtectableItems/59bc86f2-77af-4527-"; + Requests[4776] = new DefaultHttpContext(); + Requests[4776].RequestServices = CreateServices(); + Requests[4776].Request.Method = "PATCH"; + Requests[4776].Request.Path = "/Subscriptions/79b2b752-2549-/resourceGroups/53c00112-8b0a-492/providers/Microsoft.RecoveryServices/vaults/0853cda0-a0a/replicationFabrics/1a95ba06-d/replicationProtectionContainers/b34cb868-ec87-4ad4-ad42/replicationProtectedItems/92c8b96d-34ce-49a0-81a6-1cc"; + Requests[4777] = new DefaultHttpContext(); + Requests[4777].RequestServices = CreateServices(); + Requests[4777].Request.Method = "DELETE"; + Requests[4777].Request.Path = "/Subscriptions/8de5eee2-df89-/resourceGroups/ed8a4fea-1e61-482/providers/Microsoft.RecoveryServices/vaults/a201ecce-6ab/replicationFabrics/6b21ffa8-c/replicationProtectionContainers/bf3e219e-21be-44b8-9ded/replicationProtectedItems/593a2bb1-fe17-4e75-896e-d93"; + Requests[4778] = new DefaultHttpContext(); + Requests[4778].RequestServices = CreateServices(); + Requests[4778].Request.Method = "PUT"; + Requests[4778].Request.Path = "/Subscriptions/62097457-bcfc-/resourceGroups/c7fbf5ae-49ec-4df/providers/Microsoft.RecoveryServices/vaults/203943eb-b0a/replicationFabrics/37f50b7a-0/replicationProtectionContainers/f1aedb60-277f-40a9-8336/replicationProtectedItems/fc7fdb4a-e4ba-40dc-86fd-aee"; + Requests[4779] = new DefaultHttpContext(); + Requests[4779].RequestServices = CreateServices(); + Requests[4779].Request.Method = "GET"; + Requests[4779].Request.Path = "/Subscriptions/6c4ad7f2-cf36-/resourceGroups/717d6d32-d3c3-46e/providers/Microsoft.RecoveryServices/vaults/0f9a0da6-91d/replicationFabrics/dc14e1e5-5/replicationProtectionContainers/8425814a-8e35-4551-afb0/replicationProtectedItems/8d7b10f5-eeff-4c4b-a345-5c6"; + Requests[4780] = new DefaultHttpContext(); + Requests[4780].RequestServices = CreateServices(); + Requests[4780].Request.Method = "DELETE"; + Requests[4780].Request.Path = "/Subscriptions/ba0c93fc-6bbe-/resourceGroups/b0e78a5e-9119-446/providers/Microsoft.RecoveryServices/vaults/a2b7ca10-4cf/replicationFabrics/f4cfa232-9/replicationProtectionContainers/b1197ebd-be52-4021-91b5/replicationProtectionContainerMappings/19607196-0b"; + Requests[4781] = new DefaultHttpContext(); + Requests[4781].RequestServices = CreateServices(); + Requests[4781].Request.Method = "PUT"; + Requests[4781].Request.Path = "/Subscriptions/bb94f09f-baad-/resourceGroups/c15c718a-1104-4b1/providers/Microsoft.RecoveryServices/vaults/d9eccc8b-5a4/replicationFabrics/f7b53597-a/replicationProtectionContainers/ac840670-55ab-4fbe-ab58/replicationProtectionContainerMappings/5d37306a-07"; + Requests[4782] = new DefaultHttpContext(); + Requests[4782].RequestServices = CreateServices(); + Requests[4782].Request.Method = "PATCH"; + Requests[4782].Request.Path = "/Subscriptions/dec90b2a-8352-/resourceGroups/20c00ee7-77ed-40d/providers/Microsoft.RecoveryServices/vaults/6be70a94-902/replicationFabrics/3bf284c0-6/replicationProtectionContainers/72a3c813-45fa-4511-a488/replicationProtectionContainerMappings/b47dd0a9-07"; + Requests[4783] = new DefaultHttpContext(); + Requests[4783].RequestServices = CreateServices(); + Requests[4783].Request.Method = "GET"; + Requests[4783].Request.Path = "/Subscriptions/b0fc73a1-dfbb-/resourceGroups/9e8d7ef5-3007-4b7/providers/Microsoft.RecoveryServices/vaults/90b86383-471/replicationFabrics/56187d73-0/replicationProtectionContainers/6f8239ed-8381-4ee0-99b8/replicationProtectionContainerMappings/ac261d5d-ae"; + Requests[4784] = new DefaultHttpContext(); + Requests[4784].RequestServices = CreateServices(); + Requests[4784].Request.Method = "PUT"; + Requests[4784].Request.Path = "/Subscriptions/2b5ee1f2-39f8-/resourceGroups/8a6a16b5-22f8-4fa/providers/Microsoft.RecoveryServices/vaults/37176276-15d/replicationFabrics/7b767eff-7/replicationStorageClassifications/3983546d-e668-436d-b20a-4/replicationStorageClassificationMappings/899cc569-870d-4a52-a191-c4960c23"; + Requests[4785] = new DefaultHttpContext(); + Requests[4785].RequestServices = CreateServices(); + Requests[4785].Request.Method = "GET"; + Requests[4785].Request.Path = "/Subscriptions/78879967-ff1e-/resourceGroups/b2e57593-9b74-4a0/providers/Microsoft.RecoveryServices/vaults/18268024-aea/replicationFabrics/875d2adf-b/replicationStorageClassifications/0f5bb834-4870-4acb-8fde-a/replicationStorageClassificationMappings/cfc9e271-f491-46a8-b696-e4812312"; + Requests[4786] = new DefaultHttpContext(); + Requests[4786].RequestServices = CreateServices(); + Requests[4786].Request.Method = "DELETE"; + Requests[4786].Request.Path = "/Subscriptions/5ae21222-235e-/resourceGroups/9fefa080-f1bd-4a8/providers/Microsoft.RecoveryServices/vaults/62a5fd23-7c9/replicationFabrics/182cb9bd-1/replicationStorageClassifications/fd2b16de-0a34-46ea-ac12-2/replicationStorageClassificationMappings/e6e327bd-91f3-4d4d-86e0-9a4a6843"; + Requests[4787] = new DefaultHttpContext(); + Requests[4787].RequestServices = CreateServices(); + Requests[4787].Request.Method = "GET"; + Requests[4787].Request.Path = "/Subscriptions/71b8736e-c3a3-/resourceGroups/c13f7d77-4980-4e9/providers/Microsoft.RecoveryServices/vaults/3edb4673-/backupFabrics/b4907fbf-0/protectionContainers/0b5d4ea1-84a1/operationResults/dbafe023-6d"; + Requests[4788] = new DefaultHttpContext(); + Requests[4788].RequestServices = CreateServices(); + Requests[4788].Request.Method = "PUT"; + Requests[4788].Request.Path = "/Subscriptions/9a5abdc2-a0a6-/resourceGroups/17e214b3-63c8-484/providers/Microsoft.RecoveryServices/vaults/da31c54e-/backupFabrics/9175981a-a/protectionContainers/d660d6a2-bad9/protectedItems/b1b7571f-6df1-424"; + Requests[4789] = new DefaultHttpContext(); + Requests[4789].RequestServices = CreateServices(); + Requests[4789].Request.Method = "GET"; + Requests[4789].Request.Path = "/Subscriptions/c2ddd589-91ce-/resourceGroups/0d93ae75-6f27-422/providers/Microsoft.RecoveryServices/vaults/944782a8-/backupFabrics/7ca58500-b/protectionContainers/c9b8934b-d4fd/protectedItems/3e14e5a6-82e4-40a"; + Requests[4790] = new DefaultHttpContext(); + Requests[4790].RequestServices = CreateServices(); + Requests[4790].Request.Method = "DELETE"; + Requests[4790].Request.Path = "/Subscriptions/a530fe7d-7c32-/resourceGroups/4a5b22e4-44b2-478/providers/Microsoft.RecoveryServices/vaults/1bc128b5-/backupFabrics/2acd5452-8/protectionContainers/5eb79be0-4671/protectedItems/28c806d7-b139-424"; + Requests[4791] = new DefaultHttpContext(); + Requests[4791].RequestServices = CreateServices(); + Requests[4791].Request.Method = "GET"; + Requests[4791].Request.Path = "/subscriptions/97db8f5b-48d6-/resourceGroups/ef930052-a068-4de/providers/Microsoft.ServiceBus/namespaces/efeff548-78cc/topics/2680bc0d-/subscriptions/439b98bb-f836-45/rules/73b0a692"; + Requests[4792] = new DefaultHttpContext(); + Requests[4792].RequestServices = CreateServices(); + Requests[4792].Request.Method = "DELETE"; + Requests[4792].Request.Path = "/subscriptions/d8af0f05-b327-/resourceGroups/5ad74fb5-a521-492/providers/Microsoft.ServiceBus/namespaces/d5fe154a-dd2d/topics/3339e92b-/subscriptions/650f6463-61a5-46/rules/ef206d80"; + Requests[4793] = new DefaultHttpContext(); + Requests[4793].RequestServices = CreateServices(); + Requests[4793].Request.Method = "PUT"; + Requests[4793].Request.Path = "/subscriptions/44b2b4ce-4f3d-/resourceGroups/a49f6dc1-6391-41b/providers/Microsoft.ServiceBus/namespaces/b551e3bf-23bd/topics/54c06f23-/subscriptions/ef154e8f-ec12-42/rules/440897a6"; + Requests[4794] = new DefaultHttpContext(); + Requests[4794].RequestServices = CreateServices(); + Requests[4794].Request.Method = "GET"; + Requests[4794].Request.Path = "/subscriptions/73ec4a74-67b4-/resourceGroups/2b940701-46af-43a/providers/Microsoft.Sql/servers/c7e2d90b-a/databases/a088558f-ae3/advisors/2e6f9664-e4/recommendedActions/34e851b4-fac2-4546-b6"; + Requests[4795] = new DefaultHttpContext(); + Requests[4795].RequestServices = CreateServices(); + Requests[4795].Request.Method = "PATCH"; + Requests[4795].Request.Path = "/subscriptions/376c56af-1487-/resourceGroups/c382c76b-0ee9-41f/providers/Microsoft.Sql/servers/cfe48345-d/databases/038f791e-b1f/advisors/b93e0292-92/recommendedActions/41108aaa-f2ae-4b72-ba"; + Requests[4796] = new DefaultHttpContext(); + Requests[4796].RequestServices = CreateServices(); + Requests[4796].Request.Method = "PUT"; + Requests[4796].Request.Path = "/subscriptions/c9d9d28a-021c-/resourceGroups/f894975a-0e58-48d/providers/Microsoft.Sql/servers/05be334b-a/databases/cf790ead-1a3/dataMaskingPolicies/897bae0c-7508-4864-85/rules/e9324a59-b78c-4227-"; + Requests[4797] = new DefaultHttpContext(); + Requests[4797].RequestServices = CreateServices(); + Requests[4797].Request.Method = "PUT"; + Requests[4797].Request.Path = "/subscriptions/2fa78db8-d5b7-/resourceGroups/d416534f-4ae8-4f3/providers/Microsoft.Sql/servers/5f88e82f-4/databases/f69a8411-19e/syncGroups/a8d1a670-ac00/syncMembers/d32ccc06-6f91-"; + Requests[4798] = new DefaultHttpContext(); + Requests[4798].RequestServices = CreateServices(); + Requests[4798].Request.Method = "PATCH"; + Requests[4798].Request.Path = "/subscriptions/40f00e02-0659-/resourceGroups/597aac6d-f163-4f4/providers/Microsoft.Sql/servers/c531e127-a/databases/0a5baf1a-c1b/syncGroups/caeda551-8ac2/syncMembers/ffb5b963-3a1d-"; + Requests[4799] = new DefaultHttpContext(); + Requests[4799].RequestServices = CreateServices(); + Requests[4799].Request.Method = "GET"; + Requests[4799].Request.Path = "/subscriptions/d91e89d1-9d90-/resourceGroups/f49f3d35-6eec-442/providers/Microsoft.Sql/servers/a4b01af2-4/databases/7e70bcfe-105/syncGroups/5cb207b9-2923/syncMembers/b51ba749-263f-"; + Requests[4800] = new DefaultHttpContext(); + Requests[4800].RequestServices = CreateServices(); + Requests[4800].Request.Method = "DELETE"; + Requests[4800].Request.Path = "/subscriptions/ca961892-8b53-/resourceGroups/510f30fe-6b70-4b8/providers/Microsoft.Sql/servers/10041bff-f/databases/60994ec9-65b/syncGroups/df3735c6-3e49/syncMembers/1cc8c056-3402-"; + Requests[4801] = new DefaultHttpContext(); + Requests[4801].RequestServices = CreateServices(); + Requests[4801].Request.Method = "GET"; + Requests[4801].Request.Path = "/subscriptions/4f41ccc0-84da-/resourceGroups/7e2dde4e-ed72-41b/providers/Microsoft.Sql/servers/925b8fae-8/databases/575b5d13-9dc/vulnerabilityAssessments/58789906-aac5-468b-bf1b-5de/scans/e18a4c"; + Requests[4802] = new DefaultHttpContext(); + Requests[4802].RequestServices = CreateServices(); + Requests[4802].Request.Method = "PUT"; + Requests[4802].Request.Path = "/subscriptions/f53d3a27-1ef3-/resourceGroups/ec0f177d-8830-430/providers/Microsoft.Sql/servers/7d731589-0/jobAgents/058eee1e-469/jobs/b427ec9/executions/fbda9f09-bca9-"; + Requests[4803] = new DefaultHttpContext(); + Requests[4803].RequestServices = CreateServices(); + Requests[4803].Request.Method = "GET"; + Requests[4803].Request.Path = "/subscriptions/6ae5ba09-8b24-/resourceGroups/c13e8391-7d17-45e/providers/Microsoft.Sql/servers/66221e4e-f/jobAgents/9710ba81-d1a/jobs/f53584e/executions/dc6b219f-275c-"; + Requests[4804] = new DefaultHttpContext(); + Requests[4804].RequestServices = CreateServices(); + Requests[4804].Request.Method = "DELETE"; + Requests[4804].Request.Path = "/subscriptions/fd7a1b76-12c8-/resourceGroups/b63e7400-5b66-41a/providers/Microsoft.Sql/servers/e7e3b6e7-4/jobAgents/375caab9-a43/jobs/cb65e84/steps/a1ea464f"; + Requests[4805] = new DefaultHttpContext(); + Requests[4805].RequestServices = CreateServices(); + Requests[4805].Request.Method = "PUT"; + Requests[4805].Request.Path = "/subscriptions/95f68017-e940-/resourceGroups/990063cc-2fe1-4d5/providers/Microsoft.Sql/servers/51eecd7b-4/jobAgents/c9f81f26-5e1/jobs/ecd43c7/steps/aebbf41a"; + Requests[4806] = new DefaultHttpContext(); + Requests[4806].RequestServices = CreateServices(); + Requests[4806].Request.Method = "GET"; + Requests[4806].Request.Path = "/subscriptions/98ce4ee9-0526-/resourceGroups/f11ce16d-a6bd-44b/providers/Microsoft.Sql/servers/d0e29a8e-4/jobAgents/e35017d8-397/jobs/999a791/steps/af8560be"; + Requests[4807] = new DefaultHttpContext(); + Requests[4807].RequestServices = CreateServices(); + Requests[4807].Request.Method = "GET"; + Requests[4807].Request.Path = "/subscriptions/708aff9f-3700-/resourceGroups/02f45450-06f5-42f/providers/Microsoft.Sql/servers/b407da56-0/jobAgents/391e52d2-a6d/jobs/6bc62c8/versions/37c4fc55-8"; + Requests[4808] = new DefaultHttpContext(); + Requests[4808].RequestServices = CreateServices(); + Requests[4808].Request.Method = "PUT"; + Requests[4808].Request.Path = "/subscriptions/4c575d98-2650-/resourceGroups/f3b4dd44-e573-4c1/providers/Microsoft.StorSimple/managers/11b9d896-f7/devices/04997e7e-3/backupPolicies/10a3a1b9-cda7-4e/schedules/15ce7dcc-94fe-4947"; + Requests[4809] = new DefaultHttpContext(); + Requests[4809].RequestServices = CreateServices(); + Requests[4809].Request.Method = "GET"; + Requests[4809].Request.Path = "/subscriptions/49bb5418-e965-/resourceGroups/e1f9448f-3024-4ac/providers/Microsoft.StorSimple/managers/5b312fb2-47/devices/0e809be6-2/backupPolicies/5fdd3ca0-bd69-49/schedules/a3f8996a-57fa-4a04"; + Requests[4810] = new DefaultHttpContext(); + Requests[4810].RequestServices = CreateServices(); + Requests[4810].Request.Method = "DELETE"; + Requests[4810].Request.Path = "/subscriptions/4a07387a-af87-/resourceGroups/170dce8f-2329-454/providers/Microsoft.StorSimple/managers/424beed7-4a/devices/cb69a133-c/backupPolicies/17ea77cf-e3e0-46/schedules/508353d2-9d1d-4e7e"; + Requests[4811] = new DefaultHttpContext(); + Requests[4811].RequestServices = CreateServices(); + Requests[4811].Request.Method = "GET"; + Requests[4811].Request.Path = "/subscriptions/a2ea88f9-edb1-/resourceGroups/597a02f4-8419-42f/providers/Microsoft.StorSimple/managers/ae0380f6-44/devices/4205de57-6/volumeContainers/4ba4ceac-90b5-462e-/volumes/f519884e-e"; + Requests[4812] = new DefaultHttpContext(); + Requests[4812].RequestServices = CreateServices(); + Requests[4812].Request.Method = "DELETE"; + Requests[4812].Request.Path = "/subscriptions/94757334-5599-/resourceGroups/47188b23-a522-4b3/providers/Microsoft.StorSimple/managers/8e0989fd-04/devices/9b3cec79-9/volumeContainers/5b69a90b-4435-4ec1-/volumes/a5c330c9-7"; + Requests[4813] = new DefaultHttpContext(); + Requests[4813].RequestServices = CreateServices(); + Requests[4813].Request.Method = "PUT"; + Requests[4813].Request.Path = "/subscriptions/3c9d12ec-897e-/resourceGroups/0b48bd88-50f8-448/providers/Microsoft.StorSimple/managers/494a827d-c1/devices/6d1a5414-8/volumeContainers/81f79809-b22c-4103-/volumes/81fd1341-6"; + Requests[4814] = new DefaultHttpContext(); + Requests[4814].RequestServices = CreateServices(); + Requests[4814].Request.Method = "GET"; + Requests[4814].Request.Path = "/subscriptions/8a078c61-6c17-/resourceGroups/52afe7b7-2f8d-47b/providers/Microsoft.Web/sites/a43a4/instances/5447bff2-c/processes/4b25f0df-/modules/1f5aa9d6-02"; + Requests[4815] = new DefaultHttpContext(); + Requests[4815].RequestServices = CreateServices(); + Requests[4815].Request.Method = "GET"; + Requests[4815].Request.Path = "/subscriptions/abbff461-fca9-/resourceGroups/91407f23-28f1-49d/providers/Microsoft.Web/sites/9bbe3/instances/3be43f67-e/processes/db9c1465-/threads/c13f6c14"; + Requests[4816] = new DefaultHttpContext(); + Requests[4816].RequestServices = CreateServices(); + Requests[4816].Request.Method = "GET"; + Requests[4816].Request.Path = "/subscriptions/eafb02ae-1716-/resourceGroups/37625667-e739-496/providers/Microsoft.Web/sites/4eab2/slots/b40d6/hybridConnectionNamespaces/060bccea-6698/relays/aa1d153b-"; + Requests[4817] = new DefaultHttpContext(); + Requests[4817].RequestServices = CreateServices(); + Requests[4817].Request.Method = "DELETE"; + Requests[4817].Request.Path = "/subscriptions/2d71cf6d-2149-/resourceGroups/16dc7dd9-c2c9-476/providers/Microsoft.Web/sites/c8e0b/slots/af50e/hybridConnectionNamespaces/c9e7dbb2-d64a/relays/bb6f5a31-"; + Requests[4818] = new DefaultHttpContext(); + Requests[4818].RequestServices = CreateServices(); + Requests[4818].Request.Method = "PUT"; + Requests[4818].Request.Path = "/subscriptions/e8c4db44-ea5b-/resourceGroups/8fa6d9b4-5e04-47b/providers/Microsoft.Web/sites/6ef23/slots/5a7bb/hybridConnectionNamespaces/9d62485a-3f97/relays/aca868ed-"; + Requests[4819] = new DefaultHttpContext(); + Requests[4819].RequestServices = CreateServices(); + Requests[4819].Request.Method = "PATCH"; + Requests[4819].Request.Path = "/subscriptions/c40ca2d3-cacc-/resourceGroups/90d30358-c462-475/providers/Microsoft.Web/sites/d4889/slots/85cb6/hybridConnectionNamespaces/0bb279cf-bc5f/relays/e762274d-"; + Requests[4820] = new DefaultHttpContext(); + Requests[4820].RequestServices = CreateServices(); + Requests[4820].Request.Method = "DELETE"; + Requests[4820].Request.Path = "/subscriptions/890be397-d1a7-/resourceGroups/40bae2f8-63ac-4f0/providers/Microsoft.Web/sites/1043f/slots/9f673/instances/22bc6fa7-2/deployments/d4426"; + Requests[4821] = new DefaultHttpContext(); + Requests[4821].RequestServices = CreateServices(); + Requests[4821].Request.Method = "GET"; + Requests[4821].Request.Path = "/subscriptions/9f004f96-9f53-/resourceGroups/9a7b3d2d-17ed-45c/providers/Microsoft.Web/sites/d21b5/slots/9a6e6/instances/ae57de8c-4/deployments/3bb75"; + Requests[4822] = new DefaultHttpContext(); + Requests[4822].RequestServices = CreateServices(); + Requests[4822].Request.Method = "PUT"; + Requests[4822].Request.Path = "/subscriptions/9c7e2ebe-1257-/resourceGroups/45cb9235-4f6b-4ee/providers/Microsoft.Web/sites/652d7/slots/d65e1/instances/a1c7f891-b/deployments/4b8fc"; + Requests[4823] = new DefaultHttpContext(); + Requests[4823].RequestServices = CreateServices(); + Requests[4823].Request.Method = "DELETE"; + Requests[4823].Request.Path = "/subscriptions/1958c56a-26b9-/resourceGroups/cf0b3452-b20e-456/providers/Microsoft.Web/sites/eb90c/slots/54309/instances/80b12fad-3/processes/151c7b95-"; + Requests[4824] = new DefaultHttpContext(); + Requests[4824].RequestServices = CreateServices(); + Requests[4824].Request.Method = "GET"; + Requests[4824].Request.Path = "/subscriptions/9e876ab8-dd90-/resourceGroups/073a4a9a-9749-481/providers/Microsoft.Web/sites/b89ea/slots/53832/instances/56907340-b/processes/841708bb-"; + Requests[4825] = new DefaultHttpContext(); + Requests[4825].RequestServices = CreateServices(); + Requests[4825].Request.Method = "GET"; + Requests[4825].Request.Path = "/subscriptions/d165113a-bfc6-/resourceGroups/8ef73b11-3521-4db/providers/Microsoft.Web/sites/e00e7/slots/9908d/processes/b895a65e-/modules/edf94b3f-32"; + Requests[4826] = new DefaultHttpContext(); + Requests[4826].RequestServices = CreateServices(); + Requests[4826].Request.Method = "GET"; + Requests[4826].Request.Path = "/subscriptions/0947f890-3f06-/resourceGroups/eb06a483-cb6e-496/providers/Microsoft.Web/sites/ebcae/slots/bde95/processes/1cd701d1-/threads/77be9a1d"; + Requests[4827] = new DefaultHttpContext(); + Requests[4827].RequestServices = CreateServices(); + Requests[4827].Request.Method = "GET"; + Requests[4827].Request.Path = "/subscriptions/a41079f3-09e7-/resourceGroups/cf18c677-4c7d-4d7/providers/Microsoft.Web/sites/9839d/slots/aa192/triggeredwebjobs/36a82f84-3/history/6af3e"; + Requests[4828] = new DefaultHttpContext(); + Requests[4828].RequestServices = CreateServices(); + Requests[4828].Request.Method = "GET"; + Requests[4828].Request.Path = "/subscriptions/2961fefc-8f08-/resourceGroups/6c15d8f0-147f-462/providers/Microsoft.Web/sites/94f45/slots/69d5c/virtualNetworkConnections/3da4e381/gateways/204e5334-4a"; + Requests[4829] = new DefaultHttpContext(); + Requests[4829].RequestServices = CreateServices(); + Requests[4829].Request.Method = "PUT"; + Requests[4829].Request.Path = "/subscriptions/92cf3f63-a7c1-/resourceGroups/5c39e6ee-fc73-4a7/providers/Microsoft.Web/sites/0d12e/slots/1300c/virtualNetworkConnections/7a3f3fae/gateways/785fd984-59"; + Requests[4830] = new DefaultHttpContext(); + Requests[4830].RequestServices = CreateServices(); + Requests[4830].Request.Method = "PATCH"; + Requests[4830].Request.Path = "/subscriptions/34b95a08-5a3b-/resourceGroups/c9452f2c-9256-4f8/providers/Microsoft.Web/sites/93282/slots/51822/virtualNetworkConnections/11f12acf/gateways/7c44d343-81"; + Requests[4831] = new DefaultHttpContext(); + Requests[4831].RequestServices = CreateServices(); + Requests[4831].Request.Method = "GET"; + Requests[4831].Request.Path = "/subscriptions/7ba531ed-0577-/resourceGroups/7e107482-dc1c-4f8/providers/Microsoft.Web/sites/e743ea08/slots/b5c93/diagnostics/6332ba08-eb13-41a1/analyses/2ed07335-6fd"; + Requests[4832] = new DefaultHttpContext(); + Requests[4832].RequestServices = CreateServices(); + Requests[4832].Request.Method = "GET"; + Requests[4832].Request.Path = "/subscriptions/5793b54c-a8d1-/resourceGroups/6568837e-daea-48d/providers/Microsoft.Web/sites/cf6e3dc4/slots/053cf/diagnostics/64088a0c-d775-4412/detectors/0a1196b0-68c"; + Requests[4833] = new DefaultHttpContext(); + Requests[4833].RequestServices = CreateServices(); + Requests[4833].Request.Method = "GET"; + Requests[4833].Request.Path = "/subscriptions/5719f8eb-19e3-/resourceGroups/f3f7eaea-8b45-49d/providers/Microsoft.Compute/virtualMachineScaleSets/d6c05dd2-8c9e-4eb0-9854-e4/virtualMachines/21052090-0956-4e12-/networkInterfaces/7299d819-7942-4449-8/ipconfigurations/126f4822-f783-4cfe-/publicipaddresses"; + Requests[4834] = new DefaultHttpContext(); + Requests[4834].RequestServices = CreateServices(); + Requests[4834].Request.Method = "GET"; + Requests[4834].Request.Path = "/subscriptions/8493053c-a43e-/resourceGroups/5108a04e-fb23-45d/providers/Microsoft.DocumentDB/databaseAccounts/920f6a78-24/databases/6606f3ac-f3/collections/21492caa-3aca/partitionKeyRangeId/e2ec81c9-690b-4951-/metrics"; + Requests[4835] = new DefaultHttpContext(); + Requests[4835].RequestServices = CreateServices(); + Requests[4835].Request.Method = "GET"; + Requests[4835].Request.Path = "/subscriptions/fa23b440-cde6-/resourceGroups/3ac3f357-ea35-4bb/providers/Microsoft.DocumentDB/databaseAccounts/bb099ccb-99/region/b95170/databases/9358c243-d1/collections/f8319173-129b/metrics"; + Requests[4836] = new DefaultHttpContext(); + Requests[4836].RequestServices = CreateServices(); + Requests[4836].Request.Method = "POST"; + Requests[4836].Request.Path = "/subscriptions/9a10741e-5e81-/resourceGroups/87148a37-dddf-4b1/providers/Microsoft.Logic/workflows/b3971922-c19/runs/37bf951/actions/28e826f6-4/repetitions/1df14005-6c15-/listExpressionTraces"; + Requests[4837] = new DefaultHttpContext(); + Requests[4837].RequestServices = CreateServices(); + Requests[4837].Request.Method = "POST"; + Requests[4837].Request.Path = "/Subscriptions/06a9d255-63c1-/resourceGroups/3372e527-ee65-444/providers/Microsoft.RecoveryServices/vaults/472b2bb0-6d8/replicationFabrics/935e0409-3/replicationProtectionContainers/e4ad0836-5785-462a-b5cd/replicationProtectedItems/cf09f006-4f5b-4c3f-b806-04b/applyRecoveryPoint"; + Requests[4838] = new DefaultHttpContext(); + Requests[4838].RequestServices = CreateServices(); + Requests[4838].Request.Method = "POST"; + Requests[4838].Request.Path = "/Subscriptions/7bf46ca9-b485-/resourceGroups/3a791acb-f68c-488/providers/Microsoft.RecoveryServices/vaults/e86013d8-58c/replicationFabrics/55ce84c4-1/replicationProtectionContainers/1266bd4e-a7c4-44c6-99ff/replicationProtectedItems/cda9006e-c050-4860-8b38-19e/failoverCommit"; + Requests[4839] = new DefaultHttpContext(); + Requests[4839].RequestServices = CreateServices(); + Requests[4839].Request.Method = "POST"; + Requests[4839].Request.Path = "/Subscriptions/bd884819-fa9e-/resourceGroups/bbca13f0-b68b-4ab/providers/Microsoft.RecoveryServices/vaults/9ad5e7be-d4c/replicationFabrics/ff25d36d-2/replicationProtectionContainers/73f12a2a-cd31-49fa-ad71/replicationProtectedItems/4d37a1f0-c2bf-4646-bfdd-ea2/plannedFailover"; + Requests[4840] = new DefaultHttpContext(); + Requests[4840].RequestServices = CreateServices(); + Requests[4840].Request.Method = "GET"; + Requests[4840].Request.Path = "/Subscriptions/a5874b40-cd5a-/resourceGroups/2f958594-c9e0-443/providers/Microsoft.RecoveryServices/vaults/60853498-ff4/replicationFabrics/c6607b47-a/replicationProtectionContainers/37fabbd3-a073-4ab9-ace9/replicationProtectedItems/17fde4c4-9509-47f5-abc8-a6d/recoveryPoints"; + Requests[4841] = new DefaultHttpContext(); + Requests[4841].RequestServices = CreateServices(); + Requests[4841].Request.Method = "POST"; + Requests[4841].Request.Path = "/Subscriptions/5234711b-4c71-/resourceGroups/27668957-2e12-4d6/providers/Microsoft.RecoveryServices/vaults/49bf29f0-f7a/replicationFabrics/58a9b4c9-0/replicationProtectionContainers/906c42ae-9d2b-411c-8233/replicationProtectedItems/d9477925-a2fa-4fb6-8a1b-022/remove"; + Requests[4842] = new DefaultHttpContext(); + Requests[4842].RequestServices = CreateServices(); + Requests[4842].Request.Method = "POST"; + Requests[4842].Request.Path = "/Subscriptions/369324aa-5d60-/resourceGroups/5b4598a8-cc65-480/providers/Microsoft.RecoveryServices/vaults/cbde71b3-9c2/replicationFabrics/742af5ba-7/replicationProtectionContainers/a8bb5594-203b-4e6d-a674/replicationProtectedItems/0469fdd4-2251-4e5a-aca2-e6c/repairReplication"; + Requests[4843] = new DefaultHttpContext(); + Requests[4843].RequestServices = CreateServices(); + Requests[4843].Request.Method = "POST"; + Requests[4843].Request.Path = "/Subscriptions/c02cd31b-0bd2-/resourceGroups/ec7643c6-922e-4bb/providers/Microsoft.RecoveryServices/vaults/aabd013a-0f7/replicationFabrics/96d82f71-c/replicationProtectionContainers/8dd50f84-673e-4165-afe8/replicationProtectedItems/2b6c41fc-b4aa-48c7-a84e-3d5/reProtect"; + Requests[4844] = new DefaultHttpContext(); + Requests[4844].RequestServices = CreateServices(); + Requests[4844].Request.Method = "GET"; + Requests[4844].Request.Path = "/Subscriptions/4925dd24-4fe0-/resourceGroups/72babfdc-d340-43f/providers/Microsoft.RecoveryServices/vaults/f8d53323-8a8/replicationFabrics/79687da8-b/replicationProtectionContainers/2e5f383e-9d41-4e10-a2ea/replicationProtectedItems/36fcfc28-ea41-491f-a325-6c9/targetComputeSizes"; + Requests[4845] = new DefaultHttpContext(); + Requests[4845].RequestServices = CreateServices(); + Requests[4845].Request.Method = "POST"; + Requests[4845].Request.Path = "/Subscriptions/0055cb9b-7477-/resourceGroups/baedbf5d-1c87-47b/providers/Microsoft.RecoveryServices/vaults/54451b6a-9ef/replicationFabrics/4c6522ff-2/replicationProtectionContainers/e212d6d7-b9a1-46f1-905d/replicationProtectedItems/b2536090-337d-445d-b482-faa/testFailover"; + Requests[4846] = new DefaultHttpContext(); + Requests[4846].RequestServices = CreateServices(); + Requests[4846].Request.Method = "POST"; + Requests[4846].Request.Path = "/Subscriptions/2c76d4e2-f8ba-/resourceGroups/f0509552-9342-41d/providers/Microsoft.RecoveryServices/vaults/797bccfd-2c0/replicationFabrics/aab360ea-9/replicationProtectionContainers/f55d641d-7473-465f-acc2/replicationProtectedItems/76600e51-f200-4c0f-a08e-56f/testFailoverCleanup"; + Requests[4847] = new DefaultHttpContext(); + Requests[4847].RequestServices = CreateServices(); + Requests[4847].Request.Method = "POST"; + Requests[4847].Request.Path = "/Subscriptions/0521897f-d743-/resourceGroups/e0377fe2-13b0-40f/providers/Microsoft.RecoveryServices/vaults/3d6412f1-96e/replicationFabrics/754ed692-e/replicationProtectionContainers/8821d830-2a9d-4367-b870/replicationProtectedItems/35d09198-4d7f-4abe-af86-fb5/unplannedFailover"; + Requests[4848] = new DefaultHttpContext(); + Requests[4848].RequestServices = CreateServices(); + Requests[4848].Request.Method = "POST"; + Requests[4848].Request.Path = "/Subscriptions/d35ce5a1-5d9c-/resourceGroups/6922c242-aa34-498/providers/Microsoft.RecoveryServices/vaults/42ad79f5-4ea/replicationFabrics/d62420df-f/replicationProtectionContainers/06988a8b-4c66-45b7-b204/replicationProtectedItems/1eab4382-a197-4eba-9544-e3c3/updateMobilityService"; + Requests[4849] = new DefaultHttpContext(); + Requests[4849].RequestServices = CreateServices(); + Requests[4849].Request.Method = "POST"; + Requests[4849].Request.Path = "/Subscriptions/23d6c3e9-42c9-/resourceGroups/3e22bd06-53f7-4c9/providers/Microsoft.RecoveryServices/vaults/9cbf8b80-059/replicationFabrics/154daa53-4/replicationProtectionContainers/7cf4eee0-0111-453a-aefd/replicationProtectionContainerMappings/55c3a270-e2/remove"; + Requests[4850] = new DefaultHttpContext(); + Requests[4850].RequestServices = CreateServices(); + Requests[4850].Request.Method = "POST"; + Requests[4850].Request.Path = "/Subscriptions/eda502e5-a57e-/resourceGroups/73463db3-4ae0-477/providers/Microsoft.RecoveryServices/vaults/f5ba8f50-/backupFabrics/6e691bbd-f/protectionContainers/cbce33c7-2019/protectedItems/ebb0f08a-316f-45f/backup"; + Requests[4851] = new DefaultHttpContext(); + Requests[4851].RequestServices = CreateServices(); + Requests[4851].Request.Method = "GET"; + Requests[4851].Request.Path = "/Subscriptions/30fd09a3-f6e6-/resourceGroups/f5a848ed-b29b-4cf/providers/Microsoft.RecoveryServices/vaults/b38d137f-/backupFabrics/1c36bf69-0/protectionContainers/7f1e8d95-f6fc/protectedItems/65ffece2-bed7-422/recoveryPoints"; + Requests[4852] = new DefaultHttpContext(); + Requests[4852].RequestServices = CreateServices(); + Requests[4852].Request.Method = "POST"; + Requests[4852].Request.Path = "/subscriptions/391905e8-5b5c-/resourceGroups/65fa04d8-a129-4e8/providers/Microsoft.Sql/servers/f695a6d9-8/databases/768fdab0-0e6/syncGroups/c3c11c75-d91e/syncMembers/993829c5-5604-/refreshSchema"; + Requests[4853] = new DefaultHttpContext(); + Requests[4853].RequestServices = CreateServices(); + Requests[4853].Request.Method = "GET"; + Requests[4853].Request.Path = "/subscriptions/a9de817e-aa31-/resourceGroups/c02b12fb-f101-41c/providers/Microsoft.Sql/servers/b663e1ca-1/databases/37fd3552-e95/syncGroups/a2f155ab-c374/syncMembers/10ebd1a2-510a-/schemas"; + Requests[4854] = new DefaultHttpContext(); + Requests[4854].RequestServices = CreateServices(); + Requests[4854].Request.Method = "POST"; + Requests[4854].Request.Path = "/subscriptions/254629fc-0aed-/resourceGroups/6601a249-4318-49c/providers/Microsoft.Sql/servers/df9f9ca5-2/databases/7437d02b-39d/vulnerabilityAssessments/3abea3c2-e452-4f89-a98c-41f/scans/ca7dc8/export"; + Requests[4855] = new DefaultHttpContext(); + Requests[4855].RequestServices = CreateServices(); + Requests[4855].Request.Method = "POST"; + Requests[4855].Request.Path = "/subscriptions/7d665301-90f0-/resourceGroups/9a78037f-535d-40d/providers/Microsoft.Sql/servers/402f0144-5/databases/9cc25988-13a/vulnerabilityAssessments/1ee62042-be63-44d6-8e91-3b3/scans/2da038/initiateScan"; + Requests[4856] = new DefaultHttpContext(); + Requests[4856].RequestServices = CreateServices(); + Requests[4856].Request.Method = "POST"; + Requests[4856].Request.Path = "/subscriptions/d5f266b8-ec93-/resourceGroups/a6ee57c4-819b-408/providers/Microsoft.Sql/servers/9eefd1dc-f/jobAgents/ad097ac8-fcf/jobs/cceae22/executions/fb66d8da-ad40-/cancel"; + Requests[4857] = new DefaultHttpContext(); + Requests[4857].RequestServices = CreateServices(); + Requests[4857].Request.Method = "GET"; + Requests[4857].Request.Path = "/subscriptions/17a70741-bd70-/resourceGroups/b1ebdbe7-649c-45c/providers/Microsoft.Sql/servers/c554d2dd-0/jobAgents/b7a99cca-38c/jobs/bcd8be8/executions/c9717eeb-a348-/steps"; + Requests[4858] = new DefaultHttpContext(); + Requests[4858].RequestServices = CreateServices(); + Requests[4858].Request.Method = "GET"; + Requests[4858].Request.Path = "/subscriptions/221f9c17-42b7-/resourceGroups/a9f262a7-469d-489/providers/Microsoft.Sql/servers/701f2745-3/jobAgents/4a7c771e-6bf/jobs/7a8ad07/executions/4f24d083-f5f4-/targets"; + Requests[4859] = new DefaultHttpContext(); + Requests[4859].RequestServices = CreateServices(); + Requests[4859].Request.Method = "GET"; + Requests[4859].Request.Path = "/subscriptions/471396e4-9005-/resourceGroups/afdfeefc-d0b5-42b/providers/Microsoft.Sql/servers/d6d97589-5/jobAgents/295a02b2-761/jobs/086d48f/versions/e64e88c8-f/steps"; + Requests[4860] = new DefaultHttpContext(); + Requests[4860].RequestServices = CreateServices(); + Requests[4860].Request.Method = "POST"; + Requests[4860].Request.Path = "/subscriptions/be3b8470-f6bb-/resourceGroups/d3310dcb-22ee-482/providers/Microsoft.StorSimple/managers/42575ffb-ce/devices/19211621-6/backups/4a9eb60c-b/elements/f5dfe0c7-ecd3-4f0/clone"; + Requests[4861] = new DefaultHttpContext(); + Requests[4861].RequestServices = CreateServices(); + Requests[4861].Request.Method = "GET"; + Requests[4861].Request.Path = "/subscriptions/0f681e4e-4aec-/resourceGroups/86180793-3a84-444/providers/Microsoft.StorSimple/managers/58e707fd-74/devices/1bb11b4c-6/volumeContainers/b60c591a-6c77-407a-/volumes/36cc19a4-5/metrics"; + Requests[4862] = new DefaultHttpContext(); + Requests[4862].RequestServices = CreateServices(); + Requests[4862].Request.Method = "GET"; + Requests[4862].Request.Path = "/subscriptions/960e4030-42cb-/resourceGroups/c51c2fc2-f368-4e7/providers/Microsoft.StorSimple/managers/f1229633-2e/devices/29f44f10-1/volumeContainers/e42ecc84-0bf1-465a-/volumes/3bf2b779-b/metricsDefinitions"; + Requests[4863] = new DefaultHttpContext(); + Requests[4863].RequestServices = CreateServices(); + Requests[4863].Request.Method = "POST"; + Requests[4863].Request.Path = "/subscriptions/f864bdcf-c08a-/resourceGroups/118bc2d3-8a91-46f/providers/Microsoft.Web/sites/ba4aa/slots/c8ec1/hybridConnectionNamespaces/ad5c59b0-82b3/relays/691cd166-/listKeys"; + Requests[4864] = new DefaultHttpContext(); + Requests[4864].RequestServices = CreateServices(); + Requests[4864].Request.Method = "GET"; + Requests[4864].Request.Path = "/subscriptions/385ca42d-1776-/resourceGroups/2ec6e320-7ace-4eb/providers/Microsoft.Web/sites/de1b9/slots/0add9/instances/3efb17b4-b/processes/2cbbf3ac-/dump"; + Requests[4865] = new DefaultHttpContext(); + Requests[4865].RequestServices = CreateServices(); + Requests[4865].Request.Method = "GET"; + Requests[4865].Request.Path = "/subscriptions/12049df9-b7a6-/resourceGroups/43946189-b4a8-491/providers/Microsoft.Web/sites/106d7/slots/cdc1b/instances/e19d537d-4/processes/75b77b12-/modules"; + Requests[4866] = new DefaultHttpContext(); + Requests[4866].RequestServices = CreateServices(); + Requests[4866].Request.Method = "GET"; + Requests[4866].Request.Path = "/subscriptions/7c4a0603-26c9-/resourceGroups/d779ffc0-d8ac-4ee/providers/Microsoft.Web/sites/bfada/slots/68aa6/instances/9897619f-5/processes/1491907d-/threads"; + Requests[4867] = new DefaultHttpContext(); + Requests[4867].RequestServices = CreateServices(); + Requests[4867].Request.Method = "POST"; + Requests[4867].Request.Path = "/subscriptions/6623a93c-6409-/resourceGroups/3a03e4e1-eddf-408/providers/Microsoft.Web/sites/6aa1156d/slots/bfff4/diagnostics/9246b672-9302-4bcd/analyses/49c587b0-905/execute"; + Requests[4868] = new DefaultHttpContext(); + Requests[4868].RequestServices = CreateServices(); + Requests[4868].Request.Method = "POST"; + Requests[4868].Request.Path = "/subscriptions/e0ace841-a12f-/resourceGroups/7ff9f836-ecb4-4fb/providers/Microsoft.Web/sites/7b5f856f/slots/9b370/diagnostics/093d3e3c-7e80-4e21/detectors/9c766090-bab/execute"; + Requests[4869] = new DefaultHttpContext(); + Requests[4869].RequestServices = CreateServices(); + Requests[4869].Request.Method = "GET"; + Requests[4869].Request.Path = "/subscriptions/a5f05d2f-3755-/resourceGroups/b843e1fd-5fb1-426/providers/Microsoft.DocumentDB/databaseAccounts/f9db29f8-39/region/706dfc/databases/e6fdd70e-46/collections/a799ba5c-f4e9/partitions/metrics"; + Requests[4870] = new DefaultHttpContext(); + Requests[4870].RequestServices = CreateServices(); + Requests[4870].Request.Method = "GET"; + Requests[4870].Request.Path = "/subscriptions/89dbf06e-76e5-/resourceGroups/2a120179-6370-46d/providers/Microsoft.Compute/virtualMachineScaleSets/f8d9fa6a-7972-4d5e-a464-0f/virtualMachines/1a16a298-4444-4a73-/networkInterfaces/e17d736a-a873-4e39-9/ipconfigurations/18143609-5069-4cac-/publicipaddresses/37df828d-4687-4a98-"; + Requests[4871] = new DefaultHttpContext(); + Requests[4871].RequestServices = CreateServices(); + Requests[4871].Request.Method = "GET"; + Requests[4871].Request.Path = "/Subscriptions/3806ba8d-6fe6-/resourceGroups/cccf1195-0e3f-4bf/providers/Microsoft.RecoveryServices/vaults/224e6d4f-508/replicationFabrics/b6e62e75-a/replicationProtectionContainers/77e0293e-f836-4797-afcf/replicationProtectedItems/dc38c64b-1de5-4d8d-8897-5b5/recoveryPoints/350010e2-47d4-41c"; + Requests[4872] = new DefaultHttpContext(); + Requests[4872].RequestServices = CreateServices(); + Requests[4872].Request.Method = "GET"; + Requests[4872].Request.Path = "/Subscriptions/12f9e1e0-fc71-/resourceGroups/777e9730-c029-4b9/providers/Microsoft.RecoveryServices/vaults/40cfe16a-/backupFabrics/b38da414-e/protectionContainers/e8df9145-af18/protectedItems/7106a542-06b9-469/operationResults/6f7e0af0-c4"; + Requests[4873] = new DefaultHttpContext(); + Requests[4873].RequestServices = CreateServices(); + Requests[4873].Request.Method = "GET"; + Requests[4873].Request.Path = "/Subscriptions/a8af64fb-188b-/resourceGroups/1cc7036f-1674-447/providers/Microsoft.RecoveryServices/vaults/3abfc3d1-/backupFabrics/2c41fbf5-d/protectionContainers/71e03a13-61f5/protectedItems/fa9f1784-e53a-4fb/operationsStatus/384df979-21"; + Requests[4874] = new DefaultHttpContext(); + Requests[4874].RequestServices = CreateServices(); + Requests[4874].Request.Method = "GET"; + Requests[4874].Request.Path = "/Subscriptions/84249155-b565-/resourceGroups/5c5eb050-f66e-4dc/providers/Microsoft.RecoveryServices/vaults/554c716f-/backupFabrics/d477250b-9/protectionContainers/21aaf720-1d84/protectedItems/7d5c013b-ded9-4da/recoveryPoints/ff870c43-1942-4"; + Requests[4875] = new DefaultHttpContext(); + Requests[4875].RequestServices = CreateServices(); + Requests[4875].Request.Method = "GET"; + Requests[4875].Request.Path = "/subscriptions/07d89ad1-f8f4-/resourceGroups/e9efc4c6-5a1d-459/providers/Microsoft.Sql/servers/05327fb6-4/databases/b6eedbb4-9a5/vulnerabilityAssessments/0963956d-34a5-4fd1-bd65-47b/rules/b0ffba/baselines/4e02e82b-4fd"; + Requests[4876] = new DefaultHttpContext(); + Requests[4876].RequestServices = CreateServices(); + Requests[4876].Request.Method = "PUT"; + Requests[4876].Request.Path = "/subscriptions/8981a5f0-309f-/resourceGroups/ad4ea3de-8624-451/providers/Microsoft.Sql/servers/87d23fdf-f/databases/074239fa-13a/vulnerabilityAssessments/dc25b714-3e44-4f3d-a189-a56/rules/7dfdee/baselines/78ff578e-cdd"; + Requests[4877] = new DefaultHttpContext(); + Requests[4877].RequestServices = CreateServices(); + Requests[4877].Request.Method = "DELETE"; + Requests[4877].Request.Path = "/subscriptions/34a0e23d-f356-/resourceGroups/e19d4e60-ba47-414/providers/Microsoft.Sql/servers/a5053f18-c/databases/babac6c1-c6c/vulnerabilityAssessments/e21ec65a-7d3a-47a1-995e-b81/rules/d1fe58/baselines/a3b69a42-ca2"; + Requests[4878] = new DefaultHttpContext(); + Requests[4878].RequestServices = CreateServices(); + Requests[4878].Request.Method = "GET"; + Requests[4878].Request.Path = "/subscriptions/03bdd021-4758-/resourceGroups/f1d12e65-1f76-4c3/providers/Microsoft.Sql/servers/0ff0eed4-2/jobAgents/d60db8ac-c67/jobs/3b79001/executions/8e915fd8-edfc-/steps/85ef4722"; + Requests[4879] = new DefaultHttpContext(); + Requests[4879].RequestServices = CreateServices(); + Requests[4879].Request.Method = "GET"; + Requests[4879].Request.Path = "/subscriptions/98372c8a-1723-/resourceGroups/7e3fe31c-dbcf-4d8/providers/Microsoft.Sql/servers/c476c371-d/jobAgents/7858cb68-271/jobs/46a59ea/versions/add685f5-4/steps/0fa82558"; + Requests[4880] = new DefaultHttpContext(); + Requests[4880].RequestServices = CreateServices(); + Requests[4880].Request.Method = "GET"; + Requests[4880].Request.Path = "/subscriptions/01371cab-3f2e-/resourceGroups/202e84e8-2506-473/providers/Microsoft.Web/sites/b650c/slots/87367/instances/6527d2b7-c/processes/27591635-/modules/e6bc387f-99"; + Requests[4881] = new DefaultHttpContext(); + Requests[4881].RequestServices = CreateServices(); + Requests[4881].Request.Method = "GET"; + Requests[4881].Request.Path = "/subscriptions/3cce76a4-2821-/resourceGroups/dd2bf3bb-191b-454/providers/Microsoft.Web/sites/351b6/slots/08e5c/instances/92c1b10a-e/processes/39e953e6-/threads/2c598ac2"; + Requests[4882] = new DefaultHttpContext(); + Requests[4882].RequestServices = CreateServices(); + Requests[4882].Request.Method = "GET"; + Requests[4882].Request.Path = "/subscriptions/4974afa0-f7b0-/resourceGroups/f6a0d7d4-d2c4-432/providers/Microsoft.DocumentDB/databaseAccounts/409aa4c6-bf/region/30f974/databases/d0a22e97-a2/collections/18ab21c1-f23c/partitionKeyRangeId/cb467676-7311-4c41-/metrics"; + Requests[4883] = new DefaultHttpContext(); + Requests[4883].RequestServices = CreateServices(); + Requests[4883].Request.Method = "POST"; + Requests[4883].Request.Path = "/Subscriptions/8404eb86-f9bc-/resourceGroups/88ad4779-9e35-490/providers/Microsoft.RecoveryServices/vaults/c6ed18c4-/backupFabrics/fac88ee8-7/protectionContainers/660682c8-aed8/protectedItems/bb7119a5-16fc-455/recoveryPoints/77155fb5-a789-4/provisionInstantItemRecovery"; + Requests[4884] = new DefaultHttpContext(); + Requests[4884].RequestServices = CreateServices(); + Requests[4884].Request.Method = "POST"; + Requests[4884].Request.Path = "/Subscriptions/7903a5bf-51c7-/resourceGroups/c0546013-9d9d-42c/providers/Microsoft.RecoveryServices/vaults/769cdf0e-/backupFabrics/9023c526-8/protectionContainers/52dadd72-4e94/protectedItems/20d7a386-1efe-45a/recoveryPoints/5b401f2b-d755-4/restore"; + Requests[4885] = new DefaultHttpContext(); + Requests[4885].RequestServices = CreateServices(); + Requests[4885].Request.Method = "POST"; + Requests[4885].Request.Path = "/Subscriptions/294899c1-8115-/resourceGroups/64c9c200-6e05-4a3/providers/Microsoft.RecoveryServices/vaults/9cec4132-/backupFabrics/84e887eb-b/protectionContainers/ad9d7103-ea2b/protectedItems/b95a72c5-c8ca-457/recoveryPoints/32b692e1-3a06-4/revokeInstantItemRecovery"; + Requests[4886] = new DefaultHttpContext(); + Requests[4886].RequestServices = CreateServices(); + Requests[4886].Request.Method = "GET"; + Requests[4886].Request.Path = "/subscriptions/8ef05ee2-781c-/resourceGroups/78f9c373-a686-404/providers/Microsoft.Sql/servers/312f41ef-2/jobAgents/2e8ab256-37e/jobs/9d1a102/executions/df235d4e-6b52-/steps/8216ce10/targets"; + Requests[4887] = new DefaultHttpContext(); + Requests[4887].RequestServices = CreateServices(); + Requests[4887].Request.Method = "GET"; + Requests[4887].Request.Path = "/subscriptions/47175220-f905-/resourceGroups/f31cbd83-463c-475/providers/Microsoft.Sql/servers/93e39bd7-a/jobAgents/692bd4f0-7da/jobs/e2acbe3/executions/2d417930-bdba-/steps/60d9cd32/targets/bc2c470e"; + Requests[4888] = new DefaultHttpContext(); + Requests[4888].RequestServices = CreateServices(); + Requests[4888].Request.Method = "GET"; + Requests[4888].Request.Path = "/subscriptions/10516263-3f7e-/resourceGroups/1bf8d1fa-8d07-491/providers/Microsoft.ApiManagement/service/8abe0ca6-f3/quotas/fdc8f7ad-68ea-4/c4f6b972-57e7-"; + Requests[4889] = new DefaultHttpContext(); + Requests[4889].RequestServices = CreateServices(); + Requests[4889].Request.Method = "PATCH"; + Requests[4889].Request.Path = "/subscriptions/139989cd-4c93-/resourceGroups/7329f758-a676-43b/providers/Microsoft.ApiManagement/service/ce71dc48-0b/quotas/09113d7e-b53b-4/b84538da-c0f7-"; + Requests[4890] = new DefaultHttpContext(); + Requests[4890].RequestServices = CreateServices(); + Requests[4890].Request.Method = "POST"; + Requests[4890].Request.Path = "/subscriptions/bebbca39-7129-/resourceGroups/ef380694-998a-4f2/providers/Microsoft.Security/locations/6286daec-c5/alerts/9ffca175-/7efdabd8-b923-4889-9f"; + Requests[4891] = new DefaultHttpContext(); + Requests[4891].RequestServices = CreateServices(); + Requests[4891].Request.Method = "POST"; + Requests[4891].Request.Path = "/subscriptions/6ee130bd-d040-/resourceGroups/618ad18a-c334-461/providers/Microsoft.Security/locations/8577d61f-7e/jitNetworkAccessPolicies/9882efd6-85ce-4f32-8284-be/c61f90c6-a4d2-4269-987c-12d977d8"; + Requests[4892] = new DefaultHttpContext(); + Requests[4892].RequestServices = CreateServices(); + Requests[4892].Request.Method = "POST"; + Requests[4892].Request.Path = "/subscriptions/4f0fda55-2e6d-/resourceGroups/81831a56-1777-474/providers/Microsoft.Security/locations/5c01f027-1a/tasks/f6d95d99/130cf9c8-3fa2-40c2-9"; + Requests[4893] = new DefaultHttpContext(); + Requests[4893].RequestServices = CreateServices(); + Requests[4893].Request.Method = "GET"; + Requests[4893].Request.Path = "/subscriptions/781d1560-c2b2-/resourceGroups/efb28a26-02cc-4ab/providers/microsoft.insights/components/b8e7b533-031/e62635a6-"; + Requests[4894] = new DefaultHttpContext(); + Requests[4894].RequestServices = CreateServices(); + Requests[4894].Request.Method = "GET"; + Requests[4894].Request.Path = "/subscriptions/6460ce03-3a13-/resourceGroups/56caf886-83db-463/providers/Microsoft.Network/dnsZones/16b2c706/1178a933-3"; + Requests[4895] = new DefaultHttpContext(); + Requests[4895].RequestServices = CreateServices(); + Requests[4895].Request.Method = "PUT"; + Requests[4895].Request.Path = "/subscriptions/e7295fec-c8d2-/resourceGroups/2a3fbd09-de1c-4f8/providers/microsoft.insights/components/95fcaeb6-dbc/d800ae67-/item"; + Requests[4896] = new DefaultHttpContext(); + Requests[4896].RequestServices = CreateServices(); + Requests[4896].Request.Method = "DELETE"; + Requests[4896].Request.Path = "/subscriptions/98fde1ef-5349-/resourceGroups/7aa9f7db-3064-487/providers/microsoft.insights/components/7a308ab3-f78/08d3cf9d-/item"; + Requests[4897] = new DefaultHttpContext(); + Requests[4897].RequestServices = CreateServices(); + Requests[4897].Request.Method = "GET"; + Requests[4897].Request.Path = "/subscriptions/fa32c24a-af64-/resourceGroups/3e1dfba9-695c-434/providers/microsoft.insights/components/f312f7b4-0dc/f2e2defe-/item"; + Requests[4898] = new DefaultHttpContext(); + Requests[4898].RequestServices = CreateServices(); + Requests[4898].Request.Method = "DELETE"; + Requests[4898].Request.Path = "/subscriptions/93df41b3-fc67-/resourceGroups/d520b710-03ae-48a/providers/Microsoft.Network/dnsZones/ce35f393/541714ab-1/fb26f6de-64fc-42bd-83"; + Requests[4899] = new DefaultHttpContext(); + Requests[4899].RequestServices = CreateServices(); + Requests[4899].Request.Method = "PUT"; + Requests[4899].Request.Path = "/subscriptions/965c9a6b-569a-/resourceGroups/196bb97b-64f0-412/providers/Microsoft.Network/dnsZones/6babb5bd/618803f9-3/5fbccdb7-2dd4-4bdf-84"; + Requests[4900] = new DefaultHttpContext(); + Requests[4900].RequestServices = CreateServices(); + Requests[4900].Request.Method = "GET"; + Requests[4900].Request.Path = "/subscriptions/cdbc08bb-e60c-/resourceGroups/a8bd0da5-1e37-4a9/providers/Microsoft.Network/dnsZones/c4dcb792/599675bc-c/501d9ae8-eea3-473c-a0"; + Requests[4901] = new DefaultHttpContext(); + Requests[4901].RequestServices = CreateServices(); + Requests[4901].Request.Method = "PATCH"; + Requests[4901].Request.Path = "/subscriptions/aac7f575-2574-/resourceGroups/360fd650-0c06-4df/providers/Microsoft.Network/dnsZones/80a15c4c/21658587-3/eb04c2c0-42b8-4393-8b"; + Requests[4902] = new DefaultHttpContext(); + Requests[4902].RequestServices = CreateServices(); + Requests[4902].Request.Method = "DELETE"; + Requests[4902].Request.Path = "/subscriptions/2b0b8b47-272a-/resourceGroups/c4cfd748-836f-40a/providers/Microsoft.Network/trafficmanagerprofiles/95da7bfe-8a/e57a6b8c-ebc/5d3607df-b75"; + Requests[4903] = new DefaultHttpContext(); + Requests[4903].RequestServices = CreateServices(); + Requests[4903].Request.Method = "PUT"; + Requests[4903].Request.Path = "/subscriptions/30aa405c-daed-/resourceGroups/05e61d9d-633f-42e/providers/Microsoft.Network/trafficmanagerprofiles/285791ed-46/d067f0ee-bd8/1408e0ed-fc3"; + Requests[4904] = new DefaultHttpContext(); + Requests[4904].RequestServices = CreateServices(); + Requests[4904].Request.Method = "GET"; + Requests[4904].Request.Path = "/subscriptions/3a5e0092-20bc-/resourceGroups/ff3263fc-17c8-4f0/providers/Microsoft.Network/trafficmanagerprofiles/e05c26bf-17/a0ce2c72-951/623e9e51-c90"; + Requests[4905] = new DefaultHttpContext(); + Requests[4905].RequestServices = CreateServices(); + Requests[4905].Request.Method = "PATCH"; + Requests[4905].Request.Path = "/subscriptions/5868afd5-497e-/resourceGroups/d1387aed-7d24-4ef/providers/Microsoft.Network/trafficmanagerprofiles/12a07228-c3/aa803c65-465/f895e1f3-6fc"; + Requests[4906] = new DefaultHttpContext(); + Requests[4906].RequestServices = CreateServices(); + Requests[4906].Request.Method = "PUT"; + Requests[4906].Request.Path = "/apis/513f5/operations/82d8cbc5-8e/policies/ce1cf724"; + Requests[4907] = new DefaultHttpContext(); + Requests[4907].RequestServices = CreateServices(); + Requests[4907].Request.Method = "GET"; + Requests[4907].Request.Path = "/apis/241b2/operations/b8a899d7-cf/policies/b439928c"; + Requests[4908] = new DefaultHttpContext(); + Requests[4908].RequestServices = CreateServices(); + Requests[4908].Request.Method = "DELETE"; + Requests[4908].Request.Path = "/apis/fb89b/operations/477c1598-f6/policies/dbe60b1a"; + Requests[4909] = new DefaultHttpContext(); + Requests[4909].RequestServices = CreateServices(); + Requests[4909].Request.Method = "PUT"; + Requests[4909].Request.Path = "/apps/8d0ce/versions/d95f8dde-/closedlists/e790e7da-d"; + Requests[4910] = new DefaultHttpContext(); + Requests[4910].RequestServices = CreateServices(); + Requests[4910].Request.Method = "GET"; + Requests[4910].Request.Path = "/apps/33ee0/versions/fdf9052c-/closedlists/bdcf2d17-9"; + Requests[4911] = new DefaultHttpContext(); + Requests[4911].RequestServices = CreateServices(); + Requests[4911].Request.Method = "DELETE"; + Requests[4911].Request.Path = "/apps/f71af/versions/72848dbc-/closedlists/d8365b20-d"; + Requests[4912] = new DefaultHttpContext(); + Requests[4912].RequestServices = CreateServices(); + Requests[4912].Request.Method = "PATCH"; + Requests[4912].Request.Path = "/apps/08c50/versions/430dba37-/closedlists/f98200ba-3"; + Requests[4913] = new DefaultHttpContext(); + Requests[4913].RequestServices = CreateServices(); + Requests[4913].Request.Method = "PUT"; + Requests[4913].Request.Path = "/apps/11190/versions/28869cce-/compositeentities/0a063510-"; + Requests[4914] = new DefaultHttpContext(); + Requests[4914].RequestServices = CreateServices(); + Requests[4914].Request.Method = "GET"; + Requests[4914].Request.Path = "/apps/79c0c/versions/6b0c5e98-/compositeentities/06ee5ee4-"; + Requests[4915] = new DefaultHttpContext(); + Requests[4915].RequestServices = CreateServices(); + Requests[4915].Request.Method = "DELETE"; + Requests[4915].Request.Path = "/apps/c9593/versions/0a7d01df-/compositeentities/06efb9fc-"; + Requests[4916] = new DefaultHttpContext(); + Requests[4916].RequestServices = CreateServices(); + Requests[4916].Request.Method = "DELETE"; + Requests[4916].Request.Path = "/apps/bb9c7/versions/4476452c-/customprebuiltdomains/a854413c-0"; + Requests[4917] = new DefaultHttpContext(); + Requests[4917].RequestServices = CreateServices(); + Requests[4917].Request.Method = "PUT"; + Requests[4917].Request.Path = "/apps/fb8e9/versions/190c27d8-/entities/c6cb4815"; + Requests[4918] = new DefaultHttpContext(); + Requests[4918].RequestServices = CreateServices(); + Requests[4918].Request.Method = "GET"; + Requests[4918].Request.Path = "/apps/83c5d/versions/1231a7c7-/entities/5a855ffe"; + Requests[4919] = new DefaultHttpContext(); + Requests[4919].RequestServices = CreateServices(); + Requests[4919].Request.Method = "DELETE"; + Requests[4919].Request.Path = "/apps/e1f0f/versions/9021c575-/entities/f4250272"; + Requests[4920] = new DefaultHttpContext(); + Requests[4920].RequestServices = CreateServices(); + Requests[4920].Request.Method = "DELETE"; + Requests[4920].Request.Path = "/apps/01fcd/versions/4d12d914-/examples/7912fbb1-"; + Requests[4921] = new DefaultHttpContext(); + Requests[4921].RequestServices = CreateServices(); + Requests[4921].Request.Method = "GET"; + Requests[4921].Request.Path = "/apps/2f459/versions/5ecb7b06-/hierarchicalentities/a1ec199f-"; + Requests[4922] = new DefaultHttpContext(); + Requests[4922].RequestServices = CreateServices(); + Requests[4922].Request.Method = "PUT"; + Requests[4922].Request.Path = "/apps/ccb5c/versions/6bdc7397-/hierarchicalentities/8ad2c293-"; + Requests[4923] = new DefaultHttpContext(); + Requests[4923].RequestServices = CreateServices(); + Requests[4923].Request.Method = "DELETE"; + Requests[4923].Request.Path = "/apps/a9c06/versions/97497c94-/hierarchicalentities/57dfd669-"; + Requests[4924] = new DefaultHttpContext(); + Requests[4924].RequestServices = CreateServices(); + Requests[4924].Request.Method = "PUT"; + Requests[4924].Request.Path = "/apps/1dc7e/versions/1f2523be-/intents/54cb2658"; + Requests[4925] = new DefaultHttpContext(); + Requests[4925].RequestServices = CreateServices(); + Requests[4925].Request.Method = "DELETE"; + Requests[4925].Request.Path = "/apps/56167/versions/20a9a4b4-/intents/ac15f564"; + Requests[4926] = new DefaultHttpContext(); + Requests[4926].RequestServices = CreateServices(); + Requests[4926].Request.Method = "GET"; + Requests[4926].Request.Path = "/apps/afb3f/versions/4e632218-/intents/15fb0650"; + Requests[4927] = new DefaultHttpContext(); + Requests[4927].RequestServices = CreateServices(); + Requests[4927].Request.Method = "GET"; + Requests[4927].Request.Path = "/apps/7b893/versions/7c7090bf-/patternanyentities/98457a87"; + Requests[4928] = new DefaultHttpContext(); + Requests[4928].RequestServices = CreateServices(); + Requests[4928].Request.Method = "PUT"; + Requests[4928].Request.Path = "/apps/deb56/versions/f0261165-/patternanyentities/f455956e"; + Requests[4929] = new DefaultHttpContext(); + Requests[4929].RequestServices = CreateServices(); + Requests[4929].Request.Method = "DELETE"; + Requests[4929].Request.Path = "/apps/5886f/versions/44c1838a-/patternanyentities/78469290"; + Requests[4930] = new DefaultHttpContext(); + Requests[4930].RequestServices = CreateServices(); + Requests[4930].Request.Method = "PUT"; + Requests[4930].Request.Path = "/apps/8a120/versions/cfafadc1-/patternrules/c20cc4bd-"; + Requests[4931] = new DefaultHttpContext(); + Requests[4931].RequestServices = CreateServices(); + Requests[4931].Request.Method = "DELETE"; + Requests[4931].Request.Path = "/apps/62ef2/versions/d006d772-/patternrules/f9d3478b-"; + Requests[4932] = new DefaultHttpContext(); + Requests[4932].RequestServices = CreateServices(); + Requests[4932].Request.Method = "DELETE"; + Requests[4932].Request.Path = "/apps/0aca5/versions/0973ee92-/patterns/14e1d8d3-"; + Requests[4933] = new DefaultHttpContext(); + Requests[4933].RequestServices = CreateServices(); + Requests[4933].Request.Method = "GET"; + Requests[4933].Request.Path = "/apps/5f1c7/versions/f81ffbf4-/patterns/f77ececd-"; + Requests[4934] = new DefaultHttpContext(); + Requests[4934].RequestServices = CreateServices(); + Requests[4934].Request.Method = "PUT"; + Requests[4934].Request.Path = "/apps/881e8/versions/eb3cdb2f-/patterns/6410c0e8-"; + Requests[4935] = new DefaultHttpContext(); + Requests[4935].RequestServices = CreateServices(); + Requests[4935].Request.Method = "GET"; + Requests[4935].Request.Path = "/apps/87459/versions/231abce1-/phraselists/f74a2608-b9e"; + Requests[4936] = new DefaultHttpContext(); + Requests[4936].RequestServices = CreateServices(); + Requests[4936].Request.Method = "DELETE"; + Requests[4936].Request.Path = "/apps/e9901/versions/bdfb8075-/phraselists/09d5483f-343"; + Requests[4937] = new DefaultHttpContext(); + Requests[4937].RequestServices = CreateServices(); + Requests[4937].Request.Method = "PUT"; + Requests[4937].Request.Path = "/apps/ebe37/versions/4966c96b-/phraselists/1ac342f9-617"; + Requests[4938] = new DefaultHttpContext(); + Requests[4938].RequestServices = CreateServices(); + Requests[4938].Request.Method = "DELETE"; + Requests[4938].Request.Path = "/apps/ab712/versions/455e7e97-/prebuilts/b7b8747e-7"; + Requests[4939] = new DefaultHttpContext(); + Requests[4939].RequestServices = CreateServices(); + Requests[4939].Request.Method = "GET"; + Requests[4939].Request.Path = "/apps/cbe09/versions/92caa256-/prebuilts/f40b3c83-7"; + Requests[4940] = new DefaultHttpContext(); + Requests[4940].RequestServices = CreateServices(); + Requests[4940].Request.Method = "GET"; + Requests[4940].Request.Path = "/apps/45afa/versions/d0f204aa-/regexentities/4f610950-454b"; + Requests[4941] = new DefaultHttpContext(); + Requests[4941].RequestServices = CreateServices(); + Requests[4941].Request.Method = "DELETE"; + Requests[4941].Request.Path = "/apps/799b0/versions/ede12146-/regexentities/50ee8a63-87f9"; + Requests[4942] = new DefaultHttpContext(); + Requests[4942].RequestServices = CreateServices(); + Requests[4942].Request.Method = "PUT"; + Requests[4942].Request.Path = "/apps/d79e9/versions/c3ee5796-/regexentities/b1455842-1804"; + Requests[4943] = new DefaultHttpContext(); + Requests[4943].RequestServices = CreateServices(); + Requests[4943].Request.Method = "GET"; + Requests[4943].Request.Path = "/jobs/2a3fc/tasks/7780a6/files/a9cec738"; + Requests[4944] = new DefaultHttpContext(); + Requests[4944].RequestServices = CreateServices(); + Requests[4944].Request.Method = "HEAD"; + Requests[4944].Request.Path = "/jobs/78da7/tasks/949653/files/8d67c742"; + Requests[4945] = new DefaultHttpContext(); + Requests[4945].RequestServices = CreateServices(); + Requests[4945].Request.Method = "DELETE"; + Requests[4945].Request.Path = "/jobs/204f4/tasks/172563/files/2fee5574"; + Requests[4946] = new DefaultHttpContext(); + Requests[4946].RequestServices = CreateServices(); + Requests[4946].Request.Method = "GET"; + Requests[4946].Request.Path = "/persongroups/857e54fc-4350/persons/5b186435/persistedFaces/977982f4-190f-4"; + Requests[4947] = new DefaultHttpContext(); + Requests[4947].RequestServices = CreateServices(); + Requests[4947].Request.Method = "DELETE"; + Requests[4947].Request.Path = "/persongroups/aa14cb16-af27/persons/f7b0f457/persistedFaces/bb539487-2023-4"; + Requests[4948] = new DefaultHttpContext(); + Requests[4948].RequestServices = CreateServices(); + Requests[4948].Request.Method = "PATCH"; + Requests[4948].Request.Path = "/persongroups/67d72e12-48c3/persons/93bd0ecb/persistedFaces/afe882c4-f74d-4"; + Requests[4949] = new DefaultHttpContext(); + Requests[4949].RequestServices = CreateServices(); + Requests[4949].Request.Method = "HEAD"; + Requests[4949].Request.Path = "/pools/fc4e31/nodes/c4c148/files/f3928014"; + Requests[4950] = new DefaultHttpContext(); + Requests[4950].RequestServices = CreateServices(); + Requests[4950].Request.Method = "DELETE"; + Requests[4950].Request.Path = "/pools/d687bd/nodes/e2c6e6/files/fc34c099"; + Requests[4951] = new DefaultHttpContext(); + Requests[4951].RequestServices = CreateServices(); + Requests[4951].Request.Method = "GET"; + Requests[4951].Request.Path = "/pools/6f9a58/nodes/5c6fc8/files/6f691424"; + Requests[4952] = new DefaultHttpContext(); + Requests[4952].RequestServices = CreateServices(); + Requests[4952].Request.Method = "PUT"; + Requests[4952].Request.Path = "/pools/d0224b/nodes/d031bf/users/f7f0d225"; + Requests[4953] = new DefaultHttpContext(); + Requests[4953].RequestServices = CreateServices(); + Requests[4953].Request.Method = "DELETE"; + Requests[4953].Request.Path = "/pools/d55a60/nodes/f42add/users/6c156708"; + Requests[4954] = new DefaultHttpContext(); + Requests[4954].RequestServices = CreateServices(); + Requests[4954].Request.Method = "DELETE"; + Requests[4954].Request.Path = "/subscriptions/59118636-503f-/tagNames/4bf538c/tagValues/39540536"; + Requests[4955] = new DefaultHttpContext(); + Requests[4955].RequestServices = CreateServices(); + Requests[4955].Request.Method = "PUT"; + Requests[4955].Request.Path = "/subscriptions/54d7bf4e-6836-/tagNames/3020c6f/tagValues/cd00b0fb"; + Requests[4956] = new DefaultHttpContext(); + Requests[4956].RequestServices = CreateServices(); + Requests[4956].Request.Method = "POST"; + Requests[4956].Request.Path = "/apps/9cfcd/versions/b058858b-/closedlists/6769ebd7-6/sublists"; + Requests[4957] = new DefaultHttpContext(); + Requests[4957].RequestServices = CreateServices(); + Requests[4957].Request.Method = "POST"; + Requests[4957].Request.Path = "/apps/ac654/versions/4168564a-/closedlists/08a8d948/roles"; + Requests[4958] = new DefaultHttpContext(); + Requests[4958].RequestServices = CreateServices(); + Requests[4958].Request.Method = "GET"; + Requests[4958].Request.Path = "/apps/4770d/versions/f554c2a5-/closedlists/46782ea8/roles"; + Requests[4959] = new DefaultHttpContext(); + Requests[4959].RequestServices = CreateServices(); + Requests[4959].Request.Method = "POST"; + Requests[4959].Request.Path = "/apps/e358a/versions/dbe3f466-/compositeentities/f4b37cbe-/children"; + Requests[4960] = new DefaultHttpContext(); + Requests[4960].RequestServices = CreateServices(); + Requests[4960].Request.Method = "POST"; + Requests[4960].Request.Path = "/apps/4ff32/versions/a02f5a8c-/compositeentities/49b935f0-/roles"; + Requests[4961] = new DefaultHttpContext(); + Requests[4961].RequestServices = CreateServices(); + Requests[4961].Request.Method = "GET"; + Requests[4961].Request.Path = "/apps/6f1c7/versions/88ea8074-/compositeentities/976cfeb6-/roles"; + Requests[4962] = new DefaultHttpContext(); + Requests[4962].RequestServices = CreateServices(); + Requests[4962].Request.Method = "GET"; + Requests[4962].Request.Path = "/apps/9f1aa/versions/4edca212-/customprebuiltentities/b9a9e93f/roles"; + Requests[4963] = new DefaultHttpContext(); + Requests[4963].RequestServices = CreateServices(); + Requests[4963].Request.Method = "POST"; + Requests[4963].Request.Path = "/apps/27086/versions/1275fbea-/customprebuiltentities/008b3d43/roles"; + Requests[4964] = new DefaultHttpContext(); + Requests[4964].RequestServices = CreateServices(); + Requests[4964].Request.Method = "GET"; + Requests[4964].Request.Path = "/apps/2fedd/versions/2973e55e-/entities/71306ee8/roles"; + Requests[4965] = new DefaultHttpContext(); + Requests[4965].RequestServices = CreateServices(); + Requests[4965].Request.Method = "POST"; + Requests[4965].Request.Path = "/apps/32345/versions/843aa7ba-/entities/3ca2fbb7/roles"; + Requests[4966] = new DefaultHttpContext(); + Requests[4966].RequestServices = CreateServices(); + Requests[4966].Request.Method = "GET"; + Requests[4966].Request.Path = "/apps/109cd/versions/dc33f23d-/entities/eb481b08/suggest"; + Requests[4967] = new DefaultHttpContext(); + Requests[4967].RequestServices = CreateServices(); + Requests[4967].Request.Method = "POST"; + Requests[4967].Request.Path = "/apps/44756/versions/6612fa28-/hierarchicalentities/659112ae-/children"; + Requests[4968] = new DefaultHttpContext(); + Requests[4968].RequestServices = CreateServices(); + Requests[4968].Request.Method = "POST"; + Requests[4968].Request.Path = "/apps/503a4/versions/3f96ae06-/hierarchicalentities/77d26a1c-/roles"; + Requests[4969] = new DefaultHttpContext(); + Requests[4969].RequestServices = CreateServices(); + Requests[4969].Request.Method = "GET"; + Requests[4969].Request.Path = "/apps/4b384/versions/6fc4ea30-/hierarchicalentities/142f7935-/roles"; + Requests[4970] = new DefaultHttpContext(); + Requests[4970].RequestServices = CreateServices(); + Requests[4970].Request.Method = "GET"; + Requests[4970].Request.Path = "/apps/d427b/versions/09389cc8-/intents/77698b76/patternrules"; + Requests[4971] = new DefaultHttpContext(); + Requests[4971].RequestServices = CreateServices(); + Requests[4971].Request.Method = "GET"; + Requests[4971].Request.Path = "/apps/51949/versions/b42f1245-/intents/68a76c06/suggest"; + Requests[4972] = new DefaultHttpContext(); + Requests[4972].RequestServices = CreateServices(); + Requests[4972].Request.Method = "GET"; + Requests[4972].Request.Path = "/apps/cc8a9/versions/371f1203-/models/635ea29/examples"; + Requests[4973] = new DefaultHttpContext(); + Requests[4973].RequestServices = CreateServices(); + Requests[4973].Request.Method = "GET"; + Requests[4973].Request.Path = "/apps/1986b/versions/827ede0e-/patternanyentities/32a3e3ff/explicitlist"; + Requests[4974] = new DefaultHttpContext(); + Requests[4974].RequestServices = CreateServices(); + Requests[4974].Request.Method = "POST"; + Requests[4974].Request.Path = "/apps/2d14b/versions/facb0c8c-/patternanyentities/3f381cab/explicitlist"; + Requests[4975] = new DefaultHttpContext(); + Requests[4975].RequestServices = CreateServices(); + Requests[4975].Request.Method = "POST"; + Requests[4975].Request.Path = "/apps/d8769/versions/e878fb2a-/patternanyentities/2f72569a/roles"; + Requests[4976] = new DefaultHttpContext(); + Requests[4976].RequestServices = CreateServices(); + Requests[4976].Request.Method = "GET"; + Requests[4976].Request.Path = "/apps/9716f/versions/56fa8516-/patternanyentities/36176239/roles"; + Requests[4977] = new DefaultHttpContext(); + Requests[4977].RequestServices = CreateServices(); + Requests[4977].Request.Method = "GET"; + Requests[4977].Request.Path = "/apps/32dca/versions/1a1c13d9-/prebuilts/90a7c512/roles"; + Requests[4978] = new DefaultHttpContext(); + Requests[4978].RequestServices = CreateServices(); + Requests[4978].Request.Method = "POST"; + Requests[4978].Request.Path = "/apps/a7377/versions/31cb93b4-/prebuilts/93f1a619/roles"; + Requests[4979] = new DefaultHttpContext(); + Requests[4979].RequestServices = CreateServices(); + Requests[4979].Request.Method = "GET"; + Requests[4979].Request.Path = "/apps/a1a07/versions/a50b7579-/regexentities/9118f3a1/roles"; + Requests[4980] = new DefaultHttpContext(); + Requests[4980].RequestServices = CreateServices(); + Requests[4980].Request.Method = "POST"; + Requests[4980].Request.Path = "/apps/4ce26/versions/77350f22-/regexentities/1d3ec769/roles"; + Requests[4981] = new DefaultHttpContext(); + Requests[4981].RequestServices = CreateServices(); + Requests[4981].Request.Method = "GET"; + Requests[4981].Request.Path = "/subscriptions/fe9bdacb-e66f-/resourcegroups/8ae62abb-8c61-434/deployments/931fea78-c988-/operations"; + Requests[4982] = new DefaultHttpContext(); + Requests[4982].RequestServices = CreateServices(); + Requests[4982].Request.Method = "POST"; + Requests[4982].Request.Path = "/subscriptions/47a153ca-ebcf-/providers/43a986b4-ef9d-43a3-8d1/policyAssignments/80593655-3c52-4b2f-9/providers/Microsoft.PolicyInsights/policyEvents/6e99d422-76ee-4729-b/queryResults"; + Requests[4983] = new DefaultHttpContext(); + Requests[4983].RequestServices = CreateServices(); + Requests[4983].Request.Method = "POST"; + Requests[4983].Request.Path = "/subscriptions/74dff5c6-eff2-/providers/0b394798-f9ca-4acc-85e/policyAssignments/f6900f5c-f118-4174-8/providers/Microsoft.PolicyInsights/policyStates/0371ca15-aab0-4940-a/queryResults"; + Requests[4984] = new DefaultHttpContext(); + Requests[4984].RequestServices = CreateServices(); + Requests[4984].Request.Method = "POST"; + Requests[4984].Request.Path = "/subscriptions/b538566f-7407-/providers/8d33d38d-6c2f-41c3-9e9/policyAssignments/08edf96a-d6d1-45b5-b/providers/Microsoft.PolicyInsights/policyStates/874eb626-5bcf-46d2-a580-024/summarize"; + Requests[4985] = new DefaultHttpContext(); + Requests[4985].RequestServices = CreateServices(); + Requests[4985].Request.Method = "POST"; + Requests[4985].Request.Path = "/subscriptions/906a30e2-8c52-/providers/d143741c-1a4f-4ae9-bbd/policyDefinitions/3430f279-4d2d-4b71-b/providers/Microsoft.PolicyInsights/policyEvents/4b28cc10-4da1-4c37-8/queryResults"; + Requests[4986] = new DefaultHttpContext(); + Requests[4986].RequestServices = CreateServices(); + Requests[4986].Request.Method = "POST"; + Requests[4986].Request.Path = "/subscriptions/9183f628-d864-/providers/4df7c50a-e8c1-4e27-88b/policyDefinitions/42a71756-ac96-4478-9/providers/Microsoft.PolicyInsights/policyStates/7b1ec2b6-2573-4f95-8/queryResults"; + Requests[4987] = new DefaultHttpContext(); + Requests[4987].RequestServices = CreateServices(); + Requests[4987].Request.Method = "POST"; + Requests[4987].Request.Path = "/subscriptions/83916afc-86c1-/providers/8a9a4fdc-f1b4-4a7b-ae6/policyDefinitions/be9c98dc-070c-4dc7-b/providers/Microsoft.PolicyInsights/policyStates/ddc5f035-2103-4691-8057-dd5/summarize"; + Requests[4988] = new DefaultHttpContext(); + Requests[4988].RequestServices = CreateServices(); + Requests[4988].Request.Method = "POST"; + Requests[4988].Request.Path = "/subscriptions/5b55e841-40d0-/providers/f142c058-e8f9-426e-867/policySetDefinitions/7da31f86-3b8b-4ff0-a744/providers/Microsoft.PolicyInsights/policyEvents/1e4a3e58-f94a-409f-b/queryResults"; + Requests[4989] = new DefaultHttpContext(); + Requests[4989].RequestServices = CreateServices(); + Requests[4989].Request.Method = "POST"; + Requests[4989].Request.Path = "/subscriptions/931f2f60-7e15-/providers/4beb2864-79e3-480e-83f/policySetDefinitions/48336faf-c7ee-4e10-8eb3/providers/Microsoft.PolicyInsights/policyStates/16dc7ac7-db30-4880-b/queryResults"; + Requests[4990] = new DefaultHttpContext(); + Requests[4990].RequestServices = CreateServices(); + Requests[4990].Request.Method = "POST"; + Requests[4990].Request.Path = "/subscriptions/60ff1159-889b-/providers/eb349cb7-c1d1-47fc-bd0/policySetDefinitions/29825e44-1752-406f-acaf/providers/Microsoft.PolicyInsights/policyStates/3696f01b-8a8d-42d2-b616-105/summarize"; + Requests[4991] = new DefaultHttpContext(); + Requests[4991].RequestServices = CreateServices(); + Requests[4991].Request.Method = "DELETE"; + Requests[4991].Request.Path = "/apps/edc59/versions/551a1c27-/closedlists/8c2412a8-2/sublists/83875052-"; + Requests[4992] = new DefaultHttpContext(); + Requests[4992].RequestServices = CreateServices(); + Requests[4992].Request.Method = "PUT"; + Requests[4992].Request.Path = "/apps/08ffc/versions/c9e12ad1-/closedlists/a95a45ca-3/sublists/068e5721-"; + Requests[4993] = new DefaultHttpContext(); + Requests[4993].RequestServices = CreateServices(); + Requests[4993].Request.Method = "GET"; + Requests[4993].Request.Path = "/apps/cc09a/versions/d70e2332-/closedlists/ce5ebbe3/roles/de9e81"; + Requests[4994] = new DefaultHttpContext(); + Requests[4994].RequestServices = CreateServices(); + Requests[4994].Request.Method = "PUT"; + Requests[4994].Request.Path = "/apps/75a08/versions/78ff5008-/closedlists/d6ddc1b9/roles/e927c4"; + Requests[4995] = new DefaultHttpContext(); + Requests[4995].RequestServices = CreateServices(); + Requests[4995].Request.Method = "DELETE"; + Requests[4995].Request.Path = "/apps/c9296/versions/2dbf6652-/closedlists/67a399ce/roles/806005"; + Requests[4996] = new DefaultHttpContext(); + Requests[4996].RequestServices = CreateServices(); + Requests[4996].Request.Method = "DELETE"; + Requests[4996].Request.Path = "/apps/20482/versions/91038f78-/compositeentities/072206ac-/children/575d7e4d"; + Requests[4997] = new DefaultHttpContext(); + Requests[4997].RequestServices = CreateServices(); + Requests[4997].Request.Method = "DELETE"; + Requests[4997].Request.Path = "/apps/79452/versions/afe535c2-/compositeentities/ea8ea533-/roles/693ea1"; + Requests[4998] = new DefaultHttpContext(); + Requests[4998].RequestServices = CreateServices(); + Requests[4998].Request.Method = "PUT"; + Requests[4998].Request.Path = "/apps/be496/versions/b9da6808-/compositeentities/36a34b7d-/roles/f52586"; + Requests[4999] = new DefaultHttpContext(); + Requests[4999].RequestServices = CreateServices(); + Requests[4999].Request.Method = "GET"; + Requests[4999].Request.Path = "/apps/f00b3/versions/53fd696b-/compositeentities/efb6b767-/roles/3f387b"; + Requests[5000] = new DefaultHttpContext(); + Requests[5000].RequestServices = CreateServices(); + Requests[5000].Request.Method = "GET"; + Requests[5000].Request.Path = "/apps/6bd08/versions/d98f0c88-/customprebuiltentities/478cea50/roles/d480dc"; + Requests[5001] = new DefaultHttpContext(); + Requests[5001].RequestServices = CreateServices(); + Requests[5001].Request.Method = "PUT"; + Requests[5001].Request.Path = "/apps/3a9ae/versions/0f6b151f-/customprebuiltentities/8ba5a3c3/roles/45b9c2"; + Requests[5002] = new DefaultHttpContext(); + Requests[5002].RequestServices = CreateServices(); + Requests[5002].Request.Method = "DELETE"; + Requests[5002].Request.Path = "/apps/f6b28/versions/49b2bab7-/customprebuiltentities/4c0d2e36/roles/0f5d03"; + Requests[5003] = new DefaultHttpContext(); + Requests[5003].RequestServices = CreateServices(); + Requests[5003].Request.Method = "DELETE"; + Requests[5003].Request.Path = "/apps/f4cbe/versions/afe14ea6-/entities/28e6c2de/roles/80ea17"; + Requests[5004] = new DefaultHttpContext(); + Requests[5004].RequestServices = CreateServices(); + Requests[5004].Request.Method = "GET"; + Requests[5004].Request.Path = "/apps/1a09d/versions/e29a2af3-/entities/e1ef95cb/roles/0a6ad2"; + Requests[5005] = new DefaultHttpContext(); + Requests[5005].RequestServices = CreateServices(); + Requests[5005].Request.Method = "PUT"; + Requests[5005].Request.Path = "/apps/3a82b/versions/825992db-/entities/b7865a80/roles/bfb58a"; + Requests[5006] = new DefaultHttpContext(); + Requests[5006].RequestServices = CreateServices(); + Requests[5006].Request.Method = "DELETE"; + Requests[5006].Request.Path = "/apps/46897/versions/532f9544-/hierarchicalentities/c05328c7-/children/9fc4adce"; + Requests[5007] = new DefaultHttpContext(); + Requests[5007].RequestServices = CreateServices(); + Requests[5007].Request.Method = "PUT"; + Requests[5007].Request.Path = "/apps/51dea/versions/160a594c-/hierarchicalentities/90a57acb-/children/84c0c425"; + Requests[5008] = new DefaultHttpContext(); + Requests[5008].RequestServices = CreateServices(); + Requests[5008].Request.Method = "GET"; + Requests[5008].Request.Path = "/apps/a7215/versions/03a0207e-/hierarchicalentities/251ba12d-/children/8608e422"; + Requests[5009] = new DefaultHttpContext(); + Requests[5009].RequestServices = CreateServices(); + Requests[5009].Request.Method = "DELETE"; + Requests[5009].Request.Path = "/apps/baa14/versions/2ec5e49c-/hierarchicalentities/fa5b7395-/roles/884d6d"; + Requests[5010] = new DefaultHttpContext(); + Requests[5010].RequestServices = CreateServices(); + Requests[5010].Request.Method = "PUT"; + Requests[5010].Request.Path = "/apps/bf0d3/versions/70695e1b-/hierarchicalentities/1d6ada09-/roles/498a98"; + Requests[5011] = new DefaultHttpContext(); + Requests[5011].RequestServices = CreateServices(); + Requests[5011].Request.Method = "GET"; + Requests[5011].Request.Path = "/apps/d0b43/versions/230196c4-/hierarchicalentities/c0b9543c-/roles/853491"; + Requests[5012] = new DefaultHttpContext(); + Requests[5012].RequestServices = CreateServices(); + Requests[5012].Request.Method = "PUT"; + Requests[5012].Request.Path = "/apps/1af84/versions/33e6b9c1-/patternanyentities/28d5a5d6/explicitlist/60557e"; + Requests[5013] = new DefaultHttpContext(); + Requests[5013].RequestServices = CreateServices(); + Requests[5013].Request.Method = "GET"; + Requests[5013].Request.Path = "/apps/6bc14/versions/ed5af8f8-/patternanyentities/b1244dcd/explicitlist/1f1f1b"; + Requests[5014] = new DefaultHttpContext(); + Requests[5014].RequestServices = CreateServices(); + Requests[5014].Request.Method = "DELETE"; + Requests[5014].Request.Path = "/apps/b3a3d/versions/3f2f37ab-/patternanyentities/5f6976c0/explicitlist/b53473"; + Requests[5015] = new DefaultHttpContext(); + Requests[5015].RequestServices = CreateServices(); + Requests[5015].Request.Method = "GET"; + Requests[5015].Request.Path = "/apps/ec879/versions/7b54beb5-/patternanyentities/b4710f47/roles/0f4614"; + Requests[5016] = new DefaultHttpContext(); + Requests[5016].RequestServices = CreateServices(); + Requests[5016].Request.Method = "DELETE"; + Requests[5016].Request.Path = "/apps/e3169/versions/af95ed6f-/patternanyentities/821e3388/roles/956530"; + Requests[5017] = new DefaultHttpContext(); + Requests[5017].RequestServices = CreateServices(); + Requests[5017].Request.Method = "PUT"; + Requests[5017].Request.Path = "/apps/d5d21/versions/14145059-/patternanyentities/7a38066f/roles/ca4430"; + Requests[5018] = new DefaultHttpContext(); + Requests[5018].RequestServices = CreateServices(); + Requests[5018].Request.Method = "DELETE"; + Requests[5018].Request.Path = "/apps/83814/versions/bac094a9-/prebuilts/b3f4d3c7/roles/49be97"; + Requests[5019] = new DefaultHttpContext(); + Requests[5019].RequestServices = CreateServices(); + Requests[5019].Request.Method = "PUT"; + Requests[5019].Request.Path = "/apps/c6959/versions/cb5e283a-/prebuilts/43017212/roles/0a6127"; + Requests[5020] = new DefaultHttpContext(); + Requests[5020].RequestServices = CreateServices(); + Requests[5020].Request.Method = "GET"; + Requests[5020].Request.Path = "/apps/f0057/versions/296d2204-/prebuilts/6e326b95/roles/bf9296"; + Requests[5021] = new DefaultHttpContext(); + Requests[5021].RequestServices = CreateServices(); + Requests[5021].Request.Method = "GET"; + Requests[5021].Request.Path = "/apps/6bb20/versions/0b280ee7-/regexentities/ef17de58/roles/c874d3"; + Requests[5022] = new DefaultHttpContext(); + Requests[5022].RequestServices = CreateServices(); + Requests[5022].Request.Method = "DELETE"; + Requests[5022].Request.Path = "/apps/021e8/versions/884491da-/regexentities/1497ccb5/roles/95490f"; + Requests[5023] = new DefaultHttpContext(); + Requests[5023].RequestServices = CreateServices(); + Requests[5023].Request.Method = "PUT"; + Requests[5023].Request.Path = "/apps/56bbd/versions/fac60968-/regexentities/38b5feb8/roles/d206af"; + Requests[5024] = new DefaultHttpContext(); + Requests[5024].RequestServices = CreateServices(); + Requests[5024].Request.Method = "GET"; + Requests[5024].Request.Path = "/subscriptions/13b8699a-bcd4-/resourcegroups/39ecad98-cc84-431/deployments/a8fb576e-68e9-/operations/568a987e-52"; + Requests[5025] = new DefaultHttpContext(); + Requests[5025].RequestServices = CreateServices(); + Requests[5025].Request.Method = "POST"; + Requests[5025].Request.Path = "/subscriptions/dedf2b20-f675-/resourcegroups/078dbccb-9ce1-4ee/providers/cf160766-6383-460e-94c/policyAssignments/601aca92-da9e-4798-8/providers/Microsoft.PolicyInsights/policyEvents/d62eb140-909d-47d2-b/queryResults"; + Requests[5026] = new DefaultHttpContext(); + Requests[5026].RequestServices = CreateServices(); + Requests[5026].Request.Method = "POST"; + Requests[5026].Request.Path = "/subscriptions/7810f743-b958-/resourcegroups/067b2667-bfb4-498/providers/41a8bed7-da8a-4294-8ec/policyAssignments/0db46310-7e9a-4da0-9/providers/Microsoft.PolicyInsights/policyStates/ccf8b029-97ff-4c39-9/queryResults"; + Requests[5027] = new DefaultHttpContext(); + Requests[5027].RequestServices = CreateServices(); + Requests[5027].Request.Method = "POST"; + Requests[5027].Request.Path = "/subscriptions/717927d0-dcbe-/resourcegroups/cf41613e-1c56-40b/providers/cc9c586f-3e1e-4df7-964/policyAssignments/a9048424-5989-42b4-a/providers/Microsoft.PolicyInsights/policyStates/b743ddc3-5159-48a2-aa7b-abc/summarize"; + Requests[5028] = new DefaultHttpContext(); + Requests[5028].RequestServices = CreateServices(); + Requests[5028].Request.Method = "GET"; + Requests[5028].Request.Path = "/subscriptions/1e3d2345-23ff-/resourceGroups/c34bd6e6-4530-45c/providers/f4778a3a-046c-4a2/ef4a3056-425d-4f/86159148-52a/providers/Microsoft.EventGrid/eventSubscriptions"; + Requests[5029] = new DefaultHttpContext(); + Requests[5029].RequestServices = CreateServices(); + Requests[5029].Request.Method = "GET"; + Requests[5029].Request.Path = "/subscriptions/aa61dfbd-2f53-/resourceGroups/f61158ad-c233-4a6/providers/5776c647-43a3-45b/44086290-2050-45/b29c60a9-07a/providers/Microsoft.EventGrid/eventTypes"; + Requests[5030] = new DefaultHttpContext(); + Requests[5030].RequestServices = CreateServices(); + Requests[5030].Request.Method = "GET"; + Requests[5030].Request.Path = "/subscriptions/1a4ccbe3-87f9-/resourcegroups/088e9732-d42a-42a/providers/3035e168-62e/de772962-480/458a2354-592/providers/Microsoft.OperationsManagement/ManagementAssociations/f5283bb4-813a-4bb2-a850-f"; + Requests[5031] = new DefaultHttpContext(); + Requests[5031].RequestServices = CreateServices(); + Requests[5031].Request.Method = "PUT"; + Requests[5031].Request.Path = "/subscriptions/8fb9e951-546d-/resourcegroups/f30da3ef-f202-4d8/providers/ee4a562c-c62/e350d53c-f0a/3caa805c-d78/providers/Microsoft.OperationsManagement/ManagementAssociations/113a7ef4-7dfe-4810-b3dd-2"; + Requests[5032] = new DefaultHttpContext(); + Requests[5032].RequestServices = CreateServices(); + Requests[5032].Request.Method = "DELETE"; + Requests[5032].Request.Path = "/subscriptions/36e108db-8e05-/resourcegroups/71638b37-01b5-4c0/providers/2e9073ec-f55/21a666b2-420/0c17f98d-7e5/providers/Microsoft.OperationsManagement/ManagementAssociations/6e2cddd5-0fc6-474d-b939-1"; + Requests[5033] = new DefaultHttpContext(); + Requests[5033].RequestServices = CreateServices(); + Requests[5033].Request.Method = "PUT"; + Requests[5033].Request.Path = "/subscriptions/74438ae1-fbdd-/resourcegroups/ab836d16-b3c5-471/providers/0d7c7b8d-db05-45a8-8b71-1/9ed702db-16ad-43c1/f139f812-713/af1f81f1-903"; + Requests[5034] = new DefaultHttpContext(); + Requests[5034].RequestServices = CreateServices(); + Requests[5034].Request.Method = "GET"; + Requests[5034].Request.Path = "/subscriptions/43dea823-907e-/resourcegroups/155ad3fc-2e75-4f7/providers/de9a1b74-e4e1-4d71-9c12-7/c6811194-c174-4ffe/a2d577b1-8db/d7ecebb8-760"; + Requests[5035] = new DefaultHttpContext(); + Requests[5035].RequestServices = CreateServices(); + Requests[5035].Request.Method = "PATCH"; + Requests[5035].Request.Path = "/subscriptions/439e900d-4744-/resourcegroups/5e82e31e-ec5d-4ea/providers/529335f9-2845-4bc1-bf2a-6/b06cc901-3097-4c74/e063a8ac-b59/bff8051c-fd2"; + Requests[5036] = new DefaultHttpContext(); + Requests[5036].RequestServices = CreateServices(); + Requests[5036].Request.Method = "DELETE"; + Requests[5036].Request.Path = "/subscriptions/36fc7f98-7327-/resourcegroups/d2ba89fa-e76a-4a9/providers/6bd39142-324a-4cb6-b3ee-c/d43e1ed1-a760-4c67/a6face59-553/d6a1a244-813"; + Requests[5037] = new DefaultHttpContext(); + Requests[5037].RequestServices = CreateServices(); + Requests[5037].Request.Method = "HEAD"; + Requests[5037].Request.Path = "/subscriptions/069c0934-25b6-/resourcegroups/5dd81c92-f5ee-407/providers/e1d26ff3-179a-4c50-891c-9/582ebc06-162e-46c1/8aa73949-24e/3badcda8-e9e"; + Requests[5038] = new DefaultHttpContext(); + Requests[5038].RequestServices = CreateServices(); + Requests[5038].Request.Method = "GET"; + Requests[5038].Request.Path = "/subscriptions/1219a54f-e6ac-/resourcegroups/362c2331-7ea0-47d/providers/2adeacbc-d255-43d5-b359-f/db78dbf6-bbb3-4897/9bf7b68b-a8d/018850fa-627/providers/Microsoft.Authorization/locks"; + Requests[5039] = new DefaultHttpContext(); + Requests[5039].RequestServices = CreateServices(); + Requests[5039].Request.Method = "GET"; + Requests[5039].Request.Path = "/subscriptions/83abee65-fdac-/resourcegroups/eb294e02-c047-4d6/providers/59f2401d-fa6f-470f-8822-3/5f573675-b2f1-4683/8a2661c5-7cb/ff79db51-cf2/providers/Microsoft.Authorization/permissions"; + Requests[5040] = new DefaultHttpContext(); + Requests[5040].RequestServices = CreateServices(); + Requests[5040].Request.Method = "GET"; + Requests[5040].Request.Path = "/subscriptions/7e361294-0a1f-/resourcegroups/40e8159f-4d7f-4da/providers/0fd28ae8-39f7-4df0-b0c5-4/9b12dda7-e61b-4ca8/bf092504-ee6/0ce51f44-616/providers/Microsoft.Authorization/policyAssignments"; + Requests[5041] = new DefaultHttpContext(); + Requests[5041].RequestServices = CreateServices(); + Requests[5041].Request.Method = "GET"; + Requests[5041].Request.Path = "/subscriptions/b178324c-582e-/resourcegroups/dee9ffb4-c4e4-40d/providers/e9dc806d-71e9-47d2-af6d-2/7b44ac52-5162-42c6/0dc29e96-686/5229078b-aa2/providers/Microsoft.Authorization/roleAssignments"; + Requests[5042] = new DefaultHttpContext(); + Requests[5042].RequestServices = CreateServices(); + Requests[5042].Request.Method = "DELETE"; + Requests[5042].Request.Path = "/subscriptions/c442eebe-78dd-/resourcegroups/d65b0944-1a30-411/providers/c54766cd-a5cd-462c-a4cc-3/0ef5349f-0b1b-4dbf/3f249cab-19c/8f91892f-fda/providers/Microsoft.Authorization/locks/55162ea5"; + Requests[5043] = new DefaultHttpContext(); + Requests[5043].RequestServices = CreateServices(); + Requests[5043].Request.Method = "GET"; + Requests[5043].Request.Path = "/subscriptions/1c30caf9-dac1-/resourcegroups/7e7ae60e-9e89-448/providers/5426257f-8edc-405c-994a-5/b9504741-9b13-4d16/2913b624-1a9/523b979d-e3d/providers/Microsoft.Authorization/locks/84b12a2b"; + Requests[5044] = new DefaultHttpContext(); + Requests[5044].RequestServices = CreateServices(); + Requests[5044].Request.Method = "PUT"; + Requests[5044].Request.Path = "/subscriptions/0ea6ef70-10d4-/resourcegroups/d63e828f-fb2a-4ec/providers/54a56cf4-28a6-4f07-aab2-2/7c859222-abfb-47db/36264697-da9/4d00ee65-59b/providers/Microsoft.Authorization/locks/f808e468"; + Requests[5045] = new DefaultHttpContext(); + Requests[5045].RequestServices = CreateServices(); + Requests[5045].Request.Method = "GET"; + Requests[5045].Request.Path = "/apps/a7ff8/events/bd4e75ce-/f4d58eb"; + Requests[5046] = new DefaultHttpContext(); + Requests[5046].RequestServices = CreateServices(); + Requests[5046].Request.Method = "PATCH"; + Requests[5046].Request.Path = "/certificates/bccd0cd0-3781-47/989d355c-33d4-4c88-"; + Requests[5047] = new DefaultHttpContext(); + Requests[5047].RequestServices = CreateServices(); + Requests[5047].Request.Method = "GET"; + Requests[5047].Request.Path = "/certificates/6cfef54f-17ed-4f/cb190d66-974b-4b36-"; + Requests[5048] = new DefaultHttpContext(); + Requests[5048].RequestServices = CreateServices(); + Requests[5048].Request.Method = "GET"; + Requests[5048].Request.Path = "/keys/aaa01248/55d587b4-e3"; + Requests[5049] = new DefaultHttpContext(); + Requests[5049].RequestServices = CreateServices(); + Requests[5049].Request.Method = "PATCH"; + Requests[5049].Request.Path = "/keys/6439a236/534e6909-3c"; + Requests[5050] = new DefaultHttpContext(); + Requests[5050].RequestServices = CreateServices(); + Requests[5050].Request.Method = "GET"; + Requests[5050].Request.Path = "/quotas/00809cfe-6030-4/9a95d29f-1dac-"; + Requests[5051] = new DefaultHttpContext(); + Requests[5051].RequestServices = CreateServices(); + Requests[5051].Request.Method = "PATCH"; + Requests[5051].Request.Path = "/quotas/624d8259-5166-4/fa9dd3b7-5e5f-"; + Requests[5052] = new DefaultHttpContext(); + Requests[5052].RequestServices = CreateServices(); + Requests[5052].Request.Method = "PATCH"; + Requests[5052].Request.Path = "/secrets/1859a1e2-67/4435e75a-b8fc-"; + Requests[5053] = new DefaultHttpContext(); + Requests[5053].RequestServices = CreateServices(); + Requests[5053].Request.Method = "GET"; + Requests[5053].Request.Path = "/secrets/ca624bcd-b6/a23372d7-fa68-"; + Requests[5054] = new DefaultHttpContext(); + Requests[5054].RequestServices = CreateServices(); + Requests[5054].Request.Method = "POST"; + Requests[5054].Request.Path = "/keys/6813d254/69f2e5df-b5/decrypt"; + Requests[5055] = new DefaultHttpContext(); + Requests[5055].RequestServices = CreateServices(); + Requests[5055].Request.Method = "POST"; + Requests[5055].Request.Path = "/keys/61b89e0f/282e27ea-23/encrypt"; + Requests[5056] = new DefaultHttpContext(); + Requests[5056].RequestServices = CreateServices(); + Requests[5056].Request.Method = "POST"; + Requests[5056].Request.Path = "/keys/a349c59c/9f616fd8-82/sign"; + Requests[5057] = new DefaultHttpContext(); + Requests[5057].RequestServices = CreateServices(); + Requests[5057].Request.Method = "POST"; + Requests[5057].Request.Path = "/keys/a74e6ac5/b142ac41-7c/unwrapkey"; + Requests[5058] = new DefaultHttpContext(); + Requests[5058].RequestServices = CreateServices(); + Requests[5058].Request.Method = "POST"; + Requests[5058].Request.Path = "/keys/905a052f/12a9ab53-45/verify"; + Requests[5059] = new DefaultHttpContext(); + Requests[5059].RequestServices = CreateServices(); + Requests[5059].Request.Method = "POST"; + Requests[5059].Request.Path = "/keys/4dc2a804/a934a0ac-05/wrapkey"; + Requests[5060] = new DefaultHttpContext(); + Requests[5060].RequestServices = CreateServices(); + Requests[5060].Request.Method = "POST"; + Requests[5060].Request.Path = "/eb9c0"; + Requests[5061] = new DefaultHttpContext(); + Requests[5061].RequestServices = CreateServices(); + Requests[5061].Request.Method = "DELETE"; + Requests[5061].Request.Path = "/a040db6f-8992-42a3-b45a"; + Requests[5062] = new DefaultHttpContext(); + Requests[5062].RequestServices = CreateServices(); + Requests[5062].Request.Method = "PUT"; + Requests[5062].Request.Path = "/9b53836f-a86e-4445-9d33"; + Requests[5063] = new DefaultHttpContext(); + Requests[5063].RequestServices = CreateServices(); + Requests[5063].Request.Method = "GET"; + Requests[5063].Request.Path = "/b5c159a7-25f1-4b1a-8fc9"; + Requests[5064] = new DefaultHttpContext(); + Requests[5064].RequestServices = CreateServices(); + Requests[5064].Request.Method = "PATCH"; + Requests[5064].Request.Path = "/df936d60-9832"; + Requests[5065] = new DefaultHttpContext(); + Requests[5065].RequestServices = CreateServices(); + Requests[5065].Request.Method = "HEAD"; + Requests[5065].Request.Path = "/c39de944-4"; + Requests[5066] = new DefaultHttpContext(); + Requests[5066].RequestServices = CreateServices(); + Requests[5066].Request.Method = "POST"; + Requests[5066].Request.Path = "/26e97936-/image"; + Requests[5067] = new DefaultHttpContext(); + Requests[5067].RequestServices = CreateServices(); + Requests[5067].Request.Method = "POST"; + Requests[5067].Request.Path = "/e448d1db-/url"; + Requests[5068] = new DefaultHttpContext(); + Requests[5068].RequestServices = CreateServices(); + Requests[5068].Request.Method = "GET"; + Requests[5068].Request.Path = "/6cca6ee6/applications"; + Requests[5069] = new DefaultHttpContext(); + Requests[5069].RequestServices = CreateServices(); + Requests[5069].Request.Method = "POST"; + Requests[5069].Request.Path = "/d613f0b5/applications"; + Requests[5070] = new DefaultHttpContext(); + Requests[5070].RequestServices = CreateServices(); + Requests[5070].Request.Method = "GET"; + Requests[5070].Request.Path = "/533dcddd/domains"; + Requests[5071] = new DefaultHttpContext(); + Requests[5071].RequestServices = CreateServices(); + Requests[5071].Request.Method = "POST"; + Requests[5071].Request.Path = "/5566b187/getObjectsByObjectIds"; + Requests[5072] = new DefaultHttpContext(); + Requests[5072].RequestServices = CreateServices(); + Requests[5072].Request.Method = "GET"; + Requests[5072].Request.Path = "/206424ea/groups"; + Requests[5073] = new DefaultHttpContext(); + Requests[5073].RequestServices = CreateServices(); + Requests[5073].Request.Method = "POST"; + Requests[5073].Request.Path = "/55892cc8/groups"; + Requests[5074] = new DefaultHttpContext(); + Requests[5074].RequestServices = CreateServices(); + Requests[5074].Request.Method = "POST"; + Requests[5074].Request.Path = "/bae8bf34/isMemberOf"; + Requests[5075] = new DefaultHttpContext(); + Requests[5075].RequestServices = CreateServices(); + Requests[5075].Request.Method = "GET"; + Requests[5075].Request.Path = "/a1c1ed4d/me"; + Requests[5076] = new DefaultHttpContext(); + Requests[5076].RequestServices = CreateServices(); + Requests[5076].Request.Method = "POST"; + Requests[5076].Request.Path = "/d2c050a6/servicePrincipals"; + Requests[5077] = new DefaultHttpContext(); + Requests[5077].RequestServices = CreateServices(); + Requests[5077].Request.Method = "GET"; + Requests[5077].Request.Path = "/faf07559/servicePrincipals"; + Requests[5078] = new DefaultHttpContext(); + Requests[5078].RequestServices = CreateServices(); + Requests[5078].Request.Method = "POST"; + Requests[5078].Request.Path = "/758073a8/users"; + Requests[5079] = new DefaultHttpContext(); + Requests[5079].RequestServices = CreateServices(); + Requests[5079].Request.Method = "GET"; + Requests[5079].Request.Path = "/d90b419c/users"; + Requests[5080] = new DefaultHttpContext(); + Requests[5080].RequestServices = CreateServices(); + Requests[5080].Request.Method = "POST"; + Requests[5080].Request.Path = "/2c7ad1ba-/image/nostore"; + Requests[5081] = new DefaultHttpContext(); + Requests[5081].RequestServices = CreateServices(); + Requests[5081].Request.Method = "POST"; + Requests[5081].Request.Path = "/0f8cedac-/url/nostore"; + Requests[5082] = new DefaultHttpContext(); + Requests[5082].RequestServices = CreateServices(); + Requests[5082].Request.Method = "POST"; + Requests[5082].Request.Path = "/d3a508a0-c9/providers/microsoft.insights/calculatebaseline"; + Requests[5083] = new DefaultHttpContext(); + Requests[5083].RequestServices = CreateServices(); + Requests[5083].Request.Method = "GET"; + Requests[5083].Request.Path = "/b2ef4c78-e8/providers/microsoft.insights/diagnosticSettings"; + Requests[5084] = new DefaultHttpContext(); + Requests[5084].RequestServices = CreateServices(); + Requests[5084].Request.Method = "GET"; + Requests[5084].Request.Path = "/8d9e6aa1-dc/providers/microsoft.insights/diagnosticSettingsCategories"; + Requests[5085] = new DefaultHttpContext(); + Requests[5085].RequestServices = CreateServices(); + Requests[5085].Request.Method = "GET"; + Requests[5085].Request.Path = "/d28d406c-8c/providers/microsoft.insights/metricDefinitions"; + Requests[5086] = new DefaultHttpContext(); + Requests[5086].RequestServices = CreateServices(); + Requests[5086].Request.Method = "GET"; + Requests[5086].Request.Path = "/4f593faf-73/providers/microsoft.insights/metrics"; + Requests[5087] = new DefaultHttpContext(); + Requests[5087].RequestServices = CreateServices(); + Requests[5087].Request.Method = "GET"; + Requests[5087].Request.Path = "/52668213-21/providers/Microsoft.ResourceHealth/availabilityStatuses"; + Requests[5088] = new DefaultHttpContext(); + Requests[5088].RequestServices = CreateServices(); + Requests[5088].Request.Method = "GET"; + Requests[5088].Request.Path = "/7b91c/providers/Microsoft.Authorization/policyAssignments"; + Requests[5089] = new DefaultHttpContext(); + Requests[5089].RequestServices = CreateServices(); + Requests[5089].Request.Method = "GET"; + Requests[5089].Request.Path = "/34ac8/providers/Microsoft.Authorization/roleAssignments"; + Requests[5090] = new DefaultHttpContext(); + Requests[5090].RequestServices = CreateServices(); + Requests[5090].Request.Method = "GET"; + Requests[5090].Request.Path = "/09f60/providers/Microsoft.Authorization/roleDefinitions"; + Requests[5091] = new DefaultHttpContext(); + Requests[5091].RequestServices = CreateServices(); + Requests[5091].Request.Method = "GET"; + Requests[5091].Request.Path = "/89a71/providers/Microsoft.Consumption/reservationDetails"; + Requests[5092] = new DefaultHttpContext(); + Requests[5092].RequestServices = CreateServices(); + Requests[5092].Request.Method = "GET"; + Requests[5092].Request.Path = "/584cd/providers/Microsoft.Consumption/reservationSummaries"; + Requests[5093] = new DefaultHttpContext(); + Requests[5093].RequestServices = CreateServices(); + Requests[5093].Request.Method = "GET"; + Requests[5093].Request.Path = "/9d134/providers/Microsoft.Consumption/usageDetails"; + Requests[5094] = new DefaultHttpContext(); + Requests[5094].RequestServices = CreateServices(); + Requests[5094].Request.Method = "GET"; + Requests[5094].Request.Path = "/44360/providers/Microsoft.Resources/links"; + Requests[5095] = new DefaultHttpContext(); + Requests[5095].RequestServices = CreateServices(); + Requests[5095].Request.Method = "GET"; + Requests[5095].Request.Path = "/058d9/providers/Microsoft.Security/compliances"; + Requests[5096] = new DefaultHttpContext(); + Requests[5096].RequestServices = CreateServices(); + Requests[5096].Request.Method = "PATCH"; + Requests[5096].Request.Path = "/34aa56a1-6d/providers/microsoft.insights/diagnosticSettings/service"; + Requests[5097] = new DefaultHttpContext(); + Requests[5097].RequestServices = CreateServices(); + Requests[5097].Request.Method = "PUT"; + Requests[5097].Request.Path = "/f63a3420-03/providers/microsoft.insights/diagnosticSettings/service"; + Requests[5098] = new DefaultHttpContext(); + Requests[5098].RequestServices = CreateServices(); + Requests[5098].Request.Method = "GET"; + Requests[5098].Request.Path = "/5a213cea-b4/providers/microsoft.insights/diagnosticSettings/service"; + Requests[5099] = new DefaultHttpContext(); + Requests[5099].RequestServices = CreateServices(); + Requests[5099].Request.Method = "GET"; + Requests[5099].Request.Path = "/83c8ebd4-5f/providers/Microsoft.ResourceHealth/availabilityStatuses/current"; + Requests[5100] = new DefaultHttpContext(); + Requests[5100].RequestServices = CreateServices(); + Requests[5100].Request.Method = "GET"; + Requests[5100].Request.Path = "/48463/providers/Microsoft.PolicyInsights/policyEvents/$metadata"; + Requests[5101] = new DefaultHttpContext(); + Requests[5101].RequestServices = CreateServices(); + Requests[5101].Request.Method = "GET"; + Requests[5101].Request.Path = "/0f498/providers/Microsoft.PolicyInsights/policyStates/$metadata"; + Requests[5102] = new DefaultHttpContext(); + Requests[5102].RequestServices = CreateServices(); + Requests[5102].Request.Method = "GET"; + Requests[5102].Request.Path = "/f051d5af-96/providers/Microsoft.Advisor/recommendations/f49c417e-2dc8-43"; + Requests[5103] = new DefaultHttpContext(); + Requests[5103].RequestServices = CreateServices(); + Requests[5103].Request.Method = "GET"; + Requests[5103].Request.Path = "/21326800-61/providers/microsoft.insights/baseline/750728ba-a"; + Requests[5104] = new DefaultHttpContext(); + Requests[5104].RequestServices = CreateServices(); + Requests[5104].Request.Method = "PUT"; + Requests[5104].Request.Path = "/9cb3c23f-b5/providers/microsoft.insights/diagnosticSettings/35e09"; + Requests[5105] = new DefaultHttpContext(); + Requests[5105].RequestServices = CreateServices(); + Requests[5105].Request.Method = "GET"; + Requests[5105].Request.Path = "/b6d270a7-06/providers/microsoft.insights/diagnosticSettings/35694"; + Requests[5106] = new DefaultHttpContext(); + Requests[5106].RequestServices = CreateServices(); + Requests[5106].Request.Method = "DELETE"; + Requests[5106].Request.Path = "/c8132eff-ed/providers/microsoft.insights/diagnosticSettings/2c90e"; + Requests[5107] = new DefaultHttpContext(); + Requests[5107].RequestServices = CreateServices(); + Requests[5107].Request.Method = "GET"; + Requests[5107].Request.Path = "/3ffd64f3-4c/providers/microsoft.insights/diagnosticSettingsCategories/59308"; + Requests[5108] = new DefaultHttpContext(); + Requests[5108].RequestServices = CreateServices(); + Requests[5108].Request.Method = "GET"; + Requests[5108].Request.Path = "/a47b3/providers/Microsoft.Authorization/locks/436eb91a"; + Requests[5109] = new DefaultHttpContext(); + Requests[5109].RequestServices = CreateServices(); + Requests[5109].Request.Method = "PUT"; + Requests[5109].Request.Path = "/dfdea/providers/Microsoft.Authorization/locks/7443d6f4"; + Requests[5110] = new DefaultHttpContext(); + Requests[5110].RequestServices = CreateServices(); + Requests[5110].Request.Method = "DELETE"; + Requests[5110].Request.Path = "/717ce/providers/Microsoft.Authorization/locks/32c03016"; + Requests[5111] = new DefaultHttpContext(); + Requests[5111].RequestServices = CreateServices(); + Requests[5111].Request.Method = "GET"; + Requests[5111].Request.Path = "/29986/providers/Microsoft.Authorization/policyAssignments/e5f7dc9b-a02d-47b0-a"; + Requests[5112] = new DefaultHttpContext(); + Requests[5112].RequestServices = CreateServices(); + Requests[5112].Request.Method = "PUT"; + Requests[5112].Request.Path = "/7a993/providers/Microsoft.Authorization/policyAssignments/0cb7396d-d47f-4b18-8"; + Requests[5113] = new DefaultHttpContext(); + Requests[5113].RequestServices = CreateServices(); + Requests[5113].Request.Method = "DELETE"; + Requests[5113].Request.Path = "/220cc/providers/Microsoft.Authorization/policyAssignments/09dd5597-76f9-40da-8"; + Requests[5114] = new DefaultHttpContext(); + Requests[5114].RequestServices = CreateServices(); + Requests[5114].Request.Method = "PUT"; + Requests[5114].Request.Path = "/0cb0e/providers/Microsoft.Authorization/roleAssignments/944179c6-5164-404c"; + Requests[5115] = new DefaultHttpContext(); + Requests[5115].RequestServices = CreateServices(); + Requests[5115].Request.Method = "GET"; + Requests[5115].Request.Path = "/9f9e8/providers/Microsoft.Authorization/roleAssignments/9ae5aea9-b398-4bf6"; + Requests[5116] = new DefaultHttpContext(); + Requests[5116].RequestServices = CreateServices(); + Requests[5116].Request.Method = "DELETE"; + Requests[5116].Request.Path = "/414f5/providers/Microsoft.Authorization/roleAssignments/59b5cef8-3d43-44ff"; + Requests[5117] = new DefaultHttpContext(); + Requests[5117].RequestServices = CreateServices(); + Requests[5117].Request.Method = "PUT"; + Requests[5117].Request.Path = "/fd6a3/providers/Microsoft.Authorization/roleDefinitions/1dee4cfb-41aa-48"; + Requests[5118] = new DefaultHttpContext(); + Requests[5118].RequestServices = CreateServices(); + Requests[5118].Request.Method = "GET"; + Requests[5118].Request.Path = "/88962/providers/Microsoft.Authorization/roleDefinitions/95550e91-14a6-4a"; + Requests[5119] = new DefaultHttpContext(); + Requests[5119].RequestServices = CreateServices(); + Requests[5119].Request.Method = "DELETE"; + Requests[5119].Request.Path = "/68123/providers/Microsoft.Authorization/roleDefinitions/6d249402-6f53-4c"; + Requests[5120] = new DefaultHttpContext(); + Requests[5120].RequestServices = CreateServices(); + Requests[5120].Request.Method = "PUT"; + Requests[5120].Request.Path = "/a5f62/providers/Microsoft.EventGrid/eventSubscriptions/594e6f54-6e92-44f2-93"; + Requests[5121] = new DefaultHttpContext(); + Requests[5121].RequestServices = CreateServices(); + Requests[5121].Request.Method = "GET"; + Requests[5121].Request.Path = "/f5473/providers/Microsoft.EventGrid/eventSubscriptions/4fa85313-8d9f-467c-b1"; + Requests[5122] = new DefaultHttpContext(); + Requests[5122].RequestServices = CreateServices(); + Requests[5122].Request.Method = "DELETE"; + Requests[5122].Request.Path = "/4c645/providers/Microsoft.EventGrid/eventSubscriptions/4634fbc5-d96b-4ef5-a7"; + Requests[5123] = new DefaultHttpContext(); + Requests[5123].RequestServices = CreateServices(); + Requests[5123].Request.Method = "PATCH"; + Requests[5123].Request.Path = "/84698/providers/Microsoft.EventGrid/eventSubscriptions/eb84cc63-1e01-4817-84"; + Requests[5124] = new DefaultHttpContext(); + Requests[5124].RequestServices = CreateServices(); + Requests[5124].Request.Method = "GET"; + Requests[5124].Request.Path = "/94e21/providers/Microsoft.Security/compliances/f7cbc736-c908-"; + Requests[5125] = new DefaultHttpContext(); + Requests[5125].RequestServices = CreateServices(); + Requests[5125].Request.Method = "POST"; + Requests[5125].Request.Path = "/1554af9e-5/providers/Microsoft.PolicyInsights/policyEvents/50033f1d-85d8-4297-9/queryResults"; + Requests[5126] = new DefaultHttpContext(); + Requests[5126].RequestServices = CreateServices(); + Requests[5126].Request.Method = "POST"; + Requests[5126].Request.Path = "/83810c7b-b/providers/Microsoft.PolicyInsights/policyStates/1fca322a-7854-490d-8/queryResults"; + Requests[5127] = new DefaultHttpContext(); + Requests[5127].RequestServices = CreateServices(); + Requests[5127].Request.Method = "POST"; + Requests[5127].Request.Path = "/53aec485-7/providers/Microsoft.PolicyInsights/policyStates/805ced9d-bbbf-46d2-a3d7-44c/summarize"; + Requests[5128] = new DefaultHttpContext(); + Requests[5128].RequestServices = CreateServices(); + Requests[5128].Request.Method = "POST"; + Requests[5128].Request.Path = "/48939/providers/Microsoft.EventGrid/eventSubscriptions/ee3d2958-3b99-4bb0-a2/getFullUrl"; + Requests[5129] = new DefaultHttpContext(); + Requests[5129].RequestServices = CreateServices(); + Requests[5129].Request.Method = "DELETE"; + Requests[5129].Request.Path = "/6f497c14-d5/providers/Microsoft.Advisor/recommendations/5e7f13b8-6a2c-44/suppressions/e23e5"; + Requests[5130] = new DefaultHttpContext(); + Requests[5130].RequestServices = CreateServices(); + Requests[5130].Request.Method = "PUT"; + Requests[5130].Request.Path = "/7cb414a5-ff/providers/Microsoft.Advisor/recommendations/44db4e18-5fc9-49/suppressions/b0dea"; + Requests[5131] = new DefaultHttpContext(); + Requests[5131].RequestServices = CreateServices(); + Requests[5131].Request.Method = "GET"; + Requests[5131].Request.Path = "/d1e793b7-e3/providers/Microsoft.Advisor/recommendations/781d6f78-9eb7-45/suppressions/886d9"; + Requests[5132] = new DefaultHttpContext(); + Requests[5132].RequestServices = CreateServices(); + Requests[5132].Request.Method = "PATCH"; + Requests[5132].Request.Path = "/19d78960/applications/ebf6b10b-e112-480b-"; + Requests[5133] = new DefaultHttpContext(); + Requests[5133].RequestServices = CreateServices(); + Requests[5133].Request.Method = "DELETE"; + Requests[5133].Request.Path = "/bc2205fb/applications/fcb65994-aa4c-41f6-"; + Requests[5134] = new DefaultHttpContext(); + Requests[5134].RequestServices = CreateServices(); + Requests[5134].Request.Method = "GET"; + Requests[5134].Request.Path = "/44e7851b/applications/c3b0e039-5bef-4291-"; + Requests[5135] = new DefaultHttpContext(); + Requests[5135].RequestServices = CreateServices(); + Requests[5135].Request.Method = "GET"; + Requests[5135].Request.Path = "/0b5ab206/domains/46d06d5b-f"; + Requests[5136] = new DefaultHttpContext(); + Requests[5136].RequestServices = CreateServices(); + Requests[5136].Request.Method = "GET"; + Requests[5136].Request.Path = "/c0177e65/groups/c600cde6"; + Requests[5137] = new DefaultHttpContext(); + Requests[5137].RequestServices = CreateServices(); + Requests[5137].Request.Method = "DELETE"; + Requests[5137].Request.Path = "/fe8b0cba/groups/9c9bf526"; + Requests[5138] = new DefaultHttpContext(); + Requests[5138].RequestServices = CreateServices(); + Requests[5138].Request.Method = "DELETE"; + Requests[5138].Request.Path = "/256857f2/servicePrincipals/566cc761"; + Requests[5139] = new DefaultHttpContext(); + Requests[5139].RequestServices = CreateServices(); + Requests[5139].Request.Method = "GET"; + Requests[5139].Request.Path = "/861f668b/servicePrincipals/6fb90b06"; + Requests[5140] = new DefaultHttpContext(); + Requests[5140].RequestServices = CreateServices(); + Requests[5140].Request.Method = "DELETE"; + Requests[5140].Request.Path = "/fb1866c5/users/f63284b7-54bc"; + Requests[5141] = new DefaultHttpContext(); + Requests[5141].RequestServices = CreateServices(); + Requests[5141].Request.Method = "GET"; + Requests[5141].Request.Path = "/b5ba8659/users/2df785f3-6b69"; + Requests[5142] = new DefaultHttpContext(); + Requests[5142].RequestServices = CreateServices(); + Requests[5142].Request.Method = "PATCH"; + Requests[5142].Request.Path = "/d3d0692e/users/1b2b55f4-2810"; + Requests[5143] = new DefaultHttpContext(); + Requests[5143].RequestServices = CreateServices(); + Requests[5143].Request.Method = "POST"; + Requests[5143].Request.Path = "/18a12f9e-/images/d830eae/regionproposals"; + Requests[5144] = new DefaultHttpContext(); + Requests[5144].RequestServices = CreateServices(); + Requests[5144].Request.Method = "GET"; + Requests[5144].Request.Path = "/a5f6ef50/applications/ba5c1d90-878c-42e0-/keyCredentials"; + Requests[5145] = new DefaultHttpContext(); + Requests[5145].RequestServices = CreateServices(); + Requests[5145].Request.Method = "PATCH"; + Requests[5145].Request.Path = "/a34c9ef6/applications/09614e73-905f-477d-/keyCredentials"; + Requests[5146] = new DefaultHttpContext(); + Requests[5146].RequestServices = CreateServices(); + Requests[5146].Request.Method = "GET"; + Requests[5146].Request.Path = "/ab97efeb/applications/f768000c-c7a0-4fe1-/owners"; + Requests[5147] = new DefaultHttpContext(); + Requests[5147].RequestServices = CreateServices(); + Requests[5147].Request.Method = "GET"; + Requests[5147].Request.Path = "/e8c9fff6/applications/8d89ff6e-fed5-499c-/passwordCredentials"; + Requests[5148] = new DefaultHttpContext(); + Requests[5148].RequestServices = CreateServices(); + Requests[5148].Request.Method = "PATCH"; + Requests[5148].Request.Path = "/b1393c92/applications/fc50cf9b-5cca-415b-/passwordCredentials"; + Requests[5149] = new DefaultHttpContext(); + Requests[5149].RequestServices = CreateServices(); + Requests[5149].Request.Method = "POST"; + Requests[5149].Request.Path = "/695dfecf/groups/8354343e/getMemberGroups"; + Requests[5150] = new DefaultHttpContext(); + Requests[5150].RequestServices = CreateServices(); + Requests[5150].Request.Method = "GET"; + Requests[5150].Request.Path = "/8008a9c8/groups/85722fdf/members"; + Requests[5151] = new DefaultHttpContext(); + Requests[5151].RequestServices = CreateServices(); + Requests[5151].Request.Method = "PATCH"; + Requests[5151].Request.Path = "/8a5b0e45/servicePrincipals/9f620f11/keyCredentials"; + Requests[5152] = new DefaultHttpContext(); + Requests[5152].RequestServices = CreateServices(); + Requests[5152].Request.Method = "GET"; + Requests[5152].Request.Path = "/1511f972/servicePrincipals/0c774cb3/keyCredentials"; + Requests[5153] = new DefaultHttpContext(); + Requests[5153].RequestServices = CreateServices(); + Requests[5153].Request.Method = "GET"; + Requests[5153].Request.Path = "/5d9f79bd/servicePrincipals/386a4838/owners"; + Requests[5154] = new DefaultHttpContext(); + Requests[5154].RequestServices = CreateServices(); + Requests[5154].Request.Method = "GET"; + Requests[5154].Request.Path = "/351b58e4/servicePrincipals/fa316d04/passwordCredentials"; + Requests[5155] = new DefaultHttpContext(); + Requests[5155].RequestServices = CreateServices(); + Requests[5155].Request.Method = "PATCH"; + Requests[5155].Request.Path = "/5456a10f/servicePrincipals/171c0d9d/passwordCredentials"; + Requests[5156] = new DefaultHttpContext(); + Requests[5156].RequestServices = CreateServices(); + Requests[5156].Request.Method = "POST"; + Requests[5156].Request.Path = "/5ac48b33/users/3fa883ab/getMemberGroups"; + Requests[5157] = new DefaultHttpContext(); + Requests[5157].RequestServices = CreateServices(); + Requests[5157].Request.Method = "POST"; + Requests[5157].Request.Path = "/4d828b45/applications/f6b9b435-fce7-4e14-/$links/owners"; + Requests[5158] = new DefaultHttpContext(); + Requests[5158].RequestServices = CreateServices(); + Requests[5158].Request.Method = "POST"; + Requests[5158].Request.Path = "/39b6b141/groups/6cf0f0bc-b1db/$links/members"; + Requests[5159] = new DefaultHttpContext(); + Requests[5159].RequestServices = CreateServices(); + Requests[5159].Request.Method = "DELETE"; + Requests[5159].Request.Path = "/67fb987d/groups/04d01a8c-6135/$links/members/71b75dbe-0076-"; + } + + private protected Matcher SetupMatcher(MatcherBuilder builder) + { + builder.AddEndpoint(Endpoints[0]); + builder.AddEndpoint(Endpoints[1]); + builder.AddEndpoint(Endpoints[2]); + builder.AddEndpoint(Endpoints[3]); + builder.AddEndpoint(Endpoints[4]); + builder.AddEndpoint(Endpoints[5]); + builder.AddEndpoint(Endpoints[6]); + builder.AddEndpoint(Endpoints[7]); + builder.AddEndpoint(Endpoints[8]); + builder.AddEndpoint(Endpoints[9]); + builder.AddEndpoint(Endpoints[10]); + builder.AddEndpoint(Endpoints[11]); + builder.AddEndpoint(Endpoints[12]); + builder.AddEndpoint(Endpoints[13]); + builder.AddEndpoint(Endpoints[14]); + builder.AddEndpoint(Endpoints[15]); + builder.AddEndpoint(Endpoints[16]); + builder.AddEndpoint(Endpoints[17]); + builder.AddEndpoint(Endpoints[18]); + builder.AddEndpoint(Endpoints[19]); + builder.AddEndpoint(Endpoints[20]); + builder.AddEndpoint(Endpoints[21]); + builder.AddEndpoint(Endpoints[22]); + builder.AddEndpoint(Endpoints[23]); + builder.AddEndpoint(Endpoints[24]); + builder.AddEndpoint(Endpoints[25]); + builder.AddEndpoint(Endpoints[26]); + builder.AddEndpoint(Endpoints[27]); + builder.AddEndpoint(Endpoints[28]); + builder.AddEndpoint(Endpoints[29]); + builder.AddEndpoint(Endpoints[30]); + builder.AddEndpoint(Endpoints[31]); + builder.AddEndpoint(Endpoints[32]); + builder.AddEndpoint(Endpoints[33]); + builder.AddEndpoint(Endpoints[34]); + builder.AddEndpoint(Endpoints[35]); + builder.AddEndpoint(Endpoints[36]); + builder.AddEndpoint(Endpoints[37]); + builder.AddEndpoint(Endpoints[38]); + builder.AddEndpoint(Endpoints[39]); + builder.AddEndpoint(Endpoints[40]); + builder.AddEndpoint(Endpoints[41]); + builder.AddEndpoint(Endpoints[42]); + builder.AddEndpoint(Endpoints[43]); + builder.AddEndpoint(Endpoints[44]); + builder.AddEndpoint(Endpoints[45]); + builder.AddEndpoint(Endpoints[46]); + builder.AddEndpoint(Endpoints[47]); + builder.AddEndpoint(Endpoints[48]); + builder.AddEndpoint(Endpoints[49]); + builder.AddEndpoint(Endpoints[50]); + builder.AddEndpoint(Endpoints[51]); + builder.AddEndpoint(Endpoints[52]); + builder.AddEndpoint(Endpoints[53]); + builder.AddEndpoint(Endpoints[54]); + builder.AddEndpoint(Endpoints[55]); + builder.AddEndpoint(Endpoints[56]); + builder.AddEndpoint(Endpoints[57]); + builder.AddEndpoint(Endpoints[58]); + builder.AddEndpoint(Endpoints[59]); + builder.AddEndpoint(Endpoints[60]); + builder.AddEndpoint(Endpoints[61]); + builder.AddEndpoint(Endpoints[62]); + builder.AddEndpoint(Endpoints[63]); + builder.AddEndpoint(Endpoints[64]); + builder.AddEndpoint(Endpoints[65]); + builder.AddEndpoint(Endpoints[66]); + builder.AddEndpoint(Endpoints[67]); + builder.AddEndpoint(Endpoints[68]); + builder.AddEndpoint(Endpoints[69]); + builder.AddEndpoint(Endpoints[70]); + builder.AddEndpoint(Endpoints[71]); + builder.AddEndpoint(Endpoints[72]); + builder.AddEndpoint(Endpoints[73]); + builder.AddEndpoint(Endpoints[74]); + builder.AddEndpoint(Endpoints[75]); + builder.AddEndpoint(Endpoints[76]); + builder.AddEndpoint(Endpoints[77]); + builder.AddEndpoint(Endpoints[78]); + builder.AddEndpoint(Endpoints[79]); + builder.AddEndpoint(Endpoints[80]); + builder.AddEndpoint(Endpoints[81]); + builder.AddEndpoint(Endpoints[82]); + builder.AddEndpoint(Endpoints[83]); + builder.AddEndpoint(Endpoints[84]); + builder.AddEndpoint(Endpoints[85]); + builder.AddEndpoint(Endpoints[86]); + builder.AddEndpoint(Endpoints[87]); + builder.AddEndpoint(Endpoints[88]); + builder.AddEndpoint(Endpoints[89]); + builder.AddEndpoint(Endpoints[90]); + builder.AddEndpoint(Endpoints[91]); + builder.AddEndpoint(Endpoints[92]); + builder.AddEndpoint(Endpoints[93]); + builder.AddEndpoint(Endpoints[94]); + builder.AddEndpoint(Endpoints[95]); + builder.AddEndpoint(Endpoints[96]); + builder.AddEndpoint(Endpoints[97]); + builder.AddEndpoint(Endpoints[98]); + builder.AddEndpoint(Endpoints[99]); + builder.AddEndpoint(Endpoints[100]); + builder.AddEndpoint(Endpoints[101]); + builder.AddEndpoint(Endpoints[102]); + builder.AddEndpoint(Endpoints[103]); + builder.AddEndpoint(Endpoints[104]); + builder.AddEndpoint(Endpoints[105]); + builder.AddEndpoint(Endpoints[106]); + builder.AddEndpoint(Endpoints[107]); + builder.AddEndpoint(Endpoints[108]); + builder.AddEndpoint(Endpoints[109]); + builder.AddEndpoint(Endpoints[110]); + builder.AddEndpoint(Endpoints[111]); + builder.AddEndpoint(Endpoints[112]); + builder.AddEndpoint(Endpoints[113]); + builder.AddEndpoint(Endpoints[114]); + builder.AddEndpoint(Endpoints[115]); + builder.AddEndpoint(Endpoints[116]); + builder.AddEndpoint(Endpoints[117]); + builder.AddEndpoint(Endpoints[118]); + builder.AddEndpoint(Endpoints[119]); + builder.AddEndpoint(Endpoints[120]); + builder.AddEndpoint(Endpoints[121]); + builder.AddEndpoint(Endpoints[122]); + builder.AddEndpoint(Endpoints[123]); + builder.AddEndpoint(Endpoints[124]); + builder.AddEndpoint(Endpoints[125]); + builder.AddEndpoint(Endpoints[126]); + builder.AddEndpoint(Endpoints[127]); + builder.AddEndpoint(Endpoints[128]); + builder.AddEndpoint(Endpoints[129]); + builder.AddEndpoint(Endpoints[130]); + builder.AddEndpoint(Endpoints[131]); + builder.AddEndpoint(Endpoints[132]); + builder.AddEndpoint(Endpoints[133]); + builder.AddEndpoint(Endpoints[134]); + builder.AddEndpoint(Endpoints[135]); + builder.AddEndpoint(Endpoints[136]); + builder.AddEndpoint(Endpoints[137]); + builder.AddEndpoint(Endpoints[138]); + builder.AddEndpoint(Endpoints[139]); + builder.AddEndpoint(Endpoints[140]); + builder.AddEndpoint(Endpoints[141]); + builder.AddEndpoint(Endpoints[142]); + builder.AddEndpoint(Endpoints[143]); + builder.AddEndpoint(Endpoints[144]); + builder.AddEndpoint(Endpoints[145]); + builder.AddEndpoint(Endpoints[146]); + builder.AddEndpoint(Endpoints[147]); + builder.AddEndpoint(Endpoints[148]); + builder.AddEndpoint(Endpoints[149]); + builder.AddEndpoint(Endpoints[150]); + builder.AddEndpoint(Endpoints[151]); + builder.AddEndpoint(Endpoints[152]); + builder.AddEndpoint(Endpoints[153]); + builder.AddEndpoint(Endpoints[154]); + builder.AddEndpoint(Endpoints[155]); + builder.AddEndpoint(Endpoints[156]); + builder.AddEndpoint(Endpoints[157]); + builder.AddEndpoint(Endpoints[158]); + builder.AddEndpoint(Endpoints[159]); + builder.AddEndpoint(Endpoints[160]); + builder.AddEndpoint(Endpoints[161]); + builder.AddEndpoint(Endpoints[162]); + builder.AddEndpoint(Endpoints[163]); + builder.AddEndpoint(Endpoints[164]); + builder.AddEndpoint(Endpoints[165]); + builder.AddEndpoint(Endpoints[166]); + builder.AddEndpoint(Endpoints[167]); + builder.AddEndpoint(Endpoints[168]); + builder.AddEndpoint(Endpoints[169]); + builder.AddEndpoint(Endpoints[170]); + builder.AddEndpoint(Endpoints[171]); + builder.AddEndpoint(Endpoints[172]); + builder.AddEndpoint(Endpoints[173]); + builder.AddEndpoint(Endpoints[174]); + builder.AddEndpoint(Endpoints[175]); + builder.AddEndpoint(Endpoints[176]); + builder.AddEndpoint(Endpoints[177]); + builder.AddEndpoint(Endpoints[178]); + builder.AddEndpoint(Endpoints[179]); + builder.AddEndpoint(Endpoints[180]); + builder.AddEndpoint(Endpoints[181]); + builder.AddEndpoint(Endpoints[182]); + builder.AddEndpoint(Endpoints[183]); + builder.AddEndpoint(Endpoints[184]); + builder.AddEndpoint(Endpoints[185]); + builder.AddEndpoint(Endpoints[186]); + builder.AddEndpoint(Endpoints[187]); + builder.AddEndpoint(Endpoints[188]); + builder.AddEndpoint(Endpoints[189]); + builder.AddEndpoint(Endpoints[190]); + builder.AddEndpoint(Endpoints[191]); + builder.AddEndpoint(Endpoints[192]); + builder.AddEndpoint(Endpoints[193]); + builder.AddEndpoint(Endpoints[194]); + builder.AddEndpoint(Endpoints[195]); + builder.AddEndpoint(Endpoints[196]); + builder.AddEndpoint(Endpoints[197]); + builder.AddEndpoint(Endpoints[198]); + builder.AddEndpoint(Endpoints[199]); + builder.AddEndpoint(Endpoints[200]); + builder.AddEndpoint(Endpoints[201]); + builder.AddEndpoint(Endpoints[202]); + builder.AddEndpoint(Endpoints[203]); + builder.AddEndpoint(Endpoints[204]); + builder.AddEndpoint(Endpoints[205]); + builder.AddEndpoint(Endpoints[206]); + builder.AddEndpoint(Endpoints[207]); + builder.AddEndpoint(Endpoints[208]); + builder.AddEndpoint(Endpoints[209]); + builder.AddEndpoint(Endpoints[210]); + builder.AddEndpoint(Endpoints[211]); + builder.AddEndpoint(Endpoints[212]); + builder.AddEndpoint(Endpoints[213]); + builder.AddEndpoint(Endpoints[214]); + builder.AddEndpoint(Endpoints[215]); + builder.AddEndpoint(Endpoints[216]); + builder.AddEndpoint(Endpoints[217]); + builder.AddEndpoint(Endpoints[218]); + builder.AddEndpoint(Endpoints[219]); + builder.AddEndpoint(Endpoints[220]); + builder.AddEndpoint(Endpoints[221]); + builder.AddEndpoint(Endpoints[222]); + builder.AddEndpoint(Endpoints[223]); + builder.AddEndpoint(Endpoints[224]); + builder.AddEndpoint(Endpoints[225]); + builder.AddEndpoint(Endpoints[226]); + builder.AddEndpoint(Endpoints[227]); + builder.AddEndpoint(Endpoints[228]); + builder.AddEndpoint(Endpoints[229]); + builder.AddEndpoint(Endpoints[230]); + builder.AddEndpoint(Endpoints[231]); + builder.AddEndpoint(Endpoints[232]); + builder.AddEndpoint(Endpoints[233]); + builder.AddEndpoint(Endpoints[234]); + builder.AddEndpoint(Endpoints[235]); + builder.AddEndpoint(Endpoints[236]); + builder.AddEndpoint(Endpoints[237]); + builder.AddEndpoint(Endpoints[238]); + builder.AddEndpoint(Endpoints[239]); + builder.AddEndpoint(Endpoints[240]); + builder.AddEndpoint(Endpoints[241]); + builder.AddEndpoint(Endpoints[242]); + builder.AddEndpoint(Endpoints[243]); + builder.AddEndpoint(Endpoints[244]); + builder.AddEndpoint(Endpoints[245]); + builder.AddEndpoint(Endpoints[246]); + builder.AddEndpoint(Endpoints[247]); + builder.AddEndpoint(Endpoints[248]); + builder.AddEndpoint(Endpoints[249]); + builder.AddEndpoint(Endpoints[250]); + builder.AddEndpoint(Endpoints[251]); + builder.AddEndpoint(Endpoints[252]); + builder.AddEndpoint(Endpoints[253]); + builder.AddEndpoint(Endpoints[254]); + builder.AddEndpoint(Endpoints[255]); + builder.AddEndpoint(Endpoints[256]); + builder.AddEndpoint(Endpoints[257]); + builder.AddEndpoint(Endpoints[258]); + builder.AddEndpoint(Endpoints[259]); + builder.AddEndpoint(Endpoints[260]); + builder.AddEndpoint(Endpoints[261]); + builder.AddEndpoint(Endpoints[262]); + builder.AddEndpoint(Endpoints[263]); + builder.AddEndpoint(Endpoints[264]); + builder.AddEndpoint(Endpoints[265]); + builder.AddEndpoint(Endpoints[266]); + builder.AddEndpoint(Endpoints[267]); + builder.AddEndpoint(Endpoints[268]); + builder.AddEndpoint(Endpoints[269]); + builder.AddEndpoint(Endpoints[270]); + builder.AddEndpoint(Endpoints[271]); + builder.AddEndpoint(Endpoints[272]); + builder.AddEndpoint(Endpoints[273]); + builder.AddEndpoint(Endpoints[274]); + builder.AddEndpoint(Endpoints[275]); + builder.AddEndpoint(Endpoints[276]); + builder.AddEndpoint(Endpoints[277]); + builder.AddEndpoint(Endpoints[278]); + builder.AddEndpoint(Endpoints[279]); + builder.AddEndpoint(Endpoints[280]); + builder.AddEndpoint(Endpoints[281]); + builder.AddEndpoint(Endpoints[282]); + builder.AddEndpoint(Endpoints[283]); + builder.AddEndpoint(Endpoints[284]); + builder.AddEndpoint(Endpoints[285]); + builder.AddEndpoint(Endpoints[286]); + builder.AddEndpoint(Endpoints[287]); + builder.AddEndpoint(Endpoints[288]); + builder.AddEndpoint(Endpoints[289]); + builder.AddEndpoint(Endpoints[290]); + builder.AddEndpoint(Endpoints[291]); + builder.AddEndpoint(Endpoints[292]); + builder.AddEndpoint(Endpoints[293]); + builder.AddEndpoint(Endpoints[294]); + builder.AddEndpoint(Endpoints[295]); + builder.AddEndpoint(Endpoints[296]); + builder.AddEndpoint(Endpoints[297]); + builder.AddEndpoint(Endpoints[298]); + builder.AddEndpoint(Endpoints[299]); + builder.AddEndpoint(Endpoints[300]); + builder.AddEndpoint(Endpoints[301]); + builder.AddEndpoint(Endpoints[302]); + builder.AddEndpoint(Endpoints[303]); + builder.AddEndpoint(Endpoints[304]); + builder.AddEndpoint(Endpoints[305]); + builder.AddEndpoint(Endpoints[306]); + builder.AddEndpoint(Endpoints[307]); + builder.AddEndpoint(Endpoints[308]); + builder.AddEndpoint(Endpoints[309]); + builder.AddEndpoint(Endpoints[310]); + builder.AddEndpoint(Endpoints[311]); + builder.AddEndpoint(Endpoints[312]); + builder.AddEndpoint(Endpoints[313]); + builder.AddEndpoint(Endpoints[314]); + builder.AddEndpoint(Endpoints[315]); + builder.AddEndpoint(Endpoints[316]); + builder.AddEndpoint(Endpoints[317]); + builder.AddEndpoint(Endpoints[318]); + builder.AddEndpoint(Endpoints[319]); + builder.AddEndpoint(Endpoints[320]); + builder.AddEndpoint(Endpoints[321]); + builder.AddEndpoint(Endpoints[322]); + builder.AddEndpoint(Endpoints[323]); + builder.AddEndpoint(Endpoints[324]); + builder.AddEndpoint(Endpoints[325]); + builder.AddEndpoint(Endpoints[326]); + builder.AddEndpoint(Endpoints[327]); + builder.AddEndpoint(Endpoints[328]); + builder.AddEndpoint(Endpoints[329]); + builder.AddEndpoint(Endpoints[330]); + builder.AddEndpoint(Endpoints[331]); + builder.AddEndpoint(Endpoints[332]); + builder.AddEndpoint(Endpoints[333]); + builder.AddEndpoint(Endpoints[334]); + builder.AddEndpoint(Endpoints[335]); + builder.AddEndpoint(Endpoints[336]); + builder.AddEndpoint(Endpoints[337]); + builder.AddEndpoint(Endpoints[338]); + builder.AddEndpoint(Endpoints[339]); + builder.AddEndpoint(Endpoints[340]); + builder.AddEndpoint(Endpoints[341]); + builder.AddEndpoint(Endpoints[342]); + builder.AddEndpoint(Endpoints[343]); + builder.AddEndpoint(Endpoints[344]); + builder.AddEndpoint(Endpoints[345]); + builder.AddEndpoint(Endpoints[346]); + builder.AddEndpoint(Endpoints[347]); + builder.AddEndpoint(Endpoints[348]); + builder.AddEndpoint(Endpoints[349]); + builder.AddEndpoint(Endpoints[350]); + builder.AddEndpoint(Endpoints[351]); + builder.AddEndpoint(Endpoints[352]); + builder.AddEndpoint(Endpoints[353]); + builder.AddEndpoint(Endpoints[354]); + builder.AddEndpoint(Endpoints[355]); + builder.AddEndpoint(Endpoints[356]); + builder.AddEndpoint(Endpoints[357]); + builder.AddEndpoint(Endpoints[358]); + builder.AddEndpoint(Endpoints[359]); + builder.AddEndpoint(Endpoints[360]); + builder.AddEndpoint(Endpoints[361]); + builder.AddEndpoint(Endpoints[362]); + builder.AddEndpoint(Endpoints[363]); + builder.AddEndpoint(Endpoints[364]); + builder.AddEndpoint(Endpoints[365]); + builder.AddEndpoint(Endpoints[366]); + builder.AddEndpoint(Endpoints[367]); + builder.AddEndpoint(Endpoints[368]); + builder.AddEndpoint(Endpoints[369]); + builder.AddEndpoint(Endpoints[370]); + builder.AddEndpoint(Endpoints[371]); + builder.AddEndpoint(Endpoints[372]); + builder.AddEndpoint(Endpoints[373]); + builder.AddEndpoint(Endpoints[374]); + builder.AddEndpoint(Endpoints[375]); + builder.AddEndpoint(Endpoints[376]); + builder.AddEndpoint(Endpoints[377]); + builder.AddEndpoint(Endpoints[378]); + builder.AddEndpoint(Endpoints[379]); + builder.AddEndpoint(Endpoints[380]); + builder.AddEndpoint(Endpoints[381]); + builder.AddEndpoint(Endpoints[382]); + builder.AddEndpoint(Endpoints[383]); + builder.AddEndpoint(Endpoints[384]); + builder.AddEndpoint(Endpoints[385]); + builder.AddEndpoint(Endpoints[386]); + builder.AddEndpoint(Endpoints[387]); + builder.AddEndpoint(Endpoints[388]); + builder.AddEndpoint(Endpoints[389]); + builder.AddEndpoint(Endpoints[390]); + builder.AddEndpoint(Endpoints[391]); + builder.AddEndpoint(Endpoints[392]); + builder.AddEndpoint(Endpoints[393]); + builder.AddEndpoint(Endpoints[394]); + builder.AddEndpoint(Endpoints[395]); + builder.AddEndpoint(Endpoints[396]); + builder.AddEndpoint(Endpoints[397]); + builder.AddEndpoint(Endpoints[398]); + builder.AddEndpoint(Endpoints[399]); + builder.AddEndpoint(Endpoints[400]); + builder.AddEndpoint(Endpoints[401]); + builder.AddEndpoint(Endpoints[402]); + builder.AddEndpoint(Endpoints[403]); + builder.AddEndpoint(Endpoints[404]); + builder.AddEndpoint(Endpoints[405]); + builder.AddEndpoint(Endpoints[406]); + builder.AddEndpoint(Endpoints[407]); + builder.AddEndpoint(Endpoints[408]); + builder.AddEndpoint(Endpoints[409]); + builder.AddEndpoint(Endpoints[410]); + builder.AddEndpoint(Endpoints[411]); + builder.AddEndpoint(Endpoints[412]); + builder.AddEndpoint(Endpoints[413]); + builder.AddEndpoint(Endpoints[414]); + builder.AddEndpoint(Endpoints[415]); + builder.AddEndpoint(Endpoints[416]); + builder.AddEndpoint(Endpoints[417]); + builder.AddEndpoint(Endpoints[418]); + builder.AddEndpoint(Endpoints[419]); + builder.AddEndpoint(Endpoints[420]); + builder.AddEndpoint(Endpoints[421]); + builder.AddEndpoint(Endpoints[422]); + builder.AddEndpoint(Endpoints[423]); + builder.AddEndpoint(Endpoints[424]); + builder.AddEndpoint(Endpoints[425]); + builder.AddEndpoint(Endpoints[426]); + builder.AddEndpoint(Endpoints[427]); + builder.AddEndpoint(Endpoints[428]); + builder.AddEndpoint(Endpoints[429]); + builder.AddEndpoint(Endpoints[430]); + builder.AddEndpoint(Endpoints[431]); + builder.AddEndpoint(Endpoints[432]); + builder.AddEndpoint(Endpoints[433]); + builder.AddEndpoint(Endpoints[434]); + builder.AddEndpoint(Endpoints[435]); + builder.AddEndpoint(Endpoints[436]); + builder.AddEndpoint(Endpoints[437]); + builder.AddEndpoint(Endpoints[438]); + builder.AddEndpoint(Endpoints[439]); + builder.AddEndpoint(Endpoints[440]); + builder.AddEndpoint(Endpoints[441]); + builder.AddEndpoint(Endpoints[442]); + builder.AddEndpoint(Endpoints[443]); + builder.AddEndpoint(Endpoints[444]); + builder.AddEndpoint(Endpoints[445]); + builder.AddEndpoint(Endpoints[446]); + builder.AddEndpoint(Endpoints[447]); + builder.AddEndpoint(Endpoints[448]); + builder.AddEndpoint(Endpoints[449]); + builder.AddEndpoint(Endpoints[450]); + builder.AddEndpoint(Endpoints[451]); + builder.AddEndpoint(Endpoints[452]); + builder.AddEndpoint(Endpoints[453]); + builder.AddEndpoint(Endpoints[454]); + builder.AddEndpoint(Endpoints[455]); + builder.AddEndpoint(Endpoints[456]); + builder.AddEndpoint(Endpoints[457]); + builder.AddEndpoint(Endpoints[458]); + builder.AddEndpoint(Endpoints[459]); + builder.AddEndpoint(Endpoints[460]); + builder.AddEndpoint(Endpoints[461]); + builder.AddEndpoint(Endpoints[462]); + builder.AddEndpoint(Endpoints[463]); + builder.AddEndpoint(Endpoints[464]); + builder.AddEndpoint(Endpoints[465]); + builder.AddEndpoint(Endpoints[466]); + builder.AddEndpoint(Endpoints[467]); + builder.AddEndpoint(Endpoints[468]); + builder.AddEndpoint(Endpoints[469]); + builder.AddEndpoint(Endpoints[470]); + builder.AddEndpoint(Endpoints[471]); + builder.AddEndpoint(Endpoints[472]); + builder.AddEndpoint(Endpoints[473]); + builder.AddEndpoint(Endpoints[474]); + builder.AddEndpoint(Endpoints[475]); + builder.AddEndpoint(Endpoints[476]); + builder.AddEndpoint(Endpoints[477]); + builder.AddEndpoint(Endpoints[478]); + builder.AddEndpoint(Endpoints[479]); + builder.AddEndpoint(Endpoints[480]); + builder.AddEndpoint(Endpoints[481]); + builder.AddEndpoint(Endpoints[482]); + builder.AddEndpoint(Endpoints[483]); + builder.AddEndpoint(Endpoints[484]); + builder.AddEndpoint(Endpoints[485]); + builder.AddEndpoint(Endpoints[486]); + builder.AddEndpoint(Endpoints[487]); + builder.AddEndpoint(Endpoints[488]); + builder.AddEndpoint(Endpoints[489]); + builder.AddEndpoint(Endpoints[490]); + builder.AddEndpoint(Endpoints[491]); + builder.AddEndpoint(Endpoints[492]); + builder.AddEndpoint(Endpoints[493]); + builder.AddEndpoint(Endpoints[494]); + builder.AddEndpoint(Endpoints[495]); + builder.AddEndpoint(Endpoints[496]); + builder.AddEndpoint(Endpoints[497]); + builder.AddEndpoint(Endpoints[498]); + builder.AddEndpoint(Endpoints[499]); + builder.AddEndpoint(Endpoints[500]); + builder.AddEndpoint(Endpoints[501]); + builder.AddEndpoint(Endpoints[502]); + builder.AddEndpoint(Endpoints[503]); + builder.AddEndpoint(Endpoints[504]); + builder.AddEndpoint(Endpoints[505]); + builder.AddEndpoint(Endpoints[506]); + builder.AddEndpoint(Endpoints[507]); + builder.AddEndpoint(Endpoints[508]); + builder.AddEndpoint(Endpoints[509]); + builder.AddEndpoint(Endpoints[510]); + builder.AddEndpoint(Endpoints[511]); + builder.AddEndpoint(Endpoints[512]); + builder.AddEndpoint(Endpoints[513]); + builder.AddEndpoint(Endpoints[514]); + builder.AddEndpoint(Endpoints[515]); + builder.AddEndpoint(Endpoints[516]); + builder.AddEndpoint(Endpoints[517]); + builder.AddEndpoint(Endpoints[518]); + builder.AddEndpoint(Endpoints[519]); + builder.AddEndpoint(Endpoints[520]); + builder.AddEndpoint(Endpoints[521]); + builder.AddEndpoint(Endpoints[522]); + builder.AddEndpoint(Endpoints[523]); + builder.AddEndpoint(Endpoints[524]); + builder.AddEndpoint(Endpoints[525]); + builder.AddEndpoint(Endpoints[526]); + builder.AddEndpoint(Endpoints[527]); + builder.AddEndpoint(Endpoints[528]); + builder.AddEndpoint(Endpoints[529]); + builder.AddEndpoint(Endpoints[530]); + builder.AddEndpoint(Endpoints[531]); + builder.AddEndpoint(Endpoints[532]); + builder.AddEndpoint(Endpoints[533]); + builder.AddEndpoint(Endpoints[534]); + builder.AddEndpoint(Endpoints[535]); + builder.AddEndpoint(Endpoints[536]); + builder.AddEndpoint(Endpoints[537]); + builder.AddEndpoint(Endpoints[538]); + builder.AddEndpoint(Endpoints[539]); + builder.AddEndpoint(Endpoints[540]); + builder.AddEndpoint(Endpoints[541]); + builder.AddEndpoint(Endpoints[542]); + builder.AddEndpoint(Endpoints[543]); + builder.AddEndpoint(Endpoints[544]); + builder.AddEndpoint(Endpoints[545]); + builder.AddEndpoint(Endpoints[546]); + builder.AddEndpoint(Endpoints[547]); + builder.AddEndpoint(Endpoints[548]); + builder.AddEndpoint(Endpoints[549]); + builder.AddEndpoint(Endpoints[550]); + builder.AddEndpoint(Endpoints[551]); + builder.AddEndpoint(Endpoints[552]); + builder.AddEndpoint(Endpoints[553]); + builder.AddEndpoint(Endpoints[554]); + builder.AddEndpoint(Endpoints[555]); + builder.AddEndpoint(Endpoints[556]); + builder.AddEndpoint(Endpoints[557]); + builder.AddEndpoint(Endpoints[558]); + builder.AddEndpoint(Endpoints[559]); + builder.AddEndpoint(Endpoints[560]); + builder.AddEndpoint(Endpoints[561]); + builder.AddEndpoint(Endpoints[562]); + builder.AddEndpoint(Endpoints[563]); + builder.AddEndpoint(Endpoints[564]); + builder.AddEndpoint(Endpoints[565]); + builder.AddEndpoint(Endpoints[566]); + builder.AddEndpoint(Endpoints[567]); + builder.AddEndpoint(Endpoints[568]); + builder.AddEndpoint(Endpoints[569]); + builder.AddEndpoint(Endpoints[570]); + builder.AddEndpoint(Endpoints[571]); + builder.AddEndpoint(Endpoints[572]); + builder.AddEndpoint(Endpoints[573]); + builder.AddEndpoint(Endpoints[574]); + builder.AddEndpoint(Endpoints[575]); + builder.AddEndpoint(Endpoints[576]); + builder.AddEndpoint(Endpoints[577]); + builder.AddEndpoint(Endpoints[578]); + builder.AddEndpoint(Endpoints[579]); + builder.AddEndpoint(Endpoints[580]); + builder.AddEndpoint(Endpoints[581]); + builder.AddEndpoint(Endpoints[582]); + builder.AddEndpoint(Endpoints[583]); + builder.AddEndpoint(Endpoints[584]); + builder.AddEndpoint(Endpoints[585]); + builder.AddEndpoint(Endpoints[586]); + builder.AddEndpoint(Endpoints[587]); + builder.AddEndpoint(Endpoints[588]); + builder.AddEndpoint(Endpoints[589]); + builder.AddEndpoint(Endpoints[590]); + builder.AddEndpoint(Endpoints[591]); + builder.AddEndpoint(Endpoints[592]); + builder.AddEndpoint(Endpoints[593]); + builder.AddEndpoint(Endpoints[594]); + builder.AddEndpoint(Endpoints[595]); + builder.AddEndpoint(Endpoints[596]); + builder.AddEndpoint(Endpoints[597]); + builder.AddEndpoint(Endpoints[598]); + builder.AddEndpoint(Endpoints[599]); + builder.AddEndpoint(Endpoints[600]); + builder.AddEndpoint(Endpoints[601]); + builder.AddEndpoint(Endpoints[602]); + builder.AddEndpoint(Endpoints[603]); + builder.AddEndpoint(Endpoints[604]); + builder.AddEndpoint(Endpoints[605]); + builder.AddEndpoint(Endpoints[606]); + builder.AddEndpoint(Endpoints[607]); + builder.AddEndpoint(Endpoints[608]); + builder.AddEndpoint(Endpoints[609]); + builder.AddEndpoint(Endpoints[610]); + builder.AddEndpoint(Endpoints[611]); + builder.AddEndpoint(Endpoints[612]); + builder.AddEndpoint(Endpoints[613]); + builder.AddEndpoint(Endpoints[614]); + builder.AddEndpoint(Endpoints[615]); + builder.AddEndpoint(Endpoints[616]); + builder.AddEndpoint(Endpoints[617]); + builder.AddEndpoint(Endpoints[618]); + builder.AddEndpoint(Endpoints[619]); + builder.AddEndpoint(Endpoints[620]); + builder.AddEndpoint(Endpoints[621]); + builder.AddEndpoint(Endpoints[622]); + builder.AddEndpoint(Endpoints[623]); + builder.AddEndpoint(Endpoints[624]); + builder.AddEndpoint(Endpoints[625]); + builder.AddEndpoint(Endpoints[626]); + builder.AddEndpoint(Endpoints[627]); + builder.AddEndpoint(Endpoints[628]); + builder.AddEndpoint(Endpoints[629]); + builder.AddEndpoint(Endpoints[630]); + builder.AddEndpoint(Endpoints[631]); + builder.AddEndpoint(Endpoints[632]); + builder.AddEndpoint(Endpoints[633]); + builder.AddEndpoint(Endpoints[634]); + builder.AddEndpoint(Endpoints[635]); + builder.AddEndpoint(Endpoints[636]); + builder.AddEndpoint(Endpoints[637]); + builder.AddEndpoint(Endpoints[638]); + builder.AddEndpoint(Endpoints[639]); + builder.AddEndpoint(Endpoints[640]); + builder.AddEndpoint(Endpoints[641]); + builder.AddEndpoint(Endpoints[642]); + builder.AddEndpoint(Endpoints[643]); + builder.AddEndpoint(Endpoints[644]); + builder.AddEndpoint(Endpoints[645]); + builder.AddEndpoint(Endpoints[646]); + builder.AddEndpoint(Endpoints[647]); + builder.AddEndpoint(Endpoints[648]); + builder.AddEndpoint(Endpoints[649]); + builder.AddEndpoint(Endpoints[650]); + builder.AddEndpoint(Endpoints[651]); + builder.AddEndpoint(Endpoints[652]); + builder.AddEndpoint(Endpoints[653]); + builder.AddEndpoint(Endpoints[654]); + builder.AddEndpoint(Endpoints[655]); + builder.AddEndpoint(Endpoints[656]); + builder.AddEndpoint(Endpoints[657]); + builder.AddEndpoint(Endpoints[658]); + builder.AddEndpoint(Endpoints[659]); + builder.AddEndpoint(Endpoints[660]); + builder.AddEndpoint(Endpoints[661]); + builder.AddEndpoint(Endpoints[662]); + builder.AddEndpoint(Endpoints[663]); + builder.AddEndpoint(Endpoints[664]); + builder.AddEndpoint(Endpoints[665]); + builder.AddEndpoint(Endpoints[666]); + builder.AddEndpoint(Endpoints[667]); + builder.AddEndpoint(Endpoints[668]); + builder.AddEndpoint(Endpoints[669]); + builder.AddEndpoint(Endpoints[670]); + builder.AddEndpoint(Endpoints[671]); + builder.AddEndpoint(Endpoints[672]); + builder.AddEndpoint(Endpoints[673]); + builder.AddEndpoint(Endpoints[674]); + builder.AddEndpoint(Endpoints[675]); + builder.AddEndpoint(Endpoints[676]); + builder.AddEndpoint(Endpoints[677]); + builder.AddEndpoint(Endpoints[678]); + builder.AddEndpoint(Endpoints[679]); + builder.AddEndpoint(Endpoints[680]); + builder.AddEndpoint(Endpoints[681]); + builder.AddEndpoint(Endpoints[682]); + builder.AddEndpoint(Endpoints[683]); + builder.AddEndpoint(Endpoints[684]); + builder.AddEndpoint(Endpoints[685]); + builder.AddEndpoint(Endpoints[686]); + builder.AddEndpoint(Endpoints[687]); + builder.AddEndpoint(Endpoints[688]); + builder.AddEndpoint(Endpoints[689]); + builder.AddEndpoint(Endpoints[690]); + builder.AddEndpoint(Endpoints[691]); + builder.AddEndpoint(Endpoints[692]); + builder.AddEndpoint(Endpoints[693]); + builder.AddEndpoint(Endpoints[694]); + builder.AddEndpoint(Endpoints[695]); + builder.AddEndpoint(Endpoints[696]); + builder.AddEndpoint(Endpoints[697]); + builder.AddEndpoint(Endpoints[698]); + builder.AddEndpoint(Endpoints[699]); + builder.AddEndpoint(Endpoints[700]); + builder.AddEndpoint(Endpoints[701]); + builder.AddEndpoint(Endpoints[702]); + builder.AddEndpoint(Endpoints[703]); + builder.AddEndpoint(Endpoints[704]); + builder.AddEndpoint(Endpoints[705]); + builder.AddEndpoint(Endpoints[706]); + builder.AddEndpoint(Endpoints[707]); + builder.AddEndpoint(Endpoints[708]); + builder.AddEndpoint(Endpoints[709]); + builder.AddEndpoint(Endpoints[710]); + builder.AddEndpoint(Endpoints[711]); + builder.AddEndpoint(Endpoints[712]); + builder.AddEndpoint(Endpoints[713]); + builder.AddEndpoint(Endpoints[714]); + builder.AddEndpoint(Endpoints[715]); + builder.AddEndpoint(Endpoints[716]); + builder.AddEndpoint(Endpoints[717]); + builder.AddEndpoint(Endpoints[718]); + builder.AddEndpoint(Endpoints[719]); + builder.AddEndpoint(Endpoints[720]); + builder.AddEndpoint(Endpoints[721]); + builder.AddEndpoint(Endpoints[722]); + builder.AddEndpoint(Endpoints[723]); + builder.AddEndpoint(Endpoints[724]); + builder.AddEndpoint(Endpoints[725]); + builder.AddEndpoint(Endpoints[726]); + builder.AddEndpoint(Endpoints[727]); + builder.AddEndpoint(Endpoints[728]); + builder.AddEndpoint(Endpoints[729]); + builder.AddEndpoint(Endpoints[730]); + builder.AddEndpoint(Endpoints[731]); + builder.AddEndpoint(Endpoints[732]); + builder.AddEndpoint(Endpoints[733]); + builder.AddEndpoint(Endpoints[734]); + builder.AddEndpoint(Endpoints[735]); + builder.AddEndpoint(Endpoints[736]); + builder.AddEndpoint(Endpoints[737]); + builder.AddEndpoint(Endpoints[738]); + builder.AddEndpoint(Endpoints[739]); + builder.AddEndpoint(Endpoints[740]); + builder.AddEndpoint(Endpoints[741]); + builder.AddEndpoint(Endpoints[742]); + builder.AddEndpoint(Endpoints[743]); + builder.AddEndpoint(Endpoints[744]); + builder.AddEndpoint(Endpoints[745]); + builder.AddEndpoint(Endpoints[746]); + builder.AddEndpoint(Endpoints[747]); + builder.AddEndpoint(Endpoints[748]); + builder.AddEndpoint(Endpoints[749]); + builder.AddEndpoint(Endpoints[750]); + builder.AddEndpoint(Endpoints[751]); + builder.AddEndpoint(Endpoints[752]); + builder.AddEndpoint(Endpoints[753]); + builder.AddEndpoint(Endpoints[754]); + builder.AddEndpoint(Endpoints[755]); + builder.AddEndpoint(Endpoints[756]); + builder.AddEndpoint(Endpoints[757]); + builder.AddEndpoint(Endpoints[758]); + builder.AddEndpoint(Endpoints[759]); + builder.AddEndpoint(Endpoints[760]); + builder.AddEndpoint(Endpoints[761]); + builder.AddEndpoint(Endpoints[762]); + builder.AddEndpoint(Endpoints[763]); + builder.AddEndpoint(Endpoints[764]); + builder.AddEndpoint(Endpoints[765]); + builder.AddEndpoint(Endpoints[766]); + builder.AddEndpoint(Endpoints[767]); + builder.AddEndpoint(Endpoints[768]); + builder.AddEndpoint(Endpoints[769]); + builder.AddEndpoint(Endpoints[770]); + builder.AddEndpoint(Endpoints[771]); + builder.AddEndpoint(Endpoints[772]); + builder.AddEndpoint(Endpoints[773]); + builder.AddEndpoint(Endpoints[774]); + builder.AddEndpoint(Endpoints[775]); + builder.AddEndpoint(Endpoints[776]); + builder.AddEndpoint(Endpoints[777]); + builder.AddEndpoint(Endpoints[778]); + builder.AddEndpoint(Endpoints[779]); + builder.AddEndpoint(Endpoints[780]); + builder.AddEndpoint(Endpoints[781]); + builder.AddEndpoint(Endpoints[782]); + builder.AddEndpoint(Endpoints[783]); + builder.AddEndpoint(Endpoints[784]); + builder.AddEndpoint(Endpoints[785]); + builder.AddEndpoint(Endpoints[786]); + builder.AddEndpoint(Endpoints[787]); + builder.AddEndpoint(Endpoints[788]); + builder.AddEndpoint(Endpoints[789]); + builder.AddEndpoint(Endpoints[790]); + builder.AddEndpoint(Endpoints[791]); + builder.AddEndpoint(Endpoints[792]); + builder.AddEndpoint(Endpoints[793]); + builder.AddEndpoint(Endpoints[794]); + builder.AddEndpoint(Endpoints[795]); + builder.AddEndpoint(Endpoints[796]); + builder.AddEndpoint(Endpoints[797]); + builder.AddEndpoint(Endpoints[798]); + builder.AddEndpoint(Endpoints[799]); + builder.AddEndpoint(Endpoints[800]); + builder.AddEndpoint(Endpoints[801]); + builder.AddEndpoint(Endpoints[802]); + builder.AddEndpoint(Endpoints[803]); + builder.AddEndpoint(Endpoints[804]); + builder.AddEndpoint(Endpoints[805]); + builder.AddEndpoint(Endpoints[806]); + builder.AddEndpoint(Endpoints[807]); + builder.AddEndpoint(Endpoints[808]); + builder.AddEndpoint(Endpoints[809]); + builder.AddEndpoint(Endpoints[810]); + builder.AddEndpoint(Endpoints[811]); + builder.AddEndpoint(Endpoints[812]); + builder.AddEndpoint(Endpoints[813]); + builder.AddEndpoint(Endpoints[814]); + builder.AddEndpoint(Endpoints[815]); + builder.AddEndpoint(Endpoints[816]); + builder.AddEndpoint(Endpoints[817]); + builder.AddEndpoint(Endpoints[818]); + builder.AddEndpoint(Endpoints[819]); + builder.AddEndpoint(Endpoints[820]); + builder.AddEndpoint(Endpoints[821]); + builder.AddEndpoint(Endpoints[822]); + builder.AddEndpoint(Endpoints[823]); + builder.AddEndpoint(Endpoints[824]); + builder.AddEndpoint(Endpoints[825]); + builder.AddEndpoint(Endpoints[826]); + builder.AddEndpoint(Endpoints[827]); + builder.AddEndpoint(Endpoints[828]); + builder.AddEndpoint(Endpoints[829]); + builder.AddEndpoint(Endpoints[830]); + builder.AddEndpoint(Endpoints[831]); + builder.AddEndpoint(Endpoints[832]); + builder.AddEndpoint(Endpoints[833]); + builder.AddEndpoint(Endpoints[834]); + builder.AddEndpoint(Endpoints[835]); + builder.AddEndpoint(Endpoints[836]); + builder.AddEndpoint(Endpoints[837]); + builder.AddEndpoint(Endpoints[838]); + builder.AddEndpoint(Endpoints[839]); + builder.AddEndpoint(Endpoints[840]); + builder.AddEndpoint(Endpoints[841]); + builder.AddEndpoint(Endpoints[842]); + builder.AddEndpoint(Endpoints[843]); + builder.AddEndpoint(Endpoints[844]); + builder.AddEndpoint(Endpoints[845]); + builder.AddEndpoint(Endpoints[846]); + builder.AddEndpoint(Endpoints[847]); + builder.AddEndpoint(Endpoints[848]); + builder.AddEndpoint(Endpoints[849]); + builder.AddEndpoint(Endpoints[850]); + builder.AddEndpoint(Endpoints[851]); + builder.AddEndpoint(Endpoints[852]); + builder.AddEndpoint(Endpoints[853]); + builder.AddEndpoint(Endpoints[854]); + builder.AddEndpoint(Endpoints[855]); + builder.AddEndpoint(Endpoints[856]); + builder.AddEndpoint(Endpoints[857]); + builder.AddEndpoint(Endpoints[858]); + builder.AddEndpoint(Endpoints[859]); + builder.AddEndpoint(Endpoints[860]); + builder.AddEndpoint(Endpoints[861]); + builder.AddEndpoint(Endpoints[862]); + builder.AddEndpoint(Endpoints[863]); + builder.AddEndpoint(Endpoints[864]); + builder.AddEndpoint(Endpoints[865]); + builder.AddEndpoint(Endpoints[866]); + builder.AddEndpoint(Endpoints[867]); + builder.AddEndpoint(Endpoints[868]); + builder.AddEndpoint(Endpoints[869]); + builder.AddEndpoint(Endpoints[870]); + builder.AddEndpoint(Endpoints[871]); + builder.AddEndpoint(Endpoints[872]); + builder.AddEndpoint(Endpoints[873]); + builder.AddEndpoint(Endpoints[874]); + builder.AddEndpoint(Endpoints[875]); + builder.AddEndpoint(Endpoints[876]); + builder.AddEndpoint(Endpoints[877]); + builder.AddEndpoint(Endpoints[878]); + builder.AddEndpoint(Endpoints[879]); + builder.AddEndpoint(Endpoints[880]); + builder.AddEndpoint(Endpoints[881]); + builder.AddEndpoint(Endpoints[882]); + builder.AddEndpoint(Endpoints[883]); + builder.AddEndpoint(Endpoints[884]); + builder.AddEndpoint(Endpoints[885]); + builder.AddEndpoint(Endpoints[886]); + builder.AddEndpoint(Endpoints[887]); + builder.AddEndpoint(Endpoints[888]); + builder.AddEndpoint(Endpoints[889]); + builder.AddEndpoint(Endpoints[890]); + builder.AddEndpoint(Endpoints[891]); + builder.AddEndpoint(Endpoints[892]); + builder.AddEndpoint(Endpoints[893]); + builder.AddEndpoint(Endpoints[894]); + builder.AddEndpoint(Endpoints[895]); + builder.AddEndpoint(Endpoints[896]); + builder.AddEndpoint(Endpoints[897]); + builder.AddEndpoint(Endpoints[898]); + builder.AddEndpoint(Endpoints[899]); + builder.AddEndpoint(Endpoints[900]); + builder.AddEndpoint(Endpoints[901]); + builder.AddEndpoint(Endpoints[902]); + builder.AddEndpoint(Endpoints[903]); + builder.AddEndpoint(Endpoints[904]); + builder.AddEndpoint(Endpoints[905]); + builder.AddEndpoint(Endpoints[906]); + builder.AddEndpoint(Endpoints[907]); + builder.AddEndpoint(Endpoints[908]); + builder.AddEndpoint(Endpoints[909]); + builder.AddEndpoint(Endpoints[910]); + builder.AddEndpoint(Endpoints[911]); + builder.AddEndpoint(Endpoints[912]); + builder.AddEndpoint(Endpoints[913]); + builder.AddEndpoint(Endpoints[914]); + builder.AddEndpoint(Endpoints[915]); + builder.AddEndpoint(Endpoints[916]); + builder.AddEndpoint(Endpoints[917]); + builder.AddEndpoint(Endpoints[918]); + builder.AddEndpoint(Endpoints[919]); + builder.AddEndpoint(Endpoints[920]); + builder.AddEndpoint(Endpoints[921]); + builder.AddEndpoint(Endpoints[922]); + builder.AddEndpoint(Endpoints[923]); + builder.AddEndpoint(Endpoints[924]); + builder.AddEndpoint(Endpoints[925]); + builder.AddEndpoint(Endpoints[926]); + builder.AddEndpoint(Endpoints[927]); + builder.AddEndpoint(Endpoints[928]); + builder.AddEndpoint(Endpoints[929]); + builder.AddEndpoint(Endpoints[930]); + builder.AddEndpoint(Endpoints[931]); + builder.AddEndpoint(Endpoints[932]); + builder.AddEndpoint(Endpoints[933]); + builder.AddEndpoint(Endpoints[934]); + builder.AddEndpoint(Endpoints[935]); + builder.AddEndpoint(Endpoints[936]); + builder.AddEndpoint(Endpoints[937]); + builder.AddEndpoint(Endpoints[938]); + builder.AddEndpoint(Endpoints[939]); + builder.AddEndpoint(Endpoints[940]); + builder.AddEndpoint(Endpoints[941]); + builder.AddEndpoint(Endpoints[942]); + builder.AddEndpoint(Endpoints[943]); + builder.AddEndpoint(Endpoints[944]); + builder.AddEndpoint(Endpoints[945]); + builder.AddEndpoint(Endpoints[946]); + builder.AddEndpoint(Endpoints[947]); + builder.AddEndpoint(Endpoints[948]); + builder.AddEndpoint(Endpoints[949]); + builder.AddEndpoint(Endpoints[950]); + builder.AddEndpoint(Endpoints[951]); + builder.AddEndpoint(Endpoints[952]); + builder.AddEndpoint(Endpoints[953]); + builder.AddEndpoint(Endpoints[954]); + builder.AddEndpoint(Endpoints[955]); + builder.AddEndpoint(Endpoints[956]); + builder.AddEndpoint(Endpoints[957]); + builder.AddEndpoint(Endpoints[958]); + builder.AddEndpoint(Endpoints[959]); + builder.AddEndpoint(Endpoints[960]); + builder.AddEndpoint(Endpoints[961]); + builder.AddEndpoint(Endpoints[962]); + builder.AddEndpoint(Endpoints[963]); + builder.AddEndpoint(Endpoints[964]); + builder.AddEndpoint(Endpoints[965]); + builder.AddEndpoint(Endpoints[966]); + builder.AddEndpoint(Endpoints[967]); + builder.AddEndpoint(Endpoints[968]); + builder.AddEndpoint(Endpoints[969]); + builder.AddEndpoint(Endpoints[970]); + builder.AddEndpoint(Endpoints[971]); + builder.AddEndpoint(Endpoints[972]); + builder.AddEndpoint(Endpoints[973]); + builder.AddEndpoint(Endpoints[974]); + builder.AddEndpoint(Endpoints[975]); + builder.AddEndpoint(Endpoints[976]); + builder.AddEndpoint(Endpoints[977]); + builder.AddEndpoint(Endpoints[978]); + builder.AddEndpoint(Endpoints[979]); + builder.AddEndpoint(Endpoints[980]); + builder.AddEndpoint(Endpoints[981]); + builder.AddEndpoint(Endpoints[982]); + builder.AddEndpoint(Endpoints[983]); + builder.AddEndpoint(Endpoints[984]); + builder.AddEndpoint(Endpoints[985]); + builder.AddEndpoint(Endpoints[986]); + builder.AddEndpoint(Endpoints[987]); + builder.AddEndpoint(Endpoints[988]); + builder.AddEndpoint(Endpoints[989]); + builder.AddEndpoint(Endpoints[990]); + builder.AddEndpoint(Endpoints[991]); + builder.AddEndpoint(Endpoints[992]); + builder.AddEndpoint(Endpoints[993]); + builder.AddEndpoint(Endpoints[994]); + builder.AddEndpoint(Endpoints[995]); + builder.AddEndpoint(Endpoints[996]); + builder.AddEndpoint(Endpoints[997]); + builder.AddEndpoint(Endpoints[998]); + builder.AddEndpoint(Endpoints[999]); + builder.AddEndpoint(Endpoints[1000]); + builder.AddEndpoint(Endpoints[1001]); + builder.AddEndpoint(Endpoints[1002]); + builder.AddEndpoint(Endpoints[1003]); + builder.AddEndpoint(Endpoints[1004]); + builder.AddEndpoint(Endpoints[1005]); + builder.AddEndpoint(Endpoints[1006]); + builder.AddEndpoint(Endpoints[1007]); + builder.AddEndpoint(Endpoints[1008]); + builder.AddEndpoint(Endpoints[1009]); + builder.AddEndpoint(Endpoints[1010]); + builder.AddEndpoint(Endpoints[1011]); + builder.AddEndpoint(Endpoints[1012]); + builder.AddEndpoint(Endpoints[1013]); + builder.AddEndpoint(Endpoints[1014]); + builder.AddEndpoint(Endpoints[1015]); + builder.AddEndpoint(Endpoints[1016]); + builder.AddEndpoint(Endpoints[1017]); + builder.AddEndpoint(Endpoints[1018]); + builder.AddEndpoint(Endpoints[1019]); + builder.AddEndpoint(Endpoints[1020]); + builder.AddEndpoint(Endpoints[1021]); + builder.AddEndpoint(Endpoints[1022]); + builder.AddEndpoint(Endpoints[1023]); + builder.AddEndpoint(Endpoints[1024]); + builder.AddEndpoint(Endpoints[1025]); + builder.AddEndpoint(Endpoints[1026]); + builder.AddEndpoint(Endpoints[1027]); + builder.AddEndpoint(Endpoints[1028]); + builder.AddEndpoint(Endpoints[1029]); + builder.AddEndpoint(Endpoints[1030]); + builder.AddEndpoint(Endpoints[1031]); + builder.AddEndpoint(Endpoints[1032]); + builder.AddEndpoint(Endpoints[1033]); + builder.AddEndpoint(Endpoints[1034]); + builder.AddEndpoint(Endpoints[1035]); + builder.AddEndpoint(Endpoints[1036]); + builder.AddEndpoint(Endpoints[1037]); + builder.AddEndpoint(Endpoints[1038]); + builder.AddEndpoint(Endpoints[1039]); + builder.AddEndpoint(Endpoints[1040]); + builder.AddEndpoint(Endpoints[1041]); + builder.AddEndpoint(Endpoints[1042]); + builder.AddEndpoint(Endpoints[1043]); + builder.AddEndpoint(Endpoints[1044]); + builder.AddEndpoint(Endpoints[1045]); + builder.AddEndpoint(Endpoints[1046]); + builder.AddEndpoint(Endpoints[1047]); + builder.AddEndpoint(Endpoints[1048]); + builder.AddEndpoint(Endpoints[1049]); + builder.AddEndpoint(Endpoints[1050]); + builder.AddEndpoint(Endpoints[1051]); + builder.AddEndpoint(Endpoints[1052]); + builder.AddEndpoint(Endpoints[1053]); + builder.AddEndpoint(Endpoints[1054]); + builder.AddEndpoint(Endpoints[1055]); + builder.AddEndpoint(Endpoints[1056]); + builder.AddEndpoint(Endpoints[1057]); + builder.AddEndpoint(Endpoints[1058]); + builder.AddEndpoint(Endpoints[1059]); + builder.AddEndpoint(Endpoints[1060]); + builder.AddEndpoint(Endpoints[1061]); + builder.AddEndpoint(Endpoints[1062]); + builder.AddEndpoint(Endpoints[1063]); + builder.AddEndpoint(Endpoints[1064]); + builder.AddEndpoint(Endpoints[1065]); + builder.AddEndpoint(Endpoints[1066]); + builder.AddEndpoint(Endpoints[1067]); + builder.AddEndpoint(Endpoints[1068]); + builder.AddEndpoint(Endpoints[1069]); + builder.AddEndpoint(Endpoints[1070]); + builder.AddEndpoint(Endpoints[1071]); + builder.AddEndpoint(Endpoints[1072]); + builder.AddEndpoint(Endpoints[1073]); + builder.AddEndpoint(Endpoints[1074]); + builder.AddEndpoint(Endpoints[1075]); + builder.AddEndpoint(Endpoints[1076]); + builder.AddEndpoint(Endpoints[1077]); + builder.AddEndpoint(Endpoints[1078]); + builder.AddEndpoint(Endpoints[1079]); + builder.AddEndpoint(Endpoints[1080]); + builder.AddEndpoint(Endpoints[1081]); + builder.AddEndpoint(Endpoints[1082]); + builder.AddEndpoint(Endpoints[1083]); + builder.AddEndpoint(Endpoints[1084]); + builder.AddEndpoint(Endpoints[1085]); + builder.AddEndpoint(Endpoints[1086]); + builder.AddEndpoint(Endpoints[1087]); + builder.AddEndpoint(Endpoints[1088]); + builder.AddEndpoint(Endpoints[1089]); + builder.AddEndpoint(Endpoints[1090]); + builder.AddEndpoint(Endpoints[1091]); + builder.AddEndpoint(Endpoints[1092]); + builder.AddEndpoint(Endpoints[1093]); + builder.AddEndpoint(Endpoints[1094]); + builder.AddEndpoint(Endpoints[1095]); + builder.AddEndpoint(Endpoints[1096]); + builder.AddEndpoint(Endpoints[1097]); + builder.AddEndpoint(Endpoints[1098]); + builder.AddEndpoint(Endpoints[1099]); + builder.AddEndpoint(Endpoints[1100]); + builder.AddEndpoint(Endpoints[1101]); + builder.AddEndpoint(Endpoints[1102]); + builder.AddEndpoint(Endpoints[1103]); + builder.AddEndpoint(Endpoints[1104]); + builder.AddEndpoint(Endpoints[1105]); + builder.AddEndpoint(Endpoints[1106]); + builder.AddEndpoint(Endpoints[1107]); + builder.AddEndpoint(Endpoints[1108]); + builder.AddEndpoint(Endpoints[1109]); + builder.AddEndpoint(Endpoints[1110]); + builder.AddEndpoint(Endpoints[1111]); + builder.AddEndpoint(Endpoints[1112]); + builder.AddEndpoint(Endpoints[1113]); + builder.AddEndpoint(Endpoints[1114]); + builder.AddEndpoint(Endpoints[1115]); + builder.AddEndpoint(Endpoints[1116]); + builder.AddEndpoint(Endpoints[1117]); + builder.AddEndpoint(Endpoints[1118]); + builder.AddEndpoint(Endpoints[1119]); + builder.AddEndpoint(Endpoints[1120]); + builder.AddEndpoint(Endpoints[1121]); + builder.AddEndpoint(Endpoints[1122]); + builder.AddEndpoint(Endpoints[1123]); + builder.AddEndpoint(Endpoints[1124]); + builder.AddEndpoint(Endpoints[1125]); + builder.AddEndpoint(Endpoints[1126]); + builder.AddEndpoint(Endpoints[1127]); + builder.AddEndpoint(Endpoints[1128]); + builder.AddEndpoint(Endpoints[1129]); + builder.AddEndpoint(Endpoints[1130]); + builder.AddEndpoint(Endpoints[1131]); + builder.AddEndpoint(Endpoints[1132]); + builder.AddEndpoint(Endpoints[1133]); + builder.AddEndpoint(Endpoints[1134]); + builder.AddEndpoint(Endpoints[1135]); + builder.AddEndpoint(Endpoints[1136]); + builder.AddEndpoint(Endpoints[1137]); + builder.AddEndpoint(Endpoints[1138]); + builder.AddEndpoint(Endpoints[1139]); + builder.AddEndpoint(Endpoints[1140]); + builder.AddEndpoint(Endpoints[1141]); + builder.AddEndpoint(Endpoints[1142]); + builder.AddEndpoint(Endpoints[1143]); + builder.AddEndpoint(Endpoints[1144]); + builder.AddEndpoint(Endpoints[1145]); + builder.AddEndpoint(Endpoints[1146]); + builder.AddEndpoint(Endpoints[1147]); + builder.AddEndpoint(Endpoints[1148]); + builder.AddEndpoint(Endpoints[1149]); + builder.AddEndpoint(Endpoints[1150]); + builder.AddEndpoint(Endpoints[1151]); + builder.AddEndpoint(Endpoints[1152]); + builder.AddEndpoint(Endpoints[1153]); + builder.AddEndpoint(Endpoints[1154]); + builder.AddEndpoint(Endpoints[1155]); + builder.AddEndpoint(Endpoints[1156]); + builder.AddEndpoint(Endpoints[1157]); + builder.AddEndpoint(Endpoints[1158]); + builder.AddEndpoint(Endpoints[1159]); + builder.AddEndpoint(Endpoints[1160]); + builder.AddEndpoint(Endpoints[1161]); + builder.AddEndpoint(Endpoints[1162]); + builder.AddEndpoint(Endpoints[1163]); + builder.AddEndpoint(Endpoints[1164]); + builder.AddEndpoint(Endpoints[1165]); + builder.AddEndpoint(Endpoints[1166]); + builder.AddEndpoint(Endpoints[1167]); + builder.AddEndpoint(Endpoints[1168]); + builder.AddEndpoint(Endpoints[1169]); + builder.AddEndpoint(Endpoints[1170]); + builder.AddEndpoint(Endpoints[1171]); + builder.AddEndpoint(Endpoints[1172]); + builder.AddEndpoint(Endpoints[1173]); + builder.AddEndpoint(Endpoints[1174]); + builder.AddEndpoint(Endpoints[1175]); + builder.AddEndpoint(Endpoints[1176]); + builder.AddEndpoint(Endpoints[1177]); + builder.AddEndpoint(Endpoints[1178]); + builder.AddEndpoint(Endpoints[1179]); + builder.AddEndpoint(Endpoints[1180]); + builder.AddEndpoint(Endpoints[1181]); + builder.AddEndpoint(Endpoints[1182]); + builder.AddEndpoint(Endpoints[1183]); + builder.AddEndpoint(Endpoints[1184]); + builder.AddEndpoint(Endpoints[1185]); + builder.AddEndpoint(Endpoints[1186]); + builder.AddEndpoint(Endpoints[1187]); + builder.AddEndpoint(Endpoints[1188]); + builder.AddEndpoint(Endpoints[1189]); + builder.AddEndpoint(Endpoints[1190]); + builder.AddEndpoint(Endpoints[1191]); + builder.AddEndpoint(Endpoints[1192]); + builder.AddEndpoint(Endpoints[1193]); + builder.AddEndpoint(Endpoints[1194]); + builder.AddEndpoint(Endpoints[1195]); + builder.AddEndpoint(Endpoints[1196]); + builder.AddEndpoint(Endpoints[1197]); + builder.AddEndpoint(Endpoints[1198]); + builder.AddEndpoint(Endpoints[1199]); + builder.AddEndpoint(Endpoints[1200]); + builder.AddEndpoint(Endpoints[1201]); + builder.AddEndpoint(Endpoints[1202]); + builder.AddEndpoint(Endpoints[1203]); + builder.AddEndpoint(Endpoints[1204]); + builder.AddEndpoint(Endpoints[1205]); + builder.AddEndpoint(Endpoints[1206]); + builder.AddEndpoint(Endpoints[1207]); + builder.AddEndpoint(Endpoints[1208]); + builder.AddEndpoint(Endpoints[1209]); + builder.AddEndpoint(Endpoints[1210]); + builder.AddEndpoint(Endpoints[1211]); + builder.AddEndpoint(Endpoints[1212]); + builder.AddEndpoint(Endpoints[1213]); + builder.AddEndpoint(Endpoints[1214]); + builder.AddEndpoint(Endpoints[1215]); + builder.AddEndpoint(Endpoints[1216]); + builder.AddEndpoint(Endpoints[1217]); + builder.AddEndpoint(Endpoints[1218]); + builder.AddEndpoint(Endpoints[1219]); + builder.AddEndpoint(Endpoints[1220]); + builder.AddEndpoint(Endpoints[1221]); + builder.AddEndpoint(Endpoints[1222]); + builder.AddEndpoint(Endpoints[1223]); + builder.AddEndpoint(Endpoints[1224]); + builder.AddEndpoint(Endpoints[1225]); + builder.AddEndpoint(Endpoints[1226]); + builder.AddEndpoint(Endpoints[1227]); + builder.AddEndpoint(Endpoints[1228]); + builder.AddEndpoint(Endpoints[1229]); + builder.AddEndpoint(Endpoints[1230]); + builder.AddEndpoint(Endpoints[1231]); + builder.AddEndpoint(Endpoints[1232]); + builder.AddEndpoint(Endpoints[1233]); + builder.AddEndpoint(Endpoints[1234]); + builder.AddEndpoint(Endpoints[1235]); + builder.AddEndpoint(Endpoints[1236]); + builder.AddEndpoint(Endpoints[1237]); + builder.AddEndpoint(Endpoints[1238]); + builder.AddEndpoint(Endpoints[1239]); + builder.AddEndpoint(Endpoints[1240]); + builder.AddEndpoint(Endpoints[1241]); + builder.AddEndpoint(Endpoints[1242]); + builder.AddEndpoint(Endpoints[1243]); + builder.AddEndpoint(Endpoints[1244]); + builder.AddEndpoint(Endpoints[1245]); + builder.AddEndpoint(Endpoints[1246]); + builder.AddEndpoint(Endpoints[1247]); + builder.AddEndpoint(Endpoints[1248]); + builder.AddEndpoint(Endpoints[1249]); + builder.AddEndpoint(Endpoints[1250]); + builder.AddEndpoint(Endpoints[1251]); + builder.AddEndpoint(Endpoints[1252]); + builder.AddEndpoint(Endpoints[1253]); + builder.AddEndpoint(Endpoints[1254]); + builder.AddEndpoint(Endpoints[1255]); + builder.AddEndpoint(Endpoints[1256]); + builder.AddEndpoint(Endpoints[1257]); + builder.AddEndpoint(Endpoints[1258]); + builder.AddEndpoint(Endpoints[1259]); + builder.AddEndpoint(Endpoints[1260]); + builder.AddEndpoint(Endpoints[1261]); + builder.AddEndpoint(Endpoints[1262]); + builder.AddEndpoint(Endpoints[1263]); + builder.AddEndpoint(Endpoints[1264]); + builder.AddEndpoint(Endpoints[1265]); + builder.AddEndpoint(Endpoints[1266]); + builder.AddEndpoint(Endpoints[1267]); + builder.AddEndpoint(Endpoints[1268]); + builder.AddEndpoint(Endpoints[1269]); + builder.AddEndpoint(Endpoints[1270]); + builder.AddEndpoint(Endpoints[1271]); + builder.AddEndpoint(Endpoints[1272]); + builder.AddEndpoint(Endpoints[1273]); + builder.AddEndpoint(Endpoints[1274]); + builder.AddEndpoint(Endpoints[1275]); + builder.AddEndpoint(Endpoints[1276]); + builder.AddEndpoint(Endpoints[1277]); + builder.AddEndpoint(Endpoints[1278]); + builder.AddEndpoint(Endpoints[1279]); + builder.AddEndpoint(Endpoints[1280]); + builder.AddEndpoint(Endpoints[1281]); + builder.AddEndpoint(Endpoints[1282]); + builder.AddEndpoint(Endpoints[1283]); + builder.AddEndpoint(Endpoints[1284]); + builder.AddEndpoint(Endpoints[1285]); + builder.AddEndpoint(Endpoints[1286]); + builder.AddEndpoint(Endpoints[1287]); + builder.AddEndpoint(Endpoints[1288]); + builder.AddEndpoint(Endpoints[1289]); + builder.AddEndpoint(Endpoints[1290]); + builder.AddEndpoint(Endpoints[1291]); + builder.AddEndpoint(Endpoints[1292]); + builder.AddEndpoint(Endpoints[1293]); + builder.AddEndpoint(Endpoints[1294]); + builder.AddEndpoint(Endpoints[1295]); + builder.AddEndpoint(Endpoints[1296]); + builder.AddEndpoint(Endpoints[1297]); + builder.AddEndpoint(Endpoints[1298]); + builder.AddEndpoint(Endpoints[1299]); + builder.AddEndpoint(Endpoints[1300]); + builder.AddEndpoint(Endpoints[1301]); + builder.AddEndpoint(Endpoints[1302]); + builder.AddEndpoint(Endpoints[1303]); + builder.AddEndpoint(Endpoints[1304]); + builder.AddEndpoint(Endpoints[1305]); + builder.AddEndpoint(Endpoints[1306]); + builder.AddEndpoint(Endpoints[1307]); + builder.AddEndpoint(Endpoints[1308]); + builder.AddEndpoint(Endpoints[1309]); + builder.AddEndpoint(Endpoints[1310]); + builder.AddEndpoint(Endpoints[1311]); + builder.AddEndpoint(Endpoints[1312]); + builder.AddEndpoint(Endpoints[1313]); + builder.AddEndpoint(Endpoints[1314]); + builder.AddEndpoint(Endpoints[1315]); + builder.AddEndpoint(Endpoints[1316]); + builder.AddEndpoint(Endpoints[1317]); + builder.AddEndpoint(Endpoints[1318]); + builder.AddEndpoint(Endpoints[1319]); + builder.AddEndpoint(Endpoints[1320]); + builder.AddEndpoint(Endpoints[1321]); + builder.AddEndpoint(Endpoints[1322]); + builder.AddEndpoint(Endpoints[1323]); + builder.AddEndpoint(Endpoints[1324]); + builder.AddEndpoint(Endpoints[1325]); + builder.AddEndpoint(Endpoints[1326]); + builder.AddEndpoint(Endpoints[1327]); + builder.AddEndpoint(Endpoints[1328]); + builder.AddEndpoint(Endpoints[1329]); + builder.AddEndpoint(Endpoints[1330]); + builder.AddEndpoint(Endpoints[1331]); + builder.AddEndpoint(Endpoints[1332]); + builder.AddEndpoint(Endpoints[1333]); + builder.AddEndpoint(Endpoints[1334]); + builder.AddEndpoint(Endpoints[1335]); + builder.AddEndpoint(Endpoints[1336]); + builder.AddEndpoint(Endpoints[1337]); + builder.AddEndpoint(Endpoints[1338]); + builder.AddEndpoint(Endpoints[1339]); + builder.AddEndpoint(Endpoints[1340]); + builder.AddEndpoint(Endpoints[1341]); + builder.AddEndpoint(Endpoints[1342]); + builder.AddEndpoint(Endpoints[1343]); + builder.AddEndpoint(Endpoints[1344]); + builder.AddEndpoint(Endpoints[1345]); + builder.AddEndpoint(Endpoints[1346]); + builder.AddEndpoint(Endpoints[1347]); + builder.AddEndpoint(Endpoints[1348]); + builder.AddEndpoint(Endpoints[1349]); + builder.AddEndpoint(Endpoints[1350]); + builder.AddEndpoint(Endpoints[1351]); + builder.AddEndpoint(Endpoints[1352]); + builder.AddEndpoint(Endpoints[1353]); + builder.AddEndpoint(Endpoints[1354]); + builder.AddEndpoint(Endpoints[1355]); + builder.AddEndpoint(Endpoints[1356]); + builder.AddEndpoint(Endpoints[1357]); + builder.AddEndpoint(Endpoints[1358]); + builder.AddEndpoint(Endpoints[1359]); + builder.AddEndpoint(Endpoints[1360]); + builder.AddEndpoint(Endpoints[1361]); + builder.AddEndpoint(Endpoints[1362]); + builder.AddEndpoint(Endpoints[1363]); + builder.AddEndpoint(Endpoints[1364]); + builder.AddEndpoint(Endpoints[1365]); + builder.AddEndpoint(Endpoints[1366]); + builder.AddEndpoint(Endpoints[1367]); + builder.AddEndpoint(Endpoints[1368]); + builder.AddEndpoint(Endpoints[1369]); + builder.AddEndpoint(Endpoints[1370]); + builder.AddEndpoint(Endpoints[1371]); + builder.AddEndpoint(Endpoints[1372]); + builder.AddEndpoint(Endpoints[1373]); + builder.AddEndpoint(Endpoints[1374]); + builder.AddEndpoint(Endpoints[1375]); + builder.AddEndpoint(Endpoints[1376]); + builder.AddEndpoint(Endpoints[1377]); + builder.AddEndpoint(Endpoints[1378]); + builder.AddEndpoint(Endpoints[1379]); + builder.AddEndpoint(Endpoints[1380]); + builder.AddEndpoint(Endpoints[1381]); + builder.AddEndpoint(Endpoints[1382]); + builder.AddEndpoint(Endpoints[1383]); + builder.AddEndpoint(Endpoints[1384]); + builder.AddEndpoint(Endpoints[1385]); + builder.AddEndpoint(Endpoints[1386]); + builder.AddEndpoint(Endpoints[1387]); + builder.AddEndpoint(Endpoints[1388]); + builder.AddEndpoint(Endpoints[1389]); + builder.AddEndpoint(Endpoints[1390]); + builder.AddEndpoint(Endpoints[1391]); + builder.AddEndpoint(Endpoints[1392]); + builder.AddEndpoint(Endpoints[1393]); + builder.AddEndpoint(Endpoints[1394]); + builder.AddEndpoint(Endpoints[1395]); + builder.AddEndpoint(Endpoints[1396]); + builder.AddEndpoint(Endpoints[1397]); + builder.AddEndpoint(Endpoints[1398]); + builder.AddEndpoint(Endpoints[1399]); + builder.AddEndpoint(Endpoints[1400]); + builder.AddEndpoint(Endpoints[1401]); + builder.AddEndpoint(Endpoints[1402]); + builder.AddEndpoint(Endpoints[1403]); + builder.AddEndpoint(Endpoints[1404]); + builder.AddEndpoint(Endpoints[1405]); + builder.AddEndpoint(Endpoints[1406]); + builder.AddEndpoint(Endpoints[1407]); + builder.AddEndpoint(Endpoints[1408]); + builder.AddEndpoint(Endpoints[1409]); + builder.AddEndpoint(Endpoints[1410]); + builder.AddEndpoint(Endpoints[1411]); + builder.AddEndpoint(Endpoints[1412]); + builder.AddEndpoint(Endpoints[1413]); + builder.AddEndpoint(Endpoints[1414]); + builder.AddEndpoint(Endpoints[1415]); + builder.AddEndpoint(Endpoints[1416]); + builder.AddEndpoint(Endpoints[1417]); + builder.AddEndpoint(Endpoints[1418]); + builder.AddEndpoint(Endpoints[1419]); + builder.AddEndpoint(Endpoints[1420]); + builder.AddEndpoint(Endpoints[1421]); + builder.AddEndpoint(Endpoints[1422]); + builder.AddEndpoint(Endpoints[1423]); + builder.AddEndpoint(Endpoints[1424]); + builder.AddEndpoint(Endpoints[1425]); + builder.AddEndpoint(Endpoints[1426]); + builder.AddEndpoint(Endpoints[1427]); + builder.AddEndpoint(Endpoints[1428]); + builder.AddEndpoint(Endpoints[1429]); + builder.AddEndpoint(Endpoints[1430]); + builder.AddEndpoint(Endpoints[1431]); + builder.AddEndpoint(Endpoints[1432]); + builder.AddEndpoint(Endpoints[1433]); + builder.AddEndpoint(Endpoints[1434]); + builder.AddEndpoint(Endpoints[1435]); + builder.AddEndpoint(Endpoints[1436]); + builder.AddEndpoint(Endpoints[1437]); + builder.AddEndpoint(Endpoints[1438]); + builder.AddEndpoint(Endpoints[1439]); + builder.AddEndpoint(Endpoints[1440]); + builder.AddEndpoint(Endpoints[1441]); + builder.AddEndpoint(Endpoints[1442]); + builder.AddEndpoint(Endpoints[1443]); + builder.AddEndpoint(Endpoints[1444]); + builder.AddEndpoint(Endpoints[1445]); + builder.AddEndpoint(Endpoints[1446]); + builder.AddEndpoint(Endpoints[1447]); + builder.AddEndpoint(Endpoints[1448]); + builder.AddEndpoint(Endpoints[1449]); + builder.AddEndpoint(Endpoints[1450]); + builder.AddEndpoint(Endpoints[1451]); + builder.AddEndpoint(Endpoints[1452]); + builder.AddEndpoint(Endpoints[1453]); + builder.AddEndpoint(Endpoints[1454]); + builder.AddEndpoint(Endpoints[1455]); + builder.AddEndpoint(Endpoints[1456]); + builder.AddEndpoint(Endpoints[1457]); + builder.AddEndpoint(Endpoints[1458]); + builder.AddEndpoint(Endpoints[1459]); + builder.AddEndpoint(Endpoints[1460]); + builder.AddEndpoint(Endpoints[1461]); + builder.AddEndpoint(Endpoints[1462]); + builder.AddEndpoint(Endpoints[1463]); + builder.AddEndpoint(Endpoints[1464]); + builder.AddEndpoint(Endpoints[1465]); + builder.AddEndpoint(Endpoints[1466]); + builder.AddEndpoint(Endpoints[1467]); + builder.AddEndpoint(Endpoints[1468]); + builder.AddEndpoint(Endpoints[1469]); + builder.AddEndpoint(Endpoints[1470]); + builder.AddEndpoint(Endpoints[1471]); + builder.AddEndpoint(Endpoints[1472]); + builder.AddEndpoint(Endpoints[1473]); + builder.AddEndpoint(Endpoints[1474]); + builder.AddEndpoint(Endpoints[1475]); + builder.AddEndpoint(Endpoints[1476]); + builder.AddEndpoint(Endpoints[1477]); + builder.AddEndpoint(Endpoints[1478]); + builder.AddEndpoint(Endpoints[1479]); + builder.AddEndpoint(Endpoints[1480]); + builder.AddEndpoint(Endpoints[1481]); + builder.AddEndpoint(Endpoints[1482]); + builder.AddEndpoint(Endpoints[1483]); + builder.AddEndpoint(Endpoints[1484]); + builder.AddEndpoint(Endpoints[1485]); + builder.AddEndpoint(Endpoints[1486]); + builder.AddEndpoint(Endpoints[1487]); + builder.AddEndpoint(Endpoints[1488]); + builder.AddEndpoint(Endpoints[1489]); + builder.AddEndpoint(Endpoints[1490]); + builder.AddEndpoint(Endpoints[1491]); + builder.AddEndpoint(Endpoints[1492]); + builder.AddEndpoint(Endpoints[1493]); + builder.AddEndpoint(Endpoints[1494]); + builder.AddEndpoint(Endpoints[1495]); + builder.AddEndpoint(Endpoints[1496]); + builder.AddEndpoint(Endpoints[1497]); + builder.AddEndpoint(Endpoints[1498]); + builder.AddEndpoint(Endpoints[1499]); + builder.AddEndpoint(Endpoints[1500]); + builder.AddEndpoint(Endpoints[1501]); + builder.AddEndpoint(Endpoints[1502]); + builder.AddEndpoint(Endpoints[1503]); + builder.AddEndpoint(Endpoints[1504]); + builder.AddEndpoint(Endpoints[1505]); + builder.AddEndpoint(Endpoints[1506]); + builder.AddEndpoint(Endpoints[1507]); + builder.AddEndpoint(Endpoints[1508]); + builder.AddEndpoint(Endpoints[1509]); + builder.AddEndpoint(Endpoints[1510]); + builder.AddEndpoint(Endpoints[1511]); + builder.AddEndpoint(Endpoints[1512]); + builder.AddEndpoint(Endpoints[1513]); + builder.AddEndpoint(Endpoints[1514]); + builder.AddEndpoint(Endpoints[1515]); + builder.AddEndpoint(Endpoints[1516]); + builder.AddEndpoint(Endpoints[1517]); + builder.AddEndpoint(Endpoints[1518]); + builder.AddEndpoint(Endpoints[1519]); + builder.AddEndpoint(Endpoints[1520]); + builder.AddEndpoint(Endpoints[1521]); + builder.AddEndpoint(Endpoints[1522]); + builder.AddEndpoint(Endpoints[1523]); + builder.AddEndpoint(Endpoints[1524]); + builder.AddEndpoint(Endpoints[1525]); + builder.AddEndpoint(Endpoints[1526]); + builder.AddEndpoint(Endpoints[1527]); + builder.AddEndpoint(Endpoints[1528]); + builder.AddEndpoint(Endpoints[1529]); + builder.AddEndpoint(Endpoints[1530]); + builder.AddEndpoint(Endpoints[1531]); + builder.AddEndpoint(Endpoints[1532]); + builder.AddEndpoint(Endpoints[1533]); + builder.AddEndpoint(Endpoints[1534]); + builder.AddEndpoint(Endpoints[1535]); + builder.AddEndpoint(Endpoints[1536]); + builder.AddEndpoint(Endpoints[1537]); + builder.AddEndpoint(Endpoints[1538]); + builder.AddEndpoint(Endpoints[1539]); + builder.AddEndpoint(Endpoints[1540]); + builder.AddEndpoint(Endpoints[1541]); + builder.AddEndpoint(Endpoints[1542]); + builder.AddEndpoint(Endpoints[1543]); + builder.AddEndpoint(Endpoints[1544]); + builder.AddEndpoint(Endpoints[1545]); + builder.AddEndpoint(Endpoints[1546]); + builder.AddEndpoint(Endpoints[1547]); + builder.AddEndpoint(Endpoints[1548]); + builder.AddEndpoint(Endpoints[1549]); + builder.AddEndpoint(Endpoints[1550]); + builder.AddEndpoint(Endpoints[1551]); + builder.AddEndpoint(Endpoints[1552]); + builder.AddEndpoint(Endpoints[1553]); + builder.AddEndpoint(Endpoints[1554]); + builder.AddEndpoint(Endpoints[1555]); + builder.AddEndpoint(Endpoints[1556]); + builder.AddEndpoint(Endpoints[1557]); + builder.AddEndpoint(Endpoints[1558]); + builder.AddEndpoint(Endpoints[1559]); + builder.AddEndpoint(Endpoints[1560]); + builder.AddEndpoint(Endpoints[1561]); + builder.AddEndpoint(Endpoints[1562]); + builder.AddEndpoint(Endpoints[1563]); + builder.AddEndpoint(Endpoints[1564]); + builder.AddEndpoint(Endpoints[1565]); + builder.AddEndpoint(Endpoints[1566]); + builder.AddEndpoint(Endpoints[1567]); + builder.AddEndpoint(Endpoints[1568]); + builder.AddEndpoint(Endpoints[1569]); + builder.AddEndpoint(Endpoints[1570]); + builder.AddEndpoint(Endpoints[1571]); + builder.AddEndpoint(Endpoints[1572]); + builder.AddEndpoint(Endpoints[1573]); + builder.AddEndpoint(Endpoints[1574]); + builder.AddEndpoint(Endpoints[1575]); + builder.AddEndpoint(Endpoints[1576]); + builder.AddEndpoint(Endpoints[1577]); + builder.AddEndpoint(Endpoints[1578]); + builder.AddEndpoint(Endpoints[1579]); + builder.AddEndpoint(Endpoints[1580]); + builder.AddEndpoint(Endpoints[1581]); + builder.AddEndpoint(Endpoints[1582]); + builder.AddEndpoint(Endpoints[1583]); + builder.AddEndpoint(Endpoints[1584]); + builder.AddEndpoint(Endpoints[1585]); + builder.AddEndpoint(Endpoints[1586]); + builder.AddEndpoint(Endpoints[1587]); + builder.AddEndpoint(Endpoints[1588]); + builder.AddEndpoint(Endpoints[1589]); + builder.AddEndpoint(Endpoints[1590]); + builder.AddEndpoint(Endpoints[1591]); + builder.AddEndpoint(Endpoints[1592]); + builder.AddEndpoint(Endpoints[1593]); + builder.AddEndpoint(Endpoints[1594]); + builder.AddEndpoint(Endpoints[1595]); + builder.AddEndpoint(Endpoints[1596]); + builder.AddEndpoint(Endpoints[1597]); + builder.AddEndpoint(Endpoints[1598]); + builder.AddEndpoint(Endpoints[1599]); + builder.AddEndpoint(Endpoints[1600]); + builder.AddEndpoint(Endpoints[1601]); + builder.AddEndpoint(Endpoints[1602]); + builder.AddEndpoint(Endpoints[1603]); + builder.AddEndpoint(Endpoints[1604]); + builder.AddEndpoint(Endpoints[1605]); + builder.AddEndpoint(Endpoints[1606]); + builder.AddEndpoint(Endpoints[1607]); + builder.AddEndpoint(Endpoints[1608]); + builder.AddEndpoint(Endpoints[1609]); + builder.AddEndpoint(Endpoints[1610]); + builder.AddEndpoint(Endpoints[1611]); + builder.AddEndpoint(Endpoints[1612]); + builder.AddEndpoint(Endpoints[1613]); + builder.AddEndpoint(Endpoints[1614]); + builder.AddEndpoint(Endpoints[1615]); + builder.AddEndpoint(Endpoints[1616]); + builder.AddEndpoint(Endpoints[1617]); + builder.AddEndpoint(Endpoints[1618]); + builder.AddEndpoint(Endpoints[1619]); + builder.AddEndpoint(Endpoints[1620]); + builder.AddEndpoint(Endpoints[1621]); + builder.AddEndpoint(Endpoints[1622]); + builder.AddEndpoint(Endpoints[1623]); + builder.AddEndpoint(Endpoints[1624]); + builder.AddEndpoint(Endpoints[1625]); + builder.AddEndpoint(Endpoints[1626]); + builder.AddEndpoint(Endpoints[1627]); + builder.AddEndpoint(Endpoints[1628]); + builder.AddEndpoint(Endpoints[1629]); + builder.AddEndpoint(Endpoints[1630]); + builder.AddEndpoint(Endpoints[1631]); + builder.AddEndpoint(Endpoints[1632]); + builder.AddEndpoint(Endpoints[1633]); + builder.AddEndpoint(Endpoints[1634]); + builder.AddEndpoint(Endpoints[1635]); + builder.AddEndpoint(Endpoints[1636]); + builder.AddEndpoint(Endpoints[1637]); + builder.AddEndpoint(Endpoints[1638]); + builder.AddEndpoint(Endpoints[1639]); + builder.AddEndpoint(Endpoints[1640]); + builder.AddEndpoint(Endpoints[1641]); + builder.AddEndpoint(Endpoints[1642]); + builder.AddEndpoint(Endpoints[1643]); + builder.AddEndpoint(Endpoints[1644]); + builder.AddEndpoint(Endpoints[1645]); + builder.AddEndpoint(Endpoints[1646]); + builder.AddEndpoint(Endpoints[1647]); + builder.AddEndpoint(Endpoints[1648]); + builder.AddEndpoint(Endpoints[1649]); + builder.AddEndpoint(Endpoints[1650]); + builder.AddEndpoint(Endpoints[1651]); + builder.AddEndpoint(Endpoints[1652]); + builder.AddEndpoint(Endpoints[1653]); + builder.AddEndpoint(Endpoints[1654]); + builder.AddEndpoint(Endpoints[1655]); + builder.AddEndpoint(Endpoints[1656]); + builder.AddEndpoint(Endpoints[1657]); + builder.AddEndpoint(Endpoints[1658]); + builder.AddEndpoint(Endpoints[1659]); + builder.AddEndpoint(Endpoints[1660]); + builder.AddEndpoint(Endpoints[1661]); + builder.AddEndpoint(Endpoints[1662]); + builder.AddEndpoint(Endpoints[1663]); + builder.AddEndpoint(Endpoints[1664]); + builder.AddEndpoint(Endpoints[1665]); + builder.AddEndpoint(Endpoints[1666]); + builder.AddEndpoint(Endpoints[1667]); + builder.AddEndpoint(Endpoints[1668]); + builder.AddEndpoint(Endpoints[1669]); + builder.AddEndpoint(Endpoints[1670]); + builder.AddEndpoint(Endpoints[1671]); + builder.AddEndpoint(Endpoints[1672]); + builder.AddEndpoint(Endpoints[1673]); + builder.AddEndpoint(Endpoints[1674]); + builder.AddEndpoint(Endpoints[1675]); + builder.AddEndpoint(Endpoints[1676]); + builder.AddEndpoint(Endpoints[1677]); + builder.AddEndpoint(Endpoints[1678]); + builder.AddEndpoint(Endpoints[1679]); + builder.AddEndpoint(Endpoints[1680]); + builder.AddEndpoint(Endpoints[1681]); + builder.AddEndpoint(Endpoints[1682]); + builder.AddEndpoint(Endpoints[1683]); + builder.AddEndpoint(Endpoints[1684]); + builder.AddEndpoint(Endpoints[1685]); + builder.AddEndpoint(Endpoints[1686]); + builder.AddEndpoint(Endpoints[1687]); + builder.AddEndpoint(Endpoints[1688]); + builder.AddEndpoint(Endpoints[1689]); + builder.AddEndpoint(Endpoints[1690]); + builder.AddEndpoint(Endpoints[1691]); + builder.AddEndpoint(Endpoints[1692]); + builder.AddEndpoint(Endpoints[1693]); + builder.AddEndpoint(Endpoints[1694]); + builder.AddEndpoint(Endpoints[1695]); + builder.AddEndpoint(Endpoints[1696]); + builder.AddEndpoint(Endpoints[1697]); + builder.AddEndpoint(Endpoints[1698]); + builder.AddEndpoint(Endpoints[1699]); + builder.AddEndpoint(Endpoints[1700]); + builder.AddEndpoint(Endpoints[1701]); + builder.AddEndpoint(Endpoints[1702]); + builder.AddEndpoint(Endpoints[1703]); + builder.AddEndpoint(Endpoints[1704]); + builder.AddEndpoint(Endpoints[1705]); + builder.AddEndpoint(Endpoints[1706]); + builder.AddEndpoint(Endpoints[1707]); + builder.AddEndpoint(Endpoints[1708]); + builder.AddEndpoint(Endpoints[1709]); + builder.AddEndpoint(Endpoints[1710]); + builder.AddEndpoint(Endpoints[1711]); + builder.AddEndpoint(Endpoints[1712]); + builder.AddEndpoint(Endpoints[1713]); + builder.AddEndpoint(Endpoints[1714]); + builder.AddEndpoint(Endpoints[1715]); + builder.AddEndpoint(Endpoints[1716]); + builder.AddEndpoint(Endpoints[1717]); + builder.AddEndpoint(Endpoints[1718]); + builder.AddEndpoint(Endpoints[1719]); + builder.AddEndpoint(Endpoints[1720]); + builder.AddEndpoint(Endpoints[1721]); + builder.AddEndpoint(Endpoints[1722]); + builder.AddEndpoint(Endpoints[1723]); + builder.AddEndpoint(Endpoints[1724]); + builder.AddEndpoint(Endpoints[1725]); + builder.AddEndpoint(Endpoints[1726]); + builder.AddEndpoint(Endpoints[1727]); + builder.AddEndpoint(Endpoints[1728]); + builder.AddEndpoint(Endpoints[1729]); + builder.AddEndpoint(Endpoints[1730]); + builder.AddEndpoint(Endpoints[1731]); + builder.AddEndpoint(Endpoints[1732]); + builder.AddEndpoint(Endpoints[1733]); + builder.AddEndpoint(Endpoints[1734]); + builder.AddEndpoint(Endpoints[1735]); + builder.AddEndpoint(Endpoints[1736]); + builder.AddEndpoint(Endpoints[1737]); + builder.AddEndpoint(Endpoints[1738]); + builder.AddEndpoint(Endpoints[1739]); + builder.AddEndpoint(Endpoints[1740]); + builder.AddEndpoint(Endpoints[1741]); + builder.AddEndpoint(Endpoints[1742]); + builder.AddEndpoint(Endpoints[1743]); + builder.AddEndpoint(Endpoints[1744]); + builder.AddEndpoint(Endpoints[1745]); + builder.AddEndpoint(Endpoints[1746]); + builder.AddEndpoint(Endpoints[1747]); + builder.AddEndpoint(Endpoints[1748]); + builder.AddEndpoint(Endpoints[1749]); + builder.AddEndpoint(Endpoints[1750]); + builder.AddEndpoint(Endpoints[1751]); + builder.AddEndpoint(Endpoints[1752]); + builder.AddEndpoint(Endpoints[1753]); + builder.AddEndpoint(Endpoints[1754]); + builder.AddEndpoint(Endpoints[1755]); + builder.AddEndpoint(Endpoints[1756]); + builder.AddEndpoint(Endpoints[1757]); + builder.AddEndpoint(Endpoints[1758]); + builder.AddEndpoint(Endpoints[1759]); + builder.AddEndpoint(Endpoints[1760]); + builder.AddEndpoint(Endpoints[1761]); + builder.AddEndpoint(Endpoints[1762]); + builder.AddEndpoint(Endpoints[1763]); + builder.AddEndpoint(Endpoints[1764]); + builder.AddEndpoint(Endpoints[1765]); + builder.AddEndpoint(Endpoints[1766]); + builder.AddEndpoint(Endpoints[1767]); + builder.AddEndpoint(Endpoints[1768]); + builder.AddEndpoint(Endpoints[1769]); + builder.AddEndpoint(Endpoints[1770]); + builder.AddEndpoint(Endpoints[1771]); + builder.AddEndpoint(Endpoints[1772]); + builder.AddEndpoint(Endpoints[1773]); + builder.AddEndpoint(Endpoints[1774]); + builder.AddEndpoint(Endpoints[1775]); + builder.AddEndpoint(Endpoints[1776]); + builder.AddEndpoint(Endpoints[1777]); + builder.AddEndpoint(Endpoints[1778]); + builder.AddEndpoint(Endpoints[1779]); + builder.AddEndpoint(Endpoints[1780]); + builder.AddEndpoint(Endpoints[1781]); + builder.AddEndpoint(Endpoints[1782]); + builder.AddEndpoint(Endpoints[1783]); + builder.AddEndpoint(Endpoints[1784]); + builder.AddEndpoint(Endpoints[1785]); + builder.AddEndpoint(Endpoints[1786]); + builder.AddEndpoint(Endpoints[1787]); + builder.AddEndpoint(Endpoints[1788]); + builder.AddEndpoint(Endpoints[1789]); + builder.AddEndpoint(Endpoints[1790]); + builder.AddEndpoint(Endpoints[1791]); + builder.AddEndpoint(Endpoints[1792]); + builder.AddEndpoint(Endpoints[1793]); + builder.AddEndpoint(Endpoints[1794]); + builder.AddEndpoint(Endpoints[1795]); + builder.AddEndpoint(Endpoints[1796]); + builder.AddEndpoint(Endpoints[1797]); + builder.AddEndpoint(Endpoints[1798]); + builder.AddEndpoint(Endpoints[1799]); + builder.AddEndpoint(Endpoints[1800]); + builder.AddEndpoint(Endpoints[1801]); + builder.AddEndpoint(Endpoints[1802]); + builder.AddEndpoint(Endpoints[1803]); + builder.AddEndpoint(Endpoints[1804]); + builder.AddEndpoint(Endpoints[1805]); + builder.AddEndpoint(Endpoints[1806]); + builder.AddEndpoint(Endpoints[1807]); + builder.AddEndpoint(Endpoints[1808]); + builder.AddEndpoint(Endpoints[1809]); + builder.AddEndpoint(Endpoints[1810]); + builder.AddEndpoint(Endpoints[1811]); + builder.AddEndpoint(Endpoints[1812]); + builder.AddEndpoint(Endpoints[1813]); + builder.AddEndpoint(Endpoints[1814]); + builder.AddEndpoint(Endpoints[1815]); + builder.AddEndpoint(Endpoints[1816]); + builder.AddEndpoint(Endpoints[1817]); + builder.AddEndpoint(Endpoints[1818]); + builder.AddEndpoint(Endpoints[1819]); + builder.AddEndpoint(Endpoints[1820]); + builder.AddEndpoint(Endpoints[1821]); + builder.AddEndpoint(Endpoints[1822]); + builder.AddEndpoint(Endpoints[1823]); + builder.AddEndpoint(Endpoints[1824]); + builder.AddEndpoint(Endpoints[1825]); + builder.AddEndpoint(Endpoints[1826]); + builder.AddEndpoint(Endpoints[1827]); + builder.AddEndpoint(Endpoints[1828]); + builder.AddEndpoint(Endpoints[1829]); + builder.AddEndpoint(Endpoints[1830]); + builder.AddEndpoint(Endpoints[1831]); + builder.AddEndpoint(Endpoints[1832]); + builder.AddEndpoint(Endpoints[1833]); + builder.AddEndpoint(Endpoints[1834]); + builder.AddEndpoint(Endpoints[1835]); + builder.AddEndpoint(Endpoints[1836]); + builder.AddEndpoint(Endpoints[1837]); + builder.AddEndpoint(Endpoints[1838]); + builder.AddEndpoint(Endpoints[1839]); + builder.AddEndpoint(Endpoints[1840]); + builder.AddEndpoint(Endpoints[1841]); + builder.AddEndpoint(Endpoints[1842]); + builder.AddEndpoint(Endpoints[1843]); + builder.AddEndpoint(Endpoints[1844]); + builder.AddEndpoint(Endpoints[1845]); + builder.AddEndpoint(Endpoints[1846]); + builder.AddEndpoint(Endpoints[1847]); + builder.AddEndpoint(Endpoints[1848]); + builder.AddEndpoint(Endpoints[1849]); + builder.AddEndpoint(Endpoints[1850]); + builder.AddEndpoint(Endpoints[1851]); + builder.AddEndpoint(Endpoints[1852]); + builder.AddEndpoint(Endpoints[1853]); + builder.AddEndpoint(Endpoints[1854]); + builder.AddEndpoint(Endpoints[1855]); + builder.AddEndpoint(Endpoints[1856]); + builder.AddEndpoint(Endpoints[1857]); + builder.AddEndpoint(Endpoints[1858]); + builder.AddEndpoint(Endpoints[1859]); + builder.AddEndpoint(Endpoints[1860]); + builder.AddEndpoint(Endpoints[1861]); + builder.AddEndpoint(Endpoints[1862]); + builder.AddEndpoint(Endpoints[1863]); + builder.AddEndpoint(Endpoints[1864]); + builder.AddEndpoint(Endpoints[1865]); + builder.AddEndpoint(Endpoints[1866]); + builder.AddEndpoint(Endpoints[1867]); + builder.AddEndpoint(Endpoints[1868]); + builder.AddEndpoint(Endpoints[1869]); + builder.AddEndpoint(Endpoints[1870]); + builder.AddEndpoint(Endpoints[1871]); + builder.AddEndpoint(Endpoints[1872]); + builder.AddEndpoint(Endpoints[1873]); + builder.AddEndpoint(Endpoints[1874]); + builder.AddEndpoint(Endpoints[1875]); + builder.AddEndpoint(Endpoints[1876]); + builder.AddEndpoint(Endpoints[1877]); + builder.AddEndpoint(Endpoints[1878]); + builder.AddEndpoint(Endpoints[1879]); + builder.AddEndpoint(Endpoints[1880]); + builder.AddEndpoint(Endpoints[1881]); + builder.AddEndpoint(Endpoints[1882]); + builder.AddEndpoint(Endpoints[1883]); + builder.AddEndpoint(Endpoints[1884]); + builder.AddEndpoint(Endpoints[1885]); + builder.AddEndpoint(Endpoints[1886]); + builder.AddEndpoint(Endpoints[1887]); + builder.AddEndpoint(Endpoints[1888]); + builder.AddEndpoint(Endpoints[1889]); + builder.AddEndpoint(Endpoints[1890]); + builder.AddEndpoint(Endpoints[1891]); + builder.AddEndpoint(Endpoints[1892]); + builder.AddEndpoint(Endpoints[1893]); + builder.AddEndpoint(Endpoints[1894]); + builder.AddEndpoint(Endpoints[1895]); + builder.AddEndpoint(Endpoints[1896]); + builder.AddEndpoint(Endpoints[1897]); + builder.AddEndpoint(Endpoints[1898]); + builder.AddEndpoint(Endpoints[1899]); + builder.AddEndpoint(Endpoints[1900]); + builder.AddEndpoint(Endpoints[1901]); + builder.AddEndpoint(Endpoints[1902]); + builder.AddEndpoint(Endpoints[1903]); + builder.AddEndpoint(Endpoints[1904]); + builder.AddEndpoint(Endpoints[1905]); + builder.AddEndpoint(Endpoints[1906]); + builder.AddEndpoint(Endpoints[1907]); + builder.AddEndpoint(Endpoints[1908]); + builder.AddEndpoint(Endpoints[1909]); + builder.AddEndpoint(Endpoints[1910]); + builder.AddEndpoint(Endpoints[1911]); + builder.AddEndpoint(Endpoints[1912]); + builder.AddEndpoint(Endpoints[1913]); + builder.AddEndpoint(Endpoints[1914]); + builder.AddEndpoint(Endpoints[1915]); + builder.AddEndpoint(Endpoints[1916]); + builder.AddEndpoint(Endpoints[1917]); + builder.AddEndpoint(Endpoints[1918]); + builder.AddEndpoint(Endpoints[1919]); + builder.AddEndpoint(Endpoints[1920]); + builder.AddEndpoint(Endpoints[1921]); + builder.AddEndpoint(Endpoints[1922]); + builder.AddEndpoint(Endpoints[1923]); + builder.AddEndpoint(Endpoints[1924]); + builder.AddEndpoint(Endpoints[1925]); + builder.AddEndpoint(Endpoints[1926]); + builder.AddEndpoint(Endpoints[1927]); + builder.AddEndpoint(Endpoints[1928]); + builder.AddEndpoint(Endpoints[1929]); + builder.AddEndpoint(Endpoints[1930]); + builder.AddEndpoint(Endpoints[1931]); + builder.AddEndpoint(Endpoints[1932]); + builder.AddEndpoint(Endpoints[1933]); + builder.AddEndpoint(Endpoints[1934]); + builder.AddEndpoint(Endpoints[1935]); + builder.AddEndpoint(Endpoints[1936]); + builder.AddEndpoint(Endpoints[1937]); + builder.AddEndpoint(Endpoints[1938]); + builder.AddEndpoint(Endpoints[1939]); + builder.AddEndpoint(Endpoints[1940]); + builder.AddEndpoint(Endpoints[1941]); + builder.AddEndpoint(Endpoints[1942]); + builder.AddEndpoint(Endpoints[1943]); + builder.AddEndpoint(Endpoints[1944]); + builder.AddEndpoint(Endpoints[1945]); + builder.AddEndpoint(Endpoints[1946]); + builder.AddEndpoint(Endpoints[1947]); + builder.AddEndpoint(Endpoints[1948]); + builder.AddEndpoint(Endpoints[1949]); + builder.AddEndpoint(Endpoints[1950]); + builder.AddEndpoint(Endpoints[1951]); + builder.AddEndpoint(Endpoints[1952]); + builder.AddEndpoint(Endpoints[1953]); + builder.AddEndpoint(Endpoints[1954]); + builder.AddEndpoint(Endpoints[1955]); + builder.AddEndpoint(Endpoints[1956]); + builder.AddEndpoint(Endpoints[1957]); + builder.AddEndpoint(Endpoints[1958]); + builder.AddEndpoint(Endpoints[1959]); + builder.AddEndpoint(Endpoints[1960]); + builder.AddEndpoint(Endpoints[1961]); + builder.AddEndpoint(Endpoints[1962]); + builder.AddEndpoint(Endpoints[1963]); + builder.AddEndpoint(Endpoints[1964]); + builder.AddEndpoint(Endpoints[1965]); + builder.AddEndpoint(Endpoints[1966]); + builder.AddEndpoint(Endpoints[1967]); + builder.AddEndpoint(Endpoints[1968]); + builder.AddEndpoint(Endpoints[1969]); + builder.AddEndpoint(Endpoints[1970]); + builder.AddEndpoint(Endpoints[1971]); + builder.AddEndpoint(Endpoints[1972]); + builder.AddEndpoint(Endpoints[1973]); + builder.AddEndpoint(Endpoints[1974]); + builder.AddEndpoint(Endpoints[1975]); + builder.AddEndpoint(Endpoints[1976]); + builder.AddEndpoint(Endpoints[1977]); + builder.AddEndpoint(Endpoints[1978]); + builder.AddEndpoint(Endpoints[1979]); + builder.AddEndpoint(Endpoints[1980]); + builder.AddEndpoint(Endpoints[1981]); + builder.AddEndpoint(Endpoints[1982]); + builder.AddEndpoint(Endpoints[1983]); + builder.AddEndpoint(Endpoints[1984]); + builder.AddEndpoint(Endpoints[1985]); + builder.AddEndpoint(Endpoints[1986]); + builder.AddEndpoint(Endpoints[1987]); + builder.AddEndpoint(Endpoints[1988]); + builder.AddEndpoint(Endpoints[1989]); + builder.AddEndpoint(Endpoints[1990]); + builder.AddEndpoint(Endpoints[1991]); + builder.AddEndpoint(Endpoints[1992]); + builder.AddEndpoint(Endpoints[1993]); + builder.AddEndpoint(Endpoints[1994]); + builder.AddEndpoint(Endpoints[1995]); + builder.AddEndpoint(Endpoints[1996]); + builder.AddEndpoint(Endpoints[1997]); + builder.AddEndpoint(Endpoints[1998]); + builder.AddEndpoint(Endpoints[1999]); + builder.AddEndpoint(Endpoints[2000]); + builder.AddEndpoint(Endpoints[2001]); + builder.AddEndpoint(Endpoints[2002]); + builder.AddEndpoint(Endpoints[2003]); + builder.AddEndpoint(Endpoints[2004]); + builder.AddEndpoint(Endpoints[2005]); + builder.AddEndpoint(Endpoints[2006]); + builder.AddEndpoint(Endpoints[2007]); + builder.AddEndpoint(Endpoints[2008]); + builder.AddEndpoint(Endpoints[2009]); + builder.AddEndpoint(Endpoints[2010]); + builder.AddEndpoint(Endpoints[2011]); + builder.AddEndpoint(Endpoints[2012]); + builder.AddEndpoint(Endpoints[2013]); + builder.AddEndpoint(Endpoints[2014]); + builder.AddEndpoint(Endpoints[2015]); + builder.AddEndpoint(Endpoints[2016]); + builder.AddEndpoint(Endpoints[2017]); + builder.AddEndpoint(Endpoints[2018]); + builder.AddEndpoint(Endpoints[2019]); + builder.AddEndpoint(Endpoints[2020]); + builder.AddEndpoint(Endpoints[2021]); + builder.AddEndpoint(Endpoints[2022]); + builder.AddEndpoint(Endpoints[2023]); + builder.AddEndpoint(Endpoints[2024]); + builder.AddEndpoint(Endpoints[2025]); + builder.AddEndpoint(Endpoints[2026]); + builder.AddEndpoint(Endpoints[2027]); + builder.AddEndpoint(Endpoints[2028]); + builder.AddEndpoint(Endpoints[2029]); + builder.AddEndpoint(Endpoints[2030]); + builder.AddEndpoint(Endpoints[2031]); + builder.AddEndpoint(Endpoints[2032]); + builder.AddEndpoint(Endpoints[2033]); + builder.AddEndpoint(Endpoints[2034]); + builder.AddEndpoint(Endpoints[2035]); + builder.AddEndpoint(Endpoints[2036]); + builder.AddEndpoint(Endpoints[2037]); + builder.AddEndpoint(Endpoints[2038]); + builder.AddEndpoint(Endpoints[2039]); + builder.AddEndpoint(Endpoints[2040]); + builder.AddEndpoint(Endpoints[2041]); + builder.AddEndpoint(Endpoints[2042]); + builder.AddEndpoint(Endpoints[2043]); + builder.AddEndpoint(Endpoints[2044]); + builder.AddEndpoint(Endpoints[2045]); + builder.AddEndpoint(Endpoints[2046]); + builder.AddEndpoint(Endpoints[2047]); + builder.AddEndpoint(Endpoints[2048]); + builder.AddEndpoint(Endpoints[2049]); + builder.AddEndpoint(Endpoints[2050]); + builder.AddEndpoint(Endpoints[2051]); + builder.AddEndpoint(Endpoints[2052]); + builder.AddEndpoint(Endpoints[2053]); + builder.AddEndpoint(Endpoints[2054]); + builder.AddEndpoint(Endpoints[2055]); + builder.AddEndpoint(Endpoints[2056]); + builder.AddEndpoint(Endpoints[2057]); + builder.AddEndpoint(Endpoints[2058]); + builder.AddEndpoint(Endpoints[2059]); + builder.AddEndpoint(Endpoints[2060]); + builder.AddEndpoint(Endpoints[2061]); + builder.AddEndpoint(Endpoints[2062]); + builder.AddEndpoint(Endpoints[2063]); + builder.AddEndpoint(Endpoints[2064]); + builder.AddEndpoint(Endpoints[2065]); + builder.AddEndpoint(Endpoints[2066]); + builder.AddEndpoint(Endpoints[2067]); + builder.AddEndpoint(Endpoints[2068]); + builder.AddEndpoint(Endpoints[2069]); + builder.AddEndpoint(Endpoints[2070]); + builder.AddEndpoint(Endpoints[2071]); + builder.AddEndpoint(Endpoints[2072]); + builder.AddEndpoint(Endpoints[2073]); + builder.AddEndpoint(Endpoints[2074]); + builder.AddEndpoint(Endpoints[2075]); + builder.AddEndpoint(Endpoints[2076]); + builder.AddEndpoint(Endpoints[2077]); + builder.AddEndpoint(Endpoints[2078]); + builder.AddEndpoint(Endpoints[2079]); + builder.AddEndpoint(Endpoints[2080]); + builder.AddEndpoint(Endpoints[2081]); + builder.AddEndpoint(Endpoints[2082]); + builder.AddEndpoint(Endpoints[2083]); + builder.AddEndpoint(Endpoints[2084]); + builder.AddEndpoint(Endpoints[2085]); + builder.AddEndpoint(Endpoints[2086]); + builder.AddEndpoint(Endpoints[2087]); + builder.AddEndpoint(Endpoints[2088]); + builder.AddEndpoint(Endpoints[2089]); + builder.AddEndpoint(Endpoints[2090]); + builder.AddEndpoint(Endpoints[2091]); + builder.AddEndpoint(Endpoints[2092]); + builder.AddEndpoint(Endpoints[2093]); + builder.AddEndpoint(Endpoints[2094]); + builder.AddEndpoint(Endpoints[2095]); + builder.AddEndpoint(Endpoints[2096]); + builder.AddEndpoint(Endpoints[2097]); + builder.AddEndpoint(Endpoints[2098]); + builder.AddEndpoint(Endpoints[2099]); + builder.AddEndpoint(Endpoints[2100]); + builder.AddEndpoint(Endpoints[2101]); + builder.AddEndpoint(Endpoints[2102]); + builder.AddEndpoint(Endpoints[2103]); + builder.AddEndpoint(Endpoints[2104]); + builder.AddEndpoint(Endpoints[2105]); + builder.AddEndpoint(Endpoints[2106]); + builder.AddEndpoint(Endpoints[2107]); + builder.AddEndpoint(Endpoints[2108]); + builder.AddEndpoint(Endpoints[2109]); + builder.AddEndpoint(Endpoints[2110]); + builder.AddEndpoint(Endpoints[2111]); + builder.AddEndpoint(Endpoints[2112]); + builder.AddEndpoint(Endpoints[2113]); + builder.AddEndpoint(Endpoints[2114]); + builder.AddEndpoint(Endpoints[2115]); + builder.AddEndpoint(Endpoints[2116]); + builder.AddEndpoint(Endpoints[2117]); + builder.AddEndpoint(Endpoints[2118]); + builder.AddEndpoint(Endpoints[2119]); + builder.AddEndpoint(Endpoints[2120]); + builder.AddEndpoint(Endpoints[2121]); + builder.AddEndpoint(Endpoints[2122]); + builder.AddEndpoint(Endpoints[2123]); + builder.AddEndpoint(Endpoints[2124]); + builder.AddEndpoint(Endpoints[2125]); + builder.AddEndpoint(Endpoints[2126]); + builder.AddEndpoint(Endpoints[2127]); + builder.AddEndpoint(Endpoints[2128]); + builder.AddEndpoint(Endpoints[2129]); + builder.AddEndpoint(Endpoints[2130]); + builder.AddEndpoint(Endpoints[2131]); + builder.AddEndpoint(Endpoints[2132]); + builder.AddEndpoint(Endpoints[2133]); + builder.AddEndpoint(Endpoints[2134]); + builder.AddEndpoint(Endpoints[2135]); + builder.AddEndpoint(Endpoints[2136]); + builder.AddEndpoint(Endpoints[2137]); + builder.AddEndpoint(Endpoints[2138]); + builder.AddEndpoint(Endpoints[2139]); + builder.AddEndpoint(Endpoints[2140]); + builder.AddEndpoint(Endpoints[2141]); + builder.AddEndpoint(Endpoints[2142]); + builder.AddEndpoint(Endpoints[2143]); + builder.AddEndpoint(Endpoints[2144]); + builder.AddEndpoint(Endpoints[2145]); + builder.AddEndpoint(Endpoints[2146]); + builder.AddEndpoint(Endpoints[2147]); + builder.AddEndpoint(Endpoints[2148]); + builder.AddEndpoint(Endpoints[2149]); + builder.AddEndpoint(Endpoints[2150]); + builder.AddEndpoint(Endpoints[2151]); + builder.AddEndpoint(Endpoints[2152]); + builder.AddEndpoint(Endpoints[2153]); + builder.AddEndpoint(Endpoints[2154]); + builder.AddEndpoint(Endpoints[2155]); + builder.AddEndpoint(Endpoints[2156]); + builder.AddEndpoint(Endpoints[2157]); + builder.AddEndpoint(Endpoints[2158]); + builder.AddEndpoint(Endpoints[2159]); + builder.AddEndpoint(Endpoints[2160]); + builder.AddEndpoint(Endpoints[2161]); + builder.AddEndpoint(Endpoints[2162]); + builder.AddEndpoint(Endpoints[2163]); + builder.AddEndpoint(Endpoints[2164]); + builder.AddEndpoint(Endpoints[2165]); + builder.AddEndpoint(Endpoints[2166]); + builder.AddEndpoint(Endpoints[2167]); + builder.AddEndpoint(Endpoints[2168]); + builder.AddEndpoint(Endpoints[2169]); + builder.AddEndpoint(Endpoints[2170]); + builder.AddEndpoint(Endpoints[2171]); + builder.AddEndpoint(Endpoints[2172]); + builder.AddEndpoint(Endpoints[2173]); + builder.AddEndpoint(Endpoints[2174]); + builder.AddEndpoint(Endpoints[2175]); + builder.AddEndpoint(Endpoints[2176]); + builder.AddEndpoint(Endpoints[2177]); + builder.AddEndpoint(Endpoints[2178]); + builder.AddEndpoint(Endpoints[2179]); + builder.AddEndpoint(Endpoints[2180]); + builder.AddEndpoint(Endpoints[2181]); + builder.AddEndpoint(Endpoints[2182]); + builder.AddEndpoint(Endpoints[2183]); + builder.AddEndpoint(Endpoints[2184]); + builder.AddEndpoint(Endpoints[2185]); + builder.AddEndpoint(Endpoints[2186]); + builder.AddEndpoint(Endpoints[2187]); + builder.AddEndpoint(Endpoints[2188]); + builder.AddEndpoint(Endpoints[2189]); + builder.AddEndpoint(Endpoints[2190]); + builder.AddEndpoint(Endpoints[2191]); + builder.AddEndpoint(Endpoints[2192]); + builder.AddEndpoint(Endpoints[2193]); + builder.AddEndpoint(Endpoints[2194]); + builder.AddEndpoint(Endpoints[2195]); + builder.AddEndpoint(Endpoints[2196]); + builder.AddEndpoint(Endpoints[2197]); + builder.AddEndpoint(Endpoints[2198]); + builder.AddEndpoint(Endpoints[2199]); + builder.AddEndpoint(Endpoints[2200]); + builder.AddEndpoint(Endpoints[2201]); + builder.AddEndpoint(Endpoints[2202]); + builder.AddEndpoint(Endpoints[2203]); + builder.AddEndpoint(Endpoints[2204]); + builder.AddEndpoint(Endpoints[2205]); + builder.AddEndpoint(Endpoints[2206]); + builder.AddEndpoint(Endpoints[2207]); + builder.AddEndpoint(Endpoints[2208]); + builder.AddEndpoint(Endpoints[2209]); + builder.AddEndpoint(Endpoints[2210]); + builder.AddEndpoint(Endpoints[2211]); + builder.AddEndpoint(Endpoints[2212]); + builder.AddEndpoint(Endpoints[2213]); + builder.AddEndpoint(Endpoints[2214]); + builder.AddEndpoint(Endpoints[2215]); + builder.AddEndpoint(Endpoints[2216]); + builder.AddEndpoint(Endpoints[2217]); + builder.AddEndpoint(Endpoints[2218]); + builder.AddEndpoint(Endpoints[2219]); + builder.AddEndpoint(Endpoints[2220]); + builder.AddEndpoint(Endpoints[2221]); + builder.AddEndpoint(Endpoints[2222]); + builder.AddEndpoint(Endpoints[2223]); + builder.AddEndpoint(Endpoints[2224]); + builder.AddEndpoint(Endpoints[2225]); + builder.AddEndpoint(Endpoints[2226]); + builder.AddEndpoint(Endpoints[2227]); + builder.AddEndpoint(Endpoints[2228]); + builder.AddEndpoint(Endpoints[2229]); + builder.AddEndpoint(Endpoints[2230]); + builder.AddEndpoint(Endpoints[2231]); + builder.AddEndpoint(Endpoints[2232]); + builder.AddEndpoint(Endpoints[2233]); + builder.AddEndpoint(Endpoints[2234]); + builder.AddEndpoint(Endpoints[2235]); + builder.AddEndpoint(Endpoints[2236]); + builder.AddEndpoint(Endpoints[2237]); + builder.AddEndpoint(Endpoints[2238]); + builder.AddEndpoint(Endpoints[2239]); + builder.AddEndpoint(Endpoints[2240]); + builder.AddEndpoint(Endpoints[2241]); + builder.AddEndpoint(Endpoints[2242]); + builder.AddEndpoint(Endpoints[2243]); + builder.AddEndpoint(Endpoints[2244]); + builder.AddEndpoint(Endpoints[2245]); + builder.AddEndpoint(Endpoints[2246]); + builder.AddEndpoint(Endpoints[2247]); + builder.AddEndpoint(Endpoints[2248]); + builder.AddEndpoint(Endpoints[2249]); + builder.AddEndpoint(Endpoints[2250]); + builder.AddEndpoint(Endpoints[2251]); + builder.AddEndpoint(Endpoints[2252]); + builder.AddEndpoint(Endpoints[2253]); + builder.AddEndpoint(Endpoints[2254]); + builder.AddEndpoint(Endpoints[2255]); + builder.AddEndpoint(Endpoints[2256]); + builder.AddEndpoint(Endpoints[2257]); + builder.AddEndpoint(Endpoints[2258]); + builder.AddEndpoint(Endpoints[2259]); + builder.AddEndpoint(Endpoints[2260]); + builder.AddEndpoint(Endpoints[2261]); + builder.AddEndpoint(Endpoints[2262]); + builder.AddEndpoint(Endpoints[2263]); + builder.AddEndpoint(Endpoints[2264]); + builder.AddEndpoint(Endpoints[2265]); + builder.AddEndpoint(Endpoints[2266]); + builder.AddEndpoint(Endpoints[2267]); + builder.AddEndpoint(Endpoints[2268]); + builder.AddEndpoint(Endpoints[2269]); + builder.AddEndpoint(Endpoints[2270]); + builder.AddEndpoint(Endpoints[2271]); + builder.AddEndpoint(Endpoints[2272]); + builder.AddEndpoint(Endpoints[2273]); + builder.AddEndpoint(Endpoints[2274]); + builder.AddEndpoint(Endpoints[2275]); + builder.AddEndpoint(Endpoints[2276]); + builder.AddEndpoint(Endpoints[2277]); + builder.AddEndpoint(Endpoints[2278]); + builder.AddEndpoint(Endpoints[2279]); + builder.AddEndpoint(Endpoints[2280]); + builder.AddEndpoint(Endpoints[2281]); + builder.AddEndpoint(Endpoints[2282]); + builder.AddEndpoint(Endpoints[2283]); + builder.AddEndpoint(Endpoints[2284]); + builder.AddEndpoint(Endpoints[2285]); + builder.AddEndpoint(Endpoints[2286]); + builder.AddEndpoint(Endpoints[2287]); + builder.AddEndpoint(Endpoints[2288]); + builder.AddEndpoint(Endpoints[2289]); + builder.AddEndpoint(Endpoints[2290]); + builder.AddEndpoint(Endpoints[2291]); + builder.AddEndpoint(Endpoints[2292]); + builder.AddEndpoint(Endpoints[2293]); + builder.AddEndpoint(Endpoints[2294]); + builder.AddEndpoint(Endpoints[2295]); + builder.AddEndpoint(Endpoints[2296]); + builder.AddEndpoint(Endpoints[2297]); + builder.AddEndpoint(Endpoints[2298]); + builder.AddEndpoint(Endpoints[2299]); + builder.AddEndpoint(Endpoints[2300]); + builder.AddEndpoint(Endpoints[2301]); + builder.AddEndpoint(Endpoints[2302]); + builder.AddEndpoint(Endpoints[2303]); + builder.AddEndpoint(Endpoints[2304]); + builder.AddEndpoint(Endpoints[2305]); + builder.AddEndpoint(Endpoints[2306]); + builder.AddEndpoint(Endpoints[2307]); + builder.AddEndpoint(Endpoints[2308]); + builder.AddEndpoint(Endpoints[2309]); + builder.AddEndpoint(Endpoints[2310]); + builder.AddEndpoint(Endpoints[2311]); + builder.AddEndpoint(Endpoints[2312]); + builder.AddEndpoint(Endpoints[2313]); + builder.AddEndpoint(Endpoints[2314]); + builder.AddEndpoint(Endpoints[2315]); + builder.AddEndpoint(Endpoints[2316]); + builder.AddEndpoint(Endpoints[2317]); + builder.AddEndpoint(Endpoints[2318]); + builder.AddEndpoint(Endpoints[2319]); + builder.AddEndpoint(Endpoints[2320]); + builder.AddEndpoint(Endpoints[2321]); + builder.AddEndpoint(Endpoints[2322]); + builder.AddEndpoint(Endpoints[2323]); + builder.AddEndpoint(Endpoints[2324]); + builder.AddEndpoint(Endpoints[2325]); + builder.AddEndpoint(Endpoints[2326]); + builder.AddEndpoint(Endpoints[2327]); + builder.AddEndpoint(Endpoints[2328]); + builder.AddEndpoint(Endpoints[2329]); + builder.AddEndpoint(Endpoints[2330]); + builder.AddEndpoint(Endpoints[2331]); + builder.AddEndpoint(Endpoints[2332]); + builder.AddEndpoint(Endpoints[2333]); + builder.AddEndpoint(Endpoints[2334]); + builder.AddEndpoint(Endpoints[2335]); + builder.AddEndpoint(Endpoints[2336]); + builder.AddEndpoint(Endpoints[2337]); + builder.AddEndpoint(Endpoints[2338]); + builder.AddEndpoint(Endpoints[2339]); + builder.AddEndpoint(Endpoints[2340]); + builder.AddEndpoint(Endpoints[2341]); + builder.AddEndpoint(Endpoints[2342]); + builder.AddEndpoint(Endpoints[2343]); + builder.AddEndpoint(Endpoints[2344]); + builder.AddEndpoint(Endpoints[2345]); + builder.AddEndpoint(Endpoints[2346]); + builder.AddEndpoint(Endpoints[2347]); + builder.AddEndpoint(Endpoints[2348]); + builder.AddEndpoint(Endpoints[2349]); + builder.AddEndpoint(Endpoints[2350]); + builder.AddEndpoint(Endpoints[2351]); + builder.AddEndpoint(Endpoints[2352]); + builder.AddEndpoint(Endpoints[2353]); + builder.AddEndpoint(Endpoints[2354]); + builder.AddEndpoint(Endpoints[2355]); + builder.AddEndpoint(Endpoints[2356]); + builder.AddEndpoint(Endpoints[2357]); + builder.AddEndpoint(Endpoints[2358]); + builder.AddEndpoint(Endpoints[2359]); + builder.AddEndpoint(Endpoints[2360]); + builder.AddEndpoint(Endpoints[2361]); + builder.AddEndpoint(Endpoints[2362]); + builder.AddEndpoint(Endpoints[2363]); + builder.AddEndpoint(Endpoints[2364]); + builder.AddEndpoint(Endpoints[2365]); + builder.AddEndpoint(Endpoints[2366]); + builder.AddEndpoint(Endpoints[2367]); + builder.AddEndpoint(Endpoints[2368]); + builder.AddEndpoint(Endpoints[2369]); + builder.AddEndpoint(Endpoints[2370]); + builder.AddEndpoint(Endpoints[2371]); + builder.AddEndpoint(Endpoints[2372]); + builder.AddEndpoint(Endpoints[2373]); + builder.AddEndpoint(Endpoints[2374]); + builder.AddEndpoint(Endpoints[2375]); + builder.AddEndpoint(Endpoints[2376]); + builder.AddEndpoint(Endpoints[2377]); + builder.AddEndpoint(Endpoints[2378]); + builder.AddEndpoint(Endpoints[2379]); + builder.AddEndpoint(Endpoints[2380]); + builder.AddEndpoint(Endpoints[2381]); + builder.AddEndpoint(Endpoints[2382]); + builder.AddEndpoint(Endpoints[2383]); + builder.AddEndpoint(Endpoints[2384]); + builder.AddEndpoint(Endpoints[2385]); + builder.AddEndpoint(Endpoints[2386]); + builder.AddEndpoint(Endpoints[2387]); + builder.AddEndpoint(Endpoints[2388]); + builder.AddEndpoint(Endpoints[2389]); + builder.AddEndpoint(Endpoints[2390]); + builder.AddEndpoint(Endpoints[2391]); + builder.AddEndpoint(Endpoints[2392]); + builder.AddEndpoint(Endpoints[2393]); + builder.AddEndpoint(Endpoints[2394]); + builder.AddEndpoint(Endpoints[2395]); + builder.AddEndpoint(Endpoints[2396]); + builder.AddEndpoint(Endpoints[2397]); + builder.AddEndpoint(Endpoints[2398]); + builder.AddEndpoint(Endpoints[2399]); + builder.AddEndpoint(Endpoints[2400]); + builder.AddEndpoint(Endpoints[2401]); + builder.AddEndpoint(Endpoints[2402]); + builder.AddEndpoint(Endpoints[2403]); + builder.AddEndpoint(Endpoints[2404]); + builder.AddEndpoint(Endpoints[2405]); + builder.AddEndpoint(Endpoints[2406]); + builder.AddEndpoint(Endpoints[2407]); + builder.AddEndpoint(Endpoints[2408]); + builder.AddEndpoint(Endpoints[2409]); + builder.AddEndpoint(Endpoints[2410]); + builder.AddEndpoint(Endpoints[2411]); + builder.AddEndpoint(Endpoints[2412]); + builder.AddEndpoint(Endpoints[2413]); + builder.AddEndpoint(Endpoints[2414]); + builder.AddEndpoint(Endpoints[2415]); + builder.AddEndpoint(Endpoints[2416]); + builder.AddEndpoint(Endpoints[2417]); + builder.AddEndpoint(Endpoints[2418]); + builder.AddEndpoint(Endpoints[2419]); + builder.AddEndpoint(Endpoints[2420]); + builder.AddEndpoint(Endpoints[2421]); + builder.AddEndpoint(Endpoints[2422]); + builder.AddEndpoint(Endpoints[2423]); + builder.AddEndpoint(Endpoints[2424]); + builder.AddEndpoint(Endpoints[2425]); + builder.AddEndpoint(Endpoints[2426]); + builder.AddEndpoint(Endpoints[2427]); + builder.AddEndpoint(Endpoints[2428]); + builder.AddEndpoint(Endpoints[2429]); + builder.AddEndpoint(Endpoints[2430]); + builder.AddEndpoint(Endpoints[2431]); + builder.AddEndpoint(Endpoints[2432]); + builder.AddEndpoint(Endpoints[2433]); + builder.AddEndpoint(Endpoints[2434]); + builder.AddEndpoint(Endpoints[2435]); + builder.AddEndpoint(Endpoints[2436]); + builder.AddEndpoint(Endpoints[2437]); + builder.AddEndpoint(Endpoints[2438]); + builder.AddEndpoint(Endpoints[2439]); + builder.AddEndpoint(Endpoints[2440]); + builder.AddEndpoint(Endpoints[2441]); + builder.AddEndpoint(Endpoints[2442]); + builder.AddEndpoint(Endpoints[2443]); + builder.AddEndpoint(Endpoints[2444]); + builder.AddEndpoint(Endpoints[2445]); + builder.AddEndpoint(Endpoints[2446]); + builder.AddEndpoint(Endpoints[2447]); + builder.AddEndpoint(Endpoints[2448]); + builder.AddEndpoint(Endpoints[2449]); + builder.AddEndpoint(Endpoints[2450]); + builder.AddEndpoint(Endpoints[2451]); + builder.AddEndpoint(Endpoints[2452]); + builder.AddEndpoint(Endpoints[2453]); + builder.AddEndpoint(Endpoints[2454]); + builder.AddEndpoint(Endpoints[2455]); + builder.AddEndpoint(Endpoints[2456]); + builder.AddEndpoint(Endpoints[2457]); + builder.AddEndpoint(Endpoints[2458]); + builder.AddEndpoint(Endpoints[2459]); + builder.AddEndpoint(Endpoints[2460]); + builder.AddEndpoint(Endpoints[2461]); + builder.AddEndpoint(Endpoints[2462]); + builder.AddEndpoint(Endpoints[2463]); + builder.AddEndpoint(Endpoints[2464]); + builder.AddEndpoint(Endpoints[2465]); + builder.AddEndpoint(Endpoints[2466]); + builder.AddEndpoint(Endpoints[2467]); + builder.AddEndpoint(Endpoints[2468]); + builder.AddEndpoint(Endpoints[2469]); + builder.AddEndpoint(Endpoints[2470]); + builder.AddEndpoint(Endpoints[2471]); + builder.AddEndpoint(Endpoints[2472]); + builder.AddEndpoint(Endpoints[2473]); + builder.AddEndpoint(Endpoints[2474]); + builder.AddEndpoint(Endpoints[2475]); + builder.AddEndpoint(Endpoints[2476]); + builder.AddEndpoint(Endpoints[2477]); + builder.AddEndpoint(Endpoints[2478]); + builder.AddEndpoint(Endpoints[2479]); + builder.AddEndpoint(Endpoints[2480]); + builder.AddEndpoint(Endpoints[2481]); + builder.AddEndpoint(Endpoints[2482]); + builder.AddEndpoint(Endpoints[2483]); + builder.AddEndpoint(Endpoints[2484]); + builder.AddEndpoint(Endpoints[2485]); + builder.AddEndpoint(Endpoints[2486]); + builder.AddEndpoint(Endpoints[2487]); + builder.AddEndpoint(Endpoints[2488]); + builder.AddEndpoint(Endpoints[2489]); + builder.AddEndpoint(Endpoints[2490]); + builder.AddEndpoint(Endpoints[2491]); + builder.AddEndpoint(Endpoints[2492]); + builder.AddEndpoint(Endpoints[2493]); + builder.AddEndpoint(Endpoints[2494]); + builder.AddEndpoint(Endpoints[2495]); + builder.AddEndpoint(Endpoints[2496]); + builder.AddEndpoint(Endpoints[2497]); + builder.AddEndpoint(Endpoints[2498]); + builder.AddEndpoint(Endpoints[2499]); + builder.AddEndpoint(Endpoints[2500]); + builder.AddEndpoint(Endpoints[2501]); + builder.AddEndpoint(Endpoints[2502]); + builder.AddEndpoint(Endpoints[2503]); + builder.AddEndpoint(Endpoints[2504]); + builder.AddEndpoint(Endpoints[2505]); + builder.AddEndpoint(Endpoints[2506]); + builder.AddEndpoint(Endpoints[2507]); + builder.AddEndpoint(Endpoints[2508]); + builder.AddEndpoint(Endpoints[2509]); + builder.AddEndpoint(Endpoints[2510]); + builder.AddEndpoint(Endpoints[2511]); + builder.AddEndpoint(Endpoints[2512]); + builder.AddEndpoint(Endpoints[2513]); + builder.AddEndpoint(Endpoints[2514]); + builder.AddEndpoint(Endpoints[2515]); + builder.AddEndpoint(Endpoints[2516]); + builder.AddEndpoint(Endpoints[2517]); + builder.AddEndpoint(Endpoints[2518]); + builder.AddEndpoint(Endpoints[2519]); + builder.AddEndpoint(Endpoints[2520]); + builder.AddEndpoint(Endpoints[2521]); + builder.AddEndpoint(Endpoints[2522]); + builder.AddEndpoint(Endpoints[2523]); + builder.AddEndpoint(Endpoints[2524]); + builder.AddEndpoint(Endpoints[2525]); + builder.AddEndpoint(Endpoints[2526]); + builder.AddEndpoint(Endpoints[2527]); + builder.AddEndpoint(Endpoints[2528]); + builder.AddEndpoint(Endpoints[2529]); + builder.AddEndpoint(Endpoints[2530]); + builder.AddEndpoint(Endpoints[2531]); + builder.AddEndpoint(Endpoints[2532]); + builder.AddEndpoint(Endpoints[2533]); + builder.AddEndpoint(Endpoints[2534]); + builder.AddEndpoint(Endpoints[2535]); + builder.AddEndpoint(Endpoints[2536]); + builder.AddEndpoint(Endpoints[2537]); + builder.AddEndpoint(Endpoints[2538]); + builder.AddEndpoint(Endpoints[2539]); + builder.AddEndpoint(Endpoints[2540]); + builder.AddEndpoint(Endpoints[2541]); + builder.AddEndpoint(Endpoints[2542]); + builder.AddEndpoint(Endpoints[2543]); + builder.AddEndpoint(Endpoints[2544]); + builder.AddEndpoint(Endpoints[2545]); + builder.AddEndpoint(Endpoints[2546]); + builder.AddEndpoint(Endpoints[2547]); + builder.AddEndpoint(Endpoints[2548]); + builder.AddEndpoint(Endpoints[2549]); + builder.AddEndpoint(Endpoints[2550]); + builder.AddEndpoint(Endpoints[2551]); + builder.AddEndpoint(Endpoints[2552]); + builder.AddEndpoint(Endpoints[2553]); + builder.AddEndpoint(Endpoints[2554]); + builder.AddEndpoint(Endpoints[2555]); + builder.AddEndpoint(Endpoints[2556]); + builder.AddEndpoint(Endpoints[2557]); + builder.AddEndpoint(Endpoints[2558]); + builder.AddEndpoint(Endpoints[2559]); + builder.AddEndpoint(Endpoints[2560]); + builder.AddEndpoint(Endpoints[2561]); + builder.AddEndpoint(Endpoints[2562]); + builder.AddEndpoint(Endpoints[2563]); + builder.AddEndpoint(Endpoints[2564]); + builder.AddEndpoint(Endpoints[2565]); + builder.AddEndpoint(Endpoints[2566]); + builder.AddEndpoint(Endpoints[2567]); + builder.AddEndpoint(Endpoints[2568]); + builder.AddEndpoint(Endpoints[2569]); + builder.AddEndpoint(Endpoints[2570]); + builder.AddEndpoint(Endpoints[2571]); + builder.AddEndpoint(Endpoints[2572]); + builder.AddEndpoint(Endpoints[2573]); + builder.AddEndpoint(Endpoints[2574]); + builder.AddEndpoint(Endpoints[2575]); + builder.AddEndpoint(Endpoints[2576]); + builder.AddEndpoint(Endpoints[2577]); + builder.AddEndpoint(Endpoints[2578]); + builder.AddEndpoint(Endpoints[2579]); + builder.AddEndpoint(Endpoints[2580]); + builder.AddEndpoint(Endpoints[2581]); + builder.AddEndpoint(Endpoints[2582]); + builder.AddEndpoint(Endpoints[2583]); + builder.AddEndpoint(Endpoints[2584]); + builder.AddEndpoint(Endpoints[2585]); + builder.AddEndpoint(Endpoints[2586]); + builder.AddEndpoint(Endpoints[2587]); + builder.AddEndpoint(Endpoints[2588]); + builder.AddEndpoint(Endpoints[2589]); + builder.AddEndpoint(Endpoints[2590]); + builder.AddEndpoint(Endpoints[2591]); + builder.AddEndpoint(Endpoints[2592]); + builder.AddEndpoint(Endpoints[2593]); + builder.AddEndpoint(Endpoints[2594]); + builder.AddEndpoint(Endpoints[2595]); + builder.AddEndpoint(Endpoints[2596]); + builder.AddEndpoint(Endpoints[2597]); + builder.AddEndpoint(Endpoints[2598]); + builder.AddEndpoint(Endpoints[2599]); + builder.AddEndpoint(Endpoints[2600]); + builder.AddEndpoint(Endpoints[2601]); + builder.AddEndpoint(Endpoints[2602]); + builder.AddEndpoint(Endpoints[2603]); + builder.AddEndpoint(Endpoints[2604]); + builder.AddEndpoint(Endpoints[2605]); + builder.AddEndpoint(Endpoints[2606]); + builder.AddEndpoint(Endpoints[2607]); + builder.AddEndpoint(Endpoints[2608]); + builder.AddEndpoint(Endpoints[2609]); + builder.AddEndpoint(Endpoints[2610]); + builder.AddEndpoint(Endpoints[2611]); + builder.AddEndpoint(Endpoints[2612]); + builder.AddEndpoint(Endpoints[2613]); + builder.AddEndpoint(Endpoints[2614]); + builder.AddEndpoint(Endpoints[2615]); + builder.AddEndpoint(Endpoints[2616]); + builder.AddEndpoint(Endpoints[2617]); + builder.AddEndpoint(Endpoints[2618]); + builder.AddEndpoint(Endpoints[2619]); + builder.AddEndpoint(Endpoints[2620]); + builder.AddEndpoint(Endpoints[2621]); + builder.AddEndpoint(Endpoints[2622]); + builder.AddEndpoint(Endpoints[2623]); + builder.AddEndpoint(Endpoints[2624]); + builder.AddEndpoint(Endpoints[2625]); + builder.AddEndpoint(Endpoints[2626]); + builder.AddEndpoint(Endpoints[2627]); + builder.AddEndpoint(Endpoints[2628]); + builder.AddEndpoint(Endpoints[2629]); + builder.AddEndpoint(Endpoints[2630]); + builder.AddEndpoint(Endpoints[2631]); + builder.AddEndpoint(Endpoints[2632]); + builder.AddEndpoint(Endpoints[2633]); + builder.AddEndpoint(Endpoints[2634]); + builder.AddEndpoint(Endpoints[2635]); + builder.AddEndpoint(Endpoints[2636]); + builder.AddEndpoint(Endpoints[2637]); + builder.AddEndpoint(Endpoints[2638]); + builder.AddEndpoint(Endpoints[2639]); + builder.AddEndpoint(Endpoints[2640]); + builder.AddEndpoint(Endpoints[2641]); + builder.AddEndpoint(Endpoints[2642]); + builder.AddEndpoint(Endpoints[2643]); + builder.AddEndpoint(Endpoints[2644]); + builder.AddEndpoint(Endpoints[2645]); + builder.AddEndpoint(Endpoints[2646]); + builder.AddEndpoint(Endpoints[2647]); + builder.AddEndpoint(Endpoints[2648]); + builder.AddEndpoint(Endpoints[2649]); + builder.AddEndpoint(Endpoints[2650]); + builder.AddEndpoint(Endpoints[2651]); + builder.AddEndpoint(Endpoints[2652]); + builder.AddEndpoint(Endpoints[2653]); + builder.AddEndpoint(Endpoints[2654]); + builder.AddEndpoint(Endpoints[2655]); + builder.AddEndpoint(Endpoints[2656]); + builder.AddEndpoint(Endpoints[2657]); + builder.AddEndpoint(Endpoints[2658]); + builder.AddEndpoint(Endpoints[2659]); + builder.AddEndpoint(Endpoints[2660]); + builder.AddEndpoint(Endpoints[2661]); + builder.AddEndpoint(Endpoints[2662]); + builder.AddEndpoint(Endpoints[2663]); + builder.AddEndpoint(Endpoints[2664]); + builder.AddEndpoint(Endpoints[2665]); + builder.AddEndpoint(Endpoints[2666]); + builder.AddEndpoint(Endpoints[2667]); + builder.AddEndpoint(Endpoints[2668]); + builder.AddEndpoint(Endpoints[2669]); + builder.AddEndpoint(Endpoints[2670]); + builder.AddEndpoint(Endpoints[2671]); + builder.AddEndpoint(Endpoints[2672]); + builder.AddEndpoint(Endpoints[2673]); + builder.AddEndpoint(Endpoints[2674]); + builder.AddEndpoint(Endpoints[2675]); + builder.AddEndpoint(Endpoints[2676]); + builder.AddEndpoint(Endpoints[2677]); + builder.AddEndpoint(Endpoints[2678]); + builder.AddEndpoint(Endpoints[2679]); + builder.AddEndpoint(Endpoints[2680]); + builder.AddEndpoint(Endpoints[2681]); + builder.AddEndpoint(Endpoints[2682]); + builder.AddEndpoint(Endpoints[2683]); + builder.AddEndpoint(Endpoints[2684]); + builder.AddEndpoint(Endpoints[2685]); + builder.AddEndpoint(Endpoints[2686]); + builder.AddEndpoint(Endpoints[2687]); + builder.AddEndpoint(Endpoints[2688]); + builder.AddEndpoint(Endpoints[2689]); + builder.AddEndpoint(Endpoints[2690]); + builder.AddEndpoint(Endpoints[2691]); + builder.AddEndpoint(Endpoints[2692]); + builder.AddEndpoint(Endpoints[2693]); + builder.AddEndpoint(Endpoints[2694]); + builder.AddEndpoint(Endpoints[2695]); + builder.AddEndpoint(Endpoints[2696]); + builder.AddEndpoint(Endpoints[2697]); + builder.AddEndpoint(Endpoints[2698]); + builder.AddEndpoint(Endpoints[2699]); + builder.AddEndpoint(Endpoints[2700]); + builder.AddEndpoint(Endpoints[2701]); + builder.AddEndpoint(Endpoints[2702]); + builder.AddEndpoint(Endpoints[2703]); + builder.AddEndpoint(Endpoints[2704]); + builder.AddEndpoint(Endpoints[2705]); + builder.AddEndpoint(Endpoints[2706]); + builder.AddEndpoint(Endpoints[2707]); + builder.AddEndpoint(Endpoints[2708]); + builder.AddEndpoint(Endpoints[2709]); + builder.AddEndpoint(Endpoints[2710]); + builder.AddEndpoint(Endpoints[2711]); + builder.AddEndpoint(Endpoints[2712]); + builder.AddEndpoint(Endpoints[2713]); + builder.AddEndpoint(Endpoints[2714]); + builder.AddEndpoint(Endpoints[2715]); + builder.AddEndpoint(Endpoints[2716]); + builder.AddEndpoint(Endpoints[2717]); + builder.AddEndpoint(Endpoints[2718]); + builder.AddEndpoint(Endpoints[2719]); + builder.AddEndpoint(Endpoints[2720]); + builder.AddEndpoint(Endpoints[2721]); + builder.AddEndpoint(Endpoints[2722]); + builder.AddEndpoint(Endpoints[2723]); + builder.AddEndpoint(Endpoints[2724]); + builder.AddEndpoint(Endpoints[2725]); + builder.AddEndpoint(Endpoints[2726]); + builder.AddEndpoint(Endpoints[2727]); + builder.AddEndpoint(Endpoints[2728]); + builder.AddEndpoint(Endpoints[2729]); + builder.AddEndpoint(Endpoints[2730]); + builder.AddEndpoint(Endpoints[2731]); + builder.AddEndpoint(Endpoints[2732]); + builder.AddEndpoint(Endpoints[2733]); + builder.AddEndpoint(Endpoints[2734]); + builder.AddEndpoint(Endpoints[2735]); + builder.AddEndpoint(Endpoints[2736]); + builder.AddEndpoint(Endpoints[2737]); + builder.AddEndpoint(Endpoints[2738]); + builder.AddEndpoint(Endpoints[2739]); + builder.AddEndpoint(Endpoints[2740]); + builder.AddEndpoint(Endpoints[2741]); + builder.AddEndpoint(Endpoints[2742]); + builder.AddEndpoint(Endpoints[2743]); + builder.AddEndpoint(Endpoints[2744]); + builder.AddEndpoint(Endpoints[2745]); + builder.AddEndpoint(Endpoints[2746]); + builder.AddEndpoint(Endpoints[2747]); + builder.AddEndpoint(Endpoints[2748]); + builder.AddEndpoint(Endpoints[2749]); + builder.AddEndpoint(Endpoints[2750]); + builder.AddEndpoint(Endpoints[2751]); + builder.AddEndpoint(Endpoints[2752]); + builder.AddEndpoint(Endpoints[2753]); + builder.AddEndpoint(Endpoints[2754]); + builder.AddEndpoint(Endpoints[2755]); + builder.AddEndpoint(Endpoints[2756]); + builder.AddEndpoint(Endpoints[2757]); + builder.AddEndpoint(Endpoints[2758]); + builder.AddEndpoint(Endpoints[2759]); + builder.AddEndpoint(Endpoints[2760]); + builder.AddEndpoint(Endpoints[2761]); + builder.AddEndpoint(Endpoints[2762]); + builder.AddEndpoint(Endpoints[2763]); + builder.AddEndpoint(Endpoints[2764]); + builder.AddEndpoint(Endpoints[2765]); + builder.AddEndpoint(Endpoints[2766]); + builder.AddEndpoint(Endpoints[2767]); + builder.AddEndpoint(Endpoints[2768]); + builder.AddEndpoint(Endpoints[2769]); + builder.AddEndpoint(Endpoints[2770]); + builder.AddEndpoint(Endpoints[2771]); + builder.AddEndpoint(Endpoints[2772]); + builder.AddEndpoint(Endpoints[2773]); + builder.AddEndpoint(Endpoints[2774]); + builder.AddEndpoint(Endpoints[2775]); + builder.AddEndpoint(Endpoints[2776]); + builder.AddEndpoint(Endpoints[2777]); + builder.AddEndpoint(Endpoints[2778]); + builder.AddEndpoint(Endpoints[2779]); + builder.AddEndpoint(Endpoints[2780]); + builder.AddEndpoint(Endpoints[2781]); + builder.AddEndpoint(Endpoints[2782]); + builder.AddEndpoint(Endpoints[2783]); + builder.AddEndpoint(Endpoints[2784]); + builder.AddEndpoint(Endpoints[2785]); + builder.AddEndpoint(Endpoints[2786]); + builder.AddEndpoint(Endpoints[2787]); + builder.AddEndpoint(Endpoints[2788]); + builder.AddEndpoint(Endpoints[2789]); + builder.AddEndpoint(Endpoints[2790]); + builder.AddEndpoint(Endpoints[2791]); + builder.AddEndpoint(Endpoints[2792]); + builder.AddEndpoint(Endpoints[2793]); + builder.AddEndpoint(Endpoints[2794]); + builder.AddEndpoint(Endpoints[2795]); + builder.AddEndpoint(Endpoints[2796]); + builder.AddEndpoint(Endpoints[2797]); + builder.AddEndpoint(Endpoints[2798]); + builder.AddEndpoint(Endpoints[2799]); + builder.AddEndpoint(Endpoints[2800]); + builder.AddEndpoint(Endpoints[2801]); + builder.AddEndpoint(Endpoints[2802]); + builder.AddEndpoint(Endpoints[2803]); + builder.AddEndpoint(Endpoints[2804]); + builder.AddEndpoint(Endpoints[2805]); + builder.AddEndpoint(Endpoints[2806]); + builder.AddEndpoint(Endpoints[2807]); + builder.AddEndpoint(Endpoints[2808]); + builder.AddEndpoint(Endpoints[2809]); + builder.AddEndpoint(Endpoints[2810]); + builder.AddEndpoint(Endpoints[2811]); + builder.AddEndpoint(Endpoints[2812]); + builder.AddEndpoint(Endpoints[2813]); + builder.AddEndpoint(Endpoints[2814]); + builder.AddEndpoint(Endpoints[2815]); + builder.AddEndpoint(Endpoints[2816]); + builder.AddEndpoint(Endpoints[2817]); + builder.AddEndpoint(Endpoints[2818]); + builder.AddEndpoint(Endpoints[2819]); + builder.AddEndpoint(Endpoints[2820]); + builder.AddEndpoint(Endpoints[2821]); + builder.AddEndpoint(Endpoints[2822]); + builder.AddEndpoint(Endpoints[2823]); + builder.AddEndpoint(Endpoints[2824]); + builder.AddEndpoint(Endpoints[2825]); + builder.AddEndpoint(Endpoints[2826]); + builder.AddEndpoint(Endpoints[2827]); + builder.AddEndpoint(Endpoints[2828]); + builder.AddEndpoint(Endpoints[2829]); + builder.AddEndpoint(Endpoints[2830]); + builder.AddEndpoint(Endpoints[2831]); + builder.AddEndpoint(Endpoints[2832]); + builder.AddEndpoint(Endpoints[2833]); + builder.AddEndpoint(Endpoints[2834]); + builder.AddEndpoint(Endpoints[2835]); + builder.AddEndpoint(Endpoints[2836]); + builder.AddEndpoint(Endpoints[2837]); + builder.AddEndpoint(Endpoints[2838]); + builder.AddEndpoint(Endpoints[2839]); + builder.AddEndpoint(Endpoints[2840]); + builder.AddEndpoint(Endpoints[2841]); + builder.AddEndpoint(Endpoints[2842]); + builder.AddEndpoint(Endpoints[2843]); + builder.AddEndpoint(Endpoints[2844]); + builder.AddEndpoint(Endpoints[2845]); + builder.AddEndpoint(Endpoints[2846]); + builder.AddEndpoint(Endpoints[2847]); + builder.AddEndpoint(Endpoints[2848]); + builder.AddEndpoint(Endpoints[2849]); + builder.AddEndpoint(Endpoints[2850]); + builder.AddEndpoint(Endpoints[2851]); + builder.AddEndpoint(Endpoints[2852]); + builder.AddEndpoint(Endpoints[2853]); + builder.AddEndpoint(Endpoints[2854]); + builder.AddEndpoint(Endpoints[2855]); + builder.AddEndpoint(Endpoints[2856]); + builder.AddEndpoint(Endpoints[2857]); + builder.AddEndpoint(Endpoints[2858]); + builder.AddEndpoint(Endpoints[2859]); + builder.AddEndpoint(Endpoints[2860]); + builder.AddEndpoint(Endpoints[2861]); + builder.AddEndpoint(Endpoints[2862]); + builder.AddEndpoint(Endpoints[2863]); + builder.AddEndpoint(Endpoints[2864]); + builder.AddEndpoint(Endpoints[2865]); + builder.AddEndpoint(Endpoints[2866]); + builder.AddEndpoint(Endpoints[2867]); + builder.AddEndpoint(Endpoints[2868]); + builder.AddEndpoint(Endpoints[2869]); + builder.AddEndpoint(Endpoints[2870]); + builder.AddEndpoint(Endpoints[2871]); + builder.AddEndpoint(Endpoints[2872]); + builder.AddEndpoint(Endpoints[2873]); + builder.AddEndpoint(Endpoints[2874]); + builder.AddEndpoint(Endpoints[2875]); + builder.AddEndpoint(Endpoints[2876]); + builder.AddEndpoint(Endpoints[2877]); + builder.AddEndpoint(Endpoints[2878]); + builder.AddEndpoint(Endpoints[2879]); + builder.AddEndpoint(Endpoints[2880]); + builder.AddEndpoint(Endpoints[2881]); + builder.AddEndpoint(Endpoints[2882]); + builder.AddEndpoint(Endpoints[2883]); + builder.AddEndpoint(Endpoints[2884]); + builder.AddEndpoint(Endpoints[2885]); + builder.AddEndpoint(Endpoints[2886]); + builder.AddEndpoint(Endpoints[2887]); + builder.AddEndpoint(Endpoints[2888]); + builder.AddEndpoint(Endpoints[2889]); + builder.AddEndpoint(Endpoints[2890]); + builder.AddEndpoint(Endpoints[2891]); + builder.AddEndpoint(Endpoints[2892]); + builder.AddEndpoint(Endpoints[2893]); + builder.AddEndpoint(Endpoints[2894]); + builder.AddEndpoint(Endpoints[2895]); + builder.AddEndpoint(Endpoints[2896]); + builder.AddEndpoint(Endpoints[2897]); + builder.AddEndpoint(Endpoints[2898]); + builder.AddEndpoint(Endpoints[2899]); + builder.AddEndpoint(Endpoints[2900]); + builder.AddEndpoint(Endpoints[2901]); + builder.AddEndpoint(Endpoints[2902]); + builder.AddEndpoint(Endpoints[2903]); + builder.AddEndpoint(Endpoints[2904]); + builder.AddEndpoint(Endpoints[2905]); + builder.AddEndpoint(Endpoints[2906]); + builder.AddEndpoint(Endpoints[2907]); + builder.AddEndpoint(Endpoints[2908]); + builder.AddEndpoint(Endpoints[2909]); + builder.AddEndpoint(Endpoints[2910]); + builder.AddEndpoint(Endpoints[2911]); + builder.AddEndpoint(Endpoints[2912]); + builder.AddEndpoint(Endpoints[2913]); + builder.AddEndpoint(Endpoints[2914]); + builder.AddEndpoint(Endpoints[2915]); + builder.AddEndpoint(Endpoints[2916]); + builder.AddEndpoint(Endpoints[2917]); + builder.AddEndpoint(Endpoints[2918]); + builder.AddEndpoint(Endpoints[2919]); + builder.AddEndpoint(Endpoints[2920]); + builder.AddEndpoint(Endpoints[2921]); + builder.AddEndpoint(Endpoints[2922]); + builder.AddEndpoint(Endpoints[2923]); + builder.AddEndpoint(Endpoints[2924]); + builder.AddEndpoint(Endpoints[2925]); + builder.AddEndpoint(Endpoints[2926]); + builder.AddEndpoint(Endpoints[2927]); + builder.AddEndpoint(Endpoints[2928]); + builder.AddEndpoint(Endpoints[2929]); + builder.AddEndpoint(Endpoints[2930]); + builder.AddEndpoint(Endpoints[2931]); + builder.AddEndpoint(Endpoints[2932]); + builder.AddEndpoint(Endpoints[2933]); + builder.AddEndpoint(Endpoints[2934]); + builder.AddEndpoint(Endpoints[2935]); + builder.AddEndpoint(Endpoints[2936]); + builder.AddEndpoint(Endpoints[2937]); + builder.AddEndpoint(Endpoints[2938]); + builder.AddEndpoint(Endpoints[2939]); + builder.AddEndpoint(Endpoints[2940]); + builder.AddEndpoint(Endpoints[2941]); + builder.AddEndpoint(Endpoints[2942]); + builder.AddEndpoint(Endpoints[2943]); + builder.AddEndpoint(Endpoints[2944]); + builder.AddEndpoint(Endpoints[2945]); + builder.AddEndpoint(Endpoints[2946]); + builder.AddEndpoint(Endpoints[2947]); + builder.AddEndpoint(Endpoints[2948]); + builder.AddEndpoint(Endpoints[2949]); + builder.AddEndpoint(Endpoints[2950]); + builder.AddEndpoint(Endpoints[2951]); + builder.AddEndpoint(Endpoints[2952]); + builder.AddEndpoint(Endpoints[2953]); + builder.AddEndpoint(Endpoints[2954]); + builder.AddEndpoint(Endpoints[2955]); + builder.AddEndpoint(Endpoints[2956]); + builder.AddEndpoint(Endpoints[2957]); + builder.AddEndpoint(Endpoints[2958]); + builder.AddEndpoint(Endpoints[2959]); + builder.AddEndpoint(Endpoints[2960]); + builder.AddEndpoint(Endpoints[2961]); + builder.AddEndpoint(Endpoints[2962]); + builder.AddEndpoint(Endpoints[2963]); + builder.AddEndpoint(Endpoints[2964]); + builder.AddEndpoint(Endpoints[2965]); + builder.AddEndpoint(Endpoints[2966]); + builder.AddEndpoint(Endpoints[2967]); + builder.AddEndpoint(Endpoints[2968]); + builder.AddEndpoint(Endpoints[2969]); + builder.AddEndpoint(Endpoints[2970]); + builder.AddEndpoint(Endpoints[2971]); + builder.AddEndpoint(Endpoints[2972]); + builder.AddEndpoint(Endpoints[2973]); + builder.AddEndpoint(Endpoints[2974]); + builder.AddEndpoint(Endpoints[2975]); + builder.AddEndpoint(Endpoints[2976]); + builder.AddEndpoint(Endpoints[2977]); + builder.AddEndpoint(Endpoints[2978]); + builder.AddEndpoint(Endpoints[2979]); + builder.AddEndpoint(Endpoints[2980]); + builder.AddEndpoint(Endpoints[2981]); + builder.AddEndpoint(Endpoints[2982]); + builder.AddEndpoint(Endpoints[2983]); + builder.AddEndpoint(Endpoints[2984]); + builder.AddEndpoint(Endpoints[2985]); + builder.AddEndpoint(Endpoints[2986]); + builder.AddEndpoint(Endpoints[2987]); + builder.AddEndpoint(Endpoints[2988]); + builder.AddEndpoint(Endpoints[2989]); + builder.AddEndpoint(Endpoints[2990]); + builder.AddEndpoint(Endpoints[2991]); + builder.AddEndpoint(Endpoints[2992]); + builder.AddEndpoint(Endpoints[2993]); + builder.AddEndpoint(Endpoints[2994]); + builder.AddEndpoint(Endpoints[2995]); + builder.AddEndpoint(Endpoints[2996]); + builder.AddEndpoint(Endpoints[2997]); + builder.AddEndpoint(Endpoints[2998]); + builder.AddEndpoint(Endpoints[2999]); + builder.AddEndpoint(Endpoints[3000]); + builder.AddEndpoint(Endpoints[3001]); + builder.AddEndpoint(Endpoints[3002]); + builder.AddEndpoint(Endpoints[3003]); + builder.AddEndpoint(Endpoints[3004]); + builder.AddEndpoint(Endpoints[3005]); + builder.AddEndpoint(Endpoints[3006]); + builder.AddEndpoint(Endpoints[3007]); + builder.AddEndpoint(Endpoints[3008]); + builder.AddEndpoint(Endpoints[3009]); + builder.AddEndpoint(Endpoints[3010]); + builder.AddEndpoint(Endpoints[3011]); + builder.AddEndpoint(Endpoints[3012]); + builder.AddEndpoint(Endpoints[3013]); + builder.AddEndpoint(Endpoints[3014]); + builder.AddEndpoint(Endpoints[3015]); + builder.AddEndpoint(Endpoints[3016]); + builder.AddEndpoint(Endpoints[3017]); + builder.AddEndpoint(Endpoints[3018]); + builder.AddEndpoint(Endpoints[3019]); + builder.AddEndpoint(Endpoints[3020]); + builder.AddEndpoint(Endpoints[3021]); + builder.AddEndpoint(Endpoints[3022]); + builder.AddEndpoint(Endpoints[3023]); + builder.AddEndpoint(Endpoints[3024]); + builder.AddEndpoint(Endpoints[3025]); + builder.AddEndpoint(Endpoints[3026]); + builder.AddEndpoint(Endpoints[3027]); + builder.AddEndpoint(Endpoints[3028]); + builder.AddEndpoint(Endpoints[3029]); + builder.AddEndpoint(Endpoints[3030]); + builder.AddEndpoint(Endpoints[3031]); + builder.AddEndpoint(Endpoints[3032]); + builder.AddEndpoint(Endpoints[3033]); + builder.AddEndpoint(Endpoints[3034]); + builder.AddEndpoint(Endpoints[3035]); + builder.AddEndpoint(Endpoints[3036]); + builder.AddEndpoint(Endpoints[3037]); + builder.AddEndpoint(Endpoints[3038]); + builder.AddEndpoint(Endpoints[3039]); + builder.AddEndpoint(Endpoints[3040]); + builder.AddEndpoint(Endpoints[3041]); + builder.AddEndpoint(Endpoints[3042]); + builder.AddEndpoint(Endpoints[3043]); + builder.AddEndpoint(Endpoints[3044]); + builder.AddEndpoint(Endpoints[3045]); + builder.AddEndpoint(Endpoints[3046]); + builder.AddEndpoint(Endpoints[3047]); + builder.AddEndpoint(Endpoints[3048]); + builder.AddEndpoint(Endpoints[3049]); + builder.AddEndpoint(Endpoints[3050]); + builder.AddEndpoint(Endpoints[3051]); + builder.AddEndpoint(Endpoints[3052]); + builder.AddEndpoint(Endpoints[3053]); + builder.AddEndpoint(Endpoints[3054]); + builder.AddEndpoint(Endpoints[3055]); + builder.AddEndpoint(Endpoints[3056]); + builder.AddEndpoint(Endpoints[3057]); + builder.AddEndpoint(Endpoints[3058]); + builder.AddEndpoint(Endpoints[3059]); + builder.AddEndpoint(Endpoints[3060]); + builder.AddEndpoint(Endpoints[3061]); + builder.AddEndpoint(Endpoints[3062]); + builder.AddEndpoint(Endpoints[3063]); + builder.AddEndpoint(Endpoints[3064]); + builder.AddEndpoint(Endpoints[3065]); + builder.AddEndpoint(Endpoints[3066]); + builder.AddEndpoint(Endpoints[3067]); + builder.AddEndpoint(Endpoints[3068]); + builder.AddEndpoint(Endpoints[3069]); + builder.AddEndpoint(Endpoints[3070]); + builder.AddEndpoint(Endpoints[3071]); + builder.AddEndpoint(Endpoints[3072]); + builder.AddEndpoint(Endpoints[3073]); + builder.AddEndpoint(Endpoints[3074]); + builder.AddEndpoint(Endpoints[3075]); + builder.AddEndpoint(Endpoints[3076]); + builder.AddEndpoint(Endpoints[3077]); + builder.AddEndpoint(Endpoints[3078]); + builder.AddEndpoint(Endpoints[3079]); + builder.AddEndpoint(Endpoints[3080]); + builder.AddEndpoint(Endpoints[3081]); + builder.AddEndpoint(Endpoints[3082]); + builder.AddEndpoint(Endpoints[3083]); + builder.AddEndpoint(Endpoints[3084]); + builder.AddEndpoint(Endpoints[3085]); + builder.AddEndpoint(Endpoints[3086]); + builder.AddEndpoint(Endpoints[3087]); + builder.AddEndpoint(Endpoints[3088]); + builder.AddEndpoint(Endpoints[3089]); + builder.AddEndpoint(Endpoints[3090]); + builder.AddEndpoint(Endpoints[3091]); + builder.AddEndpoint(Endpoints[3092]); + builder.AddEndpoint(Endpoints[3093]); + builder.AddEndpoint(Endpoints[3094]); + builder.AddEndpoint(Endpoints[3095]); + builder.AddEndpoint(Endpoints[3096]); + builder.AddEndpoint(Endpoints[3097]); + builder.AddEndpoint(Endpoints[3098]); + builder.AddEndpoint(Endpoints[3099]); + builder.AddEndpoint(Endpoints[3100]); + builder.AddEndpoint(Endpoints[3101]); + builder.AddEndpoint(Endpoints[3102]); + builder.AddEndpoint(Endpoints[3103]); + builder.AddEndpoint(Endpoints[3104]); + builder.AddEndpoint(Endpoints[3105]); + builder.AddEndpoint(Endpoints[3106]); + builder.AddEndpoint(Endpoints[3107]); + builder.AddEndpoint(Endpoints[3108]); + builder.AddEndpoint(Endpoints[3109]); + builder.AddEndpoint(Endpoints[3110]); + builder.AddEndpoint(Endpoints[3111]); + builder.AddEndpoint(Endpoints[3112]); + builder.AddEndpoint(Endpoints[3113]); + builder.AddEndpoint(Endpoints[3114]); + builder.AddEndpoint(Endpoints[3115]); + builder.AddEndpoint(Endpoints[3116]); + builder.AddEndpoint(Endpoints[3117]); + builder.AddEndpoint(Endpoints[3118]); + builder.AddEndpoint(Endpoints[3119]); + builder.AddEndpoint(Endpoints[3120]); + builder.AddEndpoint(Endpoints[3121]); + builder.AddEndpoint(Endpoints[3122]); + builder.AddEndpoint(Endpoints[3123]); + builder.AddEndpoint(Endpoints[3124]); + builder.AddEndpoint(Endpoints[3125]); + builder.AddEndpoint(Endpoints[3126]); + builder.AddEndpoint(Endpoints[3127]); + builder.AddEndpoint(Endpoints[3128]); + builder.AddEndpoint(Endpoints[3129]); + builder.AddEndpoint(Endpoints[3130]); + builder.AddEndpoint(Endpoints[3131]); + builder.AddEndpoint(Endpoints[3132]); + builder.AddEndpoint(Endpoints[3133]); + builder.AddEndpoint(Endpoints[3134]); + builder.AddEndpoint(Endpoints[3135]); + builder.AddEndpoint(Endpoints[3136]); + builder.AddEndpoint(Endpoints[3137]); + builder.AddEndpoint(Endpoints[3138]); + builder.AddEndpoint(Endpoints[3139]); + builder.AddEndpoint(Endpoints[3140]); + builder.AddEndpoint(Endpoints[3141]); + builder.AddEndpoint(Endpoints[3142]); + builder.AddEndpoint(Endpoints[3143]); + builder.AddEndpoint(Endpoints[3144]); + builder.AddEndpoint(Endpoints[3145]); + builder.AddEndpoint(Endpoints[3146]); + builder.AddEndpoint(Endpoints[3147]); + builder.AddEndpoint(Endpoints[3148]); + builder.AddEndpoint(Endpoints[3149]); + builder.AddEndpoint(Endpoints[3150]); + builder.AddEndpoint(Endpoints[3151]); + builder.AddEndpoint(Endpoints[3152]); + builder.AddEndpoint(Endpoints[3153]); + builder.AddEndpoint(Endpoints[3154]); + builder.AddEndpoint(Endpoints[3155]); + builder.AddEndpoint(Endpoints[3156]); + builder.AddEndpoint(Endpoints[3157]); + builder.AddEndpoint(Endpoints[3158]); + builder.AddEndpoint(Endpoints[3159]); + builder.AddEndpoint(Endpoints[3160]); + builder.AddEndpoint(Endpoints[3161]); + builder.AddEndpoint(Endpoints[3162]); + builder.AddEndpoint(Endpoints[3163]); + builder.AddEndpoint(Endpoints[3164]); + builder.AddEndpoint(Endpoints[3165]); + builder.AddEndpoint(Endpoints[3166]); + builder.AddEndpoint(Endpoints[3167]); + builder.AddEndpoint(Endpoints[3168]); + builder.AddEndpoint(Endpoints[3169]); + builder.AddEndpoint(Endpoints[3170]); + builder.AddEndpoint(Endpoints[3171]); + builder.AddEndpoint(Endpoints[3172]); + builder.AddEndpoint(Endpoints[3173]); + builder.AddEndpoint(Endpoints[3174]); + builder.AddEndpoint(Endpoints[3175]); + builder.AddEndpoint(Endpoints[3176]); + builder.AddEndpoint(Endpoints[3177]); + builder.AddEndpoint(Endpoints[3178]); + builder.AddEndpoint(Endpoints[3179]); + builder.AddEndpoint(Endpoints[3180]); + builder.AddEndpoint(Endpoints[3181]); + builder.AddEndpoint(Endpoints[3182]); + builder.AddEndpoint(Endpoints[3183]); + builder.AddEndpoint(Endpoints[3184]); + builder.AddEndpoint(Endpoints[3185]); + builder.AddEndpoint(Endpoints[3186]); + builder.AddEndpoint(Endpoints[3187]); + builder.AddEndpoint(Endpoints[3188]); + builder.AddEndpoint(Endpoints[3189]); + builder.AddEndpoint(Endpoints[3190]); + builder.AddEndpoint(Endpoints[3191]); + builder.AddEndpoint(Endpoints[3192]); + builder.AddEndpoint(Endpoints[3193]); + builder.AddEndpoint(Endpoints[3194]); + builder.AddEndpoint(Endpoints[3195]); + builder.AddEndpoint(Endpoints[3196]); + builder.AddEndpoint(Endpoints[3197]); + builder.AddEndpoint(Endpoints[3198]); + builder.AddEndpoint(Endpoints[3199]); + builder.AddEndpoint(Endpoints[3200]); + builder.AddEndpoint(Endpoints[3201]); + builder.AddEndpoint(Endpoints[3202]); + builder.AddEndpoint(Endpoints[3203]); + builder.AddEndpoint(Endpoints[3204]); + builder.AddEndpoint(Endpoints[3205]); + builder.AddEndpoint(Endpoints[3206]); + builder.AddEndpoint(Endpoints[3207]); + builder.AddEndpoint(Endpoints[3208]); + builder.AddEndpoint(Endpoints[3209]); + builder.AddEndpoint(Endpoints[3210]); + builder.AddEndpoint(Endpoints[3211]); + builder.AddEndpoint(Endpoints[3212]); + builder.AddEndpoint(Endpoints[3213]); + builder.AddEndpoint(Endpoints[3214]); + builder.AddEndpoint(Endpoints[3215]); + builder.AddEndpoint(Endpoints[3216]); + builder.AddEndpoint(Endpoints[3217]); + builder.AddEndpoint(Endpoints[3218]); + builder.AddEndpoint(Endpoints[3219]); + builder.AddEndpoint(Endpoints[3220]); + builder.AddEndpoint(Endpoints[3221]); + builder.AddEndpoint(Endpoints[3222]); + builder.AddEndpoint(Endpoints[3223]); + builder.AddEndpoint(Endpoints[3224]); + builder.AddEndpoint(Endpoints[3225]); + builder.AddEndpoint(Endpoints[3226]); + builder.AddEndpoint(Endpoints[3227]); + builder.AddEndpoint(Endpoints[3228]); + builder.AddEndpoint(Endpoints[3229]); + builder.AddEndpoint(Endpoints[3230]); + builder.AddEndpoint(Endpoints[3231]); + builder.AddEndpoint(Endpoints[3232]); + builder.AddEndpoint(Endpoints[3233]); + builder.AddEndpoint(Endpoints[3234]); + builder.AddEndpoint(Endpoints[3235]); + builder.AddEndpoint(Endpoints[3236]); + builder.AddEndpoint(Endpoints[3237]); + builder.AddEndpoint(Endpoints[3238]); + builder.AddEndpoint(Endpoints[3239]); + builder.AddEndpoint(Endpoints[3240]); + builder.AddEndpoint(Endpoints[3241]); + builder.AddEndpoint(Endpoints[3242]); + builder.AddEndpoint(Endpoints[3243]); + builder.AddEndpoint(Endpoints[3244]); + builder.AddEndpoint(Endpoints[3245]); + builder.AddEndpoint(Endpoints[3246]); + builder.AddEndpoint(Endpoints[3247]); + builder.AddEndpoint(Endpoints[3248]); + builder.AddEndpoint(Endpoints[3249]); + builder.AddEndpoint(Endpoints[3250]); + builder.AddEndpoint(Endpoints[3251]); + builder.AddEndpoint(Endpoints[3252]); + builder.AddEndpoint(Endpoints[3253]); + builder.AddEndpoint(Endpoints[3254]); + builder.AddEndpoint(Endpoints[3255]); + builder.AddEndpoint(Endpoints[3256]); + builder.AddEndpoint(Endpoints[3257]); + builder.AddEndpoint(Endpoints[3258]); + builder.AddEndpoint(Endpoints[3259]); + builder.AddEndpoint(Endpoints[3260]); + builder.AddEndpoint(Endpoints[3261]); + builder.AddEndpoint(Endpoints[3262]); + builder.AddEndpoint(Endpoints[3263]); + builder.AddEndpoint(Endpoints[3264]); + builder.AddEndpoint(Endpoints[3265]); + builder.AddEndpoint(Endpoints[3266]); + builder.AddEndpoint(Endpoints[3267]); + builder.AddEndpoint(Endpoints[3268]); + builder.AddEndpoint(Endpoints[3269]); + builder.AddEndpoint(Endpoints[3270]); + builder.AddEndpoint(Endpoints[3271]); + builder.AddEndpoint(Endpoints[3272]); + builder.AddEndpoint(Endpoints[3273]); + builder.AddEndpoint(Endpoints[3274]); + builder.AddEndpoint(Endpoints[3275]); + builder.AddEndpoint(Endpoints[3276]); + builder.AddEndpoint(Endpoints[3277]); + builder.AddEndpoint(Endpoints[3278]); + builder.AddEndpoint(Endpoints[3279]); + builder.AddEndpoint(Endpoints[3280]); + builder.AddEndpoint(Endpoints[3281]); + builder.AddEndpoint(Endpoints[3282]); + builder.AddEndpoint(Endpoints[3283]); + builder.AddEndpoint(Endpoints[3284]); + builder.AddEndpoint(Endpoints[3285]); + builder.AddEndpoint(Endpoints[3286]); + builder.AddEndpoint(Endpoints[3287]); + builder.AddEndpoint(Endpoints[3288]); + builder.AddEndpoint(Endpoints[3289]); + builder.AddEndpoint(Endpoints[3290]); + builder.AddEndpoint(Endpoints[3291]); + builder.AddEndpoint(Endpoints[3292]); + builder.AddEndpoint(Endpoints[3293]); + builder.AddEndpoint(Endpoints[3294]); + builder.AddEndpoint(Endpoints[3295]); + builder.AddEndpoint(Endpoints[3296]); + builder.AddEndpoint(Endpoints[3297]); + builder.AddEndpoint(Endpoints[3298]); + builder.AddEndpoint(Endpoints[3299]); + builder.AddEndpoint(Endpoints[3300]); + builder.AddEndpoint(Endpoints[3301]); + builder.AddEndpoint(Endpoints[3302]); + builder.AddEndpoint(Endpoints[3303]); + builder.AddEndpoint(Endpoints[3304]); + builder.AddEndpoint(Endpoints[3305]); + builder.AddEndpoint(Endpoints[3306]); + builder.AddEndpoint(Endpoints[3307]); + builder.AddEndpoint(Endpoints[3308]); + builder.AddEndpoint(Endpoints[3309]); + builder.AddEndpoint(Endpoints[3310]); + builder.AddEndpoint(Endpoints[3311]); + builder.AddEndpoint(Endpoints[3312]); + builder.AddEndpoint(Endpoints[3313]); + builder.AddEndpoint(Endpoints[3314]); + builder.AddEndpoint(Endpoints[3315]); + builder.AddEndpoint(Endpoints[3316]); + builder.AddEndpoint(Endpoints[3317]); + builder.AddEndpoint(Endpoints[3318]); + builder.AddEndpoint(Endpoints[3319]); + builder.AddEndpoint(Endpoints[3320]); + builder.AddEndpoint(Endpoints[3321]); + builder.AddEndpoint(Endpoints[3322]); + builder.AddEndpoint(Endpoints[3323]); + builder.AddEndpoint(Endpoints[3324]); + builder.AddEndpoint(Endpoints[3325]); + builder.AddEndpoint(Endpoints[3326]); + builder.AddEndpoint(Endpoints[3327]); + builder.AddEndpoint(Endpoints[3328]); + builder.AddEndpoint(Endpoints[3329]); + builder.AddEndpoint(Endpoints[3330]); + builder.AddEndpoint(Endpoints[3331]); + builder.AddEndpoint(Endpoints[3332]); + builder.AddEndpoint(Endpoints[3333]); + builder.AddEndpoint(Endpoints[3334]); + builder.AddEndpoint(Endpoints[3335]); + builder.AddEndpoint(Endpoints[3336]); + builder.AddEndpoint(Endpoints[3337]); + builder.AddEndpoint(Endpoints[3338]); + builder.AddEndpoint(Endpoints[3339]); + builder.AddEndpoint(Endpoints[3340]); + builder.AddEndpoint(Endpoints[3341]); + builder.AddEndpoint(Endpoints[3342]); + builder.AddEndpoint(Endpoints[3343]); + builder.AddEndpoint(Endpoints[3344]); + builder.AddEndpoint(Endpoints[3345]); + builder.AddEndpoint(Endpoints[3346]); + builder.AddEndpoint(Endpoints[3347]); + builder.AddEndpoint(Endpoints[3348]); + builder.AddEndpoint(Endpoints[3349]); + builder.AddEndpoint(Endpoints[3350]); + builder.AddEndpoint(Endpoints[3351]); + builder.AddEndpoint(Endpoints[3352]); + builder.AddEndpoint(Endpoints[3353]); + builder.AddEndpoint(Endpoints[3354]); + builder.AddEndpoint(Endpoints[3355]); + builder.AddEndpoint(Endpoints[3356]); + builder.AddEndpoint(Endpoints[3357]); + builder.AddEndpoint(Endpoints[3358]); + builder.AddEndpoint(Endpoints[3359]); + builder.AddEndpoint(Endpoints[3360]); + builder.AddEndpoint(Endpoints[3361]); + builder.AddEndpoint(Endpoints[3362]); + builder.AddEndpoint(Endpoints[3363]); + builder.AddEndpoint(Endpoints[3364]); + builder.AddEndpoint(Endpoints[3365]); + builder.AddEndpoint(Endpoints[3366]); + builder.AddEndpoint(Endpoints[3367]); + builder.AddEndpoint(Endpoints[3368]); + builder.AddEndpoint(Endpoints[3369]); + builder.AddEndpoint(Endpoints[3370]); + builder.AddEndpoint(Endpoints[3371]); + builder.AddEndpoint(Endpoints[3372]); + builder.AddEndpoint(Endpoints[3373]); + builder.AddEndpoint(Endpoints[3374]); + builder.AddEndpoint(Endpoints[3375]); + builder.AddEndpoint(Endpoints[3376]); + builder.AddEndpoint(Endpoints[3377]); + builder.AddEndpoint(Endpoints[3378]); + builder.AddEndpoint(Endpoints[3379]); + builder.AddEndpoint(Endpoints[3380]); + builder.AddEndpoint(Endpoints[3381]); + builder.AddEndpoint(Endpoints[3382]); + builder.AddEndpoint(Endpoints[3383]); + builder.AddEndpoint(Endpoints[3384]); + builder.AddEndpoint(Endpoints[3385]); + builder.AddEndpoint(Endpoints[3386]); + builder.AddEndpoint(Endpoints[3387]); + builder.AddEndpoint(Endpoints[3388]); + builder.AddEndpoint(Endpoints[3389]); + builder.AddEndpoint(Endpoints[3390]); + builder.AddEndpoint(Endpoints[3391]); + builder.AddEndpoint(Endpoints[3392]); + builder.AddEndpoint(Endpoints[3393]); + builder.AddEndpoint(Endpoints[3394]); + builder.AddEndpoint(Endpoints[3395]); + builder.AddEndpoint(Endpoints[3396]); + builder.AddEndpoint(Endpoints[3397]); + builder.AddEndpoint(Endpoints[3398]); + builder.AddEndpoint(Endpoints[3399]); + builder.AddEndpoint(Endpoints[3400]); + builder.AddEndpoint(Endpoints[3401]); + builder.AddEndpoint(Endpoints[3402]); + builder.AddEndpoint(Endpoints[3403]); + builder.AddEndpoint(Endpoints[3404]); + builder.AddEndpoint(Endpoints[3405]); + builder.AddEndpoint(Endpoints[3406]); + builder.AddEndpoint(Endpoints[3407]); + builder.AddEndpoint(Endpoints[3408]); + builder.AddEndpoint(Endpoints[3409]); + builder.AddEndpoint(Endpoints[3410]); + builder.AddEndpoint(Endpoints[3411]); + builder.AddEndpoint(Endpoints[3412]); + builder.AddEndpoint(Endpoints[3413]); + builder.AddEndpoint(Endpoints[3414]); + builder.AddEndpoint(Endpoints[3415]); + builder.AddEndpoint(Endpoints[3416]); + builder.AddEndpoint(Endpoints[3417]); + builder.AddEndpoint(Endpoints[3418]); + builder.AddEndpoint(Endpoints[3419]); + builder.AddEndpoint(Endpoints[3420]); + builder.AddEndpoint(Endpoints[3421]); + builder.AddEndpoint(Endpoints[3422]); + builder.AddEndpoint(Endpoints[3423]); + builder.AddEndpoint(Endpoints[3424]); + builder.AddEndpoint(Endpoints[3425]); + builder.AddEndpoint(Endpoints[3426]); + builder.AddEndpoint(Endpoints[3427]); + builder.AddEndpoint(Endpoints[3428]); + builder.AddEndpoint(Endpoints[3429]); + builder.AddEndpoint(Endpoints[3430]); + builder.AddEndpoint(Endpoints[3431]); + builder.AddEndpoint(Endpoints[3432]); + builder.AddEndpoint(Endpoints[3433]); + builder.AddEndpoint(Endpoints[3434]); + builder.AddEndpoint(Endpoints[3435]); + builder.AddEndpoint(Endpoints[3436]); + builder.AddEndpoint(Endpoints[3437]); + builder.AddEndpoint(Endpoints[3438]); + builder.AddEndpoint(Endpoints[3439]); + builder.AddEndpoint(Endpoints[3440]); + builder.AddEndpoint(Endpoints[3441]); + builder.AddEndpoint(Endpoints[3442]); + builder.AddEndpoint(Endpoints[3443]); + builder.AddEndpoint(Endpoints[3444]); + builder.AddEndpoint(Endpoints[3445]); + builder.AddEndpoint(Endpoints[3446]); + builder.AddEndpoint(Endpoints[3447]); + builder.AddEndpoint(Endpoints[3448]); + builder.AddEndpoint(Endpoints[3449]); + builder.AddEndpoint(Endpoints[3450]); + builder.AddEndpoint(Endpoints[3451]); + builder.AddEndpoint(Endpoints[3452]); + builder.AddEndpoint(Endpoints[3453]); + builder.AddEndpoint(Endpoints[3454]); + builder.AddEndpoint(Endpoints[3455]); + builder.AddEndpoint(Endpoints[3456]); + builder.AddEndpoint(Endpoints[3457]); + builder.AddEndpoint(Endpoints[3458]); + builder.AddEndpoint(Endpoints[3459]); + builder.AddEndpoint(Endpoints[3460]); + builder.AddEndpoint(Endpoints[3461]); + builder.AddEndpoint(Endpoints[3462]); + builder.AddEndpoint(Endpoints[3463]); + builder.AddEndpoint(Endpoints[3464]); + builder.AddEndpoint(Endpoints[3465]); + builder.AddEndpoint(Endpoints[3466]); + builder.AddEndpoint(Endpoints[3467]); + builder.AddEndpoint(Endpoints[3468]); + builder.AddEndpoint(Endpoints[3469]); + builder.AddEndpoint(Endpoints[3470]); + builder.AddEndpoint(Endpoints[3471]); + builder.AddEndpoint(Endpoints[3472]); + builder.AddEndpoint(Endpoints[3473]); + builder.AddEndpoint(Endpoints[3474]); + builder.AddEndpoint(Endpoints[3475]); + builder.AddEndpoint(Endpoints[3476]); + builder.AddEndpoint(Endpoints[3477]); + builder.AddEndpoint(Endpoints[3478]); + builder.AddEndpoint(Endpoints[3479]); + builder.AddEndpoint(Endpoints[3480]); + builder.AddEndpoint(Endpoints[3481]); + builder.AddEndpoint(Endpoints[3482]); + builder.AddEndpoint(Endpoints[3483]); + builder.AddEndpoint(Endpoints[3484]); + builder.AddEndpoint(Endpoints[3485]); + builder.AddEndpoint(Endpoints[3486]); + builder.AddEndpoint(Endpoints[3487]); + builder.AddEndpoint(Endpoints[3488]); + builder.AddEndpoint(Endpoints[3489]); + builder.AddEndpoint(Endpoints[3490]); + builder.AddEndpoint(Endpoints[3491]); + builder.AddEndpoint(Endpoints[3492]); + builder.AddEndpoint(Endpoints[3493]); + builder.AddEndpoint(Endpoints[3494]); + builder.AddEndpoint(Endpoints[3495]); + builder.AddEndpoint(Endpoints[3496]); + builder.AddEndpoint(Endpoints[3497]); + builder.AddEndpoint(Endpoints[3498]); + builder.AddEndpoint(Endpoints[3499]); + builder.AddEndpoint(Endpoints[3500]); + builder.AddEndpoint(Endpoints[3501]); + builder.AddEndpoint(Endpoints[3502]); + builder.AddEndpoint(Endpoints[3503]); + builder.AddEndpoint(Endpoints[3504]); + builder.AddEndpoint(Endpoints[3505]); + builder.AddEndpoint(Endpoints[3506]); + builder.AddEndpoint(Endpoints[3507]); + builder.AddEndpoint(Endpoints[3508]); + builder.AddEndpoint(Endpoints[3509]); + builder.AddEndpoint(Endpoints[3510]); + builder.AddEndpoint(Endpoints[3511]); + builder.AddEndpoint(Endpoints[3512]); + builder.AddEndpoint(Endpoints[3513]); + builder.AddEndpoint(Endpoints[3514]); + builder.AddEndpoint(Endpoints[3515]); + builder.AddEndpoint(Endpoints[3516]); + builder.AddEndpoint(Endpoints[3517]); + builder.AddEndpoint(Endpoints[3518]); + builder.AddEndpoint(Endpoints[3519]); + builder.AddEndpoint(Endpoints[3520]); + builder.AddEndpoint(Endpoints[3521]); + builder.AddEndpoint(Endpoints[3522]); + builder.AddEndpoint(Endpoints[3523]); + builder.AddEndpoint(Endpoints[3524]); + builder.AddEndpoint(Endpoints[3525]); + builder.AddEndpoint(Endpoints[3526]); + builder.AddEndpoint(Endpoints[3527]); + builder.AddEndpoint(Endpoints[3528]); + builder.AddEndpoint(Endpoints[3529]); + builder.AddEndpoint(Endpoints[3530]); + builder.AddEndpoint(Endpoints[3531]); + builder.AddEndpoint(Endpoints[3532]); + builder.AddEndpoint(Endpoints[3533]); + builder.AddEndpoint(Endpoints[3534]); + builder.AddEndpoint(Endpoints[3535]); + builder.AddEndpoint(Endpoints[3536]); + builder.AddEndpoint(Endpoints[3537]); + builder.AddEndpoint(Endpoints[3538]); + builder.AddEndpoint(Endpoints[3539]); + builder.AddEndpoint(Endpoints[3540]); + builder.AddEndpoint(Endpoints[3541]); + builder.AddEndpoint(Endpoints[3542]); + builder.AddEndpoint(Endpoints[3543]); + builder.AddEndpoint(Endpoints[3544]); + builder.AddEndpoint(Endpoints[3545]); + builder.AddEndpoint(Endpoints[3546]); + builder.AddEndpoint(Endpoints[3547]); + builder.AddEndpoint(Endpoints[3548]); + builder.AddEndpoint(Endpoints[3549]); + builder.AddEndpoint(Endpoints[3550]); + builder.AddEndpoint(Endpoints[3551]); + builder.AddEndpoint(Endpoints[3552]); + builder.AddEndpoint(Endpoints[3553]); + builder.AddEndpoint(Endpoints[3554]); + builder.AddEndpoint(Endpoints[3555]); + builder.AddEndpoint(Endpoints[3556]); + builder.AddEndpoint(Endpoints[3557]); + builder.AddEndpoint(Endpoints[3558]); + builder.AddEndpoint(Endpoints[3559]); + builder.AddEndpoint(Endpoints[3560]); + builder.AddEndpoint(Endpoints[3561]); + builder.AddEndpoint(Endpoints[3562]); + builder.AddEndpoint(Endpoints[3563]); + builder.AddEndpoint(Endpoints[3564]); + builder.AddEndpoint(Endpoints[3565]); + builder.AddEndpoint(Endpoints[3566]); + builder.AddEndpoint(Endpoints[3567]); + builder.AddEndpoint(Endpoints[3568]); + builder.AddEndpoint(Endpoints[3569]); + builder.AddEndpoint(Endpoints[3570]); + builder.AddEndpoint(Endpoints[3571]); + builder.AddEndpoint(Endpoints[3572]); + builder.AddEndpoint(Endpoints[3573]); + builder.AddEndpoint(Endpoints[3574]); + builder.AddEndpoint(Endpoints[3575]); + builder.AddEndpoint(Endpoints[3576]); + builder.AddEndpoint(Endpoints[3577]); + builder.AddEndpoint(Endpoints[3578]); + builder.AddEndpoint(Endpoints[3579]); + builder.AddEndpoint(Endpoints[3580]); + builder.AddEndpoint(Endpoints[3581]); + builder.AddEndpoint(Endpoints[3582]); + builder.AddEndpoint(Endpoints[3583]); + builder.AddEndpoint(Endpoints[3584]); + builder.AddEndpoint(Endpoints[3585]); + builder.AddEndpoint(Endpoints[3586]); + builder.AddEndpoint(Endpoints[3587]); + builder.AddEndpoint(Endpoints[3588]); + builder.AddEndpoint(Endpoints[3589]); + builder.AddEndpoint(Endpoints[3590]); + builder.AddEndpoint(Endpoints[3591]); + builder.AddEndpoint(Endpoints[3592]); + builder.AddEndpoint(Endpoints[3593]); + builder.AddEndpoint(Endpoints[3594]); + builder.AddEndpoint(Endpoints[3595]); + builder.AddEndpoint(Endpoints[3596]); + builder.AddEndpoint(Endpoints[3597]); + builder.AddEndpoint(Endpoints[3598]); + builder.AddEndpoint(Endpoints[3599]); + builder.AddEndpoint(Endpoints[3600]); + builder.AddEndpoint(Endpoints[3601]); + builder.AddEndpoint(Endpoints[3602]); + builder.AddEndpoint(Endpoints[3603]); + builder.AddEndpoint(Endpoints[3604]); + builder.AddEndpoint(Endpoints[3605]); + builder.AddEndpoint(Endpoints[3606]); + builder.AddEndpoint(Endpoints[3607]); + builder.AddEndpoint(Endpoints[3608]); + builder.AddEndpoint(Endpoints[3609]); + builder.AddEndpoint(Endpoints[3610]); + builder.AddEndpoint(Endpoints[3611]); + builder.AddEndpoint(Endpoints[3612]); + builder.AddEndpoint(Endpoints[3613]); + builder.AddEndpoint(Endpoints[3614]); + builder.AddEndpoint(Endpoints[3615]); + builder.AddEndpoint(Endpoints[3616]); + builder.AddEndpoint(Endpoints[3617]); + builder.AddEndpoint(Endpoints[3618]); + builder.AddEndpoint(Endpoints[3619]); + builder.AddEndpoint(Endpoints[3620]); + builder.AddEndpoint(Endpoints[3621]); + builder.AddEndpoint(Endpoints[3622]); + builder.AddEndpoint(Endpoints[3623]); + builder.AddEndpoint(Endpoints[3624]); + builder.AddEndpoint(Endpoints[3625]); + builder.AddEndpoint(Endpoints[3626]); + builder.AddEndpoint(Endpoints[3627]); + builder.AddEndpoint(Endpoints[3628]); + builder.AddEndpoint(Endpoints[3629]); + builder.AddEndpoint(Endpoints[3630]); + builder.AddEndpoint(Endpoints[3631]); + builder.AddEndpoint(Endpoints[3632]); + builder.AddEndpoint(Endpoints[3633]); + builder.AddEndpoint(Endpoints[3634]); + builder.AddEndpoint(Endpoints[3635]); + builder.AddEndpoint(Endpoints[3636]); + builder.AddEndpoint(Endpoints[3637]); + builder.AddEndpoint(Endpoints[3638]); + builder.AddEndpoint(Endpoints[3639]); + builder.AddEndpoint(Endpoints[3640]); + builder.AddEndpoint(Endpoints[3641]); + builder.AddEndpoint(Endpoints[3642]); + builder.AddEndpoint(Endpoints[3643]); + builder.AddEndpoint(Endpoints[3644]); + builder.AddEndpoint(Endpoints[3645]); + builder.AddEndpoint(Endpoints[3646]); + builder.AddEndpoint(Endpoints[3647]); + builder.AddEndpoint(Endpoints[3648]); + builder.AddEndpoint(Endpoints[3649]); + builder.AddEndpoint(Endpoints[3650]); + builder.AddEndpoint(Endpoints[3651]); + builder.AddEndpoint(Endpoints[3652]); + builder.AddEndpoint(Endpoints[3653]); + builder.AddEndpoint(Endpoints[3654]); + builder.AddEndpoint(Endpoints[3655]); + builder.AddEndpoint(Endpoints[3656]); + builder.AddEndpoint(Endpoints[3657]); + builder.AddEndpoint(Endpoints[3658]); + builder.AddEndpoint(Endpoints[3659]); + builder.AddEndpoint(Endpoints[3660]); + builder.AddEndpoint(Endpoints[3661]); + builder.AddEndpoint(Endpoints[3662]); + builder.AddEndpoint(Endpoints[3663]); + builder.AddEndpoint(Endpoints[3664]); + builder.AddEndpoint(Endpoints[3665]); + builder.AddEndpoint(Endpoints[3666]); + builder.AddEndpoint(Endpoints[3667]); + builder.AddEndpoint(Endpoints[3668]); + builder.AddEndpoint(Endpoints[3669]); + builder.AddEndpoint(Endpoints[3670]); + builder.AddEndpoint(Endpoints[3671]); + builder.AddEndpoint(Endpoints[3672]); + builder.AddEndpoint(Endpoints[3673]); + builder.AddEndpoint(Endpoints[3674]); + builder.AddEndpoint(Endpoints[3675]); + builder.AddEndpoint(Endpoints[3676]); + builder.AddEndpoint(Endpoints[3677]); + builder.AddEndpoint(Endpoints[3678]); + builder.AddEndpoint(Endpoints[3679]); + builder.AddEndpoint(Endpoints[3680]); + builder.AddEndpoint(Endpoints[3681]); + builder.AddEndpoint(Endpoints[3682]); + builder.AddEndpoint(Endpoints[3683]); + builder.AddEndpoint(Endpoints[3684]); + builder.AddEndpoint(Endpoints[3685]); + builder.AddEndpoint(Endpoints[3686]); + builder.AddEndpoint(Endpoints[3687]); + builder.AddEndpoint(Endpoints[3688]); + builder.AddEndpoint(Endpoints[3689]); + builder.AddEndpoint(Endpoints[3690]); + builder.AddEndpoint(Endpoints[3691]); + builder.AddEndpoint(Endpoints[3692]); + builder.AddEndpoint(Endpoints[3693]); + builder.AddEndpoint(Endpoints[3694]); + builder.AddEndpoint(Endpoints[3695]); + builder.AddEndpoint(Endpoints[3696]); + builder.AddEndpoint(Endpoints[3697]); + builder.AddEndpoint(Endpoints[3698]); + builder.AddEndpoint(Endpoints[3699]); + builder.AddEndpoint(Endpoints[3700]); + builder.AddEndpoint(Endpoints[3701]); + builder.AddEndpoint(Endpoints[3702]); + builder.AddEndpoint(Endpoints[3703]); + builder.AddEndpoint(Endpoints[3704]); + builder.AddEndpoint(Endpoints[3705]); + builder.AddEndpoint(Endpoints[3706]); + builder.AddEndpoint(Endpoints[3707]); + builder.AddEndpoint(Endpoints[3708]); + builder.AddEndpoint(Endpoints[3709]); + builder.AddEndpoint(Endpoints[3710]); + builder.AddEndpoint(Endpoints[3711]); + builder.AddEndpoint(Endpoints[3712]); + builder.AddEndpoint(Endpoints[3713]); + builder.AddEndpoint(Endpoints[3714]); + builder.AddEndpoint(Endpoints[3715]); + builder.AddEndpoint(Endpoints[3716]); + builder.AddEndpoint(Endpoints[3717]); + builder.AddEndpoint(Endpoints[3718]); + builder.AddEndpoint(Endpoints[3719]); + builder.AddEndpoint(Endpoints[3720]); + builder.AddEndpoint(Endpoints[3721]); + builder.AddEndpoint(Endpoints[3722]); + builder.AddEndpoint(Endpoints[3723]); + builder.AddEndpoint(Endpoints[3724]); + builder.AddEndpoint(Endpoints[3725]); + builder.AddEndpoint(Endpoints[3726]); + builder.AddEndpoint(Endpoints[3727]); + builder.AddEndpoint(Endpoints[3728]); + builder.AddEndpoint(Endpoints[3729]); + builder.AddEndpoint(Endpoints[3730]); + builder.AddEndpoint(Endpoints[3731]); + builder.AddEndpoint(Endpoints[3732]); + builder.AddEndpoint(Endpoints[3733]); + builder.AddEndpoint(Endpoints[3734]); + builder.AddEndpoint(Endpoints[3735]); + builder.AddEndpoint(Endpoints[3736]); + builder.AddEndpoint(Endpoints[3737]); + builder.AddEndpoint(Endpoints[3738]); + builder.AddEndpoint(Endpoints[3739]); + builder.AddEndpoint(Endpoints[3740]); + builder.AddEndpoint(Endpoints[3741]); + builder.AddEndpoint(Endpoints[3742]); + builder.AddEndpoint(Endpoints[3743]); + builder.AddEndpoint(Endpoints[3744]); + builder.AddEndpoint(Endpoints[3745]); + builder.AddEndpoint(Endpoints[3746]); + builder.AddEndpoint(Endpoints[3747]); + builder.AddEndpoint(Endpoints[3748]); + builder.AddEndpoint(Endpoints[3749]); + builder.AddEndpoint(Endpoints[3750]); + builder.AddEndpoint(Endpoints[3751]); + builder.AddEndpoint(Endpoints[3752]); + builder.AddEndpoint(Endpoints[3753]); + builder.AddEndpoint(Endpoints[3754]); + builder.AddEndpoint(Endpoints[3755]); + builder.AddEndpoint(Endpoints[3756]); + builder.AddEndpoint(Endpoints[3757]); + builder.AddEndpoint(Endpoints[3758]); + builder.AddEndpoint(Endpoints[3759]); + builder.AddEndpoint(Endpoints[3760]); + builder.AddEndpoint(Endpoints[3761]); + builder.AddEndpoint(Endpoints[3762]); + builder.AddEndpoint(Endpoints[3763]); + builder.AddEndpoint(Endpoints[3764]); + builder.AddEndpoint(Endpoints[3765]); + builder.AddEndpoint(Endpoints[3766]); + builder.AddEndpoint(Endpoints[3767]); + builder.AddEndpoint(Endpoints[3768]); + builder.AddEndpoint(Endpoints[3769]); + builder.AddEndpoint(Endpoints[3770]); + builder.AddEndpoint(Endpoints[3771]); + builder.AddEndpoint(Endpoints[3772]); + builder.AddEndpoint(Endpoints[3773]); + builder.AddEndpoint(Endpoints[3774]); + builder.AddEndpoint(Endpoints[3775]); + builder.AddEndpoint(Endpoints[3776]); + builder.AddEndpoint(Endpoints[3777]); + builder.AddEndpoint(Endpoints[3778]); + builder.AddEndpoint(Endpoints[3779]); + builder.AddEndpoint(Endpoints[3780]); + builder.AddEndpoint(Endpoints[3781]); + builder.AddEndpoint(Endpoints[3782]); + builder.AddEndpoint(Endpoints[3783]); + builder.AddEndpoint(Endpoints[3784]); + builder.AddEndpoint(Endpoints[3785]); + builder.AddEndpoint(Endpoints[3786]); + builder.AddEndpoint(Endpoints[3787]); + builder.AddEndpoint(Endpoints[3788]); + builder.AddEndpoint(Endpoints[3789]); + builder.AddEndpoint(Endpoints[3790]); + builder.AddEndpoint(Endpoints[3791]); + builder.AddEndpoint(Endpoints[3792]); + builder.AddEndpoint(Endpoints[3793]); + builder.AddEndpoint(Endpoints[3794]); + builder.AddEndpoint(Endpoints[3795]); + builder.AddEndpoint(Endpoints[3796]); + builder.AddEndpoint(Endpoints[3797]); + builder.AddEndpoint(Endpoints[3798]); + builder.AddEndpoint(Endpoints[3799]); + builder.AddEndpoint(Endpoints[3800]); + builder.AddEndpoint(Endpoints[3801]); + builder.AddEndpoint(Endpoints[3802]); + builder.AddEndpoint(Endpoints[3803]); + builder.AddEndpoint(Endpoints[3804]); + builder.AddEndpoint(Endpoints[3805]); + builder.AddEndpoint(Endpoints[3806]); + builder.AddEndpoint(Endpoints[3807]); + builder.AddEndpoint(Endpoints[3808]); + builder.AddEndpoint(Endpoints[3809]); + builder.AddEndpoint(Endpoints[3810]); + builder.AddEndpoint(Endpoints[3811]); + builder.AddEndpoint(Endpoints[3812]); + builder.AddEndpoint(Endpoints[3813]); + builder.AddEndpoint(Endpoints[3814]); + builder.AddEndpoint(Endpoints[3815]); + builder.AddEndpoint(Endpoints[3816]); + builder.AddEndpoint(Endpoints[3817]); + builder.AddEndpoint(Endpoints[3818]); + builder.AddEndpoint(Endpoints[3819]); + builder.AddEndpoint(Endpoints[3820]); + builder.AddEndpoint(Endpoints[3821]); + builder.AddEndpoint(Endpoints[3822]); + builder.AddEndpoint(Endpoints[3823]); + builder.AddEndpoint(Endpoints[3824]); + builder.AddEndpoint(Endpoints[3825]); + builder.AddEndpoint(Endpoints[3826]); + builder.AddEndpoint(Endpoints[3827]); + builder.AddEndpoint(Endpoints[3828]); + builder.AddEndpoint(Endpoints[3829]); + builder.AddEndpoint(Endpoints[3830]); + builder.AddEndpoint(Endpoints[3831]); + builder.AddEndpoint(Endpoints[3832]); + builder.AddEndpoint(Endpoints[3833]); + builder.AddEndpoint(Endpoints[3834]); + builder.AddEndpoint(Endpoints[3835]); + builder.AddEndpoint(Endpoints[3836]); + builder.AddEndpoint(Endpoints[3837]); + builder.AddEndpoint(Endpoints[3838]); + builder.AddEndpoint(Endpoints[3839]); + builder.AddEndpoint(Endpoints[3840]); + builder.AddEndpoint(Endpoints[3841]); + builder.AddEndpoint(Endpoints[3842]); + builder.AddEndpoint(Endpoints[3843]); + builder.AddEndpoint(Endpoints[3844]); + builder.AddEndpoint(Endpoints[3845]); + builder.AddEndpoint(Endpoints[3846]); + builder.AddEndpoint(Endpoints[3847]); + builder.AddEndpoint(Endpoints[3848]); + builder.AddEndpoint(Endpoints[3849]); + builder.AddEndpoint(Endpoints[3850]); + builder.AddEndpoint(Endpoints[3851]); + builder.AddEndpoint(Endpoints[3852]); + builder.AddEndpoint(Endpoints[3853]); + builder.AddEndpoint(Endpoints[3854]); + builder.AddEndpoint(Endpoints[3855]); + builder.AddEndpoint(Endpoints[3856]); + builder.AddEndpoint(Endpoints[3857]); + builder.AddEndpoint(Endpoints[3858]); + builder.AddEndpoint(Endpoints[3859]); + builder.AddEndpoint(Endpoints[3860]); + builder.AddEndpoint(Endpoints[3861]); + builder.AddEndpoint(Endpoints[3862]); + builder.AddEndpoint(Endpoints[3863]); + builder.AddEndpoint(Endpoints[3864]); + builder.AddEndpoint(Endpoints[3865]); + builder.AddEndpoint(Endpoints[3866]); + builder.AddEndpoint(Endpoints[3867]); + builder.AddEndpoint(Endpoints[3868]); + builder.AddEndpoint(Endpoints[3869]); + builder.AddEndpoint(Endpoints[3870]); + builder.AddEndpoint(Endpoints[3871]); + builder.AddEndpoint(Endpoints[3872]); + builder.AddEndpoint(Endpoints[3873]); + builder.AddEndpoint(Endpoints[3874]); + builder.AddEndpoint(Endpoints[3875]); + builder.AddEndpoint(Endpoints[3876]); + builder.AddEndpoint(Endpoints[3877]); + builder.AddEndpoint(Endpoints[3878]); + builder.AddEndpoint(Endpoints[3879]); + builder.AddEndpoint(Endpoints[3880]); + builder.AddEndpoint(Endpoints[3881]); + builder.AddEndpoint(Endpoints[3882]); + builder.AddEndpoint(Endpoints[3883]); + builder.AddEndpoint(Endpoints[3884]); + builder.AddEndpoint(Endpoints[3885]); + builder.AddEndpoint(Endpoints[3886]); + builder.AddEndpoint(Endpoints[3887]); + builder.AddEndpoint(Endpoints[3888]); + builder.AddEndpoint(Endpoints[3889]); + builder.AddEndpoint(Endpoints[3890]); + builder.AddEndpoint(Endpoints[3891]); + builder.AddEndpoint(Endpoints[3892]); + builder.AddEndpoint(Endpoints[3893]); + builder.AddEndpoint(Endpoints[3894]); + builder.AddEndpoint(Endpoints[3895]); + builder.AddEndpoint(Endpoints[3896]); + builder.AddEndpoint(Endpoints[3897]); + builder.AddEndpoint(Endpoints[3898]); + builder.AddEndpoint(Endpoints[3899]); + builder.AddEndpoint(Endpoints[3900]); + builder.AddEndpoint(Endpoints[3901]); + builder.AddEndpoint(Endpoints[3902]); + builder.AddEndpoint(Endpoints[3903]); + builder.AddEndpoint(Endpoints[3904]); + builder.AddEndpoint(Endpoints[3905]); + builder.AddEndpoint(Endpoints[3906]); + builder.AddEndpoint(Endpoints[3907]); + builder.AddEndpoint(Endpoints[3908]); + builder.AddEndpoint(Endpoints[3909]); + builder.AddEndpoint(Endpoints[3910]); + builder.AddEndpoint(Endpoints[3911]); + builder.AddEndpoint(Endpoints[3912]); + builder.AddEndpoint(Endpoints[3913]); + builder.AddEndpoint(Endpoints[3914]); + builder.AddEndpoint(Endpoints[3915]); + builder.AddEndpoint(Endpoints[3916]); + builder.AddEndpoint(Endpoints[3917]); + builder.AddEndpoint(Endpoints[3918]); + builder.AddEndpoint(Endpoints[3919]); + builder.AddEndpoint(Endpoints[3920]); + builder.AddEndpoint(Endpoints[3921]); + builder.AddEndpoint(Endpoints[3922]); + builder.AddEndpoint(Endpoints[3923]); + builder.AddEndpoint(Endpoints[3924]); + builder.AddEndpoint(Endpoints[3925]); + builder.AddEndpoint(Endpoints[3926]); + builder.AddEndpoint(Endpoints[3927]); + builder.AddEndpoint(Endpoints[3928]); + builder.AddEndpoint(Endpoints[3929]); + builder.AddEndpoint(Endpoints[3930]); + builder.AddEndpoint(Endpoints[3931]); + builder.AddEndpoint(Endpoints[3932]); + builder.AddEndpoint(Endpoints[3933]); + builder.AddEndpoint(Endpoints[3934]); + builder.AddEndpoint(Endpoints[3935]); + builder.AddEndpoint(Endpoints[3936]); + builder.AddEndpoint(Endpoints[3937]); + builder.AddEndpoint(Endpoints[3938]); + builder.AddEndpoint(Endpoints[3939]); + builder.AddEndpoint(Endpoints[3940]); + builder.AddEndpoint(Endpoints[3941]); + builder.AddEndpoint(Endpoints[3942]); + builder.AddEndpoint(Endpoints[3943]); + builder.AddEndpoint(Endpoints[3944]); + builder.AddEndpoint(Endpoints[3945]); + builder.AddEndpoint(Endpoints[3946]); + builder.AddEndpoint(Endpoints[3947]); + builder.AddEndpoint(Endpoints[3948]); + builder.AddEndpoint(Endpoints[3949]); + builder.AddEndpoint(Endpoints[3950]); + builder.AddEndpoint(Endpoints[3951]); + builder.AddEndpoint(Endpoints[3952]); + builder.AddEndpoint(Endpoints[3953]); + builder.AddEndpoint(Endpoints[3954]); + builder.AddEndpoint(Endpoints[3955]); + builder.AddEndpoint(Endpoints[3956]); + builder.AddEndpoint(Endpoints[3957]); + builder.AddEndpoint(Endpoints[3958]); + builder.AddEndpoint(Endpoints[3959]); + builder.AddEndpoint(Endpoints[3960]); + builder.AddEndpoint(Endpoints[3961]); + builder.AddEndpoint(Endpoints[3962]); + builder.AddEndpoint(Endpoints[3963]); + builder.AddEndpoint(Endpoints[3964]); + builder.AddEndpoint(Endpoints[3965]); + builder.AddEndpoint(Endpoints[3966]); + builder.AddEndpoint(Endpoints[3967]); + builder.AddEndpoint(Endpoints[3968]); + builder.AddEndpoint(Endpoints[3969]); + builder.AddEndpoint(Endpoints[3970]); + builder.AddEndpoint(Endpoints[3971]); + builder.AddEndpoint(Endpoints[3972]); + builder.AddEndpoint(Endpoints[3973]); + builder.AddEndpoint(Endpoints[3974]); + builder.AddEndpoint(Endpoints[3975]); + builder.AddEndpoint(Endpoints[3976]); + builder.AddEndpoint(Endpoints[3977]); + builder.AddEndpoint(Endpoints[3978]); + builder.AddEndpoint(Endpoints[3979]); + builder.AddEndpoint(Endpoints[3980]); + builder.AddEndpoint(Endpoints[3981]); + builder.AddEndpoint(Endpoints[3982]); + builder.AddEndpoint(Endpoints[3983]); + builder.AddEndpoint(Endpoints[3984]); + builder.AddEndpoint(Endpoints[3985]); + builder.AddEndpoint(Endpoints[3986]); + builder.AddEndpoint(Endpoints[3987]); + builder.AddEndpoint(Endpoints[3988]); + builder.AddEndpoint(Endpoints[3989]); + builder.AddEndpoint(Endpoints[3990]); + builder.AddEndpoint(Endpoints[3991]); + builder.AddEndpoint(Endpoints[3992]); + builder.AddEndpoint(Endpoints[3993]); + builder.AddEndpoint(Endpoints[3994]); + builder.AddEndpoint(Endpoints[3995]); + builder.AddEndpoint(Endpoints[3996]); + builder.AddEndpoint(Endpoints[3997]); + builder.AddEndpoint(Endpoints[3998]); + builder.AddEndpoint(Endpoints[3999]); + builder.AddEndpoint(Endpoints[4000]); + builder.AddEndpoint(Endpoints[4001]); + builder.AddEndpoint(Endpoints[4002]); + builder.AddEndpoint(Endpoints[4003]); + builder.AddEndpoint(Endpoints[4004]); + builder.AddEndpoint(Endpoints[4005]); + builder.AddEndpoint(Endpoints[4006]); + builder.AddEndpoint(Endpoints[4007]); + builder.AddEndpoint(Endpoints[4008]); + builder.AddEndpoint(Endpoints[4009]); + builder.AddEndpoint(Endpoints[4010]); + builder.AddEndpoint(Endpoints[4011]); + builder.AddEndpoint(Endpoints[4012]); + builder.AddEndpoint(Endpoints[4013]); + builder.AddEndpoint(Endpoints[4014]); + builder.AddEndpoint(Endpoints[4015]); + builder.AddEndpoint(Endpoints[4016]); + builder.AddEndpoint(Endpoints[4017]); + builder.AddEndpoint(Endpoints[4018]); + builder.AddEndpoint(Endpoints[4019]); + builder.AddEndpoint(Endpoints[4020]); + builder.AddEndpoint(Endpoints[4021]); + builder.AddEndpoint(Endpoints[4022]); + builder.AddEndpoint(Endpoints[4023]); + builder.AddEndpoint(Endpoints[4024]); + builder.AddEndpoint(Endpoints[4025]); + builder.AddEndpoint(Endpoints[4026]); + builder.AddEndpoint(Endpoints[4027]); + builder.AddEndpoint(Endpoints[4028]); + builder.AddEndpoint(Endpoints[4029]); + builder.AddEndpoint(Endpoints[4030]); + builder.AddEndpoint(Endpoints[4031]); + builder.AddEndpoint(Endpoints[4032]); + builder.AddEndpoint(Endpoints[4033]); + builder.AddEndpoint(Endpoints[4034]); + builder.AddEndpoint(Endpoints[4035]); + builder.AddEndpoint(Endpoints[4036]); + builder.AddEndpoint(Endpoints[4037]); + builder.AddEndpoint(Endpoints[4038]); + builder.AddEndpoint(Endpoints[4039]); + builder.AddEndpoint(Endpoints[4040]); + builder.AddEndpoint(Endpoints[4041]); + builder.AddEndpoint(Endpoints[4042]); + builder.AddEndpoint(Endpoints[4043]); + builder.AddEndpoint(Endpoints[4044]); + builder.AddEndpoint(Endpoints[4045]); + builder.AddEndpoint(Endpoints[4046]); + builder.AddEndpoint(Endpoints[4047]); + builder.AddEndpoint(Endpoints[4048]); + builder.AddEndpoint(Endpoints[4049]); + builder.AddEndpoint(Endpoints[4050]); + builder.AddEndpoint(Endpoints[4051]); + builder.AddEndpoint(Endpoints[4052]); + builder.AddEndpoint(Endpoints[4053]); + builder.AddEndpoint(Endpoints[4054]); + builder.AddEndpoint(Endpoints[4055]); + builder.AddEndpoint(Endpoints[4056]); + builder.AddEndpoint(Endpoints[4057]); + builder.AddEndpoint(Endpoints[4058]); + builder.AddEndpoint(Endpoints[4059]); + builder.AddEndpoint(Endpoints[4060]); + builder.AddEndpoint(Endpoints[4061]); + builder.AddEndpoint(Endpoints[4062]); + builder.AddEndpoint(Endpoints[4063]); + builder.AddEndpoint(Endpoints[4064]); + builder.AddEndpoint(Endpoints[4065]); + builder.AddEndpoint(Endpoints[4066]); + builder.AddEndpoint(Endpoints[4067]); + builder.AddEndpoint(Endpoints[4068]); + builder.AddEndpoint(Endpoints[4069]); + builder.AddEndpoint(Endpoints[4070]); + builder.AddEndpoint(Endpoints[4071]); + builder.AddEndpoint(Endpoints[4072]); + builder.AddEndpoint(Endpoints[4073]); + builder.AddEndpoint(Endpoints[4074]); + builder.AddEndpoint(Endpoints[4075]); + builder.AddEndpoint(Endpoints[4076]); + builder.AddEndpoint(Endpoints[4077]); + builder.AddEndpoint(Endpoints[4078]); + builder.AddEndpoint(Endpoints[4079]); + builder.AddEndpoint(Endpoints[4080]); + builder.AddEndpoint(Endpoints[4081]); + builder.AddEndpoint(Endpoints[4082]); + builder.AddEndpoint(Endpoints[4083]); + builder.AddEndpoint(Endpoints[4084]); + builder.AddEndpoint(Endpoints[4085]); + builder.AddEndpoint(Endpoints[4086]); + builder.AddEndpoint(Endpoints[4087]); + builder.AddEndpoint(Endpoints[4088]); + builder.AddEndpoint(Endpoints[4089]); + builder.AddEndpoint(Endpoints[4090]); + builder.AddEndpoint(Endpoints[4091]); + builder.AddEndpoint(Endpoints[4092]); + builder.AddEndpoint(Endpoints[4093]); + builder.AddEndpoint(Endpoints[4094]); + builder.AddEndpoint(Endpoints[4095]); + builder.AddEndpoint(Endpoints[4096]); + builder.AddEndpoint(Endpoints[4097]); + builder.AddEndpoint(Endpoints[4098]); + builder.AddEndpoint(Endpoints[4099]); + builder.AddEndpoint(Endpoints[4100]); + builder.AddEndpoint(Endpoints[4101]); + builder.AddEndpoint(Endpoints[4102]); + builder.AddEndpoint(Endpoints[4103]); + builder.AddEndpoint(Endpoints[4104]); + builder.AddEndpoint(Endpoints[4105]); + builder.AddEndpoint(Endpoints[4106]); + builder.AddEndpoint(Endpoints[4107]); + builder.AddEndpoint(Endpoints[4108]); + builder.AddEndpoint(Endpoints[4109]); + builder.AddEndpoint(Endpoints[4110]); + builder.AddEndpoint(Endpoints[4111]); + builder.AddEndpoint(Endpoints[4112]); + builder.AddEndpoint(Endpoints[4113]); + builder.AddEndpoint(Endpoints[4114]); + builder.AddEndpoint(Endpoints[4115]); + builder.AddEndpoint(Endpoints[4116]); + builder.AddEndpoint(Endpoints[4117]); + builder.AddEndpoint(Endpoints[4118]); + builder.AddEndpoint(Endpoints[4119]); + builder.AddEndpoint(Endpoints[4120]); + builder.AddEndpoint(Endpoints[4121]); + builder.AddEndpoint(Endpoints[4122]); + builder.AddEndpoint(Endpoints[4123]); + builder.AddEndpoint(Endpoints[4124]); + builder.AddEndpoint(Endpoints[4125]); + builder.AddEndpoint(Endpoints[4126]); + builder.AddEndpoint(Endpoints[4127]); + builder.AddEndpoint(Endpoints[4128]); + builder.AddEndpoint(Endpoints[4129]); + builder.AddEndpoint(Endpoints[4130]); + builder.AddEndpoint(Endpoints[4131]); + builder.AddEndpoint(Endpoints[4132]); + builder.AddEndpoint(Endpoints[4133]); + builder.AddEndpoint(Endpoints[4134]); + builder.AddEndpoint(Endpoints[4135]); + builder.AddEndpoint(Endpoints[4136]); + builder.AddEndpoint(Endpoints[4137]); + builder.AddEndpoint(Endpoints[4138]); + builder.AddEndpoint(Endpoints[4139]); + builder.AddEndpoint(Endpoints[4140]); + builder.AddEndpoint(Endpoints[4141]); + builder.AddEndpoint(Endpoints[4142]); + builder.AddEndpoint(Endpoints[4143]); + builder.AddEndpoint(Endpoints[4144]); + builder.AddEndpoint(Endpoints[4145]); + builder.AddEndpoint(Endpoints[4146]); + builder.AddEndpoint(Endpoints[4147]); + builder.AddEndpoint(Endpoints[4148]); + builder.AddEndpoint(Endpoints[4149]); + builder.AddEndpoint(Endpoints[4150]); + builder.AddEndpoint(Endpoints[4151]); + builder.AddEndpoint(Endpoints[4152]); + builder.AddEndpoint(Endpoints[4153]); + builder.AddEndpoint(Endpoints[4154]); + builder.AddEndpoint(Endpoints[4155]); + builder.AddEndpoint(Endpoints[4156]); + builder.AddEndpoint(Endpoints[4157]); + builder.AddEndpoint(Endpoints[4158]); + builder.AddEndpoint(Endpoints[4159]); + builder.AddEndpoint(Endpoints[4160]); + builder.AddEndpoint(Endpoints[4161]); + builder.AddEndpoint(Endpoints[4162]); + builder.AddEndpoint(Endpoints[4163]); + builder.AddEndpoint(Endpoints[4164]); + builder.AddEndpoint(Endpoints[4165]); + builder.AddEndpoint(Endpoints[4166]); + builder.AddEndpoint(Endpoints[4167]); + builder.AddEndpoint(Endpoints[4168]); + builder.AddEndpoint(Endpoints[4169]); + builder.AddEndpoint(Endpoints[4170]); + builder.AddEndpoint(Endpoints[4171]); + builder.AddEndpoint(Endpoints[4172]); + builder.AddEndpoint(Endpoints[4173]); + builder.AddEndpoint(Endpoints[4174]); + builder.AddEndpoint(Endpoints[4175]); + builder.AddEndpoint(Endpoints[4176]); + builder.AddEndpoint(Endpoints[4177]); + builder.AddEndpoint(Endpoints[4178]); + builder.AddEndpoint(Endpoints[4179]); + builder.AddEndpoint(Endpoints[4180]); + builder.AddEndpoint(Endpoints[4181]); + builder.AddEndpoint(Endpoints[4182]); + builder.AddEndpoint(Endpoints[4183]); + builder.AddEndpoint(Endpoints[4184]); + builder.AddEndpoint(Endpoints[4185]); + builder.AddEndpoint(Endpoints[4186]); + builder.AddEndpoint(Endpoints[4187]); + builder.AddEndpoint(Endpoints[4188]); + builder.AddEndpoint(Endpoints[4189]); + builder.AddEndpoint(Endpoints[4190]); + builder.AddEndpoint(Endpoints[4191]); + builder.AddEndpoint(Endpoints[4192]); + builder.AddEndpoint(Endpoints[4193]); + builder.AddEndpoint(Endpoints[4194]); + builder.AddEndpoint(Endpoints[4195]); + builder.AddEndpoint(Endpoints[4196]); + builder.AddEndpoint(Endpoints[4197]); + builder.AddEndpoint(Endpoints[4198]); + builder.AddEndpoint(Endpoints[4199]); + builder.AddEndpoint(Endpoints[4200]); + builder.AddEndpoint(Endpoints[4201]); + builder.AddEndpoint(Endpoints[4202]); + builder.AddEndpoint(Endpoints[4203]); + builder.AddEndpoint(Endpoints[4204]); + builder.AddEndpoint(Endpoints[4205]); + builder.AddEndpoint(Endpoints[4206]); + builder.AddEndpoint(Endpoints[4207]); + builder.AddEndpoint(Endpoints[4208]); + builder.AddEndpoint(Endpoints[4209]); + builder.AddEndpoint(Endpoints[4210]); + builder.AddEndpoint(Endpoints[4211]); + builder.AddEndpoint(Endpoints[4212]); + builder.AddEndpoint(Endpoints[4213]); + builder.AddEndpoint(Endpoints[4214]); + builder.AddEndpoint(Endpoints[4215]); + builder.AddEndpoint(Endpoints[4216]); + builder.AddEndpoint(Endpoints[4217]); + builder.AddEndpoint(Endpoints[4218]); + builder.AddEndpoint(Endpoints[4219]); + builder.AddEndpoint(Endpoints[4220]); + builder.AddEndpoint(Endpoints[4221]); + builder.AddEndpoint(Endpoints[4222]); + builder.AddEndpoint(Endpoints[4223]); + builder.AddEndpoint(Endpoints[4224]); + builder.AddEndpoint(Endpoints[4225]); + builder.AddEndpoint(Endpoints[4226]); + builder.AddEndpoint(Endpoints[4227]); + builder.AddEndpoint(Endpoints[4228]); + builder.AddEndpoint(Endpoints[4229]); + builder.AddEndpoint(Endpoints[4230]); + builder.AddEndpoint(Endpoints[4231]); + builder.AddEndpoint(Endpoints[4232]); + builder.AddEndpoint(Endpoints[4233]); + builder.AddEndpoint(Endpoints[4234]); + builder.AddEndpoint(Endpoints[4235]); + builder.AddEndpoint(Endpoints[4236]); + builder.AddEndpoint(Endpoints[4237]); + builder.AddEndpoint(Endpoints[4238]); + builder.AddEndpoint(Endpoints[4239]); + builder.AddEndpoint(Endpoints[4240]); + builder.AddEndpoint(Endpoints[4241]); + builder.AddEndpoint(Endpoints[4242]); + builder.AddEndpoint(Endpoints[4243]); + builder.AddEndpoint(Endpoints[4244]); + builder.AddEndpoint(Endpoints[4245]); + builder.AddEndpoint(Endpoints[4246]); + builder.AddEndpoint(Endpoints[4247]); + builder.AddEndpoint(Endpoints[4248]); + builder.AddEndpoint(Endpoints[4249]); + builder.AddEndpoint(Endpoints[4250]); + builder.AddEndpoint(Endpoints[4251]); + builder.AddEndpoint(Endpoints[4252]); + builder.AddEndpoint(Endpoints[4253]); + builder.AddEndpoint(Endpoints[4254]); + builder.AddEndpoint(Endpoints[4255]); + builder.AddEndpoint(Endpoints[4256]); + builder.AddEndpoint(Endpoints[4257]); + builder.AddEndpoint(Endpoints[4258]); + builder.AddEndpoint(Endpoints[4259]); + builder.AddEndpoint(Endpoints[4260]); + builder.AddEndpoint(Endpoints[4261]); + builder.AddEndpoint(Endpoints[4262]); + builder.AddEndpoint(Endpoints[4263]); + builder.AddEndpoint(Endpoints[4264]); + builder.AddEndpoint(Endpoints[4265]); + builder.AddEndpoint(Endpoints[4266]); + builder.AddEndpoint(Endpoints[4267]); + builder.AddEndpoint(Endpoints[4268]); + builder.AddEndpoint(Endpoints[4269]); + builder.AddEndpoint(Endpoints[4270]); + builder.AddEndpoint(Endpoints[4271]); + builder.AddEndpoint(Endpoints[4272]); + builder.AddEndpoint(Endpoints[4273]); + builder.AddEndpoint(Endpoints[4274]); + builder.AddEndpoint(Endpoints[4275]); + builder.AddEndpoint(Endpoints[4276]); + builder.AddEndpoint(Endpoints[4277]); + builder.AddEndpoint(Endpoints[4278]); + builder.AddEndpoint(Endpoints[4279]); + builder.AddEndpoint(Endpoints[4280]); + builder.AddEndpoint(Endpoints[4281]); + builder.AddEndpoint(Endpoints[4282]); + builder.AddEndpoint(Endpoints[4283]); + builder.AddEndpoint(Endpoints[4284]); + builder.AddEndpoint(Endpoints[4285]); + builder.AddEndpoint(Endpoints[4286]); + builder.AddEndpoint(Endpoints[4287]); + builder.AddEndpoint(Endpoints[4288]); + builder.AddEndpoint(Endpoints[4289]); + builder.AddEndpoint(Endpoints[4290]); + builder.AddEndpoint(Endpoints[4291]); + builder.AddEndpoint(Endpoints[4292]); + builder.AddEndpoint(Endpoints[4293]); + builder.AddEndpoint(Endpoints[4294]); + builder.AddEndpoint(Endpoints[4295]); + builder.AddEndpoint(Endpoints[4296]); + builder.AddEndpoint(Endpoints[4297]); + builder.AddEndpoint(Endpoints[4298]); + builder.AddEndpoint(Endpoints[4299]); + builder.AddEndpoint(Endpoints[4300]); + builder.AddEndpoint(Endpoints[4301]); + builder.AddEndpoint(Endpoints[4302]); + builder.AddEndpoint(Endpoints[4303]); + builder.AddEndpoint(Endpoints[4304]); + builder.AddEndpoint(Endpoints[4305]); + builder.AddEndpoint(Endpoints[4306]); + builder.AddEndpoint(Endpoints[4307]); + builder.AddEndpoint(Endpoints[4308]); + builder.AddEndpoint(Endpoints[4309]); + builder.AddEndpoint(Endpoints[4310]); + builder.AddEndpoint(Endpoints[4311]); + builder.AddEndpoint(Endpoints[4312]); + builder.AddEndpoint(Endpoints[4313]); + builder.AddEndpoint(Endpoints[4314]); + builder.AddEndpoint(Endpoints[4315]); + builder.AddEndpoint(Endpoints[4316]); + builder.AddEndpoint(Endpoints[4317]); + builder.AddEndpoint(Endpoints[4318]); + builder.AddEndpoint(Endpoints[4319]); + builder.AddEndpoint(Endpoints[4320]); + builder.AddEndpoint(Endpoints[4321]); + builder.AddEndpoint(Endpoints[4322]); + builder.AddEndpoint(Endpoints[4323]); + builder.AddEndpoint(Endpoints[4324]); + builder.AddEndpoint(Endpoints[4325]); + builder.AddEndpoint(Endpoints[4326]); + builder.AddEndpoint(Endpoints[4327]); + builder.AddEndpoint(Endpoints[4328]); + builder.AddEndpoint(Endpoints[4329]); + builder.AddEndpoint(Endpoints[4330]); + builder.AddEndpoint(Endpoints[4331]); + builder.AddEndpoint(Endpoints[4332]); + builder.AddEndpoint(Endpoints[4333]); + builder.AddEndpoint(Endpoints[4334]); + builder.AddEndpoint(Endpoints[4335]); + builder.AddEndpoint(Endpoints[4336]); + builder.AddEndpoint(Endpoints[4337]); + builder.AddEndpoint(Endpoints[4338]); + builder.AddEndpoint(Endpoints[4339]); + builder.AddEndpoint(Endpoints[4340]); + builder.AddEndpoint(Endpoints[4341]); + builder.AddEndpoint(Endpoints[4342]); + builder.AddEndpoint(Endpoints[4343]); + builder.AddEndpoint(Endpoints[4344]); + builder.AddEndpoint(Endpoints[4345]); + builder.AddEndpoint(Endpoints[4346]); + builder.AddEndpoint(Endpoints[4347]); + builder.AddEndpoint(Endpoints[4348]); + builder.AddEndpoint(Endpoints[4349]); + builder.AddEndpoint(Endpoints[4350]); + builder.AddEndpoint(Endpoints[4351]); + builder.AddEndpoint(Endpoints[4352]); + builder.AddEndpoint(Endpoints[4353]); + builder.AddEndpoint(Endpoints[4354]); + builder.AddEndpoint(Endpoints[4355]); + builder.AddEndpoint(Endpoints[4356]); + builder.AddEndpoint(Endpoints[4357]); + builder.AddEndpoint(Endpoints[4358]); + builder.AddEndpoint(Endpoints[4359]); + builder.AddEndpoint(Endpoints[4360]); + builder.AddEndpoint(Endpoints[4361]); + builder.AddEndpoint(Endpoints[4362]); + builder.AddEndpoint(Endpoints[4363]); + builder.AddEndpoint(Endpoints[4364]); + builder.AddEndpoint(Endpoints[4365]); + builder.AddEndpoint(Endpoints[4366]); + builder.AddEndpoint(Endpoints[4367]); + builder.AddEndpoint(Endpoints[4368]); + builder.AddEndpoint(Endpoints[4369]); + builder.AddEndpoint(Endpoints[4370]); + builder.AddEndpoint(Endpoints[4371]); + builder.AddEndpoint(Endpoints[4372]); + builder.AddEndpoint(Endpoints[4373]); + builder.AddEndpoint(Endpoints[4374]); + builder.AddEndpoint(Endpoints[4375]); + builder.AddEndpoint(Endpoints[4376]); + builder.AddEndpoint(Endpoints[4377]); + builder.AddEndpoint(Endpoints[4378]); + builder.AddEndpoint(Endpoints[4379]); + builder.AddEndpoint(Endpoints[4380]); + builder.AddEndpoint(Endpoints[4381]); + builder.AddEndpoint(Endpoints[4382]); + builder.AddEndpoint(Endpoints[4383]); + builder.AddEndpoint(Endpoints[4384]); + builder.AddEndpoint(Endpoints[4385]); + builder.AddEndpoint(Endpoints[4386]); + builder.AddEndpoint(Endpoints[4387]); + builder.AddEndpoint(Endpoints[4388]); + builder.AddEndpoint(Endpoints[4389]); + builder.AddEndpoint(Endpoints[4390]); + builder.AddEndpoint(Endpoints[4391]); + builder.AddEndpoint(Endpoints[4392]); + builder.AddEndpoint(Endpoints[4393]); + builder.AddEndpoint(Endpoints[4394]); + builder.AddEndpoint(Endpoints[4395]); + builder.AddEndpoint(Endpoints[4396]); + builder.AddEndpoint(Endpoints[4397]); + builder.AddEndpoint(Endpoints[4398]); + builder.AddEndpoint(Endpoints[4399]); + builder.AddEndpoint(Endpoints[4400]); + builder.AddEndpoint(Endpoints[4401]); + builder.AddEndpoint(Endpoints[4402]); + builder.AddEndpoint(Endpoints[4403]); + builder.AddEndpoint(Endpoints[4404]); + builder.AddEndpoint(Endpoints[4405]); + builder.AddEndpoint(Endpoints[4406]); + builder.AddEndpoint(Endpoints[4407]); + builder.AddEndpoint(Endpoints[4408]); + builder.AddEndpoint(Endpoints[4409]); + builder.AddEndpoint(Endpoints[4410]); + builder.AddEndpoint(Endpoints[4411]); + builder.AddEndpoint(Endpoints[4412]); + builder.AddEndpoint(Endpoints[4413]); + builder.AddEndpoint(Endpoints[4414]); + builder.AddEndpoint(Endpoints[4415]); + builder.AddEndpoint(Endpoints[4416]); + builder.AddEndpoint(Endpoints[4417]); + builder.AddEndpoint(Endpoints[4418]); + builder.AddEndpoint(Endpoints[4419]); + builder.AddEndpoint(Endpoints[4420]); + builder.AddEndpoint(Endpoints[4421]); + builder.AddEndpoint(Endpoints[4422]); + builder.AddEndpoint(Endpoints[4423]); + builder.AddEndpoint(Endpoints[4424]); + builder.AddEndpoint(Endpoints[4425]); + builder.AddEndpoint(Endpoints[4426]); + builder.AddEndpoint(Endpoints[4427]); + builder.AddEndpoint(Endpoints[4428]); + builder.AddEndpoint(Endpoints[4429]); + builder.AddEndpoint(Endpoints[4430]); + builder.AddEndpoint(Endpoints[4431]); + builder.AddEndpoint(Endpoints[4432]); + builder.AddEndpoint(Endpoints[4433]); + builder.AddEndpoint(Endpoints[4434]); + builder.AddEndpoint(Endpoints[4435]); + builder.AddEndpoint(Endpoints[4436]); + builder.AddEndpoint(Endpoints[4437]); + builder.AddEndpoint(Endpoints[4438]); + builder.AddEndpoint(Endpoints[4439]); + builder.AddEndpoint(Endpoints[4440]); + builder.AddEndpoint(Endpoints[4441]); + builder.AddEndpoint(Endpoints[4442]); + builder.AddEndpoint(Endpoints[4443]); + builder.AddEndpoint(Endpoints[4444]); + builder.AddEndpoint(Endpoints[4445]); + builder.AddEndpoint(Endpoints[4446]); + builder.AddEndpoint(Endpoints[4447]); + builder.AddEndpoint(Endpoints[4448]); + builder.AddEndpoint(Endpoints[4449]); + builder.AddEndpoint(Endpoints[4450]); + builder.AddEndpoint(Endpoints[4451]); + builder.AddEndpoint(Endpoints[4452]); + builder.AddEndpoint(Endpoints[4453]); + builder.AddEndpoint(Endpoints[4454]); + builder.AddEndpoint(Endpoints[4455]); + builder.AddEndpoint(Endpoints[4456]); + builder.AddEndpoint(Endpoints[4457]); + builder.AddEndpoint(Endpoints[4458]); + builder.AddEndpoint(Endpoints[4459]); + builder.AddEndpoint(Endpoints[4460]); + builder.AddEndpoint(Endpoints[4461]); + builder.AddEndpoint(Endpoints[4462]); + builder.AddEndpoint(Endpoints[4463]); + builder.AddEndpoint(Endpoints[4464]); + builder.AddEndpoint(Endpoints[4465]); + builder.AddEndpoint(Endpoints[4466]); + builder.AddEndpoint(Endpoints[4467]); + builder.AddEndpoint(Endpoints[4468]); + builder.AddEndpoint(Endpoints[4469]); + builder.AddEndpoint(Endpoints[4470]); + builder.AddEndpoint(Endpoints[4471]); + builder.AddEndpoint(Endpoints[4472]); + builder.AddEndpoint(Endpoints[4473]); + builder.AddEndpoint(Endpoints[4474]); + builder.AddEndpoint(Endpoints[4475]); + builder.AddEndpoint(Endpoints[4476]); + builder.AddEndpoint(Endpoints[4477]); + builder.AddEndpoint(Endpoints[4478]); + builder.AddEndpoint(Endpoints[4479]); + builder.AddEndpoint(Endpoints[4480]); + builder.AddEndpoint(Endpoints[4481]); + builder.AddEndpoint(Endpoints[4482]); + builder.AddEndpoint(Endpoints[4483]); + builder.AddEndpoint(Endpoints[4484]); + builder.AddEndpoint(Endpoints[4485]); + builder.AddEndpoint(Endpoints[4486]); + builder.AddEndpoint(Endpoints[4487]); + builder.AddEndpoint(Endpoints[4488]); + builder.AddEndpoint(Endpoints[4489]); + builder.AddEndpoint(Endpoints[4490]); + builder.AddEndpoint(Endpoints[4491]); + builder.AddEndpoint(Endpoints[4492]); + builder.AddEndpoint(Endpoints[4493]); + builder.AddEndpoint(Endpoints[4494]); + builder.AddEndpoint(Endpoints[4495]); + builder.AddEndpoint(Endpoints[4496]); + builder.AddEndpoint(Endpoints[4497]); + builder.AddEndpoint(Endpoints[4498]); + builder.AddEndpoint(Endpoints[4499]); + builder.AddEndpoint(Endpoints[4500]); + builder.AddEndpoint(Endpoints[4501]); + builder.AddEndpoint(Endpoints[4502]); + builder.AddEndpoint(Endpoints[4503]); + builder.AddEndpoint(Endpoints[4504]); + builder.AddEndpoint(Endpoints[4505]); + builder.AddEndpoint(Endpoints[4506]); + builder.AddEndpoint(Endpoints[4507]); + builder.AddEndpoint(Endpoints[4508]); + builder.AddEndpoint(Endpoints[4509]); + builder.AddEndpoint(Endpoints[4510]); + builder.AddEndpoint(Endpoints[4511]); + builder.AddEndpoint(Endpoints[4512]); + builder.AddEndpoint(Endpoints[4513]); + builder.AddEndpoint(Endpoints[4514]); + builder.AddEndpoint(Endpoints[4515]); + builder.AddEndpoint(Endpoints[4516]); + builder.AddEndpoint(Endpoints[4517]); + builder.AddEndpoint(Endpoints[4518]); + builder.AddEndpoint(Endpoints[4519]); + builder.AddEndpoint(Endpoints[4520]); + builder.AddEndpoint(Endpoints[4521]); + builder.AddEndpoint(Endpoints[4522]); + builder.AddEndpoint(Endpoints[4523]); + builder.AddEndpoint(Endpoints[4524]); + builder.AddEndpoint(Endpoints[4525]); + builder.AddEndpoint(Endpoints[4526]); + builder.AddEndpoint(Endpoints[4527]); + builder.AddEndpoint(Endpoints[4528]); + builder.AddEndpoint(Endpoints[4529]); + builder.AddEndpoint(Endpoints[4530]); + builder.AddEndpoint(Endpoints[4531]); + builder.AddEndpoint(Endpoints[4532]); + builder.AddEndpoint(Endpoints[4533]); + builder.AddEndpoint(Endpoints[4534]); + builder.AddEndpoint(Endpoints[4535]); + builder.AddEndpoint(Endpoints[4536]); + builder.AddEndpoint(Endpoints[4537]); + builder.AddEndpoint(Endpoints[4538]); + builder.AddEndpoint(Endpoints[4539]); + builder.AddEndpoint(Endpoints[4540]); + builder.AddEndpoint(Endpoints[4541]); + builder.AddEndpoint(Endpoints[4542]); + builder.AddEndpoint(Endpoints[4543]); + builder.AddEndpoint(Endpoints[4544]); + builder.AddEndpoint(Endpoints[4545]); + builder.AddEndpoint(Endpoints[4546]); + builder.AddEndpoint(Endpoints[4547]); + builder.AddEndpoint(Endpoints[4548]); + builder.AddEndpoint(Endpoints[4549]); + builder.AddEndpoint(Endpoints[4550]); + builder.AddEndpoint(Endpoints[4551]); + builder.AddEndpoint(Endpoints[4552]); + builder.AddEndpoint(Endpoints[4553]); + builder.AddEndpoint(Endpoints[4554]); + builder.AddEndpoint(Endpoints[4555]); + builder.AddEndpoint(Endpoints[4556]); + builder.AddEndpoint(Endpoints[4557]); + builder.AddEndpoint(Endpoints[4558]); + builder.AddEndpoint(Endpoints[4559]); + builder.AddEndpoint(Endpoints[4560]); + builder.AddEndpoint(Endpoints[4561]); + builder.AddEndpoint(Endpoints[4562]); + builder.AddEndpoint(Endpoints[4563]); + builder.AddEndpoint(Endpoints[4564]); + builder.AddEndpoint(Endpoints[4565]); + builder.AddEndpoint(Endpoints[4566]); + builder.AddEndpoint(Endpoints[4567]); + builder.AddEndpoint(Endpoints[4568]); + builder.AddEndpoint(Endpoints[4569]); + builder.AddEndpoint(Endpoints[4570]); + builder.AddEndpoint(Endpoints[4571]); + builder.AddEndpoint(Endpoints[4572]); + builder.AddEndpoint(Endpoints[4573]); + builder.AddEndpoint(Endpoints[4574]); + builder.AddEndpoint(Endpoints[4575]); + builder.AddEndpoint(Endpoints[4576]); + builder.AddEndpoint(Endpoints[4577]); + builder.AddEndpoint(Endpoints[4578]); + builder.AddEndpoint(Endpoints[4579]); + builder.AddEndpoint(Endpoints[4580]); + builder.AddEndpoint(Endpoints[4581]); + builder.AddEndpoint(Endpoints[4582]); + builder.AddEndpoint(Endpoints[4583]); + builder.AddEndpoint(Endpoints[4584]); + builder.AddEndpoint(Endpoints[4585]); + builder.AddEndpoint(Endpoints[4586]); + builder.AddEndpoint(Endpoints[4587]); + builder.AddEndpoint(Endpoints[4588]); + builder.AddEndpoint(Endpoints[4589]); + builder.AddEndpoint(Endpoints[4590]); + builder.AddEndpoint(Endpoints[4591]); + builder.AddEndpoint(Endpoints[4592]); + builder.AddEndpoint(Endpoints[4593]); + builder.AddEndpoint(Endpoints[4594]); + builder.AddEndpoint(Endpoints[4595]); + builder.AddEndpoint(Endpoints[4596]); + builder.AddEndpoint(Endpoints[4597]); + builder.AddEndpoint(Endpoints[4598]); + builder.AddEndpoint(Endpoints[4599]); + builder.AddEndpoint(Endpoints[4600]); + builder.AddEndpoint(Endpoints[4601]); + builder.AddEndpoint(Endpoints[4602]); + builder.AddEndpoint(Endpoints[4603]); + builder.AddEndpoint(Endpoints[4604]); + builder.AddEndpoint(Endpoints[4605]); + builder.AddEndpoint(Endpoints[4606]); + builder.AddEndpoint(Endpoints[4607]); + builder.AddEndpoint(Endpoints[4608]); + builder.AddEndpoint(Endpoints[4609]); + builder.AddEndpoint(Endpoints[4610]); + builder.AddEndpoint(Endpoints[4611]); + builder.AddEndpoint(Endpoints[4612]); + builder.AddEndpoint(Endpoints[4613]); + builder.AddEndpoint(Endpoints[4614]); + builder.AddEndpoint(Endpoints[4615]); + builder.AddEndpoint(Endpoints[4616]); + builder.AddEndpoint(Endpoints[4617]); + builder.AddEndpoint(Endpoints[4618]); + builder.AddEndpoint(Endpoints[4619]); + builder.AddEndpoint(Endpoints[4620]); + builder.AddEndpoint(Endpoints[4621]); + builder.AddEndpoint(Endpoints[4622]); + builder.AddEndpoint(Endpoints[4623]); + builder.AddEndpoint(Endpoints[4624]); + builder.AddEndpoint(Endpoints[4625]); + builder.AddEndpoint(Endpoints[4626]); + builder.AddEndpoint(Endpoints[4627]); + builder.AddEndpoint(Endpoints[4628]); + builder.AddEndpoint(Endpoints[4629]); + builder.AddEndpoint(Endpoints[4630]); + builder.AddEndpoint(Endpoints[4631]); + builder.AddEndpoint(Endpoints[4632]); + builder.AddEndpoint(Endpoints[4633]); + builder.AddEndpoint(Endpoints[4634]); + builder.AddEndpoint(Endpoints[4635]); + builder.AddEndpoint(Endpoints[4636]); + builder.AddEndpoint(Endpoints[4637]); + builder.AddEndpoint(Endpoints[4638]); + builder.AddEndpoint(Endpoints[4639]); + builder.AddEndpoint(Endpoints[4640]); + builder.AddEndpoint(Endpoints[4641]); + builder.AddEndpoint(Endpoints[4642]); + builder.AddEndpoint(Endpoints[4643]); + builder.AddEndpoint(Endpoints[4644]); + builder.AddEndpoint(Endpoints[4645]); + builder.AddEndpoint(Endpoints[4646]); + builder.AddEndpoint(Endpoints[4647]); + builder.AddEndpoint(Endpoints[4648]); + builder.AddEndpoint(Endpoints[4649]); + builder.AddEndpoint(Endpoints[4650]); + builder.AddEndpoint(Endpoints[4651]); + builder.AddEndpoint(Endpoints[4652]); + builder.AddEndpoint(Endpoints[4653]); + builder.AddEndpoint(Endpoints[4654]); + builder.AddEndpoint(Endpoints[4655]); + builder.AddEndpoint(Endpoints[4656]); + builder.AddEndpoint(Endpoints[4657]); + builder.AddEndpoint(Endpoints[4658]); + builder.AddEndpoint(Endpoints[4659]); + builder.AddEndpoint(Endpoints[4660]); + builder.AddEndpoint(Endpoints[4661]); + builder.AddEndpoint(Endpoints[4662]); + builder.AddEndpoint(Endpoints[4663]); + builder.AddEndpoint(Endpoints[4664]); + builder.AddEndpoint(Endpoints[4665]); + builder.AddEndpoint(Endpoints[4666]); + builder.AddEndpoint(Endpoints[4667]); + builder.AddEndpoint(Endpoints[4668]); + builder.AddEndpoint(Endpoints[4669]); + builder.AddEndpoint(Endpoints[4670]); + builder.AddEndpoint(Endpoints[4671]); + builder.AddEndpoint(Endpoints[4672]); + builder.AddEndpoint(Endpoints[4673]); + builder.AddEndpoint(Endpoints[4674]); + builder.AddEndpoint(Endpoints[4675]); + builder.AddEndpoint(Endpoints[4676]); + builder.AddEndpoint(Endpoints[4677]); + builder.AddEndpoint(Endpoints[4678]); + builder.AddEndpoint(Endpoints[4679]); + builder.AddEndpoint(Endpoints[4680]); + builder.AddEndpoint(Endpoints[4681]); + builder.AddEndpoint(Endpoints[4682]); + builder.AddEndpoint(Endpoints[4683]); + builder.AddEndpoint(Endpoints[4684]); + builder.AddEndpoint(Endpoints[4685]); + builder.AddEndpoint(Endpoints[4686]); + builder.AddEndpoint(Endpoints[4687]); + builder.AddEndpoint(Endpoints[4688]); + builder.AddEndpoint(Endpoints[4689]); + builder.AddEndpoint(Endpoints[4690]); + builder.AddEndpoint(Endpoints[4691]); + builder.AddEndpoint(Endpoints[4692]); + builder.AddEndpoint(Endpoints[4693]); + builder.AddEndpoint(Endpoints[4694]); + builder.AddEndpoint(Endpoints[4695]); + builder.AddEndpoint(Endpoints[4696]); + builder.AddEndpoint(Endpoints[4697]); + builder.AddEndpoint(Endpoints[4698]); + builder.AddEndpoint(Endpoints[4699]); + builder.AddEndpoint(Endpoints[4700]); + builder.AddEndpoint(Endpoints[4701]); + builder.AddEndpoint(Endpoints[4702]); + builder.AddEndpoint(Endpoints[4703]); + builder.AddEndpoint(Endpoints[4704]); + builder.AddEndpoint(Endpoints[4705]); + builder.AddEndpoint(Endpoints[4706]); + builder.AddEndpoint(Endpoints[4707]); + builder.AddEndpoint(Endpoints[4708]); + builder.AddEndpoint(Endpoints[4709]); + builder.AddEndpoint(Endpoints[4710]); + builder.AddEndpoint(Endpoints[4711]); + builder.AddEndpoint(Endpoints[4712]); + builder.AddEndpoint(Endpoints[4713]); + builder.AddEndpoint(Endpoints[4714]); + builder.AddEndpoint(Endpoints[4715]); + builder.AddEndpoint(Endpoints[4716]); + builder.AddEndpoint(Endpoints[4717]); + builder.AddEndpoint(Endpoints[4718]); + builder.AddEndpoint(Endpoints[4719]); + builder.AddEndpoint(Endpoints[4720]); + builder.AddEndpoint(Endpoints[4721]); + builder.AddEndpoint(Endpoints[4722]); + builder.AddEndpoint(Endpoints[4723]); + builder.AddEndpoint(Endpoints[4724]); + builder.AddEndpoint(Endpoints[4725]); + builder.AddEndpoint(Endpoints[4726]); + builder.AddEndpoint(Endpoints[4727]); + builder.AddEndpoint(Endpoints[4728]); + builder.AddEndpoint(Endpoints[4729]); + builder.AddEndpoint(Endpoints[4730]); + builder.AddEndpoint(Endpoints[4731]); + builder.AddEndpoint(Endpoints[4732]); + builder.AddEndpoint(Endpoints[4733]); + builder.AddEndpoint(Endpoints[4734]); + builder.AddEndpoint(Endpoints[4735]); + builder.AddEndpoint(Endpoints[4736]); + builder.AddEndpoint(Endpoints[4737]); + builder.AddEndpoint(Endpoints[4738]); + builder.AddEndpoint(Endpoints[4739]); + builder.AddEndpoint(Endpoints[4740]); + builder.AddEndpoint(Endpoints[4741]); + builder.AddEndpoint(Endpoints[4742]); + builder.AddEndpoint(Endpoints[4743]); + builder.AddEndpoint(Endpoints[4744]); + builder.AddEndpoint(Endpoints[4745]); + builder.AddEndpoint(Endpoints[4746]); + builder.AddEndpoint(Endpoints[4747]); + builder.AddEndpoint(Endpoints[4748]); + builder.AddEndpoint(Endpoints[4749]); + builder.AddEndpoint(Endpoints[4750]); + builder.AddEndpoint(Endpoints[4751]); + builder.AddEndpoint(Endpoints[4752]); + builder.AddEndpoint(Endpoints[4753]); + builder.AddEndpoint(Endpoints[4754]); + builder.AddEndpoint(Endpoints[4755]); + builder.AddEndpoint(Endpoints[4756]); + builder.AddEndpoint(Endpoints[4757]); + builder.AddEndpoint(Endpoints[4758]); + builder.AddEndpoint(Endpoints[4759]); + builder.AddEndpoint(Endpoints[4760]); + builder.AddEndpoint(Endpoints[4761]); + builder.AddEndpoint(Endpoints[4762]); + builder.AddEndpoint(Endpoints[4763]); + builder.AddEndpoint(Endpoints[4764]); + builder.AddEndpoint(Endpoints[4765]); + builder.AddEndpoint(Endpoints[4766]); + builder.AddEndpoint(Endpoints[4767]); + builder.AddEndpoint(Endpoints[4768]); + builder.AddEndpoint(Endpoints[4769]); + builder.AddEndpoint(Endpoints[4770]); + builder.AddEndpoint(Endpoints[4771]); + builder.AddEndpoint(Endpoints[4772]); + builder.AddEndpoint(Endpoints[4773]); + builder.AddEndpoint(Endpoints[4774]); + builder.AddEndpoint(Endpoints[4775]); + builder.AddEndpoint(Endpoints[4776]); + builder.AddEndpoint(Endpoints[4777]); + builder.AddEndpoint(Endpoints[4778]); + builder.AddEndpoint(Endpoints[4779]); + builder.AddEndpoint(Endpoints[4780]); + builder.AddEndpoint(Endpoints[4781]); + builder.AddEndpoint(Endpoints[4782]); + builder.AddEndpoint(Endpoints[4783]); + builder.AddEndpoint(Endpoints[4784]); + builder.AddEndpoint(Endpoints[4785]); + builder.AddEndpoint(Endpoints[4786]); + builder.AddEndpoint(Endpoints[4787]); + builder.AddEndpoint(Endpoints[4788]); + builder.AddEndpoint(Endpoints[4789]); + builder.AddEndpoint(Endpoints[4790]); + builder.AddEndpoint(Endpoints[4791]); + builder.AddEndpoint(Endpoints[4792]); + builder.AddEndpoint(Endpoints[4793]); + builder.AddEndpoint(Endpoints[4794]); + builder.AddEndpoint(Endpoints[4795]); + builder.AddEndpoint(Endpoints[4796]); + builder.AddEndpoint(Endpoints[4797]); + builder.AddEndpoint(Endpoints[4798]); + builder.AddEndpoint(Endpoints[4799]); + builder.AddEndpoint(Endpoints[4800]); + builder.AddEndpoint(Endpoints[4801]); + builder.AddEndpoint(Endpoints[4802]); + builder.AddEndpoint(Endpoints[4803]); + builder.AddEndpoint(Endpoints[4804]); + builder.AddEndpoint(Endpoints[4805]); + builder.AddEndpoint(Endpoints[4806]); + builder.AddEndpoint(Endpoints[4807]); + builder.AddEndpoint(Endpoints[4808]); + builder.AddEndpoint(Endpoints[4809]); + builder.AddEndpoint(Endpoints[4810]); + builder.AddEndpoint(Endpoints[4811]); + builder.AddEndpoint(Endpoints[4812]); + builder.AddEndpoint(Endpoints[4813]); + builder.AddEndpoint(Endpoints[4814]); + builder.AddEndpoint(Endpoints[4815]); + builder.AddEndpoint(Endpoints[4816]); + builder.AddEndpoint(Endpoints[4817]); + builder.AddEndpoint(Endpoints[4818]); + builder.AddEndpoint(Endpoints[4819]); + builder.AddEndpoint(Endpoints[4820]); + builder.AddEndpoint(Endpoints[4821]); + builder.AddEndpoint(Endpoints[4822]); + builder.AddEndpoint(Endpoints[4823]); + builder.AddEndpoint(Endpoints[4824]); + builder.AddEndpoint(Endpoints[4825]); + builder.AddEndpoint(Endpoints[4826]); + builder.AddEndpoint(Endpoints[4827]); + builder.AddEndpoint(Endpoints[4828]); + builder.AddEndpoint(Endpoints[4829]); + builder.AddEndpoint(Endpoints[4830]); + builder.AddEndpoint(Endpoints[4831]); + builder.AddEndpoint(Endpoints[4832]); + builder.AddEndpoint(Endpoints[4833]); + builder.AddEndpoint(Endpoints[4834]); + builder.AddEndpoint(Endpoints[4835]); + builder.AddEndpoint(Endpoints[4836]); + builder.AddEndpoint(Endpoints[4837]); + builder.AddEndpoint(Endpoints[4838]); + builder.AddEndpoint(Endpoints[4839]); + builder.AddEndpoint(Endpoints[4840]); + builder.AddEndpoint(Endpoints[4841]); + builder.AddEndpoint(Endpoints[4842]); + builder.AddEndpoint(Endpoints[4843]); + builder.AddEndpoint(Endpoints[4844]); + builder.AddEndpoint(Endpoints[4845]); + builder.AddEndpoint(Endpoints[4846]); + builder.AddEndpoint(Endpoints[4847]); + builder.AddEndpoint(Endpoints[4848]); + builder.AddEndpoint(Endpoints[4849]); + builder.AddEndpoint(Endpoints[4850]); + builder.AddEndpoint(Endpoints[4851]); + builder.AddEndpoint(Endpoints[4852]); + builder.AddEndpoint(Endpoints[4853]); + builder.AddEndpoint(Endpoints[4854]); + builder.AddEndpoint(Endpoints[4855]); + builder.AddEndpoint(Endpoints[4856]); + builder.AddEndpoint(Endpoints[4857]); + builder.AddEndpoint(Endpoints[4858]); + builder.AddEndpoint(Endpoints[4859]); + builder.AddEndpoint(Endpoints[4860]); + builder.AddEndpoint(Endpoints[4861]); + builder.AddEndpoint(Endpoints[4862]); + builder.AddEndpoint(Endpoints[4863]); + builder.AddEndpoint(Endpoints[4864]); + builder.AddEndpoint(Endpoints[4865]); + builder.AddEndpoint(Endpoints[4866]); + builder.AddEndpoint(Endpoints[4867]); + builder.AddEndpoint(Endpoints[4868]); + builder.AddEndpoint(Endpoints[4869]); + builder.AddEndpoint(Endpoints[4870]); + builder.AddEndpoint(Endpoints[4871]); + builder.AddEndpoint(Endpoints[4872]); + builder.AddEndpoint(Endpoints[4873]); + builder.AddEndpoint(Endpoints[4874]); + builder.AddEndpoint(Endpoints[4875]); + builder.AddEndpoint(Endpoints[4876]); + builder.AddEndpoint(Endpoints[4877]); + builder.AddEndpoint(Endpoints[4878]); + builder.AddEndpoint(Endpoints[4879]); + builder.AddEndpoint(Endpoints[4880]); + builder.AddEndpoint(Endpoints[4881]); + builder.AddEndpoint(Endpoints[4882]); + builder.AddEndpoint(Endpoints[4883]); + builder.AddEndpoint(Endpoints[4884]); + builder.AddEndpoint(Endpoints[4885]); + builder.AddEndpoint(Endpoints[4886]); + builder.AddEndpoint(Endpoints[4887]); + builder.AddEndpoint(Endpoints[4888]); + builder.AddEndpoint(Endpoints[4889]); + builder.AddEndpoint(Endpoints[4890]); + builder.AddEndpoint(Endpoints[4891]); + builder.AddEndpoint(Endpoints[4892]); + builder.AddEndpoint(Endpoints[4893]); + builder.AddEndpoint(Endpoints[4894]); + builder.AddEndpoint(Endpoints[4895]); + builder.AddEndpoint(Endpoints[4896]); + builder.AddEndpoint(Endpoints[4897]); + builder.AddEndpoint(Endpoints[4898]); + builder.AddEndpoint(Endpoints[4899]); + builder.AddEndpoint(Endpoints[4900]); + builder.AddEndpoint(Endpoints[4901]); + builder.AddEndpoint(Endpoints[4902]); + builder.AddEndpoint(Endpoints[4903]); + builder.AddEndpoint(Endpoints[4904]); + builder.AddEndpoint(Endpoints[4905]); + builder.AddEndpoint(Endpoints[4906]); + builder.AddEndpoint(Endpoints[4907]); + builder.AddEndpoint(Endpoints[4908]); + builder.AddEndpoint(Endpoints[4909]); + builder.AddEndpoint(Endpoints[4910]); + builder.AddEndpoint(Endpoints[4911]); + builder.AddEndpoint(Endpoints[4912]); + builder.AddEndpoint(Endpoints[4913]); + builder.AddEndpoint(Endpoints[4914]); + builder.AddEndpoint(Endpoints[4915]); + builder.AddEndpoint(Endpoints[4916]); + builder.AddEndpoint(Endpoints[4917]); + builder.AddEndpoint(Endpoints[4918]); + builder.AddEndpoint(Endpoints[4919]); + builder.AddEndpoint(Endpoints[4920]); + builder.AddEndpoint(Endpoints[4921]); + builder.AddEndpoint(Endpoints[4922]); + builder.AddEndpoint(Endpoints[4923]); + builder.AddEndpoint(Endpoints[4924]); + builder.AddEndpoint(Endpoints[4925]); + builder.AddEndpoint(Endpoints[4926]); + builder.AddEndpoint(Endpoints[4927]); + builder.AddEndpoint(Endpoints[4928]); + builder.AddEndpoint(Endpoints[4929]); + builder.AddEndpoint(Endpoints[4930]); + builder.AddEndpoint(Endpoints[4931]); + builder.AddEndpoint(Endpoints[4932]); + builder.AddEndpoint(Endpoints[4933]); + builder.AddEndpoint(Endpoints[4934]); + builder.AddEndpoint(Endpoints[4935]); + builder.AddEndpoint(Endpoints[4936]); + builder.AddEndpoint(Endpoints[4937]); + builder.AddEndpoint(Endpoints[4938]); + builder.AddEndpoint(Endpoints[4939]); + builder.AddEndpoint(Endpoints[4940]); + builder.AddEndpoint(Endpoints[4941]); + builder.AddEndpoint(Endpoints[4942]); + builder.AddEndpoint(Endpoints[4943]); + builder.AddEndpoint(Endpoints[4944]); + builder.AddEndpoint(Endpoints[4945]); + builder.AddEndpoint(Endpoints[4946]); + builder.AddEndpoint(Endpoints[4947]); + builder.AddEndpoint(Endpoints[4948]); + builder.AddEndpoint(Endpoints[4949]); + builder.AddEndpoint(Endpoints[4950]); + builder.AddEndpoint(Endpoints[4951]); + builder.AddEndpoint(Endpoints[4952]); + builder.AddEndpoint(Endpoints[4953]); + builder.AddEndpoint(Endpoints[4954]); + builder.AddEndpoint(Endpoints[4955]); + builder.AddEndpoint(Endpoints[4956]); + builder.AddEndpoint(Endpoints[4957]); + builder.AddEndpoint(Endpoints[4958]); + builder.AddEndpoint(Endpoints[4959]); + builder.AddEndpoint(Endpoints[4960]); + builder.AddEndpoint(Endpoints[4961]); + builder.AddEndpoint(Endpoints[4962]); + builder.AddEndpoint(Endpoints[4963]); + builder.AddEndpoint(Endpoints[4964]); + builder.AddEndpoint(Endpoints[4965]); + builder.AddEndpoint(Endpoints[4966]); + builder.AddEndpoint(Endpoints[4967]); + builder.AddEndpoint(Endpoints[4968]); + builder.AddEndpoint(Endpoints[4969]); + builder.AddEndpoint(Endpoints[4970]); + builder.AddEndpoint(Endpoints[4971]); + builder.AddEndpoint(Endpoints[4972]); + builder.AddEndpoint(Endpoints[4973]); + builder.AddEndpoint(Endpoints[4974]); + builder.AddEndpoint(Endpoints[4975]); + builder.AddEndpoint(Endpoints[4976]); + builder.AddEndpoint(Endpoints[4977]); + builder.AddEndpoint(Endpoints[4978]); + builder.AddEndpoint(Endpoints[4979]); + builder.AddEndpoint(Endpoints[4980]); + builder.AddEndpoint(Endpoints[4981]); + builder.AddEndpoint(Endpoints[4982]); + builder.AddEndpoint(Endpoints[4983]); + builder.AddEndpoint(Endpoints[4984]); + builder.AddEndpoint(Endpoints[4985]); + builder.AddEndpoint(Endpoints[4986]); + builder.AddEndpoint(Endpoints[4987]); + builder.AddEndpoint(Endpoints[4988]); + builder.AddEndpoint(Endpoints[4989]); + builder.AddEndpoint(Endpoints[4990]); + builder.AddEndpoint(Endpoints[4991]); + builder.AddEndpoint(Endpoints[4992]); + builder.AddEndpoint(Endpoints[4993]); + builder.AddEndpoint(Endpoints[4994]); + builder.AddEndpoint(Endpoints[4995]); + builder.AddEndpoint(Endpoints[4996]); + builder.AddEndpoint(Endpoints[4997]); + builder.AddEndpoint(Endpoints[4998]); + builder.AddEndpoint(Endpoints[4999]); + builder.AddEndpoint(Endpoints[5000]); + builder.AddEndpoint(Endpoints[5001]); + builder.AddEndpoint(Endpoints[5002]); + builder.AddEndpoint(Endpoints[5003]); + builder.AddEndpoint(Endpoints[5004]); + builder.AddEndpoint(Endpoints[5005]); + builder.AddEndpoint(Endpoints[5006]); + builder.AddEndpoint(Endpoints[5007]); + builder.AddEndpoint(Endpoints[5008]); + builder.AddEndpoint(Endpoints[5009]); + builder.AddEndpoint(Endpoints[5010]); + builder.AddEndpoint(Endpoints[5011]); + builder.AddEndpoint(Endpoints[5012]); + builder.AddEndpoint(Endpoints[5013]); + builder.AddEndpoint(Endpoints[5014]); + builder.AddEndpoint(Endpoints[5015]); + builder.AddEndpoint(Endpoints[5016]); + builder.AddEndpoint(Endpoints[5017]); + builder.AddEndpoint(Endpoints[5018]); + builder.AddEndpoint(Endpoints[5019]); + builder.AddEndpoint(Endpoints[5020]); + builder.AddEndpoint(Endpoints[5021]); + builder.AddEndpoint(Endpoints[5022]); + builder.AddEndpoint(Endpoints[5023]); + builder.AddEndpoint(Endpoints[5024]); + builder.AddEndpoint(Endpoints[5025]); + builder.AddEndpoint(Endpoints[5026]); + builder.AddEndpoint(Endpoints[5027]); + builder.AddEndpoint(Endpoints[5028]); + builder.AddEndpoint(Endpoints[5029]); + builder.AddEndpoint(Endpoints[5030]); + builder.AddEndpoint(Endpoints[5031]); + builder.AddEndpoint(Endpoints[5032]); + builder.AddEndpoint(Endpoints[5033]); + builder.AddEndpoint(Endpoints[5034]); + builder.AddEndpoint(Endpoints[5035]); + builder.AddEndpoint(Endpoints[5036]); + builder.AddEndpoint(Endpoints[5037]); + builder.AddEndpoint(Endpoints[5038]); + builder.AddEndpoint(Endpoints[5039]); + builder.AddEndpoint(Endpoints[5040]); + builder.AddEndpoint(Endpoints[5041]); + builder.AddEndpoint(Endpoints[5042]); + builder.AddEndpoint(Endpoints[5043]); + builder.AddEndpoint(Endpoints[5044]); + builder.AddEndpoint(Endpoints[5045]); + builder.AddEndpoint(Endpoints[5046]); + builder.AddEndpoint(Endpoints[5047]); + builder.AddEndpoint(Endpoints[5048]); + builder.AddEndpoint(Endpoints[5049]); + builder.AddEndpoint(Endpoints[5050]); + builder.AddEndpoint(Endpoints[5051]); + builder.AddEndpoint(Endpoints[5052]); + builder.AddEndpoint(Endpoints[5053]); + builder.AddEndpoint(Endpoints[5054]); + builder.AddEndpoint(Endpoints[5055]); + builder.AddEndpoint(Endpoints[5056]); + builder.AddEndpoint(Endpoints[5057]); + builder.AddEndpoint(Endpoints[5058]); + builder.AddEndpoint(Endpoints[5059]); + builder.AddEndpoint(Endpoints[5060]); + builder.AddEndpoint(Endpoints[5061]); + builder.AddEndpoint(Endpoints[5062]); + builder.AddEndpoint(Endpoints[5063]); + builder.AddEndpoint(Endpoints[5064]); + builder.AddEndpoint(Endpoints[5065]); + builder.AddEndpoint(Endpoints[5066]); + builder.AddEndpoint(Endpoints[5067]); + builder.AddEndpoint(Endpoints[5068]); + builder.AddEndpoint(Endpoints[5069]); + builder.AddEndpoint(Endpoints[5070]); + builder.AddEndpoint(Endpoints[5071]); + builder.AddEndpoint(Endpoints[5072]); + builder.AddEndpoint(Endpoints[5073]); + builder.AddEndpoint(Endpoints[5074]); + builder.AddEndpoint(Endpoints[5075]); + builder.AddEndpoint(Endpoints[5076]); + builder.AddEndpoint(Endpoints[5077]); + builder.AddEndpoint(Endpoints[5078]); + builder.AddEndpoint(Endpoints[5079]); + builder.AddEndpoint(Endpoints[5080]); + builder.AddEndpoint(Endpoints[5081]); + builder.AddEndpoint(Endpoints[5082]); + builder.AddEndpoint(Endpoints[5083]); + builder.AddEndpoint(Endpoints[5084]); + builder.AddEndpoint(Endpoints[5085]); + builder.AddEndpoint(Endpoints[5086]); + builder.AddEndpoint(Endpoints[5087]); + builder.AddEndpoint(Endpoints[5088]); + builder.AddEndpoint(Endpoints[5089]); + builder.AddEndpoint(Endpoints[5090]); + builder.AddEndpoint(Endpoints[5091]); + builder.AddEndpoint(Endpoints[5092]); + builder.AddEndpoint(Endpoints[5093]); + builder.AddEndpoint(Endpoints[5094]); + builder.AddEndpoint(Endpoints[5095]); + builder.AddEndpoint(Endpoints[5096]); + builder.AddEndpoint(Endpoints[5097]); + builder.AddEndpoint(Endpoints[5098]); + builder.AddEndpoint(Endpoints[5099]); + builder.AddEndpoint(Endpoints[5100]); + builder.AddEndpoint(Endpoints[5101]); + builder.AddEndpoint(Endpoints[5102]); + builder.AddEndpoint(Endpoints[5103]); + builder.AddEndpoint(Endpoints[5104]); + builder.AddEndpoint(Endpoints[5105]); + builder.AddEndpoint(Endpoints[5106]); + builder.AddEndpoint(Endpoints[5107]); + builder.AddEndpoint(Endpoints[5108]); + builder.AddEndpoint(Endpoints[5109]); + builder.AddEndpoint(Endpoints[5110]); + builder.AddEndpoint(Endpoints[5111]); + builder.AddEndpoint(Endpoints[5112]); + builder.AddEndpoint(Endpoints[5113]); + builder.AddEndpoint(Endpoints[5114]); + builder.AddEndpoint(Endpoints[5115]); + builder.AddEndpoint(Endpoints[5116]); + builder.AddEndpoint(Endpoints[5117]); + builder.AddEndpoint(Endpoints[5118]); + builder.AddEndpoint(Endpoints[5119]); + builder.AddEndpoint(Endpoints[5120]); + builder.AddEndpoint(Endpoints[5121]); + builder.AddEndpoint(Endpoints[5122]); + builder.AddEndpoint(Endpoints[5123]); + builder.AddEndpoint(Endpoints[5124]); + builder.AddEndpoint(Endpoints[5125]); + builder.AddEndpoint(Endpoints[5126]); + builder.AddEndpoint(Endpoints[5127]); + builder.AddEndpoint(Endpoints[5128]); + builder.AddEndpoint(Endpoints[5129]); + builder.AddEndpoint(Endpoints[5130]); + builder.AddEndpoint(Endpoints[5131]); + builder.AddEndpoint(Endpoints[5132]); + builder.AddEndpoint(Endpoints[5133]); + builder.AddEndpoint(Endpoints[5134]); + builder.AddEndpoint(Endpoints[5135]); + builder.AddEndpoint(Endpoints[5136]); + builder.AddEndpoint(Endpoints[5137]); + builder.AddEndpoint(Endpoints[5138]); + builder.AddEndpoint(Endpoints[5139]); + builder.AddEndpoint(Endpoints[5140]); + builder.AddEndpoint(Endpoints[5141]); + builder.AddEndpoint(Endpoints[5142]); + builder.AddEndpoint(Endpoints[5143]); + builder.AddEndpoint(Endpoints[5144]); + builder.AddEndpoint(Endpoints[5145]); + builder.AddEndpoint(Endpoints[5146]); + builder.AddEndpoint(Endpoints[5147]); + builder.AddEndpoint(Endpoints[5148]); + builder.AddEndpoint(Endpoints[5149]); + builder.AddEndpoint(Endpoints[5150]); + builder.AddEndpoint(Endpoints[5151]); + builder.AddEndpoint(Endpoints[5152]); + builder.AddEndpoint(Endpoints[5153]); + builder.AddEndpoint(Endpoints[5154]); + builder.AddEndpoint(Endpoints[5155]); + builder.AddEndpoint(Endpoints[5156]); + builder.AddEndpoint(Endpoints[5157]); + builder.AddEndpoint(Endpoints[5158]); + builder.AddEndpoint(Endpoints[5159]); + return builder.Build(); + } + } +} \ No newline at end of file diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherBuilderAzureBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherBuilderAzureBenchmark.cs new file mode 100644 index 0000000000..a839075c82 --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherBuilderAzureBenchmark.cs @@ -0,0 +1,31 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using BenchmarkDotNet.Attributes; +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // Generated from https://github.com/APIs-guru/openapi-directory + // Use https://editor2.swagger.io/ to convert from yaml to json- + public class MatcherBuilderAzureBenchmark : MatcherAzureBenchmarkBase + { + private IServiceProvider _services; + + [GlobalSetup] + public void Setup() + { + SetupEndpoints(); + + _services = CreateServices(); + } + + [Benchmark] + public void Dfa() + { + var builder = _services.GetRequiredService(); + SetupMatcher(builder); + } + } +} \ No newline at end of file diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherBuilderGithubBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherBuilderGithubBenchmark.cs new file mode 100644 index 0000000000..4e0244e46e --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherBuilderGithubBenchmark.cs @@ -0,0 +1,31 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using BenchmarkDotNet.Attributes; +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // Generated from https://github.com/APIs-guru/openapi-directory + // Use https://editor2.swagger.io/ to convert from yaml to json- + public class MatcherBuilderGithubBenchmark : MatcherGithubBenchmarkBase + { + private IServiceProvider _services; + + [GlobalSetup] + public void Setup() + { + SetupEndpoints(); + + _services = CreateServices(); + } + + [Benchmark] + public void Dfa() + { + var builder = _services.GetRequiredService(); + SetupMatcher(builder); + } + } +} \ No newline at end of file diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherBuilderMultipleEntryBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherBuilderMultipleEntryBenchmark.cs new file mode 100644 index 0000000000..23f1bf0729 --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherBuilderMultipleEntryBenchmark.cs @@ -0,0 +1,208 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using BenchmarkDotNet.Attributes; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.TestObjects; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Microsoft.Extensions.Options; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public partial class MatcherBuilderMultipleEntryBenchmark : EndpointRoutingBenchmarkBase + { + private IServiceProvider _services; + private List _policies; + private ILoggerFactory _loggerFactory; + private DefaultEndpointSelector _selector; + private DefaultParameterPolicyFactory _parameterPolicyFactory; + + [GlobalSetup] + public void Setup() + { + Endpoints = new RouteEndpoint[10]; + Endpoints[0] = CreateEndpoint("/product", "GET"); + Endpoints[1] = CreateEndpoint("/product/{id}", "GET"); + + Endpoints[2] = CreateEndpoint("/account", "GET"); + Endpoints[3] = CreateEndpoint("/account/{id}"); + Endpoints[4] = CreateEndpoint("/account/{id}", "POST"); + Endpoints[5] = CreateEndpoint("/account/{id}", "UPDATE"); + + Endpoints[6] = CreateEndpoint("/v2/account", "GET"); + Endpoints[7] = CreateEndpoint("/v2/account/{id}"); + Endpoints[8] = CreateEndpoint("/v2/account/{id}", "POST"); + Endpoints[9] = CreateEndpoint("/v2/account/{id}", "UPDATE"); + + // Define an unordered mixture of policies that implement INodeBuilderPolicy, + // IEndpointComparerPolicy and/or IEndpointSelectorPolicy + _policies = new List() + { + CreateNodeBuilderPolicy(4), + CreateUberPolicy(2), + CreateNodeBuilderPolicy(3), + CreateEndpointComparerPolicy(5), + CreateNodeBuilderPolicy(1), + CreateEndpointSelectorPolicy(9), + CreateEndpointComparerPolicy(7), + CreateNodeBuilderPolicy(6), + CreateEndpointSelectorPolicy(10), + CreateUberPolicy(12), + CreateEndpointComparerPolicy(11) + }; + _loggerFactory = NullLoggerFactory.Instance; + _selector = new DefaultEndpointSelector(); + _parameterPolicyFactory = new DefaultParameterPolicyFactory(Options.Create(new RouteOptions()), new TestServiceProvider()); + + _services = CreateServices(); + } + + private Matcher SetupMatcher(MatcherBuilder builder) + { + for (int i = 0; i < Endpoints.Length; i++) + { + builder.AddEndpoint(Endpoints[i]); + } + return builder.Build(); + } + + [Benchmark] + public void Dfa() + { + var builder = _services.GetRequiredService(); + SetupMatcher(builder); + } + + [Benchmark] + public void Constructor_Policies() + { + new DfaMatcherBuilder(_loggerFactory, _parameterPolicyFactory, _selector, _policies); + } + + private static MatcherPolicy CreateNodeBuilderPolicy(int order) + { + return new TestNodeBuilderPolicy(order); + } + private static MatcherPolicy CreateEndpointComparerPolicy(int order) + { + return new TestEndpointComparerPolicy(order); + } + + private static MatcherPolicy CreateEndpointSelectorPolicy(int order) + { + return new TestEndpointSelectorPolicy(order); + } + + private static MatcherPolicy CreateUberPolicy(int order) + { + return new TestUberPolicy(order); + } + + private class TestUberPolicy : TestMatcherPolicyBase, INodeBuilderPolicy, IEndpointComparerPolicy + { + public TestUberPolicy(int order) : base(order) + { + } + + public IComparer Comparer => new TestEndpointComparer(); + + public bool AppliesToEndpoints(IReadOnlyList endpoints) + { + return false; + } + + public PolicyJumpTable BuildJumpTable(int exitDestination, IReadOnlyList edges) + { + throw new NotImplementedException(); + } + + public IReadOnlyList GetEdges(IReadOnlyList endpoints) + { + throw new NotImplementedException(); + } + } + + private class TestNodeBuilderPolicy : TestMatcherPolicyBase, INodeBuilderPolicy + { + public TestNodeBuilderPolicy(int order) : base(order) + { + } + + public bool AppliesToEndpoints(IReadOnlyList endpoints) + { + return false; + } + + public PolicyJumpTable BuildJumpTable(int exitDestination, IReadOnlyList edges) + { + throw new NotImplementedException(); + } + + public IReadOnlyList GetEdges(IReadOnlyList endpoints) + { + throw new NotImplementedException(); + } + } + + private class TestEndpointComparerPolicy : TestMatcherPolicyBase, IEndpointComparerPolicy + { + public TestEndpointComparerPolicy(int order) : base(order) + { + } + + public IComparer Comparer => new TestEndpointComparer(); + + public bool AppliesToEndpoints(IReadOnlyList endpoints) + { + return false; + } + + public Task ApplyAsync(HttpContext httpContext, EndpointSelectorContext context, CandidateSet candidates) + { + throw new NotImplementedException(); + } + } + + private class TestEndpointSelectorPolicy : TestMatcherPolicyBase, IEndpointSelectorPolicy + { + public TestEndpointSelectorPolicy(int order) : base(order) + { + } + + public bool AppliesToEndpoints(IReadOnlyList endpoints) + { + return false; + } + + public Task ApplyAsync(HttpContext httpContext, EndpointSelectorContext context, CandidateSet candidates) + { + throw new NotImplementedException(); + } + } + + private abstract class TestMatcherPolicyBase : MatcherPolicy + { + private int _order; + + protected TestMatcherPolicyBase(int order) + { + _order = order; + } + + public override int Order { get { return _order; } } + } + + private class TestEndpointComparer : IComparer + { + public int Compare(Endpoint x, Endpoint y) + { + return 0; + } + } + } +} \ No newline at end of file diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherGithubBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherGithubBenchmark.cs new file mode 100644 index 0000000000..059e97239c --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherGithubBenchmark.cs @@ -0,0 +1,56 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading.Tasks; +using BenchmarkDotNet.Attributes; +using Microsoft.AspNetCore.Http.Features; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // Generated from https://github.com/APIs-guru/openapi-directory + // Use https://editor2.swagger.io/ to convert from yaml to json- + public class MatcherGithubBenchmark : MatcherGithubBenchmarkBase + { + private BarebonesMatcher _baseline; + private Matcher _dfa; + + private EndpointSelectorContext _feature; + + [GlobalSetup] + public void Setup() + { + SetupEndpoints(); + + SetupRequests(); + + _baseline = (BarebonesMatcher)SetupMatcher(new BarebonesMatcherBuilder()); + _dfa = SetupMatcher(CreateDfaMatcherBuilder()); + + _feature = new EndpointSelectorContext(); + } + + [Benchmark(Baseline = true, OperationsPerInvoke = EndpointCount)] + public async Task Baseline() + { + var feature = _feature; + for (var i = 0; i < EndpointCount; i++) + { + var httpContext = Requests[i]; + await _baseline.Matchers[i].MatchAsync(httpContext, feature); + Validate(httpContext, Endpoints[i], feature.Endpoint); + } + } + + [Benchmark( OperationsPerInvoke = EndpointCount)] + public async Task Dfa() + { + var feature = _feature; + for (var i = 0; i < EndpointCount; i++) + { + var httpContext = Requests[i]; + await _dfa.MatchAsync(httpContext, feature); + Validate(httpContext, Endpoints[i], feature.Endpoint); + } + } + } +} \ No newline at end of file diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherGithubBenchmarkBase.generated.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherGithubBenchmarkBase.generated.cs new file mode 100644 index 0000000000..3ac68c89e0 --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherGithubBenchmarkBase.generated.cs @@ -0,0 +1,1487 @@ + +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // This code was generated by the Swaggatherer + public partial class MatcherGithubBenchmarkBase : EndpointRoutingBenchmarkBase + { + private protected const int EndpointCount = 243; + + private protected void SetupEndpoints() + { + Endpoints = new RouteEndpoint[243]; + Endpoints[0] = CreateEndpoint("/emojis", "GET"); + Endpoints[1] = CreateEndpoint("/events", "GET"); + Endpoints[2] = CreateEndpoint("/feeds", "GET"); + Endpoints[3] = CreateEndpoint("/gists", "GET"); + Endpoints[4] = CreateEndpoint("/gists", "POST"); + Endpoints[5] = CreateEndpoint("/issues", "GET"); + Endpoints[6] = CreateEndpoint("/markdown", "POST"); + Endpoints[7] = CreateEndpoint("/meta", "GET"); + Endpoints[8] = CreateEndpoint("/notifications", "GET"); + Endpoints[9] = CreateEndpoint("/notifications", "PUT"); + Endpoints[10] = CreateEndpoint("/rate_limit", "GET"); + Endpoints[11] = CreateEndpoint("/repositories", "GET"); + Endpoints[12] = CreateEndpoint("/user", "GET"); + Endpoints[13] = CreateEndpoint("/user", "PATCH"); + Endpoints[14] = CreateEndpoint("/users", "GET"); + Endpoints[15] = CreateEndpoint("/gists/public", "GET"); + Endpoints[16] = CreateEndpoint("/gists/starred", "GET"); + Endpoints[17] = CreateEndpoint("/gitignore/templates", "GET"); + Endpoints[18] = CreateEndpoint("/markdown/raw", "POST"); + Endpoints[19] = CreateEndpoint("/search/code", "GET"); + Endpoints[20] = CreateEndpoint("/search/issues", "GET"); + Endpoints[21] = CreateEndpoint("/search/repositories", "GET"); + Endpoints[22] = CreateEndpoint("/search/users", "GET"); + Endpoints[23] = CreateEndpoint("/user/emails", "GET"); + Endpoints[24] = CreateEndpoint("/user/emails", "DELETE"); + Endpoints[25] = CreateEndpoint("/user/emails", "POST"); + Endpoints[26] = CreateEndpoint("/user/followers", "GET"); + Endpoints[27] = CreateEndpoint("/user/following", "GET"); + Endpoints[28] = CreateEndpoint("/user/issues", "GET"); + Endpoints[29] = CreateEndpoint("/user/keys", "POST"); + Endpoints[30] = CreateEndpoint("/user/keys", "GET"); + Endpoints[31] = CreateEndpoint("/user/orgs", "GET"); + Endpoints[32] = CreateEndpoint("/user/repos", "GET"); + Endpoints[33] = CreateEndpoint("/user/repos", "POST"); + Endpoints[34] = CreateEndpoint("/user/starred", "GET"); + Endpoints[35] = CreateEndpoint("/user/subscriptions", "GET"); + Endpoints[36] = CreateEndpoint("/user/teams", "GET"); + Endpoints[37] = CreateEndpoint("/legacy/repos/search/{keyword}", "GET"); + Endpoints[38] = CreateEndpoint("/legacy/user/email/{email}", "GET"); + Endpoints[39] = CreateEndpoint("/legacy/user/search/{keyword}", "GET"); + Endpoints[40] = CreateEndpoint("/legacy/issues/search/{owner}/{repository}/{state}/{keyword}", "GET"); + Endpoints[41] = CreateEndpoint("/gitignore/templates/{language}", "GET"); + Endpoints[42] = CreateEndpoint("/notifications/threads/{id}", "GET"); + Endpoints[43] = CreateEndpoint("/notifications/threads/{id}", "PATCH"); + Endpoints[44] = CreateEndpoint("/user/following/{username}", "DELETE"); + Endpoints[45] = CreateEndpoint("/user/following/{username}", "GET"); + Endpoints[46] = CreateEndpoint("/user/following/{username}", "PUT"); + Endpoints[47] = CreateEndpoint("/user/keys/{keyId}", "DELETE"); + Endpoints[48] = CreateEndpoint("/user/keys/{keyId}", "GET"); + Endpoints[49] = CreateEndpoint("/notifications/threads/{id}/subscription", "DELETE"); + Endpoints[50] = CreateEndpoint("/notifications/threads/{id}/subscription", "GET"); + Endpoints[51] = CreateEndpoint("/notifications/threads/{id}/subscription", "PUT"); + Endpoints[52] = CreateEndpoint("/user/starred/{owner}/{repo}", "PUT"); + Endpoints[53] = CreateEndpoint("/user/starred/{owner}/{repo}", "GET"); + Endpoints[54] = CreateEndpoint("/user/starred/{owner}/{repo}", "DELETE"); + Endpoints[55] = CreateEndpoint("/user/subscriptions/{owner}/{repo}", "PUT"); + Endpoints[56] = CreateEndpoint("/user/subscriptions/{owner}/{repo}", "GET"); + Endpoints[57] = CreateEndpoint("/user/subscriptions/{owner}/{repo}", "DELETE"); + Endpoints[58] = CreateEndpoint("/gists/{id}", "GET"); + Endpoints[59] = CreateEndpoint("/gists/{id}", "PATCH"); + Endpoints[60] = CreateEndpoint("/gists/{id}", "DELETE"); + Endpoints[61] = CreateEndpoint("/orgs/{org}", "PATCH"); + Endpoints[62] = CreateEndpoint("/orgs/{org}", "GET"); + Endpoints[63] = CreateEndpoint("/teams/{teamId}", "PATCH"); + Endpoints[64] = CreateEndpoint("/teams/{teamId}", "GET"); + Endpoints[65] = CreateEndpoint("/teams/{teamId}", "DELETE"); + Endpoints[66] = CreateEndpoint("/users/{username}", "GET"); + Endpoints[67] = CreateEndpoint("/gists/{id}/comments", "GET"); + Endpoints[68] = CreateEndpoint("/gists/{id}/comments", "POST"); + Endpoints[69] = CreateEndpoint("/gists/{id}/forks", "POST"); + Endpoints[70] = CreateEndpoint("/gists/{id}/star", "DELETE"); + Endpoints[71] = CreateEndpoint("/gists/{id}/star", "GET"); + Endpoints[72] = CreateEndpoint("/gists/{id}/star", "PUT"); + Endpoints[73] = CreateEndpoint("/orgs/{org}/events", "GET"); + Endpoints[74] = CreateEndpoint("/orgs/{org}/issues", "GET"); + Endpoints[75] = CreateEndpoint("/orgs/{org}/members", "GET"); + Endpoints[76] = CreateEndpoint("/orgs/{org}/public_members", "GET"); + Endpoints[77] = CreateEndpoint("/orgs/{org}/repos", "GET"); + Endpoints[78] = CreateEndpoint("/orgs/{org}/repos", "POST"); + Endpoints[79] = CreateEndpoint("/orgs/{org}/teams", "POST"); + Endpoints[80] = CreateEndpoint("/orgs/{org}/teams", "GET"); + Endpoints[81] = CreateEndpoint("/teams/{teamId}/members", "GET"); + Endpoints[82] = CreateEndpoint("/teams/{teamId}/repos", "GET"); + Endpoints[83] = CreateEndpoint("/users/{username}/events", "GET"); + Endpoints[84] = CreateEndpoint("/users/{username}/followers", "GET"); + Endpoints[85] = CreateEndpoint("/users/{username}/gists", "GET"); + Endpoints[86] = CreateEndpoint("/users/{username}/keys", "GET"); + Endpoints[87] = CreateEndpoint("/users/{username}/orgs", "GET"); + Endpoints[88] = CreateEndpoint("/users/{username}/received_events", "GET"); + Endpoints[89] = CreateEndpoint("/users/{username}/repos", "GET"); + Endpoints[90] = CreateEndpoint("/users/{username}/starred", "GET"); + Endpoints[91] = CreateEndpoint("/users/{username}/subscriptions", "GET"); + Endpoints[92] = CreateEndpoint("/users/{username}/received_events/public", "GET"); + Endpoints[93] = CreateEndpoint("/users/{username}/events/orgs/{org}", "GET"); + Endpoints[94] = CreateEndpoint("/gists/{id}/comments/{commentId}", "DELETE"); + Endpoints[95] = CreateEndpoint("/gists/{id}/comments/{commentId}", "GET"); + Endpoints[96] = CreateEndpoint("/gists/{id}/comments/{commentId}", "PATCH"); + Endpoints[97] = CreateEndpoint("/orgs/{org}/members/{username}", "DELETE"); + Endpoints[98] = CreateEndpoint("/orgs/{org}/members/{username}", "GET"); + Endpoints[99] = CreateEndpoint("/orgs/{org}/public_members/{username}", "PUT"); + Endpoints[100] = CreateEndpoint("/orgs/{org}/public_members/{username}", "GET"); + Endpoints[101] = CreateEndpoint("/orgs/{org}/public_members/{username}", "DELETE"); + Endpoints[102] = CreateEndpoint("/teams/{teamId}/members/{username}", "GET"); + Endpoints[103] = CreateEndpoint("/teams/{teamId}/members/{username}", "PUT"); + Endpoints[104] = CreateEndpoint("/teams/{teamId}/members/{username}", "DELETE"); + Endpoints[105] = CreateEndpoint("/teams/{teamId}/memberships/{username}", "DELETE"); + Endpoints[106] = CreateEndpoint("/teams/{teamId}/memberships/{username}", "PUT"); + Endpoints[107] = CreateEndpoint("/teams/{teamId}/memberships/{username}", "GET"); + Endpoints[108] = CreateEndpoint("/users/{username}/following/{targetUser}", "GET"); + Endpoints[109] = CreateEndpoint("/teams/{teamId}/repos/{org}/{repo}", "PUT"); + Endpoints[110] = CreateEndpoint("/teams/{teamId}/repos/{owner}/{repo}", "DELETE"); + Endpoints[111] = CreateEndpoint("/teams/{teamId}/repos/{owner}/{repo}", "GET"); + Endpoints[112] = CreateEndpoint("/repos/{owner}/{repo}", "PATCH"); + Endpoints[113] = CreateEndpoint("/repos/{owner}/{repo}", "DELETE"); + Endpoints[114] = CreateEndpoint("/repos/{owner}/{repo}", "GET"); + Endpoints[115] = CreateEndpoint("/networks/{owner}/{repo}/events", "GET"); + Endpoints[116] = CreateEndpoint("/repos/{owner}/{repo}/assignees", "GET"); + Endpoints[117] = CreateEndpoint("/repos/{owner}/{repo}/branches", "GET"); + Endpoints[118] = CreateEndpoint("/repos/{owner}/{repo}/collaborators", "GET"); + Endpoints[119] = CreateEndpoint("/repos/{owner}/{repo}/comments", "GET"); + Endpoints[120] = CreateEndpoint("/repos/{owner}/{repo}/commits", "GET"); + Endpoints[121] = CreateEndpoint("/repos/{owner}/{repo}/contributors", "GET"); + Endpoints[122] = CreateEndpoint("/repos/{owner}/{repo}/deployments", "GET"); + Endpoints[123] = CreateEndpoint("/repos/{owner}/{repo}/deployments", "POST"); + Endpoints[124] = CreateEndpoint("/repos/{owner}/{repo}/downloads", "GET"); + Endpoints[125] = CreateEndpoint("/repos/{owner}/{repo}/events", "GET"); + Endpoints[126] = CreateEndpoint("/repos/{owner}/{repo}/forks", "GET"); + Endpoints[127] = CreateEndpoint("/repos/{owner}/{repo}/forks", "POST"); + Endpoints[128] = CreateEndpoint("/repos/{owner}/{repo}/hooks", "POST"); + Endpoints[129] = CreateEndpoint("/repos/{owner}/{repo}/hooks", "GET"); + Endpoints[130] = CreateEndpoint("/repos/{owner}/{repo}/issues", "GET"); + Endpoints[131] = CreateEndpoint("/repos/{owner}/{repo}/issues", "POST"); + Endpoints[132] = CreateEndpoint("/repos/{owner}/{repo}/keys", "GET"); + Endpoints[133] = CreateEndpoint("/repos/{owner}/{repo}/keys", "POST"); + Endpoints[134] = CreateEndpoint("/repos/{owner}/{repo}/labels", "GET"); + Endpoints[135] = CreateEndpoint("/repos/{owner}/{repo}/labels", "POST"); + Endpoints[136] = CreateEndpoint("/repos/{owner}/{repo}/languages", "GET"); + Endpoints[137] = CreateEndpoint("/repos/{owner}/{repo}/merges", "POST"); + Endpoints[138] = CreateEndpoint("/repos/{owner}/{repo}/milestones", "GET"); + Endpoints[139] = CreateEndpoint("/repos/{owner}/{repo}/milestones", "POST"); + Endpoints[140] = CreateEndpoint("/repos/{owner}/{repo}/notifications", "PUT"); + Endpoints[141] = CreateEndpoint("/repos/{owner}/{repo}/notifications", "GET"); + Endpoints[142] = CreateEndpoint("/repos/{owner}/{repo}/pulls", "POST"); + Endpoints[143] = CreateEndpoint("/repos/{owner}/{repo}/pulls", "GET"); + Endpoints[144] = CreateEndpoint("/repos/{owner}/{repo}/readme", "GET"); + Endpoints[145] = CreateEndpoint("/repos/{owner}/{repo}/releases", "POST"); + Endpoints[146] = CreateEndpoint("/repos/{owner}/{repo}/releases", "GET"); + Endpoints[147] = CreateEndpoint("/repos/{owner}/{repo}/stargazers", "GET"); + Endpoints[148] = CreateEndpoint("/repos/{owner}/{repo}/subscribers", "GET"); + Endpoints[149] = CreateEndpoint("/repos/{owner}/{repo}/subscription", "PUT"); + Endpoints[150] = CreateEndpoint("/repos/{owner}/{repo}/subscription", "GET"); + Endpoints[151] = CreateEndpoint("/repos/{owner}/{repo}/subscription", "DELETE"); + Endpoints[152] = CreateEndpoint("/repos/{owner}/{repo}/tags", "GET"); + Endpoints[153] = CreateEndpoint("/repos/{owner}/{repo}/teams", "GET"); + Endpoints[154] = CreateEndpoint("/repos/{owner}/{repo}/watchers", "GET"); + Endpoints[155] = CreateEndpoint("/repos/{owner}/{repo}/git/blobs", "POST"); + Endpoints[156] = CreateEndpoint("/repos/{owner}/{repo}/git/commits", "POST"); + Endpoints[157] = CreateEndpoint("/repos/{owner}/{repo}/git/refs", "GET"); + Endpoints[158] = CreateEndpoint("/repos/{owner}/{repo}/git/refs", "POST"); + Endpoints[159] = CreateEndpoint("/repos/{owner}/{repo}/git/tags", "POST"); + Endpoints[160] = CreateEndpoint("/repos/{owner}/{repo}/git/trees", "POST"); + Endpoints[161] = CreateEndpoint("/repos/{owner}/{repo}/issues/comments", "GET"); + Endpoints[162] = CreateEndpoint("/repos/{owner}/{repo}/issues/events", "GET"); + Endpoints[163] = CreateEndpoint("/repos/{owner}/{repo}/pulls/comments", "GET"); + Endpoints[164] = CreateEndpoint("/repos/{owner}/{repo}/stats/code_frequency", "GET"); + Endpoints[165] = CreateEndpoint("/repos/{owner}/{repo}/stats/commit_activity", "GET"); + Endpoints[166] = CreateEndpoint("/repos/{owner}/{repo}/stats/contributors", "GET"); + Endpoints[167] = CreateEndpoint("/repos/{owner}/{repo}/stats/participation", "GET"); + Endpoints[168] = CreateEndpoint("/repos/{owner}/{repo}/stats/punch_card", "GET"); + Endpoints[169] = CreateEndpoint("/repos/{owner}/{repo}/git/blobs/{shaCode}", "GET"); + Endpoints[170] = CreateEndpoint("/repos/{owner}/{repo}/git/commits/{shaCode}", "GET"); + Endpoints[171] = CreateEndpoint("/repos/{owner}/{repo}/git/refs/{ref}", "DELETE"); + Endpoints[172] = CreateEndpoint("/repos/{owner}/{repo}/git/refs/{ref}", "PATCH"); + Endpoints[173] = CreateEndpoint("/repos/{owner}/{repo}/git/refs/{ref}", "GET"); + Endpoints[174] = CreateEndpoint("/repos/{owner}/{repo}/git/tags/{shaCode}", "GET"); + Endpoints[175] = CreateEndpoint("/repos/{owner}/{repo}/git/trees/{shaCode}", "GET"); + Endpoints[176] = CreateEndpoint("/repos/{owner}/{repo}/issues/comments/{commentId}", "GET"); + Endpoints[177] = CreateEndpoint("/repos/{owner}/{repo}/issues/comments/{commentId}", "PATCH"); + Endpoints[178] = CreateEndpoint("/repos/{owner}/{repo}/issues/comments/{commentId}", "DELETE"); + Endpoints[179] = CreateEndpoint("/repos/{owner}/{repo}/issues/events/{eventId}", "GET"); + Endpoints[180] = CreateEndpoint("/repos/{owner}/{repo}/pulls/comments/{commentId}", "PATCH"); + Endpoints[181] = CreateEndpoint("/repos/{owner}/{repo}/pulls/comments/{commentId}", "GET"); + Endpoints[182] = CreateEndpoint("/repos/{owner}/{repo}/pulls/comments/{commentId}", "DELETE"); + Endpoints[183] = CreateEndpoint("/repos/{owner}/{repo}/releases/assets/{id}", "PATCH"); + Endpoints[184] = CreateEndpoint("/repos/{owner}/{repo}/releases/assets/{id}", "DELETE"); + Endpoints[185] = CreateEndpoint("/repos/{owner}/{repo}/releases/assets/{id}", "GET"); + Endpoints[186] = CreateEndpoint("/repos/{owner}/{repo}/assignees/{assignee}", "GET"); + Endpoints[187] = CreateEndpoint("/repos/{owner}/{repo}/branches/{branch}", "GET"); + Endpoints[188] = CreateEndpoint("/repos/{owner}/{repo}/collaborators/{user}", "PUT"); + Endpoints[189] = CreateEndpoint("/repos/{owner}/{repo}/collaborators/{user}", "DELETE"); + Endpoints[190] = CreateEndpoint("/repos/{owner}/{repo}/collaborators/{user}", "GET"); + Endpoints[191] = CreateEndpoint("/repos/{owner}/{repo}/comments/{commentId}", "DELETE"); + Endpoints[192] = CreateEndpoint("/repos/{owner}/{repo}/comments/{commentId}", "GET"); + Endpoints[193] = CreateEndpoint("/repos/{owner}/{repo}/comments/{commentId}", "PATCH"); + Endpoints[194] = CreateEndpoint("/repos/{owner}/{repo}/commits/{shaCode}", "GET"); + Endpoints[195] = CreateEndpoint("/repos/{owner}/{repo}/contents/{path}", "GET"); + Endpoints[196] = CreateEndpoint("/repos/{owner}/{repo}/contents/{path}", "DELETE"); + Endpoints[197] = CreateEndpoint("/repos/{owner}/{repo}/contents/{path}", "PUT"); + Endpoints[198] = CreateEndpoint("/repos/{owner}/{repo}/downloads/{downloadId}", "GET"); + Endpoints[199] = CreateEndpoint("/repos/{owner}/{repo}/downloads/{downloadId}", "DELETE"); + Endpoints[200] = CreateEndpoint("/repos/{owner}/{repo}/hooks/{hookId}", "DELETE"); + Endpoints[201] = CreateEndpoint("/repos/{owner}/{repo}/hooks/{hookId}", "GET"); + Endpoints[202] = CreateEndpoint("/repos/{owner}/{repo}/hooks/{hookId}", "PATCH"); + Endpoints[203] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}", "GET"); + Endpoints[204] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}", "PATCH"); + Endpoints[205] = CreateEndpoint("/repos/{owner}/{repo}/keys/{keyId}", "GET"); + Endpoints[206] = CreateEndpoint("/repos/{owner}/{repo}/keys/{keyId}", "DELETE"); + Endpoints[207] = CreateEndpoint("/repos/{owner}/{repo}/labels/{name}", "GET"); + Endpoints[208] = CreateEndpoint("/repos/{owner}/{repo}/labels/{name}", "PATCH"); + Endpoints[209] = CreateEndpoint("/repos/{owner}/{repo}/labels/{name}", "DELETE"); + Endpoints[210] = CreateEndpoint("/repos/{owner}/{repo}/milestones/{number}", "PATCH"); + Endpoints[211] = CreateEndpoint("/repos/{owner}/{repo}/milestones/{number}", "GET"); + Endpoints[212] = CreateEndpoint("/repos/{owner}/{repo}/milestones/{number}", "DELETE"); + Endpoints[213] = CreateEndpoint("/repos/{owner}/{repo}/pulls/{number}", "GET"); + Endpoints[214] = CreateEndpoint("/repos/{owner}/{repo}/pulls/{number}", "PATCH"); + Endpoints[215] = CreateEndpoint("/repos/{owner}/{repo}/releases/{id}", "PATCH"); + Endpoints[216] = CreateEndpoint("/repos/{owner}/{repo}/releases/{id}", "GET"); + Endpoints[217] = CreateEndpoint("/repos/{owner}/{repo}/releases/{id}", "DELETE"); + Endpoints[218] = CreateEndpoint("/repos/{owner}/{repo}/statuses/{ref}", "GET"); + Endpoints[219] = CreateEndpoint("/repos/{owner}/{repo}/statuses/{ref}", "POST"); + Endpoints[220] = CreateEndpoint("/repos/{owner}/{repo}/commits/{ref}/status", "GET"); + Endpoints[221] = CreateEndpoint("/repos/{owner}/{repo}/commits/{shaCode}/comments", "GET"); + Endpoints[222] = CreateEndpoint("/repos/{owner}/{repo}/commits/{shaCode}/comments", "POST"); + Endpoints[223] = CreateEndpoint("/repos/{owner}/{repo}/deployments/{id}/statuses", "GET"); + Endpoints[224] = CreateEndpoint("/repos/{owner}/{repo}/deployments/{id}/statuses", "POST"); + Endpoints[225] = CreateEndpoint("/repos/{owner}/{repo}/hooks/{hookId}/tests", "POST"); + Endpoints[226] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}/comments", "POST"); + Endpoints[227] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}/comments", "GET"); + Endpoints[228] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}/events", "GET"); + Endpoints[229] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}/labels", "POST"); + Endpoints[230] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}/labels", "GET"); + Endpoints[231] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}/labels", "PUT"); + Endpoints[232] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}/labels", "DELETE"); + Endpoints[233] = CreateEndpoint("/repos/{owner}/{repo}/milestones/{number}/labels", "GET"); + Endpoints[234] = CreateEndpoint("/repos/{owner}/{repo}/pulls/{number}/comments", "GET"); + Endpoints[235] = CreateEndpoint("/repos/{owner}/{repo}/pulls/{number}/comments", "POST"); + Endpoints[236] = CreateEndpoint("/repos/{owner}/{repo}/pulls/{number}/commits", "GET"); + Endpoints[237] = CreateEndpoint("/repos/{owner}/{repo}/pulls/{number}/files", "GET"); + Endpoints[238] = CreateEndpoint("/repos/{owner}/{repo}/pulls/{number}/merge", "PUT"); + Endpoints[239] = CreateEndpoint("/repos/{owner}/{repo}/pulls/{number}/merge", "GET"); + Endpoints[240] = CreateEndpoint("/repos/{owner}/{repo}/releases/{id}/assets", "GET"); + Endpoints[241] = CreateEndpoint("/repos/{owner}/{repo}/issues/{number}/labels/{name}", "DELETE"); + Endpoints[242] = CreateEndpoint("/repos/{owner}/{repo}/{archive_format}/{path}", "GET"); + } + + private protected void SetupRequests() + { + Requests = new HttpContext[243]; + Requests[0] = new DefaultHttpContext(); + Requests[0].RequestServices = CreateServices(); + Requests[0].Request.Method = "GET"; + Requests[0].Request.Path = "/emojis"; + Requests[1] = new DefaultHttpContext(); + Requests[1].RequestServices = CreateServices(); + Requests[1].Request.Method = "GET"; + Requests[1].Request.Path = "/events"; + Requests[2] = new DefaultHttpContext(); + Requests[2].RequestServices = CreateServices(); + Requests[2].Request.Method = "GET"; + Requests[2].Request.Path = "/feeds"; + Requests[3] = new DefaultHttpContext(); + Requests[3].RequestServices = CreateServices(); + Requests[3].Request.Method = "GET"; + Requests[3].Request.Path = "/gists"; + Requests[4] = new DefaultHttpContext(); + Requests[4].RequestServices = CreateServices(); + Requests[4].Request.Method = "POST"; + Requests[4].Request.Path = "/gists"; + Requests[5] = new DefaultHttpContext(); + Requests[5].RequestServices = CreateServices(); + Requests[5].Request.Method = "GET"; + Requests[5].Request.Path = "/issues"; + Requests[6] = new DefaultHttpContext(); + Requests[6].RequestServices = CreateServices(); + Requests[6].Request.Method = "POST"; + Requests[6].Request.Path = "/markdown"; + Requests[7] = new DefaultHttpContext(); + Requests[7].RequestServices = CreateServices(); + Requests[7].Request.Method = "GET"; + Requests[7].Request.Path = "/meta"; + Requests[8] = new DefaultHttpContext(); + Requests[8].RequestServices = CreateServices(); + Requests[8].Request.Method = "GET"; + Requests[8].Request.Path = "/notifications"; + Requests[9] = new DefaultHttpContext(); + Requests[9].RequestServices = CreateServices(); + Requests[9].Request.Method = "PUT"; + Requests[9].Request.Path = "/notifications"; + Requests[10] = new DefaultHttpContext(); + Requests[10].RequestServices = CreateServices(); + Requests[10].Request.Method = "GET"; + Requests[10].Request.Path = "/rate_limit"; + Requests[11] = new DefaultHttpContext(); + Requests[11].RequestServices = CreateServices(); + Requests[11].Request.Method = "GET"; + Requests[11].Request.Path = "/repositories"; + Requests[12] = new DefaultHttpContext(); + Requests[12].RequestServices = CreateServices(); + Requests[12].Request.Method = "GET"; + Requests[12].Request.Path = "/user"; + Requests[13] = new DefaultHttpContext(); + Requests[13].RequestServices = CreateServices(); + Requests[13].Request.Method = "PATCH"; + Requests[13].Request.Path = "/user"; + Requests[14] = new DefaultHttpContext(); + Requests[14].RequestServices = CreateServices(); + Requests[14].Request.Method = "GET"; + Requests[14].Request.Path = "/users"; + Requests[15] = new DefaultHttpContext(); + Requests[15].RequestServices = CreateServices(); + Requests[15].Request.Method = "GET"; + Requests[15].Request.Path = "/gists/public"; + Requests[16] = new DefaultHttpContext(); + Requests[16].RequestServices = CreateServices(); + Requests[16].Request.Method = "GET"; + Requests[16].Request.Path = "/gists/starred"; + Requests[17] = new DefaultHttpContext(); + Requests[17].RequestServices = CreateServices(); + Requests[17].Request.Method = "GET"; + Requests[17].Request.Path = "/gitignore/templates"; + Requests[18] = new DefaultHttpContext(); + Requests[18].RequestServices = CreateServices(); + Requests[18].Request.Method = "POST"; + Requests[18].Request.Path = "/markdown/raw"; + Requests[19] = new DefaultHttpContext(); + Requests[19].RequestServices = CreateServices(); + Requests[19].Request.Method = "GET"; + Requests[19].Request.Path = "/search/code"; + Requests[20] = new DefaultHttpContext(); + Requests[20].RequestServices = CreateServices(); + Requests[20].Request.Method = "GET"; + Requests[20].Request.Path = "/search/issues"; + Requests[21] = new DefaultHttpContext(); + Requests[21].RequestServices = CreateServices(); + Requests[21].Request.Method = "GET"; + Requests[21].Request.Path = "/search/repositories"; + Requests[22] = new DefaultHttpContext(); + Requests[22].RequestServices = CreateServices(); + Requests[22].Request.Method = "GET"; + Requests[22].Request.Path = "/search/users"; + Requests[23] = new DefaultHttpContext(); + Requests[23].RequestServices = CreateServices(); + Requests[23].Request.Method = "GET"; + Requests[23].Request.Path = "/user/emails"; + Requests[24] = new DefaultHttpContext(); + Requests[24].RequestServices = CreateServices(); + Requests[24].Request.Method = "DELETE"; + Requests[24].Request.Path = "/user/emails"; + Requests[25] = new DefaultHttpContext(); + Requests[25].RequestServices = CreateServices(); + Requests[25].Request.Method = "POST"; + Requests[25].Request.Path = "/user/emails"; + Requests[26] = new DefaultHttpContext(); + Requests[26].RequestServices = CreateServices(); + Requests[26].Request.Method = "GET"; + Requests[26].Request.Path = "/user/followers"; + Requests[27] = new DefaultHttpContext(); + Requests[27].RequestServices = CreateServices(); + Requests[27].Request.Method = "GET"; + Requests[27].Request.Path = "/user/following"; + Requests[28] = new DefaultHttpContext(); + Requests[28].RequestServices = CreateServices(); + Requests[28].Request.Method = "GET"; + Requests[28].Request.Path = "/user/issues"; + Requests[29] = new DefaultHttpContext(); + Requests[29].RequestServices = CreateServices(); + Requests[29].Request.Method = "POST"; + Requests[29].Request.Path = "/user/keys"; + Requests[30] = new DefaultHttpContext(); + Requests[30].RequestServices = CreateServices(); + Requests[30].Request.Method = "GET"; + Requests[30].Request.Path = "/user/keys"; + Requests[31] = new DefaultHttpContext(); + Requests[31].RequestServices = CreateServices(); + Requests[31].Request.Method = "GET"; + Requests[31].Request.Path = "/user/orgs"; + Requests[32] = new DefaultHttpContext(); + Requests[32].RequestServices = CreateServices(); + Requests[32].Request.Method = "GET"; + Requests[32].Request.Path = "/user/repos"; + Requests[33] = new DefaultHttpContext(); + Requests[33].RequestServices = CreateServices(); + Requests[33].Request.Method = "POST"; + Requests[33].Request.Path = "/user/repos"; + Requests[34] = new DefaultHttpContext(); + Requests[34].RequestServices = CreateServices(); + Requests[34].Request.Method = "GET"; + Requests[34].Request.Path = "/user/starred"; + Requests[35] = new DefaultHttpContext(); + Requests[35].RequestServices = CreateServices(); + Requests[35].Request.Method = "GET"; + Requests[35].Request.Path = "/user/subscriptions"; + Requests[36] = new DefaultHttpContext(); + Requests[36].RequestServices = CreateServices(); + Requests[36].Request.Method = "GET"; + Requests[36].Request.Path = "/user/teams"; + Requests[37] = new DefaultHttpContext(); + Requests[37].RequestServices = CreateServices(); + Requests[37].Request.Method = "GET"; + Requests[37].Request.Path = "/legacy/repos/search/7651dbb"; + Requests[38] = new DefaultHttpContext(); + Requests[38].RequestServices = CreateServices(); + Requests[38].Request.Method = "GET"; + Requests[38].Request.Path = "/legacy/user/email/04193"; + Requests[39] = new DefaultHttpContext(); + Requests[39].RequestServices = CreateServices(); + Requests[39].Request.Method = "GET"; + Requests[39].Request.Path = "/legacy/user/search/83cd044"; + Requests[40] = new DefaultHttpContext(); + Requests[40].RequestServices = CreateServices(); + Requests[40].Request.Method = "GET"; + Requests[40].Request.Path = "/legacy/issues/search/2badf/dc2f3c98-c/2d6bc/61d4c54"; + Requests[41] = new DefaultHttpContext(); + Requests[41].RequestServices = CreateServices(); + Requests[41].Request.Method = "GET"; + Requests[41].Request.Path = "/gitignore/templates/e4789e94"; + Requests[42] = new DefaultHttpContext(); + Requests[42].RequestServices = CreateServices(); + Requests[42].Request.Method = "GET"; + Requests[42].Request.Path = "/notifications/threads/54db8"; + Requests[43] = new DefaultHttpContext(); + Requests[43].RequestServices = CreateServices(); + Requests[43].Request.Method = "PATCH"; + Requests[43].Request.Path = "/notifications/threads/a9ccb"; + Requests[44] = new DefaultHttpContext(); + Requests[44].RequestServices = CreateServices(); + Requests[44].Request.Method = "DELETE"; + Requests[44].Request.Path = "/user/following/5a73d521"; + Requests[45] = new DefaultHttpContext(); + Requests[45].RequestServices = CreateServices(); + Requests[45].Request.Method = "GET"; + Requests[45].Request.Path = "/user/following/77cb2864"; + Requests[46] = new DefaultHttpContext(); + Requests[46].RequestServices = CreateServices(); + Requests[46].Request.Method = "PUT"; + Requests[46].Request.Path = "/user/following/91b65e36"; + Requests[47] = new DefaultHttpContext(); + Requests[47].RequestServices = CreateServices(); + Requests[47].Request.Method = "DELETE"; + Requests[47].Request.Path = "/user/keys/27092"; + Requests[48] = new DefaultHttpContext(); + Requests[48].RequestServices = CreateServices(); + Requests[48].Request.Method = "GET"; + Requests[48].Request.Path = "/user/keys/a0882"; + Requests[49] = new DefaultHttpContext(); + Requests[49].RequestServices = CreateServices(); + Requests[49].Request.Method = "DELETE"; + Requests[49].Request.Path = "/notifications/threads/0b0be/subscription"; + Requests[50] = new DefaultHttpContext(); + Requests[50].RequestServices = CreateServices(); + Requests[50].Request.Method = "GET"; + Requests[50].Request.Path = "/notifications/threads/9b0d8/subscription"; + Requests[51] = new DefaultHttpContext(); + Requests[51].RequestServices = CreateServices(); + Requests[51].Request.Method = "PUT"; + Requests[51].Request.Path = "/notifications/threads/8a23f/subscription"; + Requests[52] = new DefaultHttpContext(); + Requests[52].RequestServices = CreateServices(); + Requests[52].Request.Method = "PUT"; + Requests[52].Request.Path = "/user/starred/ec9c4/16da5"; + Requests[53] = new DefaultHttpContext(); + Requests[53].RequestServices = CreateServices(); + Requests[53].Request.Method = "GET"; + Requests[53].Request.Path = "/user/starred/59cdd/1bec4"; + Requests[54] = new DefaultHttpContext(); + Requests[54].RequestServices = CreateServices(); + Requests[54].Request.Method = "DELETE"; + Requests[54].Request.Path = "/user/starred/14da3/8c4b5"; + Requests[55] = new DefaultHttpContext(); + Requests[55].RequestServices = CreateServices(); + Requests[55].Request.Method = "PUT"; + Requests[55].Request.Path = "/user/subscriptions/b6bea/ba79d"; + Requests[56] = new DefaultHttpContext(); + Requests[56].RequestServices = CreateServices(); + Requests[56].Request.Method = "GET"; + Requests[56].Request.Path = "/user/subscriptions/83c9a/b83ce"; + Requests[57] = new DefaultHttpContext(); + Requests[57].RequestServices = CreateServices(); + Requests[57].Request.Method = "DELETE"; + Requests[57].Request.Path = "/user/subscriptions/10903/f415b"; + Requests[58] = new DefaultHttpContext(); + Requests[58].RequestServices = CreateServices(); + Requests[58].Request.Method = "GET"; + Requests[58].Request.Path = "/gists/c78b2"; + Requests[59] = new DefaultHttpContext(); + Requests[59].RequestServices = CreateServices(); + Requests[59].Request.Method = "PATCH"; + Requests[59].Request.Path = "/gists/7316d"; + Requests[60] = new DefaultHttpContext(); + Requests[60].RequestServices = CreateServices(); + Requests[60].Request.Method = "DELETE"; + Requests[60].Request.Path = "/gists/dac3c"; + Requests[61] = new DefaultHttpContext(); + Requests[61].RequestServices = CreateServices(); + Requests[61].Request.Method = "PATCH"; + Requests[61].Request.Path = "/orgs/f93c4"; + Requests[62] = new DefaultHttpContext(); + Requests[62].RequestServices = CreateServices(); + Requests[62].Request.Method = "GET"; + Requests[62].Request.Path = "/orgs/278c1"; + Requests[63] = new DefaultHttpContext(); + Requests[63].RequestServices = CreateServices(); + Requests[63].Request.Method = "PATCH"; + Requests[63].Request.Path = "/teams/14c0dc"; + Requests[64] = new DefaultHttpContext(); + Requests[64].RequestServices = CreateServices(); + Requests[64].Request.Method = "GET"; + Requests[64].Request.Path = "/teams/71f13b"; + Requests[65] = new DefaultHttpContext(); + Requests[65].RequestServices = CreateServices(); + Requests[65].Request.Method = "DELETE"; + Requests[65].Request.Path = "/teams/ca53db"; + Requests[66] = new DefaultHttpContext(); + Requests[66].RequestServices = CreateServices(); + Requests[66].Request.Method = "GET"; + Requests[66].Request.Path = "/users/fa9c6dc9"; + Requests[67] = new DefaultHttpContext(); + Requests[67].RequestServices = CreateServices(); + Requests[67].Request.Method = "GET"; + Requests[67].Request.Path = "/gists/2f9f8/comments"; + Requests[68] = new DefaultHttpContext(); + Requests[68].RequestServices = CreateServices(); + Requests[68].Request.Method = "POST"; + Requests[68].Request.Path = "/gists/618f7/comments"; + Requests[69] = new DefaultHttpContext(); + Requests[69].RequestServices = CreateServices(); + Requests[69].Request.Method = "POST"; + Requests[69].Request.Path = "/gists/6313c/forks"; + Requests[70] = new DefaultHttpContext(); + Requests[70].RequestServices = CreateServices(); + Requests[70].Request.Method = "DELETE"; + Requests[70].Request.Path = "/gists/9034d/star"; + Requests[71] = new DefaultHttpContext(); + Requests[71].RequestServices = CreateServices(); + Requests[71].Request.Method = "GET"; + Requests[71].Request.Path = "/gists/b571d/star"; + Requests[72] = new DefaultHttpContext(); + Requests[72].RequestServices = CreateServices(); + Requests[72].Request.Method = "PUT"; + Requests[72].Request.Path = "/gists/83ab8/star"; + Requests[73] = new DefaultHttpContext(); + Requests[73].RequestServices = CreateServices(); + Requests[73].Request.Method = "GET"; + Requests[73].Request.Path = "/orgs/9be14/events"; + Requests[74] = new DefaultHttpContext(); + Requests[74].RequestServices = CreateServices(); + Requests[74].Request.Method = "GET"; + Requests[74].Request.Path = "/orgs/b014e/issues"; + Requests[75] = new DefaultHttpContext(); + Requests[75].RequestServices = CreateServices(); + Requests[75].Request.Method = "GET"; + Requests[75].Request.Path = "/orgs/a4856/members"; + Requests[76] = new DefaultHttpContext(); + Requests[76].RequestServices = CreateServices(); + Requests[76].Request.Method = "GET"; + Requests[76].Request.Path = "/orgs/764a9/public_members"; + Requests[77] = new DefaultHttpContext(); + Requests[77].RequestServices = CreateServices(); + Requests[77].Request.Method = "GET"; + Requests[77].Request.Path = "/orgs/7749d/repos"; + Requests[78] = new DefaultHttpContext(); + Requests[78].RequestServices = CreateServices(); + Requests[78].Request.Method = "POST"; + Requests[78].Request.Path = "/orgs/2289c/repos"; + Requests[79] = new DefaultHttpContext(); + Requests[79].RequestServices = CreateServices(); + Requests[79].Request.Method = "POST"; + Requests[79].Request.Path = "/orgs/42198/teams"; + Requests[80] = new DefaultHttpContext(); + Requests[80].RequestServices = CreateServices(); + Requests[80].Request.Method = "GET"; + Requests[80].Request.Path = "/orgs/5d0bc/teams"; + Requests[81] = new DefaultHttpContext(); + Requests[81].RequestServices = CreateServices(); + Requests[81].Request.Method = "GET"; + Requests[81].Request.Path = "/teams/b8f729/members"; + Requests[82] = new DefaultHttpContext(); + Requests[82].RequestServices = CreateServices(); + Requests[82].Request.Method = "GET"; + Requests[82].Request.Path = "/teams/03b619/repos"; + Requests[83] = new DefaultHttpContext(); + Requests[83].RequestServices = CreateServices(); + Requests[83].Request.Method = "GET"; + Requests[83].Request.Path = "/users/999f39df/events"; + Requests[84] = new DefaultHttpContext(); + Requests[84].RequestServices = CreateServices(); + Requests[84].Request.Method = "GET"; + Requests[84].Request.Path = "/users/bbecc307/followers"; + Requests[85] = new DefaultHttpContext(); + Requests[85].RequestServices = CreateServices(); + Requests[85].Request.Method = "GET"; + Requests[85].Request.Path = "/users/9127792b/gists"; + Requests[86] = new DefaultHttpContext(); + Requests[86].RequestServices = CreateServices(); + Requests[86].Request.Method = "GET"; + Requests[86].Request.Path = "/users/a81cf3db/keys"; + Requests[87] = new DefaultHttpContext(); + Requests[87].RequestServices = CreateServices(); + Requests[87].Request.Method = "GET"; + Requests[87].Request.Path = "/users/575556d6/orgs"; + Requests[88] = new DefaultHttpContext(); + Requests[88].RequestServices = CreateServices(); + Requests[88].Request.Method = "GET"; + Requests[88].Request.Path = "/users/0ef07cfe/received_events"; + Requests[89] = new DefaultHttpContext(); + Requests[89].RequestServices = CreateServices(); + Requests[89].Request.Method = "GET"; + Requests[89].Request.Path = "/users/fa4901d4/repos"; + Requests[90] = new DefaultHttpContext(); + Requests[90].RequestServices = CreateServices(); + Requests[90].Request.Method = "GET"; + Requests[90].Request.Path = "/users/7a88b2ac/starred"; + Requests[91] = new DefaultHttpContext(); + Requests[91].RequestServices = CreateServices(); + Requests[91].Request.Method = "GET"; + Requests[91].Request.Path = "/users/4d8b04d1/subscriptions"; + Requests[92] = new DefaultHttpContext(); + Requests[92].RequestServices = CreateServices(); + Requests[92].Request.Method = "GET"; + Requests[92].Request.Path = "/users/73e28d52/received_events/public"; + Requests[93] = new DefaultHttpContext(); + Requests[93].RequestServices = CreateServices(); + Requests[93].Request.Method = "GET"; + Requests[93].Request.Path = "/users/f98f2363/events/orgs/51c95"; + Requests[94] = new DefaultHttpContext(); + Requests[94].RequestServices = CreateServices(); + Requests[94].Request.Method = "DELETE"; + Requests[94].Request.Path = "/gists/f8720/comments/b56cd8ff-"; + Requests[95] = new DefaultHttpContext(); + Requests[95].RequestServices = CreateServices(); + Requests[95].Request.Method = "GET"; + Requests[95].Request.Path = "/gists/40327/comments/11594715-"; + Requests[96] = new DefaultHttpContext(); + Requests[96].RequestServices = CreateServices(); + Requests[96].Request.Method = "PATCH"; + Requests[96].Request.Path = "/gists/fb063/comments/1da04881-"; + Requests[97] = new DefaultHttpContext(); + Requests[97].RequestServices = CreateServices(); + Requests[97].Request.Method = "DELETE"; + Requests[97].Request.Path = "/orgs/15419/members/9d03051d"; + Requests[98] = new DefaultHttpContext(); + Requests[98].RequestServices = CreateServices(); + Requests[98].Request.Method = "GET"; + Requests[98].Request.Path = "/orgs/3cbe7/members/4045509c"; + Requests[99] = new DefaultHttpContext(); + Requests[99].RequestServices = CreateServices(); + Requests[99].Request.Method = "PUT"; + Requests[99].Request.Path = "/orgs/72f1a/public_members/6163704c"; + Requests[100] = new DefaultHttpContext(); + Requests[100].RequestServices = CreateServices(); + Requests[100].Request.Method = "GET"; + Requests[100].Request.Path = "/orgs/bae66/public_members/c1aef66c"; + Requests[101] = new DefaultHttpContext(); + Requests[101].RequestServices = CreateServices(); + Requests[101].Request.Method = "DELETE"; + Requests[101].Request.Path = "/orgs/d8648/public_members/2319ad3d"; + Requests[102] = new DefaultHttpContext(); + Requests[102].RequestServices = CreateServices(); + Requests[102].Request.Method = "GET"; + Requests[102].Request.Path = "/teams/262658/members/5dac9fc5"; + Requests[103] = new DefaultHttpContext(); + Requests[103].RequestServices = CreateServices(); + Requests[103].Request.Method = "PUT"; + Requests[103].Request.Path = "/teams/430633/members/795406c6"; + Requests[104] = new DefaultHttpContext(); + Requests[104].RequestServices = CreateServices(); + Requests[104].Request.Method = "DELETE"; + Requests[104].Request.Path = "/teams/7e9f66/members/919df774"; + Requests[105] = new DefaultHttpContext(); + Requests[105].RequestServices = CreateServices(); + Requests[105].Request.Method = "DELETE"; + Requests[105].Request.Path = "/teams/b34a3b/memberships/33fdb8ad"; + Requests[106] = new DefaultHttpContext(); + Requests[106].RequestServices = CreateServices(); + Requests[106].Request.Method = "PUT"; + Requests[106].Request.Path = "/teams/a0f9ea/memberships/dcb115d9"; + Requests[107] = new DefaultHttpContext(); + Requests[107].RequestServices = CreateServices(); + Requests[107].Request.Method = "GET"; + Requests[107].Request.Path = "/teams/e43785/memberships/2f601a63"; + Requests[108] = new DefaultHttpContext(); + Requests[108].RequestServices = CreateServices(); + Requests[108].Request.Method = "GET"; + Requests[108].Request.Path = "/users/44263c00/following/a7887e00-7"; + Requests[109] = new DefaultHttpContext(); + Requests[109].RequestServices = CreateServices(); + Requests[109].Request.Method = "PUT"; + Requests[109].Request.Path = "/teams/451dd6/repos/7b326/00b51"; + Requests[110] = new DefaultHttpContext(); + Requests[110].RequestServices = CreateServices(); + Requests[110].Request.Method = "DELETE"; + Requests[110].Request.Path = "/teams/b01088/repos/41fc2/f54bc"; + Requests[111] = new DefaultHttpContext(); + Requests[111].RequestServices = CreateServices(); + Requests[111].Request.Method = "GET"; + Requests[111].Request.Path = "/teams/91eed9/repos/189dd/35f6c"; + Requests[112] = new DefaultHttpContext(); + Requests[112].RequestServices = CreateServices(); + Requests[112].Request.Method = "PATCH"; + Requests[112].Request.Path = "/repos/c8d69/5a51a"; + Requests[113] = new DefaultHttpContext(); + Requests[113].RequestServices = CreateServices(); + Requests[113].Request.Method = "DELETE"; + Requests[113].Request.Path = "/repos/a6b70/56c66"; + Requests[114] = new DefaultHttpContext(); + Requests[114].RequestServices = CreateServices(); + Requests[114].Request.Method = "GET"; + Requests[114].Request.Path = "/repos/ba9a3/cad23"; + Requests[115] = new DefaultHttpContext(); + Requests[115].RequestServices = CreateServices(); + Requests[115].Request.Method = "GET"; + Requests[115].Request.Path = "/networks/fcaf8/84422/events"; + Requests[116] = new DefaultHttpContext(); + Requests[116].RequestServices = CreateServices(); + Requests[116].Request.Method = "GET"; + Requests[116].Request.Path = "/repos/673e0/f8701/assignees"; + Requests[117] = new DefaultHttpContext(); + Requests[117].RequestServices = CreateServices(); + Requests[117].Request.Method = "GET"; + Requests[117].Request.Path = "/repos/a0209/62a33/branches"; + Requests[118] = new DefaultHttpContext(); + Requests[118].RequestServices = CreateServices(); + Requests[118].Request.Method = "GET"; + Requests[118].Request.Path = "/repos/9bb2b/64afd/collaborators"; + Requests[119] = new DefaultHttpContext(); + Requests[119].RequestServices = CreateServices(); + Requests[119].Request.Method = "GET"; + Requests[119].Request.Path = "/repos/88841/14fcf/comments"; + Requests[120] = new DefaultHttpContext(); + Requests[120].RequestServices = CreateServices(); + Requests[120].Request.Method = "GET"; + Requests[120].Request.Path = "/repos/c3a42/f3621/commits"; + Requests[121] = new DefaultHttpContext(); + Requests[121].RequestServices = CreateServices(); + Requests[121].Request.Method = "GET"; + Requests[121].Request.Path = "/repos/c97ea/02516/contributors"; + Requests[122] = new DefaultHttpContext(); + Requests[122].RequestServices = CreateServices(); + Requests[122].Request.Method = "GET"; + Requests[122].Request.Path = "/repos/0e145/74ac8/deployments"; + Requests[123] = new DefaultHttpContext(); + Requests[123].RequestServices = CreateServices(); + Requests[123].Request.Method = "POST"; + Requests[123].Request.Path = "/repos/98ad0/1b957/deployments"; + Requests[124] = new DefaultHttpContext(); + Requests[124].RequestServices = CreateServices(); + Requests[124].Request.Method = "GET"; + Requests[124].Request.Path = "/repos/024a2/1eb41/downloads"; + Requests[125] = new DefaultHttpContext(); + Requests[125].RequestServices = CreateServices(); + Requests[125].Request.Method = "GET"; + Requests[125].Request.Path = "/repos/d5cad/f8231/events"; + Requests[126] = new DefaultHttpContext(); + Requests[126].RequestServices = CreateServices(); + Requests[126].Request.Method = "GET"; + Requests[126].Request.Path = "/repos/d371c/72b82/forks"; + Requests[127] = new DefaultHttpContext(); + Requests[127].RequestServices = CreateServices(); + Requests[127].Request.Method = "POST"; + Requests[127].Request.Path = "/repos/f0086/e005d/forks"; + Requests[128] = new DefaultHttpContext(); + Requests[128].RequestServices = CreateServices(); + Requests[128].Request.Method = "POST"; + Requests[128].Request.Path = "/repos/3a68f/edfc1/hooks"; + Requests[129] = new DefaultHttpContext(); + Requests[129].RequestServices = CreateServices(); + Requests[129].Request.Method = "GET"; + Requests[129].Request.Path = "/repos/4f5aa/5f2cd/hooks"; + Requests[130] = new DefaultHttpContext(); + Requests[130].RequestServices = CreateServices(); + Requests[130].Request.Method = "GET"; + Requests[130].Request.Path = "/repos/5a7bb/3f08b/issues"; + Requests[131] = new DefaultHttpContext(); + Requests[131].RequestServices = CreateServices(); + Requests[131].Request.Method = "POST"; + Requests[131].Request.Path = "/repos/38084/699f9/issues"; + Requests[132] = new DefaultHttpContext(); + Requests[132].RequestServices = CreateServices(); + Requests[132].Request.Method = "GET"; + Requests[132].Request.Path = "/repos/764dd/f916c/keys"; + Requests[133] = new DefaultHttpContext(); + Requests[133].RequestServices = CreateServices(); + Requests[133].Request.Method = "POST"; + Requests[133].Request.Path = "/repos/cb0f8/a2bf4/keys"; + Requests[134] = new DefaultHttpContext(); + Requests[134].RequestServices = CreateServices(); + Requests[134].Request.Method = "GET"; + Requests[134].Request.Path = "/repos/669bb/04383/labels"; + Requests[135] = new DefaultHttpContext(); + Requests[135].RequestServices = CreateServices(); + Requests[135].Request.Method = "POST"; + Requests[135].Request.Path = "/repos/8d707/02782/labels"; + Requests[136] = new DefaultHttpContext(); + Requests[136].RequestServices = CreateServices(); + Requests[136].Request.Method = "GET"; + Requests[136].Request.Path = "/repos/b5333/4a0e6/languages"; + Requests[137] = new DefaultHttpContext(); + Requests[137].RequestServices = CreateServices(); + Requests[137].Request.Method = "POST"; + Requests[137].Request.Path = "/repos/c7d7a/1e2d3/merges"; + Requests[138] = new DefaultHttpContext(); + Requests[138].RequestServices = CreateServices(); + Requests[138].Request.Method = "GET"; + Requests[138].Request.Path = "/repos/04ef4/de9d2/milestones"; + Requests[139] = new DefaultHttpContext(); + Requests[139].RequestServices = CreateServices(); + Requests[139].Request.Method = "POST"; + Requests[139].Request.Path = "/repos/a6a19/65d59/milestones"; + Requests[140] = new DefaultHttpContext(); + Requests[140].RequestServices = CreateServices(); + Requests[140].Request.Method = "PUT"; + Requests[140].Request.Path = "/repos/3f065/88c9f/notifications"; + Requests[141] = new DefaultHttpContext(); + Requests[141].RequestServices = CreateServices(); + Requests[141].Request.Method = "GET"; + Requests[141].Request.Path = "/repos/1f9f5/58bc1/notifications"; + Requests[142] = new DefaultHttpContext(); + Requests[142].RequestServices = CreateServices(); + Requests[142].Request.Method = "POST"; + Requests[142].Request.Path = "/repos/b5cf9/09870/pulls"; + Requests[143] = new DefaultHttpContext(); + Requests[143].RequestServices = CreateServices(); + Requests[143].Request.Method = "GET"; + Requests[143].Request.Path = "/repos/9d7c9/73349/pulls"; + Requests[144] = new DefaultHttpContext(); + Requests[144].RequestServices = CreateServices(); + Requests[144].Request.Method = "GET"; + Requests[144].Request.Path = "/repos/681e6/51b96/readme"; + Requests[145] = new DefaultHttpContext(); + Requests[145].RequestServices = CreateServices(); + Requests[145].Request.Method = "POST"; + Requests[145].Request.Path = "/repos/995e7/0fc05/releases"; + Requests[146] = new DefaultHttpContext(); + Requests[146].RequestServices = CreateServices(); + Requests[146].Request.Method = "GET"; + Requests[146].Request.Path = "/repos/70706/4db75/releases"; + Requests[147] = new DefaultHttpContext(); + Requests[147].RequestServices = CreateServices(); + Requests[147].Request.Method = "GET"; + Requests[147].Request.Path = "/repos/ed8e4/2ac9a/stargazers"; + Requests[148] = new DefaultHttpContext(); + Requests[148].RequestServices = CreateServices(); + Requests[148].Request.Method = "GET"; + Requests[148].Request.Path = "/repos/2ce98/61a4f/subscribers"; + Requests[149] = new DefaultHttpContext(); + Requests[149].RequestServices = CreateServices(); + Requests[149].Request.Method = "PUT"; + Requests[149].Request.Path = "/repos/8e47e/73aea/subscription"; + Requests[150] = new DefaultHttpContext(); + Requests[150].RequestServices = CreateServices(); + Requests[150].Request.Method = "GET"; + Requests[150].Request.Path = "/repos/89a1e/ff66d/subscription"; + Requests[151] = new DefaultHttpContext(); + Requests[151].RequestServices = CreateServices(); + Requests[151].Request.Method = "DELETE"; + Requests[151].Request.Path = "/repos/4ef88/cea09/subscription"; + Requests[152] = new DefaultHttpContext(); + Requests[152].RequestServices = CreateServices(); + Requests[152].Request.Method = "GET"; + Requests[152].Request.Path = "/repos/15949/8ac47/tags"; + Requests[153] = new DefaultHttpContext(); + Requests[153].RequestServices = CreateServices(); + Requests[153].Request.Method = "GET"; + Requests[153].Request.Path = "/repos/dae74/c0aa0/teams"; + Requests[154] = new DefaultHttpContext(); + Requests[154].RequestServices = CreateServices(); + Requests[154].Request.Method = "GET"; + Requests[154].Request.Path = "/repos/1f052/3f5dd/watchers"; + Requests[155] = new DefaultHttpContext(); + Requests[155].RequestServices = CreateServices(); + Requests[155].Request.Method = "POST"; + Requests[155].Request.Path = "/repos/3813a/cd329/git/blobs"; + Requests[156] = new DefaultHttpContext(); + Requests[156].RequestServices = CreateServices(); + Requests[156].Request.Method = "POST"; + Requests[156].Request.Path = "/repos/3190b/d3733/git/commits"; + Requests[157] = new DefaultHttpContext(); + Requests[157].RequestServices = CreateServices(); + Requests[157].Request.Method = "GET"; + Requests[157].Request.Path = "/repos/b5096/6079c/git/refs"; + Requests[158] = new DefaultHttpContext(); + Requests[158].RequestServices = CreateServices(); + Requests[158].Request.Method = "POST"; + Requests[158].Request.Path = "/repos/1047a/b3551/git/refs"; + Requests[159] = new DefaultHttpContext(); + Requests[159].RequestServices = CreateServices(); + Requests[159].Request.Method = "POST"; + Requests[159].Request.Path = "/repos/5af5c/8e748/git/tags"; + Requests[160] = new DefaultHttpContext(); + Requests[160].RequestServices = CreateServices(); + Requests[160].Request.Method = "POST"; + Requests[160].Request.Path = "/repos/d6e7d/015bf/git/trees"; + Requests[161] = new DefaultHttpContext(); + Requests[161].RequestServices = CreateServices(); + Requests[161].Request.Method = "GET"; + Requests[161].Request.Path = "/repos/e720a/8355c/issues/comments"; + Requests[162] = new DefaultHttpContext(); + Requests[162].RequestServices = CreateServices(); + Requests[162].Request.Method = "GET"; + Requests[162].Request.Path = "/repos/521c1/6efee/issues/events"; + Requests[163] = new DefaultHttpContext(); + Requests[163].RequestServices = CreateServices(); + Requests[163].Request.Method = "GET"; + Requests[163].Request.Path = "/repos/8a335/9b409/pulls/comments"; + Requests[164] = new DefaultHttpContext(); + Requests[164].RequestServices = CreateServices(); + Requests[164].Request.Method = "GET"; + Requests[164].Request.Path = "/repos/e8356/20c39/stats/code_frequency"; + Requests[165] = new DefaultHttpContext(); + Requests[165].RequestServices = CreateServices(); + Requests[165].Request.Method = "GET"; + Requests[165].Request.Path = "/repos/0272d/2c8c3/stats/commit_activity"; + Requests[166] = new DefaultHttpContext(); + Requests[166].RequestServices = CreateServices(); + Requests[166].Request.Method = "GET"; + Requests[166].Request.Path = "/repos/7073c/cb35a/stats/contributors"; + Requests[167] = new DefaultHttpContext(); + Requests[167].RequestServices = CreateServices(); + Requests[167].Request.Method = "GET"; + Requests[167].Request.Path = "/repos/86066/0134f/stats/participation"; + Requests[168] = new DefaultHttpContext(); + Requests[168].RequestServices = CreateServices(); + Requests[168].Request.Method = "GET"; + Requests[168].Request.Path = "/repos/b8add/8d26a/stats/punch_card"; + Requests[169] = new DefaultHttpContext(); + Requests[169].RequestServices = CreateServices(); + Requests[169].Request.Method = "GET"; + Requests[169].Request.Path = "/repos/6ea45/b6794/git/blobs/5c33fac"; + Requests[170] = new DefaultHttpContext(); + Requests[170].RequestServices = CreateServices(); + Requests[170].Request.Method = "GET"; + Requests[170].Request.Path = "/repos/cb558/705ee/git/commits/171b566"; + Requests[171] = new DefaultHttpContext(); + Requests[171].RequestServices = CreateServices(); + Requests[171].Request.Method = "DELETE"; + Requests[171].Request.Path = "/repos/8345e/91f8c/git/refs/b5e99"; + Requests[172] = new DefaultHttpContext(); + Requests[172].RequestServices = CreateServices(); + Requests[172].Request.Method = "PATCH"; + Requests[172].Request.Path = "/repos/3192a/5c61a/git/refs/60e61"; + Requests[173] = new DefaultHttpContext(); + Requests[173].RequestServices = CreateServices(); + Requests[173].Request.Method = "GET"; + Requests[173].Request.Path = "/repos/09c5f/76bd4/git/refs/16c1b"; + Requests[174] = new DefaultHttpContext(); + Requests[174].RequestServices = CreateServices(); + Requests[174].Request.Method = "GET"; + Requests[174].Request.Path = "/repos/49157/59ca0/git/tags/183d0ef"; + Requests[175] = new DefaultHttpContext(); + Requests[175].RequestServices = CreateServices(); + Requests[175].Request.Method = "GET"; + Requests[175].Request.Path = "/repos/a20a3/cd8cd/git/trees/1a6c7ca"; + Requests[176] = new DefaultHttpContext(); + Requests[176].RequestServices = CreateServices(); + Requests[176].Request.Method = "GET"; + Requests[176].Request.Path = "/repos/67d82/01158/issues/comments/b7d4fa80-"; + Requests[177] = new DefaultHttpContext(); + Requests[177].RequestServices = CreateServices(); + Requests[177].Request.Method = "PATCH"; + Requests[177].Request.Path = "/repos/d1159/092ba/issues/comments/4f2d0804-"; + Requests[178] = new DefaultHttpContext(); + Requests[178].RequestServices = CreateServices(); + Requests[178].Request.Method = "DELETE"; + Requests[178].Request.Path = "/repos/f1531/7ae3a/issues/comments/e3bf963c-"; + Requests[179] = new DefaultHttpContext(); + Requests[179].RequestServices = CreateServices(); + Requests[179].Request.Method = "GET"; + Requests[179].Request.Path = "/repos/57816/f1144/issues/events/081002b"; + Requests[180] = new DefaultHttpContext(); + Requests[180].RequestServices = CreateServices(); + Requests[180].Request.Method = "PATCH"; + Requests[180].Request.Path = "/repos/56ad9/b972d/pulls/comments/942cbd65-"; + Requests[181] = new DefaultHttpContext(); + Requests[181].RequestServices = CreateServices(); + Requests[181].Request.Method = "GET"; + Requests[181].Request.Path = "/repos/ed712/2c9ee/pulls/comments/a6a82a40-"; + Requests[182] = new DefaultHttpContext(); + Requests[182].RequestServices = CreateServices(); + Requests[182].Request.Method = "DELETE"; + Requests[182].Request.Path = "/repos/f447b/83a3c/pulls/comments/546f821d-"; + Requests[183] = new DefaultHttpContext(); + Requests[183].RequestServices = CreateServices(); + Requests[183].Request.Method = "PATCH"; + Requests[183].Request.Path = "/repos/7d270/354b6/releases/assets/28c26"; + Requests[184] = new DefaultHttpContext(); + Requests[184].RequestServices = CreateServices(); + Requests[184].Request.Method = "DELETE"; + Requests[184].Request.Path = "/repos/89d11/4446a/releases/assets/85ca4"; + Requests[185] = new DefaultHttpContext(); + Requests[185].RequestServices = CreateServices(); + Requests[185].Request.Method = "GET"; + Requests[185].Request.Path = "/repos/1007a/dea4d/releases/assets/a791d"; + Requests[186] = new DefaultHttpContext(); + Requests[186].RequestServices = CreateServices(); + Requests[186].Request.Method = "GET"; + Requests[186].Request.Path = "/repos/19707/4461f/assignees/1b0f6997"; + Requests[187] = new DefaultHttpContext(); + Requests[187].RequestServices = CreateServices(); + Requests[187].Request.Method = "GET"; + Requests[187].Request.Path = "/repos/b52e7/f3620/branches/53b3b2"; + Requests[188] = new DefaultHttpContext(); + Requests[188].RequestServices = CreateServices(); + Requests[188].Request.Method = "PUT"; + Requests[188].Request.Path = "/repos/89924/ab7d1/collaborators/d9e5f"; + Requests[189] = new DefaultHttpContext(); + Requests[189].RequestServices = CreateServices(); + Requests[189].Request.Method = "DELETE"; + Requests[189].Request.Path = "/repos/75619/6718d/collaborators/b3f56"; + Requests[190] = new DefaultHttpContext(); + Requests[190].RequestServices = CreateServices(); + Requests[190].Request.Method = "GET"; + Requests[190].Request.Path = "/repos/860b7/f702b/collaborators/b501c"; + Requests[191] = new DefaultHttpContext(); + Requests[191].RequestServices = CreateServices(); + Requests[191].Request.Method = "DELETE"; + Requests[191].Request.Path = "/repos/24eb6/d74db/comments/67f29b88-"; + Requests[192] = new DefaultHttpContext(); + Requests[192].RequestServices = CreateServices(); + Requests[192].Request.Method = "GET"; + Requests[192].Request.Path = "/repos/56f6e/b594f/comments/333ad754-"; + Requests[193] = new DefaultHttpContext(); + Requests[193].RequestServices = CreateServices(); + Requests[193].Request.Method = "PATCH"; + Requests[193].Request.Path = "/repos/1936e/266d9/comments/32f61601-"; + Requests[194] = new DefaultHttpContext(); + Requests[194].RequestServices = CreateServices(); + Requests[194].Request.Method = "GET"; + Requests[194].Request.Path = "/repos/bf0c5/04d97/commits/8f2cd44"; + Requests[195] = new DefaultHttpContext(); + Requests[195].RequestServices = CreateServices(); + Requests[195].Request.Method = "GET"; + Requests[195].Request.Path = "/repos/50be2/cb7dc/contents/ca557"; + Requests[196] = new DefaultHttpContext(); + Requests[196].RequestServices = CreateServices(); + Requests[196].Request.Method = "DELETE"; + Requests[196].Request.Path = "/repos/0d9fe/35d38/contents/6c1b5"; + Requests[197] = new DefaultHttpContext(); + Requests[197].RequestServices = CreateServices(); + Requests[197].Request.Method = "PUT"; + Requests[197].Request.Path = "/repos/91795/2625e/contents/b9b80"; + Requests[198] = new DefaultHttpContext(); + Requests[198].RequestServices = CreateServices(); + Requests[198].Request.Method = "GET"; + Requests[198].Request.Path = "/repos/d6d50/39fb7/downloads/214cb182-a"; + Requests[199] = new DefaultHttpContext(); + Requests[199].RequestServices = CreateServices(); + Requests[199].Request.Method = "DELETE"; + Requests[199].Request.Path = "/repos/20bbe/b4263/downloads/d65ce00c-d"; + Requests[200] = new DefaultHttpContext(); + Requests[200].RequestServices = CreateServices(); + Requests[200].Request.Method = "DELETE"; + Requests[200].Request.Path = "/repos/b838e/a0ce0/hooks/1e7f13"; + Requests[201] = new DefaultHttpContext(); + Requests[201].RequestServices = CreateServices(); + Requests[201].Request.Method = "GET"; + Requests[201].Request.Path = "/repos/3be3d/23c37/hooks/f9ad9a"; + Requests[202] = new DefaultHttpContext(); + Requests[202].RequestServices = CreateServices(); + Requests[202].Request.Method = "PATCH"; + Requests[202].Request.Path = "/repos/2c3a4/bb9af/hooks/84ffe1"; + Requests[203] = new DefaultHttpContext(); + Requests[203].RequestServices = CreateServices(); + Requests[203].Request.Method = "GET"; + Requests[203].Request.Path = "/repos/cfcc9/2afa8/issues/9ea5f8"; + Requests[204] = new DefaultHttpContext(); + Requests[204].RequestServices = CreateServices(); + Requests[204].Request.Method = "PATCH"; + Requests[204].Request.Path = "/repos/9618e/f75de/issues/54bede"; + Requests[205] = new DefaultHttpContext(); + Requests[205].RequestServices = CreateServices(); + Requests[205].Request.Method = "GET"; + Requests[205].Request.Path = "/repos/581a6/d7149/keys/9f082"; + Requests[206] = new DefaultHttpContext(); + Requests[206].RequestServices = CreateServices(); + Requests[206].Request.Method = "DELETE"; + Requests[206].Request.Path = "/repos/c8f51/b1a21/keys/83bf2"; + Requests[207] = new DefaultHttpContext(); + Requests[207].RequestServices = CreateServices(); + Requests[207].Request.Method = "GET"; + Requests[207].Request.Path = "/repos/8f89a/70673/labels/c8963"; + Requests[208] = new DefaultHttpContext(); + Requests[208].RequestServices = CreateServices(); + Requests[208].Request.Method = "PATCH"; + Requests[208].Request.Path = "/repos/7fbdf/8ead3/labels/fa2d6"; + Requests[209] = new DefaultHttpContext(); + Requests[209].RequestServices = CreateServices(); + Requests[209].Request.Method = "DELETE"; + Requests[209].Request.Path = "/repos/9fa74/e74bc/labels/772b0"; + Requests[210] = new DefaultHttpContext(); + Requests[210].RequestServices = CreateServices(); + Requests[210].Request.Method = "PATCH"; + Requests[210].Request.Path = "/repos/09fd5/3e300/milestones/976fc4"; + Requests[211] = new DefaultHttpContext(); + Requests[211].RequestServices = CreateServices(); + Requests[211].Request.Method = "GET"; + Requests[211].Request.Path = "/repos/1435a/d9b7e/milestones/9f0a34"; + Requests[212] = new DefaultHttpContext(); + Requests[212].RequestServices = CreateServices(); + Requests[212].Request.Method = "DELETE"; + Requests[212].Request.Path = "/repos/3c95f/84454/milestones/549440"; + Requests[213] = new DefaultHttpContext(); + Requests[213].RequestServices = CreateServices(); + Requests[213].Request.Method = "GET"; + Requests[213].Request.Path = "/repos/eeb3d/51b0c/pulls/ad7440"; + Requests[214] = new DefaultHttpContext(); + Requests[214].RequestServices = CreateServices(); + Requests[214].Request.Method = "PATCH"; + Requests[214].Request.Path = "/repos/5f14f/457de/pulls/cd4607"; + Requests[215] = new DefaultHttpContext(); + Requests[215].RequestServices = CreateServices(); + Requests[215].Request.Method = "PATCH"; + Requests[215].Request.Path = "/repos/11832/78737/releases/959f7"; + Requests[216] = new DefaultHttpContext(); + Requests[216].RequestServices = CreateServices(); + Requests[216].Request.Method = "GET"; + Requests[216].Request.Path = "/repos/ccb9f/de1bc/releases/ad071"; + Requests[217] = new DefaultHttpContext(); + Requests[217].RequestServices = CreateServices(); + Requests[217].Request.Method = "DELETE"; + Requests[217].Request.Path = "/repos/f15aa/e63b6/releases/1369d"; + Requests[218] = new DefaultHttpContext(); + Requests[218].RequestServices = CreateServices(); + Requests[218].Request.Method = "GET"; + Requests[218].Request.Path = "/repos/7452e/dcd51/statuses/b478e"; + Requests[219] = new DefaultHttpContext(); + Requests[219].RequestServices = CreateServices(); + Requests[219].Request.Method = "POST"; + Requests[219].Request.Path = "/repos/d30d7/fe97d/statuses/62682"; + Requests[220] = new DefaultHttpContext(); + Requests[220].RequestServices = CreateServices(); + Requests[220].Request.Method = "GET"; + Requests[220].Request.Path = "/repos/227bd/07245/commits/a6c05/status"; + Requests[221] = new DefaultHttpContext(); + Requests[221].RequestServices = CreateServices(); + Requests[221].Request.Method = "GET"; + Requests[221].Request.Path = "/repos/b55dd/cf212/commits/ad1d5c8/comments"; + Requests[222] = new DefaultHttpContext(); + Requests[222].RequestServices = CreateServices(); + Requests[222].Request.Method = "POST"; + Requests[222].Request.Path = "/repos/77112/723f5/commits/14b857c/comments"; + Requests[223] = new DefaultHttpContext(); + Requests[223].RequestServices = CreateServices(); + Requests[223].Request.Method = "GET"; + Requests[223].Request.Path = "/repos/c22d7/a0574/deployments/61d58/statuses"; + Requests[224] = new DefaultHttpContext(); + Requests[224].RequestServices = CreateServices(); + Requests[224].Request.Method = "POST"; + Requests[224].Request.Path = "/repos/286ce/dca61/deployments/184d0/statuses"; + Requests[225] = new DefaultHttpContext(); + Requests[225].RequestServices = CreateServices(); + Requests[225].Request.Method = "POST"; + Requests[225].Request.Path = "/repos/7f5a4/2398d/hooks/266f33/tests"; + Requests[226] = new DefaultHttpContext(); + Requests[226].RequestServices = CreateServices(); + Requests[226].Request.Method = "POST"; + Requests[226].Request.Path = "/repos/99172/650ce/issues/924319/comments"; + Requests[227] = new DefaultHttpContext(); + Requests[227].RequestServices = CreateServices(); + Requests[227].Request.Method = "GET"; + Requests[227].Request.Path = "/repos/de2d1/af156/issues/b5697c/comments"; + Requests[228] = new DefaultHttpContext(); + Requests[228].RequestServices = CreateServices(); + Requests[228].Request.Method = "GET"; + Requests[228].Request.Path = "/repos/d8ae8/f45f3/issues/275689/events"; + Requests[229] = new DefaultHttpContext(); + Requests[229].RequestServices = CreateServices(); + Requests[229].Request.Method = "POST"; + Requests[229].Request.Path = "/repos/7a71d/c9cbc/issues/ec14d8/labels"; + Requests[230] = new DefaultHttpContext(); + Requests[230].RequestServices = CreateServices(); + Requests[230].Request.Method = "GET"; + Requests[230].Request.Path = "/repos/01a16/e4c7a/issues/7d2ede/labels"; + Requests[231] = new DefaultHttpContext(); + Requests[231].RequestServices = CreateServices(); + Requests[231].Request.Method = "PUT"; + Requests[231].Request.Path = "/repos/24669/5fa5c/issues/255b9b/labels"; + Requests[232] = new DefaultHttpContext(); + Requests[232].RequestServices = CreateServices(); + Requests[232].Request.Method = "DELETE"; + Requests[232].Request.Path = "/repos/75c85/698e1/issues/9a1cde/labels"; + Requests[233] = new DefaultHttpContext(); + Requests[233].RequestServices = CreateServices(); + Requests[233].Request.Method = "GET"; + Requests[233].Request.Path = "/repos/9e801/94a85/milestones/5803ca/labels"; + Requests[234] = new DefaultHttpContext(); + Requests[234].RequestServices = CreateServices(); + Requests[234].Request.Method = "GET"; + Requests[234].Request.Path = "/repos/992d0/3d73f/pulls/6b0862/comments"; + Requests[235] = new DefaultHttpContext(); + Requests[235].RequestServices = CreateServices(); + Requests[235].Request.Method = "POST"; + Requests[235].Request.Path = "/repos/78a07/d7376/pulls/131151/comments"; + Requests[236] = new DefaultHttpContext(); + Requests[236].RequestServices = CreateServices(); + Requests[236].Request.Method = "GET"; + Requests[236].Request.Path = "/repos/4dd6e/584c9/pulls/937b3d/commits"; + Requests[237] = new DefaultHttpContext(); + Requests[237].RequestServices = CreateServices(); + Requests[237].Request.Method = "GET"; + Requests[237].Request.Path = "/repos/d442a/baba7/pulls/15f0a9/files"; + Requests[238] = new DefaultHttpContext(); + Requests[238].RequestServices = CreateServices(); + Requests[238].Request.Method = "PUT"; + Requests[238].Request.Path = "/repos/7a478/342f4/pulls/784bbf/merge"; + Requests[239] = new DefaultHttpContext(); + Requests[239].RequestServices = CreateServices(); + Requests[239].Request.Method = "GET"; + Requests[239].Request.Path = "/repos/0b7c9/15aaa/pulls/aed5dd/merge"; + Requests[240] = new DefaultHttpContext(); + Requests[240].RequestServices = CreateServices(); + Requests[240].Request.Method = "GET"; + Requests[240].Request.Path = "/repos/923b1/a897d/releases/2e13f/assets"; + Requests[241] = new DefaultHttpContext(); + Requests[241].RequestServices = CreateServices(); + Requests[241].Request.Method = "DELETE"; + Requests[241].Request.Path = "/repos/2ed7f/43848/issues/c67851/labels/498e1"; + Requests[242] = new DefaultHttpContext(); + Requests[242].RequestServices = CreateServices(); + Requests[242].Request.Method = "GET"; + Requests[242].Request.Path = "/repos/21a74/f36c8/805b0492-b723-/680ad"; + } + + private protected Matcher SetupMatcher(MatcherBuilder builder) + { + builder.AddEndpoint(Endpoints[0]); + builder.AddEndpoint(Endpoints[1]); + builder.AddEndpoint(Endpoints[2]); + builder.AddEndpoint(Endpoints[3]); + builder.AddEndpoint(Endpoints[4]); + builder.AddEndpoint(Endpoints[5]); + builder.AddEndpoint(Endpoints[6]); + builder.AddEndpoint(Endpoints[7]); + builder.AddEndpoint(Endpoints[8]); + builder.AddEndpoint(Endpoints[9]); + builder.AddEndpoint(Endpoints[10]); + builder.AddEndpoint(Endpoints[11]); + builder.AddEndpoint(Endpoints[12]); + builder.AddEndpoint(Endpoints[13]); + builder.AddEndpoint(Endpoints[14]); + builder.AddEndpoint(Endpoints[15]); + builder.AddEndpoint(Endpoints[16]); + builder.AddEndpoint(Endpoints[17]); + builder.AddEndpoint(Endpoints[18]); + builder.AddEndpoint(Endpoints[19]); + builder.AddEndpoint(Endpoints[20]); + builder.AddEndpoint(Endpoints[21]); + builder.AddEndpoint(Endpoints[22]); + builder.AddEndpoint(Endpoints[23]); + builder.AddEndpoint(Endpoints[24]); + builder.AddEndpoint(Endpoints[25]); + builder.AddEndpoint(Endpoints[26]); + builder.AddEndpoint(Endpoints[27]); + builder.AddEndpoint(Endpoints[28]); + builder.AddEndpoint(Endpoints[29]); + builder.AddEndpoint(Endpoints[30]); + builder.AddEndpoint(Endpoints[31]); + builder.AddEndpoint(Endpoints[32]); + builder.AddEndpoint(Endpoints[33]); + builder.AddEndpoint(Endpoints[34]); + builder.AddEndpoint(Endpoints[35]); + builder.AddEndpoint(Endpoints[36]); + builder.AddEndpoint(Endpoints[37]); + builder.AddEndpoint(Endpoints[38]); + builder.AddEndpoint(Endpoints[39]); + builder.AddEndpoint(Endpoints[40]); + builder.AddEndpoint(Endpoints[41]); + builder.AddEndpoint(Endpoints[42]); + builder.AddEndpoint(Endpoints[43]); + builder.AddEndpoint(Endpoints[44]); + builder.AddEndpoint(Endpoints[45]); + builder.AddEndpoint(Endpoints[46]); + builder.AddEndpoint(Endpoints[47]); + builder.AddEndpoint(Endpoints[48]); + builder.AddEndpoint(Endpoints[49]); + builder.AddEndpoint(Endpoints[50]); + builder.AddEndpoint(Endpoints[51]); + builder.AddEndpoint(Endpoints[52]); + builder.AddEndpoint(Endpoints[53]); + builder.AddEndpoint(Endpoints[54]); + builder.AddEndpoint(Endpoints[55]); + builder.AddEndpoint(Endpoints[56]); + builder.AddEndpoint(Endpoints[57]); + builder.AddEndpoint(Endpoints[58]); + builder.AddEndpoint(Endpoints[59]); + builder.AddEndpoint(Endpoints[60]); + builder.AddEndpoint(Endpoints[61]); + builder.AddEndpoint(Endpoints[62]); + builder.AddEndpoint(Endpoints[63]); + builder.AddEndpoint(Endpoints[64]); + builder.AddEndpoint(Endpoints[65]); + builder.AddEndpoint(Endpoints[66]); + builder.AddEndpoint(Endpoints[67]); + builder.AddEndpoint(Endpoints[68]); + builder.AddEndpoint(Endpoints[69]); + builder.AddEndpoint(Endpoints[70]); + builder.AddEndpoint(Endpoints[71]); + builder.AddEndpoint(Endpoints[72]); + builder.AddEndpoint(Endpoints[73]); + builder.AddEndpoint(Endpoints[74]); + builder.AddEndpoint(Endpoints[75]); + builder.AddEndpoint(Endpoints[76]); + builder.AddEndpoint(Endpoints[77]); + builder.AddEndpoint(Endpoints[78]); + builder.AddEndpoint(Endpoints[79]); + builder.AddEndpoint(Endpoints[80]); + builder.AddEndpoint(Endpoints[81]); + builder.AddEndpoint(Endpoints[82]); + builder.AddEndpoint(Endpoints[83]); + builder.AddEndpoint(Endpoints[84]); + builder.AddEndpoint(Endpoints[85]); + builder.AddEndpoint(Endpoints[86]); + builder.AddEndpoint(Endpoints[87]); + builder.AddEndpoint(Endpoints[88]); + builder.AddEndpoint(Endpoints[89]); + builder.AddEndpoint(Endpoints[90]); + builder.AddEndpoint(Endpoints[91]); + builder.AddEndpoint(Endpoints[92]); + builder.AddEndpoint(Endpoints[93]); + builder.AddEndpoint(Endpoints[94]); + builder.AddEndpoint(Endpoints[95]); + builder.AddEndpoint(Endpoints[96]); + builder.AddEndpoint(Endpoints[97]); + builder.AddEndpoint(Endpoints[98]); + builder.AddEndpoint(Endpoints[99]); + builder.AddEndpoint(Endpoints[100]); + builder.AddEndpoint(Endpoints[101]); + builder.AddEndpoint(Endpoints[102]); + builder.AddEndpoint(Endpoints[103]); + builder.AddEndpoint(Endpoints[104]); + builder.AddEndpoint(Endpoints[105]); + builder.AddEndpoint(Endpoints[106]); + builder.AddEndpoint(Endpoints[107]); + builder.AddEndpoint(Endpoints[108]); + builder.AddEndpoint(Endpoints[109]); + builder.AddEndpoint(Endpoints[110]); + builder.AddEndpoint(Endpoints[111]); + builder.AddEndpoint(Endpoints[112]); + builder.AddEndpoint(Endpoints[113]); + builder.AddEndpoint(Endpoints[114]); + builder.AddEndpoint(Endpoints[115]); + builder.AddEndpoint(Endpoints[116]); + builder.AddEndpoint(Endpoints[117]); + builder.AddEndpoint(Endpoints[118]); + builder.AddEndpoint(Endpoints[119]); + builder.AddEndpoint(Endpoints[120]); + builder.AddEndpoint(Endpoints[121]); + builder.AddEndpoint(Endpoints[122]); + builder.AddEndpoint(Endpoints[123]); + builder.AddEndpoint(Endpoints[124]); + builder.AddEndpoint(Endpoints[125]); + builder.AddEndpoint(Endpoints[126]); + builder.AddEndpoint(Endpoints[127]); + builder.AddEndpoint(Endpoints[128]); + builder.AddEndpoint(Endpoints[129]); + builder.AddEndpoint(Endpoints[130]); + builder.AddEndpoint(Endpoints[131]); + builder.AddEndpoint(Endpoints[132]); + builder.AddEndpoint(Endpoints[133]); + builder.AddEndpoint(Endpoints[134]); + builder.AddEndpoint(Endpoints[135]); + builder.AddEndpoint(Endpoints[136]); + builder.AddEndpoint(Endpoints[137]); + builder.AddEndpoint(Endpoints[138]); + builder.AddEndpoint(Endpoints[139]); + builder.AddEndpoint(Endpoints[140]); + builder.AddEndpoint(Endpoints[141]); + builder.AddEndpoint(Endpoints[142]); + builder.AddEndpoint(Endpoints[143]); + builder.AddEndpoint(Endpoints[144]); + builder.AddEndpoint(Endpoints[145]); + builder.AddEndpoint(Endpoints[146]); + builder.AddEndpoint(Endpoints[147]); + builder.AddEndpoint(Endpoints[148]); + builder.AddEndpoint(Endpoints[149]); + builder.AddEndpoint(Endpoints[150]); + builder.AddEndpoint(Endpoints[151]); + builder.AddEndpoint(Endpoints[152]); + builder.AddEndpoint(Endpoints[153]); + builder.AddEndpoint(Endpoints[154]); + builder.AddEndpoint(Endpoints[155]); + builder.AddEndpoint(Endpoints[156]); + builder.AddEndpoint(Endpoints[157]); + builder.AddEndpoint(Endpoints[158]); + builder.AddEndpoint(Endpoints[159]); + builder.AddEndpoint(Endpoints[160]); + builder.AddEndpoint(Endpoints[161]); + builder.AddEndpoint(Endpoints[162]); + builder.AddEndpoint(Endpoints[163]); + builder.AddEndpoint(Endpoints[164]); + builder.AddEndpoint(Endpoints[165]); + builder.AddEndpoint(Endpoints[166]); + builder.AddEndpoint(Endpoints[167]); + builder.AddEndpoint(Endpoints[168]); + builder.AddEndpoint(Endpoints[169]); + builder.AddEndpoint(Endpoints[170]); + builder.AddEndpoint(Endpoints[171]); + builder.AddEndpoint(Endpoints[172]); + builder.AddEndpoint(Endpoints[173]); + builder.AddEndpoint(Endpoints[174]); + builder.AddEndpoint(Endpoints[175]); + builder.AddEndpoint(Endpoints[176]); + builder.AddEndpoint(Endpoints[177]); + builder.AddEndpoint(Endpoints[178]); + builder.AddEndpoint(Endpoints[179]); + builder.AddEndpoint(Endpoints[180]); + builder.AddEndpoint(Endpoints[181]); + builder.AddEndpoint(Endpoints[182]); + builder.AddEndpoint(Endpoints[183]); + builder.AddEndpoint(Endpoints[184]); + builder.AddEndpoint(Endpoints[185]); + builder.AddEndpoint(Endpoints[186]); + builder.AddEndpoint(Endpoints[187]); + builder.AddEndpoint(Endpoints[188]); + builder.AddEndpoint(Endpoints[189]); + builder.AddEndpoint(Endpoints[190]); + builder.AddEndpoint(Endpoints[191]); + builder.AddEndpoint(Endpoints[192]); + builder.AddEndpoint(Endpoints[193]); + builder.AddEndpoint(Endpoints[194]); + builder.AddEndpoint(Endpoints[195]); + builder.AddEndpoint(Endpoints[196]); + builder.AddEndpoint(Endpoints[197]); + builder.AddEndpoint(Endpoints[198]); + builder.AddEndpoint(Endpoints[199]); + builder.AddEndpoint(Endpoints[200]); + builder.AddEndpoint(Endpoints[201]); + builder.AddEndpoint(Endpoints[202]); + builder.AddEndpoint(Endpoints[203]); + builder.AddEndpoint(Endpoints[204]); + builder.AddEndpoint(Endpoints[205]); + builder.AddEndpoint(Endpoints[206]); + builder.AddEndpoint(Endpoints[207]); + builder.AddEndpoint(Endpoints[208]); + builder.AddEndpoint(Endpoints[209]); + builder.AddEndpoint(Endpoints[210]); + builder.AddEndpoint(Endpoints[211]); + builder.AddEndpoint(Endpoints[212]); + builder.AddEndpoint(Endpoints[213]); + builder.AddEndpoint(Endpoints[214]); + builder.AddEndpoint(Endpoints[215]); + builder.AddEndpoint(Endpoints[216]); + builder.AddEndpoint(Endpoints[217]); + builder.AddEndpoint(Endpoints[218]); + builder.AddEndpoint(Endpoints[219]); + builder.AddEndpoint(Endpoints[220]); + builder.AddEndpoint(Endpoints[221]); + builder.AddEndpoint(Endpoints[222]); + builder.AddEndpoint(Endpoints[223]); + builder.AddEndpoint(Endpoints[224]); + builder.AddEndpoint(Endpoints[225]); + builder.AddEndpoint(Endpoints[226]); + builder.AddEndpoint(Endpoints[227]); + builder.AddEndpoint(Endpoints[228]); + builder.AddEndpoint(Endpoints[229]); + builder.AddEndpoint(Endpoints[230]); + builder.AddEndpoint(Endpoints[231]); + builder.AddEndpoint(Endpoints[232]); + builder.AddEndpoint(Endpoints[233]); + builder.AddEndpoint(Endpoints[234]); + builder.AddEndpoint(Endpoints[235]); + builder.AddEndpoint(Endpoints[236]); + builder.AddEndpoint(Endpoints[237]); + builder.AddEndpoint(Endpoints[238]); + builder.AddEndpoint(Endpoints[239]); + builder.AddEndpoint(Endpoints[240]); + builder.AddEndpoint(Endpoints[241]); + builder.AddEndpoint(Endpoints[242]); + return builder.Build(); + } + } +} \ No newline at end of file diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherSingleEntryBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherSingleEntryBenchmark.cs new file mode 100644 index 0000000000..412ffdaef3 --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/MatcherSingleEntryBenchmark.cs @@ -0,0 +1,95 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading.Tasks; +using BenchmarkDotNet.Attributes; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // Just like TechEmpower Plaintext + public partial class MatcherSingleEntryBenchmark : EndpointRoutingBenchmarkBase + { + private const int SampleCount = 100; + + private BarebonesMatcher _baseline; + private Matcher _dfa; + private Matcher _route; + private Matcher _tree; + + private EndpointSelectorContext _feature; + + [GlobalSetup] + public void Setup() + { + Endpoints = new RouteEndpoint[1]; + Endpoints[0] = CreateEndpoint("/plaintext"); + + Requests = new HttpContext[1]; + Requests[0] = new DefaultHttpContext(); + Requests[0].RequestServices = CreateServices(); + Requests[0].Request.Path = "/plaintext"; + + _baseline = (BarebonesMatcher)SetupMatcher(new BarebonesMatcherBuilder()); + _dfa = SetupMatcher(CreateDfaMatcherBuilder()); + _route = SetupMatcher(new RouteMatcherBuilder()); + _tree = SetupMatcher(new TreeRouterMatcherBuilder()); + + _feature = new EndpointSelectorContext(); + } + + private Matcher SetupMatcher(MatcherBuilder builder) + { + builder.AddEndpoint(Endpoints[0]); + return builder.Build(); + } + + [Benchmark(Baseline = true)] + public async Task Baseline() + { + var feature = _feature; + var httpContext = Requests[0]; + + await _baseline.MatchAsync(httpContext, feature); + Validate(httpContext, Endpoints[0], feature.Endpoint); + } + + [Benchmark] + public async Task Dfa() + { + var feature = _feature; + var httpContext = Requests[0]; + + await _dfa.MatchAsync(httpContext, feature); + Validate(httpContext, Endpoints[0], feature.Endpoint); + } + + [Benchmark] + public async Task LegacyTreeRouter() + { + var feature = _feature; + + var httpContext = Requests[0]; + + // This is required to make the legacy router implementation work with global routing. + httpContext.Features.Set(feature); + + await _tree.MatchAsync(httpContext, feature); + Validate(httpContext, Endpoints[0], feature.Endpoint); + } + + [Benchmark] + public async Task LegacyRouter() + { + var feature = _feature; + var httpContext = Requests[0]; + + // This is required to make the legacy router implementation work with global routing. + httpContext.Features.Set(feature); + + await _route.MatchAsync(httpContext, feature); + Validate(httpContext, Endpoints[0], feature.Endpoint); + } + } +} \ No newline at end of file diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/RouteEndpointAzureBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/RouteEndpointAzureBenchmark.cs new file mode 100644 index 0000000000..5d3af48562 --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/RouteEndpointAzureBenchmark.cs @@ -0,0 +1,16 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using BenchmarkDotNet.Attributes; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class RouteEndpointAzureBenchmark : MatcherAzureBenchmarkBase + { + [Benchmark] + public void CreateEndpoints() + { + SetupEndpoints(); + } + } +} \ No newline at end of file diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/TrivialMatcher.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/TrivialMatcher.cs new file mode 100644 index 0000000000..3e00ce1999 --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/TrivialMatcher.cs @@ -0,0 +1,59 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // A test-only matcher implementation - used as a baseline for simpler + // perf tests. The idea with this matcher is that we can cheat on the requirements + // to establish a lower bound for perf comparisons. + internal sealed class TrivialMatcher : Matcher + { + private readonly RouteEndpoint _endpoint; + private readonly Candidate[] _candidates; + + public TrivialMatcher(RouteEndpoint endpoint) + { + _endpoint = endpoint; + + _candidates = new Candidate[] { new Candidate(endpoint), }; + } + + public sealed override Task MatchAsync(HttpContext httpContext, EndpointSelectorContext context) + { + if (httpContext == null) + { + throw new ArgumentNullException(nameof(httpContext)); + } + + if (context == null) + { + throw new ArgumentNullException(nameof(context)); + } + + var path = httpContext.Request.Path.Value; + if (string.Equals(_endpoint.RoutePattern.RawText, path, StringComparison.OrdinalIgnoreCase)) + { + context.Endpoint = _endpoint; + context.RouteValues = new RouteValueDictionary(); + } + + return Task.CompletedTask; + } + + // This is here so this can be tested alongside DFA matcher. + internal Candidate[] FindCandidateSet(string path, ReadOnlySpan segments) + { + if (string.Equals(_endpoint.RoutePattern.RawText, path, StringComparison.OrdinalIgnoreCase)) + { + return _candidates; + } + + return Array.Empty(); + } + } +} diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/TrivialMatcherBuilder.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/TrivialMatcherBuilder.cs new file mode 100644 index 0000000000..01ce2871ac --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Matching/TrivialMatcherBuilder.cs @@ -0,0 +1,23 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using System.Linq; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal class TrivialMatcherBuilder : MatcherBuilder + { + private readonly List _endpoints = new List(); + + public override void AddEndpoint(RouteEndpoint endpoint) + { + _endpoints.Add(endpoint); + } + + public override Matcher Build() + { + return new TrivialMatcher(_endpoints.Last()); + } + } +} diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Microsoft.AspNetCore.Routing.Performance.csproj b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Microsoft.AspNetCore.Routing.Performance.csproj index 453925e513..625a26262a 100644 --- a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Microsoft.AspNetCore.Routing.Performance.csproj +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Microsoft.AspNetCore.Routing.Performance.csproj @@ -1,22 +1,50 @@  - netcoreapp2.0;net461 - netcoreapp2.0 + netcoreapp2.2 Exe true true false + Microsoft.AspNetCore.Routing + + + + Matching\BarebonesMatcher.cs + + + Matching\BarebonesMatcherBuilder.cs + + + Matching\RouteMatcher.cs + + + Matching\RouteMatcherBuilder.cs + + + Matching\TreeRouterMatcher.cs + + + Matching\TreeRouterMatcherBuilder.cs + + + + + - + + diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Program.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Program.cs deleted file mode 100644 index b510a13a28..0000000000 --- a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Program.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System; -using System.Reflection; -using BenchmarkDotNet.Running; - -namespace Microsoft.AspNetCore.Routing.Performance -{ - public class Program - { - public static void Main(string[] args) - { - BenchmarkSwitcher.FromAssembly(typeof(Program).GetTypeInfo().Assembly).Run(args); - } - } -} \ No newline at end of file diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Properties/AssemblyInfo.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..cfb0b19c2e --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/Properties/AssemblyInfo.cs @@ -0,0 +1 @@ +[assembly: BenchmarkDotNet.Attributes.AspNetCoreBenchmark] \ No newline at end of file diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/RouteValueDictionaryBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/RouteValueDictionaryBenchmark.cs new file mode 100644 index 0000000000..522d8d3ed4 --- /dev/null +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/RouteValueDictionaryBenchmark.cs @@ -0,0 +1,182 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using BenchmarkDotNet.Attributes; + +namespace Microsoft.AspNetCore.Routing +{ + public class RouteValueDictionaryBenchmark + { + private RouteValueDictionary _arrayValues; + private RouteValueDictionary _propertyValues; + + // We modify the route value dictionaries in many of these benchmarks. + [IterationSetup] + public void Setup() + { + _arrayValues = new RouteValueDictionary() + { + { "action", "Index" }, + { "controller", "Home" }, + { "id", "17" }, + }; + _propertyValues = new RouteValueDictionary(new { action = "Index", controller = "Home", id = "17" }); + } + + [Benchmark] + public RouteValueDictionary AddSingleItem() + { + var dictionary = new RouteValueDictionary + { + { "action", "Index" } + }; + return dictionary; + } + + [Benchmark] + public RouteValueDictionary AddThreeItems() + { + var dictionary = new RouteValueDictionary + { + { "action", "Index" }, + { "controller", "Home" }, + { "id", "15" } + }; + return dictionary; + } + + [Benchmark] + public RouteValueDictionary ConditionalAdd_ContainsKeyAdd() + { + var dictionary = _arrayValues; + + if (!dictionary.ContainsKey("action")) + { + dictionary.Add("action", "Index"); + } + + if (!dictionary.ContainsKey("controller")) + { + dictionary.Add("controller", "Home"); + } + + if (!dictionary.ContainsKey("area")) + { + dictionary.Add("area", "Admin"); + } + + return dictionary; + } + + [Benchmark] + public RouteValueDictionary ConditionalAdd_TryAdd() + { + var dictionary = _arrayValues; + + dictionary.TryAdd("action", "Index"); + dictionary.TryAdd("controller", "Home"); + dictionary.TryAdd("area", "Admin"); + + return dictionary; + } + + [Benchmark] + public RouteValueDictionary ForEachThreeItems_Array() + { + var dictionary = _arrayValues; + foreach (var kvp in dictionary) + { + GC.KeepAlive(kvp.Value); + } + return dictionary; + } + + [Benchmark] + public RouteValueDictionary ForEachThreeItems_Properties() + { + var dictionary = _propertyValues; + foreach (var kvp in dictionary) + { + GC.KeepAlive(kvp.Value); + } + return dictionary; + } + + [Benchmark] + public RouteValueDictionary GetThreeItems_Array() + { + var dictionary = _arrayValues; + GC.KeepAlive(dictionary["action"]); + GC.KeepAlive(dictionary["controller"]); + GC.KeepAlive(dictionary["id"]); + return dictionary; + } + + [Benchmark] + public RouteValueDictionary GetThreeItems_Properties() + { + var dictionary = _propertyValues; + GC.KeepAlive(dictionary["action"]); + GC.KeepAlive(dictionary["controller"]); + GC.KeepAlive(dictionary["id"]); + return dictionary; + } + + [Benchmark] + public RouteValueDictionary SetSingleItem() + { + var dictionary = new RouteValueDictionary + { + ["action"] = "Index" + }; + return dictionary; + } + + [Benchmark] + public RouteValueDictionary SetExistingItem() + { + var dictionary = _arrayValues; + dictionary["action"] = "About"; + return dictionary; + } + + [Benchmark] + public RouteValueDictionary SetThreeItems() + { + var dictionary = new RouteValueDictionary + { + ["action"] = "Index", + ["controller"] = "Home", + ["id"] = "15" + }; + return dictionary; + } + + [Benchmark] + public RouteValueDictionary TryGetValueThreeItems_Array() + { + var dictionary = _arrayValues; + dictionary.TryGetValue("action", out var action); + dictionary.TryGetValue("controller", out var controller); + dictionary.TryGetValue("id", out var id); + GC.KeepAlive(action); + GC.KeepAlive(controller); + GC.KeepAlive(id); + return dictionary; + } + + [Benchmark] + public RouteValueDictionary TryGetValueThreeItems_Properties() + { + var dictionary = _propertyValues; + dictionary.TryGetValue("action", out var action); + dictionary.TryGetValue("controller", out var controller); + dictionary.TryGetValue("id", out var id); + GC.KeepAlive(action); + GC.KeepAlive(controller); + GC.KeepAlive(id); + return dictionary; + } + } +} \ No newline at end of file diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/RoutingBenchmark.cs b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/RoutingBenchmark.cs deleted file mode 100644 index d499fd706a..0000000000 --- a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/RoutingBenchmark.cs +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System; -using System.Linq; -using System.Text.Encodings.Web; -using System.Threading.Tasks; -using BenchmarkDotNet.Attributes; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Routing.Internal; -using Microsoft.AspNetCore.Routing.Template; -using Microsoft.AspNetCore.Routing.Tree; -using Microsoft.Extensions.Logging.Abstractions; -using Microsoft.Extensions.ObjectPool; -using Microsoft.Extensions.Options; - -namespace Microsoft.AspNetCore.Routing.Performance -{ - public class RoutingBenchmark - { - private const int NumberOfRequestTypes = 3; - private const int Iterations = 100; - - private readonly IRouter _treeRouter; - private readonly RequestEntry[] _requests; - - public RoutingBenchmark() - { - var handler = new RouteHandler((next) => Task.FromResult(null)); - - var treeBuilder = new TreeRouteBuilder( - NullLoggerFactory.Instance, - new DefaultObjectPool(new UriBuilderContextPooledObjectPolicy()), - new DefaultInlineConstraintResolver(new OptionsManager(new OptionsFactory(Enumerable.Empty>(), Enumerable.Empty>())))); - - treeBuilder.MapInbound(handler, TemplateParser.Parse("api/Widgets"), "default", 0); - treeBuilder.MapInbound(handler, TemplateParser.Parse("api/Widgets/{id}"), "default", 0); - treeBuilder.MapInbound(handler, TemplateParser.Parse("api/Widgets/search/{term}"), "default", 0); - treeBuilder.MapInbound(handler, TemplateParser.Parse("admin/users/{id}"), "default", 0); - treeBuilder.MapInbound(handler, TemplateParser.Parse("admin/users/{id}/manage"), "default", 0); - - _treeRouter = treeBuilder.Build(); - - _requests = new RequestEntry[NumberOfRequestTypes]; - - _requests[0].HttpContext = new DefaultHttpContext(); - _requests[0].HttpContext.Request.Path = "/api/Widgets/5"; - _requests[0].IsMatch = true; - _requests[0].Values = new RouteValueDictionary(new { id = 5 }); - - _requests[1].HttpContext = new DefaultHttpContext(); - _requests[1].HttpContext.Request.Path = "/admin/users/17/mAnage"; - _requests[1].IsMatch = true; - _requests[1].Values = new RouteValueDictionary(new { id = 17 }); - - _requests[2].HttpContext = new DefaultHttpContext(); - _requests[2].HttpContext.Request.Path = "/api/Widgets/search/dldldldldld/ddld"; - _requests[2].IsMatch = false; - _requests[2].Values = new RouteValueDictionary(); - } - - [Benchmark(Description = "Attribute Routing", OperationsPerInvoke = Iterations * NumberOfRequestTypes)] - public async Task AttributeRouting() - { - for (var i = 0; i < Iterations; i++) - { - for (var j = 0; j < _requests.Length; j++) - { - var context = new RouteContext(_requests[j].HttpContext); - - await _treeRouter.RouteAsync(context); - - Verify(context, j); - } - } - } - - private void Verify(RouteContext context, int i) - { - if (_requests[i].IsMatch) - { - if (context.Handler == null) - { - throw new InvalidOperationException($"Failed {i}"); - } - - var values = _requests[i].Values; - if (values.Count != context.RouteData.Values.Count) - { - throw new InvalidOperationException($"Failed {i}"); - } - } - else - { - if (context.Handler != null) - { - throw new InvalidOperationException($"Failed {i}"); - } - - if (context.RouteData.Values.Count != 0) - { - throw new InvalidOperationException($"Failed {i}"); - } - } - } - - private struct RequestEntry - { - public HttpContext HttpContext; - public bool IsMatch; - public RouteValueDictionary Values; - } - } -} \ No newline at end of file diff --git a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/readme.md b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/readme.md index 38ce0ff71a..cbe60261b3 100644 --- a/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/readme.md +++ b/src/Routing/benchmarks/Microsoft.AspNetCore.Routing.Performance/readme.md @@ -2,10 +2,15 @@ Compile the solution in Release mode (so binaries are available in release) To run a specific benchmark add it as parameter. ``` -dotnet run -c Release +dotnet run -c Release --framework +``` + +To run all benchmarks use '*' as the name. +``` +dotnet run -c Release --framework * ``` If you run without any parameters, you'll be offered the list of all benchmarks and get to choose. ``` -dotnet run -c Release +dotnet run -c Release --framework ``` \ No newline at end of file diff --git a/src/Routing/build/dependencies.props b/src/Routing/build/dependencies.props index 6aafe4467f..3c93a7647d 100644 --- a/src/Routing/build/dependencies.props +++ b/src/Routing/build/dependencies.props @@ -2,45 +2,49 @@ $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - - + 0.10.13 - 2.1.3-rtm-15802 - 2.0.0 - 2.1.2 + 2.2.0-preview2-20181011.10 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.2.0-preview3-35496 + 2.0.9 + 2.1.3 + 2.2.0-preview3-27008-03 15.6.1 - 4.7.49 + 4.10.0 2.0.3 - 0.8.0 + 11.0.2 + 4.3.0 + 4.3.0 + 0.10.0 2.3.1 - 2.4.0-beta.1.build3945 + 2.4.0 - - - - - - 2.1.1 - 2.1.1 - 2.1.1 - 2.1.1 - 2.1.1 - 2.1.1 - 2.1.2 - 2.1.1 - 2.1.0 - 2.1.1 - 2.1.1 - 2.1.1 - 2.1.1 - 2.1.1 - 2.1.1 - 2.1.1 - 2.1.1 - 2.1.1 - 2.1.1 - 2.1.1 - - \ No newline at end of file + + diff --git a/src/Routing/build/repo.props b/src/Routing/build/repo.props index dab1601c88..9747864f3e 100644 --- a/src/Routing/build/repo.props +++ b/src/Routing/build/repo.props @@ -4,12 +4,17 @@ Internal.AspNetCore.Universe.Lineup - 2.1.0-rc1-* + 2.2.0-* https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json + + + + true + diff --git a/src/Routing/samples/RoutingSample.Web/PrefixRoute.cs b/src/Routing/samples/RoutingSample.Web/PrefixRoute.cs deleted file mode 100644 index 908e8a5462..0000000000 --- a/src/Routing/samples/RoutingSample.Web/PrefixRoute.cs +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Routing; - -namespace RoutingSample.Web -{ - public class PrefixRoute : IRouter - { - private readonly IRouteHandler _target; - private readonly string _prefix; - - public PrefixRoute(IRouteHandler target, string prefix) - { - _target = target; - - if (prefix == null) - { - prefix = "/"; - } - else if (prefix.Length > 0 && prefix[0] != '/') - { - // owin.RequestPath starts with a / - prefix = "/" + prefix; - } - - if (prefix.Length > 1 && prefix[prefix.Length - 1] == '/') - { - prefix = prefix.Substring(0, prefix.Length - 1); - } - - _prefix = prefix; - } - - public Task RouteAsync(RouteContext context) - { - var requestPath = context.HttpContext.Request.Path.Value ?? string.Empty; - if (requestPath.StartsWith(_prefix, StringComparison.OrdinalIgnoreCase)) - { - if (requestPath.Length > _prefix.Length) - { - var lastCharacter = requestPath[_prefix.Length]; - if (lastCharacter != '/' && lastCharacter != '#' && lastCharacter != '?') - { - return Task.FromResult(0); - } - } - - context.Handler = _target.GetRequestHandler(context.HttpContext, context.RouteData); - } - - return Task.FromResult(0); - } - - public VirtualPathData GetVirtualPath(VirtualPathContext context) - { - return null; - } - } -} \ No newline at end of file diff --git a/src/Routing/samples/RoutingSample.Web/Program.cs b/src/Routing/samples/RoutingSample.Web/Program.cs deleted file mode 100644 index 27a1a8b55e..0000000000 --- a/src/Routing/samples/RoutingSample.Web/Program.cs +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System; -using System.Text.RegularExpressions; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Routing; -using Microsoft.AspNetCore.Routing.Constraints; -using Microsoft.Extensions.DependencyInjection; - -namespace RoutingSample.Web -{ - public class Program - { - private static readonly TimeSpan RegexMatchTimeout = TimeSpan.FromSeconds(10); - - public static void Main(string[] args) - { - var webHost = GetWebHostBuilder().Build(); - webHost.Run(); - } - - // For unit testing - public static IWebHostBuilder GetWebHostBuilder() - { - return new WebHostBuilder() - .UseKestrel() - .UseIISIntegration() - .ConfigureServices(services => services.AddRouting()) - .Configure(app => app.UseRouter(routes => - { - routes.DefaultHandler = new RouteHandler((httpContext) => - { - var request = httpContext.Request; - return httpContext.Response.WriteAsync($"Verb = {request.Method.ToUpperInvariant()} - Path = {request.Path} - Route values - {string.Join(", ", httpContext.GetRouteData().Values)}"); - }); - - routes.MapGet("api/get/{id}", (request, response, routeData) => response.WriteAsync($"API Get {routeData.Values["id"]}")) - .MapMiddlewareRoute("api/middleware", (appBuilder) => appBuilder.Use((httpContext, next) => httpContext.Response.WriteAsync("Middleware!"))) - .MapRoute( - name: "AllVerbs", - template: "api/all/{name}/{lastName?}", - defaults: new { lastName = "Doe" }, - constraints: new { lastName = new RegexRouteConstraint(new Regex("[a-zA-Z]{3}", RegexOptions.CultureInvariant, RegexMatchTimeout)) }); - })); - } - } -} diff --git a/src/Routing/samples/RoutingSample.Web/RouteBuilderExtensions.cs b/src/Routing/samples/RoutingSample.Web/RouteBuilderExtensions.cs deleted file mode 100644 index d81735bbc2..0000000000 --- a/src/Routing/samples/RoutingSample.Web/RouteBuilderExtensions.cs +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using Microsoft.AspNetCore.Routing; -using Microsoft.Extensions.DependencyInjection; - -namespace RoutingSample.Web -{ - public static class RouteBuilderExtensions - { - public static IRouteBuilder AddPrefixRoute( - this IRouteBuilder routeBuilder, - string prefix, - IRouteHandler handler) - { - routeBuilder.Routes.Add(new PrefixRoute(handler, prefix)); - return routeBuilder; - } - - public static IRouteBuilder MapLocaleRoute( - this IRouteBuilder routeBuilder, - string locale, - string routeTemplate, - object defaults) - { - var defaultsDictionary = new RouteValueDictionary(defaults); - defaultsDictionary.Add("locale", locale); - - var constraintResolver = routeBuilder.ServiceProvider.GetService(); - - var route = new Route( - target: routeBuilder.DefaultHandler, - routeTemplate: routeTemplate, - defaults: defaultsDictionary, - constraints: null, - dataTokens: null, - inlineConstraintResolver: constraintResolver); - routeBuilder.Routes.Add(route); - - return routeBuilder; - } - } -} \ No newline at end of file diff --git a/src/Routing/samples/RoutingSandbox/Program.cs b/src/Routing/samples/RoutingSandbox/Program.cs new file mode 100644 index 0000000000..35e4e44c01 --- /dev/null +++ b/src/Routing/samples/RoutingSandbox/Program.cs @@ -0,0 +1,72 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Logging; + +namespace RoutingSandbox +{ + public class Program + { + public const string EndpointRoutingScenario = "endpointrouting"; + public const string RouterScenario = "router"; + + public static void Main(string[] args) + { + var webHost = GetWebHostBuilder(args).Build(); + webHost.Run(); + } + + // For unit testing + public static IWebHostBuilder GetWebHostBuilder(string[] args) + { + string scenario; + if (args.Length == 0) + { + Console.WriteLine("Choose a sample to run:"); + Console.WriteLine($"1. {EndpointRoutingScenario}"); + Console.WriteLine($"2. {RouterScenario}"); + Console.WriteLine(); + + scenario = Console.ReadLine(); + } + else + { + scenario = args[0]; + } + + Type startupType; + switch (scenario) + { + case "1": + case EndpointRoutingScenario: + startupType = typeof(UseEndpointRoutingStartup); + break; + + case "2": + case RouterScenario: + startupType = typeof(UseRouterStartup); + break; + + default: + Console.WriteLine($"unknown scenario {scenario}"); + Console.WriteLine($"usage: dotnet run -- ({EndpointRoutingScenario}|{RouterScenario})"); + throw new InvalidOperationException(); + + } + + return new WebHostBuilder() + .UseKestrel() + .UseIISIntegration() + .ConfigureLogging(b => + { + b.AddConsole(); + b.SetMinimumLevel(LogLevel.Critical); + }) + .UseContentRoot(Environment.CurrentDirectory) + .UseStartup(startupType); + } + } +} diff --git a/src/Routing/samples/RoutingSample.Web/RoutingSample.Web.csproj b/src/Routing/samples/RoutingSandbox/RoutingSandbox.csproj similarity index 67% rename from src/Routing/samples/RoutingSample.Web/RoutingSample.Web.csproj rename to src/Routing/samples/RoutingSandbox/RoutingSandbox.csproj index 9c3e55c557..5f01b1bb1e 100644 --- a/src/Routing/samples/RoutingSample.Web/RoutingSample.Web.csproj +++ b/src/Routing/samples/RoutingSandbox/RoutingSandbox.csproj @@ -1,7 +1,7 @@  - netcoreapp2.1;netcoreapp2.0 + netcoreapp2.2 $(TargetFrameworks);net461 @@ -10,8 +10,10 @@ + + diff --git a/src/Routing/samples/RoutingSandbox/UseEndpointRoutingStartup.cs b/src/Routing/samples/RoutingSandbox/UseEndpointRoutingStartup.cs new file mode 100644 index 0000000000..bfb345cba9 --- /dev/null +++ b/src/Routing/samples/RoutingSandbox/UseEndpointRoutingStartup.cs @@ -0,0 +1,85 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.IO; +using System.Text; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Internal; +using Microsoft.AspNetCore.Routing; +using Microsoft.AspNetCore.Routing.Internal; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; + +namespace RoutingSandbox +{ + public class UseEndpointRoutingStartup + { + private static readonly byte[] _homePayload = Encoding.UTF8.GetBytes("Endpoint Routing sample endpoints:" + Environment.NewLine + "/plaintext"); + private static readonly byte[] _helloWorldPayload = Encoding.UTF8.GetBytes("Hello, World!"); + + public void ConfigureServices(IServiceCollection services) + { + var endpointDataSource = new DefaultEndpointDataSource(new[] + { + new RouteEndpoint((httpContext) => + { + var response = httpContext.Response; + var payloadLength = _homePayload.Length; + response.StatusCode = 200; + response.ContentType = "text/plain"; + response.ContentLength = payloadLength; + return response.Body.WriteAsync(_homePayload, 0, payloadLength); + }, + RoutePatternFactory.Parse("/"), + 0, + EndpointMetadataCollection.Empty, + "Home"), + new RouteEndpoint((httpContext) => + { + var response = httpContext.Response; + var payloadLength = _helloWorldPayload.Length; + response.StatusCode = 200; + response.ContentType = "text/plain"; + response.ContentLength = payloadLength; + return response.Body.WriteAsync(_helloWorldPayload, 0, payloadLength); + }, + RoutePatternFactory.Parse("/plaintext"), + 0, + EndpointMetadataCollection.Empty, + "Plaintext"), + new RouteEndpoint((httpContext) => + { + using (var writer = new StreamWriter(httpContext.Response.Body, Encoding.UTF8, 1024, leaveOpen: true)) + { + var graphWriter = httpContext.RequestServices.GetRequiredService(); + var dataSource = httpContext.RequestServices.GetRequiredService(); + graphWriter.Write(dataSource, writer); + } + + return Task.CompletedTask; + }, + RoutePatternFactory.Parse("/graph"), + 0, + new EndpointMetadataCollection(new HttpMethodMetadata(new[]{ "GET", })), + "DFA Graph"), + }); + + services.TryAddEnumerable(ServiceDescriptor.Singleton(endpointDataSource)); + } + + public void Configure(IApplicationBuilder app) + { + app.UseEndpointRouting(); + + app.UseStaticFiles(); + + // Imagine some more stuff here... + + app.UseEndpoint(); + } + } +} diff --git a/src/Routing/samples/RoutingSandbox/UseRouterStartup.cs b/src/Routing/samples/RoutingSandbox/UseRouterStartup.cs new file mode 100644 index 0000000000..d7ae470989 --- /dev/null +++ b/src/Routing/samples/RoutingSandbox/UseRouterStartup.cs @@ -0,0 +1,43 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Text.RegularExpressions; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing; +using Microsoft.AspNetCore.Routing.Constraints; +using Microsoft.Extensions.DependencyInjection; + +namespace RoutingSandbox +{ + public class UseRouterStartup + { + private static readonly TimeSpan RegexMatchTimeout = TimeSpan.FromSeconds(10); + + public void ConfigureServices(IServiceCollection services) + { + services.AddRouting(); + } + + public void Configure(IApplicationBuilder app) + { + app.UseRouter(routes => + { + routes.DefaultHandler = new RouteHandler((httpContext) => + { + var request = httpContext.Request; + return httpContext.Response.WriteAsync($"Verb = {request.Method.ToUpperInvariant()} - Path = {request.Path} - Route values - {string.Join(", ", httpContext.GetRouteData().Values)}"); + }); + + routes.MapGet("api/get/{id}", (request, response, routeData) => response.WriteAsync($"API Get {routeData.Values["id"]}")) + .MapMiddlewareRoute("api/middleware", (appBuilder) => appBuilder.Use((httpContext, next) => httpContext.Response.WriteAsync("Middleware!"))) + .MapRoute( + name: "AllVerbs", + template: "api/all/{name}/{lastName?}", + defaults: new { lastName = "Doe" }, + constraints: new { lastName = new RegexRouteConstraint(new Regex("[a-zA-Z]{3}", RegexOptions.CultureInvariant, RegexMatchTimeout)) }); + }); + } + } +} diff --git a/src/Routing/samples/RoutingSandbox/wwwroot/full.render.js b/src/Routing/samples/RoutingSandbox/wwwroot/full.render.js new file mode 100644 index 0000000000..571d115f81 --- /dev/null +++ b/src/Routing/samples/RoutingSandbox/wwwroot/full.render.js @@ -0,0 +1,83 @@ +/* +Viz.js 2.0.0 (Graphviz 2.40.1, Expat 2.2.5, Emscripten 1.37.36) +*/ +(function(global) { +var Module = function(Module) { + Module = Module || {}; +var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=(function(status,toThrow){throw toThrow});Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("Module['ENVIRONMENT'] value is not valid. must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){var ret;ret=tryParseAsDataURI(filename);if(!ret){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);ret=nodeFS["readFileSync"](filename)}return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));process["on"]("unhandledRejection",(function(reason,p){process["exit"](1)}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){Module["read"]=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data)}return read(f)}}Module["readBinary"]=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data}if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!="undefined"){Module["arguments"]=arguments}Module["setWindowTitle"]=(function(title){document.title=title})}Module["print"]=typeof console!=="undefined"?console.log.bind(console):typeof print!=="undefined"?print:null;Module["printErr"]=typeof printErr!=="undefined"?printErr:typeof console!=="undefined"&&console.warn.bind(console)||Module["print"];Module.print=Module["print"];Module.printErr=Module["printErr"];for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var STACK_ALIGN=16;function staticAlloc(size){assert(!staticSealed);var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;return ret}function dynamicAlloc(size){assert(DYNAMICTOP_PTR);var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret}function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return 4}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;Module.printErr(text)}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}var GLOBAL_BASE=8;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}var JSfuncs={"stackSave":(function(){stackSave()}),"stackRestore":(function(){stackRestore()}),"arrayToC":(function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};function ccall(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var ALLOC_STATIC=2;var ALLOC_NONE=4;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:staticAlloc,stackAlloc,staticAlloc,dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var stop;ptr=ret;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return UTF8ToString(ptr)}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function demangle(func){return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}var PAGE_SIZE=16384;var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];if(!Math["trunc"])Math["trunc"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math["trunc"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_max=Math.max;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var ASM_CONSTS=[(function($0,$1){var path=Pointer_stringify($0);var data=Pointer_stringify($1);FS.createPath("/",PATH.dirname(path));FS.writeFile(PATH.join("/",path),data)})];function _emscripten_asm_const_iii(code,a0,a1){return ASM_CONSTS[code](a0,a1)}STATIC_BASE=GLOBAL_BASE;STATICTOP=STATIC_BASE+194160;__ATINIT__.push();memoryInitializer="data:application/octet-stream;base64,AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAIMEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAIMEAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkACEAAAAAAAAAAAAAAAABBAoC8AAAgAAAABAAAAAAAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICWQAAAAAAAgJZABJDDAAAAAAAAAAAAAAAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWEAAAAAAAABYQAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYQAAAAAAAAFhAAAAAAAAAAAAAAAAAAAAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUkAAAAAAAABSQAAgAwIAAAAAAAAAAAAAEEAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAABCQAAAAAAAAEJAAAAAAAAgg0AAAAAAAMCIQAAAAAAAAFJAAAAAAAAAUkAAAAAAAAAAAAAAAAAAAEJAAAAAAAAAQkAAAAAAACCDQAAAAAAAwIhAAAAAAAAAUkAAAAAAAABSQACwwQAAAAAAAAAAAAAAEEBANgAAkwAAAAEAAAAAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAEAACAAAAAAAAAAAAABBAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYQAAAAAAAAFhAALDBAAAAAAAAAAAAAAAAABw6AAAQAAAAAQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWEAAAAAAAABYQEAgPgMAAAAAAAAAAAAAEEAkOwAAegAAAAEAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAAAAAAAAAAAAAAAAAABBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJA////////73/////////vf////////+//////////7/8AAAAAAAD4PzMzMzMzM9M/PAAAAAAAAACamZmZmZmpPwEAAAAAAAAAAQAAAAAAAAAAAAAAAADwPwEAAAAAAAAAAgAAAAAAAAAAAAAAAADwPwIAAAAAAAAAAwAAAAAAAAAAAAAAAADgPwMAAAAAAAAABAAAAAAAAAAAAAAAAADwPwQAAAAAAAAABQAAAAAAAAAzMzMzMzPzPwUAAAAAAAAABgAAAAAAAACamZmZmZnpPwYAAAAAAAAABwAAAAAAAAAAAAAAAADwPwcAAAAAAAAACAAAAAAAAAAAAAAAAADgPwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAMzMzMzMz078AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAgEZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAmpmZmZmZ2b8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMzMzPjPwAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAexSuR+F65L8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAEAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqQVQAAAQAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAAAgGZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAgGZAmpmZmZmZ2b8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAgGZAexSuR+F65L8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAgEZAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAQAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAAAAAAAEAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAAAAQAAAAAAAAAAAAAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQP1ioNc07TtU/JXUCmggb2j8AAAAAAADgPwAAAAAAAOA/LNSa5h2n6j9q3nGKjuToP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VPwAAAAAAAOA/XdxGA3gL4j8AAAAAAADQP1ioNc07TtU/AAAAAAAA0D/TvOMUHcnRPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/07zjFB3J0T/TvOMUHcnRP13cRgN4C+I/XdxGA3gL4j9d3EYDeAviPw1xrIvbaNw/ZF3cRgN47T/Sb18HzhnnPxB6Nqs+V+U/EHo2qz5X5T/Sb18HzhnnP3gLJCh+jOM/tRX7y+7J4T/Sb18HzhnnP9JvXwfOGec/WKg1zTtO1T+IhVrTvOPYP9JvXwfOGec/eAskKH6M4z/EQq1p3nHsP9JvXwfOGec/0m9fB84Z5z+1FfvL7snhP9JvXwfOGec/EHo2qz5X5T+1FfvL7snhP3gLJCh+jOM/0m9fB84Z5z/Sb18HzhnnP4Y41sVtNO4/0m9fB84Z5z/Sb18HzhnnP3gLJCh+jOM/WKg1zTtO1T/TvOMUHcnRP1ioNc07TtU/pgpGJXUC3j8AAAAAAADgP1ioNc07TtU/DXGsi9to3D8AAAAAAADgPw1xrIvbaNw/AAAAAAAA4D8NcayL22jcP1ioNc07TtU/AAAAAAAA4D8AAAAAAADgP9O84xQdydE/07zjFB3J0T8AAAAAAADgP9O84xQdydE/at5xio7k6D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgP1ioNc07TtU/iIVa07zj2D/TvOMUHcnRPwAAAAAAAOA/AAAAAAAA4D/Sb18HzhnnPwAAAAAAAOA/AAAAAAAA4D8NcayL22jcP/RsVn2utt4/ETY8vVKWyT/0bFZ9rrbePzsBTYQNT+E/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D9YqDXNO07VPwAAAAAAAOA/AAAAAAAA4D8+6Nms+lzFPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/gnNGlPYGxz8NcayL22jcPwAAAAAAAOA/WKg1zTtO1T9YqDXNO07VP7UV+8vuyeE/tRX7y+7J4T8AAAAAAADQPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAANA/AAAAAAAA0D8H8BZIUPzcP6K0N/jCZNY/WKg1zTtO1T8NcayL22jcPw1xrIvbaNw/AAAAAAAA4D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA0D8NcayL22jcPwAAAAAAANA/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VPwAAAAAAANA/WKg1zTtO1T9YqDXNO07VPwAAAAAAANA/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/AAAAAAAA8D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQP8RCrWnecew/AAAAAAAA0D9/2T15WKjRPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/eAskKH6M4z/Sb18HzhnnP8RCrWnecew/E/JBz2bV0z8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/EHo2qz5X5T8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D/TvOMUHcnRPwAAAAAAANA/AAAAAAAA0D/TvOMUHcnRPwAAAAAAAOA/0m9fB84Z5z8AAAAAAADgPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP/RsVn2uttY/tRX7y+7J4T+1FfvL7snhP8RCrWnecew/EHo2qz5X5T/129eBc0bMP1ioNc07TtU/WKg1zTtO1T+IhVrTvOPYPwFNhA1Pr+I/07zjFB3J0T9YqDXNO07VP9O84xQdydE/07zjFB3J0T+1FfvL7snhP7UV+8vuyeE/tRX7y+7J4T+1FfvL7snhP7UV+8vuyeE/tRX7y+7J4T+1FfvL7snhP7UV+8vuyeE/tRX7y+7J4T+1FfvL7snhP9O84xQdydE/07zjFB3J0T8BTYQNT6/iPwFNhA1Pr+I/AU2EDU+v4j+1FfvL7snhP8xdS8gHPfA/EHo2qz5X5T8QejarPlflP9JvXwfOGec/0m9fB84Z5z8QejarPlflP3gLJCh+jOM/at5xio7k6D/Sb18HzhnnP9O84xQdydE/AAAAAAAA4D8QejarPlflP7UV+8vuyeE/LNSa5h2n6j/Sb18HzhnnP2recYqO5Og/EHo2qz5X5T9q3nGKjuToP9JvXwfOGec/EHo2qz5X5T94CyQofozjP9JvXwfOGec/EHo2qz5X5T+GONbFbTTuPxB6Nqs+V+U/EHo2qz5X5T94CyQofozjP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP6YKRiV1At4/tRX7y+7J4T9Iv30dOGfMP7UV+8vuyeE/tRX7y+7J4T8AAAAAAADgP7UV+8vuyeE/tRX7y+7J4T/TvOMUHcnRP7UV+8vuyeE/tRX7y+7J4T9Iv30dOGfMP0i/fR04Z8w/AAAAAAAA4D9Iv30dOGfMPyzUmuYdp+o/tRX7y+7J4T+1FfvL7snhP7UV+8vuyeE/tRX7y+7J4T9YqDXNO07VPwAAAAAAAOA/07zjFB3J0T+1FfvL7snhPwAAAAAAAOA/0m9fB84Z5z8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8Cmggbnl7VP+C+DpwzotA/ApoIG55e1T8BTYQNT6/iP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/WKg1zTtO1T+1FfvL7snhP7UV+8vuyeE/PujZrPpcxT+1FfvL7snhP7UV+8vuyeE/tRX7y+7J4T+1FfvL7snhPx04Z0Rpb8g/WKg1zTtO1T+1FfvL7snhP1ioNc07TtU/WKg1zTtO1T8AAAAAAADgPwAAAAAAAOA/07zjFB3J0T+1FfvL7snhP7UV+8vuyeE/tRX7y+7J4T/TvOMUHcnRP9O84xQdydE/5x2n6Egu4T+itDf4wmTWP0i/fR04Z8w/WKg1zTtO1T9YqDXNO07VP7UV+8vuyeE/AAAAAAAA8D8AAAAAAADwP9O84xQdydE/eAskKH6M4z/TvOMUHcnRP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T/TvOMUHcnRP1ioNc07TtU/WKg1zTtO1T/TvOMUHcnRP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VPwAAAAAAAPA/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T8AAAAAAADwP9O84xQdydE/6pWyDHGs1z/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP7UV+8vuyeE/at5xio7k6D8AAAAAAADwP5jdk4eFWtc/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP8RCrWnecew/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP9O84xQdydE/SL99HThnzD94CyQofozjP4Y41sVtNO4/eAskKH6M4z/TvOMUHcnRP9O84xQdydE/07zjFB3J0T/TvOMUHcnRP1GgT+RJ0g5AtMh2vp86NcA6It+l1CXVv/OCPkeaLoo/n+V5cHfW+b9+/RAbLJzmP5bs2AjE68w/zc6idyrg0D+w479AECDtv62h1F5E29g/O6F85lGWdj/TbnD5eoR7P4HMzqJ3KuS/0a3X9KCgyD9q3zcZsD+EP77KkBle/4Q/HJYGflTDxL+lSSno9uIjQKnZA63AkME/CMSQQZNpiT/6RJ4kXTPQvwHwmTYtwl4/DZx9L8+Ulz+JtfgUAOOJP+WpWEY0y7G/jwDJz6Fnpr9ctcb7zLSIP02kj1Q6s5A/5scEoWHWoL/HaWccE/eCvyp/a+UtcFy/5FdiVAiadT/R8YdVcgS3P5XUCWgiPDPAZCMQr+t3EMCnIarwZ3jHP9r/AGvVrsE/TihEwCFU97+qSIWxhSD1P51oVyHlJ/Y/TS7GwDqOzT9Zayi1F9HcvwM/qmG/J8w/pkdTPZl/2j+2gTtQpzyuP1FM3gAz37m/9XaV/9oLpj/UpTW8D/aUPx+tILws3JA/KCzxgLLJI0AjWuFMAoq3P0ijZVGWKX8/u7SG98Gekz8XqHtTR32gvyErruBtlIs/M3PchNYetb+geISJ9fyPP2k1JO6x9JG/uM0zel6/aj+SPq2iPzTNv36w58ZPPpi/ByObUC3HpD8+GMJ7WLmRvy18fa1LjcY/AAAAQPsh+T8AAAAALUR0PgAAAICYRvg8AAAAYFHMeDsAAACAgxvwOQAAAEAgJXo4AAAAgCKC4zYAAAAAHfNpNQAAAAAAAPC/VAQBAOgqAAADAAAAEC0AAAMAAADoLwAAAwAAALAwAAADAAAAADIAAAMAAAB4NQAAAwAAALQ4AAADAAAAxC4AAAMAAAB8OQAAAwAAAIQ6AAADAAAAED8AAAMAAAA0PQAAAAAAANQsAAAAAAAAwC8AAAAAAAAQMAAAAAAAANgxAAAAAAAAKDIAAAAAAACMOAAAAAAAAGAuAAAAAAAAVDkAAAAAAABcOgAAAAAAAOg+AAAAAAAADD0AAAQAAAA4PwAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAACAAAAAQAAAAEAAAADAAAAAAAAAAAAAAAAzQIAEM0CACDNAgAwzQIAQM0CAFDNAgBgzQIAcM0CABDNAgAQzQIAUM0CAFDNAgAfAAAAPwAAAH8AAAAAAAAA0HkBAAEAAACoKwAAaAAAAAQAAABtCAEAAQAAACAsAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAUBAAEAAAAAAAAA4AAAAAAAAAAQBQEAAQAAAAAAAADgAAAAAQAAABcFAQABAAAAAAAAAKgAAAACAAAAIQUBAAEAAAAAAAAA4AAAAAMAAAArBQEAAQAAAAAAAADgAAAABAAAADkFAQABAAAAAAAAAOAAAAAFAAAAQwUBAAEAAAAAAAAA4AAAAAYAAABQBQEAAQAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAA/////wAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcggBAAEAAADELQAAGAEAAAEAAAB3CAEAAQAAAMQtAAAYAQAAAgAAAH0IAQABAAAAxC0AABgBAAADAAAAhggBAAEAAADELQAAGAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAIAQABAAAAAAAAAHABAAABAAAAmggBAAEAAAAAAAAAcAEAAAIAAAClCAEAAQAAAAAAAAA4AQAAAwAAALMIAQABAAAAAAAAADgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAkAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAwAAAANAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAYAAAACAAAAAgAAAAcAAAACAAAAAAAAAFgMAgBd9QEA7vYBAC79AQAlBAIAZAgCAOQLAgD1CwIAAAAAAPoIAQABAAAAKC8AAKgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+CAEAAQAAAAAAAADIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABgkBAAEAAAA4MAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAD4KAQABAAAAAAAAACACAAACAAAASAoBAAEAAAAAAAAAWAIAAAAAAABRCgEAAQAAAAAAAABYAgAAAwAAAFoKAQABAAAAAAAAAFgCAAAAAAAAZAoBAAEAAAAAAAAAIAIAAAMAAABwCgEAAQAAAAAAAAAgAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAASAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAVAAAAFgAAABcAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAMAAAAJAAAAAwAAAAMAAAAKAAAABAAAAAAAAABYDAIAXfUBAC79AQDu9gEAZAgCACUEAgD1CwIA5AsCAAAAAAAAAAAALQwBAP////88MQAAkAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAMAQD/////AAAAALACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADWgQEAAQAAAFAyAADoAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAGQAAABoAAAAAAAAABAAAAAAAAAAbAAAAHAAAAB0AAAAeAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAgAAAAIQAAACIAAAACAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAMAAAABQAAAAQAAAANAAAABQAAAAMAAAAtEAEAOxABAFEQAQDr7QIAXxABAG4QAQBzEAEAkRABAOvtAgCjEAEA0xABAOvtAgDxEAEAGREBACcRAQBWEQEAihEBAJsRAQDAEQEA4xEBAOkRAQAFEgEAIhIBAD0SAQBeEgEAeBIBAJoSAQC5EgEA3xIBAPcSAQAXEwEANBMBAFgTAQBkEwEA6+0CAG8TAQCVEwEAuRMBAN8TAQDr7QIAFRQBAC0UAQA6FAEAaRQBAGQTAQDr7QIAdhQBAH8UAQCgFAEA2xQBACYVAQB6FQEAnBUBALEVAQDIFQEA3hUBAPYVAQDr7QIADBYBACcWAQBLFgEAbxYBAJQWAQDr7QIAtRYBAM8WAQDhFgEA7hYBAPsWAQAPFwEAHhcBACYXAQA7FwEASRcBAIcXAQCSFwEAZBMBAOvtAgCYFwEApBcBALMXAQDjEQEA6+0CAMYXAQDvFwEADRgBAB0YAQAuGAEANRgBAEQYAQBUGAEAmBgBAJ8YAQDjEQEA6+0CAKkYAQDVGAEA4BgBAOkYAQDyGAEAAxkBABQZAQAoGQEAZBMBAOvtAgA0GQEARBkBAFIZAQBgGQEAbRkBAHoZAQCQGQEAmRkBAKgZAQC1GQEAxhkBAGQTAQDr7QIA0RkBAPAZAQDr7QIAAhoBABEaAQBBGgEASxoBAFgaAQBlGgEAchoBAH8aAQCCGgEA6+0CAIYaAQDr7QIAqRoBANoaAQAJGwEAIBsBADsbAQBWGwEAZBMBAOvtAgByGwEA6+0CAJobAQCmGwEAuRsBAMwbAQDhGwEA9hsBAPobAQDjEQEA6+0CAAYcAQDr7QIAFhwBACQcAQAwHAEAPRwBAF0cAQBzHAEA6+0CAIccAQDQHAEAFh0BAEYdAQB5HQEAgB0BAKcdAQDOHQEA6+0CANMdAQAAAAAAAAAAAJFHAQABAAAAAAAAAAgDAAABAAAARx4BAAEAAAAAAAAACAMAAAIAAACKRwEAAQAAAAAAAABAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjAAAAAAAAACQAAAAlAAAABgAAACYAAAAnAAAAKAAAACkAAAAqAAAAAAAAAAAAAAAAAAAAAAAAACsAAAAsAAAALQAAAC4AAAAEAAAALwAAAAAAAAAAAAAADgAAAAAAAAAPAAAABwAAAAUAAAAQAAAABgAAAAAAAAB19AEAf/QBABExAQDE9AEA//QBACH1AQAn9QEAWAwCAE71AQBd9QEAevUBAIX1AQCn9QEA3fUBABP2AQBO9gEAhPYBAKb2AQC19gEA5vYBAO72AQDXJAEA4CQBAAv3AQDpJAEAVfcBAPIkAQBf9wEA+yQBAGn3AQC49wEA8/cBAAclAQAu+AEAOfgBAH74AQCM+AEA1vgBAOT4AQDy+AEA/fgBAC75AQBu+QEAdvkBAH75AQC5+QEA7/kBAPv5AQAWMQEAB/oBABH6AQAc+gEAOfoBAG/6AQAu/QEAUP0BAFz9AQAbAAIATAACAHgAAgCuAAIAuwACAN0AAgD/AAIACAECAFIBAgBcAQIAoQECANcBAgDiAQIAZwICAHwCAgAPJQEAhgICAJACAgDGAgIABgMCABQDAgBoAwIAdwMCAIYDAgDVAwIAHjEBABUEAgAfBAIAJQQCAFEEAgB4BAIAiQQCAJQEAgDZBAIAHgUCAC0FAgA9BQIATwUCAF8FAgBvBQIAfAUCAIYFAgC8BQIAxQUCAAUGAgAYBgIAIzEBACAGAgBWBgIAfQYCALMGAgDaBgIA6AYCAB4HAgBoBwIAsgcCAL0HAgDzBwIA+AcCABUIAgAyCAIAPQgCAGQIAgB8CAIAsggCAOgIAgD0CAIAGwkCACYJAgBXCQIAiAkCABA8AQCvCQIA2wkCABEKAgBHCgIAUQoCAG4KAgCuCgIA5AoCACkxAQD8CgIAKAsCAE8LAgCFCwIAwgsCAOQLAgDqCwIA9QsCABwMAgAAAAAA2YEBAAEAAADINQAAeAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhIAQABAAAAAAAAAJgDAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgAAAAAAAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAABIAAAAIAAAABgAAABMAAAAHAAAAAAAAAAAAAABFJgEAAQAAANw4AADQAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASCYBAAEAAAAAAAAA8AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAA1AAAANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAADcAAAAAAAAAAAAAABQAAAAAAAAAFQAAAAkAAAAHAAAAFgAAAAgAAAAAAAAAETEBAFgMAgBd9QEAFjEBAG/6AQAu/QEAHjEBAFEEAgAFBgIAIzEBAD0IAgBkCAIAEDwBACkxAQDkCwIA9QsCAAAAAAAuMQEAAQAAAKQ5AAAoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjEBAAEAAAAAAAAASAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAA5AAAAOgAAAAoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQQAAAEIAAABDAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAGAAAAAsAAAAIAAAAGQAAAAkAAAAAAAAAxPQBAKY6AQBYDAIAXfUBAHr1AQCxOgEAtzoBAMI6AQDJOgEAhfUBAN31AQDROgEA1zoBAOI6AQCE9gEApvYBAO72AQDpOgEAVfcBAGn3AQDz9wEA8zoBAH74AQCM+AEA1vgBAP46AQDk+AEABjsBAA87AQAdOwEAJzsBALn5AQAwOwEA+/kBABz6AQA5+gEANjsBAID6AQCr+gEA1PoBAPf6AQAg+wEAQ/sBAGz7AQCP+wEAuPsBANv7AQAE/AEAJ/wBAFD8AQBz/AEAnPwBAL/8AQDo/AEAC/0BAC79AQA9OwEAUP0BAEk7AQB4AAIA3QACAKEBAgBWOwEAhgMCAGM7AQAVBAIAJQQCAG07AQBRBAIAeAQCAIkEAgB8OwEAjjsBAJQEAgAeBQIALQUCAD0FAgBPBQIAXwUCAJ47AQCpOwEAtDsBAG8FAgAFBgIACgYCALk7AQDCOwEAyzsBANs7AQDiOwEAVgYCAH0GAgCzBgIA6AYCAPgHAgAVCAIA6jsBAGQIAgDxOwEA9AgCAPo7AQAmCQIAAjwBAIgJAgAQPAEArwkCANsJAgAXPAEAbgoCAK4KAgAhPAEA5AoCAPwKAgBPCwIAKzwBADk8AQCFCwIAjAsCAMILAgDkCwIA9QsCABwMAgAAAAAASzwBAAEAAACsOgAAgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE88AQABAAAAAAAAAKAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAEUAAAAAAAAAAAAAAEYAAABHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAAAAAABsAAAAMAAAACQAAABwAAAAKAAAAAAAAAEFCAADelQEAQUkAALiVAQBBUgAAi5UBAEFYAADzlQEAQiAAAC+YAQBCSQAAQJgBAENCAAB4lgEAQ08AAGaWAQBDWAAAhZYBAEggAACplgEASEIAALOWAQBISQAAP5cBAEhYAADClgEASGIAAPOWAQBIaQAAJpcBAEhyAADYlgEASHgAAAmXAQBJIAAAUZgBAEtCAAAKlgEAS0kAAFKWAQBLUgAAPpYBAEtYAAArlgEATkIAAFGXAQBOSQAAmJcBAE5SAACwlwEATlgAAHyXAQBQQQAAEZgBAFBCAADNlwEAUEkAAAGYAQBQWAAA7ZcBAFIgAAAImgEAUyAAACCYAQBaRAAAjpgBAAAAAAAAAAAAAQAAAAAAAAD+RgEA/////1w9AADYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkcBAP////8AAAAA+AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAApHAQABAAAAIEMAAAAAAAAQAAAAEkcBAAEAAAAgQwAAAAAAABEAAAAaRwEAAQAAACBDAAAAAAAAEQAAACNHAQABAAAAIEMAAAAAAAARAAAAK0cBAAEAAAAgQwAAAAAAABMAAAAzRwEAAQAAACRDAAAAAAAAFAAAADtHAQABAAAAJEMAAAAAAAAVAAAAQ0cBAAEAAAAkQwAAAAAAABUAAABMRwEAAQAAACRDAAAAAAAAFQAAAFRHAQABAAAAJEMAAAAAAAAWAAAAXEcBAAEAAAAoQwAAAAAAABcAAABlRwEAAQAAAChDAAAAAAAAGAAAAG5HAQABAAAAKEMAAAAAAAAYAAAAeEcBAAEAAAAoQwAAAAAAABgAAACBRwEAAQAAAChDAAAAAAAAGQAAAIpHAQABAAAALEMAAAAAAAAZAAAAkUcBAAEAAAAsQwAAAAAAABoAAACXRwEAAQAAADBDAAAAAAAACgAAAKBHAQABAAAANEMAAAAAAAALAAAAqEcBAAEAAAA0QwAAAAAAAAwAAACwRwEAAQAAADRDAAAAAAAADAAAALlHAQABAAAANEMAAAAAAAAMAAAAwUcBAAEAAAA0QwAAAAAAAA4AAADJRwEAAQAAADRDAAAAAAAADgAAANBHAQABAAAANEMAAAAAAAANAAAA2EcBAAEAAAA0QwAAAAAAAAUAAADgRwEAAQAAADRDAAAAAAAABgAAAOhHAQABAAAANEMAAAAAAAAHAAAA8EcBAAEAAAA0QwAAAAAAAAcAAAD5RwEAAQAAADRDAAAAAAAABwAAAAFIAQABAAAANEMAAAAAAAAJAAAACUgBAAEAAAA0QwAAAAAAAAkAAAAQSAEAAQAAADRDAAAAAAAACAAAABhIAQABAAAANEMAAAAAAAAAAAAAIEgBAAEAAAA4QwAAAAAAAAEAAAApSAEAAQAAADhDAAAAAAAAAgAAADJIAQABAAAAOEMAAAAAAAACAAAAPEgBAAEAAAA4QwAAAAAAAAIAAABFSAEAAQAAADhDAAAAAAAABAAAAE5IAQABAAAAOEMAAAAAAAAEAAAAVkgBAAEAAAA4QwAAAAAAAAMAAABfSAEAAQAAADhDAAAAAAAAEgAAAGhIAQABAAAAIEMAAAAAAAAbAAAAcEgBAAEAAAA8QwAAAAAAABwAAAB4SAEAAQAAADxDAAAAAAAAHQAAAIBIAQABAAAAPEMAAAAAAAAdAAAAiUgBAAEAAAA8QwAAAAAAAB0AAACRSAEAAQAAADxDAAAAAAAAHgAAAJlIAQABAAAAQEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAAARMAQBMQwAAAQAAAGhDAAAAAAAAAAAAAEgAAABJAAAAAQAAAAAAAADQeQEAAAAAAFxDAABkQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAgAAAAQAAAAYAQAAMAEAALAAAAApVAEALlQBADJUAQA5VAEAPVQBAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAAAAAAdAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAyWQEAKEQAAAEAAAB4RAAAAAAAAAAAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABLAAAAUwAAAEsAAABUAAAAVQAAAFYAAABXAAAAAAAAAD9ZAQAAAAAAOEQAACDPAgABAAAARVkBAAAAAABARAAAIM8CAAMAAABJWQEAAAAAAEhEAAAgzwIABAAAAE9ZAQAAAAAAUEQAACDPAgAFAAAAVVkBAAAAAABoRAAAIM8CAAYAAABfWQEAAAAAAHBEAAAgzwIABwAAAGVZAQAAAAAAWEQAACDPAgAHAAAAaVkBAAAAAABYRAAAIM8CAAcAAABuWQEAAAAAAGBEAAAgzwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAMAAAAAAAAAABAAAAIAAAAAEAAAAAAAAAAAAAAAAAAAADAAAABAAAAAAAAAAAAAAA6+0CAAAAAAATBgIAAQAAAHRkAQAHAAAAOGQBAAMAAAC8GQIABQAAAHxkAQAPAAAAvoEBAAgAAAC+gQEAEAAAAIRkAQAEAAAAhGQBABEAAACJZAEABQAAAIlkAQACAAAAj2QBAAYAAACWZAEABAAAAKJkAQAHAAAAqmQBAAcAAAC6ZAEABQAAAMBkAQAIAAAA12QBAAgAAADAZAEACQAAAOBkAQAHAAAA6GQBAAoAAAACZQEABwAAAAplAQALAAAAJGUBAAYAAAArZQEADAAAAEllAQAJAAAAK2UBAA0AAABTZQEACAAAAFxlAQAOAAAAfWUBAAgAAACGZQEAEgAAAKdlAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAwAAAACAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAADAAAAIQAAAAQAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAEAAAAIgAAAAUAAAAAAAAAAAAAAAAAAAAFAAAAQAAAACBHAAAwRwAABgAAAAQAAAA8RwAABgAAAAgAAAAGAAAABAAAAERHAAAABAAACAAAAP////8AAAAAAAAAACMAAAAAAAAAAAAAAAAAAAAAAAAANQAAAAAAAAAAAAAAIAAAAAAAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAACAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAACAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAACQAAAAAAAAAHAAAAAAAAAAkAAAALAAAACAAAAAoAAADISAAATEgAALBIAAABAAAAAQAAAAoAAAAWAAAACwAAAFgAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAANAAAAAAAAAAcAAAAAAAAABwAAAAIAAAAFAAAACAAAAAAAAAAAAAAABgAAAAMAAAAOAAAACwAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAA8AAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAABAAAAAAAAAABwAAAAAAAAAIAAAACAAAAAAAAAAAAAAAJgAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA/////wAAAAAAAAAAJwAAAAAAAAAAAAAABwAAAAAAAAABAAAAAAAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAMAAAABAAAAAQAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAQAAAAQAAAAFAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAABgAAAAEAAAABAAAABwAAAAgAAAAJAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAEAAAABAAAACwAAAAEAAAAMAAAAAQAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAATAAAAEwAAABMAAAATAAAAFwAAABgAAAAZAAAAEwAAABoAAAAbAAAAHAAAAB0AAAATAAAAEwAAABMAAAATAAAAEwAAAAEAAAAeAAAAAQAAAAEAAAATAAAAAQAAAB8AAAAgAAAAIQAAACIAAAAjAAAAEwAAACQAAAAlAAAAJgAAABMAAAATAAAAEwAAABMAAAAnAAAAKAAAACkAAAATAAAAKgAAACsAAAAsAAAALQAAABMAAAATAAAAEwAAABMAAAATAAAAAQAAAAEAAAABAAAAAQAAAAEAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAAC4AAAATAAAAEwAAABMAAAAvAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAAwAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAAAAAAAABAAAAAQAAAAIAAAADAAAAAQAAAAQAAAABAAAABQAAAAEAAAAGAAAABwAAAAcAAAABAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAMAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAACAAAAAb6cBAFCnAQAWcAEAfKcBAHSnAQCCpwEAAAAAABx0AQAldAEALHQBADp0AQBBdAEAmKcBAEh0AQBPdAEAAQAAAAgAAAD/////AAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAO11AQAIAAAAAwAAAPZ1AQD6dQEACwAAAAYAAADWgQEABnYBAAIAAAABAAAACXYBAA12AQAEAAAAAgAAABJ2AQAWdgEABAAAAAQAAAAbdgEAIHYBAAUAAAAFAAAAJnYBACp2AQAEAAAABwAAAC92AQAzdgEABQAAAAkAAAA5dgEAPXYBAAQAAAAKAAAAQnYBAEd2AQAEAAAADAAAAEx2AQAQewEAAAAAAAEAAAAYewEAAQAAAAAAAACjpgEAAQAAAAEAAAATBgIAAAAAAAAAAAAAAAAAAAAAAAAAAAD5eQEAMQAAAAAAAAAAAAAA0aEBABAAAAA7EgIAgAAAAPJ5AQBAAAAAPJQBABAAAAD0eQEAQAAAAAAAAAAAAAAAwHkBAAEAAADHeQEAAgAAAMx5AQADAAAA+poBAAQAAABekQEABQAAANB5AQAGAAAAEwYCAAgAAADUeQEAIQAAANh5AQAiAAAA3HkBACIAAADgeQEAAQAAAOV5AQAHAAAA63kBACcAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAP////8AAAAAKQAAAAAAAAAAAAAAAAAAAAAAAAArfwEAMn8BAAAAAADTgQEA1oEBANmBAQAAAAAAAAAAAAEAAAACAAAA/////5aBAQCcgQEAEwYCAAAAAABkAAAAZQAAAGYAAABkAAAACAAAAAgAAAAAAAAAAAAAACoAAAARAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAACQAAACsAAAARAAAAAAAAAAAAAAAAAAAACAAAAP////8AAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAA+poBAPhUAACABgAAAAAAACeRAQD4VAAAsAYAAAAAAAAAmgEA+FQAAOAGAAAAAAAAL5EBAPhUAADgBgAAAAAAADSRAQD4VAAAEAcAAAAAAAA7kQEAEFUAABAHAAAAAAAAQZEBAPhUAABABwAAAAAAAEWRAQD4VAAAcAcAAAAAAAATBgIA+FQAAKAHAAAAAAAATpEBAPhUAACgBwAAAAAAAFiRAQD4VAAAUAYAAAAAAABekQEA+FQAANAHAAAAAAAAZpEBAPhUAAAACAAAAAAAAHCRAQD4VAAAMAgAAAAAAAB+kQEA+FQAAGAIAAAAAAAAhJEBAPhUAACQCAAAAAAAAI2RAQD4VAAAwAgAAAAAAACVkQEA+FQAAPAIAAAAAAAAnpEBAPhUAAAgCQAAAAAAAKaRAQD4VAAAUAkAAAAAAACrkQEA+FQAAIAJAAAAAAAAr5EBAPhUAACwCQAAAAAAALaRAQD4VAAA4AkAAAAAAAC8kQEA+FQAABAKAAAAAAAAxpEBAChVAABACgAAAAAAAM+RAQD4VAAAgAYAAAAAAADUkQEA+FQAAIAGAAAAAAAA3pEBAPhUAABwCgAAAAAAAOWRAQD4VAAAoAoAAAAAAADykQEA+FQAANAKAAAAAAAAAJIBAPhUAAAACwAAAAAAAA6SAQD4VAAAMAsAAAAAAAAakgEA+FQAAGALAAAAAAAAJ5IBAPhUAACQCwAAAAAAADCSAQD4VAAAwAsAAAAAAAA6kgEA+FQAAPALAAAAAAAAQ5IBAPhUAAAgDAAAAAAAAEuSAQD4VAAAUAwAAAAAAABTkgEA+FQAAIAMAAAAAAAAXJIBAPhUAACwDAAAAAAAAGCSAQD4VAAA4AwAAAAAAABrkgEA+FQAABANAAAAAAAAb5IBAPhUAABADQAAAAAAAHmSAQD4VAAAcA0AAAAAAACCkgEA+FQAAKANAAAAAAAAipIBAPhUAADQDQAAAAAAAJeSAQD4VAAAAA4AAAAAAACjkgEA+FQAADAOAAAAAAAArpIBAPhUAABgDgAAAAAAAL6SAQD4VAAAkA4AAAAAAADMkgEA+FQAAMAOAAAAAAAA25IBAPhUAADwDgAAAAAAAOWSAQD4VAAAIA8AAAAAAADukgEA+FQAAFAPAAAAAAAA+JIBAPhUAACADwAAAAAAAAKTAQD4VAAAsA8AAAAAAAAJkwEA+FQAAOAPAAAAAAAAEJMBAPhUAAAQEAAAAAAAABqTAQBAVQAAAAAAAAAAAAAhkwEAQFUAAAAAAAAAAAAAA5EBAFhVAAAAAAAAAAAAACmTAQBwVQAAQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAFoAAAAXAAAABAAAAAIAAAAMAAAAWwAAAFoAAAAXAAAABQAAAAAAAAANAAAAWQAAAFoAAAAXAAAABAAAAAIAAAAMAAAAXAAAAF0AAAAYAAAABgAAAAMAAAAOAAAAXgAAAF8AAAAXAAAABwAAAAAAAAAPAAAAWQAAAFoAAAAXAAAACAAAAAIAAAAMAAAAEAAAABEAAAASAAAAEwAAACuUAQAylAEAAAAAADqUAQA8lAEAdRICAD6UAQAMAAAABAAAAAYAAAACAAAAAwAAAAEAAAAJAAAACAAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEcAAABIAAAASQAAAEoAAABLAAAATAAAAE0AAABOAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAACLlQEAm5UBAKiVAQAAAAAAAAAAAAQAAACtlQEAAAAAAAAAAAC4lQEAm5UBAKiVAQAAAAAAz5UBAAUAAACtlQEAAAAAANeVAQDelQEAm5UBAO6VAQAAAAAAAAAAAAYAAACtlQEAGaYBAAAAAADzlQEAm5UBAO6VAQAAAAAAz5UBAAcAAACtlQEAGaYBANeVAQAKlgEAF5YBAO6VAQAAAAAAAAAAAAoAAAAllgEAGaYBAAAAAAArlgEAF5YBAO6VAQAAAAAA15UBAAsAAAAllgEAGaYBANeVAQA+lgEAF5YBAEyWAQAAAAAAAAAAAAgAAAAllgEAAAAAAAAAAABSlgEAF5YBAEyWAQAAAAAA15UBAAkAAAAllgEAAAAAANeVAQBmlgEAZpYBAAAAAAAAAAAAAAAAAAwAAABulgEAAAAAAAAAAAB4lgEAZpYBABmmAQAAAAAAAAAAAA4AAABulgEAGaYBAAAAAACFlgEAZpYBABmmAQAAAAAAz5UBAA8AAABulgEAGaYBANeVAQCZlgEAZpYBAAAAAAAAAAAAz5UBAA0AAABulgEAAAAAANeVAQCplgEAqZYBAAAAAAAAAAAAAAAAABAAAACtlQEAAAAAAAAAAACzlgEAqZYBABmmAQAAAAAAAAAAABIAAACtlQEAGaYBAAAAAADClgEAqZYBABmmAQAAAAAAz5UBABMAAACtlQEAGaYBANeVAQDYlgEAqZYBAAAAAADplgEAAAAAABQAAACtlQEAAAAAAAAAAADzlgEAqZYBABmmAQDplgEAAAAAABYAAACtlQEAGaYBAAAAAAAJlwEAqZYBABmmAQDplgEAz5UBABcAAACtlQEAGaYBANeVAQAmlwEAqZYBAAAAAADplgEAz5UBABUAAACtlQEAAAAAANeVAQA/lwEAqZYBAAAAAAAAAAAAz5UBABEAAACtlQEAAAAAANeVAQBRlwEAZ5cBABmmAQAAAAAAAAAAABoAAAAllgEAGaYBAAAAAAB8lwEAZ5cBABmmAQAAAAAA15UBABsAAAAllgEAGaYBANeVAQCYlwEAZ5cBAAAAAAAAAAAA15UBABkAAAAllgEAAAAAANeVAQCwlwEAZ5cBAMeXAQAAAAAAAAAAABgAAAAllgEAAAAAAAAAAADNlwEA25cBABmmAQAAAAAAAAAAAB4AAAAllgEAGaYBAAAAAADtlwEA25cBABmmAQAAAAAA15UBAB8AAAAllgEAGaYBANeVAQABmAEA25cBAAAAAAAAAAAA15UBAB0AAAAllgEAAAAAANeVAQARmAEA25cBAMeXAQAAAAAAAAAAABwAAAAllgEAAAAAAAAAAAAgmAEAIJgBAAAAAAAAAAAAAAAAACAAAAAnmAEAAAAAAAAAAAAvmAEAOpgBABmmAQAAAAAAAAAAAAIAAAAllgEAGaYBAAAAAABAmAEAOpgBABmmAQAAAAAA15UBAAMAAAAllgEAGaYBANeVAQBRmAEAOpgBAAAAAAAAAAAA15UBAAEAAAAllgEAAAAAANeVAQAImgEAOpgBAAAAAAAAAAAAAAAAAAAAAAAllgEAAAAAAAAAAABemAEAeJgBAIeYAQAAAAAA15UBACEAAAAllgEAAAAAANeVAQCOmAEAm5gBAAAAAAAAAAAAAAAAACIAAAAnmAEAAAAAAAAAAAAIAAAABAAAAAAAAAAKAAAALQAAABIAAAAAAAAAAAAAAAAAAAAIAAAA/////wAAAAAAAAAALgAAAAAAAAAAAAAAAAAAAAAAAAA3mwEAxgAAAD2bAQDBAAAARJsBAMIAAABKmwEAwAAAAFGbAQCRAwAAV5sBAMUAAABdmwEAwwAAAGSbAQDEAAAAaZsBAJIDAABumwEAxwAAAHWbAQCnAwAAeZsBACEgAACAmwEAlAMAAIabAQDQAAAAipsBAMkAAACRmwEAygAAAJebAQDIAAAAnpsBAJUDAACmmwEAlwMAAKqbAQDLAAAAr5sBAJMDAAC1mwEAzQAAALybAQDOAAAAwpsBAMwAAADJmwEAmQMAAM6bAQDPAAAA05sBAJoDAADZmwEAmwMAAOCbAQCcAwAA45sBANEAAADqmwEAnQMAAO2bAQBSAQAA85sBANMAAAD6mwEA1AAAAACcAQDSAAAAB5wBAKkDAAANnAEAnwMAABWcAQDYAAAAHJwBANUAAAAjnAEA1gAAACicAQCmAwAALJwBAKADAAAvnAEAMyAAADWcAQCoAwAAOZwBAKEDAAA9nAEAYAEAAEScAQCjAwAASpwBAN4AAABQnAEApAMAAFScAQCYAwAAWpwBANoAAABhnAEA2wAAAGecAQDZAAAAbpwBAKUDAAB2nAEA3AAAAHucAQCeAwAAfpwBAN0AAACFnAEAeAEAAIqcAQCWAwAAj5wBAOEAAACWnAEA4gAAAJycAQC0AAAAopwBAOYAAAConAEA4AAAAK+cAQA1IQAAt5wBALEDAAC9nAEAJgAAAMGcAQAnIgAAxZwBACAiAADJnAEA5QAAAM+cAQBIIgAA1ZwBAOMAAADcnAEA5AAAAOGcAQAeIAAA55wBALIDAADsnAEApgAAAPOcAQAiIAAA+JwBACkiAAD8nAEA5wAAAAOdAQC4AAAACZ0BAKIAAAAOnQEAxwMAABKdAQDGAgAAF50BAGMmAAAdnQEARSIAACKdAQCpAAAAJ50BALUhAAAtnQEAKiIAADGdAQCkAAAAOJ0BANMhAAA9nQEAICAAAESdAQCTIQAASZ0BALAAAABNnQEAtAMAAFOdAQBmJgAAWZ0BAPcAAABgnQEA6QAAAGedAQDqAAAAbZ0BAOgAAAB0nQEABSIAAHqdAQADIAAAf50BAAIgAACEnQEAtQMAAIydAQBhIgAAkp0BALcDAACWnQEA8AAAAJqdAQDrAAAAn50BAKwgAACknQEAAyIAAKqdAQCSAQAAr50BAAAiAAC2nQEAvQAAAL2dAQC8AAAAxJ0BAL4AAADLnQEARCAAANGdAQCzAwAA150BAGUiAADanQEAPgAAAN2dAQDUIQAA4p0BAJQhAADnnQEAZSYAAO6dAQAmIAAA9Z0BAO0AAAD8nQEA7gAAAAKeAQChAAAACJ4BAOwAAAAPngEAESEAABWeAQAeIgAAG54BACsiAAAfngEAuQMAACSeAQC/AAAAK54BAAgiAAAwngEA7wAAADWeAQC6AwAAO54BANAhAABAngEAuwMAAEeeAQApIwAATJ4BAKsAAABSngEAkCEAAFeeAQAIIwAAXZ4BABwgAABjngEAZCIAAGaeAQAKIwAAbZ4BABciAAB0ngEAyiUAAHieAQAOIAAAfJ4BADkgAACDngEAGCAAAImeAQA8AAAAjJ4BAK8AAACRngEAFCAAAJeeAQC1AAAAnZ4BALcAAAA8pwEAEiIAAKSeAQC8AwAAp54BAAciAACtngEAoAAAALKeAQATIAAAuJ4BAGAiAAC7ngEACyIAAL6eAQCsAAAAwp4BAAkiAADIngEAhCIAAM2eAQDxAAAA1J4BAL0DAADXngEA8wAAAN6eAQD0AAAA5J4BAFMBAADqngEA8gAAAPGeAQA+IAAA954BAMkDAAD9ngEAvwMAAAWfAQCVIgAAC58BACgiAAAOnwEAqgAAABOfAQC6AAAAGJ8BAPgAAAAfnwEA9QAAACafAQCXIgAALZ8BAPYAAAAynwEAtgAAADefAQACIgAAPJ8BADAgAABDnwEApSIAAEifAQDGAwAATJ8BAMADAABPnwEA1gMAAFOfAQCxAAAAWp8BAKMAAABgnwEAMiAAAGafAQAPIgAAa58BAB0iAABwnwEAyAMAAHSfAQAiAAAAeZ8BANIhAAB+nwEAGiIAAISfAQAqIwAAiZ8BALsAAACPnwEAkiEAAJSfAQAJIwAAmp8BAB0gAACgnwEAHCEAAKWfAQCuAAAAqZ8BAAsjAACwnwEAwQMAALSfAQAPIAAAuJ8BADogAAC/nwEAGSAAAMWfAQAaIAAAy58BAGEBAADSnwEAxSIAANefAQCnAAAA3J8BAK0AAADgnwEAwwMAAOafAQDCAwAA7Z8BADwiAADxnwEAYCYAAPifAQCCIgAA/J8BAIYiAAABoAEAESIAAAWgAQCDIgAACaABALkAAAAOoAEAsgAAABOgAQCzAAAAGKABAIciAAAdoAEA3wAAACOgAQDEAwAAJ6ABADQiAAAuoAEAuAMAADSgAQDRAwAAPaABAAkgAABEoAEA/gAAAEqgAQDcAgAAUKABANcAAABWoAEAIiEAAFygAQDRIQAAYaABAPoAAABooAEAkSEAAG2gAQD7AAAAc6ABAPkAAAB6oAEAqAAAAH6gAQDSAwAAhKABAMUDAACMoAEA/AAAAJGgAQAYIQAAmKABAL4DAACboAEA/QAAAKKgAQClAAAApqABAP8AAACroAEAtgMAALCgAQANIAAAtKABAAwgAAAHAAAACAAAAAEBAAAIAAAACAAAAAAAAAAAAAAALwAAABMAAAAAAAAAAAAAAAAAAAAIAAAAEAAAAAAAAAAAAAAAMAAAABQAAAAAAAAAAAAAAAAAAAD8pgEACQAAAP6mAQAKAAAAA6cBAAoAAAALpwEACwAAABGnAQALAAAAGqcBAAwAAAAdpwEADAAAACOnAQANAAAAKKcBAA0AAAAwpwEADgAAADWnAQAOAAAAPKcBAA8AAABCpwEADwAAAE6nAQAQAAAAYAAAADEAAAAyAAAAFAAAADMAAABhAAAANAAAABUAAAA1AAAACAAAAAQAAAD/////AAAAAAAAAAAVAAAAAAAAAAAAAAAAAAAAmagBAFVdyX/Jf/8ApKgBALst1L6u1P8Ar6gBABR3/f3Ahv8AuqgBAFVdyX/Jf/8AxagBALst1L6u1P8A0KgBABR3/f3Ahv8A26gBACpm////mf8A5qgBAFVdyX/Jf/8A8agBALst1L6u1P8A/KgBABR3/f3Ahv8AB6kBACpm////mf8AEqkBAJetsDhssP8AHakBAFVdyX/Jf/8AKKkBALst1L6u1P8AM6kBABR3/f3Ahv8APqkBACpm////mf8ASakBAJetsDhssP8AVKkBAOj88PACf/8AX6kBAFVdyX/Jf/8AaqkBALst1L6u1P8AdakBABR3/f3Ahv8AgKkBACpm////mf8Ai6kBAJetsDhssP8AlqkBAOj88PACf/8AoakBABHgv79bF/8ArKkBAFVdyX/Jf/8At6kBALst1L6u1P8AwqkBABR3/f3Ahv8AzakBACpm////mf8A2KkBAJetsDhssP8A46kBAOj88PACf/8A7qkBABHgv79bF/8A+akBAAAAZmZmZv8ABKoBAJMZ997r9/8ADqoBAI5L4Z7K4f8AGKoBAJG8vTGCvf8AIqoBAJ8Q/+/z//8ALKoBAI8u573X5/8ANqoBAI9/1muu1v8AQKoBAJPQtSFxtf8ASqoBAJ8Q/+/z//8AVKoBAI8u573X5/8AXqoBAI9/1muu1v8AaKoBAJG8vTGCvf8AcqoBAJXxnAhRnP8AfKoBAJ8Q/+/z//8AhqoBAJQr78bb7/8AkKoBAI5L4Z7K4f8AmqoBAI9/1muu1v8ApKoBAJG8vTGCvf8ArqoBAJXxnAhRnP8AuKoBAJ8Q/+/z//8AwqoBAJQr78bb7/8AzKoBAI5L4Z7K4f8A1qoBAI9/1muu1v8A4KoBAJCpxkKSxv8A6qoBAJPQtSFxtf8A9KoBAJfxlAhFlP8A/qoBAJQI//f7//8ACKsBAJMZ997r9/8AEqsBAJQr78bb7/8AHKsBAI5L4Z7K4f8AJqsBAI9/1muu1v8AMKsBAJCpxkKSxv8AOqsBAJPQtSFxtf8ARKsBAJfxlAhFlP8ATqsBAJQI//f7//8AWKsBAJMZ997r9/8AYqsBAJQr78bb7/8AbKsBAI5L4Z7K4f8AdqsBAI9/1muu1v8AgKsBAJCpxkKSxv8AiqsBAJPQtSFxtf8AlKsBAJXxnAhRnP8AnqsBAJjrawgwa/8AqKsBABfvVFQwBf8AsqsBAHf/PAA8MP8AvasBABfsjIxRCv8Ax6sBABjCv7+BLf8A0asBAB1w39/Cff8A26sBAB409vbow/8A5asBAHkm6sfq5f8A76sBAHhfzYDNwf8A+asBAHyllzWXj/8AA6wBAHz8ZgFmXv8ADawBABfvVFQwBf8AF6wBAHz8ZgFmXv8AIqwBAHf/PAA8MP8ALawBABfsjIxRCv8AN6wBABjCv7+BLf8AQawBAB1w39/Cff8AS6wBAB409vbow/8AVawBAAAA9fX19f8AX6wBAHkm6sfq5f8AaawBAHhfzYDNwf8Ac6wBAHyllzWXj/8AfawBAByH2NizZf8AhqwBAAAA9fX19f8Aj6wBAHt/tFq0rP8AmKwBABXXpqZhGv8AoawBAB1w39/Cff8AqqwBAHhfzYDNwf8As6wBAHn9hQGFcf8AvKwBABXXpqZhGv8AxawBAB1w39/Cff8AzqwBAAAA9fX19f8A16wBAHhfzYDNwf8A4KwBAHn9hQGFcf8A6awBABfsjIxRCv8A8qwBAByH2NizZf8A+6wBAB409vbow/8ABK0BAHkm6sfq5f8ADa0BAHt/tFq0rP8AFq0BAHz8ZgFmXv8AH60BABfsjIxRCv8AKK0BAByH2NizZf8AMa0BAB409vbow/8AOq0BAAAA9fX19f8AQ60BAHkm6sfq5f8ATK0BAHt/tFq0rP8AVa0BAHz8ZgFmXv8AXq0BABfsjIxRCv8AZ60BABjCv7+BLf8AcK0BAB1w39/Cff8Aea0BAB409vbow/8Agq0BAHkm6sfq5f8Ai60BAHhfzYDNwf8AlK0BAHyllzWXj/8Ana0BAHz8ZgFmXv8Apq0BABfsjIxRCv8Ar60BABjCv7+BLf8AuK0BAB1w39/Cff8Awa0BAB409vbow/8Ayq0BAAAA9fX19f8A060BAHkm6sfq5f8A3K0BAHhfzYDNwf8A5a0BAHyllzWXj/8A7q0BAHz8ZgFmXv8A960BAIcU+eX1+f8AAK4BAHVK2JnYyf8ACa4BAGe5oiyiX/8AEq4BAIgO++34+/8AG64BAH824rLi4v8AJK4BAHF4wmbCpP8ALa4BAGK+iyOLRf8ANq4BAIgO++34+/8AP64BAH824rLi4v8ASK4BAHF4wmbCpP8AUa4BAGe5oiyiX/8AWq4BAGb/bQBtLP8AY64BAIgO++34+/8AbK4BAHci7Mzs5v8Ada4BAHVK2JnYyf8Afq4BAHF4wmbCpP8Ah64BAGe5oiyiX/8AkK4BAGb/bQBtLP8Ama4BAIgO++34+/8Aoq4BAHci7Mzs5v8Aq64BAHVK2JnYyf8AtK4BAHF4wmbCpP8Ava4BAGmfrkGudv8Axq4BAGK+iyOLRf8Az64BAGb/WABYJP8A2K4BAIYG/ff8/f8A4a4BAIcU+eX1+f8A6q4BAHci7Mzs5v8A864BAHVK2JnYyf8A/K4BAHF4wmbCpP8ABa8BAGmfrkGudv8ADq8BAGK+iyOLRf8AF68BAGb/WABYJP8AIK8BAIYG/ff8/f8AKa8BAIcU+eX1+f8AMq8BAHci7Mzs5v8AO68BAHVK2JnYyf8ARK8BAHF4wmbCpP8ATa8BAGmfrkGudv8AVq8BAGK+iyOLRf8AX68BAGb/bQBtLP8AaK8BAGX/RABEG/8Aca8BAJAU9ODs9P8Aeq8BAJRG2p682v8Ag68BAMR7p4hWp/8AjK8BAIgO++34+/8Ala8BAJI147PN4/8Anq8BAKJKxoyWxv8Ap68BAMqVnYhBnf8AsK8BAIgO++34+/8Aua8BAJI147PN4/8Awq8BAKJKxoyWxv8Ay68BAMR7p4hWp/8A1K8BANbhgYEPfP8A3a8BAIgO++34+/8A5q8BAJQr5r/T5v8A768BAJRG2p682v8A+K8BAKJKxoyWxv8AAbABAMR7p4hWp/8ACrABANbhgYEPfP8AE7ABAIgO++34+/8AHLABAJQr5r/T5v8AJbABAJRG2p682v8ALrABAKJKxoyWxv8AN7ABAL5ksYxrsf8AQLABAMqVnYhBnf8ASbABANX8bm4Ba/8AUrABAIYG/ff8/f8AW7ABAJAU9ODs9P8AZLABAJQr5r/T5v8AbbABAJRG2p682v8AdrABAKJKxoyWxv8Af7ABAL5ksYxrsf8AiLABAMqVnYhBnf8AkbABANX8bm4Ba/8AmrABAIYG/ff8/f8Ao7ABAJAU9ODs9P8ArLABAJQr5r/T5v8AtbABAJRG2p682v8AvrABAKJKxoyWxv8Ax7ABAL5ksYxrsf8A0LABAMqVnYhBnf8A2bABANbhgYEPfP8A4rABANX/TU0AS/8A67ABAHLTnhued/8A9bABABL82dlfAv8A/7ABAK1fs3Vws/8ACbEBAHLTnhued/8AE7EBABL82dlfAv8AHbEBAK1fs3Vws/8AJ7EBAOnR5+cpiv8AMbEBAHLTnhued/8AO7EBABL82dlfAv8ARbEBAK1fs3Vws/8AT7EBAOnR5+cpiv8AWbEBAD7QpmamHv8AY7EBAHLTnhued/8AbbEBABL82dlfAv8Ad7EBAK1fs3Vws/8AgbEBAOnR5+cpiv8Ai7EBAD7QpmamHv8AlbEBAB/85uarAv8An7EBAHLTnhued/8AqbEBABL82dlfAv8As7EBAK1fs3Vws/8AvbEBAOnR5+cpiv8Ax7EBAD7QpmamHv8A0bEBAB/85uarAv8A27EBABvSpqZ2Hf8A5bEBAHLTnhued/8A77EBABL82dlfAv8A+bEBAK1fs3Vws/8AA7IBAOnR5+cpiv8ADbIBAD7QpmamHv8AF7IBAB/85uarAv8AIbIBABvSpqZ2Hf8AK7IBAAAAZmZmZv8ANbIBAEwZ8+Dz2/8APrIBAF893ajdtf8AR7IBAIyqykOiyv8AULIBAEER+fD56P8AWbIBAFcu5LrkvP8AYrIBAHtlzHvMxP8Aa7IBAI3FviuMvv8AdLIBAEER+fD56P8AfbIBAFcu5LrkvP8AhrIBAHtlzHvMxP8Aj7IBAIyqykOiyv8AmLIBAJHzrAhorP8AobIBAEER+fD56P8AqrIBAE0p68zrxf8As7IBAF893ajdtf8AvLIBAHtlzHvMxP8AxbIBAIyqykOiyv8AzrIBAJHzrAhorP8A17IBAEER+fD56P8A4LIBAE0p68zrxf8A6bIBAF893ajdtf8A8rIBAHtlzHvMxP8A+7IBAImg006z0/8ABLMBAI3FviuMvv8ADbMBAJPynghYnv8AFrMBADwM/Pf88P8AH7MBAEwZ8+Dz2/8AKLMBAE0p68zrxf8AMbMBAF893ajdtf8AOrMBAHtlzHvMxP8AQ7MBAImg006z0/8ATLMBAI3FviuMvv8AVbMBAJPynghYnv8AXrMBADwM/Pf88P8AZ7MBAEwZ8+Dz2/8AcLMBAE0p68zrxf8AebMBAF893ajdtf8AgrMBAHtlzHvMxP8Ai7MBAImg006z0/8AlLMBAI3FviuMvv8AnbMBAJHzrAhorP8AprMBAJbvgQhAgf8Ar7MBAEoV9eX14P8AurMBAFBI2aHZm/8AxbMBAGKyozGjVP8A0LMBAEkP+O346f8A27MBAE425Lrks/8A5rMBAFZoxHTEdv8A8bMBAGK+iyOLRf8A/LMBAEkP+O346f8AB7QBAE425Lrks/8AErQBAFZoxHTEdv8AHbQBAGKyozGjVP8AKLQBAGb/bQBtLP8AM7QBAEkP+O346f8APrQBAE0s6cfpwP8ASbQBAFBI2aHZm/8AVLQBAFZoxHTEdv8AX7QBAGKyozGjVP8AarQBAGb/bQBtLP8AdbQBAEkP+O346f8AgLQBAE0s6cfpwP8Ai7QBAFBI2aHZm/8AlrQBAFZoxHTEdv8AobQBAGCeq0GrXf8ArLQBAGK+iyOLRf8At7QBAGz/WgBaMv8AwrQBAEgH/Pf89f8AzbQBAEoV9eX14P8A2LQBAE0s6cfpwP8A47QBAFBI2aHZm/8A7rQBAFZoxHTEdv8A+bQBAGCeq0GrXf8ABLUBAGK+iyOLRf8AD7UBAGz/WgBaMv8AGrUBAEgH/Pf89f8AJbUBAEoV9eX14P8AMLUBAE0s6cfpwP8AO7UBAFBI2aHZm/8ARrUBAFZoxHTEdv8AUbUBAGCeq0GrXf8AXLUBAGK+iyOLRf8AZ7UBAGb/bQBtLP8AcrUBAGX/RABEG/8AfbUBAAAA8PDw8P8Ah7UBAAAAvb29vf8AkbUBAAAAY2NjY/8Am7UBAAAA9/f39/8ApbUBAAAAzMzMzP8Ar7UBAAAAlpaWlv8AubUBAAAAUlJSUv8Aw7UBAAAA9/f39/8AzbUBAAAAzMzMzP8A17UBAAAAlpaWlv8A4bUBAAAAY2NjY/8A67UBAAAAJSUlJf8A9bUBAAAA9/f39/8A/7UBAAAA2dnZ2f8ACbYBAAAAvb29vf8AE7YBAAAAlpaWlv8AHbYBAAAAY2NjY/8AJ7YBAAAAJSUlJf8AMbYBAAAA9/f39/8AO7YBAAAA2dnZ2f8ARbYBAAAAvb29vf8AT7YBAAAAlpaWlv8AWbYBAAAAc3Nzc/8AY7YBAAAAUlJSUv8AbbYBAAAAJSUlJf8Ad7YBAAAA//////8AgbYBAAAA8PDw8P8Ai7YBAAAA2dnZ2f8AlbYBAAAAvb29vf8An7YBAAAAlpaWlv8AqbYBAAAAc3Nzc/8As7YBAAAAUlJSUv8AvbYBAAAAJSUlJf8Ax7YBAAAA//////8A0bYBAAAA8PDw8P8A27YBAAAA2dnZ2f8A5bYBAAAAvb29vf8A77YBAAAAlpaWlv8A+bYBAAAAc3Nzc/8AA7cBAAAAUlJSUv8ADbcBAAAAJSUlJf8AF7cBAAAAAAAAAP8AIbcBABUw/v7mzv8ALbcBABOT/f2ua/8AObcBAA7w5uZVDf8ARbcBABMg/v7t3v8AUbcBABR4/f2+hf8AXbcBABHC/f2NPP8AabcBAA392dlHAf8AdbcBABMg/v7t3v8AgbcBABR4/f2+hf8AjbcBABHC/f2NPP8AmbcBAA7w5uZVDf8ApbcBAA36pqY2A/8AsbcBABMg/v7t3v8AvbcBABVb/f3Qov8AybcBABOT/f2ua/8A1bcBABHC/f2NPP8A4bcBAA7w5uZVDf8A7bcBAA36pqY2A/8A+bcBABMg/v7t3v8ABbgBABVb/f3Qov8AEbgBABOT/f2ua/8AHbgBABHC/f2NPP8AKbgBABDq8fFpE/8ANbgBAA392dlIAf8AQbgBAAz3jIwtBP8ATbgBABUU///16/8AWbgBABUw/v7mzv8AZbgBABVb/f3Qov8AcbgBABOT/f2ua/8AfbgBABHC/f2NPP8AibgBABDq8fFpE/8AlbgBAA392dlIAf8AobgBAAz3jIwtBP8ArbgBABUU///16/8AubgBABUw/v7mzv8AxbgBABVb/f3Qov8A0bgBABOT/f2ua/8A3bgBABHC/f2NPP8A6bgBABDq8fFpE/8A9bgBAA392dlIAf8AAbkBAA36pqY2A/8ADbkBAAz2f38nBP8AGbkBABk2/v7oyP8AIrkBABN5/f27hP8AK7kBAAXF4+NKM/8ANLkBABol/v7w2f8APbkBABhz/f3Miv8ARrkBAA2k/PyNWf8AT7kBAAPa19cwH/8AWLkBABol/v7w2f8AYbkBABhz/f3Miv8AarkBAA2k/PyNWf8Ac7kBAAXF4+NKM/8AfLkBAAD/s7MAAP8AhbkBABol/v7w2f8AjrkBABhf/f3Unv8Al7kBABN5/f27hP8AoLkBAA2k/PyNWf8AqbkBAAXF4+NKM/8AsrkBAAD/s7MAAP8Au7kBABol/v7w2f8AxLkBABhf/f3Unv8AzbkBABN5/f27hP8A1rkBAA2k/PyNWf8A37kBAAey7+9lSP8A6LkBAAPa19cwH/8A8bkBAAD/mZkAAP8A+rkBABgS///37P8AA7oBABk2/v7oyP8ADLoBABhf/f3Unv8AFboBABN5/f27hP8AHroBAA2k/PyNWf8AJ7oBAAey7+9lSP8AMLoBAAPa19cwH/8AOboBAAD/mZkAAP8AQroBABgS///37P8AS7oBABk2/v7oyP8AVLoBABhf/f3Unv8AXboBABN5/f27hP8AZroBAA2k/PyNWf8Ab7oBAAey7+9lSP8AeLoBAAPa19cwH/8AgboBAAD/s7MAAP8AiroBAAD/f38AAP8Ak7oBAI5E46bO4/8An7oBAL6Zmmo9mv8ArLoBAJDTtB94tP8AuLoBAEFh37Lfiv8AxLoBAFK4oDOgLP8A0LoBAABj+/uamf8A3LoBAP7h4+MaHP8A6LoBABeP/f2/b/8A9LoBABX///9/AP8AALsBAMYq1sqy1v8ADLsBAI5E46bO4/8AGLsBAL6Zmmo9mv8AJbsBACpm////mf8AMrsBAJDTtB94tP8APrsBAEFh37Lfiv8ASrsBAFK4oDOgLP8AVrsBAABj+/uamf8AYrsBAP7h4+MaHP8AbrsBABeP/f2/b/8AersBABX///9/AP8AhrsBAMYq1sqy1v8AkrsBAI5E46bO4/8AnrsBAL6Zmmo9mv8Aq7sBACpm////mf8AuLsBAA/FsbFZKP8AxbsBAJDTtB94tP8A0bsBAEFh37Lfiv8A3bsBAFK4oDOgLP8A6bsBAABj+/uamf8A9bsBAP7h4+MaHP8AAbwBABeP/f2/b/8ADbwBABX///9/AP8AGbwBAMYq1sqy1v8AJbwBAI5E46bO4/8AMLwBAJDTtB94tP8AO7wBAEFh37Lfiv8ARrwBAI5E46bO4/8AUbwBAJDTtB94tP8AXLwBAEFh37Lfiv8AZ7wBAFK4oDOgLP8AcrwBAI5E46bO4/8AfbwBAJDTtB94tP8AiLwBAEFh37Lfiv8Ak7wBAFK4oDOgLP8AnrwBAABj+/uamf8AqbwBAI5E46bO4/8AtLwBAJDTtB94tP8Av7wBAEFh37Lfiv8AyrwBAFK4oDOgLP8A1bwBAABj+/uamf8A4LwBAP7h4+MaHP8A67wBAI5E46bO4/8A9rwBAJDTtB94tP8AAb0BAEFh37Lfiv8ADL0BAFK4oDOgLP8AF70BAABj+/uamf8AIr0BAP7h4+MaHP8ALb0BABeP/f2/b/8AOL0BAI5E46bO4/8AQ70BAJDTtB94tP8ATr0BAEFh37Lfiv8AWb0BAFK4oDOgLP8AZL0BAABj+/uamf8Ab70BAP7h4+MaHP8Aer0BABeP/f2/b/8Ahb0BABX///9/AP8AkL0BAI5E46bO4/8Am70BAJDTtB94tP8Apr0BAEFh37Lfiv8Asb0BAFK4oDOgLP8AvL0BAABj+/uamf8Ax70BAP7h4+MaHP8A0r0BABeP/f2/b/8A3b0BABX///9/AP8A6L0BAMYq1sqy1v8A870BAANO+/u0rv8A/70BAJI147PN4/8AC74BAE0p68zrxf8AF74BAANO+/u0rv8AI74BAJI147PN4/8AL74BAE0p68zrxf8AO74BAMob5N7L5P8AR74BAANO+/u0rv8AU74BAJI147PN4/8AX74BAE0p68zrxf8Aa74BAMob5N7L5P8Ad74BABhY/v7Zpv8Ag74BAANO+/u0rv8Aj74BAJI147PN4/8Am74BAE0p68zrxf8Ap74BAMob5N7L5P8As74BABhY/v7Zpv8Av74BACoy////zP8Ay74BAANO+/u0rv8A174BAJI147PN4/8A474BAE0p68zrxf8A774BAMob5N7L5P8A+74BABhY/v7Zpv8AB78BACoy////zP8AE78BABws5eXYvf8AH78BAANO+/u0rv8AK78BAJI147PN4/8AN78BAE0p68zrxf8AQ78BAMob5N7L5P8AT78BABhY/v7Zpv8AW78BACoy////zP8AZ78BABws5eXYvf8Ac78BAOkj/f3a7P8Af78BAANO+/u0rv8Ai78BAJI147PN4/8Al78BAE0p68zrxf8Ao78BAMob5N7L5P8Ar78BABhY/v7Zpv8Au78BACoy////zP8Ax78BABws5eXYvf8A078BAOkj/f3a7P8A378BAAAA8vLy8v8A678BAGw14rPizf8A978BABFR/f3NrP8AA8ABAJsf6MvV6P8AD8ABAGw14rPizf8AG8ABABFR/f3NrP8AJ8ABAJsf6MvV6P8AM8ABAOQr9PTK5P8AP8ABAGw14rPizf8AS8ABABFR/f3NrP8AV8ABAJsf6MvV6P8AY8ABAOQr9PTK5P8Ab8ABADgt9eb1yf8Ae8ABAGw14rPizf8Ah8ABABFR/f3NrP8Ak8ABAJsf6MvV6P8An8ABAOQr9PTK5P8Aq8ABADgt9eb1yf8At8ABACNR///yrv8Aw8ABAGw14rPizf8Az8ABABFR/f3NrP8A28ABAJsf6MvV6P8A58ABAOQr9PTK5P8A88ABADgt9eb1yf8A/8ABACNR///yrv8AC8EBABkn8fHizP8AF8EBAGw14rPizf8AI8EBABFR/f3NrP8AL8EBAJsf6MvV6P8AO8EBAOQr9PTK5P8AR8EBADgt9eb1yf8AU8EBACNR///yrv8AX8EBABkn8fHizP8Aa8EBAAAAzMzMzP8Ad8EBAOb9jo4BUv8AgcEBAE2/ZCdkGf8AjMEBAObcxcUbff8AlsEBAOh23t53rv8AoMEBAOU+8fG22v8AqsEBAOkd/f3g7/8AtMEBADsm9eb10P8AvsEBAD1n4bjhhv8AyMEBAD+mvH+8Qf8A0sEBAETFkk2SIf8A3MEBAOb9jo4BUv8A5sEBAETFkk2SIf8A8cEBAE2/ZCdkGf8A/MEBAObcxcUbff8ABsIBAOh23t53rv8AEMIBAOU+8fG22v8AGsIBAOkd/f3g7/8AJMIBAAAA9/f39/8ALsIBADsm9eb10P8AOMIBAD1n4bjhhv8AQsIBAD+mvH+8Qf8ATMIBAOdM6emjyf8AVcIBAAAA9/f39/8AXsIBAD+B16HXav8AZ8IBAOTc0NAci/8AcMIBAOU+8fG22v8AecIBAD1n4bjhhv8AgsIBAEjGrE2sJv8Ai8IBAOTc0NAci/8AlMIBAOU+8fG22v8AncIBAAAA9/f39/8ApsIBAD1n4bjhhv8Ar8IBAEjGrE2sJv8AuMIBAObcxcUbff8AwcIBAOdM6emjyf8AysIBAOkd/f3g7/8A08IBADsm9eb10P8A3MIBAD+B16HXav8A5cIBAETFkk2SIf8A7sIBAObcxcUbff8A98IBAOdM6emjyf8AAMMBAOkd/f3g7/8ACcMBAAAA9/f39/8AEsMBADsm9eb10P8AG8MBAD+B16HXav8AJMMBAETFkk2SIf8ALcMBAObcxcUbff8ANsMBAOh23t53rv8AP8MBAOU+8fG22v8ASMMBAOkd/f3g7/8AUcMBADsm9eb10P8AWsMBAD1n4bjhhv8AY8MBAD+mvH+8Qf8AbMMBAETFkk2SIf8AdcMBAObcxcUbff8AfsMBAOh23t53rv8Ah8MBAOU+8fG22v8AkMMBAOkd/f3g7/8AmcMBAAAA9/f39/8AosMBADsm9eb10P8Aq8MBAD1n4bjhhv8AtMMBAD+mvH+8Qf8AvcMBAETFkk2SIf8AxsMBAM7/S0AAS/8A0MMBAGX/RABEG/8A28MBAM6tg3Yqg/8A5cMBAMdXq5lwq/8A78MBAMczz8Klz/8A+cMBANIV6OfU6P8AA8QBAEwe8Nnw0/8ADcQBAFBE26bboP8AF8QBAFh7rlquYf8AIcQBAGHFeBt4N/8AK8QBAM7/S0AAS/8ANcQBAGHFeBt4N/8AQMQBAGX/RABEG/8AS8QBAM6tg3Yqg/8AVcQBAMdXq5lwq/8AX8QBAMczz8Klz/8AacQBANIV6OfU6P8Ac8QBAAAA9/f39/8AfcQBAEwe8Nnw0/8Ah8QBAFBE26bboP8AkcQBAFh7rlquYf8Am8QBAMRGw6+Nw/8ApMQBAAAA9/f39/8ArcQBAFJav3+/e/8AtsQBAMmolHsylP8Av8QBAMczz8Klz/8AyMQBAFBE26bboP8A0cQBAGb/iACIN/8A2sQBAMmolHsylP8A48QBAMczz8Klz/8A7MQBAAAA9/f39/8A9cQBAFBE26bboP8A/sQBAGb/iACIN/8AB8UBAM6tg3Yqg/8AEMUBAMRGw6+Nw/8AGcUBANIV6OfU6P8AIsUBAEwe8Nnw0/8AK8UBAFJav3+/e/8ANMUBAGHFeBt4N/8APcUBAM6tg3Yqg/8ARsUBAMRGw6+Nw/8AT8UBANIV6OfU6P8AWMUBAAAA9/f39/8AYcUBAEwe8Nnw0/8AasUBAFJav3+/e/8Ac8UBAGHFeBt4N/8AfMUBAM6tg3Yqg/8AhcUBAMdXq5lwq/8AjsUBAMczz8Klz/8Al8UBANIV6OfU6P8AoMUBAEwe8Nnw0/8AqcUBAFBE26bboP8AssUBAFh7rlquYf8Au8UBAGHFeBt4N/8AxMUBAM6tg3Yqg/8AzcUBAMdXq5lwq/8A1sUBAMczz8Klz/8A38UBANIV6OfU6P8A6MUBAAAA9/f39/8A8cUBAEwe8Nnw0/8A+sUBAFBE26bboP8AA8YBAFh7rlquYf8ADMYBAGHFeBt4N/8AFcYBAL0L8uzn8v8AHsYBAJc926a92/8AJ8YBAI3FviuMvv8AMMYBALkI9vHu9v8AOcYBAJso4b3J4f8AQsYBAJFwz3Spz/8AS8YBAI/3sAVwsP8AVMYBALkI9vHu9v8AXcYBAJso4b3J4f8AZsYBAJFwz3Spz/8Ab8YBAI3FviuMvv8AeMYBAI/3jQRajf8AgcYBALkI9vHu9v8AisYBAKgY5tDR5v8Ak8YBAJc926a92/8AnMYBAJFwz3Spz/8ApcYBAI3FviuMvv8ArsYBAI/3jQRajf8At8YBALkI9vHu9v8AwMYBAKgY5tDR5v8AycYBAJc926a92/8A0sYBAJFwz3Spz/8A28YBAI63wDaQwP8A5MYBAI/3sAVwsP8A7cYBAI/4ewNOe/8A9sYBAOkI///3+/8A/8YBAL0L8uzn8v8ACMcBAKgY5tDR5v8AEccBAJc926a92/8AGscBAJFwz3Spz/8AI8cBAI63wDaQwP8ALMcBAI/3sAVwsP8ANccBAI/4ewNOe/8APscBAOkI///3+/8AR8cBAL0L8uzn8v8AUMcBAKgY5tDR5v8AWccBAJc926a92/8AYscBAJFwz3Spz/8Aa8cBAI63wDaQwP8AdMcBAI/3sAVwsP8AfccBAI/3jQRajf8AhscBAI/5WAI4WP8Aj8cBAMgO8Ozi8P8AmscBAJc926a92/8ApccBAILQmRyQmf8AsMcBAM8I9/bv9/8Au8cBAJso4b3J4f8AxscBAI+Az2epz/8A0ccBAIL7igKBiv8A3McBAM8I9/bv9/8A58cBAJso4b3J4f8A8scBAI+Az2epz/8A/ccBAILQmRyQmf8ACMgBAHf8bAFsWf8AE8gBAM8I9/bv9/8AHsgBAKgY5tDR5v8AKcgBAJc926a92/8ANMgBAI+Az2epz/8AP8gBAILQmRyQmf8ASsgBAHf8bAFsWf8AVcgBAM8I9/bv9/8AYMgBAKgY5tDR5v8Aa8gBAJc926a92/8AdsgBAI+Az2epz/8AgcgBAI63wDaQwP8AjMgBAIL7igKBiv8Al8gBAHb8ZAFkUP8AosgBAOkI///3+/8ArcgBAMgO8Ozi8P8AuMgBAKgY5tDR5v8Aw8gBAJc926a92/8AzsgBAI+Az2epz/8A2cgBAI63wDaQwP8A5MgBAIL7igKBiv8A78gBAHb8ZAFkUP8A+sgBAOkI///3+/8ABckBAMgO8Ozi8P8AEMkBAKgY5tDR5v8AG8kBAJc926a92/8AJskBAI+Az2epz/8AMckBAI63wDaQwP8APMkBAIL7igKBiv8AR8kBAHf8bAFsWf8AUskBAHX7RgFGNv8AXckBABLuf387CP8AZ8kBAMP/Sy0AS/8AcskBABT2s7NYBv8AfMkBABbo4OCCFP8AhskBABeb/f24Y/8AkMkBABhI/v7gtv8AmskBAKUU69ja6/8ApMkBALEv0rKr0v8ArskBALNUrIBzrP8AuMkBAL21iFQniP8AwskBABLuf387CP8AzMkBAL21iFQniP8A18kBAMP/Sy0AS/8A4skBABT2s7NYBv8A7MkBABbo4OCCFP8A9skBABeb/f24Y/8AAMoBABhI/v7gtv8ACsoBAAAA9/f39/8AFMoBAKUU69ja6/8AHsoBALEv0rKr0v8AKMoBALNUrIBzrP8AMsoBABe78fGjQP8AO8oBAAAA9/f39/8ARMoBALJFw5mOw/8ATcoBABH95uZhAf8AVsoBABeb/f24Y/8AX8oBALEv0rKr0v8AaMoBALmbmV48mf8AccoBABH95uZhAf8AesoBABeb/f24Y/8Ag8oBAAAA9/f39/8AjMoBALEv0rKr0v8AlcoBALmbmV48mf8AnsoBABT2s7NYBv8Ap8oBABe78fGjQP8AsMoBABhI/v7gtv8AucoBAKUU69ja6/8AwsoBALJFw5mOw/8Ay8oBAL21iFQniP8A1MoBABT2s7NYBv8A3coBABe78fGjQP8A5soBABhI/v7gtv8A78oBAAAA9/f39/8A+MoBAKUU69ja6/8AAcsBALJFw5mOw/8ACssBAL21iFQniP8AE8sBABT2s7NYBv8AHMsBABbo4OCCFP8AJcsBABeb/f24Y/8ALssBABhI/v7gtv8AN8sBAKUU69ja6/8AQMsBALEv0rKr0v8AScsBALNUrIBzrP8AUssBAL21iFQniP8AW8sBABT2s7NYBv8AZMsBABbo4OCCFP8AbcsBABeb/f24Y/8AdssBABhI/v7gtv8Af8sBAAAA9/f39/8AiMsBAKUU69ja6/8AkcsBALEv0rKr0v8AmssBALNUrIBzrP8Ao8sBAL21iFQniP8ArMsBALwO7+fh7/8AtcsBANZDycmUx/8AvssBAOre3d0cd/8Ax8sBALkI9vHu9v8A0MsBANMp2Ne12P8A2csBAOSL399lsP8A4ssBAO/ozs4SVv8A68sBALkI9vHu9v8A9MsBANMp2Ne12P8A/csBAOSL399lsP8ABswBAOre3d0cd/8AD8wBAOz/mJgAQ/8AGMwBALkI9vHu9v8AIcwBAMwm2tS52v8AKswBANZDycmUx/8AM8wBAOSL399lsP8APMwBAOre3d0cd/8ARcwBAOz/mJgAQ/8ATswBALkI9vHu9v8AV8wBAMwm2tS52v8AYMwBANZDycmUx/8AacwBAOSL399lsP8AcswBAOnR5+cpiv8Ae8wBAO/ozs4SVv8AhMwBAOz/kZEAP/8AjcwBAMMF+ff0+f8AlswBALwO7+fh7/8An8wBAMwm2tS52v8AqMwBANZDycmUx/8AscwBAOSL399lsP8AuswBAOnR5+cpiv8Aw8wBAO/ozs4SVv8AzMwBAOz/kZEAP/8A1cwBAMMF+ff0+f8A3swBALwO7+fh7/8A58wBAMwm2tS52v8A8MwBANZDycmUx/8A+cwBAOSL399lsP8AAs0BAOnR5+cpiv8AC80BAO/ozs4SVv8AFM0BAOz/mJgAQ/8AHc0BAPL/Z2cAH/8AJs0BALQI9e/t9f8AMs0BAKgl3Ly93P8APs0BALBksXVrsf8ASs0BALYH9/Lw9/8AVs0BAK0c4svJ4v8AYs0BAK06yJ6ayP8Abs0BALaAo2pRo/8Aes0BALYH9/Lw9/8Ahs0BAK0c4svJ4v8Aks0BAK06yJ6ayP8Ans0BALBksXVrsf8Aqs0BALy5j1Qnj/8Ats0BALYH9/Lw9/8Aws0BAKoS69ra6/8Azs0BAKgl3Ly93P8A2s0BAK06yJ6ayP8A5s0BALBksXVrsf8A8s0BALy5j1Qnj/8A/s0BALYH9/Lw9/8ACs4BAKoS69ra6/8AFs4BAKgl3Ly93P8AIs4BAK06yJ6ayP8ALs4BAKxTuoB9uv8AOs4BALaAo2pRo/8ARs4BAL7YhkoUhv8AUs4BAL8C/fz7/f8AXs4BALQI9e/t9f8Aas4BAKoS69ra6/8Ads4BAKgl3Ly93P8Ags4BAK06yJ6ayP8Ajs4BAKxTuoB9uv8Ams4BALaAo2pRo/8Aps4BAL7YhkoUhv8Ass4BAL8C/fz7/f8Avs4BALQI9e/t9f8Ays4BAKoS69ra6/8A1s4BAKgl3Ly93P8A4s4BAK06yJ6ayP8A7s4BAKxTuoB9uv8A+s4BALaAo2pRo/8ABs8BALy5j1Qnj/8AEs8BAL//fT8Aff8AHs8BAPL/Z2cAH/8AKM8BAJbxYQUwYf8AM88BAPncsrIYK/8APc8BAAWj1tZgTf8AR88BAA139PSlgv8AUc8BAA82/f3bx/8AW88BAI4g8NHl8P8AZc8BAI1X3pLF3v8Ab88BAI+nw0OTw/8Aec8BAJTOrCFmrP8Ag88BAPL/Z2cAH/8Ajc8BAJTOrCFmrP8AmM8BAJbxYQUwYf8Ao88BAPncsrIYK/8Arc8BAAWj1tZgTf8At88BAA139PSlgv8Awc8BAA82/f3bx/8Ay88BAAAA9/f39/8A1c8BAI4g8NHl8P8A388BAI1X3pLF3v8A6c8BAI+nw0OTw/8A888BAAyW7++KYv8A/M8BAAAA9/f39/8ABdABAI+Az2epz/8ADtABAPj/ysoAIP8AF9ABAA139PSlgv8AINABAI1X3pLF3v8AKdABAI/3sAVxsP8AMtABAPj/ysoAIP8AO9ABAA139PSlgv8ARNABAAAA9/f39/8ATdABAI1X3pLF3v8AVtABAI/3sAVxsP8AX9ABAPncsrIYK/8AaNABAAyW7++KYv8AcdABAA82/f3bx/8AetABAI4g8NHl8P8Ag9ABAI+Az2epz/8AjNABAJTOrCFmrP8AldABAPncsrIYK/8AntABAAyW7++KYv8Ap9ABAA82/f3bx/8AsNABAAAA9/f39/8AudABAI4g8NHl8P8AwtABAI+Az2epz/8Ay9ABAJTOrCFmrP8A1NABAPncsrIYK/8A3dABAAWj1tZgTf8A5tABAA139PSlgv8A79ABAA82/f3bx/8A+NABAI4g8NHl8P8AAdEBAI1X3pLF3v8ACtEBAI+nw0OTw/8AE9EBAJTOrCFmrP8AHNEBAPncsrIYK/8AJdEBAAWj1tZgTf8ALtEBAA139PSlgv8AN9EBAA82/f3bx/8AQNEBAAAA9/f39/8ASdEBAI4g8NHl8P8AUtEBAI1X3pLF3v8AW9EBAI+nw0OTw/8AZNEBAJTOrCFmrP8AbdEBAPL/Z2cAH/8Ad9EBAAAAGhoaGv8AgtEBAPncsrIYK/8AjNEBAAWj1tZgTf8AltEBAA139PSlgv8AoNEBAA82/f3bx/8AqtEBAAAA4ODg4P8AtNEBAAAAurq6uv8AvtEBAAAAh4eHh/8AyNEBAAAATU1NTf8A0tEBAPL/Z2cAH/8A3NEBAAAATU1NTf8A59EBAAAAGhoaGv8A8tEBAPncsrIYK/8A/NEBAAWj1tZgTf8ABtIBAA139PSlgv8AENIBAA82/f3bx/8AGtIBAAAA//////8AJNIBAAAA4ODg4P8ALtIBAAAAurq6uv8AONIBAAAAh4eHh/8AQtIBAAyW7++KYv8AS9IBAAAA//////8AVNIBAAAAmZmZmf8AXdIBAPj/ysoAIP8AZtIBAA139PSlgv8Ab9IBAAAAurq6uv8AeNIBAAAAQEBAQP8AgdIBAPj/ysoAIP8AitIBAA139PSlgv8Ak9IBAAAA//////8AnNIBAAAAurq6uv8ApdIBAAAAQEBAQP8ArtIBAPncsrIYK/8At9IBAAyW7++KYv8AwNIBAA82/f3bx/8AydIBAAAA4ODg4P8A0tIBAAAAmZmZmf8A29IBAAAATU1NTf8A5NIBAPncsrIYK/8A7dIBAAyW7++KYv8A9tIBAA82/f3bx/8A/9IBAAAA//////8ACNMBAAAA4ODg4P8AEdMBAAAAmZmZmf8AGtMBAAAATU1NTf8AI9MBAPncsrIYK/8ALNMBAAWj1tZgTf8ANdMBAA139PSlgv8APtMBAA82/f3bx/8AR9MBAAAA4ODg4P8AUNMBAAAAurq6uv8AWdMBAAAAh4eHh/8AYtMBAAAATU1NTf8Aa9MBAPncsrIYK/8AdNMBAAWj1tZgTf8AfdMBAA139PSlgv8AhtMBAA82/f3bx/8Aj9MBAAAA//////8AmNMBAAAA4ODg4P8AodMBAAAAurq6uv8AqtMBAAAAh4eHh/8As9MBAAAATU1NTf8AvNMBAAMg/f3g3f8AxdMBAPRc+vqftf8AztMBAOPcxcUbiv8A19MBAA0c/v7r4v8A4NMBAPxI+/u0uf8A6dMBAO6T9/doof8A8tMBAOD9rq4Bfv8A+9MBAA0c/v7r4v8ABNQBAPxI+/u0uf8ADdQBAO6T9/doof8AFtQBAOPcxcUbiv8AH9QBANX8enoBd/8AKNQBAA0c/v7r4v8AMdQBAAM8/PzFwP8AOtQBAPRc+vqftf8AQ9QBAO6T9/doof8ATNQBAOPcxcUbiv8AVdQBANX8enoBd/8AXtQBAA0c/v7r4v8AZ9QBAAM8/PzFwP8AcNQBAPRc+vqftf8AedQBAO6T9/doof8AgtQBAObD3d00l/8Ai9QBAOD9rq4Bfv8AlNQBANX8enoBd/8AndQBAA4M///38/8AptQBAAMg/f3g3f8Ar9QBAAM8/PzFwP8AuNQBAPRc+vqftf8AwdQBAO6T9/doof8AytQBAObD3d00l/8A09QBAOD9rq4Bfv8A3NQBANX8enoBd/8A5dQBAA4M///38/8A7tQBAAMg/f3g3f8A99QBAAM8/PzFwP8AANUBAPRc+vqftf8ACdUBAO6T9/doof8AEtUBAObD3d00l/8AG9UBAOD9rq4Bfv8AJNUBANX8enoBd/8ALdUBAMf/akkAav8ANtUBAPX/paUAJv8AQtUBAKerlTE2lf8AT9UBAALQ19cwJ/8AW9UBAAq49PRtQ/8AZ9UBABSd/f2uYf8Ac9UBAB5u/v7gkP8Af9UBAIgY+ODz+P8Ai9UBAIpD6avZ6f8Al9UBAI9x0XSt0f8Ao9UBAJedtEV1tP8Ar9UBAPX/paUAJv8Au9UBAJedtEV1tP8AyNUBAKerlTE2lf8A1dUBAALQ19cwJ/8A4dUBAAq49PRtQ/8A7dUBABSd/f2uYf8A+dUBAB5u/v7gkP8ABdYBACpA////v/8AEdYBAIgY+ODz+P8AHdYBAIpD6avZ6f8AKdYBAI9x0XSt0f8ANdYBAA2k/PyNWf8AQNYBACpA////v/8AS9YBAI9W25G/2/8AVtYBAP7h19cZHP8AYdYBABSd/f2uYf8AbNYBAIpD6avZ6f8Ad9YBAJHBtix7tv8AgtYBAP7h19cZHP8AjdYBABSd/f2uYf8AmNYBACpA////v/8Ao9YBAIpD6avZ6f8ArtYBAJHBtix7tv8AudYBAALQ19cwJ/8AxNYBAA2k/PyNWf8Az9YBAB5u/v7gkP8A2tYBAIgY+ODz+P8A5dYBAI9W25G/2/8A8NYBAJedtEV1tP8A+9YBAALQ19cwJ/8ABtcBAA2k/PyNWf8AEdcBAB5u/v7gkP8AHNcBACpA////v/8AJ9cBAIgY+ODz+P8AMtcBAI9W25G/2/8APdcBAJedtEV1tP8ASNcBAALQ19cwJ/8AU9cBAAq49PRtQ/8AXtcBABSd/f2uYf8AadcBAB5u/v7gkP8AdNcBAIgY+ODz+P8Af9cBAIpD6avZ6f8AitcBAI9x0XSt0f8AldcBAJedtEV1tP8AoNcBAALQ19cwJ/8Aq9cBAAq49PRtQ/8AttcBABSd/f2uYf8AwdcBAB5u/v7gkP8AzNcBACpA////v/8A19cBAIgY+ODz+P8A4tcBAIpD6avZ6f8A7dcBAI9x0XSt0f8A+NcBAJedtEV1tP8AA9gBAPX/paUAJv8AD9gBAGv/aABoN/8AHNgBAALQ19cwJ/8AKNgBAAq49PRtQ/8ANNgBABSd/f2uYf8AQNgBAB9z/v7gi/8ATNgBADNq79nvi/8AWNgBAD6C2abZav8AZNgBAFN5vWa9Y/8AcNgBAGfTmBqYUP8AfNgBAPX/paUAJv8AiNgBAGfTmBqYUP8AldgBAGv/aABoN/8AotgBAALQ19cwJ/8ArtgBAAq49PRtQ/8AutgBABSd/f2uYf8AxtgBAB9z/v7gi/8A0tgBACpA////v/8A3tgBADNq79nvi/8A6tgBAD6C2abZav8A9tgBAFN5vWa9Y/8AAtkBAA2k/PyNWf8ADdkBACpA////v/8AGNkBAEKIz5HPYP8AI9kBAP7h19cZHP8ALtkBABSd/f2uYf8AOdkBAD6C2abZav8ARNkBAGLSlhqWQf8AT9kBAP7h19cZHP8AWtkBABSd/f2uYf8AZdkBACpA////v/8AcNkBAD6C2abZav8Ae9kBAGLSlhqWQf8AhtkBAALQ19cwJ/8AkdkBAA2k/PyNWf8AnNkBAB9z/v7gi/8Ap9kBADNq79nvi/8AstkBAEKIz5HPYP8AvdkBAGfTmBqYUP8AyNkBAALQ19cwJ/8A09kBAA2k/PyNWf8A3tkBAB9z/v7gi/8A6dkBACpA////v/8A9NkBADNq79nvi/8A/9kBAEKIz5HPYP8ACtoBAGfTmBqYUP8AFdoBAALQ19cwJ/8AINoBAAq49PRtQ/8AK9oBABSd/f2uYf8ANtoBAB9z/v7gi/8AQdoBADNq79nvi/8ATNoBAD6C2abZav8AV9oBAFN5vWa9Y/8AYtoBAGfTmBqYUP8AbdoBAALQ19cwJ/8AeNoBAAq49PRtQ/8Ag9oBABSd/f2uYf8AjtoBAB9z/v7gi/8AmdoBACpA////v/8ApNoBADNq79nvi/8Ar9oBAD6C2abZav8AutoBAFN5vWa9Y/8AxdoBAGfTmBqYUP8A0NoBAA0s/v7g0v8A2doBAAmL/PyScv8A4toBAAHT3t4tJv8A69oBAA0l/v7l2f8A9NoBAAts/Pyukf8A/doBAAez+/tqSv8ABtsBAP3gy8sYHf8AD9sBAA0l/v7l2f8AGNsBAAts/Pyukf8AIdsBAAez+/tqSv8AKtsBAAHT3t4tJv8AM9sBAP3npaUPFf8APNsBAA0l/v7l2f8ARdsBAAxc/Py7of8ATtsBAAmL/PyScv8AV9sBAAez+/tqSv8AYNsBAAHT3t4tJv8AadsBAP3npaUPFf8ActsBAA0l/v7l2f8Ae9sBAAxc/Py7of8AhNsBAAmL/PyScv8AjdsBAAez+/tqSv8AltsBAAPQ7+87LP8An9sBAP3gy8sYHf8AqNsBAPv/mZkADf8AsdsBAA4P///18P8AutsBAA0s/v7g0v8Aw9sBAAxc/Py7of8AzNsBAAmL/PyScv8A1dsBAAez+/tqSv8A3tsBAAPQ7+87LP8A59sBAP3gy8sYHf8A8NsBAPv/mZkADf8A+dsBAA4P///18P8AAtwBAA0s/v7g0v8AC9wBAAxc/Py7of8AFNwBAAmL/PyScv8AHdwBAAez+/tqSv8AJtwBAAPQ7+87LP8AL9wBAP3gy8sYHf8AONwBAP3npaUPFf8AQdwBAPn/Z2cADf8AStwBAP7h5OQaHP8AU9wBAJKyuDd+uP8AXNwBAFOTr02vSv8AZdwBAP7h5OQaHP8AbtwBAJKyuDd+uP8Ad9wBAFOTr02vSv8AgNwBAM+Eo5hOo/8AidwBAP7h5OQaHP8AktwBAJKyuDd+uP8Am9wBAFOTr02vSv8ApNwBAM+Eo5hOo/8ArdwBABX///9/AP8AttwBAP7h5OQaHP8Av9wBAJKyuDd+uP8AyNwBAFOTr02vSv8A0dwBAM+Eo5hOo/8A2twBABX///9/AP8A49wBACrM////M/8A7NwBAP7h5OQaHP8A9dwBAJKyuDd+uP8A/twBAFOTr02vSv8AB90BAM+Eo5hOo/8AEN0BABX///9/AP8AGd0BACrM////M/8AIt0BAA/BpqZWKP8AK90BAP7h5OQaHP8ANN0BAJKyuDd+uP8APd0BAFOTr02vSv8ARt0BAM+Eo5hOo/8AT90BABX///9/AP8AWN0BACrM////M/8AYd0BAA/BpqZWKP8Aat0BAOh59/eBv/8Ac90BAP7h5OQaHP8AfN0BAJKyuDd+uP8Ahd0BAFOTr02vSv8Ajt0BAM+Eo5hOo/8Al90BABX///9/AP8AoN0BACrM////M/8Aqd0BAA/BpqZWKP8Ast0BAOh59/eBv/8Au90BAAAAmZmZmf8AxN0BAHJ4wmbCpf8Azd0BAAub/PyNYv8A1t0BAJxNy42gy/8A390BAHJ4wmbCpf8A6N0BAAub/PyNYv8A8d0BAJxNy42gy/8A+t0BAORm5+eKw/8AA94BAHJ4wmbCpf8ADN4BAAub/PyNYv8AFd4BAJxNy42gy/8AHt4BAORm5+eKw/8AJ94BADqb2KbYVP8AMN4BAHJ4wmbCpf8AOd4BAAub/PyNYv8AQt4BAJxNy42gy/8AS94BAORm5+eKw/8AVN4BADqb2KbYVP8AXd4BACLQ///ZL/8AZt4BAHJ4wmbCpf8Ab94BAAub/PyNYv8AeN4BAJxNy42gy/8Agd4BAORm5+eKw/8Ait4BADqb2KbYVP8Ak94BACLQ///ZL/8AnN4BABla5eXElP8Apd4BAHJ4wmbCpf8Art4BAAub/PyNYv8At94BAJxNy42gy/8AwN4BAORm5+eKw/8Ayd4BADqb2KbYVP8A0t4BACLQ///ZL/8A294BABla5eXElP8A5N4BAAAAs7Ozs/8A7d4BAHhU043Tx/8A994BANNSvbyAvf8AAt8BACpM////s/8ADN8BAK8l2r662v8AFt8BAASL+/uAcv8AIN8BAJBk04Cx0/8AKt8BABac/f20Yv8ANN8BADqG3rPeaf8APt8BAOkv/PzN5f8ASN8BAAAA2dnZ2f8AUt8BAHhU043Tx/8AXN8BANNSvbyAvf8AZ98BAE0p68zrxf8Act8BACpM////s/8AfN8BAK8l2r662v8Aht8BAASL+/uAcv8AkN8BAJBk04Cx0/8Amt8BABac/f20Yv8ApN8BADqG3rPeaf8Art8BAOkv/PzN5f8AuN8BAAAA2dnZ2f8Awt8BAHhU043Tx/8AzN8BANNSvbyAvf8A198BAE0p68zrxf8A4t8BACWQ///tb/8A7d8BACpM////s/8A998BAK8l2r662v8AAeABAASL+/uAcv8AC+ABAJBk04Cx0/8AFeABABac/f20Yv8AH+ABADqG3rPeaf8AKeABAOkv/PzN5f8AM+ABAAAA2dnZ2f8APeABAHhU043Tx/8ARuABACpM////s/8AT+ABAK8l2r662v8AWOABAHhU043Tx/8AYeABACpM////s/8AauABAK8l2r662v8Ac+ABAASL+/uAcv8AfOABAHhU043Tx/8AheABACpM////s/8AjuABAK8l2r662v8Al+ABAASL+/uAcv8AoOABAJBk04Cx0/8AqeABAHhU043Tx/8AsuABACpM////s/8Au+ABAK8l2r662v8AxOABAASL+/uAcv8AzeABAJBk04Cx0/8A1uABABac/f20Yv8A3+ABAHhU043Tx/8A6OABACpM////s/8A8eABAK8l2r662v8A+uABAASL+/uAcv8AA+EBAJBk04Cx0/8ADOEBABac/f20Yv8AFeEBADqG3rPeaf8AHuEBAHhU043Tx/8AJ+EBACpM////s/8AMOEBAK8l2r662v8AOeEBAASL+/uAcv8AQuEBAJBk04Cx0/8AS+EBABac/f20Yv8AVOEBADqG3rPeaf8AXeEBAOkv/PzN5f8AZuEBAHhU043Tx/8Ab+EBACpM////s/8AeOEBAK8l2r662v8AgeEBAASL+/uAcv8AiuEBAJBk04Cx0/8Ak+EBABac/f20Yv8AnOEBADqG3rPeaf8ApeEBAOkv/PzN5f8AruEBAAAA2dnZ2f8At+EBAO39np4BQv8AxeEBALGCol5Pov8A1OEBAPq01dU+T/8A4uEBAAq49PRtQ/8A8OEBABSd/f2uYf8A/uEBAB9z/v7gi/8ADOIBADFg9eb1mP8AGuIBAE9B3avdpP8AKOIBAHJ4wmbCpf8ANuIBAI+7vTKIvf8AROIBAO39np4BQv8AUuIBAI+7vTKIvf8AYeIBALGCol5Pov8AcOIBAPq01dU+T/8AfuIBAAq49PRtQ/8AjOIBABSd/f2uYf8AmuIBAB9z/v7gi/8AqOIBACpA////v/8AtuIBADFg9eb1mP8AxOIBAE9B3avdpP8A0uIBAHJ4wmbCpf8A4OIBAA2k/PyNWf8A7eIBACpA////v/8A+uIBAFFN1ZnVlP8AB+MBAP7h19cZHP8AFOMBABSd/f2uYf8AIeMBAE9B3avdpP8ALuMBAI/EuiuDuv8AO+MBAP7h19cZHP8ASOMBABSd/f2uYf8AVeMBACpA////v/8AYuMBAE9B3avdpP8Ab+MBAI/EuiuDuv8AfOMBAPq01dU+T/8AieMBAA2k/PyNWf8AluMBAB9z/v7gi/8Ao+MBADFg9eb1mP8AsOMBAFFN1ZnVlP8AveMBAI+7vTKIvf8AyuMBAPq01dU+T/8A1+MBAA2k/PyNWf8A5OMBAB9z/v7gi/8A8eMBACpA////v/8A/uMBADFg9eb1mP8AC+QBAFFN1ZnVlP8AGOQBAI+7vTKIvf8AJeQBAPq01dU+T/8AMuQBAAq49PRtQ/8AP+QBABSd/f2uYf8ATOQBAB9z/v7gi/8AWeQBADFg9eb1mP8AZuQBAE9B3avdpP8Ac+QBAHJ4wmbCpf8AgOQBAI+7vTKIvf8AjeQBAPq01dU+T/8AmuQBAAq49PRtQ/8Ap+QBABSd/f2uYf8AtOQBAB9z/v7gi/8AweQBACpA////v/8AzuQBADFg9eb1mP8A2+QBAE9B3avdpP8A6OQBAHJ4wmbCpf8A9eQBAI+7vTKIvf8AAuUBAJMP//D4//8AEeUBABgj+vrr1/8AI+UBAH///wD///8ALeUBAHGA/3//1P8APeUBAH8P//D///8ASOUBACoa9fX13P8AU+UBABc6///kxP8AX+UBAAAAAAAAAP8AauUBABkx///rzf8AfuUBAKr//wAA//8AiOUBAMDO4oor4v8AmOUBAAC+paUqKv8Ao+UBABdj3t64h/8AsuUBAIBnoF+eoP8AweUBAD///3//AP8A0eUBABHa0tJpHv8A4OUBAAuv//9/UP8A6+UBAJqT7WSV7f8A/+UBACEi///43P8ADeYBAPbn3NwUPP8AGuYBAH///wD///8AJOYBAKr/iwAAi/8AMuYBAH//iwCLi/8AQOYBAB7vuLiGC/8AU+YBAAAAqampqf8AYeYBAFX/ZABkAP8AcOYBAAAAqampqf8AfuYBACduvb23a/8AjeYBANT/i4sAi/8AnuYBADqOa1VrL/8AsuYBABf///+MAP8AwuYBAMbAzJkyzP8A0uYBAAD/i4sAAP8A3+YBAAp56emWev8A7+YBAFU9vI+8j/8AAecBAK+Pi0g9i/8AFOcBAH9nTy9PT/8AJ+cBAH9nTy9PT/8AOucBAID/0QDO0f8ATecBAMf/05QA0/8AXecBAOjr//8Uk/8Aa+cBAIr//wC///8AfOcBAAAAaWlpaf8AiecBAAAAaWlpaf8AlucBAJTh/x6Q//8ApucBAADOsrIiIv8AtecBABwP///68P8AxucBAFXAiyKLIv8A1+cBANT///8A//8A5OcBAAAA3Nzc3P8A8+cBAKoH//j4//8AA+gBACP////XAP8ADegBAB7Z2tqlIP8AHOgBAAAAgICAgP8AJugBAFX/gACAAP8AMegBADvQ/63/L/8AQugBAAAAgICAgP8ATOgBAFUP//D/8P8AWugBAOmW//9ptP8AZ+gBAACMzc1cXP8AdugBAML/gksAgv8AgugBACoP////8P8AjegBACZq8PDmjP8AmOgBAKoU+ubm+v8ApugBAPAP///w9f8AuegBAED//Hz8AP8AyOgBACYx///6zf8A2ugBAIk/5q3Y5v8A6egBAAB38PCAgP8A+egBAH8f/+D///8ACOkBACoo+vr60v8AIukBAAAA09PT0/8AMekBAFVk7pDukP8AQekBAAAA09PT0/8AUOkBAPhJ//+2wf8AX+kBAAyE//+gev8AcOkBAH3RsiCyqv8Ag+kBAI91+ofO+v8AlekBAJQ4mXeImf8AqekBAJQ4mXeImf8AvekBAJc03rDE3v8A0ekBACof////4P8A4ukBAFX//wD/AP8A7OkBAFXAzTLNMv8A++kBABUU+vrw5v8ABuoBANT///8A//8AE+oBAAD/gIAAAP8AH+oBAHGAzWbNqv8ANeoBAKr/zQAAzf8AReoBAMyY07pV0/8AV+oBALd825Nw2/8AaeoBAGepszyzcf8AfeoBALCP7nto7v8AkuoBAG//+gD6mv8AqeoBAH2n0UjRzP8AvuoBAOTkx8cVhf8A0+oBAKrGcBkZcP8A5eoBAGoJ//X/+v8A9OoBAAQe///k4f8AA+sBABpJ///ktf8AEesBABlR///erf8AIusBAKr/gAAAgP8ALOsBABsX/f315v8AOesBACr/gICAAP8AROsBADjAjmuOI/8AU+sBABv///+lAP8AX+sBAAv///9FAP8AbusBANZ72tpw1v8AeusBACZI7u7oqv8AjesBAFVk+5j7mP8AnOsBAH9D7q/u7v8Ar+sBAPF829twk/8AwusBABop///v1f8A0usBABRG///auf8A4esBABSwzc2FP/8A6+sBAPc////Ay/8A9esBANRG3d2g3f8A/+sBAIQ75rDg5v8AD+wBANT/gIAAgP8AG+wBAAD///8AAP8AJOwBAAA9vLyPj/8AM+wBAJ+14UFp4f8AQuwBABHci4tFE/8AU+wBAASK+vqAcv8AX+wBABOa9PSkYP8Ab+wBAGeqiy6LV/8AfewBABEQ///17v8Ai+wBAA23oKBSLf8Al+wBAAAAwMDAwP8Ao+wBAIts64fO6/8AsOwBAK+PzWpazf8Av+wBAJQ4kHCAkP8AzuwBAJQ4kHCAkP8A3ewBAAAF///6+v8A5+wBAGr//wD/f/8A+OwBAJKbtEaCtP8AB+0BABhU0tK0jP8AEO0BAH//gACAgP8AGu0BANQd2Ni/2P8AJ+0BAAa4//9jR/8AM+0BAHu24EDg0P8AQu0BANRz7u6C7v8ATu0BABtE9fXes/8AWe0BAAAA//////8AZO0BAAAA9fX19f8AdO0BACr/////AP8AgO0BADjAzZrNMv8Ake0BAC1D/Pf8uf8Amu0BAERb3a3djv8Ao+0BAGKyozGjVP8ArO0BACoy////zP8Ate0BAD5V5sLmmf8Avu0BAFVkxnjGef8Ax+0BAGO7hCOEQ/8A0O0BACoy////zP8A2e0BAD5V5sLmmf8A4u0BAFVkxnjGef8A6+0BAGKyozGjVP8A9O0BAGv/aABoN/8A/e0BACoy////zP8ABu4BADdR8Nnwo/8AD+4BAERb3a3djv8AGO4BAFVkxnjGef8AIe4BAGKyozGjVP8AKu4BAGv/aABoN/8AM+4BACoy////zP8APO4BADdR8Nnwo/8ARe4BAERb3a3djv8ATu4BAFVkxnjGef8AV+4BAGCeq0GrXf8AYO4BAGO7hCOEQ/8Aae4BAGz/WgBaMv8Acu4BACoZ////5f8Ae+4BAC1D/Pf8uf8AhO4BADdR8Nnwo/8Aje4BAERb3a3djv8Alu4BAFVkxnjGef8An+4BAGCeq0GrXf8AqO4BAGO7hCOEQ/8Ase4BAGz/WgBaMv8Auu4BACoZ////5f8Aw+4BAC1D/Pf8uf8AzO4BADdR8Nnwo/8A1e4BAERb3a3djv8A3u4BAFVkxnjGef8A5+4BAGCeq0GrXf8A8O4BAGO7hCOEQ/8A+e4BAGv/aABoN/8AAu8BAG7/RQBFKf8AC+8BADFJ+O34sf8AFu8BAHVhzX/Nu/8AIe8BAJDCuCx/uP8ALO8BACoy////zP8AN+8BAGNC2qHatP8AQu8BAISqxEG2xP8ATe8BAJbLqCJeqP8AWO8BACoy////zP8AY+8BAGNC2qHatP8Abu8BAISqxEG2xP8Aee8BAJDCuCx/uP8AhO8BAKS/lCU0lP8Aj+8BACoy////zP8Amu8BAEU66cfptP8Ape8BAHVhzX/Nu/8AsO8BAISqxEG2xP8Au+8BAJDCuCx/uP8Axu8BAKS/lCU0lP8A0e8BACoy////zP8A3O8BAEU66cfptP8A5+8BAHVhzX/Nu/8A8u8BAISqxEG2xP8A/e8BAIvYwB2RwP8ACPABAJbLqCJeqP8AE/ABAJ7nhAwshP8AHvABACom////2f8AKfABADFJ+O34sf8ANPABAEU66cfptP8AP/ABAHVhzX/Nu/8ASvABAISqxEG2xP8AVfABAIvYwB2RwP8AYPABAJbLqCJeqP8Aa/ABAJ7nhAwshP8AdvABACom////2f8AgfABADFJ+O34sf8AjPABAEU66cfptP8Al/ABAHVhzX/Nu/8AovABAISqxEG2xP8ArfABAIvYwB2RwP8AuPABAJbLqCJeqP8Aw/ABAKS/lCU0lP8AzvABAJ7nWAgdWP8A2fABACVC///3vP8A5PABAByv/v7ET/8A7/ABABDu2dlfDv8A+vABACoq////1P8ABfEBABxw/v7Zjv8AEPEBABbV/v6ZKf8AG/EBAA/8zMxMAv8AJvEBACoq////1P8AMfEBABxw/v7Zjv8APPEBABbV/v6ZKf8AR/EBABDu2dlfDv8AUvEBAA34mZk0BP8AXfEBACoq////1P8AaPEBAB9t/v7jkf8Ac/EBAByv/v7ET/8AfvEBABbV/v6ZKf8AifEBABDu2dlfDv8AlPEBAA34mZk0BP8An/EBACoq////1P8AqvEBAB9t/v7jkf8AtfEBAByv/v7ET/8AwPEBABbV/v6ZKf8Ay/EBABLp7OxwFP8A1vEBAA/8zMxMAv8A4fEBAAz3jIwtBP8A7PEBACoZ////5f8A9/EBACVC///3vP8AAvIBAB9t/v7jkf8ADfIBAByv/v7ET/8AGPIBABbV/v6ZKf8AI/IBABLp7OxwFP8ALvIBAA/8zMxMAv8AOfIBAAz3jIwtBP8ARPIBACoZ////5f8AT/IBACVC///3vP8AWvIBAB9t/v7jkf8AZfIBAByv/v7ET/8AcPIBABbV/v6ZKf8Ae/IBABLp7OxwFP8AhvIBAA/8zMxMAv8AkfIBAA34mZk0BP8AnPIBAA3wZmYlBv8Ap/IBACJf///toP8AsvIBABiy/v6yTP8AvfIBAAXd8PA7IP8AyPIBACpN////sv8A0/IBAB2i/v7MXP8A3vIBABHC/f2NPP8A6fIBAP7h4+MaHP8A9PIBACpN////sv8A//IBAB2i/v7MXP8ACvMBABHC/f2NPP8AFfMBAAXd8PA7IP8AIPMBAPb/vb0AJv8AK/MBACpN////sv8ANvMBAB6I/v7Zdv8AQfMBABiy/v6yTP8ATPMBABHC/f2NPP8AV/MBAAXd8PA7IP8AYvMBAPb/vb0AJv8AbfMBACpN////sv8AePMBAB6I/v7Zdv8Ag/MBABiy/v6yTP8AjvMBABHC/f2NPP8AmfMBAAfU/PxOKv8ApPMBAP7h4+MaHP8Ar/MBAPX/sbEAJv8AuvMBACoy////zP8AxfMBACJf///toP8A0PMBAB6I/v7Zdv8A2/MBABiy/v6yTP8A5vMBABHC/f2NPP8A8fMBAAfU/PxOKv8A/PMBAP7h4+MaHP8AB/QBAPX/sbEAJv8AEvQBACoy////zP8AHfQBACJf///toP8AKPQBAB6I/v7Zdv8AM/QBABiy/v6yTP8APvQBABHC/f2NPP8ASfQBAAfU/PxOKv8AVPQBAP7h4+MaHP8AX/QBAPb/vb0AJv8AavQBAPL/gIAAJv8AdfQBAJMP//D4//8Af/QBABgj+vrr1/8AjPQBABck///v2/8AmvQBABck7u7fzP8AqPQBABckzc3AsP8AtvQBABgii4uDeP8AxPQBAHGA/3//1P8Az/QBAHGA/3//1P8A2/QBAHGA7nbuxv8A5/QBAHGAzWbNqv8A8/QBAHGAi0WLdP8A//QBAH8P//D///8ABfUBAH8P//D///8ADPUBAH8P7uDu7v8AE/UBAH8OzcHNzf8AGvUBAH8Oi4OLi/8AIfUBACoa9fX13P8AJ/UBABc6///kxP8ALvUBABc6///kxP8ANvUBABc67u7Vt/8APvUBABY6zc23nv8ARvUBABc6i4t9a/8AWAwCAAAAAAAAAP8ATvUBABkx///rzf8AXfUBAKr//wAA//8AYvUBAKr//wAA//8AaPUBAKr/7gAA7v8AbvUBAKr/zQAAzf8AdPUBAKr/iwAAi/8AevUBAMDO4oor4v8AhfUBAAC+paUqKv8Ai/UBAAC///9AQP8AkvUBAAC/7u47O/8AmfUBAAC/zc0zM/8AoPUBAAC+i4sjI/8Ap/UBABdj3t64h/8AsfUBABdk///Tm/8AvPUBABdj7u7Fkf8Ax/UBABdjzc2qff8A0vUBABdji4tzVf8A3fUBAIBnoF+eoP8A5/UBAINn/5j1//8A8vUBAINm7o7l7v8A/fUBAINnzXrFzf8ACPYBAINmi1OGi/8AE/YBAD///3//AP8AHvYBAD///3//AP8AKvYBAD//7nbuAP8ANvYBAD//zWbNAP8AQvYBAD//i0WLAP8ATvYBABHa0tJpHv8AWPYBABHb//9/JP8AY/YBABHb7u52If8AbvYBABHazc1mHf8AefYBABHci4tFE/8AhPYBAAuv//9/UP8AivYBAAep//9yVv8AkfYBAAap7u5qUP8AmPYBAAapzc1bRf8An/YBAAaoi4s+L/8ApvYBAJqT7WSV7f8AtfYBACEi///43P8AvvYBACEi///43P8AyPYBACIj7u7ozf8A0vYBACIizc3Isf8A3PYBACMii4uIeP8A5vYBAPbn3NwUPP8A7vYBAH///wD///8A8/YBAH///wD///8A+fYBAH//7gDu7v8A//YBAH//zQDNzf8ABfcBAH//iwCLi/8AC/cBAB7vuLiGC/8AGfcBAB7w//+5D/8AKPcBAB7w7u6tDv8AN/cBAB7wzc2VDP8ARvcBAB7wi4tlCP8AVfcBAFX/ZABkAP8AX/cBACduvb23a/8AafcBADqOa1VrL/8AePcBADqP/8r/cP8AiPcBADqP7rzuaP8AmPcBADqPzaLNWv8AqPcBADqPi26LPf8AuPcBABf///+MAP8Aw/cBABX///9/AP8Az/cBABX/7u52AP8A2/cBABX/zc1mAP8A5/cBABX/i4tFAP8A8/cBAMbAzJkyzP8A/vcBAMbB/78+//8ACvgBAMbA7rI67v8AFvgBAMbAzZoyzf8AIvgBAMbAi2gii/8ALvgBAAp56emWev8AOfgBAFU9vI+8j/8ARvgBAFU+/8H/wf8AVPgBAFU+7rTutP8AYvgBAFU+zZvNm/8AcPgBAFU+i2mLaf8AfvgBAK+Pi0g9i/8AjPgBAH9nTy9PT/8AmvgBAH9o/5f///8AqfgBAH9n7o3u7v8AuPgBAH9ozXnNzf8Ax/gBAH9oi1KLi/8A1vgBAH9nTy9PT/8A5PgBAID/0QDO0f8A8vgBAMf/05QA0/8A/fgBAOjr//8Uk/8ABvkBAOjr//8Uk/8AEPkBAOjr7u4Sif8AGvkBAOjrzc0Qdv8AJPkBAOfsi4sKUP8ALvkBAIr//wC///8AOvkBAIr//wC///8AR/kBAIr/7gCy7v8AVPkBAIr/zQCazf8AYfkBAIr/iwBoi/8AbvkBAAAAaWlpaf8AdvkBAAAAaWlpaf8AfvkBAJTh/x6Q//8AifkBAJTh/x6Q//8AlfkBAJTh7hyG7v8AofkBAJThzRh0zf8ArfkBAJThixBOi/8AufkBAADOsrIiIv8Aw/kBAADP//8wMP8AzvkBAADP7u4sLP8A2fkBAADPzc0mJv8A5PkBAADPi4saGv8A7/kBABwP///68P8A+/kBAFXAiyKLIv8AB/oBAAAA3Nzc3P8AEfoBAKoH//j4//8AHPoBACP////XAP8AIfoBACP////XAP8AJ/oBACP/7u7JAP8ALfoBACP/zc2tAP8AM/oBACP/i4t1AP8AOfoBAB7Z2tqlIP8AQ/oBAB7a///BJf8ATvoBAB7a7u60Iv8AWfoBAB7azc2bHf8AZPoBAB7ai4tpFP8Ab/oBAAAAwMDAwP8AdPoBAAAAAAAAAP8AevoBAAAAAwMDA/8AgPoBAAAAGhoaGv8Ah/oBAAAA//////8Aj/oBAAAAHBwcHP8AlvoBAAAAHx8fH/8AnfoBAAAAISEhIf8ApPoBAAAAJCQkJP8Aq/oBAAAAJiYmJv8AsvoBAAAAKSkpKf8AufoBAAAAKysrK/8AwPoBAAAALi4uLv8Ax/oBAAAAMDAwMP8AzvoBAAAABQUFBf8A1PoBAAAAMzMzM/8A2/oBAAAANjY2Nv8A4voBAAAAODg4OP8A6foBAAAAOzs7O/8A8PoBAAAAPT09Pf8A9/oBAAAAQEBAQP8A/voBAAAAQkJCQv8ABfsBAAAARUVFRf8ADPsBAAAAR0dHR/8AE/sBAAAASkpKSv8AGvsBAAAACAgICP8AIPsBAAAATU1NTf8AJ/sBAAAAT09PT/8ALvsBAAAAUlJSUv8ANfsBAAAAVFRUVP8APPsBAAAAV1dXV/8AQ/sBAAAAWVlZWf8ASvsBAAAAXFxcXP8AUfsBAAAAXl5eXv8AWPsBAAAAYWFhYf8AX/sBAAAAY2NjY/8AZvsBAAAACgoKCv8AbPsBAAAAZmZmZv8Ac/sBAAAAaWlpaf8AevsBAAAAa2tra/8AgfsBAAAAbm5ubv8AiPsBAAAAcHBwcP8Aj/sBAAAAc3Nzc/8AlvsBAAAAdXV1df8AnfsBAAAAeHh4eP8ApPsBAAAAenp6ev8Aq/sBAAAAfX19ff8AsvsBAAAADQ0NDf8AuPsBAAAAf39/f/8Av/sBAAAAgoKCgv8AxvsBAAAAhYWFhf8AzfsBAAAAh4eHh/8A1PsBAAAAioqKiv8A2/sBAAAAjIyMjP8A4vsBAAAAj4+Pj/8A6fsBAAAAkZGRkf8A8PsBAAAAlJSUlP8A9/sBAAAAlpaWlv8A/vsBAAAADw8PD/8ABPwBAAAAmZmZmf8AC/wBAAAAnJycnP8AEvwBAAAAnp6env8AGfwBAAAAoaGhof8AIPwBAAAAo6Ojo/8AJ/wBAAAApqampv8ALvwBAAAAqKioqP8ANfwBAAAAq6urq/8APPwBAAAAra2trf8AQ/wBAAAAsLCwsP8ASvwBAAAAEhISEv8AUPwBAAAAs7Ozs/8AV/wBAAAAtbW1tf8AXvwBAAAAuLi4uP8AZfwBAAAAurq6uv8AbPwBAAAAvb29vf8Ac/wBAAAAv7+/v/8AevwBAAAAwsLCwv8AgfwBAAAAxMTExP8AiPwBAAAAx8fHx/8Aj/wBAAAAycnJyf8AlvwBAAAAFBQUFP8AnPwBAAAAzMzMzP8Ao/wBAAAAz8/Pz/8AqvwBAAAA0dHR0f8AsfwBAAAA1NTU1P8AuPwBAAAA1tbW1v8Av/wBAAAA2dnZ2f8AxvwBAAAA29vb2/8AzfwBAAAA3t7e3v8A1PwBAAAA4ODg4P8A2/wBAAAA4+Pj4/8A4vwBAAAAFxcXF/8A6PwBAAAA5eXl5f8A7/wBAAAA6Ojo6P8A9vwBAAAA6+vr6/8A/fwBAAAA7e3t7f8ABP0BAAAA8PDw8P8AC/0BAAAA8vLy8v8AEv0BAAAA9fX19f8AGf0BAAAA9/f39/8AIP0BAAAA+vr6+v8AJ/0BAAAA/Pz8/P8ALv0BAFX//wD/AP8ANP0BAFX//wD/AP8AO/0BAFX/7gDuAP8AQv0BAFX/zQDNAP8ASf0BAFX/iwCLAP8AUP0BADvQ/63/L/8AXP0BAAAAwMDAwP8AYf0BAAAAAAAAAP8AZ/0BAAAAAwMDA/8Abf0BAAAAGhoaGv8AdP0BAAAA//////8AfP0BAAAAHBwcHP8Ag/0BAAAAHx8fH/8Aiv0BAAAAISEhIf8Akf0BAAAAJCQkJP8AmP0BAAAAJiYmJv8An/0BAAAAKSkpKf8Apv0BAAAAKysrK/8Arf0BAAAALi4uLv8AtP0BAAAAMDAwMP8Au/0BAAAABQUFBf8Awf0BAAAAMzMzM/8AyP0BAAAANjY2Nv8Az/0BAAAAODg4OP8A1v0BAAAAOzs7O/8A3f0BAAAAPT09Pf8A5P0BAAAAQEBAQP8A6/0BAAAAQkJCQv8A8v0BAAAARUVFRf8A+f0BAAAAR0dHR/8AAP4BAAAASkpKSv8AB/4BAAAACAgICP8ADf4BAAAATU1NTf8AFP4BAAAAT09PT/8AG/4BAAAAUlJSUv8AIv4BAAAAVFRUVP8AKf4BAAAAV1dXV/8AMP4BAAAAWVlZWf8AN/4BAAAAXFxcXP8APv4BAAAAXl5eXv8ARf4BAAAAYWFhYf8ATP4BAAAAY2NjY/8AU/4BAAAACgoKCv8AWf4BAAAAZmZmZv8AYP4BAAAAaWlpaf8AZ/4BAAAAa2tra/8Abv4BAAAAbm5ubv8Adf4BAAAAcHBwcP8AfP4BAAAAc3Nzc/8Ag/4BAAAAdXV1df8Aiv4BAAAAeHh4eP8Akf4BAAAAenp6ev8AmP4BAAAAfX19ff8An/4BAAAADQ0NDf8Apf4BAAAAf39/f/8ArP4BAAAAgoKCgv8As/4BAAAAhYWFhf8Auv4BAAAAh4eHh/8Awf4BAAAAioqKiv8AyP4BAAAAjIyMjP8Az/4BAAAAj4+Pj/8A1v4BAAAAkZGRkf8A3f4BAAAAlJSUlP8A5P4BAAAAlpaWlv8A6/4BAAAADw8PD/8A8f4BAAAAmZmZmf8A+P4BAAAAnJycnP8A//4BAAAAnp6env8ABv8BAAAAoaGhof8ADf8BAAAAo6Ojo/8AFP8BAAAApqampv8AG/8BAAAAqKioqP8AIv8BAAAAq6urq/8AKf8BAAAAra2trf8AMP8BAAAAsLCwsP8AN/8BAAAAEhISEv8APf8BAAAAs7Ozs/8ARP8BAAAAtbW1tf8AS/8BAAAAuLi4uP8AUv8BAAAAurq6uv8AWf8BAAAAvb29vf8AYP8BAAAAv7+/v/8AZ/8BAAAAwsLCwv8Abv8BAAAAxMTExP8Adf8BAAAAx8fHx/8AfP8BAAAAycnJyf8Ag/8BAAAAFBQUFP8Aif8BAAAAzMzMzP8AkP8BAAAAz8/Pz/8Al/8BAAAA0dHR0f8Anv8BAAAA1NTU1P8Apf8BAAAA1tbW1v8ArP8BAAAA2dnZ2f8As/8BAAAA29vb2/8Auv8BAAAA3t7e3v8Awf8BAAAA4ODg4P8AyP8BAAAA4+Pj4/8Az/8BAAAAFxcXF/8A1f8BAAAA5eXl5f8A3P8BAAAA6Ojo6P8A4/8BAAAA6+vr6/8A6v8BAAAA7e3t7f8A8f8BAAAA8PDw8P8A+P8BAAAA8vLy8v8A//8BAAAA9fX19f8ABgACAAAA9/f39/8ADQACAAAA+vr6+v8AFAACAAAA/Pz8/P8AGwACAFUP//D/8P8AJAACAFUP//D/8P8ALgACAFUP7uDu4P8AOAACAFUOzcHNwf8AQgACAFUOi4OLg/8ATAACAOmW//9ptP8AVAACAOqR//9utP8AXQACAOuN7u5qp/8AZgACAOyHzc1gkP8AbwACAOqUi4s6Yv8AeAACAACMzc1cXP8AggACAACU//9qav8AjQACAACU7u5jY/8AmAACAACVzc1VVf8AowACAACUi4s6Ov8ArgACAML/gksAgv8AtQACACoA/////gAAuwACACoP////8P8AwQACACoP////8P8AyAACACoP7u7u4P8AzwACACoOzc3Nwf8A1gACACoOi4uLg/8A3QACACZq8PDmjP8A4wACACdw///2j/8A6gACACdw7u7mhf8A8QACACdvzc3Gc/8A+AACACdvi4uGTv8A/wACAKoU+ubm+v8ACAECAPAP///w9f8AFgECAPAP///w9f8AJQECAO8P7u7g5f8ANAECAPAOzc3Bxf8AQwECAO8Oi4uDhv8AUgECAED//Hz8AP8AXAECACYx///6zf8AaQECACYx///6zf8AdwECACUy7u7pv/8AhQECACYxzc3Jpf8AkwECACcxi4uJcP8AoQECAIk/5q3Y5v8AqwECAIpA/7/v//8AtgECAIpA7rLf7v8AwQECAIo/zZrAzf8AzAECAIlAi2iDi/8A1wECAAB38PCAgP8A4gECAH8f/+D///8A7AECAH8f/+D///8A9wECAH8f7tHu7v8AAgICAH8fzbTNzf8ADQICAH8fi3qLi/8AGAICACNz7u7dgv8AJwICACN0///si/8ANwICACNz7u7cgv8ARwICACNzzc2+cP8AVwICACNzi4uBTP8AZwICACoo+vr60v8AfAICAAAA09PT0/8AhgICAAAA09PT0/8AkAICAPhJ//+2wf8AmgICAPlR//+uuf8ApQICAPhR7u6irf8AsAICAPlQzc2Mlf8AuwICAPlQi4tfZf8AxgICAAyE//+gev8A0gICAAyE//+gev8A3wICAAuE7u6Vcv8A7AICAAyFzc2BYv8A+QICAAyFi4tXQv8ABgMCAH3RsiCyqv8AFAMCAI91+ofO+v8AIQMCAI9P/7Di//8ALwMCAI9P7qTT7v8APQMCAI5PzY22zf8ASwMCAI9Oi2B7i/8AWQMCAK+P/4Rw//8AaAMCAJQ4mXeImf8AdwMCAJQ4mXeImf8AhgMCAJc03rDE3v8AlQMCAJc1/8rh//8ApQMCAJc17rzS7v8AtQMCAJc1zaK1zf8AxQMCAJY1i257i/8A1QMCACof////4P8A4QMCACof////4P8A7gMCACof7u7u0f8A+wMCACofzc3NtP8ACAQCACofi4uLev8AFQQCAFXAzTLNMv8AHwQCABUU+vrw5v8AJQQCANT///8A//8ALQQCANT///8A//8ANgQCANT/7u4A7v8APwQCANT/zc0Azf8ASAQCANT/i4sAi/8AUQQCAO+5sLAwYP8AWAQCAOTL//80s/8AYAQCAOTL7u4wp/8AaAQCAOTMzc0pkP8AcAQCAOTLi4scYv8AeAQCAHGAzWbNqv8AiQQCAKr/zQAAzf8AlAQCAMyY07pV0/8AoQQCAMuZ/+Bm//8ArwQCAMuZ7tFf7v8AvQQCAMuZzbRSzf8AywQCAMuai3o3i/8A2QQCALd825Nw2/8A5gQCALd9/6uC//8A9AQCALd97p957v8AAgUCALd9zYlozf8AEAUCALd8i11Hi/8AHgUCAGepszyzcf8ALQUCALCP7nto7v8APQUCAG//+gD6mv8ATwUCAH2n0UjRzP8AXwUCAOTkx8cVhf8AbwUCAKrGcBkZcP8AfAUCAGoJ//X/+v8AhgUCAAQe///k4f8AkAUCAAQe///k4f8AmwUCAAQe7u7V0v8ApgUCAAMdzc23tf8AsQUCAAUdi4t9e/8AvAUCABpJ///ktf8AxQUCABlR///erf8A0QUCABlR///erf8A3gUCABlS7u7Pof8A6wUCABlSzc2zi/8A+AUCABlSi4t5Xv8ABQYCAKr/gAAAgP8ACgYCAKr/gAAAgP8AEwYCACoA/////gAAGAYCABsX/f315v8AIAYCADjAjmuOI/8AKgYCADjB/8D/Pv8ANQYCADjA7rPuOv8AQAYCADjAzZrNMv8ASwYCADjAi2mLIv8AVgYCABv///+lAP8AXQYCABv///+lAP8AZQYCABv/7u6aAP8AbQYCABv/zc2FAP8AdQYCABv/i4taAP8AfQYCAAv///9FAP8AhwYCAAv///9FAP8AkgYCAAv/7u5AAP8AnQYCAAv/zc03AP8AqAYCAAv/i4slAP8AswYCANZ72tpw1v8AugYCANZ8//+D+v8AwgYCANZ87u566f8AygYCANZ8zc1pyf8A0gYCANV8i4tHif8A2gYCACZI7u7oqv8A6AYCAFVk+5j7mP8A8gYCAFVl/5r/mv8A/QYCAFVk7pDukP8ACAcCAFVkzXzNfP8AEwcCAFVki1SLVP8AHgcCAH9D7q/u7v8ALAcCAH9E/7v///8AOwcCAH9E7q7u7v8ASgcCAH9EzZbNzf8AWQcCAH9Di2aLi/8AaAcCAPF829twk/8AdgcCAPF9//+Cq/8AhQcCAPF97u55n/8AlAcCAPF9zc1oif8AowcCAPF8i4tHXf8AsgcCABop///v1f8AvQcCABRG///auf8AxwcCABRG///auf8A0gcCABNF7u7Lrf8A3QcCABNFzc2vlf8A6AcCABRFi4t3Zf8A8wcCABSwzc2FP/8A+AcCAPc////Ay/8A/QcCAPVJ//+1xf8AAwgCAPVJ7u6puP8ACQgCAPVKzc2Rnv8ADwgCAPVJi4tjbP8AFQgCANRG3d2g3f8AGggCANRE//+7//8AIAgCANRE7u6u7v8AJggCANREzc2Wzf8ALAgCANRDi4tmi/8AMggCAIQ75rDg5v8APQgCAMTd8KAg8P8ARAgCAL/P/5sw//8ATAgCAMDP7pEs7v8AVAgCAMDPzX0mzf8AXAgCAMDPi1Uai/8AZAgCAAD///8AAP8AaAgCAAD///8AAP8AbQgCAAD/7u4AAP8AcggCAAD/zc0AAP8AdwgCAAD/i4sAAP8AfAgCAAA9vLyPj/8AhggCAAA+///Bwf8AkQgCAAA+7u60tP8AnAgCAAA+zc2bm/8ApwgCAAA+i4tpaf8AsggCAJ+14UFp4f8AvAgCAJ+3/0h2//8AxwgCAJ+37kNu7v8A0ggCAJ+2zTpfzf8A3QgCAJ+3iydAi/8A6AgCABHci4tFE/8A9AgCAASK+vqAcv8A+wgCAAmW//+Maf8AAwkCAAmW7u6CYv8ACwkCAAmWzc1wVP8AEwkCAAmWi4tMOf8AGwkCABOa9PSkYP8AJgkCAGeqiy6LV/8ALwkCAGer/1T/n/8AOQkCAGer7k7ulP8AQwkCAGerzUPNgP8ATQkCAGeqiy6LV/8AVwkCABEQ///17v8AYAkCABEQ///17v8AagkCABIR7u7l3v8AdAkCABIRzc3Fv/8AfgkCABIQi4uGgv8AiAkCAA23oKBSLf8AjwkCAA24//+CR/8AlwkCAA247u55Qv8AnwkCAA24zc1oOf8ApwkCAA25i4tHJv8ArwkCAIts64fO6/8AtwkCAJB4/4fO//8AwAkCAJB47n7A7v8AyQkCAJB4zWymzf8A0gkCAJF3i0pwi/8A2wkCAK+PzWpazf8A5QkCAK+Q/4Nv//8A8AkCAK+Q7npn7v8A+wkCAK+QzWlZzf8ABgoCAK+Qi0c8i/8AEQoCAJQ4kHCAkP8AGwoCAJU4/8bi//8AJgoCAJU47rnT7v8AMQoCAJQ5zZ+2zf8APAoCAJU4i2x7i/8ARwoCAJQ4kHCAkP8AUQoCAAAF///6+v8AVgoCAAAF///6+v8AXAoCAAAF7u7p6f8AYgoCAAAEzc3Jyf8AaAoCAAADi4uJif8AbgoCAGr//wD/f/8AegoCAGr//wD/f/8AhwoCAGr/7gDudv8AlAoCAGr/zQDNZv8AoQoCAGr/iwCLRf8ArgoCAJKbtEaCtP8AuAoCAJKc/2O4//8AwwoCAJKc7lys7v8AzgoCAJKczU+Uzf8A2QoCAJObizZki/8A5AoCABhU0tK0jP8A6AoCABSw//+lT/8A7QoCABSw7u6aSf8A8goCABSwzc2FP/8A9woCABSwi4taK/8A/AoCANQd2Ni/2P8ABAsCANQe///h//8ADQsCANQe7u7S7v8AFgsCANQdzc21zf8AHwsCANQdi4t7i/8AKAsCAAa4//9jR/8ALwsCAAa4//9jR/8ANwsCAAa47u5cQv8APwsCAAa4zc1POf8ARwsCAAa5i4s2Jv8AmQwCACoA/////gAATwsCAHu24EDg0P8AWQsCAIH//wD1//8AZAsCAIH/7gDl7v8AbwsCAIH/zQDFzf8AegsCAIH/iwCGi/8AhQsCANRz7u6C7v8AjAsCAOPX0NAgkP8AlgsCAOvB//8+lv8AoQsCAOvA7u46jP8ArAsCAOvAzc0yeP8AtwsCAOvAi4siUv8AwgsCABtE9fXes/8AyAsCABtF///nuv8AzwsCABtE7u7Yrv8A1gsCABtEzc26lv8A3QsCABtDi4t+Zv8A5AsCAAAA//////8A6gsCAAAA9fX19f8A9QsCACr/////AP8A/AsCACr/////AP8ABAwCACr/7u7uAP8ADAwCACr/zc3NAP8AFAwCACr/i4uLAP8AHAwCADjAzZrNMv8AkBACAHUgAgCsDAIArgwCALAMAgCyDAIAtAwCALYMAgC4DAIAugwCALwMAgC/DAIAwgwCAMUMAgDIDAIAywwCAM4MAgDRDAIA1AwCANcMAgDaDAIAAAAAAAQAAAAEAAAACwAAADYAAAAWAAAAAAAAAAAAAAAAAAAACAAAABAAAAAYAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAACAAAABAAAAAYAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAADcAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAvBkCAAkAAADCGQIACgAAAMsZAgALAAAADRoCAAwAAAATGgIADQAAABgaAgAOAAAAyxkCAA8AAACgGgIAEAAAAKcaAgARAAAArxoCABIAAAC2GgIAEwAAAMIaAgAUAAAADRoCABUAAADOGgIAFgAAANYaAgAXAAAA4BoCABgAAADuGgIAGQAAAPUaAgAaAAAA+hoCABsAAAD9GgIAHAAAAAIbAgAdAAAAChsCAB4AAAAQGwIAHwAAABYbAgAgAAAAHRsCACEAAAAjGwIAIQAAACsbAgAiAAAAMhsCACMAAADLGQIAJAAAAKcaAgARAAAArxoCABIAAAApHQIAJQAAALYaAgATAAAAwhoCABQAAAANGgIAFQAAADQdAgAmAAAA1hoCABcAAADgGgIAGAAAAO4aAgAZAAAA9RoCABoAAAD6GgIAGwAAAP0aAgAcAAAAPB0CACcAAAAKGwIAHgAAABAbAgAfAAAAFhsCACAAAAAdGwIAIQAAACMbAgAhAAAAKxsCACIAAAAyGwIAIwAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAoAAAAKQAAACAAAAAqAAAADAAAABkAAAAhAAAABAAAAAUAAAABAAAAAAAAAAAAAAAAAAAAABUKAAAJAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkWEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcFhwcHBwcHBwcHBwWHBocHBYcHBwcHBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWHBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////AAAAAAAAAAT+//+H/v//BwAAAAAAAAAA//9/////f//////////zf/79//////9///////////8P4P////8x/P///wAAAAAAAAD//////////////wEA+AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDX///7/////39/VP3/DwD+3////////////t//////AwD///////+fGf///88/AwAAAAAAAP7///9/Av7///9/AAAAAAAAAAAA////BwcAAAAAAP7//wf+BwAAAAD+//////////98/38vAGAAAADg////////IwAAAP8DAAAA4J/5///9xQMAAACwAwADAOCH+f///W0DAAAAXgAAHADgr/v///3tIwAAAAABAAAA4J/5///9zSMAAACwAwAAAODHPdYYx78DAAAAAAAAAADg3/3///3vAwAAAAADAAAA4N/9///97wMAAABAAwAAAODf/f///f8DAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAA/v////9/DQA/AAAAAAAAAJYl8P6ubA0gHwAAAAAAAAAAAAAAAAAAAP/+////AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////z8A/////38A7doHAAAAAFABUDGCq2IsAAAAAEAAyYD1BwAAAAAIAQL/////////////////////////D///////////////A///Pz//////Pz//qv///z/////////fX9wfzw//H9wfAAAAAEBMAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAACAAAAA/gMAAP7///////////8fAP7/////////////B+D/////HwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////8/AAAAAAAAAAAAAAD//////////////////////////w8AAAAAAAAAAAAAAAAAAAAAYP8H/v//h/7//wcAAAAAAACAAP//f////3//////AAAAAAAAAP//////////////AQD4AwADAAAAAAD//////////z8AAAADAAAAwNf///v/////f39U/f8PAP7f///////////+3/////97AP///////58Z////zz8DAAAAAAAA/v///38C/v///38A/v/7//+7FgD///8HBwAAAAAA/v//B///BwD/A////////////3z/f+///z3/A+7////////z/z8e/8//AADun/n///3F0585gLDP/wMA5If5///9bdOHOQBewP8fAO6v+////e3zvzsAAMH/AADun/n///3N8485wLDD/wAA7Mc91hjHv8PHPYAAgP8AAO7f/f///e/D3z1gAMP/AADs3/3///3vw989YEDD/wAA7N/9///9/8PPPYAAw/8AAAAAAAAAAAAAAAAAAAAAAAD+/////3//B/9//wMAAAAAliXw/q5s/ztfP/8DAAAAAAAAAAP/A6DC//7///8D/v/fD7/+/z/+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/HwIAAACgAAAA/v8+AP7///////////8fZv7/////////////dxkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAoAAAAKQAAACAAAAAqAAAADAAAABkAAAAhAAAABgAAAAcAAAABAAAAAQAAAAAAAAAAAAAAABUKAAAVAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkWEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBgYGBgYGBgYGBgYGBgYGBgcHBwcHAAAAAAAAAAAAAQErAAAALAAAAC0AAAAuAAAALwAAAC0AAAAwAAAAMQAAADIAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAKAAAACkAAAAgAAAAKgAAAAwAAAAZAAAAIQAAAAYAAAAHAAAAAQAAAAEAAAAAAAAAAAAAAAAVCgAACQAAAAAAAAAAAAAAAAAAAAAAABUQDBMcHgMNHyAhIiMbGhEZGRkZGRkZGRkZFhICDgsPHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWFBwEHBYcGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYcJBwcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQYGBgYGBgYGBgYGBgYGBgYHBwcHBwAAAAAAAAAAAAEBKwAAACwAAAAtAAAALgAAAC8AAAAtAAAAMAAAADEAAAAyAAAAmNwAAPjlAABw5AAAZOcAAGTnAADQ6AAAcOQAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAoAAAAKQAAACAAAAAqAAAADAAAABkAAAAhAAAACAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAABUKAAAJAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkWEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAMwAAADQAAAApAAAANQAAAA0AAAAaAAAAKgAAAAkAAAAKAAAAAgAAAAAAAAAAAAAAAAAAAAAVCgAACQAAAAAAAAAAAAAAAAAAAAAAABUQDBMcHgMNHyAhIiMbGhEZGRkZGRkZGRkZFhICDgsPHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWFBwEHBYcGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYcJBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBYcHBwcHBwcHBwcFhwaHBwWHBwcHBwWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhwWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWHBYWFhYWFhYWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMQAAADYAAAA3AAAAMgAAADgAAAAOAAAAGwAAADMAAAALAAAADAAAAAIAAAAAAQAAAAAAAAAAAAAAFQoAAAkAAAAAAAAAAAAAAAAAAAAAAAAVEAwTHB4DDR8gISIjGxoRGRkZGRkZGRkZGRYSAg4LDxwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhQcBBwWHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWHCQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwWHBwcHBwcHBwcHBYcGhwcFhwcHBwcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhwWFhYWFhYWFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP2BAQCoJwIAgYIBALEnAgC4JwIAwScCABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAoAAAAKQAAACAAAAAqAAAADAAAABkAAAAhAAAABgAAAAcAAAABAAAAAQAAAAAAAAAAAAAAABUKAAAVAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkXEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBgYGBgYGBgYGBgYGBgYGBgcHBwcHAAAAAAAAAAAAAQErAAAALAAAAC0AAAAuAAAALwAAAC0AAAAwAAAAMQAAADIAAADc6wAASO0AALTuAAAg8AAAIPAAAIzxAAC07gAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACgAAAApAAAAIAAAACoAAAAMAAAAGQAAACEAAAAEAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAFQoAAAkAAAAAAAAAAAAAAAAAAAAAAAAVEAwTHB4DDR8gISIjGxoRGRkZGRkZGRkZGRcSAg4LDxwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhQcBBwWHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWHCQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwWHBwcHBwcHBwcHBYcGhwcFhwcHBwcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhwWFhYWFhYWFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAoAAAAKQAAACAAAAAqAAAADAAAABkAAAAhAAAACAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAABUKAAAJAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkXEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAKAAAACkAAAAgAAAAKgAAAAwAAAAZAAAAIQAAAAYAAAAHAAAAAQAAAAEAAAAAAAAAAAAAAAAVCgAACQAAAAAAAAAAAAAAAAAAAAAAABUQDBMcHgMNHyAhIiMbGhEZGRkZGRkZGRkZFxICDgsPHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWFBwEHBYcGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYcJBwcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQYGBgYGBgYGBgYGBgYGBgYHBwcHBwAAAAAAAAAAAAEBKwAAACwAAAAtAAAALgAAAC8AAAAtAAAAMAAAADEAAAAyAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAADMAAAA0AAAAKQAAADUAAAANAAAAGgAAACoAAAAJAAAACgAAAAIAAAAAAAAAAAAAAAAAAAAAFQoAAAkAAAAAAAAAAAAAAAAAAAAAAAAVEAwTHB4DDR8gISIjGxoRGRkZGRkZGRkZGRcSAg4LDxwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhQcBBwWHBgYGBgYGBYWFhYWFhYWFhYWFhYWFhYWFhYWHCQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwWHBwcHBwcHBwcHBYcGhwcFhwcHBwcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhwWFhYWFhYWFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAA2AAAANwAAADIAAAA4AAAADgAAABsAAAAzAAAACwAAAAwAAAACAAAAAAEAAAAAAAAAAAAAABUKAAAJAAAAAAAAAAAAAAAAAAAAAAAAFRAMExweAw0fICEiIxsaERkZGRkZGRkZGRkXEgIOCw8cGBgYGBgYFhYWFhYWFhYWFhYWFhYWFhYWFhYUHAQcFhwYGBgYGBgWFhYWFhYWFhYWFhYWFhYWFhYWFhwkHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcFhwcHBwcHBwcHBwWHBocHBYcHBwcHBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWHBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYcFhYWFhYWFhYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTKAIAWSgCAFwoAgBiKAIA/CcCAGkoAgByKAIAeigCADTzAAAUAAAAQy5VVEYtOAAAAAAAAAAAAAAAAADeEgSVAAAAAP///////////////wIAAMADAADABAAAwAUAAMAGAADABwAAwAgAAMAJAADACgAAwAsAAMAMAADADQAAwA4AAMAPAADAEAAAwBEAAMASAADAEwAAwBQAAMAVAADAFgAAwBcAAMAYAADAGQAAwBoAAMAbAADAHAAAwB0AAMAeAADAHwAAwAAAALMBAADDAgAAwwMAAMMEAADDBQAAwwYAAMMHAADDCAAAwwkAAMMKAADDCwAAwwwAAMMNAADTDgAAww8AAMMAAAy7AQAMwwIADMMDAAzDBAAM0xj0AAAJAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAEAAAAPTtAgAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmPQAAAUAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAQAAAA/PECAAAEAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAr/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACY9AAAHPUAAAUAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAQAAAABPYCAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAP//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJDcAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAQAAAAEAAAABgAAAIP5ogBETm4A/CkVANFXJwDdNPUAYtvAADyZlQBBkEMAY1H+ALveqwC3YcUAOm4kANJNQgBJBuAACeouAByS0QDrHf4AKbEcAOg+pwD1NYIARLsuAJzphAC0JnAAQX5fANaROQBTgzkAnPQ5AItfhAAo+b0A+B87AN7/lwAPmAUAES/vAApaiwBtH20Az342AAnLJwBGT7cAnmY/AC3qXwC6J3UA5evHAD178QD3OQcAklKKAPtr6gAfsV8ACF2NADADVgB7/EYA8KtrACC8zwA29JoA46kdAF5hkQAIG+YAhZllAKAUXwCNQGgAgNj/ACdzTQAGBjEAylYVAMmocwB74mAAa4zAACAAAAAJAAAACgAAAA0AAAALAAAADAAAAIUAAAAAIAAAASAAAAIgAAADIAAABCAAAAUgAAAGIAAACCAAAAkgAAAKIAAAKCAAACkgAABfIAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QVfcIkA/wkvD3QAAADzSwIAbgAAAPVLAgByAAAA90sCAGYAAAD5SwIAYQAAAPtLAgBlAAAA/UsCAHcAAAD/SwIAVwAAAAxMAgBzAAAAGkwCAFMAAAAmTAIAZAAAADNMAgBEAAAAP0wCAAAAAAAAAAAAAAAAAAAABAAEABsAGwAgACAAIwAhAAoAAgAWAAkAIQAhACEAFQAcAAEAFAAUABQAFAAUABQAFAAIAAQABQAbAAIAFwAbACAAHwAeAB0ACQATAAAAFQASABUAAwAHABUAFQAUABQAFAAUABQAFAAUABQACAAEAAUABQAGABsAGgAYABkAIAAHABUAFAAUABQAFAAUABQACwAUAA0AFAAMABQAFAAUAA4AFAAUABQAEAAUAA8AFAARAAAAAAAAAK4ALgAvADMANQAwADcAqgDbANsA2wDbAAAAPQCHADcANwDbANsAAAAoADUALgAyAC8AYgAAAAAARwAAAAAA2wBRAAAA2wDbANsAAADbAIQAVQDbAIIA2wAAAIEA2wAAAD4AQgBBAEgARABSAFsAAAAAAF4AXwDbAAAA2wDbANsAAAAAAHsASQBXAFIAWgBaAF0AAABfAAAAXwAAAGUAXQBfAAAAXQBuAGoAAABpAAAAbgAAANsAkwCaAKEAqACrAHAAsQC4AL8AxgDNANMAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADAAQABwADAAQABQAFAAYABgAIAAcABwARABYAEgARABIACAAIAA8ADwAXAA8AGAAPABkAGgAaAB4AFgA0AB4ABQAyAAYAIgAiADMAFwAYADUAGQAaABoAKgA2ACoANAA3ADIARQA7ADwAMwA7ADwARgA1AEcASABMADYAIgBJAEoANwBFAE4AUABiAFEAUgBUAEYARwBVAEgATABWAEkASgBYAFoATgBEAFAAUQBSAFQAOAAvACwAVQApAFYAGwAQAFgAWgBdAF0AXQBdAF0AXQBdAF4AXgBeAF4AXgBeAF4AXwBfAF8AXwBfAF8AXwBgAAkAYABgAGAAYABgAGEAYQBjAAIAYwBjAGMAYwBjAGQAAABkAAAAZABkAGQAZQAAAGUAZQBlAGUAZQBmAGYAAABmAGYAZgBmAGcAAABnAGcAZwBnAGgAAABoAGgAaABoAGgAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAAAFwAAQBdAF0AXgBeAF8AXwBcAFwAXABcAFwAYABcAFwAXABhAFwAXABiAGIAYgBiAGIAYgBiAGMAZABlAGYAZgBcAFwAZwBcAFwAXABgAFwAXABhAFwAYQBcAGgAYQBcAGIAYgBiAGIAYgBiAGIAYgBjAGQAZQBlAFwAZgBcAFwAXABnAGgAYQBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAAABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAAAAoACwAMAA0ADgAKAA8AEAARABIAEwAKABQAFQAVABUAFgAXABUAGAAVABUAGQAVABUAFQAaABUAFQAKABUAFQAVABYAFwAYABUAFQAZABUAFQAVABoAFQAVABUAFQAbAAwADAAkAB4AHgAgACEAIAAhACQAJQAmAC0AMgAvAC4AKgAlACYAKAApADMAKgA0ACsANQA2ADcAPAAyAEcAPQAiAEUAIgA/AEAARgAzADQASAA1ADYANwAvAEkAKgBHAEoARQBMAFwAPABGAFwAPQBNAEgATgBPAFIASQBBAFAAUQBKAEwAUwBUADEAVQBWAFcATQBOAFgATwBSAFkAUABRAFoAWwBTAEQAVABVAFYAVwBLAEQALABYACwAWQA4ACwAWgBbAB0AHQAdAB0AHQAdAB0AHwAfAB8AHwAfAB8AHwAjACMAIwAjACMAIwAjACcAXAAnACcAJwAnACcAMAAwADkAHAA5ADkAOQA5ADkAOgBcADoAXAA6ADoAOgA7AFwAOwA7ADsAOwA7AD4APgBcAD4APgA+AD4AQgBcAEIAQgBCAEIAQwBcAEMAQwBDAEMAQwAJAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAAgArv/RAAoArv+u/wsArv+u/67/rv+u/67/rv+u/wUA0QCu/9EA0QDRANEA0QDRANEA0QCu//v/rv8OAOz/rv+u/67/rv/RANEA0QDRANEADQAlAAwAQgAQAFAAEwBtAHsAFACYAA8ApgDDAK7/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/xcArv93AK7/BwAuAK7/JgCu/xcAEQAjAK7/DQCu/67/rv+u/zoArv+u/zUArv+u/67/KACu/wcArv87AEUArv9IAK7/rv+u/67/rv+u/67//P/oAPb///8aAAAAJwABADIArv+u/wIAJAADAC8Arv+u/67/rv+u//7/lACu/wkAGwCu/7z/rv+u/6//rv+u/67/rv+u/67/rv8AAAAAAABt5uzeBQALAEkAMQFTAH8BMAFpAHgB/wCBAVMCggGDAYQBhQGGAVQChwGIAYkBVgKKAVcCiwGMAY4B3QGPAVkCkAFbApEBkgGTAWAClAFjApYBaQKXAWgCmAGZAZwBbwKdAXICnwF1AqYBgAKnAagBqQGDAqwBrQGuAYgCrwGwAbEBigKyAYsCtwGSArgBuQG8Ab0BxAHGAcQBxQHFAcYBxwHJAccByAHIAckBygHMAcoBywHLAcwB8QHzAfEB8gHyAfMB9AH1AfYBlQH3Ab8BIAKeAYYDrAOIA60DiQOuA4oDrwOMA8wDjgPNA48DzgOZA0UDmQO+H6MDwgP3A/gD+gP7A2Aemx6eHt8AWR9RH1sfUx9dH1UfXx9XH7wfsx/MH8Mf7B/lH/wf8x86AmUsOwI8Aj0CmgE+AmYsQQJCAkMCgAFEAokCRQKMAvQDuAP5A/ID/QN7A/4DfAP/A30DwATPBCYhyQMqIWsAKyHlADIhTiGDIYQhYCxhLGIsawJjLH0dZCx9Am0sUQJuLHECbyxQAnAsUgJyLHMsdSx2LH4sPwJ/LEAC8izzLH2neR2Lp4ynjadlAqqnZgLHECctzRAtLXYDdwOcA7UAkgPQA5gD0QOmA9UDoAPWA5oD8AOhA/EDlQP1A88D1wMAAAAAQQAgGsAAIB8AAQEvMgEBBTkBAQ9KAQEteQEBBXADAQORAyARowMgCQAEUBAQBCAgYAQBIYoEATXBBAEN0AQBPxQFARMxBTAmoAEBBbMBAQPNAQEP3gEBEfgBASciAgER2AMBFwAeAZWgHgFfCB/4CBgf+AYoH/gIOB/4CEgf+AZoH/gIiB/4CJgf+AioH/gIuB/4AroftgLIH6oE2B/4AtofnALoH/gC6h+QAvgfgAL6H4ICRgIBCRAFAQNgIRAQACwwL2csAQWALAFj6ywBA0CmAS2ApgEXIqcBDTKnAT15pwEDfqcBCZCnAQOgpwEJIf8gGgAAAAB7IHZhciBwYXRoID0gUG9pbnRlcl9zdHJpbmdpZnkoJDApOyB2YXIgZGF0YSA9IFBvaW50ZXJfc3RyaW5naWZ5KCQxKTsgRlMuY3JlYXRlUGF0aCgiLyIsIFBBVEguZGlybmFtZShwYXRoKSk7IEZTLndyaXRlRmlsZShQQVRILmpvaW4oIi8iLCBwYXRoKSwgZGF0YSk7IH0AY29yZQB4ZG90dmVyc2lvbgAxLjcAMS40ADEuMgBfbGRyYXdfAF9oZHJhd18AX3RkcmF3XwBfaGxkcmF3XwBfdGxkcmF3XwB4ZG90IHZlcnNpb24gIiVzIiB0b28gbG9uZwAgJWQgACUuMDJmACVzJWQgLQAjJTAyeCUwMnglMDJ4JTAyeABzZXRsaW5ld2lkdGgoACUuM2YAUyAAQyAAMiAARSAAZSAARiAAdCAldSAAVCAAZG90OmRvdABndjpkb3QAY2Fub246ZG90AHBsYWluOmRvdABwbGFpbi1leHQ6ZG90AHhkb3Q6eGRvdAB4ZG90MS4yOnhkb3QAeGRvdDEuNDp4ZG90AEkgACJfc3ViZ3JhcGhfY250IjogJWQAIl9ndmlkIjogJWQAImVkZ2VzIjogWwoAIl9ndmlkIjogJWQsCgAidGFpbCI6ICVkLAoAImhlYWQiOiAlZAAib2JqZWN0cyI6IFsKACJub2RlcyI6IFsKACJuYW1lIjogIiVzIgBcIgBcLwBcYgBcZgBcbgBccgBcdAAic3ViZ3JhcGhzIjogWwoAIiVzIjogACIlcyIAQ291bGQgbm90IHBhcnNlIHhkb3QgIiVzIgoAWwoAIm9wIjogIiVjIiwKACJyZWN0IjogWyUuMDNmLCUuMDNmLCUuMDNmLCUuMDNmXQoAIm9wIjogIkwiLAoAIm9wIjogIlQiLAoAInB0IjogWyUuMDNmLCUuMDNmXSwKACJhbGlnbiI6ICIlYyIsCgAid2lkdGgiOiAlLjAzZiwKACJ0ZXh0IjogIiVzIgoAImdyYWQiOiAibm9uZSIsCgAiY29sb3IiOiAiJXMiCgAiZ3JhZCI6ICJsaW5lYXIiLAoAImdyYWQiOiAicmFkaWFsIiwKACJvcCI6ICJGIiwKACJzaXplIjogJS4wM2YsCgAiZmFjZSI6ICIlcyIKACJvcCI6ICJTIiwKACJzdHlsZSI6ICIlcyIKACJvcCI6ICJ0IiwKACJmb250Y2hhciI6ICVkCgAicDAiOiBbJS4wM2YsJS4wM2YsJS4wM2ZdLAoAInAxIjogWyUuMDNmLCUuMDNmLCUuMDNmXSwKACJzdG9wcyI6IFsAeyJmcmFjIjogJS4wM2YsICJjb2xvciI6ICIlcyJ9AF0KACJwMCI6IFslLjAzZiwlLjAzZl0sCgAicDEiOiBbJS4wM2YsJS4wM2ZdLAoAInBvaW50cyI6IFsAWyUuMDNmLCUuMDNmXQBkcmF3XwBsZHJhd18AaGRyYXdfAHRkcmF3XwBobGRyYXdfAHRsZHJhd18AImRpcmVjdGVkIjogJXMsCgAic3RyaWN0IjogJXMARHVwbGljYXRlIGNsdXN0ZXIgbmFtZSAiJXMiCgB4ZG90AGpzb24AanNvbjAAZG90X2pzb24AeGRvdF9qc29uAGpzb246anNvbgBqc29uMDpqc29uAGRvdF9qc29uOmpzb24AeGRvdF9qc29uOmpzb24AbiA+PSA0AGd2cmVuZGVyX2NvcmVfZmlnLmMAZmlnX2JlemllcgBmaWdfcmVzb2x2ZV9jb2xvcgBmaWcAZmlnOmZpZwBtYXAAcmVjdCAlcyAlZCwlZCAlZCwlZAoAY2lyY2xlICVzICVkLCVkLCVkCgBwb2x5ICVzACAlZCwlZABndnJlbmRlcl9jb3JlX21hcC5jAG1hcF9vdXRwdXRfc2hhcGUAcmVjdGFuZ2xlICglZCwlZCkgKCVkLCVkKSAlcyAlcwoAPGFyZWEgc2hhcGU9ImNpcmNsZSIAPGFyZWEgc2hhcGU9InJlY3QiADxhcmVhIHNoYXBlPSJwb2x5IgAgaHJlZj0iACB0aXRsZT0iACBhbHQ9IiIAIGNvb3Jkcz0iACVkLCVkLCVkACVkLCVkLCVkLCVkACVkLCVkACwlZCwlZAAiPgoAPC9tYXA+CgBiYXNlIHJlZmVyZXIKAGRlZmF1bHQgADxtYXAgaWQ9IgAiIG5hbWU9IgBpc21hcDptYXAAY21hcDptYXAAaW1hcDptYXAAY21hcHg6bWFwAGltYXBfbnA6bWFwAGNtYXB4X25wOm1hcAAjICVzCgAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlLjFmICVkICVkICVkICVkICVkICVkCgAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlLjFmICVkICVkICVkICVkCgAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlLjNmICVkICUuNGYgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQKACVkICVkICMlMDJ4JTAyeCUwMngKAGd2cmVuZGVyX2NvcmVfbXAuYwBtcF9yZXNvbHZlX2NvbG9yACVkICVkICVkICVkICVkICVkICUuMWYgJS40ZiAlZCAlLjFmICUuMWYgJWQgJWQgJXNcMDAxCgAjIGVuZCBvZiBGSUcgZmlsZQoAI0ZJRyAzLjIKACMgR2VuZXJhdGVkIGJ5ICVzIHZlcnNpb24gJXMgKCVzKQoAIyBUaXRsZTogJXMKACMgUGFnZXM6ICVkCgBQb3J0cmFpdAoAQ2VudGVyCgBJbmNoZXMKAExldHRlcgoAMTAwLjAwCgBTaW5nbGUKAC0yCgAxMjAwACAyCgBtcABtcDptcAAgXSAgJWQgdHJ1ZSAlcwoAIF0gICVkIGZhbHNlICVzCgAgc2V0bGluZXdpZHRoCgAlcyAAc2V0aHNiACUuNWcgJS41ZyAlLjVnICVzY29sb3IKACUgAG5ld3BhdGggACBtb3ZldG8KACBsaW5ldG8KAHN0cm9rZQoAIGN1cnZldG8KAGNsb3NlcGF0aCBmaWxsCgBjbG9zZXBhdGggc3Ryb2tlCgAgZWxsaXBzZV9wYXRoIGZpbGwKACBlbGxpcHNlX3BhdGggc3Ryb2tlCgAgLyVzIHNldF9mb250CgAgbW92ZXRvIAAgJXMgYWxpZ25lZHRleHQKAFsgL1JlY3QgWyAAIF0KACAgL0JvcmRlciBbIDAgMCAwIF0KICAvQWN0aW9uIDw8IC9TdWJ0eXBlIC9VUkkgL1VSSSAlcyA+PgogIC9TdWJ0eXBlIC9MaW5rCi9BTk4gcGRmbWFyawoAZ3NhdmUKACUlICVzCgAwIDAgMCBlZGdlY29sb3IKAGVuZHBhZ2UKc2hvd3BhZ2UKZ3Jlc3RvcmUKACUlUGFnZVRyYWlsZXIKACUlJSVFbmRQYWdlOiAlZAoAJSUlJVBhZ2U6ICVkICVkCgAlJSUlUGFnZUJvdW5kaW5nQm94OiAlZCAlZCAlZCAlZAoATGFuZHNjYXBlAFBvcnRyYWl0ACUlJSVQYWdlT3JpZW50YXRpb246ICVzCgA8PCAvUGFnZVNpemUgWyVkICVkXSA+PiBzZXRwYWdlZGV2aWNlCgAlZCAlZCAlZCBiZWdpbnBhZ2UKAGdzYXZlCiVkICVkICVkICVkIGJveHByaW0gY2xpcCBuZXdwYXRoCgAlZyAlZyBzZXRfc2NhbGUgJWQgcm90YXRlICVnICVnIHRyYW5zbGF0ZQoAY2FudmFzIHNpemUgKCVkLCVkKSBleGNlZWRzIFBERiBsaW1pdCAoJWQpCgkoc3VnZ2VzdCBzZXR0aW5nIGEgYm91bmRpbmcgYm94IHNpemUsIHNlZSBkb3QoMSkpCgBbIC9Dcm9wQm94IFslZCAlZCAlZCAlZF0gL1BBR0VTIHBkZm1hcmsKACVkICVkIHNldGxheWVyCgAlJSUlVGl0bGU6ICVzCgAlJVBhZ2VzOiAoYXRlbmQpCgAlJVBhZ2VzOiAxCgAlJUJvdW5kaW5nQm94OiAoYXRlbmQpCgAlJSUlQm91bmRpbmdCb3g6ICVkICVkICVkICVkCgAlJUVuZENvbW1lbnRzCnNhdmUKAHNldHVwTGF0aW4xCgBbIHtDYXRhbG9nfSA8PCAvVVJJIDw8IC9CYXNlICVzID4+ID4+Ci9QVVQgcGRmbWFyawoAJSVCZWdpblByb2xvZwAvRG90RGljdCAyMDAgZGljdCBkZWYARG90RGljdCBiZWdpbgAvc2V0dXBMYXRpbjEgewBtYXJrAC9FbmNvZGluZ1ZlY3RvciAyNTYgYXJyYXkgZGVmACBFbmNvZGluZ1ZlY3RvciAwAElTT0xhdGluMUVuY29kaW5nIDAgMjU1IGdldGludGVydmFsIHB1dGludGVydmFsAEVuY29kaW5nVmVjdG9yIDQ1IC9oeXBoZW4gcHV0ACUgU2V0IHVwIElTTyBMYXRpbiAxIGNoYXJhY3RlciBlbmNvZGluZwAvc3Rhcm5ldElTTyB7ACAgICAgICAgZHVwIGR1cCBmaW5kZm9udCBkdXAgbGVuZ3RoIGRpY3QgYmVnaW4AICAgICAgICB7IDEgaW5kZXggL0ZJRCBuZSB7IGRlZiB9eyBwb3AgcG9wIH0gaWZlbHNlACAgICAgICAgfSBmb3JhbGwAICAgICAgICAvRW5jb2RpbmcgRW5jb2RpbmdWZWN0b3IgZGVmACAgICAgICAgY3VycmVudGRpY3QgZW5kIGRlZmluZWZvbnQAfSBkZWYAL1RpbWVzLVJvbWFuIHN0YXJuZXRJU08gZGVmAC9UaW1lcy1JdGFsaWMgc3Rhcm5ldElTTyBkZWYAL1RpbWVzLUJvbGQgc3Rhcm5ldElTTyBkZWYAL1RpbWVzLUJvbGRJdGFsaWMgc3Rhcm5ldElTTyBkZWYAL0hlbHZldGljYSBzdGFybmV0SVNPIGRlZgAvSGVsdmV0aWNhLU9ibGlxdWUgc3Rhcm5ldElTTyBkZWYAL0hlbHZldGljYS1Cb2xkIHN0YXJuZXRJU08gZGVmAC9IZWx2ZXRpY2EtQm9sZE9ibGlxdWUgc3Rhcm5ldElTTyBkZWYAL0NvdXJpZXIgc3Rhcm5ldElTTyBkZWYAL0NvdXJpZXItT2JsaXF1ZSBzdGFybmV0SVNPIGRlZgAvQ291cmllci1Cb2xkIHN0YXJuZXRJU08gZGVmAC9Db3VyaWVyLUJvbGRPYmxpcXVlIHN0YXJuZXRJU08gZGVmAGNsZWFydG9tYXJrAH0gYmluZCBkZWYAJSVCZWdpblJlc291cmNlOiBwcm9jc2V0IGdyYXBodml6IDAgMAAvY29vcmQtZm9udC1mYW1pbHkgL1RpbWVzLVJvbWFuIGRlZgAvZGVmYXVsdC1mb250LWZhbWlseSAvVGltZXMtUm9tYW4gZGVmAC9jb29yZGZvbnQgY29vcmQtZm9udC1mYW1pbHkgZmluZGZvbnQgOCBzY2FsZWZvbnQgZGVmAC9JbnZTY2FsZUZhY3RvciAxLjAgZGVmAC9zZXRfc2NhbGUgewAgICAgICAgZHVwIDEgZXhjaCBkaXYgL0ludlNjYWxlRmFjdG9yIGV4Y2ggZGVmACAgICAgICBzY2FsZQAlIHN0eWxlcwAvc29saWQgeyBbXSAwIHNldGRhc2ggfSBiaW5kIGRlZgAvZGFzaGVkIHsgWzkgSW52U2NhbGVGYWN0b3IgbXVsIGR1cCBdIDAgc2V0ZGFzaCB9IGJpbmQgZGVmAC9kb3R0ZWQgeyBbMSBJbnZTY2FsZUZhY3RvciBtdWwgNiBJbnZTY2FsZUZhY3RvciBtdWxdIDAgc2V0ZGFzaCB9IGJpbmQgZGVmAC9pbnZpcyB7L2ZpbGwge25ld3BhdGh9IGRlZiAvc3Ryb2tlIHtuZXdwYXRofSBkZWYgL3Nob3cge3BvcCBuZXdwYXRofSBkZWZ9IGJpbmQgZGVmAC9ib2xkIHsgMiBzZXRsaW5ld2lkdGggfSBiaW5kIGRlZgAvZmlsbGVkIHsgfSBiaW5kIGRlZgAvdW5maWxsZWQgeyB9IGJpbmQgZGVmAC9yb3VuZGVkIHsgfSBiaW5kIGRlZgAvZGlhZ29uYWxzIHsgfSBiaW5kIGRlZgAvdGFwZXJlZCB7IH0gYmluZCBkZWYAJSBob29rcyBmb3Igc2V0dGluZyBjb2xvciAAL25vZGVjb2xvciB7IHNldGhzYmNvbG9yIH0gYmluZCBkZWYAL2VkZ2Vjb2xvciB7IHNldGhzYmNvbG9yIH0gYmluZCBkZWYAL2dyYXBoY29sb3IgeyBzZXRoc2Jjb2xvciB9IGJpbmQgZGVmAC9ub3Bjb2xvciB7cG9wIHBvcCBwb3B9IGJpbmQgZGVmAC9iZWdpbnBhZ2UgewklIGkgaiBucGFnZXMACS9ucGFnZXMgZXhjaCBkZWYACS9qIGV4Y2ggZGVmAAkvaSBleGNoIGRlZgAJL3N0ciAxMCBzdHJpbmcgZGVmAAlucGFnZXMgMSBndCB7AAkJZ3NhdmUACQkJY29vcmRmb250IHNldGZvbnQACQkJMCAwIG1vdmV0bwAJCQkoXCgpIHNob3cgaSBzdHIgY3ZzIHNob3cgKCwpIHNob3cgaiBzdHIgY3ZzIHNob3cgKFwpKSBzaG93AAkJZ3Jlc3RvcmUACX0gaWYAL3NldF9mb250IHsACWZpbmRmb250IGV4Y2gACXNjYWxlZm9udCBzZXRmb250ACUgZHJhdyB0ZXh0IGZpdHRlZCB0byBpdHMgZXhwZWN0ZWQgd2lkdGgAL2FsaWduZWR0ZXh0IHsJCQklIHdpZHRoIHRleHQACS90ZXh0IGV4Y2ggZGVmAAkvd2lkdGggZXhjaCBkZWYACWdzYXZlAAkJd2lkdGggMCBndCB7AAkJCVtdIDAgc2V0ZGFzaAAJCQl0ZXh0IHN0cmluZ3dpZHRoIHBvcCB3aWR0aCBleGNoIHN1YiB0ZXh0IGxlbmd0aCBkaXYgMCB0ZXh0IGFzaG93AAkJfSBpZgAJZ3Jlc3RvcmUAL2JveHByaW0gewkJCQklIHhjb3JuZXIgeWNvcm5lciB4c2l6ZSB5c2l6ZQAJCTQgMiByb2xsAAkJbW92ZXRvAAkJMiBjb3B5AAkJZXhjaCAwIHJsaW5ldG8ACQkwIGV4Y2ggcmxpbmV0bwAJCXBvcCBuZWcgMCBybGluZXRvAAkJY2xvc2VwYXRoAC9lbGxpcHNlX3BhdGggewAJL3J5IGV4Y2ggZGVmAAkvcnggZXhjaCBkZWYACS95IGV4Y2ggZGVmAAkveCBleGNoIGRlZgAJbWF0cml4IGN1cnJlbnRtYXRyaXgACW5ld3BhdGgACXggeSB0cmFuc2xhdGUACXJ4IHJ5IHNjYWxlAAkwIDAgMSAwIDM2MCBhcmMACXNldG1hdHJpeAAvZW5kcGFnZSB7IHNob3dwYWdlIH0gYmluZCBkZWYAL3Nob3dwYWdlIHsgfSBkZWYAL2xheWVyY29sb3JzZXEACVsJJSBsYXllciBjb2xvciBzZXF1ZW5jZSAtIGRhcmtlc3QgdG8gbGlnaHRlc3QACQlbMCAwIDBdAAkJWy4yIC44IC44XQAJCVsuNCAuOCAuOF0ACQlbLjYgLjggLjhdAAkJWy44IC44IC44XQAJXQBkZWYAL2xheWVybGVuIGxheWVyY29sb3JzZXEgbGVuZ3RoIGRlZgAvc2V0bGF5ZXIgey9tYXhsYXllciBleGNoIGRlZiAvY3VybGF5ZXIgZXhjaCBkZWYACWxheWVyY29sb3JzZXEgY3VybGF5ZXIgMSBzdWIgbGF5ZXJsZW4gbW9kIGdldAAJYWxvYWQgcG9wIHNldGhzYmNvbG9yAAkvbm9kZWNvbG9yIHtub3Bjb2xvcn0gZGVmAAkvZWRnZWNvbG9yIHtub3Bjb2xvcn0gZGVmAAkvZ3JhcGhjb2xvciB7bm9wY29sb3J9IGRlZgAvb25sYXllciB7IGN1cmxheWVyIG5lIHtpbnZpc30gaWYgfSBkZWYAL29ubGF5ZXJzIHsACS9teXVwcGVyIGV4Y2ggZGVmAAkvbXlsb3dlciBleGNoIGRlZgAJY3VybGF5ZXIgbXlsb3dlciBsdAAJY3VybGF5ZXIgbXl1cHBlciBndAAJb3IACXtpbnZpc30gaWYAL2N1cmxheWVyIDAgZGVmACUlRW5kUmVzb3VyY2UAJSVFbmRQcm9sb2cAJSVCZWdpblNldHVwADE0IGRlZmF1bHQtZm9udC1mYW1pbHkgc2V0X2ZvbnQAJSAvYXJyb3dsZW5ndGggMTAgZGVmACUgL2Fycm93d2lkdGggNSBkZWYAJSBtYWtlIHN1cmUgcGRmbWFyayBpcyBoYXJtbGVzcyBmb3IgUFMtaW50ZXJwcmV0ZXJzIG90aGVyIHRoYW4gRGlzdGlsbGVyAC9wZGZtYXJrIHdoZXJlIHtwb3B9IHt1c2VyZGljdCAvcGRmbWFyayAvY2xlYXJ0b21hcmsgbG9hZCBwdXR9IGlmZWxzZQAlIG1ha2UgJzw8JyBhbmQgJz4+JyBzYWZlIG9uIFBTIExldmVsIDEgZGV2aWNlcwAvbGFuZ3VhZ2VsZXZlbCB3aGVyZSB7cG9wIGxhbmd1YWdlbGV2ZWx9ezF9IGlmZWxzZQAyIGx0IHsAICAgIHVzZXJkaWN0ICg8PCkgY3ZuIChbKSBjdm4gbG9hZCBwdXQAICAgIHVzZXJkaWN0ICg+PikgY3ZuIChbKSBjdm4gbG9hZCBwdXQAfSBpZgAlJUVuZFNldHVwACUlVHJhaWxlcgoAJSUlJVBhZ2VzOiAlZAoAZW5kCnJlc3RvcmUKACUlRU9GCgAlIVBTLUFkb2JlLTMuMAAgRVBTRi0zLjAKACUlJSVDcmVhdG9yOiAlcyB2ZXJzaW9uICVzICglcykKAHBzMjpwcwA8IS0tIAA8cG9seWxpbmUAIHBvaW50cz0iACIvPgoAIGZpbGw9IgB1cmwoI2xfJWQpAHVybCgjcl8lZCkAIiBmaWxsLW9wYWNpdHk9IiVmACIgc3Ryb2tlPSIAIiBzdHJva2Utd2lkdGg9IgAiIHN0cm9rZS1kYXNoYXJyYXk9IiVzADUsMgAxLDUAIiBzdHJva2Utb3BhY2l0eT0iJWYAZ3ZyZW5kZXJfY29yZV9zdmcuYwBzdmdfcHJpbnRfY29sb3IAPHBhdGgAIGlkPSIAX3AiIAAgZD0iACVjADxkZWZzPgo8cmFkaWFsR3JhZGllbnQgaWQ9InJfJWQiIGN4PSI1MCUlIiBjeT0iNTAlJSIgcj0iNzUlJSIgZng9IiVkJSUiIGZ5PSIlZCUlIj4KADxzdG9wIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6ADtzdG9wLW9wYWNpdHk6ADEuADsiLz4KADxzdG9wIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6ADsiLz4KPC9yYWRpYWxHcmFkaWVudD4KPC9kZWZzPgoAPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0ibF8lZCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIAB4MT0iACIgeTE9IgAiIHgyPSIAIiB5Mj0iACIgPgoAPHN0b3Agb2Zmc2V0PSIlLjAzZiIgc3R5bGU9InN0b3AtY29sb3I6ADsiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgoAPHBvbHlnb24APGVsbGlwc2UAIGN4PSIAIiBjeT0iACIgcng9IgAiIHJ5PSIAPHRleHQAIHRleHQtYW5jaG9yPSJzdGFydCIAIHRleHQtYW5jaG9yPSJlbmQiACB0ZXh0LWFuY2hvcj0ibWlkZGxlIgAgeD0iACIgeT0iACBmb250LWZhbWlseT0iJXMALCVzACBmb250LXdlaWdodD0iJXMiACBmb250LXN0cmV0Y2g9IiVzIgAgZm9udC1zdHlsZT0iJXMiACBmb250LWZhbWlseT0iJXMiACBmb250LXdlaWdodD0iYm9sZCIAIGZvbnQtc3R5bGU9Iml0YWxpYyIAIHRleHQtZGVjb3JhdGlvbj0iACVzb3ZlcmxpbmUAJXNsaW5lLXRocm91Z2gAIGJhc2VsaW5lLXNoaWZ0PSJzdXBlciIAIGJhc2VsaW5lLXNoaWZ0PSJzdWIiACBmb250LXNpemU9IiUuMmYiACBmaWxsPSIlcyIAIGZpbGw9IiMlMDJ4JTAyeCUwMngiAHN2Z190ZXh0c3BhbgA+ADx0ZXh0UGF0aCB4bGluazpocmVmPSIjJXNfcCIgc3RhcnRPZmZzZXQ9IjUwJSUiPgA8dHNwYW4geD0iMCIgZHk9IgAiPgA8L3RzcGFuPjwvdGV4dFBhdGg+ADwvdGV4dD4KADwvZz4KADxnACBpZD0iYV8AIHhsaW5rOmhyZWY9IgAgeGxpbms6dGl0bGU9IgAgdGFyZ2V0PSIAPHRpdGxlPgA8L3RpdGxlPgoAPGcgaWQ9IgBfJXMAIiBjbGFzcz0iJXMAY2xhc3MAIHRyYW5zZm9ybT0ic2NhbGUoACkgcm90YXRlKCVkKSB0cmFuc2xhdGUoACkiPgoAPC9zdmc+CgA8IS0tACBQYWdlczogJWQgLS0+CgA8c3ZnIHdpZHRoPSIlZHB0IiBoZWlnaHQ9IiVkcHQiCgAgdmlld0JveD0iJS4yZiAlLjJmICUuMmYgJS4yZiIAIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIAIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz4KAHN0eWxlc2hlZXQAPD94bWwtc3R5bGVzaGVldCBocmVmPSIAIiB0eXBlPSJ0ZXh0L2NzcyI/PgoAPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIgoAICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgoAPCEtLSBHZW5lcmF0ZWQgYnkgAGRhcmtibHVlAGRhcmtjeWFuAGRhcmtncmF5AGRhcmtncmV5AGRhcmttYWdlbnRhAGRhcmtyZWQAbGlnaHRncmVlbgAjIAAgY3JlYXRlIGxpbmUgACAtZmlsbCAAIC1kYXNoIDUAIC1kYXNoIDIAZ3ZyZW5kZXJfY29yZV90ay5jAHRrZ2VuX3ByaW50X3RhZ3MAZ3JhcGggbGFiZWwAIC10YWdzIHslZCVzJXB9AHRrZ2VuX3ByaW50X2NvbG9yACRjACAtd2lkdGggACAtc21vb3RoIGJlemllciAAIGNyZWF0ZSBwb2x5Z29uIAAgLW91dGxpbmUgACBjcmVhdGUgb3ZhbCAAIGNyZWF0ZSB0ZXh0IAAgLXRleHQgewB9ACAtZm9udCB7ACAlZH0AIC1hbmNob3IgdwAgLWFuY2hvciBlACMAIFRpdGxlOiAAIFBhZ2VzOiAlZAoAIyBHZW5lcmF0ZWQgYnkgACkKAHRrAHRrOnRrACAgICAgIDwhLS0gACAtLT4KAEVycm9yIGR1cmluZyBjb252ZXJzaW9uIHRvICJVVEYtOCIuICBRdWl0aW5nLgoAIDx2OnNoYXBlIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgACB3aWR0aDogJWQ7IGhlaWdodDogJWQiIGZpbGxlZD0iZmFsc2UiPgA8djpwYXRoIHY9IgAgbSAAJS4wZiwlLjBmIAAgbCAAIGUgACIvPgA8L3Y6c2hhcGU+CgA8djpzdHJva2UgY29sb3I9IgAiIHdlaWdodD0iJS4wZnB0ACIgZGFzaHN0eWxlPSJkYXNoACIgZGFzaHN0eWxlPSJkb3QAIiAvPgAjJTAyeCUwMnglMDJ4AGd2cmVuZGVyX2NvcmVfdm1sLmMAdm1sX3ByaW50X2NvbG9yACB3aWR0aDogJWQ7IGhlaWdodDogJWQiACA+ADx2OnBhdGggIHY9IgAvPjwvdjpzaGFwZT4KAG0gACVzJS4wZiwlLjBmIABjIAAgZmlsbGVkPSJ0cnVlIiBmaWxsY29sb3I9IgAiIAAgZmlsbGVkPSJmYWxzZSIgACUuMGYgJS4wZiAAbCAAeCBlICIvPgAgIDx2Om92YWwgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOwAgbGVmdDogJS4yZjsgdG9wOiAlLjJmOwAgd2lkdGg6ICUuMmY7IGhlaWdodDogJS4yZiIAPC92Om92YWw+CgA8djpyZWN0IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgACBzdHJva2VkPSJmYWxzZSIgZmlsbGVkPSJmYWxzZSI+CgA8djp0ZXh0Ym94IGluc2V0PSIwLDAsMCwwIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IHYtdGV4dC13cmFwcGluZzonZmFsc2UnO3BhZGRpbmc6JzAnOwBmb250LWZhbWlseTogJyVzJzsAZm9udC13ZWlnaHQ6ICVzOwBmb250LXN0cmV0Y2g6ICVzOwBmb250LXN0eWxlOiAlczsAIGZvbnQtc2l6ZTogJS4yZnB0OwBjb2xvcjolczsAY29sb3I6IyUwMnglMDJ4JTAyeDsAdm1sX3RleHRzcGFuACI+PGNlbnRlcj4APC9jZW50ZXI+PC92OnRleHRib3g+CgA8L3Y6cmVjdD4KADwvYT4KADxhACBocmVmPSIlcyIAIHRpdGxlPSIlcyIAIHRhcmdldD0iJXMiAD4KADwvdjpncm91cD4KADwvRElWPgoAPERJViBpZD0nX1ZNTDJfJyBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7dmlzaWJpbGl0eTpoaWRkZW4iPgoAPCEtLSBpbnNlcnQgYW55IG90aGVyIGh0bWwgY29udGVudCBoZXJlIC0tPgoAPERJViBpZD0nX25vdFZNTDFfJyBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7Ij4KADwhLS0gdGhpcyBzaG91bGQgb25seSBkaXNwbGF5IG9uIE5PTi1JRSBicm93c2VycyAtLT4KADxIMj5Tb3JyeSwgdGhpcyBkaWFncmFtIHdpbGwgb25seSBkaXNwbGF5IGNvcnJlY3RseSBvbiBJbnRlcm5ldCBFeHBsb3JlciA1IChhbmQgdXApIGJyb3dzZXJzLjwvSDI+CgA8RElWIGlkPSdfbm90Vk1MMl8nIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsiPgoAPCEtLSBpbnNlcnQgYW55IG90aGVyIE5PTi1JRSBodG1sIGNvbnRlbnQgaGVyZSAtLT4KADwvQk9EWT4KPC9IVE1MPgoAPEhFQUQ+ADxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KADxUSVRMRT4APC9USVRMRT4APCEtLSBQYWdlczogJWQgLS0+CgAgICA8U0NSSVBUIExBTkdVQUdFPSdKYXZhc2NyaXB0Jz4KACAgIGZ1bmN0aW9uIGJyb3dzZXJjaGVjaygpCgAgICB7CgAgICAgICB2YXIgdWEgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudAoAICAgICAgdmFyIG1zaWUgPSB1YS5pbmRleE9mICggJ01TSUUgJyApCgAgICAgICB2YXIgaWV2ZXJzOwoAICAgICAgdmFyIGl0ZW07CgAgICAgICB2YXIgVk1MeWVzPW5ldyBBcnJheSgnX1ZNTDFfJywnX1ZNTDJfJyk7CgAgICAgICB2YXIgVk1Mbm89bmV3IEFycmF5KCdfbm90Vk1MMV8nLCdfbm90Vk1MMl8nKTsKACAgICAgIGlmICggbXNpZSA+IDAgKXsgICAgICAvLyBJZiBJbnRlcm5ldCBFeHBsb3JlciwgcmV0dXJuIHZlcnNpb24gbnVtYmVyCgAgICAgICAgICBpZXZlcnM9IHBhcnNlSW50ICh1YS5zdWJzdHJpbmcgKG1zaWUrNSwgdWEuaW5kZXhPZiAoJy4nLCBtc2llICkpKQoAICAgICAgfQoAICAgICAgaWYgKGlldmVycz49NSl7CgAgICAgICAgZm9yICh4IGluIFZNTHllcyl7CgAgICAgICAgICBpdGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoVk1MeWVzW3hdKTsKACAgICAgICAgIGlmIChpdGVtKSB7CgAgICAgICAgICAgIGl0ZW0uc3R5bGUudmlzaWJpbGl0eT0ndmlzaWJsZSc7CgAgICAgICAgICB9CgAgICAgICAgfQoAICAgICAgIGZvciAoeCBpbiBWTUxubyl7CgAgICAgICAgICBpdGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoVk1Mbm9beF0pOwoAICAgICAgICAgICBpdGVtLnN0eWxlLnZpc2liaWxpdHk9J2hpZGRlbic7CgAgICAgIH1lbHNlewoAICAgICB9CgAgICB9CgAgICA8L1NDUklQVD4KADwvSEVBRD4APEJPRFkgb25sb2FkPSdicm93c2VyY2hlY2soKTsnPgoAPERJViBpZD0nX1ZNTDFfJyBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6aW5saW5lOyB2aXNpYmlsaXR5OmhpZGRlbgAgd2lkdGg6ICVkcHQ7IGhlaWdodDogJWRwdCI+CgA8U1RZTEU+CgB2XDoqIHsgYmVoYXZpb3I6IHVybCgjZGVmYXVsdCNWTUwpO2Rpc3BsYXk6aW5saW5lLWJsb2NrfQoAPC9TVFlMRT4KADx4bWw6bmFtZXNwYWNlIG5zPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbCIgcHJlZml4PSJ2IiAvPgoAIDx2Omdyb3VwIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgACB3aWR0aDogJWRwdDsgaGVpZ2h0OiAlZHB0IgAgY29vcmRvcmlnaW49IjAsMCIgY29vcmRzaXplPSIlZCwlZCIgPgA8SFRNTD4KAAo8IS0tIEdlbmVyYXRlZCBieSAAIHZlcnNpb24gACAoACkKLS0+CgBhcXVhAGZ1Y2hzaWEAbGltZQBvbGl2ZQB0ZWFsAHZtbAB2bWw6dm1sAC8vKioqIGNvbW1lbnQ6ICVzCgAvLyoqKiBwb2x5bGluZQoAc2NhbGUgICAgPCU5LjNmLCAlOS4zZiwgJTkuM2Y+CgByb3RhdGUgICA8JTkuM2YsICU5LjNmLCAlOS4zZj4KAHRyYW5zbGF0ZTwlOS4zZiwgJTkuM2YsICU5LjNmPgoAc3BoZXJlX3N3ZWVwIHsKICAgICVzCiAgICAlZCwKAGxpbmVhcl9zcGxpbmUAPCU5LjNmLCAlOS4zZiwgJTkuM2Y+LCAlLjNmCgAlcyAgICAlcwAgICAgdG9sZXJhbmNlIDAuMDEKICAgICVzICAgICVzICAgICVzICAgICVzfQoAJXMlcwAlcyB0cmFuc21pdCAlLjNmAFJlZABHcmVlbgBCbHVlAHJnYjwlOS4zZiwgJTkuM2YsICU5LjNmPiB0cmFuc21pdCAlLjNmAG9vcHMsIGludGVybmFsIGVycm9yOiB1bmhhbmRsZWQgY29sb3IgdHlwZT0lZCAlcwoAZ3ZyZW5kZXJfY29yZV9wb3YuYwBwb3ZfY29sb3JfYXNfc3RyAHBpZ21lbnQgeyBjb2xvciAlcyB9CgBwb3YgcmVuZGVyZXI6ZWwgLSAlcwoALy8qKiogYmV6aWVyCgBiX3NwbGluZQAgICAgICAgIHRvbGVyYW5jZSAwLjAxCiAgICAlcyAgICAlcyAgICAlcyAgICAlc30KAC8vKioqIHBvbHlnb24KACAgICB0b2xlcmFuY2UgMC4xCiAgICAlcyAgICAlcyAgICAlcyAgICAlc30KAHBvbHlnb24geyAlZCwKADwlOS4zZiwgJTkuM2YsICU5LjNmPgAlcwogICAgJXMACiAgICAlcyAgICAlcyAgICAlcyAgICAlc30KAC8vKioqIGVsbGlwc2UKAHRvcnVzIHsgJS4zZiwgJS4zZgogICAgJXMgICAgJXMgICAgJXMgICAgJXN9CgBzcGhlcmUgezwlOS4zZiwgJTkuM2YsICU5LjNmPiwgMS4wCiAgICAlcyAgICAlcyAgICAlcyAgICAlc30KAC8vKioqIHRleHRzcGFuOiAlcywgZm9udHNpemUgPSAlLjNmLCBmb250bmFtZSA9ICVzCgBzY2FsZSAlLjNmCgB0ZXh0IHsKICAgIHR0ZiAiJXMiLAogICAgIiVzIiwgJS4zZiwgJS4zZgogICAgJXMgICAgJXMgICAgJXMgICAgJXMgICAgJXN9CgAgICAgbm9fc2hhZG93CgAvLyoqKiBlbmRfZWRnZQoALy8qKiogYmVnaW5fZWRnZQoALy8qKiogZW5kX25vZGUKAC8vKioqIGJlZ2luX25vZGU6ICVzCgAvLyoqKiBlbmRfY2x1c3RlcgoALy8qKiogYmVnaW5fY2x1c3RlcgoALy8qKiogZW5kX3BhZ2UKAC8vKioqIGJlZ2luX3BhZ2UKAC8vKioqIGVuZF9sYXllcgoALy8qKiogYmVnaW5fbGF5ZXI6ICVzLCAlZC8lZAoALy8qKiogZW5kX2dyYXBoCgAvLyoqKiBiZWdpbl9ncmFwaCAlcwoAY2FtZXJhIHsgbG9jYXRpb24gPCUuM2YgLCAlLjNmICwgJS4zZj4KICAgICAgICAgbG9va19hdCAgPCUuM2YgLCAlLjNmICwgJS4zZj4KICAgICAgICAgcmlnaHQgeCAqIGltYWdlX3dpZHRoIC8gaW1hZ2VfaGVpZ2h0CiAgICAgICAgIGFuZ2xlICUuM2YKfQoALy9za3kKcGxhbmUgeyA8MCwgMSwgMD4sIDEgaG9sbG93CiAgICB0ZXh0dXJlIHsKICAgICAgICBwaWdtZW50IHsgYm96byB0dXJidWxlbmNlIDAuOTUKICAgICAgICAgICAgY29sb3JfbWFwIHsKICAgICAgICAgICAgICAgIFswLjAwIHJnYiA8MC4wNSwgMC4yMCwgMC41MD5dCiAgICAgICAgICAgICAgICBbMC41MCByZ2IgPDAuMDUsIDAuMjAsIDAuNTA+XQogICAgICAgICAgICAgICAgWzAuNzUgcmdiIDwxLjAwLCAxLjAwLCAxLjAwPl0KICAgICAgICAgICAgICAgIFswLjc1IHJnYiA8MC4yNSwgMC4yNSwgMC4yNT5dCiAgICAgICAgICAgICAgICBbMS4wMCByZ2IgPDAuNTAsIDAuNTAsIDAuNTA+XQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNjYWxlIDwxLjAwLCAxLjAwLCAxLjUwPiAqIDIuNTAKICAgICAgICAgICAgdHJhbnNsYXRlIDwwLjAwLCAwLjAwLCAwLjAwPgogICAgICAgIH0KICAgICAgICBmaW5pc2ggeyBhbWJpZW50IDEgZGlmZnVzZSAwIH0KICAgIH0KICAgIHNjYWxlIDEwMDAwCn0KLy9taXN0CmZvZyB7IGZvZ190eXBlIDIKICAgIGRpc3RhbmNlIDUwCiAgICBjb2xvciByZ2IgPDEuMDAsIDEuMDAsIDEuMDA+ICogMC43NQogICAgZm9nX29mZnNldCAwLjEwCiAgICBmb2dfYWx0IDEuNTAKICAgIHR1cmJ1bGVuY2UgMS43NQp9Ci8vZ25kCnBsYW5lIHsgPDAuMDAsIDEuMDAsIDAuMDA+LCAwCiAgICB0ZXh0dXJlIHsKICAgICAgICBwaWdtZW50eyBjb2xvciByZ2IgPDAuMjUsIDAuNDUsIDAuMDA+IH0KICAgICAgICBub3JtYWwgeyBidW1wcyAwLjc1IHNjYWxlIDAuMDEgfQogICAgICAgIGZpbmlzaCB7IHBob25nIDAuMTAgfQogICAgfQp9CgBsaWdodF9zb3VyY2UgeyA8MTUwMCwzMDAwLC0yNTAwPiBjb2xvciBXaGl0ZSB9CgAjdmVyc2lvbiAzLjY7CgBnbG9iYWxfc2V0dGluZ3MgeyBhc3N1bWVkX2dhbW1hIDEuMCB9CgAjZGVmYXVsdCB7IGZpbmlzaCB7IGFtYmllbnQgMC4xIGRpZmZ1c2UgMC45IH0gfQoAI2luY2x1ZGUgImNvbG9ycy5pbmMiCiNpbmNsdWRlICJ0ZXh0dXJlcy5pbmMiCiNpbmNsdWRlICJzaGFwZXMuaW5jIgoAI2RlY2xhcmUgJXMgPSAlczsKAEJsYWNrAFdoaXRlAGJha2Vyc2Nob2MAYnJhc3MAYnJpZ2h0Z29sZABicm9uemUAYnJvbnplMgBjbGVhcgBjb29sY29wcGVyAGNvcHBlcgBkYXJrYnJvd24AZGFya3B1cnBsZQBkYXJrdGFuAGRhcmt3b29kAGRrZ3JlZW5jb3BwZXIAZHVzdHlyb3NlAGZlbGRzcGFyAGZsZXNoAGdyYXkwNQBncmVlbmNvcHBlcgBodW50ZXJzZ3JlZW4AbGlnaHRfcHVycGxlAGxpZ2h0d29vZABtYW5kYXJpbm9yYW5nZQBtZWRpdW1mb3Jlc3RncmVlbgBtZWRpdW1nb2xkZW5yb2QAbWVkaXVtd29vZABtZWRfcHVycGxlAG1pY2EAbmVvbmJsdWUAbmVvbnBpbmsAbmV3bWlkbmlnaHRibHVlAG5ld3RhbgBvbGRnb2xkAHF1YXJ0egByaWNoYmx1ZQBzY2FybGV0AHNlbWlTd2VldENob2MAc2lsdmVyAHNwaWN5cGluawBzdW1tZXJza3kAdmVyeWRhcmticm93bgB2ZXJ5X2xpZ2h0X3B1cnBsZQBwb3YAcG92OnBvdgAlcyAlcwoALlwiIAAgJWQgJWQAICVzCgAgJWQAZmlsbCAAZWxsaXBzZSBhdHRycyVkICVzd2lkICUuNWYgaHQgJS41ZiBhdCAoJS41ZiwlLjVmKTsKAC5mdCAlcwoALnBzICVkKlxuKFNGdS8lLjBmdQoAIiVzIiBhdCAoJS41ZiwlLjVmKTsKACUwM28AJXMlcyBpcyBub3QgYSB0cm9mZiBmb250CgBkb3QgcGljIHBsdWdpbjogAFIAXQouUEUKAC5QUyAlLjVmICUuNWYKACVzIHRvIGNoYW5nZSBkcmF3aW5nIHNpemUsIG11bHRpcGx5IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9uIHRoZSAuUFMgbGluZSBhYm92ZSBhbmQgdGhlIG51bWJlciBvbiB0aGUgdHdvIGxpbmVzIGJlbG93IChyb3VuZGVkIHRvIHRoZSBuZWFyZXN0IGludGVnZXIpIGJ5IGEgc2NhbGUgZmFjdG9yCgAubnIgU0YgJS4wZgpzY2FsZXRoaWNrbmVzcyA9ICUuMGYKACVzIGRvbid0IGNoYW5nZSBhbnl0aGluZyBiZWxvdyB0aGlzIGxpbmUgaW4gdGhpcyBkcmF3aW5nCgAlcyBub24tZmF0YWwgcnVuLXRpbWUgcGljIHZlcnNpb24gZGV0ZXJtaW5hdGlvbiwgdmVyc2lvbiAyCgBib3hyYWQ9Mi4wICVzIHdpbGwgYmUgcmVzZXQgdG8gMC4wIGJ5IGdwaWMgb25seQoAc2NhbGU9MS4wICVzIHJlcXVpcmVkIGZvciBjb21wYXJpc29ucwoAJXMgYm94cmFkIGlzIG5vdyAwLjAgaW4gZ3BpYywgZWxzZSBpdCByZW1haW5zIDIuMAoAJXMgZGFzaHdpZCBpcyAwLjEgaW4gMTB0aCBFZGl0aW9uLCAwLjA1IGluIERXQiAyIGFuZCBpbiBncGljCgAlcyBmaWxsdmFsIGlzIDAuMyBpbiAxMHRoIEVkaXRpb24gKGZpbGwgMCBtZWFucyBibGFjayksIDAuNSBpbiBncGljIChmaWxsIDAgbWVhbnMgd2hpdGUpLCB1bmRlZmluZWQgaW4gRFdCIDIKACVzIGZpbGwgaGFzIG5vIG1lYW5pbmcgaW4gRFdCIDIsIGdwaWMgY2FuIHVzZSBmaWxsIG9yIGZpbGxlZCwgMTB0aCBFZGl0aW9uIHVzZXMgZmlsbCBvbmx5CgAlcyBEV0IgMiBkb2Vzbid0IHVzZSBmaWxsIGFuZCBkb2Vzbid0IGRlZmluZSBmaWxsdmFsCgAlcyByZXNldCB3b3JrcyBpbiBncGljIGFuZCAxMHRoIGVkaXRpb24sIGJ1dCBpc24ndCBkZWZpbmVkIGluIERXQiAyCgAlcyBEV0IgMiBjb21wYXRpYmlsaXR5IGRlZmluaXRpb25zCgBpZiBib3hyYWQgPiAxLjAgJiYgZGFzaHdpZCA8IDAuMDc1IHRoZW4gWAoJZmlsbHZhbCA9IDE7CglkZWZpbmUgZmlsbCBZIFk7CglkZWZpbmUgc29saWQgWSBZOwoJZGVmaW5lIHJlc2V0IFkgc2NhbGU9MS4wIFk7ClgKAHJlc2V0ICVzIHNldCB0byBrbm93biBzdGF0ZQoAJXMgR05VIHBpYyB2cy4gMTB0aCBFZGl0aW9uIGRcKGUndGVudGUKAGlmIGZpbGx2YWwgPiAwLjQgdGhlbiBYCglkZWZpbmUgc2V0ZmlsbHZhbCBZIGZpbGx2YWwgPSAxIC0gWTsKCWRlZmluZSBib2xkIFkgdGhpY2tuZXNzIDIgWTsKAAklcyBpZiB5b3UgdXNlIGdwaWMgYW5kIGl0IGJhcmZzIG9uIGVuY291bnRlcmluZyAic29saWQiLAoACSVzCWluc3RhbGwgYSBtb3JlIHJlY2VudCB2ZXJzaW9uIG9mIGdwaWMgb3Igc3dpdGNoIHRvIERXQiBvciAxMHRoIEVkaXRpb24gcGljOwoACSVzCXNvcnJ5LCB0aGUgZ3JvZmYgZm9sa3MgY2hhbmdlZCBncGljOyBzZW5kIGFueSBjb21wbGFpbnQgdG8gdGhlbTsKAFggZWxzZSBaCglkZWZpbmUgc2V0ZmlsbHZhbCBZIGZpbGx2YWwgPSBZOwoJZGVmaW5lIGJvbGQgWSBZOwoJZGVmaW5lIGZpbGxlZCBZIGZpbGwgWTsKWgoAJXMgYXJyb3doZWFkIGhhcyBubyBtZWFuaW5nIGluIERXQiAyLCBhcnJvd2hlYWQgPSA3IG1ha2VzIGZpbGxlZCBhcnJvd2hlYWRzIGluIGdwaWMgYW5kIGluIDEwdGggRWRpdGlvbgoAJXMgYXJyb3doZWFkIGlzIHVuZGVmaW5lZCBpbiBEV0IgMiwgaW5pdGlhbGx5IDEgaW4gZ3BpYywgMiBpbiAxMHRoIEVkaXRpb24KAGFycm93aGVhZCA9IDcgJXMgbm90IHVzZWQgYnkgZ3JhcGh2aXoKACVzIEdOVSBwaWMgc3VwcG9ydHMgYSBib3hyYWQgdmFyaWFibGUgdG8gZHJhdyBib3hlcyB3aXRoIHJvdW5kZWQgY29ybmVyczsgRFdCIGFuZCAxMHRoIEVkLiBkbyBub3QKAGJveHJhZCA9IDAgJXMgbm8gcm91bmRlZCBjb3JuZXJzIGluIGdyYXBodml6CgAlcyBHTlUgcGljIHN1cHBvcnRzIGEgbGluZXRoaWNrIHZhcmlhYmxlIHRvIHNldCBsaW5lIHRoaWNrbmVzczsgRFdCIGFuZCAxMHRoIEVkLiBkbyBub3QKAGxpbmV0aGljayA9IDA7IG9sZGxpbmV0aGljayA9IGxpbmV0aGljawoAJXMgLlBTIHcvbyBhcmdzIGNhdXNlcyBHTlUgcGljIHRvIHNjYWxlIGRyYXdpbmcgdG8gZml0IDguNXgxMSBwYXBlcjsgRFdCIGRvZXMgbm90CgAlcyBtYXhwc2h0IGFuZCBtYXhwc3dpZCBoYXZlIG5vIG1lYW5pbmcgaW4gRFdCIDIuMCwgc2V0IHBhZ2UgYm91bmRhcmllcyBpbiBncGljIGFuZCBpbiAxMHRoIEVkaXRpb24KACVzIG1heHBzaHQgYW5kIG1heHBzd2lkIGFyZSBwcmVkZWZpbmVkIHRvIDExLjAgYW5kIDguNSBpbiBncGljCgBtYXhwc2h0ID0gJWYKbWF4cHN3aWQgPSAlZgoARG90OiBbCgBkZWZpbmUgYXR0cnMwICUlICUlOyBkZWZpbmUgdW5maWxsZWQgJSUgJSU7IGRlZmluZSByb3VuZGVkICUlICUlOyBkZWZpbmUgZGlhZ29uYWxzICUlICUlCgAlcyVzIHVuc3VwcG9ydGVkCgByb3RhdGlvbgAlcyByZXN0b3JlIHBvaW50IHNpemUgYW5kIGZvbnQKLnBzIFxuKC5TCi5mdCBcbihERgoAJXMgQ3JlYXRvcjogJXMgdmVyc2lvbiAlcyAoJXMpCgAlcyBUaXRsZTogJXMKACVzIHNhdmUgcG9pbnQgc2l6ZSBhbmQgZm9udAoubnIgLlMgXG4oLnMKLm5yIERGIFxuKC5mCgBwaWMAcGljOnBpYwBwbmc6c3ZnAGdpZjpzdmcAanBlZzpzdmcAanBlOnN2ZwBqcGc6c3ZnAHBuZzpmaWcAZ2lmOmZpZwBqcGVnOmZpZwBqcGU6ZmlnAGpwZzpmaWcAcG5nOnZybWwAZ2lmOnZybWwAanBlZzp2cm1sAGpwZTp2cm1sAGpwZzp2cm1sAGVwczpwcwBwczpwcwAobGliKTpwcwBwbmc6bWFwAGdpZjptYXAAanBlZzptYXAAanBlOm1hcABqcGc6bWFwAHBzOm1hcABlcHM6bWFwAHN2ZzptYXAAcG5nOmRvdABnaWY6ZG90AGpwZWc6ZG90AGpwZTpkb3QAanBnOmRvdABwczpkb3QAZXBzOmRvdABzdmc6ZG90AHBuZzp4ZG90AGdpZjp4ZG90AGpwZWc6eGRvdABqcGU6eGRvdABqcGc6eGRvdABwczp4ZG90AGVwczp4ZG90AHN2Zzp4ZG90AHN2ZzpzdmcAcG5nOnZtbABnaWY6dm1sAGpwZWc6dm1sAGpwZTp2bWwAanBnOnZtbABnaWY6dGsAaW1hZ2UgY3JlYXRlIHBob3RvICJwaG90b18lcyIgLWZpbGUgIiVzIgoAJGMgY3JlYXRlIGltYWdlICUuMmYgJS4yZiAtaW1hZ2UgInBob3RvXyVzIgoAPHY6aW1hZ2Ugc3JjPSIlcyIgc3R5bGU9IiBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6JS4yZjsgaGVpZ2h0OiUuMmY7IGxlZnQ6JS4yZiA7IHRvcDolLjJmIgAgLz4KAGd2bG9hZGltYWdlX2NvcmUuYwBjb3JlX2xvYWRpbWFnZV9wc2xpYgBbIAAlZyAlZyAAXSAgJWQgdHJ1ZSAlcwoAXSAgJWQgZmFsc2UgJXMKAGNvcmVfbG9hZGltYWdlX3BzAGdzYXZlICVnICVnIHRyYW5zbGF0ZSBuZXdwYXRoCgB1c2VyX3NoYXBlXyVkCgBncmVzdG9yZQoAY29yZV9sb2FkaW1hZ2VfdnJtbABTaGFwZSB7CgAgIGFwcGVhcmFuY2UgQXBwZWFyYW5jZSB7CgAgICAgbWF0ZXJpYWwgTWF0ZXJpYWwgewoAICAgICAgYW1iaWVudEludGVuc2l0eSAwLjMzCgAgICAgICAgIGRpZmZ1c2VDb2xvciAxIDEgMQoAICAgIH0KACAgICB0ZXh0dXJlIEltYWdlVGV4dHVyZSB7IHVybCAiJXMiIH0KACAgfQoAY29yZV9sb2FkaW1hZ2VfZmlnACVkICVkICVkICVkICVkICVkICVkICVkICVkICUuMWYgJWQgJWQgJWQgJWQgJWQgJWQKICVkICVzCgAgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQKAGNvcmVfbG9hZGltYWdlX3N2ZwA8aW1hZ2UgeGxpbms6aHJlZj0iACIgd2lkdGg9IiVncHgiIGhlaWdodD0iJWdweCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCIgeD0iJWciIHk9IiVnIgAgdHJhbnNmb3JtPSJyb3RhdGUoJWQgJWcgJWcpIgAiIHdpZHRoPSIlZ3B4IiBoZWlnaHQ9IiVncHgiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWluIG1lZXQiIHg9IiVnIiB5PSIlZyIALz4KAGRvdF9sYXlvdXQAcGhhc2UAZG90IGRvZXMgbm90IHN1cHBvcnQgdGhlIGFzcGVjdCBhdHRyaWJ1dGUgZm9yIGRpc2Nvbm5lY3RlZCBncmFwaHMgb3IgZ3JhcGhzIHdpdGggY2x1c3RlcnMKAGNvbXBvdW5kAHYgPT0gbgBkb3Rpbml0LmMAcmVtb3ZlX2Zyb21fcmFuawBvcmRlcgBlZGdlIGxhYmVscyB3aXRoIHNwbGluZXM9Y3VydmVkIG5vdCBzdXBwb3J0ZWQgaW4gZG90IC0gdXNlIHhsYWJlbHMKAEVEX2xhYmVsKGZlKQBkb3RzcGxpbmVzLmMAX2RvdF9zcGxpbmVzAGZsYXQgZWRnZSBiZXR3ZWVuIGFkamFjZW50IG5vZGVzIG9uZSBvZiB3aGljaCBoYXMgYSByZWNvcmQgc2hhcGUgLSByZXBsYWNlIHJlY29yZHMgd2l0aCBIVE1MLWxpa2UgbGFiZWxzCgAgIEVkZ2UgJXMgJXMgJXMKAHh4eAAxMDAwMAB7JXN9AGF1eGcAbGFiZWxfZmxvYXQAZml4ZWQAKGwgPSBFRF9sYWJlbChmZSkpAHNldEVkZ2VMYWJlbFBvcwBlICE9IE5VTEwAZmFzdGdyLmMAZGVsZXRlX2Zhc3RfZWRnZQBuICE9IE5EX25leHQobikAZmFzdF9ub2RlAHUgIT0gdgBmYXN0X25vZGVhcHAATkRfbmV4dCh2KSA9PSBOVUxMAGZpbmRfZmFzdF9ub2RlKGcsIG4pAGRlbGV0ZV9mYXN0X25vZGUAZGVsZXRlX2ZsYXRfZWRnZQBtZXJnZV9vbmV3YXkgZ2xpdGNoCgBtZXJnZV9vbmV3YXkAc2FmZV9kZWxldGVfZmFzdF9lZGdlAGxnAGNvbXAAY250ID09IHN6AG1pbmNyb3NzLmMAZml4TGFiZWxPcmRlcgByZW1pbmNyb3NzAG1pbmNyb3NzICVzOiAlZCBjcm9zc2luZ3MsICUuMmYgc2Vjcy4KAHYAbmVpZ2hib3IAKHJ2ID09IDApIHx8IChORF9vcmRlcihydiktTkRfb3JkZXIodikpKmRpciA+IDAAY29uc3RyYWluaW5nX2ZsYXRfZWRnZShnLHYsZSkgPT0gRkFMU0UAZmxhdF9yZW9yZGVyAE5EX3JhbmsodikgPT0gcgBwb3N0b3JkZXIAZmxhdGluZGV4KGFnaGVhZChlKSkgPCBNLT5ucm93cwBmbGF0X3NlYXJjaABmbGF0aW5kZXgoYWd0YWlsKGUpKSA8IE0tPm5jb2xzAG91dABvcmRlcmluZyAnJXMnIG5vdCByZWNvZ25pemVkLgoAb3JkZXJpbmcgJyVzJyBub3QgcmVjb2duaXplZCBmb3Igbm9kZSAnJXMnLgoAbWVyZ2UyOiBncmFwaCAlcywgcmFuayAlZCBoYXMgb25seSAlZCA8ICVkIG5vZGVzCgBtaW5jcm9zczogcGFzcyAlZCBpdGVyICVkIHRyeWluZyAlZCBjdXJfY3Jvc3MgJWQgYmVzdF9jcm9zcyAlZAoATkRfb3JkZXIodikgPCBORF9vcmRlcih3KQBiYWxhbmNlAHRyYW5zcG9zZV9zdGVwAHN1cnByaXNlCgBpbnN0YWxsX2luX3JhbmssIGxpbmUgJWQ6ICVzICVzIHJhbmsgJWQgaSA9ICVkIGFuID0gMAoAR0RfcmFuayhnKVtyXS5uIDw9IEdEX3JhbmsoZylbcl0uYW4AaW5zdGFsbF9pbl9yYW5rAGluc3RhbGxfaW5fcmFuaywgbGluZSAlZDogTkRfb3JkZXIoJXMpIFslZF0gPiBHRF9yYW5rKFJvb3QpWyVkXS5hbiBbJWRdCgBpbnN0YWxsX2luX3JhbmssIGxpbmUgJWQ6IHJhbmsgJWQgbm90IGluIHJhbmsgcmFuZ2UgWyVkLCVkXQoAaW5zdGFsbF9pbl9yYW5rLCBsaW5lICVkOiBHRF9yYW5rKGcpWyVkXS52ICsgTkRfb3JkZXIoJXMpIFslZF0gPiBHRF9yYW5rKGcpWyVkXS5hdiArIEdEX3JhbmsoUm9vdClbJWRdLmFuIFslZF0KAF9uZXdfcmFuawBtY2xpbWl0AHJhbmsoZywgMiwgbnNpdGVyMihnKSkgPT0gMABwb3NpdGlvbi5jAGRvdF9wb3NpdGlvbgBBUj0lMC40bGYJIEFyZWE9ICUwLjRsZgkARHVtbXk9JWQKAEdvaW5nIHRvIGFwcGx5IGFub3RoZXIgZXhwYW5zaW9uLgoAbmV4dCNpdGVyPSVkCgBocABjb25uZWN0R3JhcGgARWRnZSBsZW5ndGggJWYgbGFyZ2VyIHRoYW4gbWF4aW11bSAldSBhbGxvd2VkLgpDaGVjayBmb3Igb3ZlcndpZGUgbm9kZShzKS4KAG5zbGltaXQAY29udGFpbl9ub2RlcyBjbHVzdCAlcyByYW5rICVkIG1pc3Npbmcgbm9kZQoAbnNsaW1pdDEAbmV3cmFuawBNYXhyYW5rID0gJWQsIG1pbnJhbmsgPSAlZAoAbGVhZGVyICE9IE5VTEwAcmFuay5jAGNsdXN0ZXJfbGVhZGVyAChORF9VRl9zaXplKG4pIDw9IDEpIHx8IChuID09IGxlYWRlcikAYWdoZWFkKGUpID09IFVGX2ZpbmQoYWdoZWFkKGUpKQBtaW5tYXhfZWRnZXMAYWd0YWlsKGUpID09IFVGX2ZpbmQoYWd0YWlsKGUpKQByYW5rAHNhbWUAbWluAHNvdXJjZQBtYXgAc2luawBsZXZlbCBhc3NpZ25tZW50IGNvbnN0cmFpbnRzAGxldmVsIGdyYXBoIHJlYwB/cm9vdAB/dG9wAH9ib3QAY29tcGFjdABfd2Vha18lZAByYW5raW5nOiBmYWlsdXJlIHRvIGNyZWF0ZSBzdHJvbmcgY29uc3RyYWludCBlZGdlIGJldHdlZW4gbm9kZXMgJXMgYW5kICVzCgAlcyBoYXMgdW5yZWNvZ25pemVkIHJhbms9JXMAbGV2ZWwgZWRnZSByZWMAbGV2ZWwgbm9kZSByZWMAc2FtZWhlYWQAc2FtZXRhaWwAdG9vIG1hbnkgKD4gJWQpIHNhbWV7aGVhZCx0YWlsfSBncm91cHMgZm9yIG5vZGUgJXMKAGNvbWJpQVIgPSAlbGYKACVsZiwlZAB0aGUgYXNwZWN0IGF0dHJpYnV0ZSBoYXMgYmVlbiBkaXNhYmxlZCBkdWUgdG8gaW1wbGVtZW50YXRpb24gZmxhd3MgLSBhdHRyaWJ1dGUgaWdub3JlZC4KAEVEX3RvX3ZpcnQoZSkgPT0gTlVMTABjbGFzczIuYwBtZXJnZV9jaGFpbgBFRF90b192aXJ0KG9yaWcpID09IE5VTEwAbWFrZV9jaGFpbgBFRF90b192aXJ0KG9yaWcpICE9IE5VTEwATkRfcmFuayhmcm9tKSA8IE5EX3JhbmsodG8pAGNsdXN0ZXIuYwBtYXBfcGF0aAAlcyB3YXMgYWxyZWFkeSBpbiBhIHJhbmtzZXQsIGRlbGV0ZWQgZnJvbSBjbHVzdGVyICVzCgBsaGVhZABsdGFpbAAlcyAtPiAlczogc3BsaW5lIHNpemUgPiAxIG5vdCBzdXBwb3J0ZWQKACVzIC0+ICVzOiBoZWFkIG5vdCBpbnNpZGUgaGVhZCBjbHVzdGVyICVzCgAlcyAtPiAlczogdGFpbCBpcyBpbnNpZGUgaGVhZCBjbHVzdGVyICVzCgBiZXotPnNmbGFnAGNvbXBvdW5kLmMAbWFrZUNvbXBvdW5kRWRnZQBiZXotPmVmbGFnACVzIC0+ICVzOiB0YWlsIG5vdCBpbnNpZGUgdGFpbCBjbHVzdGVyICVzCgAlcyAtPiAlczogaGVhZCBpcyBpbnNpZGUgdGFpbCBjbHVzdGVyICVzCgBzZWdtZW50IFslcywlc10gZG9lcyBub3QgaW50ZXJzZWN0IGJveCBsbD0lcyx1cj0lcwoAYm94SW50ZXJzZWN0ZgAoJS41ZywlLjVnKQBjbHVzdGVyIG5hbWVkICVzIG5vdCBmb3VuZAoAY29uY2VudHJhdGU9dHJ1ZSBtYXkgbm90IHdvcmsgY29ycmVjdGx5LgoAcmVidWlsdGRfdmxpc3RzOiByYW5rIGxlYWQgJXMgbm90IGluIG9yZGVyICVkIG9mIHJhbmsgJWQKAGRlZ2VuZXJhdGUgY29uY2VudHJhdGVkIHJhbmsgJXMsJWQKAE5EX2luKHJpZ2h0KS5zaXplICsgTkRfb3V0KHJpZ2h0KS5zaXplID09IDAAY29uYy5jAG1lcmdldmlydHVhbABkb3Q6IE91dCBvZiBtZW1vcnkKAE5EX291dCh2KS5zaXplID09IDIAZmxhdC5jAHNldGJvdW5kcwBHRF9taW5yYW5rKGcpID09IDAAYWJvbWluYXRpb24AbmVhdG9fbGF5b3V0AG5lYXRvAGZkcAB0d29waQBjaXJjbwBwYXRjaHdvcmsAb3NhZ2UAbm9wAG5vcDEAbm9wMgAlbGYsJWxmLCVsZiVjAG5vZGUgJXMsIHBvc2l0aW9uICVzLCBleHBlY3RlZCB0d28gZG91YmxlcwoAbm90cmFuc2xhdGUAbm9kZSAlcyBpbiBncmFwaCAlcyBoYXMgbm8gcG9zaXRpb24KAHMsJWxmLCVsZiVuACBlLCVsZiwlbGYlbgBwb3MgYXR0cmlidXRlIGZvciBlZGdlICglcywlcykgZG9lc24ndCBoYXZlIDNuKzEgcG9pbnRzCgAlbGYsJWxmJW4Ac3ludGF4IGVycm9yIGluIHBvcyBhdHRyaWJ1dGUgZm9yIGVkZ2UgKCVzLCVzKQoAJWxmLCVsZiwlbGYsJWxmAHN0YXJ0AHNlbGYAcmFuZG9tAG5vZGUgcG9zaXRpb25zIGFyZSBpZ25vcmVkIHVubGVzcyBzdGFydD1yYW5kb20KAGFzIHJlcXVpcmVkIGJ5IHRoZSAtbiBmbGFnCgBfbmVhdG9fY2MAZ3JhcGggJXMgaXMgZGlzY29ubmVjdGVkLiBIZW5jZSwgdGhlIGNpcmN1aXQgbW9kZWwKAEFsdGVybmF0aXZlbHksIGNvbnNpZGVyIHJ1bm5pbmcgbmVhdG8gdXNpbmcgLUdwYWNrPXRydWUgb3IgZGVjb21wb3NpbmcKAHRoZSBncmFwaCBpbnRvIGNvbm5lY3RlZCBjb21wb25lbnRzLgoAU29sdmluZyBtb2RlbCAlZCBpdGVyYXRpb25zICVkIHRvbCAlZgoATkRfaWQobnApID09IGkAbmVhdG9pbml0LmMAbWFrZUdyYXBoRGF0YQBmIDwgZ3JhcGhbal0ubmVkZ2VzAGRmc0N5Y2xlAG1vZGVsICVkIHNtYXJ0X2luaXQgJWQgc3RyZXNzd3QgJWQgaXRlcmF0aW9ucyAlZCB0b2wgJWYKAGNvbnZlcnQgZ3JhcGg6IABtYWpvcml6YXRpb24KACVkIG5vZGVzICUuMmYgc2VjCgBsZXZlbHNnYXAAbGF5b3V0IGFib3J0ZWQKAHN0cmVzc3d0ACVzIGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIDEgb3IgMiAtIGlnbm9yaW5nCgBtb2RlbABjaXJjdWl0AHN1YnNldABzaG9ydHBhdGgAbWRzAGVkZ2VzIGluIGdyYXBoICVzIGhhdmUgbm8gbGVuIGF0dHJpYnV0ZS4gSGVuY2UsIHRoZSBtZHMgbW9kZWwKAGlzIGluYXBwcm9wcmlhdGUuIFJldmVydGluZyB0byB0aGUgc2hvcnRlc3QgcGF0aCBtb2RlbC4KAFVua25vd24gdmFsdWUgJXMgZm9yIGF0dHJpYnV0ZSAibW9kZWwiIGluIGdyYXBoICVzIC0gaWdub3JlZAoAbW9kZQBLSwBtYWpvcgBoaWVyAElsbGVnYWwgdmFsdWUgJXMgZm9yIGF0dHJpYnV0ZSAibW9kZSIgaW4gZ3JhcGggJXMgLSBpZ25vcmVkCgBkaW1lbgBtYWtlU3BsaW5lOiBmYWlsZWQgdG8gbWFrZSBzcGxpbmUgZWRnZSAoJXMsJXMpCgBzcGxpbmUgJXMgJXMKAGIgPT0gbgBuZWF0b3NwbGluZXMuYwBtYWtlX2JhcnJpZXJzAHRoZSBib3VuZGluZyBib3hlcyBvZiBzb21lIG5vZGVzIHRvdWNoIC0gZmFsbGluZyBiYWNrIHRvIHN0cmFpZ2h0IGxpbmUgZWRnZXMKAHNvbWUgbm9kZXMgd2l0aCBtYXJnaW4gKCUuMDJmLCUuMDJmKSB0b3VjaCAtIGZhbGxpbmcgYmFjayB0byBzdHJhaWdodCBsaW5lIGVkZ2VzCgBwb2x5bGluZXMAbGluZSBzZWdtZW50cwBvcnRob2dvbmFsIGxpbmVzAENyZWF0aW5nIGVkZ2VzIHVzaW5nICVzCgBwb2x5bGluZSAlcyAlcwoAbWRzTW9kZWw6IGRlbHRhID0gJWYKAFNldHRpbmcgdXAgc3RyZXNzIGZ1bmN0aW9uAFNvbHZpbmcgbW9kZWw6IAAKZmluYWwgZSA9ICVmICVkIGl0ZXJhdGlvbnMgJS4yZiBzZWMKAERhbXBpbmcAZGVmYXVsdGRpc3QAIGluICVzIC0gc2V0dGluZyB0byAlLjAyZgoAYmFkIGVkZ2UgbGVuICIlcyIAU2V0dGluZyBpbml0aWFsIHBvc2l0aW9ucwoAc3RhcnQ9JXMgbm90IHN1cHBvcnRlZCB3aXRoIG1vZGU9c2VsZiAtIGlnbm9yZWQKAFNldHRpbmcgdXAgc3ByaW5nIG1vZGVsOiAAJS4yZiBzZWMKAApmaW5hbCBlID0gJWYAIQAgJWQlcyBpdGVyYXRpb25zICUuMmYgc2VjCgBNYXguIGl0ZXJhdGlvbnMgKCVkKSByZWFjaGVkIG9uIGdyYXBoICVzCgAlcyAlLjNmCgAlLjNmIABORF9oZWFwaW5kZXgodikgPCAwAHN0dWZmLmMAbmVhdG9fZW5xdWV1ZQBDYWxjdWxhdGluZyBzaG9ydGVzdCBwYXRoczogAHNwZWNpZmllZCByb290IG5vZGUgIiVzIiB3YXMgbm90IGZvdW5kLgBVc2luZyBkZWZhdWx0IGNhbGN1bGF0aW9uIGZvciByb290IG5vZGUKAHJlcG9zaXRpb24gJXMKACVzIDogJWYgJWYKACVzIDogJWYgJWYgJWYgJWYKACAgAEdyYXBoICVzIGhhcyBhcnJheSBwYWNraW5nIHdpdGggdXNlciB2YWx1ZXMgYnV0IG5vICJzb3J0diIgYXR0cmlidXRlcyBhcmUgZGVmaW5lZC4AbGVuAHBpbgBXYXJuaW5nOiBub2RlICVzLCBwb3NpdGlvbiAlcywgZXhwZWN0ZWQgdHdvIGZsb2F0cwoAY29vcmRzAGRpbQBsYXlvdXQgJXMKAGVuZCAlcwoAaWR4ID09IHN6AGxheW91dC5jAGV4cGFuZENsdXN0ZXIAaSA9PSBkZWcAZ2V0RWRnZUxpc3QAX2RnXyVkAGRlcml2ZSBncmFwaCAlcyBvZiAlcwoAbm9kZSAiJXMiIGlzIGNvbnRhaW5lZCBpbiB0d28gbm9uLWNvbXBhcmFibGUgY2x1c3RlcnMgIiVzIiBhbmQgIiVzIgoAX3BvcnRfJXNfJXNfJXNfJWxkAF9wb3J0XyVzXyglZClfKCVkKV8lbGQAJWxmLCVsZiwlbGYsJWxmJWMAZ3JhcGggJXMsIGNvb3JkICVzLCBleHBlY3RlZCBmb3VyIGRvdWJsZXMKAHNwbGluZXMgYW5kIGNsdXN0ZXIgZWRnZXMgbm90IHN1cHBvcnRlZCAtIHVzaW5nIGxpbmUgc2VnbWVudHMKAG1heGl0ZXIASwBUMABmZHAgZG9lcyBub3Qgc3VwcG9ydCBzdGFydD1zZWxmIC0gaWdub3JpbmcKAHhMYXlvdXQgADk6cHJpc20AdHJpZXMgPSAlZCwgbW9kZSA9ICVzCgBkZXJpdmVkAGluZm8Abm9ybWFsaXplAG92ZXJsYXAAT3ZlcmxhcCB2YWx1ZSAiJXMiIHVuc3VwcG9ydGVkIC0gaWdub3JlZAoAVW5yZWNvZ25pemVkIG92ZXJsYXAgdmFsdWUgIiVzIiAtIHVzaW5nIGZhbHNlCgBWb3Jvbm9pAG92ZXJsYXA6ICVzIHZhbHVlICVkIHNjYWxpbmcgJS4wNGYKAG92ZXJsYXBfc2NhbGluZwB2b3Jvbm9pAHNjYWxpbmcAdnBzYwBpcHNlcABvc2NhbGUAb2xkIHNjYWxpbmcAc2NhbGV4eQB4IGFuZCB5IHNjYWxpbmcAb3J0aG8Ab3J0aG9nb25hbCBjb25zdHJhaW50cwBvcnRob195eABvcnRob3h5AHh5IG9ydGhvZ29uYWwgY29uc3RyYWludHMAb3J0aG95eAB5eCBvcnRob2dvbmFsIGNvbnN0cmFpbnRzAHBvcnRobwBwc2V1ZG8tb3J0aG9nb25hbCBjb25zdHJhaW50cwBwb3J0aG9feXgAcG9ydGhveHkAeHkgcHNldWRvLW9ydGhvZ29uYWwgY29uc3RyYWludHMAcG9ydGhveXgAeXggcHNldWRvLW9ydGhvZ29uYWwgY29uc3RyYWludHMAcHJpc20AQWRqdXN0aW5nICVzIHVzaW5nICVzCgBVbmhhbmRsZWQgYWRqdXN0IG9wdGlvbiAlcwoATnVtYmVyIG9mIGl0ZXJhdGlvbnMgPSAlZAoATnVtYmVyIG9mIGluY3JlYXNlcyA9ICVkCgBvdmVybGFwIFslZF0gOiAlZAoAdm9yb19tYXJnaW4Ac2VwAGVzZXAATm9kZSBzZXBhcmF0aW9uOiBhZGQ9JWQgKCVmLCVmKQoAJWYsJWYAc2NhbGUgPSAoJS4wM2YsJS4wM2YpCgBFZGdlIHNlcGFyYXRpb246IGFkZD0lZCAoJWYsJWYpCgBDYWxjdWxhdGluZyBjaXJjdWl0IG1vZGVsAGNvbmp1Z2F0ZV9ncmFkaWVudDogdW5leHBlY3RlZCBsZW5ndGggMCB2ZWN0b3IKAENhbGN1bGF0aW5nIHN1YnNldCBtb2RlbABncmFwaCBpcyBkaXNjb25uZWN0ZWQuIEhlbmNlLCB0aGUgY2lyY3VpdCBtb2RlbAoAaXMgdW5kZWZpbmVkLiBSZXZlcnRpbmcgdG8gdGhlIHNob3J0ZXN0IHBhdGggbW9kZWwuCgBDYWxjdWxhdGluZyBNRFMgbW9kZWwAQ2FsY3VsYXRpbmcgc2hvcnRlc3QgcGF0aHMAOiAlLjJmIHNlYwoAU2V0dGluZyBpbml0aWFsIHBvc2l0aW9ucwA6ICUuMmYgc2VjAGNnAGRlbHRhIDw9IDB4RkZGRgBjb25zdHJhaW50LmMAbWtOQ29uc3RyYWludEcAdmcAY29tcHJlc3MgJWcgCgBzY2FsZSBieSAlZywlZyAKAGJlc3Rjb3N0IDwgSFVHRV9WQUwAY29tcHV0ZVNjYWxlWFkAdHJ5aW5nIHRvIGRlbGV0ZSBhIG5vbi1saW5lCgAKaW50ZXJzZWN0aW9uIGF0ICUuM2YgJS4zZgoAc2VnIyVkIDogKCUuM2YsICUuM2YpICglLjNmLCAlLjNmKQoAbWFrZUFkZFBvbHk6IHVua25vd24gc2hhcGUgdHlwZSAlcwoAbWFrZVBvbHk6IHVua25vd24gc2hhcGUgdHlwZSAlcwoAeCE9TlVMTABzbWFydF9pbmlfeC5jAElNRFNfZ2l2ZW5fZGltAGlsbC1jb25kaXRpb25lZAByb290ID0gJXMgbWF4IHN0ZXBzIHRvIHJvb3QgPSAlZAoAdHdvcGk6IHVzZSBvZiB3ZWlnaHQ9MCBjcmVhdGVzIGRpc2Nvbm5lY3RlZCBjb21wb25lbnQuCgBSYW5rIHNlcGFyYXRpb24gPSAAJS4wM2xmIABhcmVhAGluc2V0ACVzIGNvb3JkICUuNWcgJS41ZyBodCAlZiB3aWR0aCAlZgoAJS4wM2YAcmVjICVmICVmICVmICVmCgAlZiAtICVmICVmICVmICVmID0gJWYgKCVmICVmICVmICVmKQoAdHJ5aW5nIHRvIGFkZCB0byByZWN0IHslZiArLy0gJWYsICVmICsvLSAlZn0KAHRvdGFsIGFkZGVkIHNvIGZhciA9ICVkCgBhZGRpbmcgJWQgaXRlbXMsIHRvdGFsIGFyZWEgPSAlZiwgdyA9ICVmLCBhcmVhL3c9JWYKAGNvbXBvdW5kRWRnZXM6IGNvdWxkIG5vdCBjb25zdHJ1Y3Qgb2JzdGFjbGVzIC0gZmFsbGluZyBiYWNrIHRvIHN0cmFpZ2h0IGxpbmUgZWRnZXMKAGNvbXBvdW5kRWRnZXM6IG5vZGVzIHRvdWNoIC0gZmFsbGluZyBiYWNrIHRvIHN0cmFpZ2h0IGxpbmUgZWRnZXMKAHBhY2sgdmFsdWUgJWQgaXMgc21hbGxlciB0aGFuIGVzZXAgKCUuMDNmLCUuMDNmKQoAc2VwIHZhbHVlICglLjAzZiwlLjAzZikgaXMgc21hbGxlciB0aGFuIGVzZXAgKCUuMDNmLCUuMDNmKQoAY2Mlc18lZABjYyVzKyVkAGNfY250ID09IDAAY29tcC5jAGZpbmRDQ29tcABncmlkKCVkLCVkKTogJXMKAG9uZWJsb2NrAG1pbmRpc3QAYXJ0aWN1bGF0aW9uX3BvcwByb290AHJvb3QgPSAlcwoAX2Jsb2NrXyVkAHMtPnN6ID4gMABibG9ja3RyZWUuYwBwb3AAYWN0dWFsAG5vZGVsaXN0LmMAaW5zZXJ0Tm9kZWxpc3QAX3NwYW5fJWQAX2Nsb25lXyVkAGlwAGRlZ2xpc3QuYwByZW1vdmVEZWdsaXN0AEVycm9yAFdhcm5pbmcAJXM6IAB1c2Vyb3V0OiBjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5CgBfQUdfc3RyZGF0YQBfQUdfZGF0YWRpY3QAYWdkaWN0b2Y6IHVua25vd24ga2luZCAlZAoAJWMlbGQAbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZQBhZ2RlbGV0ZSBvbiB3cm9uZyBncmFwaABfQUdfcGVuZGluZwBhZ3JlY29yZF9jYWxsYmFjayBvZiBhIGJhZCBvYmplY3QAcGVuZCBkaWN0b2YgYSBiYWQgb2JqZWN0AG1vdmUgdG8gZnJvbnQgbG9jayBpbmNvbnNpc3RlbmN5AFxcAGZhdGFsIGZsZXggc2Nhbm5lciBpbnRlcm5hbCBlcnJvci0tbm8gYWN0aW9uIGZvdW5kACVzCgBmYXRhbCBmbGV4IHNjYW5uZXIgaW50ZXJuYWwgZXJyb3ItLWVuZCBvZiBidWZmZXIgbWlzc2VkAGZhdGFsIGVycm9yIC0gc2Nhbm5lciBpbnB1dCBidWZmZXIgb3ZlcmZsb3cAb3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIGFhZ19nZXRfbmV4dF9idWZmZXIoKQBpbnB1dABzeW50YXggYW1iaWd1aXR5IC0gYmFkbHkgZGVsaW1pdGVkIG51bWJlciAnACcgaW4gbGluZSAlZCBvZiAAIHNwbGl0cyBpbnRvIHR3byB0b2tlbnMKACVzAGxpbmUAJWQgJTFbIl0lbgBvdXQgb2YgZHluYW1pYyBtZW1vcnkgaW4gYWFnX2NyZWF0ZV9idWZmZXIoKQBvdXQgb2YgZHluYW1pYyBtZW1vcnkgaW4gYWFnZW5zdXJlX2J1ZmZlcl9zdGFjaygpADogACBpbiBsaW5lICVkACBuZWFyICcAIHNjYW5uaW5nIGEgcXVvdGVkIHN0cmluZyAobWlzc2luZyBlbmRxdW90ZT8gbG9uZ2VyIHRoYW4gJWQ/KQAKU3RyaW5nIHN0YXJ0aW5nOiIAIHNjYW5uaW5nIGEgSFRNTCBzdHJpbmcgKG1pc3NpbmcgJz4nPyBiYWQgbmVzdGluZz8gbG9uZ2VyIHRoYW4gJWQ/KQAKU3RyaW5nIHN0YXJ0aW5nOjwAIHNjYW5uaW5nIGEgLyouLi4qLyBjb21tZW50IChtaXNzaW5nICcqLz8gbG9uZ2VyIHRoYW4gJWQ/KQBmbGV4IHNjYW5uZXIgcHVzaC1iYWNrIG92ZXJmbG93ACIiAHN0cmljdABsaW5lbGVuZ3RoADsKACBba2V5PQBdACBbACwKAD0AXyVsZF9TVVNQRUNUAGRpAHN0cmljdCAAewoAXTsKABLu7hQJA+7+7u7uAe7u7gHu7gr+7hMZFe4TAe7u7u4LEe7u7u7u7u7u7gHu7hYJAQEdDxfu7hoXG+7uHO7u7u4BGfvu7u4B7hDu7h7u7u7uAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcRAgICAgICAgICAgICAhIQAhMCAhYCAgICAgICAgICAgICAgICAgICAgICAgICAhQCFQICAgICAgICAgICAgICAgICAgICAgICAgICAgICDgIPAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgECAwQFBgcICQoLDA0LAwQFDwcDDA0GDA0ODA0aFRYAAQADBw4GDwgMDRITKhARCRAvMBEyFxMNFBIuEhRBEzITLEAqQhksQkYiDA0OIw8JEBEKEBHJEBEtRUb8AQb2Dwf2JAIQES8wNk1OKCY7PCo2MTk9Py86QNhEMD4lN0M1Sys4SUwAAwkAAAABDgILDAgjJCU2Oz0ADRASGxYcEicyIhczHjwGBzUFDxEUGCkAEykAAAAAADcVKB0eACEmNB8wPhksABsAIBoqACs6Li8AMTg5LQACAgEAAwMBAAEAAQEBAAIBAQACAgMBAQAABQABAwEDBQMBAQEBAgABAAQCAAIBAQMCAQADAgEAAQEAAQEBAwAYGRkZGhscHB0dHh4fHyAgISEiIiMkJCYnJSUoKCkpKSoqKysrLCwtLS4vLzAxMTIzNDY1Nzc3ODg4OTk6Ou7u/+7u7u7u7h8g7gDv7u7uDO7u7ggN7u7u+O7u7u7u7vXu/wMIBCEFCxITJxQVFikyQRcYGRosMzRCR0gbShwdLh5PHyBrZXkAYXR0cmlidXRlIG1hY3JvcyBub3QgaW1wbGVtZW50ZWQAJXM6JXMAQ291bGQgbm90IG9wZW4gIiVzIiBmb3Igd3JpdGluZyA6ICVzCgBObyBsaWJ6IHN1cHBvcnQuCgAuJWQAbm9uYW1lLmd2AGd2d3JpdGVfbm9feiBwcm9ibGVtICVkCgBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlCgBObyBsaWJ6IHN1cHBvcnQKAGd2cHJpbnRmOiAlcwoALTk5OTk5OTk5OTk5OTk5OS45OQBncmFwaHZpegAyLjQwLjEAMjAxNjEyMjUuMDMwNAByZW5kZXIAbGF5b3V0AGRldmljZQBsb2FkaW1hZ2UAZHluYW1pYyBsb2FkaW5nIG5vdCBhdmFpbGFibGUKAFVzaW5nICVzOiAlczolcwoAZ3Z1c2Vyc2hhcGUuYwBndnVzZXJzaGFwZV9maW5kAGd2dXNlcnNoYXBlX2ZpbGVfYWNjZXNzAEZpbGVuYW1lICIlcyIgaXMgdW5zYWZlCgAlcyB3aGlsZSBvcGVuaW5nICVzCgB1cy0+ZgBndnVzZXJzaGFwZV9vcGVuACIlcyIgd2FzIG5vdCBmb3VuZCBhcyBhIGZpbGUgb3IgYXMgYSBzaGFwZSBsaWJyYXJ5IG1lbWJlcgoAL01lZGlhQm94AChbYS16XVthLXpBLVpdKik9IihbXiJdKikiAGNhbm5vdCBjb21waWxlIHJlZ3VsYXIgZXhwcmVzc2lvbiAlcwAlbGYlMnMAcHQAdmlld0JveAAlbGYgJWxmICVsZiAlbGYAaW4AcHgAcGMAIgBjbQBtbQAlJUJvdW5kaW5nQm94OgAB0NHS09TV1tfY2QA8c3ZnAFdFQlAAd2VicAAobGliKQCJUE5HDQoaCgBwbmcAJSFQUy1BZG9iZS0AQk0AYm1wAEdJRjgAZ2lmAP/Y/+AAanBlZwAlUERGLQBwZGYAxdDTxgBlcHMAPD94bWwAeG1sAFJJRkYAcmlmZgAAAAEAAGljbwBMYXlvdXQgdHlwZTogIiVzIiBub3QgcmVjb2duaXplZC4gVXNlIG9uZSBvZjolcwoAJWQgJWQgJWQgJWQATGF5b3V0IHdhcyBub3QgZG9uZQoAZmFpbHVyZSBtYWxsb2MnaW5nIGZvciByZXN1bHQgc3RyaW5nAGdjOiBPdXQgb2YgbWVtb3J5CgBfY2NfAG9yaWcAb3AAY2NvbXBzLmMAbWFwQ2x1c3QAY2NncmFwaGluZm8AY2Nnbm9kZWluZm8AKCU0bGQpICU3bGQgbm9kZXMgJTdsZCBlZGdlcwoAICAgICAgICU3ZCBub2RlcyAlN2QgZWRnZXMgJTdsZCBjb21wb25lbnRzICVzCgBkZwBFcnJvcjogbm9kZSAiJXMiIGJlbG9uZ3MgdG8gdHdvIG5vbi1uZXN0ZWQgY2x1c3RlcnMgIiVzIiBhbmQgIiVzIgoAc29ydHYAcm93IG1ham9yAGNvbHVtbiBtYWpvcgBhcnJheSBwYWNraW5nOiAlcyAlZCByb3dzICVkIGNvbHVtbnMKAGJiWyVzXSAlLjVnICUuNWcgJS41ZyAlLjVnCgBzdGVwIHNpemUgPSAlZAoAcG9zWyVkXSAlZCAlZAoAY2MgKCVkIGNlbGxzKSBhdCAoJWQsJWQpICglZCwlZCkKAGNjICglZCBjZWxscykgYXQgKCVkLCVkKQoAJXMgbm8uIGNlbGxzICVkIFcgJWQgSCAlZAoAICAlZCAlZCBjZWxsCgBsaWJwYWNrOiBkaXNjID0gJWYgKCA8IDApCgBQYWNraW5nOiBjb21wdXRlIGdyaWQgc2l6ZQoAYSAlZiBiICVmIGMgJWYgZCAlZiByICVmCgByb290ICVkICglZikgJWQgKCVmKQoAIHIxICVmIHIyICVmCgBwaW5mbwBwYWNrLmMAZ2V0UGFja0luZm8AICBtYXJnaW4gJWQKAHBhY2ttb2RlAHBhcnNlUGFja01vZGVJbmZvAGFycmF5AGFzcGVjdAAlZgBwYWNrIGluZm86CgAgIG1vZGUgICAlcwoAICBhc3BlY3QgJWYKACAgc2l6ZSAgICVkCgAgIGZsYWdzICAlZAoAdW5kZWZpbmVkAHBhY2sAQXJyb3cgdHlwZSAiJXMiIHVua25vd24gLSBpZ25vcmluZwoAbm9ybWFsAGNyb3cAdGVlAGRvdABpbnYAdmVlAHBlbgBtcHR5AGN1cnZlAGljdXJ2ZQBsAGhhbGYAaW52ZW1wdHkAX2JhY2tncm91bmQAX2RyYXdfAENvdWxkIG5vdCBwYXJzZSAiX2JhY2tncm91bmQiIGF0dHJpYnV0ZSBpbiBncmFwaCAlcwoAICAiJXMiCgBubyBtZW1vcnkgZnJvbSB6bWFsbG9jKCkKAG9iagBlbWl0LmMAcG9wX29ial9zdGF0ZQBjbHVzdAAlbGQAcGFnZSVkLCVkXwBUb3RhbCBzaXplID4gMSBpbiAiJXMiIGNvbG9yIHNwZWMgAElsbGVnYWwgbGVuZ3RoIHZhbHVlIGluICIlcyIgY29sb3IgYXR0cmlidXRlIABsbnJjb2xvcnNjaGVtZQBlbWl0X2VkZ2VfbGFiZWwAJXMtJXMAZm9yd2FyZABiYWNrACAtPiAAIC0tIABpbiBlZGdlICVzJXMlcwoAbGFiZWxhbGlnbmVkAGVkZ2VocmVmAGVkZ2VVUkwAbGFiZWxocmVmAGxhYmVsVVJMAHRhaWxocmVmAHRhaWxVUkwAaGVhZGhyZWYAaGVhZFVSTABlZGdldGFyZ2V0AGxhYmVsdGFyZ2V0AHRhaWx0YXJnZXQAaGVhZHRhcmdldABlZGdldG9vbHRpcABsYWJlbHRvb2x0aXAAdGFpbHRvb2x0aXAAaGVhZHRvb2x0aXAAAW5lc3Rpbmcgbm90IGFsbG93ZWQgaW4gc3R5bGU6ICVzCgB1bm1hdGNoZWQgJyknIGluIHN0eWxlOiAlcwoAdHJ1bmNhdGluZyBzdHlsZSAnJXMnCgB1bm1hdGNoZWQgJygnIGluIHN0eWxlOiAlcwoAYWxsAGluIGNsdXN0ZXIgJXMKAE1vcmUgdGhhbiAyIGNvbG9ycyBzcGVjaWZpZWQgZm9yIGEgZ3JhZGllbnQgLSBpZ25vcmluZyByZW1haW5pbmcKAGdyYWRpZW50IHBlbiBjb2xvcnMgbm90IHlldCBzdXBwb3J0ZWQuCgBJbWFnZXMgdW5zdXBwb3J0ZWQgaW4gImJhY2tncm91bmQiIGF0dHJpYnV0ZQoAbGF5ZXJzIG5vdCBzdXBwb3J0ZWQgaW4gJXMgb3V0cHV0CgBMYXlvdXQgd2FzIG5vdCBkb25lLiAgTWlzc2luZyBsYXlvdXQgcGx1Z2lucz8gCgBndlJlbmRlckpvYnMgJXM6ICUuMmYgc2Vjcy4KAGxheW91dCB3YXMgbm90IGRvbmUKAHJlbmRlcmVyIGZvciAlcyBpcyB1bmF2YWlsYWJsZQoAcGFnZWRpcj0lcyBpZ25vcmVkCgB2aWV3cG9ydAAlbGYsJWxmLCVsZiwnJVteJ10nACVsZiwlbGYsJWxmLCVbXixdJXMAJWxmLCVsZiwlbGYsJWxmLCVsZgBvdXRwdXRvcmRlcgBvZGVzZmlyc3QAZGdlc2ZpcnN0AGxheWVycwBsYXllcnNlbGVjdABUaGUgbGF5ZXJzZWxlY3QgYXR0cmlidXRlICIlcyIgZG9lcyBub3QgbWF0Y2ggYW55IGxheWVyIHNwZWNpZmVkIGJ5IHRoZSBsYXllcnMgYXR0cmlidXRlIC0gaWdub3JlZC4KAGxheWVyc2VwADoJIABsYXllcmxpc3RzZXAALABUaGUgY2hhcmFjdGVyICclYycgYXBwZWFycyBpbiBib3RoIHRoZSBsYXllcnNlcCBhbmQgbGF5ZXJsaXN0c2VwIGF0dHJpYnV0ZXMgLSBsYXllcmxpc3RzZXAgaWdub3JlZC4KAHBhZABCTABwYWdlZGlyAHNvbGlkAABzZXRsaW5ld2lkdGgAMQAAc3BsLT5zaXplID4gMABpbml0X3NwbGluZXNfYmIAYnouc2l6ZSA+IDAAYmV6aWVyX2JiAGJ6LnNpemUgJSAzID09IDEAJWxmAGZvbnRwYXRoAERPVEZPTlRQQVRIAEdERk9OVFBBVEgAaW1hZ2VwYXRoAHF1YW50dW0AcmFua2RpcgBMUgBCVABSTABub2Rlc2VwAHJhbmtzZXAAZXF1YWxseQBzaG93Ym94ZXMAZm9udG5hbWVzAHNpemUAcGFnZQBjZW50ZXIAcm90YXRlAG9yaWVudGF0aW9uAGxhbmRzY2FwZQBjbHVzdGVycmFuawBjb25jZW50cmF0ZQBkcGkAcmVzb2x1dGlvbgBvcmRlcmluZwBmaWxsY29sb3IAZm9udHNpemUAZm9udG5hbWUAZm9udGNvbG9yAHhsYWJlbABwZW53aWR0aABwZXJpcGhlcmllcwBza2V3AGRpc3RvcnRpb24Abm9qdXN0aWZ5AGxheWVyAGdyb3VwAGNvbW1lbnQAdmVydGljZXMAegB3ZWlnaHQAbGFiZWxmbG9hdABkaXIAYXJyb3doZWFkAGFycm93dGFpbABoZWFkbGFiZWwAdGFpbGxhYmVsAGxhYmVsZm9udHNpemUAbGFiZWxmb250bmFtZQBsYWJlbGZvbnRjb2xvcgBsYWJlbGRpc3RhbmNlAGxhYmVsYW5nbGUAbWlubGVuAGRlY29yYXRlAGFycm93c2l6ZQBjb25zdHJhaW50AHRhaWxjbGlwAGhlYWRjbGlwAGxhYmVsanVzdABsb2NhbABnbG9iYWwAJWxmLCVsZiVjACVsZiVjAHJhdGlvAGF1dG8AY29tcHJlc3MAZXhwYW5kAGZpbGwAZ2QAcHMAc3ZnAGNoYXJzZXQAdXRmLTgAbGF0aW4tMQBsYXRpbjEAbDEASVNPLTg4NTktMQBJU09fODg1OS0xAElTTzg4NTktMQBJU08tSVItMTAwAGJpZy01AGJpZzUAdXRmOABVbnN1cHBvcnRlZCBjaGFyc2V0ICIlcyIgLSBhc3N1bWluZyB1dGYtOAoAVW5zdXBwb3J0ZWQgY2hhcnNldCB2YWx1ZSAlZAoAVVRGLTgAQklHLTUAaW4gbGFiZWwgb2YgZ3JhcGggJXMKAGluIGxhYmVsIG9mIG5vZGUgJXMKAGluIGxhYmVsIG9mIGVkZ2UgJXMgJXMgJXMKAGtpbmQgPT0gTFRfTk9ORQBsYWJlbHMuYwBtYWtlX2xhYmVsAFxMAFxHAFxFAFxIAFxUACYjMTM7ACYjMTA7ACZxdW90OwAmIzE2MDsAJmFtcDsAJmd0OwAmIzM5OwAmIzQ1OwAmbHQ7ACVzICVkIG5vZGVzICVkIGVkZ2VzIG1heGl0ZXI9JWQgYmFsYW5jZT0lZAoAbmV0d29yayBzaW1wbGV4OiAAJWQgACVzJWQgbm9kZXMgJWQgZWRnZXMgJWQgaXRlciAlLjJmIHNlYwoAdXBkYXRlOiBtaXNtYXRjaGVkIGxjYSBpbiB0cmVldXBkYXRlcwoAVHJlZV9lZGdlLnNpemUgPT0gTl9ub2RlcyAtIDEAbnMuYwBmZWFzaWJsZV90cmVlACFUUkVFX0VER0UoZSkAbWVyZ2VfdHJlZXMAKHIwLT5oZWFwX2luZGV4ID4gLTEpIHx8IChyMS0+aGVhcF9pbmRleCA+IC0xKQBTVHNldFVuaW9uAHItPmhlYXBfaW5kZXggPj0gMABhZGRfdHJlZV9lZGdlOiBtaXNzaW5nIHRyZWUgZWRnZQoAYWRkX3RyZWVfZWRnZTogZW1wdHkgb3V0ZWRnZSBsaXN0CgBhZGRfdHJlZV9lZGdlOiBlbXB0eSBpbmVkZ2UgbGlzdAoAdHJvdWJsZSBpbiBpbml0X3JhbmsKAAklcyAlZAoAc2VhcmNoc2l6ZQBncmFwaCAAIABub2RlIABzdG9wCgAlLjVnAHBvcwByZWN0cwB4bHAAbHAAaGVhZF9scAB0YWlsX2xwAGx3aWR0aABsaGVpZ2h0AGJiACUuNWcsJS41ZywlLjVnACwlLjVnACUuNWcsJS41ZwBzYW1wbGVwb2ludHMAJS41ZyAlLjVnAHMsJS41ZywlLjVnIABlLCUuNWcsJS41ZyAAJS41ZywlLjVnLCUuNWcsJS41ZwAlLjJmACUuNWcsJS41ZywlLjVnLCUuNWcgAC9wYXRoYm94IHsKICAgIC9YIGV4Y2ggbmVnICUuNWcgc3ViIGRlZgogICAgL1kgZXhjaCAlLjVnIHN1YiBkZWYKICAgIC94IGV4Y2ggbmVnICUuNWcgc3ViIGRlZgogICAgL3kgZXhjaCAlLjVnIHN1YiBkZWYKICAgIG5ld3BhdGggeCB5IG1vdmV0bwogICAgWCB5IGxpbmV0bwogICAgWCBZIGxpbmV0bwogICAgeCBZIGxpbmV0bwogICAgY2xvc2VwYXRoIHN0cm9rZQp9IGRlZgoAL3BhdGhib3ggewogICAgL1kgZXhjaCAlLjVnIHN1YiBkZWYKICAgIC9YIGV4Y2ggJS41ZyBzdWIgZGVmCiAgICAveSBleGNoICUuNWcgc3ViIGRlZgogICAgL3ggZXhjaCAlLjVnIHN1YiBkZWYKICAgIG5ld3BhdGggeCB5IG1vdmV0bwogICAgWCB5IGxpbmV0bwogICAgWCBZIGxpbmV0bwogICAgeCBZIGxpbmV0bwogICAgY2xvc2VwYXRoIHN0cm9rZQogfSBkZWYKL2RiZ3N0YXJ0IHsgZ3NhdmUgJS41ZyAlLjVnIHRyYW5zbGF0ZSB9IGRlZgovYXJyb3dsZW5ndGggMTAgZGVmCi9hcnJvd3dpZHRoIGFycm93bGVuZ3RoIDIgZGl2IGRlZgovYXJyb3doZWFkIHsKICAgIGdzYXZlCiAgICByb3RhdGUKICAgIGN1cnJlbnRwb2ludAogICAgbmV3cGF0aAogICAgbW92ZXRvCiAgICBhcnJvd2xlbmd0aCBhcnJvd3dpZHRoIDIgZGl2IHJsaW5ldG8KICAgIDAgYXJyb3d3aWR0aCBuZWcgcmxpbmV0bwogICAgY2xvc2VwYXRoIGZpbGwKICAgIGdyZXN0b3JlCn0gYmluZCBkZWYKL21ha2VhcnJvdyB7CiAgICBjdXJyZW50cG9pbnQgZXhjaCBwb3Agc3ViIGV4Y2ggY3VycmVudHBvaW50IHBvcCBzdWIgYXRhbgogICAgYXJyb3doZWFkCn0gYmluZCBkZWYKL3BvaW50IHsgICAgbmV3cGF0aCAgICAyIDAgMzYwIGFyYyBmaWxsfSBkZWYvbWFrZXZlYyB7CiAgICAvWSBleGNoIGRlZgogICAgL1ggZXhjaCBkZWYKICAgIC95IGV4Y2ggZGVmCiAgICAveCBleGNoIGRlZgogICAgbmV3cGF0aCB4IHkgbW92ZXRvCiAgICBYIFkgbGluZXRvIHN0cm9rZQogICAgWCBZIG1vdmV0bwogICAgeCB5IG1ha2VhcnJvdwp9IGRlZgoAbG9zdCAlcyAlcyBlZGdlCgBubyBwb3NpdGlvbiBmb3IgZWRnZSB3aXRoIGxhYmVsICVzAG5vIHBvc2l0aW9uIGZvciBlZGdlIHdpdGggdGFpbCBsYWJlbCAlcwBubyBwb3NpdGlvbiBmb3IgZWRnZSB3aXRoIGhlYWQgbGFiZWwgJXMAbm8gcG9zaXRpb24gZm9yIGVkZ2Ugd2l0aCB4bGFiZWwgJXMAZm9yY2VsYWJlbHMAJWQgb3V0IG9mICVkIGxhYmVscyBwb3NpdGlvbmVkLgoAJWQgb3V0IG9mICVkIGV4dGVyaW9yIGxhYmVscyBwb3NpdGlvbmVkLgoAJWQgb2JqcyAlZCB4bGFiZWxzIGZvcmNlPSVkIGJiPSglLjAyZiwlLjAyZikgKCUuMDJmLCUuMDJmKQoAb2JqZWN0cwoAIFslZF0gKCUuMDJmLCUuMDJmKSAoJS4wMmYsJS4wMmYpICVwICIlcyIKAHhsYWJlbHMKACBbJWRdICVwIHNldCAlZCAoJS4wMmYsJS4wMmYpICglLjAyZiwlLjAyZikgJXMKAHNoYXBlZmlsZSBub3Qgc2V0IG9yIG5vdCBmb3VuZCBmb3IgZXBzZiBub2RlICVzCgBjb3VsZG4ndCBvcGVuIGVwc2YgZmlsZSAlcwoAJSUlJUJvdW5kaW5nQm94OiAlZCAlZCAlZCAlZAByZWFkAEJvdW5kaW5nQm94IG5vdCBmb3VuZCBpbiBlcHNmIGZpbGUgJXMKAGNhbid0IGZpbmQgbGlicmFyeSBmaWxlICVzCgBjYW4ndCBvcGVuIGxpYnJhcnkgZmlsZSAlcwoARU9GAEJFR0lOAEVORABUUkFJTEVSAC91c2VyX3NoYXBlXyVkIHsKACUlQmVnaW5Eb2N1bWVudDoKACUlRW5kRG9jdW1lbnQKAH0gYmluZCBkZWYKAFVURi04IGlucHV0IHVzZXMgbm9uLUxhdGluMSBjaGFyYWN0ZXJzIHdoaWNoIGNhbm5vdCBiZSBoYW5kbGVkIGJ5IHRoaXMgUG9zdFNjcmlwdCBkcml2ZXIKAGNhbm5vdCByZS1hbGxvY2F0ZSBwcwoAcm91dGVzcGxpbmVzaW5pdDogY2Fubm90IGFsbG9jYXRlIHBzCgByb3V0ZXNwbGluZXM6ICVkIGVkZ2VzLCAlZCBib3hlcyAlLjJmIHNlYwoAaW4gcm91dGVzcGxpbmVzLCBjYW5ub3QgZmluZCBOT1JNQUwgZWRnZQoAaW4gcm91dGVzcGxpbmVzLCBpbGxlZ2FsIHZhbHVlcyBvZiBwcmV2ICVkIGFuZCBuZXh0ICVkLCBsaW5lICVkCgBpbiByb3V0ZXNwbGluZXMsIGVkZ2UgaXMgYSBsb29wIGF0ICVzCgBpbiByb3V0ZXNwbGluZXMsIFBzaG9ydGVzdHBhdGggZmFpbGVkCgBpbiByb3V0ZXNwbGluZXMsIFByb3V0ZXNwbGluZSBmYWlsZWQKAFVuYWJsZSB0byByZWNsYWltIGJveCBzcGFjZSBpbiBzcGxpbmUgcm91dGluZyBmb3IgZWRnZSAiJXMiIC0+ICIlcyIuIFNvbWV0aGluZyBpcyBwcm9iYWJseSBzZXJpb3VzbHkgd3JvbmcuCgBpbiBjaGVja3BhdGgsIGJveCAwIGhhcyBMTCBjb29yZCA+IFVSIGNvb3JkCgBpbiBjaGVja3BhdGgsIGJveCAlZCBoYXMgTEwgY29vcmQgPiBVUiBjb29yZAoAaW4gY2hlY2twYXRoLCBib3hlcyAlZCBhbmQgJWQgZG9uJ3QgdG91Y2gKAGluIGNoZWNrcGF0aCwgc3RhcnQgcG9ydCBub3QgaW4gZmlyc3QgYm94CgBpbiBjaGVja3BhdGgsIGVuZCBwb3J0IG5vdCBpbiBsYXN0IGJveAoAJWQgYm94ZXM6CgAlZCAoJS41ZywgJS41ZyksICglLjVnLCAlLjVnKQoAY29uc3RyYWluZWQAbm90IGNvbnN0cmFpbmVkAHN0YXJ0IHBvcnQ6ICglLjVnLCAlLjVnKSwgdGFuZ2VudCBhbmdsZTogJS41ZywgJXMKAGVuZCBwb3J0OiAoJS41ZywgJS41ZyksIHRhbmdlbnQgYW5nbGU6ICUuNWcsICVzCgBzaWRlcyA9PSA0AHNoYXBlcy5jAHJvdW5kX2Nvcm5lcnMAYmFkIGxhYmVsIGZvcm1hdCAlcwoAXE4AbWFyZ2luACVsZiwlbGYAcmVndWxhcgBjdXN0b20Ac2hhcGVmaWxlADxuaWw+AE5vIG9yIGltcHJvcGVyIHNoYXBlZmlsZT0iJXMiIGZvciBub2RlICIlcyIKAE5vIG9yIGltcHJvcGVyIGltYWdlPSIlcyIgZm9yIG5vZGUgIiVzIgoAbGFiZWxsb2MAbm9kZSAnJXMnLCBncmFwaCAnJXMnIHNpemUgdG9vIHNtYWxsIGZvciBsYWJlbAoAZXBzZgB1c2luZyAlcyBmb3IgdW5rbm93biBzaGFwZSAlcwoAcG9seWdvbgBvdmFsAGNpcmNsZQBwb2ludABlZ2cAdHJpYW5nbGUAcGxhaW50ZXh0AHBsYWluAGRpYW1vbmQAdHJhcGV6aXVtAHBhcmFsbGVsb2dyYW0AaG91c2UAcGVudGFnb24AaGV4YWdvbgBzZXB0YWdvbgBvY3RhZ29uAG5vdGUAdGFiAGZvbGRlcgBib3gzZABjb21wb25lbnQAY3lsaW5kZXIAcmVjdAByZWN0YW5nbGUAc3F1YXJlAGRvdWJsZWNpcmNsZQBkb3VibGVvY3RhZ29uAHRyaXBsZW9jdGFnb24AaW52dHJpYW5nbGUAaW52dHJhcGV6aXVtAGludmhvdXNlAHVuZGVybGluZQBNZGlhbW9uZABNc3F1YXJlAE1jaXJjbGUAcHJvbW90ZXIAY2RzAHRlcm1pbmF0b3IAdXRyAGluc3VsYXRvcgByaWJvc2l0ZQBybmFzdGFiAHByb3RlYXNlc2l0ZQBwcm90ZWluc3RhYgBwcmltZXJzaXRlAHJlc3RyaWN0aW9uc2l0ZQBmaXZlcG92ZXJoYW5nAHRocmVlcG92ZXJoYW5nAG5vdmVyaGFuZwBhc3NlbWJseQBzaWduYXR1cmUAcnByb21vdGVyAGxhcnJvdwByYXJyb3cAbHByb21vdGVyAHJlY29yZABNcmVjb3JkAHN0YXIAIzgwODA4MAAjZmNmY2ZjACMzMDMwMzAAI2U4ZThlOAAjZTBlMGUwACNmMGYwZjAAIzEwMTAxMAAjZjhmOGY4AGluIG5vZGUgJXMKAHJvdW5kZWQAZGlhZ29uYWxzAHJhZGlhbABzdHJpcGVkAHdlZGdlZABfAG5vZGUgJXMsIHBvcnQgJXMsIHVucmVjb2duaXplZCBjb21wYXNzIHBvaW50ICclcycgLSBpZ25vcmVkCgBub2RlICVzLCBwb3J0ICVzIHVucmVjb2duaXplZAoAJS41ZyAlLjVnIHRyYW5zbGF0ZSBuZXdwYXRoIHVzZXJfc2hhcGVfJWQKAGludmlzAABmaWxsZWQAAHMAZQB3AHNwbGluZXMuYwBiZWdpbnBhdGgAUC0+ZW5kLnRoZXRhIDwgMiAqIE1fUEkAZW5kcGF0aABtYWtlU2VsZkVkZ2UAZ2V0c3BsaW5lcG9pbnRzOiBubyBzcGxpbmUgcG9pbnRzIGF2YWlsYWJsZSBmb3IgZWRnZSAoJXMsJXMpCgBwb2x5bGluZU1pZHBvaW50AHNwYW4tPmZvbnQAdGV4dHNwYW4uYwB0ZXh0c3Bhbl9zaXplAGZvbnQtPm5hbWUAZm9udG5hbWU6ICIlcyIgcmVzb2x2ZWQgdG86ICVzCgBmb250bmFtZTogdW5hYmxlIHRvIHJlc29sdmUgIiVzIgoAY291cgBhcmlhbABoZWx2ZXRpY2EAW2ludGVybmFsIHRpbWVzXQBbaW50ZXJuYWwgY291cmllcl0AW2ludGVybmFsIGFyaWFsXQBBdmFudEdhcmRlLUJvb2sAVVJXIEdvdGhpYyBMAGJvb2sAc2Fucy1TZXJpZgBBdmFudEdhcmRlLUJvb2tPYmxpcXVlAG9ibGlxdWUAaXRhbGljAEF2YW50R2FyZGUtRGVtaQBkZW1pAEF2YW50R2FyZGUtRGVtaU9ibGlxdWUAQm9va21hbi1EZW1pAFVSVyBCb29rbWFuIEwAc2VyaWYAQm9va21hbi1EZW1pSXRhbGljAEJvb2ttYW4tTGlnaHQAbGlnaHQAQm9va21hbi1MaWdodEl0YWxpYwBDb3VyaWVyAG1vbm9zcGFjZQBDb3VyaWVyLUJvbGQAQ291cmllci1Cb2xkT2JsaXF1ZQBDb3VyaWVyLU9ibGlxdWUASGVsdmV0aWNhAEhlbHZldGljYS1Cb2xkAEhlbHZldGljYS1Cb2xkT2JsaXF1ZQBIZWx2ZXRpY2EtTmFycm93AGNvbmRlbnNlZABIZWx2ZXRpY2EtTmFycm93LUJvbGQASGVsdmV0aWNhLU5hcnJvdy1Cb2xkT2JsaXF1ZQBIZWx2ZXRpY2EtTmFycm93LU9ibGlxdWUASGVsdmV0aWNhLU9ibGlxdWUATmV3Q2VudHVyeVNjaGxiay1Cb2xkAENlbnR1cnkgU2Nob29sYm9vayBMAE5ld0NlbnR1cnlTY2hsYmstQm9sZEl0YWxpYwBOZXdDZW50dXJ5U2NobGJrLUl0YWxpYwBOZXdDZW50dXJ5U2NobGJrLVJvbWFuAHJvbWFuAFBhbGF0aW5vLUJvbGQAUGFsYXRpbm8gTGlub3R5cGUAUGFsYXRpbm8tQm9sZEl0YWxpYwBQYWxhdGluby1JdGFsaWMAUGFsYXRpbm8tUm9tYW4AU3ltYm9sAGZhbnRhc3kAVGltZXMtQm9sZABUaW1lcwBUaW1lcy1Cb2xkSXRhbGljAFRpbWVzLUl0YWxpYwBaYXBmQ2hhbmNlcnktTWVkaXVtSXRhbGljAFVSVyBDaGFuY2VyeSBMAG1lZGl1bQBaYXBmRGluZ2JhdHMARGluZ2JhdHMAaW5wdXRzY2FsZQBubwB0cnVlAHllcwB1dGlscy5jAHUgPT0gVUZfZmluZCh1KQBVRl9zZXRuYW1lAAFmaWxlIGxvYWRpbmcgaXMgZGlzYWJsZWQgYmVjYXVzZSB0aGUgZW52aXJvbm1lbnQgY29udGFpbnMgU0VSVkVSX05BTUU9IiVzIgphbmQgdGhlIEdWX0ZJTEVfUEFUSCB2YXJpYWJsZSBpcyB1bnNldCBvciBlbXB0eS4KAFBhdGggcHJvdmlkZWQgdG8gZmlsZTogIiVzIiBoYXMgYmVlbiBpZ25vcmVkIGJlY2F1c2UgZmlsZXMgYXJlIG9ubHkgcGVybWl0dGVkIHRvIGJlIGxvYWRlZCBmcm9tIHRoZSBkaXJlY3RvcmllcyBpbiAiJXMiIHdoZW4gcnVubmluZyBpbiBhbiBodHRwIHNlcnZlci4KACVzJXMlcwAvADoAZWxsaXBzZQBUaW1lcy1Sb21hbgBjbHVzdGVyAF9fY2x1c3Rlcm5vZGVzAGNsdXN0ZXIgY3ljbGUgJXMgLS0gJXMgbm90IHN1cHBvcnRlZAoAdGFpbCBjbHVzdGVyICVzIGluc2lkZSBoZWFkIGNsdXN0ZXIgJXMKAGhlYWQgY2x1c3RlciAlcyBpbnNpZGUgdGFpbCBjbHVzdGVyICVzCgB0YWlsIG5vZGUgJXMgaW5zaWRlIGhlYWQgY2x1c3RlciAlcwoAaGVhZCBub2RlICVzIGluc2lkZSB0YWlsIGNsdXN0ZXIgJXMKAF9fAGxhYmVsAHNoYXBlAGJveABUd28gY2x1c3RlcnMgbmFtZWQgJXMgLSB0aGUgc2Vjb25kIHdpbGwgYmUgaWdub3JlZAoAbWFwTgBBRWxpZwBBYWN1dGUAQWNpcmMAQWdyYXZlAEFscGhhAEFyaW5nAEF0aWxkZQBBdW1sAEJldGEAQ2NlZGlsAENoaQBEYWdnZXIARGVsdGEARVRIAEVhY3V0ZQBFY2lyYwBFZ3JhdmUARXBzaWxvbgBFdGEARXVtbABHYW1tYQBJYWN1dGUASWNpcmMASWdyYXZlAElvdGEASXVtbABLYXBwYQBMYW1iZGEATXUATnRpbGRlAE51AE9FbGlnAE9hY3V0ZQBPY2lyYwBPZ3JhdmUAT21lZ2EAT21pY3JvbgBPc2xhc2gAT3RpbGRlAE91bWwAUGhpAFBpAFByaW1lAFBzaQBSaG8AU2Nhcm9uAFNpZ21hAFRIT1JOAFRhdQBUaGV0YQBVYWN1dGUAVWNpcmMAVWdyYXZlAFVwc2lsb24AVXVtbABYaQBZYWN1dGUAWXVtbABaZXRhAGFhY3V0ZQBhY2lyYwBhY3V0ZQBhZWxpZwBhZ3JhdmUAYWxlZnN5bQBhbHBoYQBhbXAAYW5kAGFuZwBhcmluZwBhc3ltcABhdGlsZGUAYXVtbABiZHF1bwBiZXRhAGJydmJhcgBidWxsAGNhcABjY2VkaWwAY2VkaWwAY2VudABjaGkAY2lyYwBjbHVicwBjb25nAGNvcHkAY3JhcnIAY3VwAGN1cnJlbgBkQXJyAGRhZ2dlcgBkYXJyAGRlZwBkZWx0YQBkaWFtcwBkaXZpZGUAZWFjdXRlAGVjaXJjAGVncmF2ZQBlbXB0eQBlbXNwAGVuc3AAZXBzaWxvbgBlcXVpdgBldGEAZXRoAGV1bWwAZXVybwBleGlzdABmbm9mAGZvcmFsbABmcmFjMTIAZnJhYzE0AGZyYWMzNABmcmFzbABnYW1tYQBnZQBndABoQXJyAGhhcnIAaGVhcnRzAGhlbGxpcABpYWN1dGUAaWNpcmMAaWV4Y2wAaWdyYXZlAGltYWdlAGluZmluAGludABpb3RhAGlxdWVzdABpc2luAGl1bWwAa2FwcGEAbEFycgBsYW1iZGEAbGFuZwBsYXF1bwBsYXJyAGxjZWlsAGxkcXVvAGxlAGxmbG9vcgBsb3dhc3QAbG96AGxybQBsc2FxdW8AbHNxdW8AbHQAbWFjcgBtZGFzaABtaWNybwBtaWRkb3QAbXUAbmFibGEAbmJzcABuZGFzaABuZQBuaQBub3QAbm90aW4AbnN1YgBudGlsZGUAbnUAb2FjdXRlAG9jaXJjAG9lbGlnAG9ncmF2ZQBvbGluZQBvbWVnYQBvbWljcm9uAG9wbHVzAG9yAG9yZGYAb3JkbQBvc2xhc2gAb3RpbGRlAG90aW1lcwBvdW1sAHBhcmEAcGFydABwZXJtaWwAcGVycABwaGkAcGkAcGl2AHBsdXNtbgBwb3VuZABwcmltZQBwcm9kAHByb3AAcHNpAHF1b3QAckFycgByYWRpYwByYW5nAHJhcXVvAHJhcnIAcmNlaWwAcmRxdW8AcmVhbAByZWcAcmZsb29yAHJobwBybG0AcnNhcXVvAHJzcXVvAHNicXVvAHNjYXJvbgBzZG90AHNlY3QAc2h5AHNpZ21hAHNpZ21hZgBzaW0Ac3BhZGVzAHN1YgBzdWJlAHN1bQBzdXAAc3VwMQBzdXAyAHN1cDMAc3VwZQBzemxpZwB0YXUAdGhlcmU0AHRoZXRhAHRoZXRhc3ltAHRoaW5zcAB0aG9ybgB0aWxkZQB0aW1lcwB0cmFkZQB1QXJyAHVhY3V0ZQB1YXJyAHVjaXJjAHVncmF2ZQB1bWwAdXBzaWgAdXBzaWxvbgB1dW1sAHdlaWVycAB4aQB5YWN1dGUAeWVuAHl1bWwAemV0YQB6d2oAenduagBVVEY4IGNvZGVzID4gNCBieXRlcyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgKGdyYXBoICVzKSAtIHRyZWF0ZWQgYXMgTGF0aW4tMS4gUGVyaGFwcyAiLUdjaGFyc2V0PWxhdGluMSIgaXMgbmVlZGVkPwoASW52YWxpZCAlZC1ieXRlIFVURjggZm91bmQgaW4gaW5wdXQgb2YgZ3JhcGggJXMgLSB0cmVhdGVkIGFzIExhdGluLTEuIFBlcmhhcHMgIi1HY2hhcnNldD1sYXRpbjEiIGlzIG5lZWRlZD8KAGJ6LnNpemUAb3ZlcmxhcF9iZXppZXIAdXJ2ZWQAb21wb3VuZABhbHNlAGluZQBvbmUAbwBydGhvAG9seWxpbmUAcGxpbmUAcnVlAGVzAFVua25vd24gInNwbGluZXMiIHZhbHVlOiAiJXMiIC0gaWdub3JlZAoAc3BsaW5lcwBvZGIAT3J0aG9nb25hbCBlZGdlcyBkbyBub3QgY3VycmVudGx5IGhhbmRsZSBlZGdlIGxhYmVscy4gVHJ5IHVzaW5nIHhsYWJlbHMuCgBvcnRobyAlcyAlcwoAY2hhbmkAb3J0aG8uYwBjaGFuU2VhcmNoAGNwACUlIVBTLUFkb2JlLTIuMAolJSUlQm91bmRpbmdCb3g6IChhdGVuZCkKL3BvaW50IHsKICAvWSBleGNoIGRlZgogIC9YIGV4Y2ggZGVmCiAgbmV3cGF0aAogIFggWSAzIDAgMzYwIGFyYyBmaWxsCn0gZGVmCi9jZWxsIHsKICAvWSBleGNoIGRlZgogIC9YIGV4Y2ggZGVmCiAgL3kgZXhjaCBkZWYKICAveCBleGNoIGRlZgogIG5ld3BhdGgKICB4IHkgbW92ZXRvCiAgeCBZIGxpbmV0bwogIFggWSBsaW5ldG8KICBYIHkgbGluZXRvCiAgY2xvc2VwYXRoIHN0cm9rZQp9IGRlZgovbm9kZSB7CiAvdSBleGNoIGRlZgogL3IgZXhjaCBkZWYKIC9kIGV4Y2ggZGVmCiAvbCBleGNoIGRlZgogbmV3cGF0aCBsIGQgbW92ZXRvCiByIGQgbGluZXRvIHIgdSBsaW5ldG8gbCB1IGxpbmV0bwogY2xvc2VwYXRoIGZpbGwKfSBkZWYKCgAlZCAlZCB0cmFuc2xhdGUKADAuOCAwLjggMC44IHNldHJnYmNvbG9yCgBzaG93cGFnZQolJSUlVHJhaWxlcgolJSUlQm91bmRpbmdCb3g6ICVkICVkICVkICVkCgBuZXdwYXRoICVkICVkIG1vdmV0bwoAJWQgJWQgbGluZXRvCgAlZCAlZCBsaW5ldG8gc3Ryb2tlCgBjaGFubmVsICVkICglZiwlZikKACAtPgoAICAgICAAKCglZiwlZiksKCVmLCVmKSkgJXMgJXMAQl9SSUdIVABCX0RPV04AQl9MRUZUAEJfVVAAQl9OT0RFAHNlZwBuZXh0X3NlZwBkZWNpZGVfcG9pbnQAaW5jb21wYXJhYmxlIHNlZ21lbnRzICEhIC0tIEFib3J0aW5nCgBzMS0+Y29tbV9jb29yZD09czItPmNvbW1fY29vcmQAaXNfcGFyYWxsZWwAZ3JhcGggRyB7CgAgbm9kZVtzaGFwZT1wb2ludF0KACAgJWQgW3Bvcz0iJWQsJWQiXQoAICAlZCAtLSAlZFtsZW49IiVmIl0KAH0KAGNvbG9yICVzACVzIGlzIG5vdCBhIGtub3duIGNvbG9yLgoAZXJyb3IgaW4gY29seGxhdGUoKQoAc29saWQAaW52aXNpYmxlAGJvbGQAc2V0bGluZXdpZHRoAGZpbGxlZAB1bmZpbGxlZAB0YXBlcmVkAGd2cmVuZGVyX3NldF9zdHlsZTogdW5zdXBwb3J0ZWQgc3R5bGUgJXMgLSBpZ25vcmluZwoAZ3ZyZW5kZXIuYwBndnJlbmRlcl91c2Vyc2hhcGUAbmFtZQBuYW1lWzBdAGJvdGgAam9iAGd2bG9hZGltYWdlLmMAZ3Zsb2FkaW1hZ2UAdXMAdXMtPm5hbWUAdXMtPm5hbWVbMF0ATm8gbG9hZGltYWdlIHBsdWdpbiBmb3IgIiVzIgoAUQBMZWZ0AEtQX0xlZnQAUmlnaHQAS1BfUmlnaHQAVXAAS1BfVXAARG93bgBLUF9Eb3duAHBsdXMAS1BfQWRkAG1pbnVzAEtQX1N1YnRyYWN0AEYAZWRnZQB0YWlscG9ydABoZWFkcG9ydABrZXkAVVJMAG5vZGUAZGlncmFwaABncmFwaABzdWJncmFwaABfTFRYX2xpYnJhcnkAdGV4dGxheW91dABvYmpwLT5sYmwAeGxhYmVscy5jAHhsYWRqdXN0AHhsaW50ZXJzZWN0aW9ucwBscCAhPSBjbHAAZ2V0aW50cnN4aQBvYmpwMS0+c3oueCA9PSAwICYmIG9ianAxLT5zei55ID09IDAAbGJsZW5jbG9zaW5nAHZwAHhsaGR4dW5sb2FkAHNpemU9PWZyZWVkAHJlY3QuYm91bmRhcnlbMl0gPCBJTlRfTUFYAG9ianBscG1rcwByZWN0LmJvdW5kYXJ5WzNdIDwgSU5UX01BWABvdXQgb2YgbWVtb3J5CgAjJTJ4JTJ4JTJ4JTJ4ACVsZiVsZiVsZgAvYWNjZW50My8xAC9hY2NlbnQzLzIAL2FjY2VudDMvMwAvYWNjZW50NC8xAC9hY2NlbnQ0LzIAL2FjY2VudDQvMwAvYWNjZW50NC80AC9hY2NlbnQ1LzEAL2FjY2VudDUvMgAvYWNjZW50NS8zAC9hY2NlbnQ1LzQAL2FjY2VudDUvNQAvYWNjZW50Ni8xAC9hY2NlbnQ2LzIAL2FjY2VudDYvMwAvYWNjZW50Ni80AC9hY2NlbnQ2LzUAL2FjY2VudDYvNgAvYWNjZW50Ny8xAC9hY2NlbnQ3LzIAL2FjY2VudDcvMwAvYWNjZW50Ny80AC9hY2NlbnQ3LzUAL2FjY2VudDcvNgAvYWNjZW50Ny83AC9hY2NlbnQ4LzEAL2FjY2VudDgvMgAvYWNjZW50OC8zAC9hY2NlbnQ4LzQAL2FjY2VudDgvNQAvYWNjZW50OC82AC9hY2NlbnQ4LzcAL2FjY2VudDgvOAAvYmx1ZXMzLzEAL2JsdWVzMy8yAC9ibHVlczMvMwAvYmx1ZXM0LzEAL2JsdWVzNC8yAC9ibHVlczQvMwAvYmx1ZXM0LzQAL2JsdWVzNS8xAC9ibHVlczUvMgAvYmx1ZXM1LzMAL2JsdWVzNS80AC9ibHVlczUvNQAvYmx1ZXM2LzEAL2JsdWVzNi8yAC9ibHVlczYvMwAvYmx1ZXM2LzQAL2JsdWVzNi81AC9ibHVlczYvNgAvYmx1ZXM3LzEAL2JsdWVzNy8yAC9ibHVlczcvMwAvYmx1ZXM3LzQAL2JsdWVzNy81AC9ibHVlczcvNgAvYmx1ZXM3LzcAL2JsdWVzOC8xAC9ibHVlczgvMgAvYmx1ZXM4LzMAL2JsdWVzOC80AC9ibHVlczgvNQAvYmx1ZXM4LzYAL2JsdWVzOC83AC9ibHVlczgvOAAvYmx1ZXM5LzEAL2JsdWVzOS8yAC9ibHVlczkvMwAvYmx1ZXM5LzQAL2JsdWVzOS81AC9ibHVlczkvNgAvYmx1ZXM5LzcAL2JsdWVzOS84AC9ibHVlczkvOQAvYnJiZzEwLzEAL2JyYmcxMC8xMAAvYnJiZzEwLzIAL2JyYmcxMC8zAC9icmJnMTAvNAAvYnJiZzEwLzUAL2JyYmcxMC82AC9icmJnMTAvNwAvYnJiZzEwLzgAL2JyYmcxMC85AC9icmJnMTEvMQAvYnJiZzExLzEwAC9icmJnMTEvMTEAL2JyYmcxMS8yAC9icmJnMTEvMwAvYnJiZzExLzQAL2JyYmcxMS81AC9icmJnMTEvNgAvYnJiZzExLzcAL2JyYmcxMS84AC9icmJnMTEvOQAvYnJiZzMvMQAvYnJiZzMvMgAvYnJiZzMvMwAvYnJiZzQvMQAvYnJiZzQvMgAvYnJiZzQvMwAvYnJiZzQvNAAvYnJiZzUvMQAvYnJiZzUvMgAvYnJiZzUvMwAvYnJiZzUvNAAvYnJiZzUvNQAvYnJiZzYvMQAvYnJiZzYvMgAvYnJiZzYvMwAvYnJiZzYvNAAvYnJiZzYvNQAvYnJiZzYvNgAvYnJiZzcvMQAvYnJiZzcvMgAvYnJiZzcvMwAvYnJiZzcvNAAvYnJiZzcvNQAvYnJiZzcvNgAvYnJiZzcvNwAvYnJiZzgvMQAvYnJiZzgvMgAvYnJiZzgvMwAvYnJiZzgvNAAvYnJiZzgvNQAvYnJiZzgvNgAvYnJiZzgvNwAvYnJiZzgvOAAvYnJiZzkvMQAvYnJiZzkvMgAvYnJiZzkvMwAvYnJiZzkvNAAvYnJiZzkvNQAvYnJiZzkvNgAvYnJiZzkvNwAvYnJiZzkvOAAvYnJiZzkvOQAvYnVnbjMvMQAvYnVnbjMvMgAvYnVnbjMvMwAvYnVnbjQvMQAvYnVnbjQvMgAvYnVnbjQvMwAvYnVnbjQvNAAvYnVnbjUvMQAvYnVnbjUvMgAvYnVnbjUvMwAvYnVnbjUvNAAvYnVnbjUvNQAvYnVnbjYvMQAvYnVnbjYvMgAvYnVnbjYvMwAvYnVnbjYvNAAvYnVnbjYvNQAvYnVnbjYvNgAvYnVnbjcvMQAvYnVnbjcvMgAvYnVnbjcvMwAvYnVnbjcvNAAvYnVnbjcvNQAvYnVnbjcvNgAvYnVnbjcvNwAvYnVnbjgvMQAvYnVnbjgvMgAvYnVnbjgvMwAvYnVnbjgvNAAvYnVnbjgvNQAvYnVnbjgvNgAvYnVnbjgvNwAvYnVnbjgvOAAvYnVnbjkvMQAvYnVnbjkvMgAvYnVnbjkvMwAvYnVnbjkvNAAvYnVnbjkvNQAvYnVnbjkvNgAvYnVnbjkvNwAvYnVnbjkvOAAvYnVnbjkvOQAvYnVwdTMvMQAvYnVwdTMvMgAvYnVwdTMvMwAvYnVwdTQvMQAvYnVwdTQvMgAvYnVwdTQvMwAvYnVwdTQvNAAvYnVwdTUvMQAvYnVwdTUvMgAvYnVwdTUvMwAvYnVwdTUvNAAvYnVwdTUvNQAvYnVwdTYvMQAvYnVwdTYvMgAvYnVwdTYvMwAvYnVwdTYvNAAvYnVwdTYvNQAvYnVwdTYvNgAvYnVwdTcvMQAvYnVwdTcvMgAvYnVwdTcvMwAvYnVwdTcvNAAvYnVwdTcvNQAvYnVwdTcvNgAvYnVwdTcvNwAvYnVwdTgvMQAvYnVwdTgvMgAvYnVwdTgvMwAvYnVwdTgvNAAvYnVwdTgvNQAvYnVwdTgvNgAvYnVwdTgvNwAvYnVwdTgvOAAvYnVwdTkvMQAvYnVwdTkvMgAvYnVwdTkvMwAvYnVwdTkvNAAvYnVwdTkvNQAvYnVwdTkvNgAvYnVwdTkvNwAvYnVwdTkvOAAvYnVwdTkvOQAvZGFyazIzLzEAL2RhcmsyMy8yAC9kYXJrMjMvMwAvZGFyazI0LzEAL2RhcmsyNC8yAC9kYXJrMjQvMwAvZGFyazI0LzQAL2RhcmsyNS8xAC9kYXJrMjUvMgAvZGFyazI1LzMAL2RhcmsyNS80AC9kYXJrMjUvNQAvZGFyazI2LzEAL2RhcmsyNi8yAC9kYXJrMjYvMwAvZGFyazI2LzQAL2RhcmsyNi81AC9kYXJrMjYvNgAvZGFyazI3LzEAL2RhcmsyNy8yAC9kYXJrMjcvMwAvZGFyazI3LzQAL2RhcmsyNy81AC9kYXJrMjcvNgAvZGFyazI3LzcAL2RhcmsyOC8xAC9kYXJrMjgvMgAvZGFyazI4LzMAL2RhcmsyOC80AC9kYXJrMjgvNQAvZGFyazI4LzYAL2RhcmsyOC83AC9kYXJrMjgvOAAvZ25idTMvMQAvZ25idTMvMgAvZ25idTMvMwAvZ25idTQvMQAvZ25idTQvMgAvZ25idTQvMwAvZ25idTQvNAAvZ25idTUvMQAvZ25idTUvMgAvZ25idTUvMwAvZ25idTUvNAAvZ25idTUvNQAvZ25idTYvMQAvZ25idTYvMgAvZ25idTYvMwAvZ25idTYvNAAvZ25idTYvNQAvZ25idTYvNgAvZ25idTcvMQAvZ25idTcvMgAvZ25idTcvMwAvZ25idTcvNAAvZ25idTcvNQAvZ25idTcvNgAvZ25idTcvNwAvZ25idTgvMQAvZ25idTgvMgAvZ25idTgvMwAvZ25idTgvNAAvZ25idTgvNQAvZ25idTgvNgAvZ25idTgvNwAvZ25idTgvOAAvZ25idTkvMQAvZ25idTkvMgAvZ25idTkvMwAvZ25idTkvNAAvZ25idTkvNQAvZ25idTkvNgAvZ25idTkvNwAvZ25idTkvOAAvZ25idTkvOQAvZ3JlZW5zMy8xAC9ncmVlbnMzLzIAL2dyZWVuczMvMwAvZ3JlZW5zNC8xAC9ncmVlbnM0LzIAL2dyZWVuczQvMwAvZ3JlZW5zNC80AC9ncmVlbnM1LzEAL2dyZWVuczUvMgAvZ3JlZW5zNS8zAC9ncmVlbnM1LzQAL2dyZWVuczUvNQAvZ3JlZW5zNi8xAC9ncmVlbnM2LzIAL2dyZWVuczYvMwAvZ3JlZW5zNi80AC9ncmVlbnM2LzUAL2dyZWVuczYvNgAvZ3JlZW5zNy8xAC9ncmVlbnM3LzIAL2dyZWVuczcvMwAvZ3JlZW5zNy80AC9ncmVlbnM3LzUAL2dyZWVuczcvNgAvZ3JlZW5zNy83AC9ncmVlbnM4LzEAL2dyZWVuczgvMgAvZ3JlZW5zOC8zAC9ncmVlbnM4LzQAL2dyZWVuczgvNQAvZ3JlZW5zOC82AC9ncmVlbnM4LzcAL2dyZWVuczgvOAAvZ3JlZW5zOS8xAC9ncmVlbnM5LzIAL2dyZWVuczkvMwAvZ3JlZW5zOS80AC9ncmVlbnM5LzUAL2dyZWVuczkvNgAvZ3JlZW5zOS83AC9ncmVlbnM5LzgAL2dyZWVuczkvOQAvZ3JleXMzLzEAL2dyZXlzMy8yAC9ncmV5czMvMwAvZ3JleXM0LzEAL2dyZXlzNC8yAC9ncmV5czQvMwAvZ3JleXM0LzQAL2dyZXlzNS8xAC9ncmV5czUvMgAvZ3JleXM1LzMAL2dyZXlzNS80AC9ncmV5czUvNQAvZ3JleXM2LzEAL2dyZXlzNi8yAC9ncmV5czYvMwAvZ3JleXM2LzQAL2dyZXlzNi81AC9ncmV5czYvNgAvZ3JleXM3LzEAL2dyZXlzNy8yAC9ncmV5czcvMwAvZ3JleXM3LzQAL2dyZXlzNy81AC9ncmV5czcvNgAvZ3JleXM3LzcAL2dyZXlzOC8xAC9ncmV5czgvMgAvZ3JleXM4LzMAL2dyZXlzOC80AC9ncmV5czgvNQAvZ3JleXM4LzYAL2dyZXlzOC83AC9ncmV5czgvOAAvZ3JleXM5LzEAL2dyZXlzOS8yAC9ncmV5czkvMwAvZ3JleXM5LzQAL2dyZXlzOS81AC9ncmV5czkvNgAvZ3JleXM5LzcAL2dyZXlzOS84AC9ncmV5czkvOQAvb3JhbmdlczMvMQAvb3JhbmdlczMvMgAvb3JhbmdlczMvMwAvb3JhbmdlczQvMQAvb3JhbmdlczQvMgAvb3JhbmdlczQvMwAvb3JhbmdlczQvNAAvb3JhbmdlczUvMQAvb3JhbmdlczUvMgAvb3JhbmdlczUvMwAvb3JhbmdlczUvNAAvb3JhbmdlczUvNQAvb3JhbmdlczYvMQAvb3JhbmdlczYvMgAvb3JhbmdlczYvMwAvb3JhbmdlczYvNAAvb3JhbmdlczYvNQAvb3JhbmdlczYvNgAvb3JhbmdlczcvMQAvb3JhbmdlczcvMgAvb3JhbmdlczcvMwAvb3JhbmdlczcvNAAvb3JhbmdlczcvNQAvb3JhbmdlczcvNgAvb3JhbmdlczcvNwAvb3JhbmdlczgvMQAvb3JhbmdlczgvMgAvb3JhbmdlczgvMwAvb3JhbmdlczgvNAAvb3JhbmdlczgvNQAvb3JhbmdlczgvNgAvb3JhbmdlczgvNwAvb3JhbmdlczgvOAAvb3JhbmdlczkvMQAvb3JhbmdlczkvMgAvb3JhbmdlczkvMwAvb3JhbmdlczkvNAAvb3JhbmdlczkvNQAvb3JhbmdlczkvNgAvb3JhbmdlczkvNwAvb3JhbmdlczkvOAAvb3JhbmdlczkvOQAvb3JyZDMvMQAvb3JyZDMvMgAvb3JyZDMvMwAvb3JyZDQvMQAvb3JyZDQvMgAvb3JyZDQvMwAvb3JyZDQvNAAvb3JyZDUvMQAvb3JyZDUvMgAvb3JyZDUvMwAvb3JyZDUvNAAvb3JyZDUvNQAvb3JyZDYvMQAvb3JyZDYvMgAvb3JyZDYvMwAvb3JyZDYvNAAvb3JyZDYvNQAvb3JyZDYvNgAvb3JyZDcvMQAvb3JyZDcvMgAvb3JyZDcvMwAvb3JyZDcvNAAvb3JyZDcvNQAvb3JyZDcvNgAvb3JyZDcvNwAvb3JyZDgvMQAvb3JyZDgvMgAvb3JyZDgvMwAvb3JyZDgvNAAvb3JyZDgvNQAvb3JyZDgvNgAvb3JyZDgvNwAvb3JyZDgvOAAvb3JyZDkvMQAvb3JyZDkvMgAvb3JyZDkvMwAvb3JyZDkvNAAvb3JyZDkvNQAvb3JyZDkvNgAvb3JyZDkvNwAvb3JyZDkvOAAvb3JyZDkvOQAvcGFpcmVkMTAvMQAvcGFpcmVkMTAvMTAAL3BhaXJlZDEwLzIAL3BhaXJlZDEwLzMAL3BhaXJlZDEwLzQAL3BhaXJlZDEwLzUAL3BhaXJlZDEwLzYAL3BhaXJlZDEwLzcAL3BhaXJlZDEwLzgAL3BhaXJlZDEwLzkAL3BhaXJlZDExLzEAL3BhaXJlZDExLzEwAC9wYWlyZWQxMS8xMQAvcGFpcmVkMTEvMgAvcGFpcmVkMTEvMwAvcGFpcmVkMTEvNAAvcGFpcmVkMTEvNQAvcGFpcmVkMTEvNgAvcGFpcmVkMTEvNwAvcGFpcmVkMTEvOAAvcGFpcmVkMTEvOQAvcGFpcmVkMTIvMQAvcGFpcmVkMTIvMTAAL3BhaXJlZDEyLzExAC9wYWlyZWQxMi8xMgAvcGFpcmVkMTIvMgAvcGFpcmVkMTIvMwAvcGFpcmVkMTIvNAAvcGFpcmVkMTIvNQAvcGFpcmVkMTIvNgAvcGFpcmVkMTIvNwAvcGFpcmVkMTIvOAAvcGFpcmVkMTIvOQAvcGFpcmVkMy8xAC9wYWlyZWQzLzIAL3BhaXJlZDMvMwAvcGFpcmVkNC8xAC9wYWlyZWQ0LzIAL3BhaXJlZDQvMwAvcGFpcmVkNC80AC9wYWlyZWQ1LzEAL3BhaXJlZDUvMgAvcGFpcmVkNS8zAC9wYWlyZWQ1LzQAL3BhaXJlZDUvNQAvcGFpcmVkNi8xAC9wYWlyZWQ2LzIAL3BhaXJlZDYvMwAvcGFpcmVkNi80AC9wYWlyZWQ2LzUAL3BhaXJlZDYvNgAvcGFpcmVkNy8xAC9wYWlyZWQ3LzIAL3BhaXJlZDcvMwAvcGFpcmVkNy80AC9wYWlyZWQ3LzUAL3BhaXJlZDcvNgAvcGFpcmVkNy83AC9wYWlyZWQ4LzEAL3BhaXJlZDgvMgAvcGFpcmVkOC8zAC9wYWlyZWQ4LzQAL3BhaXJlZDgvNQAvcGFpcmVkOC82AC9wYWlyZWQ4LzcAL3BhaXJlZDgvOAAvcGFpcmVkOS8xAC9wYWlyZWQ5LzIAL3BhaXJlZDkvMwAvcGFpcmVkOS80AC9wYWlyZWQ5LzUAL3BhaXJlZDkvNgAvcGFpcmVkOS83AC9wYWlyZWQ5LzgAL3BhaXJlZDkvOQAvcGFzdGVsMTMvMQAvcGFzdGVsMTMvMgAvcGFzdGVsMTMvMwAvcGFzdGVsMTQvMQAvcGFzdGVsMTQvMgAvcGFzdGVsMTQvMwAvcGFzdGVsMTQvNAAvcGFzdGVsMTUvMQAvcGFzdGVsMTUvMgAvcGFzdGVsMTUvMwAvcGFzdGVsMTUvNAAvcGFzdGVsMTUvNQAvcGFzdGVsMTYvMQAvcGFzdGVsMTYvMgAvcGFzdGVsMTYvMwAvcGFzdGVsMTYvNAAvcGFzdGVsMTYvNQAvcGFzdGVsMTYvNgAvcGFzdGVsMTcvMQAvcGFzdGVsMTcvMgAvcGFzdGVsMTcvMwAvcGFzdGVsMTcvNAAvcGFzdGVsMTcvNQAvcGFzdGVsMTcvNgAvcGFzdGVsMTcvNwAvcGFzdGVsMTgvMQAvcGFzdGVsMTgvMgAvcGFzdGVsMTgvMwAvcGFzdGVsMTgvNAAvcGFzdGVsMTgvNQAvcGFzdGVsMTgvNgAvcGFzdGVsMTgvNwAvcGFzdGVsMTgvOAAvcGFzdGVsMTkvMQAvcGFzdGVsMTkvMgAvcGFzdGVsMTkvMwAvcGFzdGVsMTkvNAAvcGFzdGVsMTkvNQAvcGFzdGVsMTkvNgAvcGFzdGVsMTkvNwAvcGFzdGVsMTkvOAAvcGFzdGVsMTkvOQAvcGFzdGVsMjMvMQAvcGFzdGVsMjMvMgAvcGFzdGVsMjMvMwAvcGFzdGVsMjQvMQAvcGFzdGVsMjQvMgAvcGFzdGVsMjQvMwAvcGFzdGVsMjQvNAAvcGFzdGVsMjUvMQAvcGFzdGVsMjUvMgAvcGFzdGVsMjUvMwAvcGFzdGVsMjUvNAAvcGFzdGVsMjUvNQAvcGFzdGVsMjYvMQAvcGFzdGVsMjYvMgAvcGFzdGVsMjYvMwAvcGFzdGVsMjYvNAAvcGFzdGVsMjYvNQAvcGFzdGVsMjYvNgAvcGFzdGVsMjcvMQAvcGFzdGVsMjcvMgAvcGFzdGVsMjcvMwAvcGFzdGVsMjcvNAAvcGFzdGVsMjcvNQAvcGFzdGVsMjcvNgAvcGFzdGVsMjcvNwAvcGFzdGVsMjgvMQAvcGFzdGVsMjgvMgAvcGFzdGVsMjgvMwAvcGFzdGVsMjgvNAAvcGFzdGVsMjgvNQAvcGFzdGVsMjgvNgAvcGFzdGVsMjgvNwAvcGFzdGVsMjgvOAAvcGl5ZzEwLzEAL3BpeWcxMC8xMAAvcGl5ZzEwLzIAL3BpeWcxMC8zAC9waXlnMTAvNAAvcGl5ZzEwLzUAL3BpeWcxMC82AC9waXlnMTAvNwAvcGl5ZzEwLzgAL3BpeWcxMC85AC9waXlnMTEvMQAvcGl5ZzExLzEwAC9waXlnMTEvMTEAL3BpeWcxMS8yAC9waXlnMTEvMwAvcGl5ZzExLzQAL3BpeWcxMS81AC9waXlnMTEvNgAvcGl5ZzExLzcAL3BpeWcxMS84AC9waXlnMTEvOQAvcGl5ZzMvMQAvcGl5ZzMvMgAvcGl5ZzMvMwAvcGl5ZzQvMQAvcGl5ZzQvMgAvcGl5ZzQvMwAvcGl5ZzQvNAAvcGl5ZzUvMQAvcGl5ZzUvMgAvcGl5ZzUvMwAvcGl5ZzUvNAAvcGl5ZzUvNQAvcGl5ZzYvMQAvcGl5ZzYvMgAvcGl5ZzYvMwAvcGl5ZzYvNAAvcGl5ZzYvNQAvcGl5ZzYvNgAvcGl5ZzcvMQAvcGl5ZzcvMgAvcGl5ZzcvMwAvcGl5ZzcvNAAvcGl5ZzcvNQAvcGl5ZzcvNgAvcGl5ZzcvNwAvcGl5ZzgvMQAvcGl5ZzgvMgAvcGl5ZzgvMwAvcGl5ZzgvNAAvcGl5ZzgvNQAvcGl5ZzgvNgAvcGl5ZzgvNwAvcGl5ZzgvOAAvcGl5ZzkvMQAvcGl5ZzkvMgAvcGl5ZzkvMwAvcGl5ZzkvNAAvcGl5ZzkvNQAvcGl5ZzkvNgAvcGl5ZzkvNwAvcGl5ZzkvOAAvcGl5ZzkvOQAvcHJnbjEwLzEAL3ByZ24xMC8xMAAvcHJnbjEwLzIAL3ByZ24xMC8zAC9wcmduMTAvNAAvcHJnbjEwLzUAL3ByZ24xMC82AC9wcmduMTAvNwAvcHJnbjEwLzgAL3ByZ24xMC85AC9wcmduMTEvMQAvcHJnbjExLzEwAC9wcmduMTEvMTEAL3ByZ24xMS8yAC9wcmduMTEvMwAvcHJnbjExLzQAL3ByZ24xMS81AC9wcmduMTEvNgAvcHJnbjExLzcAL3ByZ24xMS84AC9wcmduMTEvOQAvcHJnbjMvMQAvcHJnbjMvMgAvcHJnbjMvMwAvcHJnbjQvMQAvcHJnbjQvMgAvcHJnbjQvMwAvcHJnbjQvNAAvcHJnbjUvMQAvcHJnbjUvMgAvcHJnbjUvMwAvcHJnbjUvNAAvcHJnbjUvNQAvcHJnbjYvMQAvcHJnbjYvMgAvcHJnbjYvMwAvcHJnbjYvNAAvcHJnbjYvNQAvcHJnbjYvNgAvcHJnbjcvMQAvcHJnbjcvMgAvcHJnbjcvMwAvcHJnbjcvNAAvcHJnbjcvNQAvcHJnbjcvNgAvcHJnbjcvNwAvcHJnbjgvMQAvcHJnbjgvMgAvcHJnbjgvMwAvcHJnbjgvNAAvcHJnbjgvNQAvcHJnbjgvNgAvcHJnbjgvNwAvcHJnbjgvOAAvcHJnbjkvMQAvcHJnbjkvMgAvcHJnbjkvMwAvcHJnbjkvNAAvcHJnbjkvNQAvcHJnbjkvNgAvcHJnbjkvNwAvcHJnbjkvOAAvcHJnbjkvOQAvcHVidTMvMQAvcHVidTMvMgAvcHVidTMvMwAvcHVidTQvMQAvcHVidTQvMgAvcHVidTQvMwAvcHVidTQvNAAvcHVidTUvMQAvcHVidTUvMgAvcHVidTUvMwAvcHVidTUvNAAvcHVidTUvNQAvcHVidTYvMQAvcHVidTYvMgAvcHVidTYvMwAvcHVidTYvNAAvcHVidTYvNQAvcHVidTYvNgAvcHVidTcvMQAvcHVidTcvMgAvcHVidTcvMwAvcHVidTcvNAAvcHVidTcvNQAvcHVidTcvNgAvcHVidTcvNwAvcHVidTgvMQAvcHVidTgvMgAvcHVidTgvMwAvcHVidTgvNAAvcHVidTgvNQAvcHVidTgvNgAvcHVidTgvNwAvcHVidTgvOAAvcHVidTkvMQAvcHVidTkvMgAvcHVidTkvMwAvcHVidTkvNAAvcHVidTkvNQAvcHVidTkvNgAvcHVidTkvNwAvcHVidTkvOAAvcHVidTkvOQAvcHVidWduMy8xAC9wdWJ1Z24zLzIAL3B1YnVnbjMvMwAvcHVidWduNC8xAC9wdWJ1Z240LzIAL3B1YnVnbjQvMwAvcHVidWduNC80AC9wdWJ1Z241LzEAL3B1YnVnbjUvMgAvcHVidWduNS8zAC9wdWJ1Z241LzQAL3B1YnVnbjUvNQAvcHVidWduNi8xAC9wdWJ1Z242LzIAL3B1YnVnbjYvMwAvcHVidWduNi80AC9wdWJ1Z242LzUAL3B1YnVnbjYvNgAvcHVidWduNy8xAC9wdWJ1Z243LzIAL3B1YnVnbjcvMwAvcHVidWduNy80AC9wdWJ1Z243LzUAL3B1YnVnbjcvNgAvcHVidWduNy83AC9wdWJ1Z244LzEAL3B1YnVnbjgvMgAvcHVidWduOC8zAC9wdWJ1Z244LzQAL3B1YnVnbjgvNQAvcHVidWduOC82AC9wdWJ1Z244LzcAL3B1YnVnbjgvOAAvcHVidWduOS8xAC9wdWJ1Z245LzIAL3B1YnVnbjkvMwAvcHVidWduOS80AC9wdWJ1Z245LzUAL3B1YnVnbjkvNgAvcHVidWduOS83AC9wdWJ1Z245LzgAL3B1YnVnbjkvOQAvcHVvcjEwLzEAL3B1b3IxMC8xMAAvcHVvcjEwLzIAL3B1b3IxMC8zAC9wdW9yMTAvNAAvcHVvcjEwLzUAL3B1b3IxMC82AC9wdW9yMTAvNwAvcHVvcjEwLzgAL3B1b3IxMC85AC9wdW9yMTEvMQAvcHVvcjExLzEwAC9wdW9yMTEvMTEAL3B1b3IxMS8yAC9wdW9yMTEvMwAvcHVvcjExLzQAL3B1b3IxMS81AC9wdW9yMTEvNgAvcHVvcjExLzcAL3B1b3IxMS84AC9wdW9yMTEvOQAvcHVvcjMvMQAvcHVvcjMvMgAvcHVvcjMvMwAvcHVvcjQvMQAvcHVvcjQvMgAvcHVvcjQvMwAvcHVvcjQvNAAvcHVvcjUvMQAvcHVvcjUvMgAvcHVvcjUvMwAvcHVvcjUvNAAvcHVvcjUvNQAvcHVvcjYvMQAvcHVvcjYvMgAvcHVvcjYvMwAvcHVvcjYvNAAvcHVvcjYvNQAvcHVvcjYvNgAvcHVvcjcvMQAvcHVvcjcvMgAvcHVvcjcvMwAvcHVvcjcvNAAvcHVvcjcvNQAvcHVvcjcvNgAvcHVvcjcvNwAvcHVvcjgvMQAvcHVvcjgvMgAvcHVvcjgvMwAvcHVvcjgvNAAvcHVvcjgvNQAvcHVvcjgvNgAvcHVvcjgvNwAvcHVvcjgvOAAvcHVvcjkvMQAvcHVvcjkvMgAvcHVvcjkvMwAvcHVvcjkvNAAvcHVvcjkvNQAvcHVvcjkvNgAvcHVvcjkvNwAvcHVvcjkvOAAvcHVvcjkvOQAvcHVyZDMvMQAvcHVyZDMvMgAvcHVyZDMvMwAvcHVyZDQvMQAvcHVyZDQvMgAvcHVyZDQvMwAvcHVyZDQvNAAvcHVyZDUvMQAvcHVyZDUvMgAvcHVyZDUvMwAvcHVyZDUvNAAvcHVyZDUvNQAvcHVyZDYvMQAvcHVyZDYvMgAvcHVyZDYvMwAvcHVyZDYvNAAvcHVyZDYvNQAvcHVyZDYvNgAvcHVyZDcvMQAvcHVyZDcvMgAvcHVyZDcvMwAvcHVyZDcvNAAvcHVyZDcvNQAvcHVyZDcvNgAvcHVyZDcvNwAvcHVyZDgvMQAvcHVyZDgvMgAvcHVyZDgvMwAvcHVyZDgvNAAvcHVyZDgvNQAvcHVyZDgvNgAvcHVyZDgvNwAvcHVyZDgvOAAvcHVyZDkvMQAvcHVyZDkvMgAvcHVyZDkvMwAvcHVyZDkvNAAvcHVyZDkvNQAvcHVyZDkvNgAvcHVyZDkvNwAvcHVyZDkvOAAvcHVyZDkvOQAvcHVycGxlczMvMQAvcHVycGxlczMvMgAvcHVycGxlczMvMwAvcHVycGxlczQvMQAvcHVycGxlczQvMgAvcHVycGxlczQvMwAvcHVycGxlczQvNAAvcHVycGxlczUvMQAvcHVycGxlczUvMgAvcHVycGxlczUvMwAvcHVycGxlczUvNAAvcHVycGxlczUvNQAvcHVycGxlczYvMQAvcHVycGxlczYvMgAvcHVycGxlczYvMwAvcHVycGxlczYvNAAvcHVycGxlczYvNQAvcHVycGxlczYvNgAvcHVycGxlczcvMQAvcHVycGxlczcvMgAvcHVycGxlczcvMwAvcHVycGxlczcvNAAvcHVycGxlczcvNQAvcHVycGxlczcvNgAvcHVycGxlczcvNwAvcHVycGxlczgvMQAvcHVycGxlczgvMgAvcHVycGxlczgvMwAvcHVycGxlczgvNAAvcHVycGxlczgvNQAvcHVycGxlczgvNgAvcHVycGxlczgvNwAvcHVycGxlczgvOAAvcHVycGxlczkvMQAvcHVycGxlczkvMgAvcHVycGxlczkvMwAvcHVycGxlczkvNAAvcHVycGxlczkvNQAvcHVycGxlczkvNgAvcHVycGxlczkvNwAvcHVycGxlczkvOAAvcHVycGxlczkvOQAvcmRidTEwLzEAL3JkYnUxMC8xMAAvcmRidTEwLzIAL3JkYnUxMC8zAC9yZGJ1MTAvNAAvcmRidTEwLzUAL3JkYnUxMC82AC9yZGJ1MTAvNwAvcmRidTEwLzgAL3JkYnUxMC85AC9yZGJ1MTEvMQAvcmRidTExLzEwAC9yZGJ1MTEvMTEAL3JkYnUxMS8yAC9yZGJ1MTEvMwAvcmRidTExLzQAL3JkYnUxMS81AC9yZGJ1MTEvNgAvcmRidTExLzcAL3JkYnUxMS84AC9yZGJ1MTEvOQAvcmRidTMvMQAvcmRidTMvMgAvcmRidTMvMwAvcmRidTQvMQAvcmRidTQvMgAvcmRidTQvMwAvcmRidTQvNAAvcmRidTUvMQAvcmRidTUvMgAvcmRidTUvMwAvcmRidTUvNAAvcmRidTUvNQAvcmRidTYvMQAvcmRidTYvMgAvcmRidTYvMwAvcmRidTYvNAAvcmRidTYvNQAvcmRidTYvNgAvcmRidTcvMQAvcmRidTcvMgAvcmRidTcvMwAvcmRidTcvNAAvcmRidTcvNQAvcmRidTcvNgAvcmRidTcvNwAvcmRidTgvMQAvcmRidTgvMgAvcmRidTgvMwAvcmRidTgvNAAvcmRidTgvNQAvcmRidTgvNgAvcmRidTgvNwAvcmRidTgvOAAvcmRidTkvMQAvcmRidTkvMgAvcmRidTkvMwAvcmRidTkvNAAvcmRidTkvNQAvcmRidTkvNgAvcmRidTkvNwAvcmRidTkvOAAvcmRidTkvOQAvcmRneTEwLzEAL3JkZ3kxMC8xMAAvcmRneTEwLzIAL3JkZ3kxMC8zAC9yZGd5MTAvNAAvcmRneTEwLzUAL3JkZ3kxMC82AC9yZGd5MTAvNwAvcmRneTEwLzgAL3JkZ3kxMC85AC9yZGd5MTEvMQAvcmRneTExLzEwAC9yZGd5MTEvMTEAL3JkZ3kxMS8yAC9yZGd5MTEvMwAvcmRneTExLzQAL3JkZ3kxMS81AC9yZGd5MTEvNgAvcmRneTExLzcAL3JkZ3kxMS84AC9yZGd5MTEvOQAvcmRneTMvMQAvcmRneTMvMgAvcmRneTMvMwAvcmRneTQvMQAvcmRneTQvMgAvcmRneTQvMwAvcmRneTQvNAAvcmRneTUvMQAvcmRneTUvMgAvcmRneTUvMwAvcmRneTUvNAAvcmRneTUvNQAvcmRneTYvMQAvcmRneTYvMgAvcmRneTYvMwAvcmRneTYvNAAvcmRneTYvNQAvcmRneTYvNgAvcmRneTcvMQAvcmRneTcvMgAvcmRneTcvMwAvcmRneTcvNAAvcmRneTcvNQAvcmRneTcvNgAvcmRneTcvNwAvcmRneTgvMQAvcmRneTgvMgAvcmRneTgvMwAvcmRneTgvNAAvcmRneTgvNQAvcmRneTgvNgAvcmRneTgvNwAvcmRneTgvOAAvcmRneTkvMQAvcmRneTkvMgAvcmRneTkvMwAvcmRneTkvNAAvcmRneTkvNQAvcmRneTkvNgAvcmRneTkvNwAvcmRneTkvOAAvcmRneTkvOQAvcmRwdTMvMQAvcmRwdTMvMgAvcmRwdTMvMwAvcmRwdTQvMQAvcmRwdTQvMgAvcmRwdTQvMwAvcmRwdTQvNAAvcmRwdTUvMQAvcmRwdTUvMgAvcmRwdTUvMwAvcmRwdTUvNAAvcmRwdTUvNQAvcmRwdTYvMQAvcmRwdTYvMgAvcmRwdTYvMwAvcmRwdTYvNAAvcmRwdTYvNQAvcmRwdTYvNgAvcmRwdTcvMQAvcmRwdTcvMgAvcmRwdTcvMwAvcmRwdTcvNAAvcmRwdTcvNQAvcmRwdTcvNgAvcmRwdTcvNwAvcmRwdTgvMQAvcmRwdTgvMgAvcmRwdTgvMwAvcmRwdTgvNAAvcmRwdTgvNQAvcmRwdTgvNgAvcmRwdTgvNwAvcmRwdTgvOAAvcmRwdTkvMQAvcmRwdTkvMgAvcmRwdTkvMwAvcmRwdTkvNAAvcmRwdTkvNQAvcmRwdTkvNgAvcmRwdTkvNwAvcmRwdTkvOAAvcmRwdTkvOQAvcmR5bGJ1MTAvMQAvcmR5bGJ1MTAvMTAAL3JkeWxidTEwLzIAL3JkeWxidTEwLzMAL3JkeWxidTEwLzQAL3JkeWxidTEwLzUAL3JkeWxidTEwLzYAL3JkeWxidTEwLzcAL3JkeWxidTEwLzgAL3JkeWxidTEwLzkAL3JkeWxidTExLzEAL3JkeWxidTExLzEwAC9yZHlsYnUxMS8xMQAvcmR5bGJ1MTEvMgAvcmR5bGJ1MTEvMwAvcmR5bGJ1MTEvNAAvcmR5bGJ1MTEvNQAvcmR5bGJ1MTEvNgAvcmR5bGJ1MTEvNwAvcmR5bGJ1MTEvOAAvcmR5bGJ1MTEvOQAvcmR5bGJ1My8xAC9yZHlsYnUzLzIAL3JkeWxidTMvMwAvcmR5bGJ1NC8xAC9yZHlsYnU0LzIAL3JkeWxidTQvMwAvcmR5bGJ1NC80AC9yZHlsYnU1LzEAL3JkeWxidTUvMgAvcmR5bGJ1NS8zAC9yZHlsYnU1LzQAL3JkeWxidTUvNQAvcmR5bGJ1Ni8xAC9yZHlsYnU2LzIAL3JkeWxidTYvMwAvcmR5bGJ1Ni80AC9yZHlsYnU2LzUAL3JkeWxidTYvNgAvcmR5bGJ1Ny8xAC9yZHlsYnU3LzIAL3JkeWxidTcvMwAvcmR5bGJ1Ny80AC9yZHlsYnU3LzUAL3JkeWxidTcvNgAvcmR5bGJ1Ny83AC9yZHlsYnU4LzEAL3JkeWxidTgvMgAvcmR5bGJ1OC8zAC9yZHlsYnU4LzQAL3JkeWxidTgvNQAvcmR5bGJ1OC82AC9yZHlsYnU4LzcAL3JkeWxidTgvOAAvcmR5bGJ1OS8xAC9yZHlsYnU5LzIAL3JkeWxidTkvMwAvcmR5bGJ1OS80AC9yZHlsYnU5LzUAL3JkeWxidTkvNgAvcmR5bGJ1OS83AC9yZHlsYnU5LzgAL3JkeWxidTkvOQAvcmR5bGduMTAvMQAvcmR5bGduMTAvMTAAL3JkeWxnbjEwLzIAL3JkeWxnbjEwLzMAL3JkeWxnbjEwLzQAL3JkeWxnbjEwLzUAL3JkeWxnbjEwLzYAL3JkeWxnbjEwLzcAL3JkeWxnbjEwLzgAL3JkeWxnbjEwLzkAL3JkeWxnbjExLzEAL3JkeWxnbjExLzEwAC9yZHlsZ24xMS8xMQAvcmR5bGduMTEvMgAvcmR5bGduMTEvMwAvcmR5bGduMTEvNAAvcmR5bGduMTEvNQAvcmR5bGduMTEvNgAvcmR5bGduMTEvNwAvcmR5bGduMTEvOAAvcmR5bGduMTEvOQAvcmR5bGduMy8xAC9yZHlsZ24zLzIAL3JkeWxnbjMvMwAvcmR5bGduNC8xAC9yZHlsZ240LzIAL3JkeWxnbjQvMwAvcmR5bGduNC80AC9yZHlsZ241LzEAL3JkeWxnbjUvMgAvcmR5bGduNS8zAC9yZHlsZ241LzQAL3JkeWxnbjUvNQAvcmR5bGduNi8xAC9yZHlsZ242LzIAL3JkeWxnbjYvMwAvcmR5bGduNi80AC9yZHlsZ242LzUAL3JkeWxnbjYvNgAvcmR5bGduNy8xAC9yZHlsZ243LzIAL3JkeWxnbjcvMwAvcmR5bGduNy80AC9yZHlsZ243LzUAL3JkeWxnbjcvNgAvcmR5bGduNy83AC9yZHlsZ244LzEAL3JkeWxnbjgvMgAvcmR5bGduOC8zAC9yZHlsZ244LzQAL3JkeWxnbjgvNQAvcmR5bGduOC82AC9yZHlsZ244LzcAL3JkeWxnbjgvOAAvcmR5bGduOS8xAC9yZHlsZ245LzIAL3JkeWxnbjkvMwAvcmR5bGduOS80AC9yZHlsZ245LzUAL3JkeWxnbjkvNgAvcmR5bGduOS83AC9yZHlsZ245LzgAL3JkeWxnbjkvOQAvcmVkczMvMQAvcmVkczMvMgAvcmVkczMvMwAvcmVkczQvMQAvcmVkczQvMgAvcmVkczQvMwAvcmVkczQvNAAvcmVkczUvMQAvcmVkczUvMgAvcmVkczUvMwAvcmVkczUvNAAvcmVkczUvNQAvcmVkczYvMQAvcmVkczYvMgAvcmVkczYvMwAvcmVkczYvNAAvcmVkczYvNQAvcmVkczYvNgAvcmVkczcvMQAvcmVkczcvMgAvcmVkczcvMwAvcmVkczcvNAAvcmVkczcvNQAvcmVkczcvNgAvcmVkczcvNwAvcmVkczgvMQAvcmVkczgvMgAvcmVkczgvMwAvcmVkczgvNAAvcmVkczgvNQAvcmVkczgvNgAvcmVkczgvNwAvcmVkczgvOAAvcmVkczkvMQAvcmVkczkvMgAvcmVkczkvMwAvcmVkczkvNAAvcmVkczkvNQAvcmVkczkvNgAvcmVkczkvNwAvcmVkczkvOAAvcmVkczkvOQAvc2V0MTMvMQAvc2V0MTMvMgAvc2V0MTMvMwAvc2V0MTQvMQAvc2V0MTQvMgAvc2V0MTQvMwAvc2V0MTQvNAAvc2V0MTUvMQAvc2V0MTUvMgAvc2V0MTUvMwAvc2V0MTUvNAAvc2V0MTUvNQAvc2V0MTYvMQAvc2V0MTYvMgAvc2V0MTYvMwAvc2V0MTYvNAAvc2V0MTYvNQAvc2V0MTYvNgAvc2V0MTcvMQAvc2V0MTcvMgAvc2V0MTcvMwAvc2V0MTcvNAAvc2V0MTcvNQAvc2V0MTcvNgAvc2V0MTcvNwAvc2V0MTgvMQAvc2V0MTgvMgAvc2V0MTgvMwAvc2V0MTgvNAAvc2V0MTgvNQAvc2V0MTgvNgAvc2V0MTgvNwAvc2V0MTgvOAAvc2V0MTkvMQAvc2V0MTkvMgAvc2V0MTkvMwAvc2V0MTkvNAAvc2V0MTkvNQAvc2V0MTkvNgAvc2V0MTkvNwAvc2V0MTkvOAAvc2V0MTkvOQAvc2V0MjMvMQAvc2V0MjMvMgAvc2V0MjMvMwAvc2V0MjQvMQAvc2V0MjQvMgAvc2V0MjQvMwAvc2V0MjQvNAAvc2V0MjUvMQAvc2V0MjUvMgAvc2V0MjUvMwAvc2V0MjUvNAAvc2V0MjUvNQAvc2V0MjYvMQAvc2V0MjYvMgAvc2V0MjYvMwAvc2V0MjYvNAAvc2V0MjYvNQAvc2V0MjYvNgAvc2V0MjcvMQAvc2V0MjcvMgAvc2V0MjcvMwAvc2V0MjcvNAAvc2V0MjcvNQAvc2V0MjcvNgAvc2V0MjcvNwAvc2V0MjgvMQAvc2V0MjgvMgAvc2V0MjgvMwAvc2V0MjgvNAAvc2V0MjgvNQAvc2V0MjgvNgAvc2V0MjgvNwAvc2V0MjgvOAAvc2V0MzEwLzEAL3NldDMxMC8xMAAvc2V0MzEwLzIAL3NldDMxMC8zAC9zZXQzMTAvNAAvc2V0MzEwLzUAL3NldDMxMC82AC9zZXQzMTAvNwAvc2V0MzEwLzgAL3NldDMxMC85AC9zZXQzMTEvMQAvc2V0MzExLzEwAC9zZXQzMTEvMTEAL3NldDMxMS8yAC9zZXQzMTEvMwAvc2V0MzExLzQAL3NldDMxMS81AC9zZXQzMTEvNgAvc2V0MzExLzcAL3NldDMxMS84AC9zZXQzMTEvOQAvc2V0MzEyLzEAL3NldDMxMi8xMAAvc2V0MzEyLzExAC9zZXQzMTIvMTIAL3NldDMxMi8yAC9zZXQzMTIvMwAvc2V0MzEyLzQAL3NldDMxMi81AC9zZXQzMTIvNgAvc2V0MzEyLzcAL3NldDMxMi84AC9zZXQzMTIvOQAvc2V0MzMvMQAvc2V0MzMvMgAvc2V0MzMvMwAvc2V0MzQvMQAvc2V0MzQvMgAvc2V0MzQvMwAvc2V0MzQvNAAvc2V0MzUvMQAvc2V0MzUvMgAvc2V0MzUvMwAvc2V0MzUvNAAvc2V0MzUvNQAvc2V0MzYvMQAvc2V0MzYvMgAvc2V0MzYvMwAvc2V0MzYvNAAvc2V0MzYvNQAvc2V0MzYvNgAvc2V0MzcvMQAvc2V0MzcvMgAvc2V0MzcvMwAvc2V0MzcvNAAvc2V0MzcvNQAvc2V0MzcvNgAvc2V0MzcvNwAvc2V0MzgvMQAvc2V0MzgvMgAvc2V0MzgvMwAvc2V0MzgvNAAvc2V0MzgvNQAvc2V0MzgvNgAvc2V0MzgvNwAvc2V0MzgvOAAvc2V0MzkvMQAvc2V0MzkvMgAvc2V0MzkvMwAvc2V0MzkvNAAvc2V0MzkvNQAvc2V0MzkvNgAvc2V0MzkvNwAvc2V0MzkvOAAvc2V0MzkvOQAvc3BlY3RyYWwxMC8xAC9zcGVjdHJhbDEwLzEwAC9zcGVjdHJhbDEwLzIAL3NwZWN0cmFsMTAvMwAvc3BlY3RyYWwxMC80AC9zcGVjdHJhbDEwLzUAL3NwZWN0cmFsMTAvNgAvc3BlY3RyYWwxMC83AC9zcGVjdHJhbDEwLzgAL3NwZWN0cmFsMTAvOQAvc3BlY3RyYWwxMS8xAC9zcGVjdHJhbDExLzEwAC9zcGVjdHJhbDExLzExAC9zcGVjdHJhbDExLzIAL3NwZWN0cmFsMTEvMwAvc3BlY3RyYWwxMS80AC9zcGVjdHJhbDExLzUAL3NwZWN0cmFsMTEvNgAvc3BlY3RyYWwxMS83AC9zcGVjdHJhbDExLzgAL3NwZWN0cmFsMTEvOQAvc3BlY3RyYWwzLzEAL3NwZWN0cmFsMy8yAC9zcGVjdHJhbDMvMwAvc3BlY3RyYWw0LzEAL3NwZWN0cmFsNC8yAC9zcGVjdHJhbDQvMwAvc3BlY3RyYWw0LzQAL3NwZWN0cmFsNS8xAC9zcGVjdHJhbDUvMgAvc3BlY3RyYWw1LzMAL3NwZWN0cmFsNS80AC9zcGVjdHJhbDUvNQAvc3BlY3RyYWw2LzEAL3NwZWN0cmFsNi8yAC9zcGVjdHJhbDYvMwAvc3BlY3RyYWw2LzQAL3NwZWN0cmFsNi81AC9zcGVjdHJhbDYvNgAvc3BlY3RyYWw3LzEAL3NwZWN0cmFsNy8yAC9zcGVjdHJhbDcvMwAvc3BlY3RyYWw3LzQAL3NwZWN0cmFsNy81AC9zcGVjdHJhbDcvNgAvc3BlY3RyYWw3LzcAL3NwZWN0cmFsOC8xAC9zcGVjdHJhbDgvMgAvc3BlY3RyYWw4LzMAL3NwZWN0cmFsOC80AC9zcGVjdHJhbDgvNQAvc3BlY3RyYWw4LzYAL3NwZWN0cmFsOC83AC9zcGVjdHJhbDgvOAAvc3BlY3RyYWw5LzEAL3NwZWN0cmFsOS8yAC9zcGVjdHJhbDkvMwAvc3BlY3RyYWw5LzQAL3NwZWN0cmFsOS81AC9zcGVjdHJhbDkvNgAvc3BlY3RyYWw5LzcAL3NwZWN0cmFsOS84AC9zcGVjdHJhbDkvOQAvc3ZnL2FsaWNlYmx1ZQAvc3ZnL2FudGlxdWV3aGl0ZQAvc3ZnL2FxdWEAL3N2Zy9hcXVhbWFyaW5lAC9zdmcvYXp1cmUAL3N2Zy9iZWlnZQAvc3ZnL2Jpc3F1ZQAvc3ZnL2JsYWNrAC9zdmcvYmxhbmNoZWRhbG1vbmQAL3N2Zy9ibHVlAC9zdmcvYmx1ZXZpb2xldAAvc3ZnL2Jyb3duAC9zdmcvYnVybHl3b29kAC9zdmcvY2FkZXRibHVlAC9zdmcvY2hhcnRyZXVzZQAvc3ZnL2Nob2NvbGF0ZQAvc3ZnL2NvcmFsAC9zdmcvY29ybmZsb3dlcmJsdWUAL3N2Zy9jb3Juc2lsawAvc3ZnL2NyaW1zb24AL3N2Zy9jeWFuAC9zdmcvZGFya2JsdWUAL3N2Zy9kYXJrY3lhbgAvc3ZnL2Rhcmtnb2xkZW5yb2QAL3N2Zy9kYXJrZ3JheQAvc3ZnL2RhcmtncmVlbgAvc3ZnL2RhcmtncmV5AC9zdmcvZGFya2toYWtpAC9zdmcvZGFya21hZ2VudGEAL3N2Zy9kYXJrb2xpdmVncmVlbgAvc3ZnL2RhcmtvcmFuZ2UAL3N2Zy9kYXJrb3JjaGlkAC9zdmcvZGFya3JlZAAvc3ZnL2RhcmtzYWxtb24AL3N2Zy9kYXJrc2VhZ3JlZW4AL3N2Zy9kYXJrc2xhdGVibHVlAC9zdmcvZGFya3NsYXRlZ3JheQAvc3ZnL2RhcmtzbGF0ZWdyZXkAL3N2Zy9kYXJrdHVycXVvaXNlAC9zdmcvZGFya3Zpb2xldAAvc3ZnL2RlZXBwaW5rAC9zdmcvZGVlcHNreWJsdWUAL3N2Zy9kaW1ncmF5AC9zdmcvZGltZ3JleQAvc3ZnL2RvZGdlcmJsdWUAL3N2Zy9maXJlYnJpY2sAL3N2Zy9mbG9yYWx3aGl0ZQAvc3ZnL2ZvcmVzdGdyZWVuAC9zdmcvZnVjaHNpYQAvc3ZnL2dhaW5zYm9ybwAvc3ZnL2dob3N0d2hpdGUAL3N2Zy9nb2xkAC9zdmcvZ29sZGVucm9kAC9zdmcvZ3JheQAvc3ZnL2dyZWVuAC9zdmcvZ3JlZW55ZWxsb3cAL3N2Zy9ncmV5AC9zdmcvaG9uZXlkZXcAL3N2Zy9ob3RwaW5rAC9zdmcvaW5kaWFucmVkAC9zdmcvaW5kaWdvAC9zdmcvaXZvcnkAL3N2Zy9raGFraQAvc3ZnL2xhdmVuZGVyAC9zdmcvbGF2ZW5kZXJibHVzaAAvc3ZnL2xhd25ncmVlbgAvc3ZnL2xlbW9uY2hpZmZvbgAvc3ZnL2xpZ2h0Ymx1ZQAvc3ZnL2xpZ2h0Y29yYWwAL3N2Zy9saWdodGN5YW4AL3N2Zy9saWdodGdvbGRlbnJvZHllbGxvdwAvc3ZnL2xpZ2h0Z3JheQAvc3ZnL2xpZ2h0Z3JlZW4AL3N2Zy9saWdodGdyZXkAL3N2Zy9saWdodHBpbmsAL3N2Zy9saWdodHNhbG1vbgAvc3ZnL2xpZ2h0c2VhZ3JlZW4AL3N2Zy9saWdodHNreWJsdWUAL3N2Zy9saWdodHNsYXRlZ3JheQAvc3ZnL2xpZ2h0c2xhdGVncmV5AC9zdmcvbGlnaHRzdGVlbGJsdWUAL3N2Zy9saWdodHllbGxvdwAvc3ZnL2xpbWUAL3N2Zy9saW1lZ3JlZW4AL3N2Zy9saW5lbgAvc3ZnL21hZ2VudGEAL3N2Zy9tYXJvb24AL3N2Zy9tZWRpdW1hcXVhbWFyaW5lAC9zdmcvbWVkaXVtYmx1ZQAvc3ZnL21lZGl1bW9yY2hpZAAvc3ZnL21lZGl1bXB1cnBsZQAvc3ZnL21lZGl1bXNlYWdyZWVuAC9zdmcvbWVkaXVtc2xhdGVibHVlAC9zdmcvbWVkaXVtc3ByaW5nZ3JlZW4AL3N2Zy9tZWRpdW10dXJxdW9pc2UAL3N2Zy9tZWRpdW12aW9sZXRyZWQAL3N2Zy9taWRuaWdodGJsdWUAL3N2Zy9taW50Y3JlYW0AL3N2Zy9taXN0eXJvc2UAL3N2Zy9tb2NjYXNpbgAvc3ZnL25hdmFqb3doaXRlAC9zdmcvbmF2eQAvc3ZnL29sZGxhY2UAL3N2Zy9vbGl2ZQAvc3ZnL29saXZlZHJhYgAvc3ZnL29yYW5nZQAvc3ZnL29yYW5nZXJlZAAvc3ZnL29yY2hpZAAvc3ZnL3BhbGVnb2xkZW5yb2QAL3N2Zy9wYWxlZ3JlZW4AL3N2Zy9wYWxldHVycXVvaXNlAC9zdmcvcGFsZXZpb2xldHJlZAAvc3ZnL3BhcGF5YXdoaXAAL3N2Zy9wZWFjaHB1ZmYAL3N2Zy9wZXJ1AC9zdmcvcGluawAvc3ZnL3BsdW0AL3N2Zy9wb3dkZXJibHVlAC9zdmcvcHVycGxlAC9zdmcvcmVkAC9zdmcvcm9zeWJyb3duAC9zdmcvcm95YWxibHVlAC9zdmcvc2FkZGxlYnJvd24AL3N2Zy9zYWxtb24AL3N2Zy9zYW5keWJyb3duAC9zdmcvc2VhZ3JlZW4AL3N2Zy9zZWFzaGVsbAAvc3ZnL3NpZW5uYQAvc3ZnL3NpbHZlcgAvc3ZnL3NreWJsdWUAL3N2Zy9zbGF0ZWJsdWUAL3N2Zy9zbGF0ZWdyYXkAL3N2Zy9zbGF0ZWdyZXkAL3N2Zy9zbm93AC9zdmcvc3ByaW5nZ3JlZW4AL3N2Zy9zdGVlbGJsdWUAL3N2Zy90YW4AL3N2Zy90ZWFsAC9zdmcvdGhpc3RsZQAvc3ZnL3RvbWF0bwAvc3ZnL3R1cnF1b2lzZQAvc3ZnL3Zpb2xldAAvc3ZnL3doZWF0AC9zdmcvd2hpdGUAL3N2Zy93aGl0ZXNtb2tlAC9zdmcveWVsbG93AC9zdmcveWVsbG93Z3JlZW4AL3lsZ24zLzEAL3lsZ24zLzIAL3lsZ24zLzMAL3lsZ240LzEAL3lsZ240LzIAL3lsZ240LzMAL3lsZ240LzQAL3lsZ241LzEAL3lsZ241LzIAL3lsZ241LzMAL3lsZ241LzQAL3lsZ241LzUAL3lsZ242LzEAL3lsZ242LzIAL3lsZ242LzMAL3lsZ242LzQAL3lsZ242LzUAL3lsZ242LzYAL3lsZ243LzEAL3lsZ243LzIAL3lsZ243LzMAL3lsZ243LzQAL3lsZ243LzUAL3lsZ243LzYAL3lsZ243LzcAL3lsZ244LzEAL3lsZ244LzIAL3lsZ244LzMAL3lsZ244LzQAL3lsZ244LzUAL3lsZ244LzYAL3lsZ244LzcAL3lsZ244LzgAL3lsZ245LzEAL3lsZ245LzIAL3lsZ245LzMAL3lsZ245LzQAL3lsZ245LzUAL3lsZ245LzYAL3lsZ245LzcAL3lsZ245LzgAL3lsZ245LzkAL3lsZ25idTMvMQAveWxnbmJ1My8yAC95bGduYnUzLzMAL3lsZ25idTQvMQAveWxnbmJ1NC8yAC95bGduYnU0LzMAL3lsZ25idTQvNAAveWxnbmJ1NS8xAC95bGduYnU1LzIAL3lsZ25idTUvMwAveWxnbmJ1NS80AC95bGduYnU1LzUAL3lsZ25idTYvMQAveWxnbmJ1Ni8yAC95bGduYnU2LzMAL3lsZ25idTYvNAAveWxnbmJ1Ni81AC95bGduYnU2LzYAL3lsZ25idTcvMQAveWxnbmJ1Ny8yAC95bGduYnU3LzMAL3lsZ25idTcvNAAveWxnbmJ1Ny81AC95bGduYnU3LzYAL3lsZ25idTcvNwAveWxnbmJ1OC8xAC95bGduYnU4LzIAL3lsZ25idTgvMwAveWxnbmJ1OC80AC95bGduYnU4LzUAL3lsZ25idTgvNgAveWxnbmJ1OC83AC95bGduYnU4LzgAL3lsZ25idTkvMQAveWxnbmJ1OS8yAC95bGduYnU5LzMAL3lsZ25idTkvNAAveWxnbmJ1OS81AC95bGduYnU5LzYAL3lsZ25idTkvNwAveWxnbmJ1OS84AC95bGduYnU5LzkAL3lsb3JicjMvMQAveWxvcmJyMy8yAC95bG9yYnIzLzMAL3lsb3JicjQvMQAveWxvcmJyNC8yAC95bG9yYnI0LzMAL3lsb3JicjQvNAAveWxvcmJyNS8xAC95bG9yYnI1LzIAL3lsb3JicjUvMwAveWxvcmJyNS80AC95bG9yYnI1LzUAL3lsb3JicjYvMQAveWxvcmJyNi8yAC95bG9yYnI2LzMAL3lsb3JicjYvNAAveWxvcmJyNi81AC95bG9yYnI2LzYAL3lsb3JicjcvMQAveWxvcmJyNy8yAC95bG9yYnI3LzMAL3lsb3JicjcvNAAveWxvcmJyNy81AC95bG9yYnI3LzYAL3lsb3JicjcvNwAveWxvcmJyOC8xAC95bG9yYnI4LzIAL3lsb3JicjgvMwAveWxvcmJyOC80AC95bG9yYnI4LzUAL3lsb3JicjgvNgAveWxvcmJyOC83AC95bG9yYnI4LzgAL3lsb3JicjkvMQAveWxvcmJyOS8yAC95bG9yYnI5LzMAL3lsb3JicjkvNAAveWxvcmJyOS81AC95bG9yYnI5LzYAL3lsb3JicjkvNwAveWxvcmJyOS84AC95bG9yYnI5LzkAL3lsb3JyZDMvMQAveWxvcnJkMy8yAC95bG9ycmQzLzMAL3lsb3JyZDQvMQAveWxvcnJkNC8yAC95bG9ycmQ0LzMAL3lsb3JyZDQvNAAveWxvcnJkNS8xAC95bG9ycmQ1LzIAL3lsb3JyZDUvMwAveWxvcnJkNS80AC95bG9ycmQ1LzUAL3lsb3JyZDYvMQAveWxvcnJkNi8yAC95bG9ycmQ2LzMAL3lsb3JyZDYvNAAveWxvcnJkNi81AC95bG9ycmQ2LzYAL3lsb3JyZDcvMQAveWxvcnJkNy8yAC95bG9ycmQ3LzMAL3lsb3JyZDcvNAAveWxvcnJkNy81AC95bG9ycmQ3LzYAL3lsb3JyZDcvNwAveWxvcnJkOC8xAC95bG9ycmQ4LzIAL3lsb3JyZDgvMwAveWxvcnJkOC80AC95bG9ycmQ4LzUAL3lsb3JyZDgvNgAveWxvcnJkOC83AC95bG9ycmQ4LzgAL3lsb3JyZDkvMQAveWxvcnJkOS8yAC95bG9ycmQ5LzMAL3lsb3JyZDkvNAAveWxvcnJkOS81AC95bG9ycmQ5LzYAL3lsb3JyZDkvNwAveWxvcnJkOS84AC95bG9ycmQ5LzkAYWxpY2VibHVlAGFudGlxdWV3aGl0ZQBhbnRpcXVld2hpdGUxAGFudGlxdWV3aGl0ZTIAYW50aXF1ZXdoaXRlMwBhbnRpcXVld2hpdGU0AGFxdWFtYXJpbmUAYXF1YW1hcmluZTEAYXF1YW1hcmluZTIAYXF1YW1hcmluZTMAYXF1YW1hcmluZTQAYXp1cmUAYXp1cmUxAGF6dXJlMgBhenVyZTMAYXp1cmU0AGJlaWdlAGJpc3F1ZQBiaXNxdWUxAGJpc3F1ZTIAYmlzcXVlMwBiaXNxdWU0AGJsYW5jaGVkYWxtb25kAGJsdWUAYmx1ZTEAYmx1ZTIAYmx1ZTMAYmx1ZTQAYmx1ZXZpb2xldABicm93bgBicm93bjEAYnJvd24yAGJyb3duMwBicm93bjQAYnVybHl3b29kAGJ1cmx5d29vZDEAYnVybHl3b29kMgBidXJseXdvb2QzAGJ1cmx5d29vZDQAY2FkZXRibHVlAGNhZGV0Ymx1ZTEAY2FkZXRibHVlMgBjYWRldGJsdWUzAGNhZGV0Ymx1ZTQAY2hhcnRyZXVzZQBjaGFydHJldXNlMQBjaGFydHJldXNlMgBjaGFydHJldXNlMwBjaGFydHJldXNlNABjaG9jb2xhdGUAY2hvY29sYXRlMQBjaG9jb2xhdGUyAGNob2NvbGF0ZTMAY2hvY29sYXRlNABjb3JhbABjb3JhbDEAY29yYWwyAGNvcmFsMwBjb3JhbDQAY29ybmZsb3dlcmJsdWUAY29ybnNpbGsAY29ybnNpbGsxAGNvcm5zaWxrMgBjb3Juc2lsazMAY29ybnNpbGs0AGNyaW1zb24AY3lhbgBjeWFuMQBjeWFuMgBjeWFuMwBjeWFuNABkYXJrZ29sZGVucm9kAGRhcmtnb2xkZW5yb2QxAGRhcmtnb2xkZW5yb2QyAGRhcmtnb2xkZW5yb2QzAGRhcmtnb2xkZW5yb2Q0AGRhcmtncmVlbgBkYXJra2hha2kAZGFya29saXZlZ3JlZW4AZGFya29saXZlZ3JlZW4xAGRhcmtvbGl2ZWdyZWVuMgBkYXJrb2xpdmVncmVlbjMAZGFya29saXZlZ3JlZW40AGRhcmtvcmFuZ2UAZGFya29yYW5nZTEAZGFya29yYW5nZTIAZGFya29yYW5nZTMAZGFya29yYW5nZTQAZGFya29yY2hpZABkYXJrb3JjaGlkMQBkYXJrb3JjaGlkMgBkYXJrb3JjaGlkMwBkYXJrb3JjaGlkNABkYXJrc2FsbW9uAGRhcmtzZWFncmVlbgBkYXJrc2VhZ3JlZW4xAGRhcmtzZWFncmVlbjIAZGFya3NlYWdyZWVuMwBkYXJrc2VhZ3JlZW40AGRhcmtzbGF0ZWJsdWUAZGFya3NsYXRlZ3JheQBkYXJrc2xhdGVncmF5MQBkYXJrc2xhdGVncmF5MgBkYXJrc2xhdGVncmF5MwBkYXJrc2xhdGVncmF5NABkYXJrc2xhdGVncmV5AGRhcmt0dXJxdW9pc2UAZGFya3Zpb2xldABkZWVwcGluawBkZWVwcGluazEAZGVlcHBpbmsyAGRlZXBwaW5rMwBkZWVwcGluazQAZGVlcHNreWJsdWUAZGVlcHNreWJsdWUxAGRlZXBza3libHVlMgBkZWVwc2t5Ymx1ZTMAZGVlcHNreWJsdWU0AGRpbWdyYXkAZGltZ3JleQBkb2RnZXJibHVlAGRvZGdlcmJsdWUxAGRvZGdlcmJsdWUyAGRvZGdlcmJsdWUzAGRvZGdlcmJsdWU0AGZpcmVicmljawBmaXJlYnJpY2sxAGZpcmVicmljazIAZmlyZWJyaWNrMwBmaXJlYnJpY2s0AGZsb3JhbHdoaXRlAGZvcmVzdGdyZWVuAGdhaW5zYm9ybwBnaG9zdHdoaXRlAGdvbGQAZ29sZDEAZ29sZDIAZ29sZDMAZ29sZDQAZ29sZGVucm9kAGdvbGRlbnJvZDEAZ29sZGVucm9kMgBnb2xkZW5yb2QzAGdvbGRlbnJvZDQAZ3JheQBncmF5MABncmF5MQBncmF5MTAAZ3JheTEwMABncmF5MTEAZ3JheTEyAGdyYXkxMwBncmF5MTQAZ3JheTE1AGdyYXkxNgBncmF5MTcAZ3JheTE4AGdyYXkxOQBncmF5MgBncmF5MjAAZ3JheTIxAGdyYXkyMgBncmF5MjMAZ3JheTI0AGdyYXkyNQBncmF5MjYAZ3JheTI3AGdyYXkyOABncmF5MjkAZ3JheTMAZ3JheTMwAGdyYXkzMQBncmF5MzIAZ3JheTMzAGdyYXkzNABncmF5MzUAZ3JheTM2AGdyYXkzNwBncmF5MzgAZ3JheTM5AGdyYXk0AGdyYXk0MABncmF5NDEAZ3JheTQyAGdyYXk0MwBncmF5NDQAZ3JheTQ1AGdyYXk0NgBncmF5NDcAZ3JheTQ4AGdyYXk0OQBncmF5NQBncmF5NTAAZ3JheTUxAGdyYXk1MgBncmF5NTMAZ3JheTU0AGdyYXk1NQBncmF5NTYAZ3JheTU3AGdyYXk1OABncmF5NTkAZ3JheTYAZ3JheTYwAGdyYXk2MQBncmF5NjIAZ3JheTYzAGdyYXk2NABncmF5NjUAZ3JheTY2AGdyYXk2NwBncmF5NjgAZ3JheTY5AGdyYXk3AGdyYXk3MABncmF5NzEAZ3JheTcyAGdyYXk3MwBncmF5NzQAZ3JheTc1AGdyYXk3NgBncmF5NzcAZ3JheTc4AGdyYXk3OQBncmF5OABncmF5ODAAZ3JheTgxAGdyYXk4MgBncmF5ODMAZ3JheTg0AGdyYXk4NQBncmF5ODYAZ3JheTg3AGdyYXk4OABncmF5ODkAZ3JheTkAZ3JheTkwAGdyYXk5MQBncmF5OTIAZ3JheTkzAGdyYXk5NABncmF5OTUAZ3JheTk2AGdyYXk5NwBncmF5OTgAZ3JheTk5AGdyZWVuAGdyZWVuMQBncmVlbjIAZ3JlZW4zAGdyZWVuNABncmVlbnllbGxvdwBncmV5AGdyZXkwAGdyZXkxAGdyZXkxMABncmV5MTAwAGdyZXkxMQBncmV5MTIAZ3JleTEzAGdyZXkxNABncmV5MTUAZ3JleTE2AGdyZXkxNwBncmV5MTgAZ3JleTE5AGdyZXkyAGdyZXkyMABncmV5MjEAZ3JleTIyAGdyZXkyMwBncmV5MjQAZ3JleTI1AGdyZXkyNgBncmV5MjcAZ3JleTI4AGdyZXkyOQBncmV5MwBncmV5MzAAZ3JleTMxAGdyZXkzMgBncmV5MzMAZ3JleTM0AGdyZXkzNQBncmV5MzYAZ3JleTM3AGdyZXkzOABncmV5MzkAZ3JleTQAZ3JleTQwAGdyZXk0MQBncmV5NDIAZ3JleTQzAGdyZXk0NABncmV5NDUAZ3JleTQ2AGdyZXk0NwBncmV5NDgAZ3JleTQ5AGdyZXk1AGdyZXk1MABncmV5NTEAZ3JleTUyAGdyZXk1MwBncmV5NTQAZ3JleTU1AGdyZXk1NgBncmV5NTcAZ3JleTU4AGdyZXk1OQBncmV5NgBncmV5NjAAZ3JleTYxAGdyZXk2MgBncmV5NjMAZ3JleTY0AGdyZXk2NQBncmV5NjYAZ3JleTY3AGdyZXk2OABncmV5NjkAZ3JleTcAZ3JleTcwAGdyZXk3MQBncmV5NzIAZ3JleTczAGdyZXk3NABncmV5NzUAZ3JleTc2AGdyZXk3NwBncmV5NzgAZ3JleTc5AGdyZXk4AGdyZXk4MABncmV5ODEAZ3JleTgyAGdyZXk4MwBncmV5ODQAZ3JleTg1AGdyZXk4NgBncmV5ODcAZ3JleTg4AGdyZXk4OQBncmV5OQBncmV5OTAAZ3JleTkxAGdyZXk5MgBncmV5OTMAZ3JleTk0AGdyZXk5NQBncmV5OTYAZ3JleTk3AGdyZXk5OABncmV5OTkAaG9uZXlkZXcAaG9uZXlkZXcxAGhvbmV5ZGV3MgBob25leWRldzMAaG9uZXlkZXc0AGhvdHBpbmsAaG90cGluazEAaG90cGluazIAaG90cGluazMAaG90cGluazQAaW5kaWFucmVkAGluZGlhbnJlZDEAaW5kaWFucmVkMgBpbmRpYW5yZWQzAGluZGlhbnJlZDQAaW5kaWdvAGludmlzAGl2b3J5AGl2b3J5MQBpdm9yeTIAaXZvcnkzAGl2b3J5NABraGFraQBraGFraTEAa2hha2kyAGtoYWtpMwBraGFraTQAbGF2ZW5kZXIAbGF2ZW5kZXJibHVzaABsYXZlbmRlcmJsdXNoMQBsYXZlbmRlcmJsdXNoMgBsYXZlbmRlcmJsdXNoMwBsYXZlbmRlcmJsdXNoNABsYXduZ3JlZW4AbGVtb25jaGlmZm9uAGxlbW9uY2hpZmZvbjEAbGVtb25jaGlmZm9uMgBsZW1vbmNoaWZmb24zAGxlbW9uY2hpZmZvbjQAbGlnaHRibHVlAGxpZ2h0Ymx1ZTEAbGlnaHRibHVlMgBsaWdodGJsdWUzAGxpZ2h0Ymx1ZTQAbGlnaHRjb3JhbABsaWdodGN5YW4AbGlnaHRjeWFuMQBsaWdodGN5YW4yAGxpZ2h0Y3lhbjMAbGlnaHRjeWFuNABsaWdodGdvbGRlbnJvZABsaWdodGdvbGRlbnJvZDEAbGlnaHRnb2xkZW5yb2QyAGxpZ2h0Z29sZGVucm9kMwBsaWdodGdvbGRlbnJvZDQAbGlnaHRnb2xkZW5yb2R5ZWxsb3cAbGlnaHRncmF5AGxpZ2h0Z3JleQBsaWdodHBpbmsAbGlnaHRwaW5rMQBsaWdodHBpbmsyAGxpZ2h0cGluazMAbGlnaHRwaW5rNABsaWdodHNhbG1vbgBsaWdodHNhbG1vbjEAbGlnaHRzYWxtb24yAGxpZ2h0c2FsbW9uMwBsaWdodHNhbG1vbjQAbGlnaHRzZWFncmVlbgBsaWdodHNreWJsdWUAbGlnaHRza3libHVlMQBsaWdodHNreWJsdWUyAGxpZ2h0c2t5Ymx1ZTMAbGlnaHRza3libHVlNABsaWdodHNsYXRlYmx1ZQBsaWdodHNsYXRlZ3JheQBsaWdodHNsYXRlZ3JleQBsaWdodHN0ZWVsYmx1ZQBsaWdodHN0ZWVsYmx1ZTEAbGlnaHRzdGVlbGJsdWUyAGxpZ2h0c3RlZWxibHVlMwBsaWdodHN0ZWVsYmx1ZTQAbGlnaHR5ZWxsb3cAbGlnaHR5ZWxsb3cxAGxpZ2h0eWVsbG93MgBsaWdodHllbGxvdzMAbGlnaHR5ZWxsb3c0AGxpbWVncmVlbgBsaW5lbgBtYWdlbnRhAG1hZ2VudGExAG1hZ2VudGEyAG1hZ2VudGEzAG1hZ2VudGE0AG1hcm9vbgBtYXJvb24xAG1hcm9vbjIAbWFyb29uMwBtYXJvb240AG1lZGl1bWFxdWFtYXJpbmUAbWVkaXVtYmx1ZQBtZWRpdW1vcmNoaWQAbWVkaXVtb3JjaGlkMQBtZWRpdW1vcmNoaWQyAG1lZGl1bW9yY2hpZDMAbWVkaXVtb3JjaGlkNABtZWRpdW1wdXJwbGUAbWVkaXVtcHVycGxlMQBtZWRpdW1wdXJwbGUyAG1lZGl1bXB1cnBsZTMAbWVkaXVtcHVycGxlNABtZWRpdW1zZWFncmVlbgBtZWRpdW1zbGF0ZWJsdWUAbWVkaXVtc3ByaW5nZ3JlZW4AbWVkaXVtdHVycXVvaXNlAG1lZGl1bXZpb2xldHJlZABtaWRuaWdodGJsdWUAbWludGNyZWFtAG1pc3R5cm9zZQBtaXN0eXJvc2UxAG1pc3R5cm9zZTIAbWlzdHlyb3NlMwBtaXN0eXJvc2U0AG1vY2Nhc2luAG5hdmFqb3doaXRlAG5hdmFqb3doaXRlMQBuYXZham93aGl0ZTIAbmF2YWpvd2hpdGUzAG5hdmFqb3doaXRlNABuYXZ5AG5hdnlibHVlAG5vbmUAb2xkbGFjZQBvbGl2ZWRyYWIAb2xpdmVkcmFiMQBvbGl2ZWRyYWIyAG9saXZlZHJhYjMAb2xpdmVkcmFiNABvcmFuZ2UAb3JhbmdlMQBvcmFuZ2UyAG9yYW5nZTMAb3JhbmdlNABvcmFuZ2VyZWQAb3JhbmdlcmVkMQBvcmFuZ2VyZWQyAG9yYW5nZXJlZDMAb3JhbmdlcmVkNABvcmNoaWQAb3JjaGlkMQBvcmNoaWQyAG9yY2hpZDMAb3JjaGlkNABwYWxlZ29sZGVucm9kAHBhbGVncmVlbgBwYWxlZ3JlZW4xAHBhbGVncmVlbjIAcGFsZWdyZWVuMwBwYWxlZ3JlZW40AHBhbGV0dXJxdW9pc2UAcGFsZXR1cnF1b2lzZTEAcGFsZXR1cnF1b2lzZTIAcGFsZXR1cnF1b2lzZTMAcGFsZXR1cnF1b2lzZTQAcGFsZXZpb2xldHJlZABwYWxldmlvbGV0cmVkMQBwYWxldmlvbGV0cmVkMgBwYWxldmlvbGV0cmVkMwBwYWxldmlvbGV0cmVkNABwYXBheWF3aGlwAHBlYWNocHVmZgBwZWFjaHB1ZmYxAHBlYWNocHVmZjIAcGVhY2hwdWZmMwBwZWFjaHB1ZmY0AHBlcnUAcGluawBwaW5rMQBwaW5rMgBwaW5rMwBwaW5rNABwbHVtAHBsdW0xAHBsdW0yAHBsdW0zAHBsdW00AHBvd2RlcmJsdWUAcHVycGxlAHB1cnBsZTEAcHVycGxlMgBwdXJwbGUzAHB1cnBsZTQAcmVkAHJlZDEAcmVkMgByZWQzAHJlZDQAcm9zeWJyb3duAHJvc3licm93bjEAcm9zeWJyb3duMgByb3N5YnJvd24zAHJvc3licm93bjQAcm95YWxibHVlAHJveWFsYmx1ZTEAcm95YWxibHVlMgByb3lhbGJsdWUzAHJveWFsYmx1ZTQAc2FkZGxlYnJvd24Ac2FsbW9uAHNhbG1vbjEAc2FsbW9uMgBzYWxtb24zAHNhbG1vbjQAc2FuZHlicm93bgBzZWFncmVlbgBzZWFncmVlbjEAc2VhZ3JlZW4yAHNlYWdyZWVuMwBzZWFncmVlbjQAc2Vhc2hlbGwAc2Vhc2hlbGwxAHNlYXNoZWxsMgBzZWFzaGVsbDMAc2Vhc2hlbGw0AHNpZW5uYQBzaWVubmExAHNpZW5uYTIAc2llbm5hMwBzaWVubmE0AHNreWJsdWUAc2t5Ymx1ZTEAc2t5Ymx1ZTIAc2t5Ymx1ZTMAc2t5Ymx1ZTQAc2xhdGVibHVlAHNsYXRlYmx1ZTEAc2xhdGVibHVlMgBzbGF0ZWJsdWUzAHNsYXRlYmx1ZTQAc2xhdGVncmF5AHNsYXRlZ3JheTEAc2xhdGVncmF5MgBzbGF0ZWdyYXkzAHNsYXRlZ3JheTQAc2xhdGVncmV5AHNub3cAc25vdzEAc25vdzIAc25vdzMAc25vdzQAc3ByaW5nZ3JlZW4Ac3ByaW5nZ3JlZW4xAHNwcmluZ2dyZWVuMgBzcHJpbmdncmVlbjMAc3ByaW5nZ3JlZW40AHN0ZWVsYmx1ZQBzdGVlbGJsdWUxAHN0ZWVsYmx1ZTIAc3RlZWxibHVlMwBzdGVlbGJsdWU0AHRhbgB0YW4xAHRhbjIAdGFuMwB0YW40AHRoaXN0bGUAdGhpc3RsZTEAdGhpc3RsZTIAdGhpc3RsZTMAdGhpc3RsZTQAdG9tYXRvAHRvbWF0bzEAdG9tYXRvMgB0b21hdG8zAHRvbWF0bzQAdHVycXVvaXNlAHR1cnF1b2lzZTEAdHVycXVvaXNlMgB0dXJxdW9pc2UzAHR1cnF1b2lzZTQAdmlvbGV0AHZpb2xldHJlZAB2aW9sZXRyZWQxAHZpb2xldHJlZDIAdmlvbGV0cmVkMwB2aW9sZXRyZWQ0AHdoZWF0AHdoZWF0MQB3aGVhdDIAd2hlYXQzAHdoZWF0NAB3aGl0ZQB3aGl0ZXNtb2tlAHllbGxvdwB5ZWxsb3cxAHllbGxvdzIAeWVsbG93MwB5ZWxsb3c0AHllbGxvd2dyZWVuAGxhY2sAaGl0ZQBpZ2h0Z3JleQBYMTEvAC8lcy8lcwBpbWFnZXNjYWxlAGZhbHNlAGJsYWNrAGRvdHRlZABkYXNoZWQAY3AtPnNyYwBodG1sdGFibGUuYwBlbWl0X2h0bWxfaW1nAGNwLT5zcmNbMF0AdHJhbnNwYXJlbnQAXyVkACVkADIAMwA0ADUANgA3ADgAOQAxMAAxMQAxMgAxMwAxNAAxNQAxNgAxNwAxOAAxOQAyMABBZ25vZGVpbmZvX3QAQWdlZGdlaW5mb190AHJvd2cAY29sZwBBZ3JhcGhpbmZvX3QAZGVseCA+PSAwAHBvc19odG1sX3RibABkZWx5ID49IDAAdGFibGUgc2l6ZSB0b28gc21hbGwgZm9yIGNvbnRlbnQKAGZpeGVkIHRhYmxlIHNpemUgd2l0aCB1bnNwZWNpZmllZCB3aWR0aCBvciBoZWlnaHQKAGNlbGwgc2l6ZSB0b28gc21hbGwgZm9yIGNvbnRlbnQKAGZpeGVkIGNlbGwgc2l6ZSB3aXRoIHVuc3BlY2lmaWVkIHdpZHRoIG9yIGhlaWdodAoATm8gb3IgaW1wcm9wZXIgaW1hZ2UgZmlsZT0iJXMiCgBwZW5jb2xvcgAtPgBmUFEuYwBQUWNoZWNrAEhlYXAgb3ZlcmZsb3cKACUhUFMtQWRvYmUtMi4wCi9ub2RlIHsKICAvWSBleGNoIGRlZgogIC9YIGV4Y2ggZGVmCiAgL3kgZXhjaCBkZWYKICAveCBleGNoIGRlZgogIG5ld3BhdGgKICB4IHkgbW92ZXRvCiAgeCBZIGxpbmV0bwogIFggWSBsaW5ldG8KICBYIHkgbGluZXRvCiAgY2xvc2VwYXRoIGZpbGwKfSBkZWYKL2NlbGwgewogIC9ZIGV4Y2ggZGVmCiAgL1ggZXhjaCBkZWYKICAveSBleGNoIGRlZgogIC94IGV4Y2ggZGVmCiAgbmV3cGF0aAogIHggeSBtb3ZldG8KICB4IFkgbGluZXRvCiAgWCBZIGxpbmV0bwogIFggeSBsaW5ldG8KICBjbG9zZXBhdGggc3Ryb2tlCn0gZGVmCgBzaG93cGFnZQoAZmFpbGVkIGF0IG5vZGUgJWRbMF0KAG5wLT5jZWxsc1swXQBtYXplLmMAY2hrU2dyYXBoAGZhaWxlZCBhdCBub2RlICVkWzFdCgBucC0+Y2VsbHNbMV0AZGl0ZW1zAGZpbmRTVmVydAAlJSUlUGFnZTogMSAxCiUlJSVQYWdlQm91bmRpbmdCb3g6ICVkICVkICVkICVkCgAlZiAlZiB0cmFuc2xhdGUKADAgMCAxIHNldHJnYmNvbG9yCgAlZiAlZiAlZiAlZiBub2RlCgAwIDAgMCBzZXRyZ2Jjb2xvcgoAJWYgJWYgJWYgJWYgY2VsbAoAMSAwIDAgc2V0cmdiY29sb3IKAHVuZXhwZWN0ZWQgY2FzZSBpbiBsb2NhdGVfZW5kcG9pbnQKADAAdHJhcGV6b2lkLmMAbG9jYXRlX2VuZHBvaW50AGFkZF9zZWdtZW50OiBlcnJvcgoAbmV3bm9kZTogUXVlcnktdGFibGUgb3ZlcmZsb3cKAG5ld25vZGUAbmV3dHJhcDogVHJhcGV6b2lkLXRhYmxlIG92ZXJmbG93ICVkCgBuZXd0cmFwAGluZGV4LmMAUlRyZWVTZWFyY2gAbi0+bGV2ZWwgPj0gMABSVHJlZUluc2VydABsZXZlbCA+PSAwICYmIGxldmVsIDw9ICgqbiktPmxldmVsAHItPmJvdW5kYXJ5W2ldIDw9IHItPmJvdW5kYXJ5W05VTURJTVMgKyBpXQByICYmIG4gJiYgbmV3AFJUcmVlSW5zZXJ0MgBsZXZlbCA+PSAwICYmIGxldmVsIDw9IG4tPmxldmVsAEZBTFNFAG5vZGUuYwBOb2RlQ292ZXIAciAmJiBuAFBpY2tCcmFuY2gAQWRkQnJhbmNoAGkgPCBOT0RFQ0FSRABuZXcAbiAmJiBpID49IDAgJiYgaSA8IE5PREVDQVJEAERpc2NvbkJyYW5jaAByAHJlY3RhbmdsZS5jAFJlY3RBcmVhAHIgJiYgcnIAQ29tYmluZVJlY3QAciAmJiBzAE92ZXJsYXAAbgBzcGxpdC5xLmMAU3BsaXROb2RlAGIAbi0+Y291bnQgKyAoKm5uKS0+Y291bnQgPT0gTk9ERUNBUkQgKyAxAExvYWROb2RlcwBxAHAAcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLnBhcnRpdGlvbltpXSA9PSAwIHx8IHJ0cC0+c3BsaXQuUGFydGl0aW9uc1swXS5wYXJ0aXRpb25baV0gPT0gMQBydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0uY291bnRbMF0gKyBydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0uY291bnRbMV0gPT0gTk9ERUNBUkQgKyAxAE1ldGhvZFplcm8AcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLmNvdW50WzBdID49IHJ0cC0+TWluRmlsbCAmJiBydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0uY291bnRbMV0gPj0gcnRwLT5NaW5GaWxsACFydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0udGFrZW5baV0AQ2xhc3NpZnkAR2V0QnJhbmNoZXMAbi0+YnJhbmNoW2ldLmNoaWxkAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoAgICAgICEAxZAQAfUAgDBxITFFcWFwgLaQwfCgUMDikRKw8tEC8wIDIGNDUbHB0eCwwhIiMkJSYnKAwYGRcEChscGiAqCiEiIyQlJicoDAoOUwosWDFYWFhYWFgMGxwPLlgzISIjJCUmJygbHP9T//8hIiMkJSYnKAz//wX///8JFP//////DBsc/xAVFiEiIyQlJicoGxz/////ISIjJCUmJygM/xITFBEWF////////wwbHP///xIhIiMkJSYnKBsc/////yEiIyQlJicoDP///////xP///////8MGxz/////ISIjJCUmJygbHP////8hIiMkJSYnKBITFBUWFxgZ////////////IyQlJicbEhMUFhciNmgBHzhWISACGxsbXhsbNzlwNtLCTwQ8IkciPyJEIiJYImUiIgUGX2A5BAcICQoLDA0OBGZnXWptBQZvWDtxBwgJCgsMDQ4Ecjxbcz5hRhsSExQWFwQFBj9BYkkHCAkKCwwNDgUGAFwAAAcICQoLDA0OBAAATwAAAFNCAAAAAAAEBQYARFRVBwgJCgsMDQ4FBgAAAAAHCAkKCwwNDgQAKiwuRzEzAAAAAAAABAUGAAAASgcICQoLDA0OBQYAAAAABwgJCgsMDQ4EAAAAAAAATAAAAAAAAAQFBgAAAAAHCAkKCwwNDgUGAAAAAAcICQoLDA0OKSstLzAyNDUAAAAAAAAAAAApKy0wMgAELwAkIwASFBYaHB4gGAAFBy8vLwAvLwAACQgoAAABIgIGAAAAAAAIAAAAAAAAAAAAAAAAACUDJhMKKRULKhcOLRkRGwwrHQ0sHw8hEAAzADAAL0MAMQAvADUuJ0IyQQA6OAA8NEUANgBAAAA/AEQ3Ozk9AAIDAwEBAgEBAQMDAwMDAwMDAQEBAQEBAQEBAQEBAQEBAQIBAQIABgEDAwMDAwEAAQIDAAQBAgMABAAEAAQAAwIBAgECAVN5bnRheCBlcnJvcjogbm9uLXNwYWNlIHN0cmluZyB1c2VkIGJlZm9yZSA8VEFCTEU+AFN5bnRheCBlcnJvcjogbm9uLXNwYWNlIHN0cmluZyB1c2VkIGFmdGVyIDwvVEFCTEU+AAApKioqKywsLS0tLS0tLS0tLS4vMDEyMzQ1Njc4OTo7PD0+Pj8/QUBCQkJCQkJDQ0REREZFR0dHSUhKSEtITEhNTU5OT0//Aw8QESM6JD0lQBVDJkUnSBhLGU0aKBxOHR5QUVJZWmxrbmNkV2ltZW1vcnkgZXhoYXVzdGVkACVzIGluIGxpbmUgJWQgCgAuLi4gJXMgLi4uCgBUQUJMRQBUUgBUSABURABIVE1MAEZPTlQAQgBVAE8ASQBTVVAAU1VCAFMAQlIASFIAVlIASU1HAFVua25vd24gSFRNTCBlbGVtZW50IDwlcz4gb24gbGluZSAlZCAKADxJTUc+AElsbGVnYWwgYXR0cmlidXRlICVzIGluICVzIC0gaWdub3JlZAoAc2NhbGUAc3JjADxCUj4AYWxpZ24ASUdIVABFRlQARU5URVIASWxsZWdhbCB2YWx1ZSAlcyBmb3IgQUxJR04gLSBpZ25vcmVkCgA8Rk9OVD4AY29sb3IAZmFjZQBwb2ludC1zaXplAFBPSU5ULVNJWkUASW1wcm9wZXIgJXMgdmFsdWUgJXMgLSBpZ25vcmVkACVzIHZhbHVlICVzID4gJWQgLSB0b28gbGFyZ2UgLSBpZ25vcmVkACVzIHZhbHVlICVzIDwgJWQgLSB0b28gc21hbGwgLSBpZ25vcmVkADxURD4AYmFsaWduAGJnY29sb3IAYm9yZGVyAGNlbGxwYWRkaW5nAGNlbGxzcGFjaW5nAGNvbHNwYW4AZml4ZWRzaXplAGdyYWRpZW50YW5nbGUAaGVpZ2h0AGhyZWYAaWQAcG9ydAByb3dzcGFuAHNpZGVzAHN0eWxlAHRhcmdldAB0aXRsZQB0b29sdGlwAHZhbGlnbgB3aWR0aABXSURUSABPVFRPTQBPUABJRERMRQBJbGxlZ2FsIHZhbHVlICVzIGZvciBWQUxJR04gLSBpZ25vcmVkCgAgLABPVU5ERUQAQURJQUwASWxsZWdhbCB2YWx1ZSAlcyBmb3IgU1RZTEUgLSBpZ25vcmVkCgBTT0xJRABJTlZJU0lCTEUASU5WSVMARE9UVEVEAERBU0hFRABVbnJlY29nbml6ZWQgY2hhcmFjdGVyICclYycgKCVkKSBpbiBzaWRlcyBhdHRyaWJ1dGUKAFJPV1NQQU4AUk9XU1BBTiB2YWx1ZSBjYW5ub3QgYmUgMCAtIGlnbm9yZWQKAEhFSUdIVABHUkFESUVOVEFOR0xFAFJVRQBBTFNFAElsbGVnYWwgdmFsdWUgJXMgZm9yIEZJWEVEU0laRSAtIGlnbm9yZWQKAENPTFNQQU4AQ09MU1BBTiB2YWx1ZSBjYW5ub3QgYmUgMCAtIGlnbm9yZWQKAENFTExTUEFDSU5HAENFTExQQURESU5HAEJPUkRFUgBJbGxlZ2FsIHZhbHVlICVzIGZvciBCQUxJR04gaW4gVEQgLSBpZ25vcmVkCgBFWFQASWxsZWdhbCB2YWx1ZSAlcyBmb3IgQUxJR04gaW4gVEQgLSBpZ25vcmVkCgA8VEFCTEU+AGNlbGxib3JkZXIAY29sdW1ucwByb3dzAFVua25vd24gdmFsdWUgJXMgZm9yIFJPV1MgLSBpZ25vcmVkCgBVbmtub3duIHZhbHVlICVzIGZvciBDT0xVTU5TIC0gaWdub3JlZAoAQ0VMTFNCT1JERVIAPEhUTUw+ADwvSFRNTD4ALS0ATGFiZWwgY2xvc2VkIGJlZm9yZSBlbmQgb2YgSFRNTCBlbGVtZW50CgBVbmNsb3NlZCBjb21tZW50CgBqID09IDAAY3Z0LmMAUG9ic3BhdGgAcm91dGUuYwBsaWJwYXRoLyVzOiVkOiAlcwoAc2hvcnRlc3QuYwBzb3VyY2UgcG9pbnQgbm90IGluIGFueSB0cmlhbmdsZQBkZXN0aW5hdGlvbiBwb2ludCBub3QgaW4gYW55IHRyaWFuZ2xlAGNhbm5vdCBmaW5kIHRyaWFuZ2xlIHBhdGgAY2Fubm90IG1hbGxvYyBvcHMAY2Fubm90IHJlYWxsb2Mgb3BzAHRyaWFuZ3VsYXRpb24gZmFpbGVkAGNhbm5vdCBtYWxsb2MgdHJpcwBjYW5ub3QgcmVhbGxvYyB0cmlzAGNhbm5vdCBtYWxsb2MgZHEucG5scwBjYW5ub3QgcmVhbGxvYyBkcS5wbmxzAGNhbm5vdCBtYWxsb2MgcG5scwBjYW5ub3QgbWFsbG9jIHBubHBzAGNhbm5vdCByZWFsbG9jIHBubHMAY2Fubm90IHJlYWxsb2MgcG5scHMAQ0RBVEEASUQASURSRUYASURSRUZTAEVOVElUWQBFTlRJVElFUwBOTVRPS0VOAE5NVE9LRU5TAE5PVEFUSU9OKAAoAHwAaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlAGh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvAHhtbD1odHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UAL2Rldi91cmFuZG9tAGZhbGxiYWNrKDQpAGdldHRpbWVvZmRheV9yZXMgPT0gMAB4bWxwYXJzZS5jAGdhdGhlcl90aW1lX2VudHJvcHkARVhQQVRfRU5UUk9QWV9ERUJVRwAxAEVudHJvcHk6ICVzIC0tPiAweCUwKmx4ICglbHUgYnl0ZXMpCgBpbnZhbGlkIGFyZ3VtZW50AHByZWZpeCBtdXN0IG5vdCBiZSBib3VuZCB0byBvbmUgb2YgdGhlIHJlc2VydmVkIG5hbWVzcGFjZSBuYW1lcwByZXNlcnZlZCBwcmVmaXggKHhtbG5zKSBtdXN0IG5vdCBiZSBkZWNsYXJlZCBvciB1bmRlY2xhcmVkAHJlc2VydmVkIHByZWZpeCAoeG1sKSBtdXN0IG5vdCBiZSB1bmRlY2xhcmVkIG9yIGJvdW5kIHRvIGFub3RoZXIgbmFtZXNwYWNlIG5hbWUAY2Fubm90IHN1c3BlbmQgaW4gZXh0ZXJuYWwgcGFyYW1ldGVyIGVudGl0eQBwYXJzaW5nIGZpbmlzaGVkAHBhcnNpbmcgYWJvcnRlZABwYXJzZXIgbm90IHN1c3BlbmRlZABwYXJzZXIgc3VzcGVuZGVkAGlsbGVnYWwgY2hhcmFjdGVyKHMpIGluIHB1YmxpYyBpZAB0ZXh0IGRlY2xhcmF0aW9uIG5vdCB3ZWxsLWZvcm1lZABYTUwgZGVjbGFyYXRpb24gbm90IHdlbGwtZm9ybWVkAGluY29tcGxldGUgbWFya3VwIGluIHBhcmFtZXRlciBlbnRpdHkAbXVzdCBub3QgdW5kZWNsYXJlIHByZWZpeAB1bmJvdW5kIHByZWZpeABjYW5ub3QgY2hhbmdlIHNldHRpbmcgb25jZSBwYXJzaW5nIGhhcyBiZWd1bgByZXF1ZXN0ZWQgZmVhdHVyZSByZXF1aXJlcyBYTUxfRFREIHN1cHBvcnQgaW4gRXhwYXQAZW50aXR5IGRlY2xhcmVkIGluIHBhcmFtZXRlciBlbnRpdHkAdW5leHBlY3RlZCBwYXJzZXIgc3RhdGUgLSBwbGVhc2Ugc2VuZCBhIGJ1ZyByZXBvcnQAZG9jdW1lbnQgaXMgbm90IHN0YW5kYWxvbmUAZXJyb3IgaW4gcHJvY2Vzc2luZyBleHRlcm5hbCBlbnRpdHkgcmVmZXJlbmNlAHVuY2xvc2VkIENEQVRBIHNlY3Rpb24AZW5jb2Rpbmcgc3BlY2lmaWVkIGluIFhNTCBkZWNsYXJhdGlvbiBpcyBpbmNvcnJlY3QAdW5rbm93biBlbmNvZGluZwBYTUwgb3IgdGV4dCBkZWNsYXJhdGlvbiBub3QgYXQgc3RhcnQgb2YgZW50aXR5AHJlZmVyZW5jZSB0byBleHRlcm5hbCBlbnRpdHkgaW4gYXR0cmlidXRlAHJlZmVyZW5jZSB0byBiaW5hcnkgZW50aXR5AHJlZmVyZW5jZSB0byBpbnZhbGlkIGNoYXJhY3RlciBudW1iZXIAYXN5bmNocm9ub3VzIGVudGl0eQByZWN1cnNpdmUgZW50aXR5IHJlZmVyZW5jZQB1bmRlZmluZWQgZW50aXR5AGlsbGVnYWwgcGFyYW1ldGVyIGVudGl0eSByZWZlcmVuY2UAanVuayBhZnRlciBkb2N1bWVudCBlbGVtZW50AGR1cGxpY2F0ZSBhdHRyaWJ1dGUAbWlzbWF0Y2hlZCB0YWcAcGFydGlhbCBjaGFyYWN0ZXIAdW5jbG9zZWQgdG9rZW4Abm90IHdlbGwtZm9ybWVkIChpbnZhbGlkIHRva2VuKQBubyBlbGVtZW50IGZvdW5kAHN5bnRheCBlcnJvcgBvdXQgb2YgbWVtb3J5AAIDBAUGBwgAAAkKCwwNDg8QEQAAAAAAAAAAAAAAABITABQAAAAAAAAAAAAAAAAAABUWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARcAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAxobHB0eAAAfICEiIyQlEBEAAAAAAAAAAAAAAAASEyYUAAAAAAAAAAAAAAAAAAAnFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEXAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBARgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ0RBVEFbVVMtQVNDSUkAVVRGLTE2AFVURi0xNkJFAFVURi0xNkxFAHZlcnNpb24AZW5jb2RpbmcAc3RhbmRhbG9uZQBET0NUWVBFAFNZU1RFTQBQVUJMSUMARU5USVRZAEFUVExJU1QARUxFTUVOVABOT1RBVElPTgBJTkNMVURFAElHTk9SRQBFTVBUWQBBTlkAUENEQVRBAElNUExJRUQAUkVRVUlSRUQARklYRUQAQ0RBVEEASUQASURSRUYASURSRUZTAEVOVElUSUVTAE5NVE9LRU4ATk1UT0tFTlMATkRBVEEAVCEiGQ0BAgMRSxwMEAQLHRIeJ2hub3BxYiAFBg8TFBUaCBYHKCQXGAkKDhsfJSODgn0mKis8PT4/Q0dKTVhZWltcXV5fYGFjZGVmZ2lqa2xyc3R5ent8AElsbGVnYWwgYnl0ZSBzZXF1ZW5jZQBEb21haW4gZXJyb3IAUmVzdWx0IG5vdCByZXByZXNlbnRhYmxlAE5vdCBhIHR0eQBQZXJtaXNzaW9uIGRlbmllZABPcGVyYXRpb24gbm90IHBlcm1pdHRlZABObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5AE5vIHN1Y2ggcHJvY2VzcwBGaWxlIGV4aXN0cwBWYWx1ZSB0b28gbGFyZ2UgZm9yIGRhdGEgdHlwZQBObyBzcGFjZSBsZWZ0IG9uIGRldmljZQBPdXQgb2YgbWVtb3J5AFJlc291cmNlIGJ1c3kASW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwAUmVzb3VyY2UgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUASW52YWxpZCBzZWVrAENyb3NzLWRldmljZSBsaW5rAFJlYWQtb25seSBmaWxlIHN5c3RlbQBEaXJlY3Rvcnkgbm90IGVtcHR5AENvbm5lY3Rpb24gcmVzZXQgYnkgcGVlcgBPcGVyYXRpb24gdGltZWQgb3V0AENvbm5lY3Rpb24gcmVmdXNlZABIb3N0IGlzIGRvd24ASG9zdCBpcyB1bnJlYWNoYWJsZQBBZGRyZXNzIGluIHVzZQBCcm9rZW4gcGlwZQBJL08gZXJyb3IATm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzcwBCbG9jayBkZXZpY2UgcmVxdWlyZWQATm8gc3VjaCBkZXZpY2UATm90IGEgZGlyZWN0b3J5AElzIGEgZGlyZWN0b3J5AFRleHQgZmlsZSBidXN5AEV4ZWMgZm9ybWF0IGVycm9yAEludmFsaWQgYXJndW1lbnQAQXJndW1lbnQgbGlzdCB0b28gbG9uZwBTeW1ib2xpYyBsaW5rIGxvb3AARmlsZW5hbWUgdG9vIGxvbmcAVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW0ATm8gZmlsZSBkZXNjcmlwdG9ycyBhdmFpbGFibGUAQmFkIGZpbGUgZGVzY3JpcHRvcgBObyBjaGlsZCBwcm9jZXNzAEJhZCBhZGRyZXNzAEZpbGUgdG9vIGxhcmdlAFRvbyBtYW55IGxpbmtzAE5vIGxvY2tzIGF2YWlsYWJsZQBSZXNvdXJjZSBkZWFkbG9jayB3b3VsZCBvY2N1cgBTdGF0ZSBub3QgcmVjb3ZlcmFibGUAUHJldmlvdXMgb3duZXIgZGllZABPcGVyYXRpb24gY2FuY2VsZWQARnVuY3Rpb24gbm90IGltcGxlbWVudGVkAE5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlAElkZW50aWZpZXIgcmVtb3ZlZABEZXZpY2Ugbm90IGEgc3RyZWFtAE5vIGRhdGEgYXZhaWxhYmxlAERldmljZSB0aW1lb3V0AE91dCBvZiBzdHJlYW1zIHJlc291cmNlcwBMaW5rIGhhcyBiZWVuIHNldmVyZWQAUHJvdG9jb2wgZXJyb3IAQmFkIG1lc3NhZ2UARmlsZSBkZXNjcmlwdG9yIGluIGJhZCBzdGF0ZQBOb3QgYSBzb2NrZXQARGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZABNZXNzYWdlIHRvbyBsYXJnZQBQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQAUHJvdG9jb2wgbm90IGF2YWlsYWJsZQBQcm90b2NvbCBub3Qgc3VwcG9ydGVkAFNvY2tldCB0eXBlIG5vdCBzdXBwb3J0ZWQATm90IHN1cHBvcnRlZABQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZABBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sAEFkZHJlc3Mgbm90IGF2YWlsYWJsZQBOZXR3b3JrIGlzIGRvd24ATmV0d29yayB1bnJlYWNoYWJsZQBDb25uZWN0aW9uIHJlc2V0IGJ5IG5ldHdvcmsAQ29ubmVjdGlvbiBhYm9ydGVkAE5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUAU29ja2V0IGlzIGNvbm5lY3RlZABTb2NrZXQgbm90IGNvbm5lY3RlZABDYW5ub3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24AT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MAT3BlcmF0aW9uIGluIHByb2dyZXNzAFN0YWxlIGZpbGUgaGFuZGxlAFJlbW90ZSBJL08gZXJyb3IAUXVvdGEgZXhjZWVkZWQATm8gbWVkaXVtIGZvdW5kAFdyb25nIG1lZGl1bSB0eXBlAE5vIGVycm9yIGluZm9ybWF0aW9uAAASEBMUFRYXGBkaGxwdHh8gIRAQIiMQJCUmJygpKisQLC0uES8wERExERERMjM0NTY3ODkREBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDoQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDsQPD0+P0BBEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEEIQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEEMQEEQQRUZHEEgQSRAQEBBKS0xNEBBOEE9QEBAQEFEQEBAQEBAQEBAQEBAQUhAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQUxAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFRVVlcQEFhZEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFoQW1xdXl9gYWIQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////////////8AAAAA/v8A/AEAAPgBAAB4AAAAAP/73/sAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwA/P/gr//////////////f//////8gQLAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAA/AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/AAAAAAAhv7///8AQEkAAAAAABgA3/8AyAAAAAAAAAABADwAAAAAAAAAAAAAAAAQ4AEeAGD/vwAAAAAAAP8HAAAAAAAAAAAAAAAAAAAAAAAAAPjPAwAAAAMAIP9/AAAATgAAAAAAAAAAAAAAAAAAAAAA/AAAAAAAAAAAABAAIB4AMAABAAAAAAAAAAAQACAAAAAA/A8AAAAAAAAAEAAgAAAAAAAAAAAAAAAAABAAIAAAAAADAAAAAAAAAAAQACAAAAAA/QAAAAAAAAAAAAAgAAAAAP8HAAAAAAAAAAAAIAAAAAAA/wAAAAAAAAAQACAAAAAAAAAAAAAAAAAAAAAgAAAAAD8CAAAAAAAAAAAABAAAAAAQAAAAAAAAgACAwN8ADAAAAAAAAAAAAAAAAAAfAAAAAAAA/v///wD8//8AAAAAAAAAAPwAAAAAAADA/9//BwAAAAAAAAAAAACABgD8AAAYPgAAgL8AzAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAYP///x8AAP8DAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAQAAGAAAAAAAAAAAADgAAAAAEAAAAHAAAAAAAAAAAAAAAAAAAAAwAAD+fy8AAP8D/38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADjEAAAAAAAAAAAAAAAAAAAAAAADE/////wAAAMAAAAAAAAAAAAEA4J8AAAAAfz8AAAAAAAAAAAAAAAAAAAAAEAAQAAD8////HwAAAAAADAAAAAAAAEAADPAAAAAAAADA+AAAAAAAAADAAAAAAAAAAAD/AP///yEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////9/AADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA+AA4ADgAGCA+P////z//////38f/PF//38AAP///wMAAP////8BAHsD0MGvQgAMH7z//wAAAAAAAv//////////////////////////////////////////////////////////DwD/////fwAAAP8HAAD/////////////PwAAAAAAAPz///7/////////////////////////////////////////////////////H/8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4IcD/gAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAA//////9//w8AAAAAAAAAAP////v/////////////DwD//////////////////////////////////z8AAAD/Dx7///8B/MHgAAAAAAAAAAAAAAAeAQAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAA/////w8AAAD///9/////////////////////////////////////fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAAAAAAAA////////fwAAAAAAAMAA4AAAAAAAAAAAAAAAgA9wAAAAAAAAAAAAAAAAAAD/AP//fwADAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAARAgAAAAP/wMAAAAAAADwAAAAAAAAAAAAEMAAAP//AwcAAAAAAPgAAAAACIAAAAAAAAAAAAAACAD/PwDAAAAAAAAAAAAAAAAAAAAA8AAAgAsAAAAAAAAAgAIAAMAAAEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAACAAAAAAAAAAAAAAAAAAAAAPz/AwAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMP///wN/AP/////3/38PAAAAAAAAAAAAAAAAAAAAAACA/v8A/AEAAPgBAAD4PwAAAAAAAAAAAAAAAAAAAH9/ADCH//////+P/wAAAAAAAOD//wf/DwAAAAAAAP//////PwAAAAAPAAAAAAAAAAAAAAAAAACAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCPAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/wD/AQAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP4AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwD/8/z8AAAADAAAAAAAA/gMAAAAAAAAAAAAAAAAAGAAPAAAAAAAAAAAAAAAAAAAA4QEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACABwAAAAAAAAAAAAAAAAD///////////////////////////////////////8/AP////9//v///////////////////////////z8AAAAA//////////8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////fwD//wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAgAAAAIAAAgAAAAIAAAgAAAAIAAAAACAAAAAgAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAP//////D////////////////w8A/3/+f/7//v8AAAAA/wf///9//////////w///////wcAAAAAAAAAAMD///8HAP//////B/8BAwAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8BAL///////////x///w8A/////98HAAD//wEA/////////3/9/////////////////////////////x7/////////Pw8A////AAAAAAAAAAAAAAAAAAAAAAAA+P//////////4f8AAAAAAAD//////////z8AAAAAAAAA//////////////////8PAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////AAECAwQFBgcICf////////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wABAgQHAwYFABIRExQVFhcYGRobHB0eHyAhESIjJBElJicoKSorLBEtLi8QEDAQEBAQEBAQMTIzEDQ1EBARERERERERERERERERERERERERERERERERNhERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERETcREREROBE5Ojs8PT4RERERERERERERERERERERERERERERERERERERERERERERERERERERERERPxAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBFAQRFCQ0RFRkdISRAQEEpLTE1OEBAQT1AQEBAQURAQEBAQEBAQEBEREVJTEBAQEBAQEBAQEBARERERVBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBERVRAQEBBWEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFcQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFhZWlsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQXBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////wAAAAAAAAAA/v//B/7//wcAAAAAAAQgBP//f////3//////////////////////////////////w/8DAB9QAAAAAAAAAAAAACAAAAAAAN88QNf///v///////////+///////////////////////8D/P////////////////////////8A/v///38C/v////8AAAAAAP+/tgD///8HBwAAAP8H//////////7/w////////////////+8f/uH/nwAA////////AOD///////////////8DAP//////BzAE/////P8fAAD///8BAAAAAAAAAAD9HwAAAAAAAPAD/3//////////7//f4f/P//7+7p/5///9xeOfWYCwz/8DAO6H+f///W3DhxkCXsD/PwDuv/v///3t478bAQDP/wAA7p/5///97eOfGcCwz/8CAOzHPdYYx//Dxx2BAMD/AADu3/3///3v498dYAPP/wAA7N/9///97+PfHWBAz/8GAOzf/f/////n312AAM//APzs/3/8///7L3+AX/8AAAwA/v////9//wc/IP8DAAAAAJYl8P6u7P87XyD/8wAAAAABAAAA/wMAAP/+////H/7/A////v///x8AAAAAAAAAAP///////3/5/wP//+fB//9/QP8z/////78g///////3////////////PX89//////89/////z1/Pf9//////////z3//////////4cAAAAA//8AAP////////////8fAP7//////////////////////////////////////////////////////////5////7//wf////////////HAQD/3w8A//8PAP//DwD/3w0A////////z///AYAQ/wMAAAAA/wP//////////////wD//////wf//////////z8A////H/8P/wHA/////z8fAP//////D////wP/AwAAAAD///8P/////////3/+/x8A/wP/A4AAAAAAAAAAAAAAAP///////+//7w//AwAAAAD///////P///////+//wMA////////PwD/4///////PwAAAAAAAAAAAAAAAADebwD///////////////////////////////8AAAAAAAAAAP//Pz//////Pz//qv///z/////////fX9wfzw//H9wfAAAAAAAAAAAAAAAAAAACgAAA/x8AAAAAAAAAAAAAAACE/C8+UL3/8+BDAAD//////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA////////AwAA//////9///////9//////////////////////x94DAD/////vyD/////////gAAA//9/AH9/f39/f39//////wAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAP4DPh/+////////////f+D+//////////////fg/////z/+/////////////38AAP///wcAAAAAAAD///////////////////////////////8/AAAAAAAAAAAA/////////////////////////////////x8AAAAAAAD//////////////////////x8AAAAAAAAAAP//////P/8f////DwAA//////9/8I////+A/////////////wAAAACA//z///////////////95DwD/BwAAAAAAAAAAAP+79////wAAAP///////w8A//////////8PAP8DAAD8CP//////B/////8HAP///x/////////3/wCA/wMAAAAA////////fwD/P/8D//9/BP////////9/BQAAOP//PAB+fn4Af38AAAAAAAAAAAAAAAAAAAAAAAD//////wf/A///////////////////////////DwD//3/4//////8P/////////////////z//////////////////AwAAAAB/APjg//1/X9v/////////////////AwAAAPj///////////////8/AAD///////////z///////8AAAAAAP8PAAAAAAAAAAAAAAAAAADf/////////////////////x8AAP8D/v//B/7//wfA/////////////3/8/PwcAAAAAP/v//9///+3/z//PwAAAAD///////////////////8HAAAAAAAAAAD///////8fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////H////////wEAAAAAAP///38AAP///wcAAAAAAAD///8//////w//PgAAAAAA/////////////////////////z//AwAAAAAAAAAAAAA//f////+/kf//PwAAAAAAAAAAAAAAAAAAAAAAAAAAAP//PwD///8DAAAAAAAAAAD/////////wAAAAAAAAAAAb/Dv/v//DwAAAAAA////HwAAAAAAAAAAAAAAAAAAAAD///////8/AP//PwD//wcAAAAAAAAAAAAAAAAAAAAAAP///////////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8/AAAAwP8AAPz///////8BAAD///8B/wP////////H/wAAAAAAAAAA//////////8eAP8DAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8/AP8DAAAAAAAA/////////////////38AAAAAAAAAAAAAAAAAAAAAAAD///////////////8HAAAAAAAAAAAAAAAAAAAAAAAAAP//////fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////x8A//////9/AAD4/wAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////9///////////99k3v/r7/////////+/59/f////e1/8/f//////////////////////////////////////////////////////P/////3///f////3///f////3///f////3/////9/////f//98/////////v////lv73CoTqlqqW9/de//v/D+77/w8AAAAAAAAAAExDX0FMTABMQ19DVFlQRQAAAABMQ19OVU1FUklDAABMQ19USU1FAAAAAABMQ19DT0xMQVRFAABMQ19NT05FVEFSWQBMQ19NRVNTQUdFUwBMQU5HAEMuVVRGLTgAUE9TSVgATVVTTF9MT0NQQVRIABEACgAREREAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAEQAPChEREQMKBwABEwkLCwAACQYLAAALAAYRAAAAERERAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAABEACgoREREACgAAAgAJCwAAAAkACwAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAwAAAAACQwAAAAAAAwAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAADQAAAAQNAAAAAAkOAAAAAAAOAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA8AAAAADwAAAAAJEAAAAAAAEAAAEAAAEgAAABISEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAEhISAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAACgAAAAAKAAAAAAkLAAAAAAALAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAADAAAAAAJDAAAAAAADAAADAAALSsgICAwWDB4AChudWxsKQAtMFgrMFggMFgtMHgrMHggMHgAaW5mAElORgBOQU4AMDEyMzQ1Njc4OUFCQ0RFRi4AYWxudW0AYWxwaGEAYmxhbmsAY250cmwAZGlnaXQAZ3JhcGgAbG93ZXIAcHJpbnQAcHVuY3QAc3BhY2UAdXBwZXIAeGRpZ2l0AEMuVVRGLTgAAAAAAAAAAABDAC9wcm9jL3NlbGYvZmQvAHJ3YQBpbmZpbml0eQBuYW4ACQAKAA0ADAAHABsAW1s6YWxudW06XV9dAFteWzphbG51bTpdX10AW1s6c3BhY2U6XV0AW15bOnNwYWNlOl1dAFtbOmRpZ2l0Ol1dAFteWzpkaWdpdDpdXQAvdG1wL3RtcGZpbGVfWFhYWFhYAHcr";var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"])}function _emscripten_get_now(){abort()}function _emscripten_get_now_is_monotonic(){return ENVIRONMENT_IS_NODE||typeof dateNow!=="undefined"||(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&self["performance"]&&self["performance"]["now"]}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if(clk_id===1&&_emscripten_get_now_is_monotonic()){now=_emscripten_get_now()}else{___setErrNo(ERRNO_CODES.EINVAL);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}function ___clock_gettime(){return _clock_gettime.apply(null,arguments)}function ___lock(){}function ___map_file(pathname,size){___setErrNo(ERRNO_CODES.EPERM);return-1}var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/);var flags=process["binding"]("constants");if(flags["fs"]){flags=flags["fs"]}NODEFS.flagsForNodeMap={"1024":flags["O_APPEND"],"64":flags["O_CREAT"],"128":flags["O_EXCL"],"0":flags["O_RDONLY"],"2":flags["O_RDWR"],"4096":flags["O_SYNC"],"512":flags["O_TRUNC"],"1":flags["O_WRONLY"]}}),bufferFrom:(function(arrayBuffer){return Buffer.alloc?Buffer.from(arrayBuffer):new Buffer(arrayBuffer)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&292)>>2}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsForNode:(function(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;var newFlags=0;for(var k in NODEFS.flagsForNodeMap){if(flags&k){newFlags|=NODEFS.flagsForNodeMap[k];flags^=k}}if(!flags){return newFlags}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsForNode(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;try{return fs.readSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),write:(function(stream,buffer,offset,length,position){try{return fs.writeSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:(function(mount){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync;var root=WORKERFS.createNode(null,"/",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split("/");var parent=root;for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdirTree:(function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})},chunkSize:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:(function(){return this.contents.length})}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall10(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr();FS.unlink(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall192(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get(),prot=SYSCALLS.get(),flags=SYSCALLS.get(),fd=SYSCALLS.get(),off=SYSCALLS.get();off<<=12;var ptr;var allocated=false;if(fd===-1){ptr=_memalign(PAGE_SIZE,len);if(!ptr)return-ERRNO_CODES.ENOMEM;_memset(ptr,0,len);allocated=true}else{var info=FS.getStream(fd);if(!info)return-ERRNO_CODES.EBADF;var res=FS.mmap(info,HEAPU8,addr,len,off,prot,flags);ptr=res.ptr;allocated=res.allocated}SYSCALLS.mappings[ptr]={malloc:ptr,len:len,allocated:allocated,fd:fd,flags:flags};return ptr}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall195(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall197(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var PROCINFO={ppid:1,pid:42,sid:42,pgid:42};function ___syscall20(which,varargs){SYSCALLS.varargs=varargs;try{return PROCINFO.pid}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall3(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get(),count=SYSCALLS.get();return FS.read(stream,HEAP8,buf,count)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall33(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),amode=SYSCALLS.get();return SYSCALLS.doAccess(path,amode)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_STATIC);function ___unlock(){}function __exit(status){Module["exit"](status)}function _exit(status){__exit(status)}var _environ=STATICTOP;STATICTOP+=16;function ___buildEnvironment(env){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV["USER"]=ENV["LOGNAME"]="web_user";ENV["PATH"]="/";ENV["PWD"]="/";ENV["HOME"]="/home/web_user";ENV["LANG"]="C.UTF-8";ENV["_"]=Module["thisProgram"];poolPtr=staticAlloc(TOTAL_ENV_SIZE);envPtr=staticAlloc(MAX_ENV_VALUES*4);HEAP32[envPtr>>2]=poolPtr;HEAP32[_environ>>2]=envPtr}else{envPtr=HEAP32[_environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in env){if(typeof env[key]==="string"){var line=key+"="+env[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}var ENV={};function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocateUTF8(ENV[name]);return _getenv.ret}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}var _llvm_ceil_f64=Math_ceil;var _llvm_fabs_f32=Math_abs;var _llvm_fabs_f64=Math_abs;var _llvm_floor_f64=Math_floor;var _llvm_pow_f64=Math_pow;var _llvm_sqrt_f32=Math_sqrt;var _llvm_sqrt_f64=Math_sqrt;function _llvm_trap(){abort("trap!")}function _longjmp(env,value){Module["setThrew"](env,value||1);throw"longjmp"}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}function _setenv(envname,envval,overwrite){if(envname===0){___setErrNo(ERRNO_CODES.EINVAL);return-1}var name=Pointer_stringify(envname);var val=Pointer_stringify(envval);if(name===""||name.indexOf("=")!==-1){___setErrNo(ERRNO_CODES.EINVAL);return-1}if(ENV.hasOwnProperty(name)&&!overwrite)return 0;ENV[name]=val;___buildEnvironment(ENV);return 0}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function _times(buffer){if(buffer!==0){_memset(buffer,0,16)}return 0}if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function _emscripten_get_now_actual(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else if(typeof self==="object"&&self["performance"]&&typeof self["performance"]["now"]==="function"){_emscripten_get_now=(function(){return self["performance"]["now"]()})}else if(typeof performance==="object"&&typeof performance["now"]==="function"){_emscripten_get_now=(function(){return performance["now"]()})}else{_emscripten_get_now=Date.now}FS.staticInit();__ATINIT__.unshift((function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}___buildEnvironment(ENV);DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}var decodeBase64=typeof atob==="function"?atob:(function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i>2]|0;if(!i)qa(108233,108204,54,108218);if(!(a[i>>0]|0))qa(108242,108204,55,108218);a0(h,c[d+28>>2]|0)|0;i=h+(V_(h)|0)|0;a[i>>0]=58;a[i+1>>0]=0;o1(h,g)|0;if((gP(b,h)|0)==999){c[j>>2]=h;Ow(0,108254,j)|0}g=c[b+92>>2]|0;if(g|0?(m=c[g>>2]|0,m|0):0){c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[k+16>>2]=c[e+16>>2];c[k+20>>2]=c[e+20>>2];c[k+24>>2]=c[e+24>>2];c[k+28>>2]=c[e+28>>2];xb[m&31](b,d,k,f)}l=n;return}function gP(a,b){a=a|0;b=b|0;b=vC(c[a>>2]|0,4,b)|0;if(!b)b=999;else{b=c[b+16>>2]|0;c[a+92>>2]=c[b+12>>2];c[a+96>>2]=c[b>>2];b=300}return b|0}function hP(a){a=a|0;return 1}function iP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+336|0;h[c>>3]=+h[c>>3]+10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function jP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+336|0;h[c>>3]=+h[c>>3]-10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function kP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+344|0;h[c>>3]=+h[c>>3]-10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function lP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+344|0;h[c>>3]=+h[c>>3]+10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function mP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+352|0;h[c>>3]=+h[c>>3]*1.1;a[b+537>>0]=1;return 0}function nP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+352|0;h[c>>3]=+h[c>>3]*.9090909090909091;a[b+537>>0]=1;return 0}function oP(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;e=b+536|0;d=(a[e>>0]|0)==0;a[e>>0]=d&1;if(d){d=c[b+448>>2]|0;e=c[b+452>>2]|0;i=+(d>>>0);g=+(e>>>0);f=i/+(d|0)>3]=(f?i:g)/+((f?d:e)|0);e=b+336|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;a[b+537>>0]=1}return 0}function pP(b){b=b|0;var d=0,e=0;d=c[(c[b>>2]|0)+168>>2]|0;e=b+580|0;if(!(c[e>>2]|0)){c[e>>2]=d;e=(c[d+16>>2]|0)+112|0;a[e>>0]=a[e>>0]|2;FP(b,d)}cF(b,d);a[b+540>>0]=1;return}function qP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0;k=l;l=l+16|0;f=k;switch(d|0){case 1:{c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];yP(b,f);EP(b);a[b+538>>0]=1;a[b+541>>0]=1;j=13;break}case 2:{a[b+538>>0]=1;a[b+541>>0]=2;j=13;break}case 3:{c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];yP(b,f);a[b+538>>0]=1;a[b+541>>0]=3;j=13;break}case 4:{a[b+536>>0]=0;if(!(c[b+360>>2]|0)){f=b+352|0;i=+h[f>>3];d=b+336|0;h[d>>3]=(+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+520>>3]*i)+ +h[d>>3];g=+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5;d=b+528|0}else{f=b+352|0;i=+h[f>>3];d=b+336|0;h[d>>3]=+h[d>>3]-(+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+528>>3]*i);g=+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5;d=b+520|0}j=b+344|0;h[j>>3]=g*.10000000000000009/(+h[d>>3]*i)+ +h[j>>3];h[f>>3]=i*1.1;j=13;break}case 5:{a[b+536>>0]=0;j=b+352|0;i=+h[j>>3]*.9090909090909091;h[j>>3]=i;if(!(c[b+360>>2]|0)){f=b+336|0;h[f>>3]=+h[f>>3]-(+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+520>>3]*i);g=+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5;f=b+528|0}else{f=b+336|0;h[f>>3]=(+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+528>>3]*i)+ +h[f>>3];g=+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5;f=b+520|0}j=b+344|0;h[j>>3]=+h[j>>3]-g*.10000000000000009/(+h[f>>3]*i);j=13;break}default:{}}if((j|0)==13)a[b+537>>0]=1;b=b+560|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];l=k;return}function rP(b,c,d){b=b|0;c=c|0;d=d|0;a[b+538>>0]=0;a[b+541>>0]=0;return}function sP(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0;k=l;l=l+16|0;e=k;i=b+560|0;j=(+h[d>>3]-+h[i>>3])/+h[b+520>>3];g=(+h[d+8>>3]-+h[b+568>>3])/+h[b+528>>3];if(!(+B(+j)<.0001&+B(+g)<.0001)){switch(a[b+541>>0]|0){case 0:{c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];yP(b,e);break}case 2:{f=+h[b+352>>3];if(!(c[b+360>>2]|0)){e=b+336|0;h[e>>3]=+h[e>>3]-j/f;e=b+344|0;h[e>>3]=+h[e>>3]-g/f}else{e=b+336|0;h[e>>3]=+h[e>>3]-g/f;e=b+344|0;h[e>>3]=+h[e>>3]+j/f}a[b+537>>0]=1;break}default:{}}c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2]}l=k;return}function tP(a,b,c){a=a|0;b=b|0;c=c|0;return}function uP(a){a=a|0;return}function vP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[b>>2]|0;if(d){d=K1(d,135739)|0;if(d|0){i=SB(d,0)|0;r1(d)|0;f=5}}else{i=SB(c[15621]|0,0)|0;f=5}if((f|0)==5?i|0:0){g=j+168|0;d=c[g>>2]|0;if(d|0){f=c[j+172>>2]|0;if((f|0)!=0?(h=c[f+4>>2]|0,(h|0)!=0):0){tb[h&127](d);d=c[g>>2]|0}fH(d);_x(c[g>>2]|0)|0}Ez(i,0,134401,280,1);Ez(i,1,134365,304,1);Ez(i,2,134378,176,1);c[g>>2]=i;c[(c[i+16>>2]|0)+144>>2]=j;if((ZC(j,i,e)|0)!=-1){c[b+580>>2]=0;c[b+576>>2]=0;a[b+537>>0]=1}}return}function wP(a,b){a=a|0;b=b|0;a=c[a>>2]|0;ZC(a,c[a+168>>2]|0,b)|0;return}function xP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=c[a>>2]|0;f=g+160|0;e=c[f>>2]|0;if((e|0)!=0?(c[g+164>>2]|0)==0:0){i=g+192|0;h=c[i>>2]|0;c[f>>2]=0;c[i>>2]=0;f=h}else{f=0;e=0}$C(g,c[g+168>>2]|0,b,d)|0;if(e|0){i=c[a>>2]|0;c[i+160>>2]=e;c[i+192>>2]=f}return}function yP(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0;f=l;l=l+80|0;e=f+48|0;g=f;m=f+32|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];zP(m,b,e);k=+h[m>>3];j=+h[m+8>>3];i=1.0/+h[b+352>>3];h[g+16>>3]=i+k;h[g+24>>3]=i+j;h[g>>3]=k-i;h[g+8>>3]=j-i;d=c[(c[b>>2]|0)+168>>2]|0;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];c[e+16>>2]=c[g+16>>2];c[e+20>>2]=c[g+20>>2];c[e+24>>2]=c[g+24>>2];c[e+28>>2]=c[g+28>>2];d=AP(d,e)|0;e=b+576|0;if((d|0)!=(c[e>>2]|0)){BP(b);c[e>>2]=d;CP(b);a[b+537>>0]=1}l=f;return}function zP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0;if(!(c[b+360>>2]|0)){e=+h[b+352>>3];f=+h[d+8>>3];g=e;i=b+528|0;e=+h[d>>3]/(+h[b+520>>3]*e)-+h[b+504>>3]}else{e=+h[b+352>>3];f=-+h[d>>3];g=e;i=b+520|0;e=+h[d+8>>3]/(+h[b+528>>3]*e)-+h[b+504>>3]}g=f/(+h[i>>3]*g)-+h[b+512>>3];h[a>>3]=e;h[a+8>>3]=g;return}function AP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g;e=Ry(a)|0;a:while(1){if(!e){e=9;break}d=Dx(a,e)|0;while(1){if(!d)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];if((VM(d,f)|0)<<24>>24){e=6;break a}d=Fx(a,d)|0}e=Sy(a,e)|0}do if((e|0)!=6)if((e|0)==9){d=Ty(a)|0;while(1){if(!d)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];if((SM(d,f)|0)<<24>>24){e=12;break}d=Uy(a,d)|0}if((e|0)==12)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];d=DP(a,f)|0;if(!d){d=a;break}else break}while(0);l=g;return d|0}function BP(b){b=b|0;var d=0;d=c[b+576>>2]|0;a:do if(d|0)switch(oz(d)|0){case 0:{d=(c[d+16>>2]|0)+112|0;a[d>>0]=a[d>>0]&-2;break a}case 1:{d=(c[d+16>>2]|0)+117|0;a[d>>0]=a[d>>0]&-2;break a}case 2:{d=(c[d+16>>2]|0)+115|0;a[d>>0]=a[d>>0]&-2;break a}default:break a}while(0);c[b+584>>2]=0;return}function CP(b){b=b|0;var d=0,e=0;e=b+584|0;d=c[e>>2]|0;if(d|0){C_(d);c[e>>2]=0}d=c[b+576>>2]|0;a:do if(d|0)switch(oz(d)|0){case 0:{b=(c[d+16>>2]|0)+112|0;a[b>>0]=a[b>>0]|1;b=mx(d,0,138019,0)|0;if(!b)break a;c[e>>2]=oH(xx(d,b)|0,d)|0;break a}case 1:{b=(c[d+16>>2]|0)+117|0;a[b>>0]=a[b>>0]|1;b=mx(dz(d)|0,1,138019,0)|0;if(!b)break a;c[e>>2]=oH(xx(d,b)|0,d)|0;break a}case 2:{b=(c[d+16>>2]|0)+115|0;a[b>>0]=a[b>>0]|1;b=mx(dz(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0,2,138019,0)|0;if(!b)break a;c[e>>2]=oH(xx(d,b)|0,d)|0;break a}default:break a}while(0);return}function DP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;m=l;l=l+32|0;e=m;g=c[a+16>>2]|0;i=c[g+180>>2]|0;j=g+184|0;d=1;while(1){if((d|0)>(i|0)){k=4;break}f=c[(c[j>>2]|0)+(d<<2)>>2]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];c[e+24>>2]=c[b+24>>2];c[e+28>>2]=c[b+28>>2];f=DP(f,e)|0;if(!f)d=d+1|0;else{a=f;break}}do if((k|0)==4){o=+h[g+24>>3];n=+h[g+40>>3];if(((+h[b+16>>3]>=+h[g+16>>3]?+h[g+32>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=o:0)?n>=+h[b+8>>3]:0)break;a=0}while(0);l=m;return a|0}function EP(b){b=b|0;var d=0,e=0,f=0;f=b+580|0;d=c[f>>2]|0;a:do if(d|0)switch(oz(d)|0){case 0:{e=(c[d+16>>2]|0)+112|0;a[e>>0]=a[e>>0]&-7|4;break a}case 1:{e=(c[d+16>>2]|0)+117|0;a[e>>0]=a[e>>0]&-7|4;break a}case 2:{e=(c[d+16>>2]|0)+115|0;a[e>>0]=a[e>>0]&-7|4;break a}default:break a}while(0);d=b+588|0;e=c[d>>2]|0;if(e|0){C_(e);c[d>>2]=0}d=c[b+576>>2]|0;c[f>>2]=d;b:do if(d|0)switch(oz(d)|0){case 0:{f=(c[d+16>>2]|0)+112|0;a[f>>0]=a[f>>0]|2;FP(b,d);break b}case 1:{f=(c[d+16>>2]|0)+117|0;a[f>>0]=a[f>>0]|2;GP(b,d);break b}case 2:{f=(c[d+16>>2]|0)+115|0;a[f>>0]=a[f>>0]|2;HP(b,d);break b}default:break b}while(0);return}function FP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+592|0;do if((ez(b)|0)==(b|0))if(!(dy(b)|0)){qC(d,0,108412);break}else{qC(d,0,108404);break}else qC(d,0,108418);while(0);qC(d,1,qy(b)|0);c[a+596>>2]=2;f=a+604|0;d=0;e=2;while(1){d=rx(b,0,d)|0;if(!d)break;qC(f,e,c[d+8>>2]|0);qC(f,e+1|0,xx(b,d)|0);qC(f,e+2|0,0);e=e+3|0}c[a+608>>2]=e;d=mx(b,0,137973,0)|0;if(!d){d=mx(b,0,108395,0)|0;if(d|0)g=11}else g=11;if((g|0)==11)c[a+588>>2]=oH(xx(b,d)|0,b)|0;return}function GP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=a+592|0;qC(f,0,108399);qC(f,1,qy(b)|0);c[a+596>>2]=2;f=a+604|0;g=ez(dz(b)|0)|0;e=2;d=0;while(1){d=rx(g,1,d)|0;if(!d)break;qC(f,e,c[d+8>>2]|0);qC(f,e|1,xx(b,d)|0);e=e+2|0}c[a+608>>2]=e;d=mx(dz(b)|0,1,137973,0)|0;if(!d){d=mx(dz(b)|0,1,108395,0)|0;if(d|0)h=6}else h=6;if((h|0)==6)c[a+588>>2]=oH(xx(b,d)|0,b)|0;return}function HP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=a+592|0;qC(h,0,108368);k=b+48|0;qC(h,1,qy(c[((c[b>>2]&3|0)==3?b:k)+40>>2]|0)|0);k=(dy(dz(c[((c[b>>2]&3|0)==3?b:k)+40>>2]|0)|0)|0)!=0;qC(h,3,k?134656:138665);k=b+-48|0;qC(h,4,qy(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0);c[a+596>>2]=7;i=a+604|0;j=ez(dz(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0)|0;g=7;d=0;a:while(1){while(1){d=rx(j,2,d)|0;if(!d)break a;e=d+8|0;f=c[e>>2]|0;if(!(a$(f,108373)|0)){l=5;break}if(!(a$(f,108382)|0)){l=7;break}if(a$(f,108391)|0)break;qC(h,6,xx(b,d)|0)}if((l|0)==5){l=0;qC(h,2,xx(b,d)|0)}else if((l|0)==7){l=0;qC(h,5,xx(b,d)|0)}qC(i,g,c[e>>2]|0);qC(i,g+1|0,xx(b,d)|0);g=g+2|0}c[a+608>>2]=g;d=mx(dz(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0,2,137973,0)|0;if(!d){d=mx(dz(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0,2,108395,0)|0;if(d|0)l=13}else l=13;if((l|0)==13)c[a+588>>2]=oH(xx(b,d)|0,b)|0;return}function IP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=JP(a,b,c[d>>2]|0)|0;d=c[d+4>>2]|0;while(1){f=c[d+4>>2]|0;if(!f)break;b=0;while(1){e=c[f+(b*20|0)+4>>2]|0;if(!e)break;tC(a,c[d>>2]|0,e,c[f+(b*20|0)+8>>2]|0,g,f+(b*20|0)|0)|0;b=b+1|0}d=d+8|0}return}function JP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=uH(12)|0;if(!b)b=0;else b=m1(b)|0;c[e+4>>2]=b;c[e+8>>2]=m1(d)|0;d=a+100|0;c[e>>2]=c[d>>2];c[d>>2]=e;return e|0}function KP(b,c){b=b|0;c=c|0;LP(b);a[b+44>>0]=0;MP(b)|0;zL(b)|0;return}function LP(b){b=b|0;var d=0,e=0;d=c[b+32>>2]|0;a:do if(d|0)while(1){e=c[d>>2]|0;if(!e)break a;if((a[e>>0]|0)==103?O0(e,108427)|0:0)IP(b,0,c[d+4>>2]|0);d=d+8|0}while(0);return}function MP(a){a=a|0;var b=0;b=vC(a,2,108440)|0;if(!b)a=999;else{c[a+148>>2]=c[(c[b+16>>2]|0)+12>>2];a=300}return a|0}function NP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[a+148>>2]|0;if((a|0)!=0?(e=c[a>>2]|0,(e|0)!=0):0)a=lb[e&127](b,d)|0;else a=0;return a|0}function OP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return (c[b>>2]|0)-(c[d>>2]|0)|0}function PP(a){a=a|0;var b=0.0,d=0.0;a=c[a+16>>2]|0;d=+h[a+16>>3];b=+h[a+24>>3];return (QP(~~(d>b?d:b)>>>0)|0)+1|0}function QP(a){a=a|0;var b=0,c=0;if(!a)a=-1;else{c=a>>>0>65535;a=c?a>>>16:a;c=c?16:0;b=a>>>0>255;a=b?a>>>8:a;c=b?c|8:c;b=a>>>0>15;a=b?a>>>4:a;c=b?c|4:c;b=a>>>0>3;a=(b?c|2:c)+((b?a>>>2:a)>>>0>1&1)|0}return a|0}function RP(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+32|0;q=r;p=SP(b,d,e,f,g)|0;e=TP(p)|0;if((e|0)>=0){n=q+16|0;o=q+24|0;m=q+8|0;k=g+32|0;e=0;g=0;while(1){if((g|0)>=(d|0))break;f=b+(g*40|0)+32|0;do if(c[f>>2]|0){UP(q,p,b+(g*40|0)|0);i=+h[n>>3];j=+h[o>>3];if(!(c[q>>2]|0)){a[(c[f>>2]|0)+36>>0]=1;break}if(+h[m>>3]==0.0){f=c[f>>2]|0;h[f+16>>3]=i;h[f+24>>3]=j;a[f+36>>0]=1;break}if((a[k>>0]|0)==1){f=c[f>>2]|0;h[f+16>>3]=i;h[f+24>>3]=j;a[f+36>>0]=1}else e=1}while(0);g=g+1|0}VP(p)}l=r;return e|0}function SP(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=tH(28)|0;j=Bw(25808,c[4558]|0)|0;h=g+20|0;c[h>>2]=j;do if(j){j=BS()|0;c[g+24>>2]=j;if(!j){D1(108658,14,1,c[15686]|0)|0;i=6;break}else{c[g>>2]=a;c[g+4>>2]=b;c[g+8>>2]=d;c[g+12>>2]=e;c[g+16>>2]=f;break}}else{D1(108658,14,1,c[15686]|0)|0;i=6}while(0);if((i|0)==6){a=c[h>>2]|0;if(a|0)xw(a)|0;a=c[g+24>>2]|0;if(a|0)DS(a)|0;C_(g);g=0}return g|0}function TP(a){a=a|0;var b=0;b=cQ(a)|0;if((b|0)>=0){dQ(a);eQ(a);b=xw(c[a+20>>2]|0)|0}return b|0}function UP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0;M=l;l=l+464|0;J=M+416|0;L=M+400|0;G=M+384|0;m=M+352|0;n=M+320|0;o=M+288|0;p=M+256|0;r=M+224|0;s=M+192|0;t=M+160|0;u=M+128|0;v=M+96|0;x=M+64|0;y=M+32|0;H=M;z=c[d+32>>2]|0;e=+h[z>>3];C=d+16|0;A=(e*2.0+ +h[C>>3])*.125;D=z+8|0;I=d+24|0;i=+h[I>>3];K=(+h[D>>3]*2.0+i)*.5;if(!z)qa(108451,108461,445,108471);f=J;g=f+36|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));B=z+16|0;h[B>>3]=+h[d>>3]-e;E=d+8|0;F=z+24|0;h[F>>3]=i+ +h[E>>3];WP(m,b,d,J);j=c[m>>2]|0;f=c[m+4>>2]|0;e=+h[m+8>>3];m=m+16|0;c[L>>2]=c[m>>2];c[L+4>>2]=c[m+4>>2];c[L+8>>2]=c[m+8>>2];c[L+12>>2]=c[m+12>>2];a:do if(!j){c[a>>2]=0;c[a+4>>2]=f;h[a+8>>3]=e;a=a+16|0;c[a>>2]=c[L>>2];c[a+4>>2]=c[L+4>>2];c[a+8>>2]=c[L+8>>2];c[a+12>>2]=c[L+12>>2]}else{h[F>>3]=+h[E>>3];WP(n,b,d,J);g=c[n>>2]|0;m=c[n+4>>2]|0;i=+h[n+8>>3];n=n+16|0;c[G>>2]=c[n>>2];c[G+4>>2]=c[n+4>>2];c[G+8>>2]=c[n+8>>2];c[G+12>>2]=c[n+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=m;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];f=m;e=i}else g=j;h[F>>3]=+h[E>>3]-+h[D>>3];WP(o,b,d,J);m=c[o>>2]|0;j=c[o+4>>2]|0;i=+h[o+8>>3];o=o+16|0;c[G>>2]=c[o>>2];c[G+4>>2]=c[o+4>>2];c[G+8>>2]=c[o+8>>2];c[G+12>>2]=c[o+12>>2];if(!m){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];f=j;e=i}else m=g;h[B>>3]=+h[d>>3];h[F>>3]=+h[I>>3]+ +h[E>>3];WP(p,b,d,J);g=c[p>>2]|0;j=c[p+4>>2]|0;i=+h[p+8>>3];p=p+16|0;c[G>>2]=c[p>>2];c[G+4>>2]=c[p+4>>2];c[G+8>>2]=c[p+8>>2];c[G+12>>2]=c[p+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[F>>3]=+h[E>>3]-+h[D>>3];WP(r,b,d,J);g=c[r>>2]|0;j=c[r+4>>2]|0;i=+h[r+8>>3];r=r+16|0;c[G>>2]=c[r>>2];c[G+4>>2]=c[r+4>>2];c[G+8>>2]=c[r+8>>2];c[G+12>>2]=c[r+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[B>>3]=+h[C>>3]+ +h[d>>3];h[F>>3]=+h[I>>3]+ +h[E>>3];WP(s,b,d,J);g=c[s>>2]|0;j=c[s+4>>2]|0;i=+h[s+8>>3];s=s+16|0;c[G>>2]=c[s>>2];c[G+4>>2]=c[s+4>>2];c[G+8>>2]=c[s+8>>2];c[G+12>>2]=c[s+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[F>>3]=+h[E>>3];WP(t,b,d,J);g=c[t>>2]|0;j=c[t+4>>2]|0;i=+h[t+8>>3];t=t+16|0;c[G>>2]=c[t>>2];c[G+4>>2]=c[t+4>>2];c[G+8>>2]=c[t+8>>2];c[G+12>>2]=c[t+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[F>>3]=+h[E>>3]-+h[D>>3];WP(u,b,d,J);g=c[u>>2]|0;j=c[u+4>>2]|0;i=+h[u+8>>3];u=u+16|0;c[G>>2]=c[u>>2];c[G+4>>2]=c[u+4>>2];c[G+8>>2]=c[u+8>>2];c[G+12>>2]=c[u+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];f=j;e=i}else g=m;j=(c[J+28>>2]|0)==0;do if(!(c[J+24>>2]|0))if(j){if(c[J+32>>2]|0){w=38;break}if(!((c[J+12>>2]|0)==0&(c[J>>2]|0)==0))w=38}else w=46;else if(j)w=38;else w=46;while(0);b:do if((w|0)==38)if(!(c[J+32>>2]|0)){h[B>>3]=+h[d>>3]-+h[z>>3];p=v+4|0;r=v+8|0;s=v+16|0;m=F;j=E;i=+h[I>>3];c:while(1){while(1){h[m>>3]=+h[j>>3]+i;if(!(+h[B>>3]<=+h[C>>3]+ +h[d>>3])){w=46;break b}WP(v,b,d,J);n=c[v>>2]|0;o=c[p>>2]|0;k=+h[r>>3];c[G>>2]=c[s>>2];c[G+4>>2]=c[s+4>>2];c[G+8>>2]=c[s+8>>2];c[G+12>>2]=c[s+12>>2];if(!n)break c;if(k>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=B;j=B;i=A;g=n;f=o;e=k}c[a>>2]=0;c[a+4>>2]=o;h[a+8>>3]=k;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}else w=46;while(0);d:do if((w|0)==46)if((c[J+12>>2]|0)==0&(c[J>>2]|0)==0){h[B>>3]=+h[d>>3]-+h[z>>3];k=+h[E>>3];n=x+4|0;o=x+8|0;p=x+16|0;i=k;k=+h[I>>3]+k;while(1){h[F>>3]=k;if(!(k>=i-+h[D>>3]))break d;WP(x,b,d,J);j=c[x>>2]|0;m=c[n>>2]|0;i=+h[o>>3];c[G>>2]=c[p>>2];c[G+4>>2]=c[p+4>>2];c[G+8>>2]=c[p+8>>2];c[G+12>>2]=c[p+12>>2];if(!j)break;if(i>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];g=j;f=m;e=i}i=+h[E>>3];k=+h[F>>3]-K}c[a>>2]=0;c[a+4>>2]=m;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}while(0);i=+h[d>>3];k=+h[C>>3]+i;h[B>>3]=k;q=+h[D>>3];h[F>>3]=+h[E>>3]-q;j=c[J+4>>2]|0;do if(!(c[J+8>>2]|0)){m=c[J>>2]|0;if(!((j|0)==0&(m|0)==0)){w=59;break}if(c[J+20>>2]|0){j=0;m=0;w=59;break}if(c[J+32>>2]|0){j=0;m=0;w=59}}else{m=c[J>>2]|0;w=59}while(0);e:do if((w|0)==59){f:do if((j|0)==0&(m|0)==0){h[B>>3]=k;p=y+4|0;r=y+8|0;s=y+16|0;m=F;j=E;i=q;g:while(1){while(1){h[m>>3]=+h[j>>3]-i;i=+h[d>>3];if(!(+h[B>>3]>=i-+h[z>>3]))break f;WP(y,b,d,J);n=c[y>>2]|0;o=c[p>>2]|0;k=+h[r>>3];c[G>>2]=c[s>>2];c[G+4>>2]=c[s+4>>2];c[G+8>>2]=c[s+8>>2];c[G+12>>2]=c[s+12>>2];if(!n)break g;if(k>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=B;j=B;i=A;g=n;f=o;e=k}c[a>>2]=0;c[a+4>>2]=o;h[a+8>>3]=k;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}while(0);if(c[J+20>>2]|0)break;if(c[J+32>>2]|0)break;h[B>>3]=+h[C>>3]+i;i=+h[E>>3];n=H+4|0;o=H+8|0;p=H+16|0;k=i;i=i-+h[D>>3];while(1){h[F>>3]=i;if(!(i<=+h[I>>3]+k))break e;WP(H,b,d,J);j=c[H>>2]|0;m=c[n>>2]|0;i=+h[o>>3];c[G>>2]=c[p>>2];c[G+4>>2]=c[p+4>>2];c[G+8>>2]=c[p+8>>2];c[G+12>>2]=c[p+12>>2];if(!j)break;if(i>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];g=j;f=m;e=i}k=+h[E>>3];i=+h[F>>3]+K}c[a>>2]=0;c[a+4>>2]=m;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}while(0);c[a>>2]=g;c[a+4>>2]=f;h[a+8>>3]=e;a=a+16|0;c[a>>2]=c[L>>2];c[a+4>>2]=c[L+4>>2];c[a+8>>2]=c[L+8>>2];c[a+12>>2]=c[L+12>>2]}while(0);l=M;return}function VP(a){a=a|0;DS(c[a+24>>2]|0)|0;C_(a);return}function WP(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0,k=0,m=0,n=0.0,o=0,p=0,q=0,r=0.0,s=0,t=0;t=l;l=l+48|0;q=t+32|0;s=t+16|0;p=t;g=c[e+32>>2]|0;if(!g)qa(108451,108461,382,108480);o=g+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];o=d+4|0;m=0;g=0;while(1){if((m|0)>=(c[o>>2]|0))break;j=c[d>>2]|0;k=j+(m*40|0)|0;do if((k|0)!=(e|0)){if(+h[j+(m*40|0)+16>>3]>0.0?+h[j+(m*40|0)+24>>3]>0.0:0)break;g=g+((XP(e,k)|0)!=0&1)|0}while(0);m=m+1|0}YP(e,q);m=c[d+24>>2]|0;m=FS(m,c[m>>2]|0,q)|0;if(!m){c[b>>2]=g;h[b+8>>3]=0.0;s=b+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2]}else{k=m;i=0.0;while(1){if(!k)break;j=c[(c[k+4>>2]|0)+16>>2]|0;if((j|0)!=(e|0)){ZP(j,s);n=+_P(q,s);if(n>0.0){g=g+1|0;i=+$P(e,j,q,n,f)+i}d=c[j+32>>2]|0;if(((d|0)!=0?(a[d+36>>0]|0)!=0:0)?(YP(j,s),r=+_P(q,s),r>0.0):0){g=g+1|0;i=+aQ(e,j,q,r,f)+i}}k=c[k>>2]|0}AS(m);c[b>>2]=g;h[b+8>>3]=i;s=b+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2]}l=t;return}function XP(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0.0;a=c[a+32>>2]|0;if(+h[b+16>>3]==0.0?+h[b+24>>3]==0.0:0){if((((a|0)!=0?(d=+h[b>>3],e=+h[a+16>>3],d>e):0)?d<+h[a>>3]+e:0)?(f=+h[b+8>>3],g=+h[a+24>>3],f>g):0)a=f<+h[a+8>>3]+g&1;else a=0;return a|0}qa(108517,108461,219,108554);return 0}function YP(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a+32>>2]|0;e=+h[a+16>>3];c[b>>2]=~~e;d=+h[a+24>>3];c[b+4>>2]=~~d;c[b+8>>2]=~~(+h[a>>3]+e);c[b+12>>2]=~~(+h[a+8>>3]+d);return}function ZP(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;e=+h[a>>3];c[b>>2]=~~e;d=+h[a+8>>3];c[b+4>>2]=~~d;c[b+8>>2]=~~(+h[a+16>>3]+e);c[b+12>>2]=~~(+h[a+24>>3]+d);return}function _P(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=c[a+8>>2]|0;j=c[b>>2]|0;if((((i|0)>=(j|0)?(k=c[a>>2]|0,l=c[b+8>>2]|0,(k|0)<=(l|0)):0)?(e=c[a+12>>2]|0,f=c[b+4>>2]|0,(e|0)>=(f|0)):0)?(g=c[a+4>>2]|0,h=c[b+12>>2]|0,(g|0)<=(h|0)):0)d=(+(c[((e|0)<(h|0)?a:b)+12>>2]|0)-+(c[((g|0)>(f|0)?a:b)+4>>2]|0))*(+(c[((i|0)<(l|0)?a:b)+8>>2]|0)-+(c[((k|0)>(j|0)?a:b)>>2]|0));else d=0.0;return +d}function $P(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;a=bQ(a,b)|0;f=f+(((a|0)<0?5:a)<<2)|0;a=c[f>>2]|0;if(!a){c[f>>2]=b;g=e}else{ZP(a,i);g=+_P(d,i);g=g>e?g:0.0;a=c[f>>2]|0;if((c[a+32>>2]|0)!=0?(YP(a,i),h=+_P(d,i),h>e):0)g=h>g?h:g;if(!(g>0.0)){c[f>>2]=b;g=e}}l=j;return +g}function aQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;a=bQ(a,b)|0;f=f+(((a|0)<0?5:a)<<2)|0;a=c[f>>2]|0;if(!a){c[f>>2]=b;g=e}else{ZP(a,i);g=+_P(d,i);g=g>e?g:0.0;a=c[f>>2]|0;if((c[a+32>>2]|0)!=0?(YP(a,i),h=+_P(d,i),h>e):0)g=h>g?h:g;if(!(g>0.0)){c[f>>2]=b;g=e}}l=j;return +g}function bQ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=c[b+32>>2]|0;f=c[d+32>>2]|0;if((e|0)==(f|0))qa(108496,108461,276,108506);do if((a[e+36>>0]|0)!=0?(a[f+36>>0]|0)!=0:0){j=+h[b>>3];if(j==0.0?+h[b+8>>3]==0.0:0){e=-1;break}k=+h[d>>3];i=+h[d+8>>3];if(!(k==0.0&i==0.0)){g=+h[b+8>>3];if(ij?2:1;break}e=kg){if(e){e=6;break}e=k>j?8:7;break}if(!e)if(k>j)e=5;else e=-1;else e=3}else e=-1}else e=-1;while(0);return e|0}function cQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+32|0;d=k+24|0;e=k+16|0;f=k;g=PP(a)|0;h=a+4|0;i=e+4|0;j=a+20|0;b=0;while(1){if((b|0)>=(c[h>>2]|0)){b=0;break}m=tH(32)|0;o=(c[a>>2]|0)+(b*40|0)|0;n=m+12|0;c[m+28>>2]=o;fQ(f,o);c[n>>2]=c[f>>2];c[n+4>>2]=c[f+4>>2];c[n+8>>2]=c[f+8>>2];c[n+12>>2]=c[f+12>>2];n=c[n>>2]|0;c[e>>2]=(((c[m+20>>2]|0)-n|0)/2|0)+n;n=c[m+16>>2]|0;c[i>>2]=(((c[m+24>>2]|0)-n|0)/2|0)+n;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[m+8>>2]=gQ(d,g)|0;n=c[j>>2]|0;if(!(nb[c[n>>2]&63](n,m,1)|0)){b=-1;break}else b=b+1|0}l=k;return b|0}function dQ(a){a=a|0;var b=0,d=0,e=0;d=a+20|0;e=c[d>>2]|0;b=a+24|0;a=nb[c[e>>2]&63](e,0,128)|0;while(1){if(!a)break;e=c[b>>2]|0;GS(e,a+12|0,c[a+28>>2]|0,e,0)|0;e=c[d>>2]|0;a=nb[c[e>>2]&63](e,a,8)|0}return}function eQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=a+20|0;f=Dw(c[e>>2]|0)|0;d=0;while(1){if(!(Dw(c[e>>2]|0)|0))break;g=c[e>>2]|0;a=c[(c[g+8>>2]|0)+4>>2]|0;if(!a){h=8;break}b=c[(c[g+4>>2]|0)+8>>2]|0;if((b|0)<0)a=c[a+8>>2]|0;else a=a+(0-b)|0;if(!a){h=8;break}nb[c[g>>2]&63](g,a,4096)|0;C_(a);d=d+1|0}if((h|0)==8)qa(108567,108461,616,108570);if((f|0)==(d|0))return;else qa(108582,108461,623,108570)}function fQ(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0,l=0.0;d=c[b+32>>2]|0;if(!d){e=0.0;f=0.0}else{e=+h[d>>3];f=+h[d+8>>3]}l=+h[b>>3];k=~~+A(+(l-e));g=+h[b+8>>3];j=~~+A(+(g-f));i=~~+N(+(l+e+ +h[b+16>>3]));if((i|0)==2147483647)qa(108594,108461,264,108621);d=~~+N(+(g+f+ +h[b+24>>3]));if((d|0)==2147483647)qa(108631,108461,266,108621);else{c[a>>2]=k;c[a+4>>2]=j;c[a+8>>2]=i;c[a+12>>2]=d;return}}function gQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=0;e=c[a>>2]|0;d=c[a+4>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;i=e>>>a&1;b=d>>>a&1;g=b+-1|0;h=g&(e^d);g=g&0-i;f=i<<1|f<<2|i^b;b=a;e=h^e^g;d=h^d^g}return f|0}function hQ(b){b=b|0;var d=0,e=0,f=0,g=0;d=V_(b)|0;if(d>>>0>=(c[46595]|0)>>>0){d=d+11|0;c[46595]=d;d=wH(c[46596]|0,d)|0;c[46596]=d;if(!d)d=0;else e=4}else{d=c[46596]|0;e=4}if((e|0)==4){g=d;while(1){e=a[b>>0]|0;if(!(e<<24>>24))break;f=e&255;if(P$(f)|0)e=(O$(f)|0)&255;a[g>>0]=e;g=g+1|0;b=b+1|0}a[g>>0]=0}return d|0}function iQ(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0;F=l;l=l+144|0;s=F+96|0;p=F+80|0;v=F+124|0;t=F+72|0;w=F+64|0;x=F+56|0;C=F+48|0;D=F+40|0;E=F+32|0;y=F+24|0;z=F+16|0;A=F+8|0;B=F;i=F+120|0;m=F+116|0;n=F+112|0;o=F+108|0;c[e+32>>2]=f;r=b;while(1)if((a[r>>0]|0)==32)r=r+1|0;else break;c[o>>2]=255;b=a[r>>0]|0;a:do if(b<<24>>24==35){c[p>>2]=i;c[p+4>>2]=m;c[p+8>>2]=n;c[p+12>>2]=o;if((M1(r,108673,p)|0)<=2){b=a[r>>0]|0;q=12;break}switch(f|0){case 0:{G=+((c[i>>2]|0)>>>0)*.00392156862745098;h[C>>3]=G;g=+((c[m>>2]|0)>>>0)*.00392156862745098;h[D>>3]=g;j=+((c[n>>2]|0)>>>0)*.00392156862745098;h[E>>3]=j;k=+((c[o>>2]|0)>>>0)*.00392156862745098;jQ(G,g,j,t,w,x);h[e>>3]=+h[t>>3];h[e+8>>3]=+h[w>>3];h[e+16>>3]=+h[x>>3];h[e+24>>3]=k;b=0;break a}case 1:{a[e>>0]=c[i>>2];a[e+1>>0]=c[m>>2];a[e+2>>0]=c[n>>2];a[e+3>>0]=c[o>>2];b=0;break a}case 3:{j=+((c[i>>2]|0)>>>0)*.00392156862745098;h[C>>3]=j;k=+((c[m>>2]|0)>>>0)*.00392156862745098;h[D>>3]=k;G=+((c[n>>2]|0)>>>0)*.00392156862745098;h[E>>3]=G;kQ(j,k,G,y,z,A,B);a[e>>0]=~~+h[y>>3]*255;a[e+1>>0]=~~+h[z>>3]*255;a[e+2>>0]=~~+h[A>>3]*255;a[e+3>>0]=~~+h[B>>3]*255;b=0;break a}case 2:{c[e>>2]=(((c[i>>2]|0)*65535|0)>>>0)/255|0;c[e+4>>2]=(((c[m>>2]|0)*65535|0)>>>0)/255|0;c[e+8>>2]=(((c[n>>2]|0)*65535|0)>>>0)/255|0;c[e+12>>2]=(((c[o>>2]|0)*65535|0)>>>0)/255|0;b=0;break a}case 4:{h[e>>3]=+((c[i>>2]|0)>>>0)*.00392156862745098;h[e+8>>3]=+((c[m>>2]|0)>>>0)*.00392156862745098;h[e+16>>3]=+((c[n>>2]|0)>>>0)*.00392156862745098;h[e+24>>3]=+((c[o>>2]|0)>>>0)*.00392156862745098;b=0;break a}default:{b=0;break a}}}else q=12;while(0);b:do if((q|0)==12){if(!(b<<24>>24!=46?((b&255)+-48|0)>>>0>=10:0)){b=V_(r)|0;if(b>>>0>=(c[46597]|0)>>>0){b=b+11|0;c[46597]=b;b=wH(c[46598]|0,b)|0;c[46598]=b;if(!b){b=-1;break}}else b=c[46598]|0;m=b;i=r;c:while(1){n=i+1|0;i=a[i>>0]|0;switch(i<<24>>24){case 0:break c;case 44:{i=32;break}default:{}}a[m>>0]=i;m=m+1|0;i=n}a[m>>0]=0;c[s>>2]=t;c[s+4>>2]=w;c[s+8>>2]=x;if((M1(b,108687,s)|0)==3){k=+h[t>>3];k=k<1.0?k:1.0;k=k>0.0?k:0.0;h[t>>3]=k;j=+h[w>>3];j=j<1.0?j:1.0;j=j>0.0?j:0.0;h[w>>3]=j;g=+h[x>>3];g=g<1.0?g:1.0;g=g>0.0?g:0.0;h[x>>3]=g;switch(f|0){case 0:{h[e>>3]=k;h[e+8>>3]=j;h[e+16>>3]=g;h[e+24>>3]=1.0;b=0;break b}case 1:{lQ(k,j,g,C,D,E);a[e>>0]=~~(+h[C>>3]*255.0);a[e+1>>0]=~~(+h[D>>3]*255.0);a[e+2>>0]=~~(+h[E>>3]*255.0);a[e+3>>0]=-1;b=0;break b}case 3:{lQ(k,j,g,C,D,E);kQ(+h[C>>3],+h[D>>3],+h[E>>3],y,z,A,B);a[e>>0]=~~+h[y>>3]*255;a[e+1>>0]=~~+h[z>>3]*255;a[e+2>>0]=~~+h[A>>3]*255;a[e+3>>0]=~~+h[B>>3]*255;b=0;break b}case 2:{lQ(k,j,g,C,D,E);c[e>>2]=~~(+h[C>>3]*65535.0);c[e+4>>2]=~~(+h[D>>3]*65535.0);c[e+8>>2]=~~(+h[E>>3]*65535.0);c[e+12>>2]=65535;b=0;break b}case 4:{lQ(k,j,g,C,D,E);h[e>>3]=+h[C>>3];h[e+8>>3]=+h[D>>3];h[e+16>>3]=+h[E>>3];h[e+24>>3]=1.0;b=0;break b}default:{b=0;break b}}}}i=mQ(r)|0;c[v>>2]=i;if(!i)b=-1;else{b=c[46599]|0;if(!(((b|0)!=0?(u=c[b>>2]|0,(a[u>>0]|0)==(a[i>>0]|0)):0)?(a$(u,i)|0)==0:0)){b=d2(v,25844,2491,12,101)|0;c[46599]=b;if(!b)switch(f|0){case 0:{c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;h[e+24>>3]=1.0;b=1;break b}case 1:{a[e+2>>0]=0;a[e+1>>0]=0;a[e>>0]=0;a[e+3>>0]=-1;b=1;break b}case 3:{c[e>>2]=0;b=1;break b}case 2:{c[e+8>>2]=0;c[e+4>>2]=0;c[e>>2]=0;c[e+12>>2]=65535;b=1;break b}case 4:{c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;h[e+24>>3]=1.0;b=1;break b}default:{b=1;break b}}}switch(f|0){case 0:{h[e>>3]=+(d[b+4>>0]|0)*.00392156862745098;h[e+8>>3]=+(d[b+5>>0]|0)*.00392156862745098;h[e+16>>3]=+(d[b+6>>0]|0)*.00392156862745098;h[e+24>>3]=+(d[b+10>>0]|0)*.00392156862745098;b=0;break b}case 1:{a[e>>0]=a[b+7>>0]|0;a[e+1>>0]=a[b+8>>0]|0;a[e+2>>0]=a[b+9>>0]|0;a[e+3>>0]=a[b+10>>0]|0;b=0;break b}case 3:{j=+(d[b+7>>0]|0)*.00392156862745098;h[C>>3]=j;k=+(d[b+8>>0]|0)*.00392156862745098;h[D>>3]=k;G=+(d[b+9>>0]|0)*.00392156862745098;h[E>>3]=G;kQ(j,k,G,y,z,A,B);a[e>>0]=~~+h[y>>3]*255;a[e+1>>0]=~~+h[z>>3]*255;a[e+2>>0]=~~+h[A>>3]*255;a[e+3>>0]=~~+h[B>>3]*255;b=0;break b}case 2:{c[e>>2]=(d[b+7>>0]|0)*257;c[e+4>>2]=(d[b+8>>0]|0)*257;c[e+8>>2]=(d[b+9>>0]|0)*257;c[e+12>>2]=(d[b+10>>0]|0)*257;b=0;break b}case 4:{h[e>>3]=+(d[b+7>>0]|0)*.00392156862745098;h[e+8>>3]=+(d[b+8>>0]|0)*.00392156862745098;h[e+16>>3]=+(d[b+9>>0]|0)*.00392156862745098;h[e+24>>3]=+(d[b+10>>0]|0)*.00392156862745098;b=0;break b}default:{b=0;break b}}}}while(0);l=F;return b|0}function jQ(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;i=bc?b:c;m=ma?a:i);g=i/m;if(m>0.0)if(g>0.0){j=(m-a)/i;k=(m-b)/i;l=(m-c)/i;do if(!(m==a)){if(m==b){a=j+2.0-l;break}if(m==c)a=k+4.0-j;else a=0.0}else a=(b-c)/i;while(0);a=a*60.0;if(a<0.0)a=a+360.0}else a=0.0;else{g=0.0;a=0.0}h[d>>3]=a*.002777777777777778;h[f>>3]=m;h[e>>3]=g;return}function kQ(a,b,c,d,e,f,g){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h[d>>3]=1.0-a;h[e>>3]=1.0-b;h[f>>3]=1.0-c;b=+h[d>>3];c=+h[e>>3];c=b>3]=c;b=+h[f>>3];c=b>3]=c;h[d>>3]=+h[d>>3]-c;h[e>>3]=+h[e>>3]-+h[g>>3];h[f>>3]=+h[f>>3]-+h[g>>3];return}function lQ(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0,l=0;a:do if(!(b<=0.0)){i=!(a>=1.0)?a*6.0:0.0;l=~~i;i=i-+(l|0);a=(1.0-b)*c;j=(1.0-i*b)*c;b=(1.0-(1.0-i)*b)*c;switch(l|0){case 0:{g=a;i=b;a=c;k=8;break a}case 1:{g=a;i=c;a=j;k=8;break a}case 2:{g=b;i=c;k=8;break a}case 3:{g=c;i=j;k=8;break a}case 4:{g=c;i=a;a=b;k=8;break a}case 5:{g=j;i=a;a=c;k=8;break a}default:break a}}else{g=c;i=c;a=c;k=8}while(0);if((k|0)==8){h[d>>3]=a;h[e>>3]=i;h[f>>3]=g}return}function mQ(b){b=b|0;var d=0,e=0;d=a[b>>0]|0;if(((d<<24>>24!=98?(e=b+1|0,!(d<<24>>24==119|(y$(e,134184,4)|0)==0)):0)?!(d<<24>>24==108|(y$(e,134189,4)|0)==0):0)?(y$(e,134194,8)|0)!=0:0){do if(d<<24>>24==47){d=z$(e,47)|0;if(!d)b=e;else{if((a[e>>0]|0)!=47){e=(U$(134203,e,4)|0)==0;b=e?d+1|0:b;break}d=c[46600]|0;if((d|0?a[d>>0]|0:0)?U$(134203,d,3)|0:0){b=oQ(d,b+2|0)|0;break}b=b+2|0}}else{d=c[46600]|0;if(((d|0)!=0?(a[d>>0]|0)!=0:0)?(U$(134203,d,3)|0)!=0:0)b=oQ(d,b)|0}while(0);b=hQ(b)|0}return b|0}function nQ(a,b){a=a|0;b=b|0;return N$(c[a>>2]|0,c[b>>2]|0)|0}function oQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;g=V_(a)|0;g=(V_(b)|0)+g|0;d=g+13|0;if((g+3|0)>>>0<(c[46601]|0)>>>0)d=c[46602]|0;else{c[46601]=d;d=wH(c[46602]|0,d)|0;c[46602]=d}c[e>>2]=a;c[e+4>>2]=b;X0(d,134208,e)|0;l=f;return c[46602]|0}function pQ(a){a=a|0;c[46600]=a;return}function qQ(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0,g=0;f=l;l=l+208|0;g=f;rQ(g,+h[a>>3],+h[a+8>>3],b,c,d,e);a=sQ(g)|0;l=f;return a|0}function rQ(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;var i=0,j=0;h[a>>3]=b;h[a+8>>3]=c;j=a+16|0;h[j>>3]=d;i=a+24|0;h[i>>3]=e;h[a+32>>3]=0.0;c=+K(+(+F(+f)/e),+(+E(+f)/d));h[a+56>>3]=c;e=+K(+(+F(+g)/e),+(+E(+g)/d));h[a+40>>3]=1.0;h[a+48>>3]=0.0;e=e-+A(+((e-c)*.15915494309189535))*6.283185307179586;h[a+64>>3]=g-f>3.141592653589793&e-c<3.141592653589793?e+6.283185307179586:e;yQ(a);zQ(a);AQ(a);g=+h[j>>3];g=(g-+h[i>>3])/g;h[a+168>>3]=g;h[a+176>>3]=(2.0-g)*g;g=1.0-g;h[a+184>>3]=g;h[a+192>>3]=g*g;return}function sQ(a){a=a|0;var b=0,c=0.0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;q=tH(8)|0;f=+h[a+56>>3];e=+h[a+64>>3]-f;p=1;b=0;while(1){o=e/+(p|0);if(!(b<<24>>24==0&(p|0)<1024))break;a:do if(!(o<=1.5707963267948966))b=0;else{c=f;d=0;b=1;while(1){if(!(b<<24>>24!=0&(d|0)<(p|0)))break a;n=c+o;b=+tQ(a,c,n)<=1.0e-05&1;c=n;d=d+1|0}}while(0);p=p<<1}i=+E(+f);u=+F(+f);d=a+16|0;s=+h[d>>3];v=s*i;j=a+24|0;c=+h[j>>3];g=c*u;i=c*i;c=+h[a>>3];k=a+40|0;t=+h[k>>3];l=a+48|0;r=+h[l>>3];e=t*v+c-r*g;m=a+8|0;n=+h[m>>3];g=r*v+t*g+n;s=-(u*s);uQ(q,c,n);vQ(q,e,g);n=+G(+(o*.5));n=+F(+o)*.3333333333333333*(+C(+(n*n*3.0+4.0))+-1.0);c=f;f=g;g=r*s+t*i;i=t*s-r*i;b=0;while(1){if((b|0)>=(p|0))break;r=c+o;u=+E(+r);v=+F(+r);x=+h[d>>3];z=x*u;w=+h[j>>3];t=w*v;u=w*u;w=+h[k>>3];y=+h[l>>3];s=w*z+ +h[a>>3]-y*t;t=y*z+w*t+ +h[m>>3];x=-(v*x);v=w*x-y*u;u=y*x+w*u;wQ(q,e+i*n,f+g*n,s-v*n,t-u*n,s,t);c=r;e=s;f=t;g=u;i=v;b=b+1|0}xQ(q);return q|0}function tQ(a,b,c){a=a|0;b=+b;c=+c;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;d=c+b;i=+h[a+16>>3];e=+h[a+24>>3]/i;g=+E(+d);f=+E(+(d*2.0));d=+E(+(d*3.0));a=e<.25?10392:10648;return +(((e*.001+4.98)*e+.207)/(e+.0067)*i*+L(+(((+h[a+32>>3]*e+ +h[a+40>>3])*e+ +h[a+48>>3])/(+h[a+56>>3]+e)*g+((+h[a>>3]*e+ +h[a+8>>3])*e+ +h[a+16>>3])/(+h[a+24>>3]+e)+((+h[a+64>>3]*e+ +h[a+72>>3])*e+ +h[a+80>>3])/(+h[a+88>>3]+e)*f+((+h[a+96>>3]*e+ +h[a+104>>3])*e+ +h[a+112>>3])/(+h[a+120>>3]+e)*d+(((+h[a+160>>3]*e+ +h[a+168>>3])*e+ +h[a+176>>3])/(+h[a+184>>3]+e)*g+((+h[a+128>>3]*e+ +h[a+136>>3])*e+ +h[a+144>>3])/(+h[a+152>>3]+e)+((+h[a+192>>3]*e+ +h[a+200>>3])*e+ +h[a+208>>3])/(+h[a+216>>3]+e)*f+((+h[a+224>>3]*e+ +h[a+232>>3])*e+ +h[a+240>>3])/(+h[a+248>>3]+e)*d)*(c-b))))}function uQ(a,b,d){a=a|0;b=+b;d=+d;var e=0;c[46603]=100;e=tH(1600)|0;c[a>>2]=e;h[e>>3]=b;h[e+8>>3]=d;c[a+4>>2]=1;return}function vQ(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;f=c[a>>2]|0;e=(c[a+4>>2]|0)+-1|0;wQ(a,+h[f+(e<<4)>>3],+h[f+(e<<4)+8>>3],b,d,b,d);return}function wQ(a,b,d,e,f,g,i){a=a|0;b=+b;d=+d;e=+e;f=+f;g=+g;i=+i;var j=0,k=0,l=0,m=0;l=a+4|0;j=c[l>>2]|0;k=c[46603]|0;if((j+3|0)<(k|0))a=c[a>>2]|0;else{c[46603]=k<<1;j=E_(c[a>>2]|0,k<<5)|0;c[a>>2]=j;a=j;j=c[l>>2]|0}h[a+(j<<4)>>3]=b;m=j+1|0;h[a+(j<<4)+8>>3]=d;h[a+(m<<4)>>3]=e;k=j+2|0;h[a+(m<<4)+8>>3]=f;h[a+(k<<4)>>3]=g;c[l>>2]=j+3;h[a+(k<<4)+8>>3]=i;return}function xQ(a){a=a|0;var b=0;b=c[a>>2]|0;vQ(a,+h[b>>3],+h[b+8>>3]);c[a>>2]=E_(c[a>>2]|0,c[a+4>>2]<<4)|0;c[46603]=0;return}function yQ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0;d=+h[a+16>>3];b=+h[a+24>>3];b=+C(+(d*d-b*b));d=b*+h[a+40>>3];b=b*+h[a+48>>3];e=+h[a>>3];h[a+104>>3]=e-d;c=+h[a+8>>3];h[a+112>>3]=c-b;h[a+120>>3]=e+d;h[a+128>>3]=c+b;return}function zQ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0;d=+h[a+16>>3];i=+h[a+56>>3];j=+E(+i)*d;b=+h[a+24>>3];i=+F(+i)*b;g=+h[a+64>>3];d=+E(+g)*d;b=+F(+g)*b;g=+h[a>>3];c=+h[a+40>>3];e=+h[a+48>>3];h[a+72>>3]=c*j+g-e*i;f=+h[a+8>>3];h[a+80>>3]=e*j+f+c*i;h[a+88>>3]=g+c*d-e*b;h[a+96>>3]=f+e*d+c*b;return}function AQ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0;k=+h[a+24>>3];l=+h[a+16>>3];e=k/l;m=+h[a+48>>3];n=+B(+m)<.1;j=+h[a+40>>3];do if(n){b=m/j;c=+J(+(b*e));d=-c;if(j<0.0){b=+J(+(b/e));e=d;d=3.141592653589793-c;c=4.71238898038469-b;b=1.5707963267948966-b;break}else{b=+J(+(b/e));e=-3.141592653589793-c;c=1.5707963267948966-b;b=-1.5707963267948966-b;break}}else{b=j/m;c=+J(+(b/e));d=c+1.5707963267948966;if(m<0.0){b=+J(+(b*e));e=c+-1.5707963267948966;c=b+3.141592653589793;break}else{b=+J(+(b*e));e=d;d=c+4.71238898038469;c=b;b=b+-3.141592653589793;break}}while(0);g=+h[a+56>>3];e=e-+A(+((e-g)*.15915494309189535))*6.283185307179586;b=b-+A(+((b-g)*.15915494309189535))*6.283185307179586;f=d-+A(+((d-g)*.15915494309189535))*6.283185307179586;g=c-+A(+((c-g)*.15915494309189535))*6.283185307179586;i=+h[a+64>>3];if(!(e<=i)){e=+h[a+72>>3];c=+h[a+88>>3];c=e>3]-k*+F(+e)*m;h[a+136>>3]=c;if(!(b<=i)){e=+h[a+80>>3];d=+h[a+96>>3];d=e>3]+ +F(+b)*k*j;h[a+144>>3]=d;if(!(f<=i)){f=+h[a+72>>3];b=+h[a+88>>3];b=f>b?f:b}else b=+E(+f)*l*j+ +h[a>>3]-k*+F(+f)*m;h[a+152>>3]=b-c;if(!(g<=i)){m=+h[a+80>>3];b=+h[a+96>>3];b=m>b?m:b}else b=+E(+g)*l*m+ +h[a+8>>3]+ +F(+g)*k*j;h[a+160>>3]=b-d;return}function BQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0.0,m=0,n=0;n=l;l=l+80|0;m=n;CQ(b);k=+h[e+56>>3];g=+h[e+64>>3];switch(a[e+80>>0]|0){case 116:{g=(+h[e+48>>3]-+DQ(d))*.5+g;f=4;break}case 98:{g=g-(+h[e+48>>3]-+DQ(d))*.5;f=4;break}default:{}}if((f|0)==4)g=g+-1.0;h[m>>3]=k;h[m+8>>3]=g;c[m+20>>2]=c[e+8>>2];c[m+16>>2]=c[e+4>>2];h[m+32>>3]=+h[e+16>>3];j=b+16|0;f=wx(c[(c[j>>2]|0)+8>>2]|0,134215)|0;e=m+56|0;c[e>>2]=f;i=m+60|0;c[i>>2]=c[(c[j>>2]|0)+212>>2];j=m+64|0;a[j>>0]=0;if(!((f|0)!=0?(a[f>>0]|0)!=0:0))c[e>>2]=134226;if((a[d+4>>0]|0)==1){e=c[d>>2]|0;XO(b,c[(c[b>>2]|0)+336>>2]|0);f=c[e+24>>2]|0;if(!f)TO(b,134232);else TO(b,f);FQ(b,e,m);if(a[j>>0]|0)C_(c[i>>2]|0)}else EQ(b,c[d>>2]|0,m);GQ(b);l=n;return}function CQ(a){a=a|0;var d=0,e=0,f=0;d=ME(a)|0;e=c[d>>2]|0;a=c[e+4>>2]|0;c[d+4>>2]=a;c[d+12>>2]=c[e+12>>2];switch(a|0){case 2:{a=e+8|0;f=6;break}case 0:{a=e+8|0;f=6;break}case 1:{a=e+8|0;f=6;break}case 3:{a=e+8|0;f=6;break}default:{}}if((f|0)==6)c[d+8>>2]=c[a>>2];c[d+208>>2]=c[e+208>>2];c[d+228>>2]=c[e+228>>2];c[d+244>>2]=c[e+244>>2];f=d+260|0;b[f>>1]=b[f>>1]&-2|b[e+260>>1]&1;return}function DQ(b){b=b|0;var d=0.0,e=0,f=0;switch(a[b+4>>0]|0){case 1:{e=c[b>>2]|0;b=e+72|0;e=e+56|0;f=5;break}case 3:{e=c[b>>2]|0;b=e+24|0;e=e+8|0;f=5;break}case 2:{e=c[b>>2]|0;b=e+32|0;e=e+16|0;f=5;break}default:d=0.0}if((f|0)==5)d=+h[b>>3]-+h[e>>3];return +d}function EQ(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0;n=l;l=l+96|0;j=n+64|0;i=n+32|0;g=n+16|0;k=n;m=b[e+4>>1]|0;if(m<<16>>16>=1){r=e+8|0;p=+h[e+24>>3];o=+h[r>>3];h[k>>3]=(o+p)*.5+ +h[f>>3];h[k+8>>3]=(+h[e+16>>3]+ +h[e+32>>3])*.5+ +h[f+8>>3];q=c[e>>2]|0;s=f+16|0;f=a[e+6>>0]|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];c[i+16>>2]=c[s+16>>2];c[i+20>>2]=c[s+20>>2];c[i+24>>2]=c[s+24>>2];c[i+28>>2]=c[s+28>>2];c[j>>2]=c[r>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[j+12>>2]=c[r+12>>2];c[j+16>>2]=c[r+16>>2];c[j+20>>2]=c[r+20>>2];c[j+24>>2]=c[r+24>>2];c[j+28>>2]=c[r+28>>2];SQ(d,m<<16>>16,q,g,(p-o)*.5,i,j,f)}l=n;return}function FQ(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+176|0;t=y+96|0;v=y+64|0;w=y+136|0;p=y;q=y+128|0;r=f+48|0;c[v>>2]=c[r>>2];c[v+4>>2]=c[r+4>>2];c[v+8>>2]=c[r+8>>2];c[v+12>>2]=c[r+12>>2];c[v+16>>2]=c[r+16>>2];c[v+20>>2]=c[r+20>>2];c[v+24>>2]=c[r+24>>2];c[v+28>>2]=c[r+28>>2];m=+h[g>>3];n=+h[g+8>>3];r=f+84|0;i=c[r>>2]|0;if(!(c[f>>2]|0))x=(c[f+8>>2]|0)!=0;else x=1;u=f+108|0;j=c[u>>2]|0;if(j|0)HQ(g,j,183464);h[v>>3]=+h[v>>3]+m;s=v+16|0;h[s>>3]=+h[s>>3]+m;s=v+8|0;h[s>>3]=+h[s>>3]+n;s=v+24|0;h[s>>3]=+h[s>>3]+n;if(x?(c[e+152>>2]&4|0)==0:0){c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];s=IQ(e,g,f,t,w)|0}else s=0;o=f+42|0;j=b[o>>1]|0;if(!(j&32)){k=c[f+20>>2]|0;if(k){j=JQ(e,k,c[f+28>>2]|0,j&65535,q)|0;if(!(b[o>>1]&4)){c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];_O(e,t,j)}else{o=d[f+33>>0]|0;c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];DJ(e,KQ(p,t,o)|0,4,4,j)}C_(c[q>>2]|0)}while(1){j=c[i>>2]|0;if(!j)break;LQ(e,j,g);i=i+4|0}i=c[r>>2]|0;eP(e,1.0);j=f+24|0;while(1){k=i+4|0;i=c[i>>2]|0;if(!i)break;if(!(a[i+100>>0]|0)){i=k;continue}MQ(e,i,g,c[j>>2]|0,c[k>>2]|0);i=k}if(a[f+33>>0]|0){c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];NQ(e,f,t)}}if(s|0)OQ(e,w);if((x?c[e+152>>2]&4|0:0)?(c[t>>2]=c[v>>2],c[t+4>>2]=c[v+4>>2],c[t+8>>2]=c[v+8>>2],c[t+12>>2]=c[v+12>>2],c[t+16>>2]=c[v+16>>2],c[t+20>>2]=c[v+20>>2],c[t+24>>2]=c[v+24>>2],c[t+28>>2]=c[v+28>>2],IQ(e,g,f,t,w)|0):0)OQ(e,w);if(c[u>>2]|0)PQ(g,183464);l=y;return}function GQ(a){a=a|0;var b=0;b=c[a+16>>2]|0;c[b+208>>2]=0;c[b+228>>2]=0;c[b+244>>2]=0;c[b+212>>2]=0;NE(a);return}function HQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0;i=a+16|0;f=c[i>>2]|0;if(f|0){if(!(c[b>>2]|0)){f=0;g=d}else{c[d>>2]=f;f=c[b>>2]|0;g=i}c[g>>2]=f}f=c[a+20>>2]|0;if(f|0){g=b+4|0;if(!(c[g>>2]|0)){f=0;g=d}else{c[d+4>>2]=f;f=c[g>>2]|0;g=i}c[g+4>>2]=f}e=+h[a+32>>3];if(e>=0.0){f=b+16|0;if(!(+h[f>>3]>=0.0))e=-1.0;else{h[d+16>>3]=e;e=+h[f>>3];d=i}h[d+16>>3]=e}return}function IQ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+224|0;n=u+8|0;k=u;t=u+40|0;j=u+184|0;i=u+56|0;m=c[d+16>>2]|0;o=m+208|0;c[h>>2]=c[o>>2];p=m+228|0;c[h+4>>2]=c[p>>2];q=m+244|0;c[h+8>>2]=c[q>>2];r=m+212|0;c[h+12>>2]=c[r>>2];s=m+260|0;a[h+16>>0]=(b[s>>1]<<15&65535)<<16>>16>>15;h=c[f+16>>2]|0;if((h|0)!=0?(a[h>>0]|0)!=0:0)i=0;else{Sw(t,128,i);i=e+60|0;h=c[i>>2]|0;if(!h){h=m1(PE(d,c[m+8>>2]|0,t)|0)|0;c[i>>2]=h;a[e+64>>0]=1}Vw(t,h)|0;i=c[46604]|0;c[46604]=i+1;c[k>>2]=i;X0(j,134309,k)|0;Vw(t,j)|0;i=t+4|0;h=c[i>>2]|0;if(h>>>0>=(c[t+8>>2]|0)>>>0){Tw(t,1)|0;h=c[i>>2]|0}a[h>>0]=0;h=c[t>>2]|0;c[i>>2]=h;i=1}h=OE(d,0,c[f>>2]|0,c[f+12>>2]|0,c[f+8>>2]|0,h,c[m+8>>2]|0)|0;if(i)Ww(t);do if(h|0){if((c[o>>2]|0)==0?(b[s>>1]&1)==0:0)break;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];c[n+16>>2]=c[g+16>>2];c[n+20>>2]=c[g+20>>2];c[n+24>>2]=c[g+24>>2];c[n+28>>2]=c[g+28>>2];WE(d,n);OO(d,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0)}while(0);l=u;return h|0}function JQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;if(!((tG(b,f,i)|0)<<24>>24)){VO(a,b);b=1}else{VO(a,c[f>>2]|0);b=c[f+4>>2]|0;h=+g[i>>2];if(!b)WO(a,134232,d,h);else WO(a,b,d,h);b=e>>>1&1|2}TO(a,134297);l=j;return b|0}function KQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];e=a+32|0;b=b+16|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];if((d|0)>1){j=+(d|0)*.5;i=+h[a>>3]+j;h[a>>3]=i;d=a+8|0;g=+h[d>>3]+j;h[d>>3]=g;f=+h[e>>3]-j;h[e>>3]=f;e=a+40|0;j=+h[e>>3]-j;h[e>>3]=j}else{f=+h[e>>3];g=+h[a+8>>3];i=+h[a>>3];j=+h[a+40>>3]}h[a+16>>3]=f;h[a+24>>3]=g;h[a+48>>3]=i;h[a+56>>3]=j;return a|0}function LQ(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+176|0;r=v+96|0;s=v+136|0;t=v+64|0;p=v;q=v+128|0;u=f+48|0;c[t>>2]=c[u>>2];c[t+4>>2]=c[u+4>>2];c[t+8>>2]=c[u+8>>2];c[t+12>>2]=c[u+12>>2];c[t+16>>2]=c[u+16>>2];c[t+20>>2]=c[u+20>>2];c[t+24>>2]=c[u+24>>2];c[t+28>>2]=c[u+28>>2];j=+h[g>>3];k=+h[g+8>>3];if(!(c[f>>2]|0))u=(c[f+8>>2]|0)!=0;else u=1;h[t>>3]=+h[t>>3]+j;o=t+16|0;h[o>>3]=+h[o>>3]+j;o=t+8|0;h[o>>3]=+h[o>>3]+k;o=t+24|0;h[o>>3]=+h[o>>3]+k;if(u?(c[e+152>>2]&4|0)==0:0){c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];o=IQ(e,g,f,r,s)|0}else o=0;n=f+42|0;i=b[n>>1]|0;a:do if(!(i&32)){m=c[f+20>>2]|0;if(m|0){i=JQ(e,m,c[f+28>>2]|0,i&65535,q)|0;if(!(b[n>>1]&4)){c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];_O(e,r,i)}else{n=d[f+33>>0]|0;c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];DJ(e,KQ(p,r,n)|0,4,4,i)}C_(c[q>>2]|0)}if(a[f+33>>0]|0){c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];NQ(e,f,r)}i=f+88|0;switch(a[f+92>>0]|0){case 1:{FQ(e,c[i>>2]|0,g);break a}case 3:{RQ(e,c[i>>2]|0,g);break a}default:{EQ(e,c[i>>2]|0,g);break a}}}while(0);if(o|0)OQ(e,s);if((u?c[e+152>>2]&4|0:0)?(c[r>>2]=c[t>>2],c[r+4>>2]=c[t+4>>2],c[r+8>>2]=c[t+8>>2],c[r+12>>2]=c[t+12>>2],c[r+16>>2]=c[t+16>>2],c[r+20>>2]=c[t+20>>2],c[r+24>>2]=c[t+24>>2],c[r+28>>2]=c[t+28>>2],IQ(e,g,f,r,s)|0):0)OQ(e,s);l=v;return}function MQ(f,g,i,j,k){f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0.0,n=0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0;A=l;l=l+32|0;y=A+16|0;z=A;r=+h[i>>3];x=+h[i+8>>3];q=(j|0)==0?134232:j;VO(f,q);TO(f,q);t=+h[g+48>>3];o=+h[g+56>>3];u=+h[g+64>>3];p=+h[g+72>>3];s=t+r;r=u+r;x=o+x;q=g+100|0;i=a[q>>0]|0;if((i&1)!=0?(n=c[g+96>>2]|0,((e[g+80>>1]|0)+(e[g+84>>1]|0)|0)<(c[n+104>>2]|0)):0){i=b[g+86>>1]|0;do if(i<<16>>16)if(((e[g+82>>1]|0)+(i&65535)|0)==(c[n+100>>2]|0)){B=a[n+32>>0]|0;C=(B<<24>>24)/2|0;j=(C<<24>>24)+(d[n+33>>0]|0)|0;i=j;j=j&255;m=x-+(C<<24>>24);n=B;break}else{n=a[n+32>>0]|0;i=0;j=((n<<24>>24)/2|0)<<24>>24;m=x;break}else{C=a[n+32>>0]|0;j=((C<<24>>24)/2|0)<<24>>24;i=j+(d[n+33>>0]|0)|0;m=x;n=C}while(0);h[z+8>>3]=m-+(j|0);h[z>>3]=r+ +(((n<<24>>24)/2|0)<<24>>24);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];QQ(f,y,0.0,p-o+ +(i&255|0)+ +(n<<24>>24));i=a[q>>0]|0}if(i&2?(v=b[g+86>>1]|0,w=c[g+96>>2]|0,((e[g+82>>1]|0)+(v&65535)|0)<(c[w+100>>2]|0)):0){i=b[g+84>>1]|0;do if(!(i<<16>>16)){i=a[w+32>>0]|0;C=(i<<24>>24)/2|0;n=(C<<24>>24)+(d[w+33>>0]|0)|0;j=n&255;n=n&255;m=+(C<<24>>24);h[z>>3]=s-m-+(n|0);if((c[w+104>>2]|0)==(e[g+80>>1]|0)){j=n<<1&255;break}if((k|0)!=0?(b[k+86>>1]|0)!=v<<16>>16:0)j=~~(+(j&255)-u+ +h[w+64>>3]-m)&255}else{if(((e[g+80>>1]|0)+(i&65535)|0)==(c[w+104>>2]|0)){i=a[w+32>>0]|0;C=(i<<24>>24)/2|0;j=(C&255)+(d[w+33>>0]|0)&255;h[z>>3]=s-+(C<<24>>24);break}i=a[w+32>>0]|0;m=+(((i<<24>>24)/2|0)<<24>>24);h[z>>3]=s-m;if((k|0)!=0?(b[k+86>>1]|0)!=v<<16>>16:0)j=~~(+h[w+64>>3]-u-m)&255;else j=0}while(0);h[z+8>>3]=x-+(((i<<24>>24)/2|0)<<24>>24);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];QQ(f,y,u-t+ +(j&255)+ +(i<<24>>24),0.0)}l=A;return}function NQ(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0;p=l;l=l+160|0;o=p+112|0;n=p;j=p+144|0;m=c[f+24>>2]|0;TO(e,(m|0)==0?134232:m);m=f+42|0;i=b[m>>1]|0;if(!(i&384))XO(e,c[(c[e>>2]|0)+336>>2]|0);else{c[j+4>>2]=0;c[j>>2]=0;i=i&65535;if(!(i&256)){if(i&128|0){i=134238;k=4}}else{i=134245;k=4}if((k|0)==4)c[j>>2]=i;XO(e,j)}k=f+33|0;eP(e,+(d[k>>0]|0));a:do if(!(b[m>>1]&4)){i=b[f+36>>1]&15360;if(!(i<<16>>16)){i=a[k>>0]|0;if((i&255)>1){q=+(i&255)*.5;h[g>>3]=+h[g>>3]+q;n=g+8|0;h[n>>3]=+h[n>>3]+q;n=g+16|0;h[n>>3]=+h[n>>3]-q;n=g+24|0;h[n>>3]=+h[n>>3]-q};c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];_O(e,o,0);break}j=n+16|0;m=d[k>>0]|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];KQ(j,o,m)|0;do switch(((i&65535)+-1024|0)>>>10&4194303|0){case 7:{aP(e,j,2);break a}case 3:{aP(e,n+32|0,2);break a}case 1:{aP(e,n+48|0,2);break a}case 0:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];aP(e,n,2);break a}case 11:{aP(e,j,3);break a}case 5:{aP(e,n+32|0,3);break a}case 2:{g=n+80|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];aP(e,n+48|0,3);break a}case 8:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];aP(e,n,3);break a}case 13:{aP(e,j,4);break a}case 6:{g=n+80|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];aP(e,n+32|0,4);break a}case 10:{g=n+80|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];g=n+96|0;o=n+32|0;c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];aP(e,n+48|0,4);break a}case 12:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];aP(e,n,4);break a}case 9:{aP(e,j,2);aP(e,n+48|0,2);break a}case 4:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];aP(e,n,2);aP(e,n+32|0,2);break a}default:break a}while(0)}else{m=d[k>>0]|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];DJ(e,KQ(n,o,m)|0,4,4,0)}while(0);l=p;return}function OQ(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=c[d+16>>2]|0;f=h+208|0;if((c[f>>2]|0)==0?(b[h+260>>1]&1)==0:0)d=0;else{PO(d);d=c[f>>2]|0}if((d|0)!=(c[e>>2]|0)){C_(d);c[f>>2]=c[e>>2]}d=h+228|0;f=c[d>>2]|0;g=e+4|0;if((f|0)!=(c[g>>2]|0)){C_(f);c[d>>2]=c[g>>2]}d=h+244|0;f=c[d>>2]|0;g=e+8|0;if((f|0)!=(c[g>>2]|0)){C_(f);c[d>>2]=c[g>>2]}d=h+212|0;f=c[d>>2]|0;g=e+12|0;if((f|0)!=(c[g>>2]|0)){C_(f);c[d>>2]=c[g>>2]}h=h+260|0;b[h>>1]=b[h>>1]&-2|a[e+16>>0]&1;return}function PQ(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=c[b>>2]|0;if(e|0)c[a+16>>2]=e;e=c[b+4>>2]|0;if(e|0)c[a+20>>2]=e;d=+h[b+16>>3];if(d>=0.0)h[a+32>>3]=d;return}function QQ(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0,i=0;f=l;l=l+64|0;g=f+32|0;i=f;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];h[i+16>>3]=+h[b>>3]+d;h[i+24>>3]=+h[b+8>>3]+e;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];c[g+8>>2]=c[i+8>>2];c[g+12>>2]=c[i+12>>2];c[g+16>>2]=c[i+16>>2];c[g+20>>2]=c[i+20>>2];c[g+24>>2]=c[i+24>>2];c[g+28>>2]=c[i+28>>2];_O(a,g,1);l=f;return}function RQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n=0.0;i=l;l=l+64|0;g=i;k=+h[e>>3];n=k+ +h[d>>3];m=+h[e+8>>3];j=m+ +h[d+8>>3];k=k+ +h[d+16>>3];m=m+ +h[d+24>>3];h[g>>3]=k;h[g+8>>3]=m;h[g+32>>3]=n;h[g+40>>3]=j;h[g+16>>3]=n;h[g+24>>3]=m;h[g+48>>3]=k;h[g+56>>3]=j;f=c[d+36>>2]|0;if(!f)f=c[e+56>>2]|0;e=c[d+32>>2]|0;if(!e)qa(134252,134260,623,134272);if(!(a[e>>0]|0))qa(134286,134260,624,134272);else{cP(b,e,g,4,1,f);l=i;return}}function SQ(d,e,f,g,i,j,k,m){d=d|0;e=e|0;f=f|0;g=g|0;i=+i;j=j|0;k=k|0;m=m|0;var n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0.0,N=0.0,O=0,P=0,Q=0,R=0;R=l;l=l+128|0;K=R+104|0;O=R+48|0;P=R+16|0;L=R;J=L;c[J>>2]=0;c[J+4>>2]=0;M=+h[g>>3];N=M-i;I=M+i;J=L+8|0;h[J>>3]=(+h[k+24>>3]-+h[k+8>>3])*.5+ +h[g+8>>3];QO(d,1);D=P+16|0;E=P+4|0;F=P+24|0;G=O+4|0;H=O+16|0;s=(m|0)==0;t=O+24|0;u=O+8|0;v=O+32|0;w=O+40|0;x=O+48|0;y=j+16|0;z=j+4|0;A=P+8|0;q=0;while(1){if((q|0)>=(e|0))break;switch(a[f+(q*24|0)+6>>0]|0){case 108:{i=N;break}case 114:{i=I-+h[f+(q*24|0)+8>>3];break}default:i=M-+h[f+(q*24|0)+8>>3]*.5}h[g>>3]=i;B=f+(q*24|0)+16|0;h[J>>3]=+h[J>>3]-+h[B>>3];C=f+(q*24|0)+4|0;p=c[f+(q*24|0)>>2]|0;r=0;while(1){if((r|0)>=(b[C>>1]|0))break;o=p+4|0;m=c[o>>2]|0;if(m){h[D>>3]=+h[(+h[m+16>>3]>0.0?m:j)+16>>3];c[P>>2]=c[((c[m>>2]|0)==0?j:m)>>2];k=c[((c[m+4>>2]|0)==0?j:m)+4>>2]|0;c[E>>2]=k;m=c[m+24>>2]&127;if(!m)Q=12;else m=c[F>>2]&-128|m}else{h[D>>3]=+h[y>>3];c[P>>2]=c[j>>2];k=c[z>>2]|0;c[E>>2]=k;Q=12}if((Q|0)==12){Q=0;m=c[F>>2]&-128}c[F>>2]=m;TO(d,k);c[O>>2]=c[p>>2];c[G>>2]=P;h[H>>3]=+h[p+16>>3];if(s)n=1.0;else n=+h[p+24>>3];h[t>>3]=n;c[A>>2]=c[(c[o>>2]|0)+8>>2];c[u>>2]=c[p+8>>2];o=p+32|0;h[v>>3]=+h[o>>3];h[w>>3]=+h[B>>3];a[x>>0]=108;h[L>>3]=i;c[K>>2]=c[L>>2];c[K+4>>2]=c[L+4>>2];c[K+8>>2]=c[L+8>>2];c[K+12>>2]=c[L+12>>2];SO(d,K,O);n=+h[o>>3]+i;h[g>>3]=n;p=p+56|0;r=r+1|0;i=n}q=q+1|0}RO(d);l=R;return}function TQ(a){a=a|0;C_(c[a>>2]|0);C_(c[a+4>>2]|0);C_(c[a+8>>2]|0);C_(c[a+16>>2]|0);C_(c[a+12>>2]|0);C_(c[a+20>>2]|0);C_(c[a+24>>2]|0);return}function UQ(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(a|0){j=a+4|0;e=0;g=c[a>>2]|0;while(1){if((e|0)>=(b[j>>1]|0))break;k=g+4|0;d=0;f=c[g>>2]|0;while(1){if((d|0)>=(b[k>>1]|0))break;C_(c[f>>2]|0);h=c[f+8>>2]|0;if(h|0?(i=c[f+12>>2]|0,i|0):0)tb[i&127](h);d=d+1|0;f=f+56|0}e=e+1|0;g=g+24|0}d=c[a>>2]|0;if(d|0)C_(d);C_(a)}return}function VQ(a){a=a|0;C_(c[a+32>>2]|0);C_(a);return}function WQ(b,d){b=b|0;d=d|0;switch(a[b+4>>0]|0){case 1:{XQ(c[b>>2]|0);break}case 3:{VQ(c[b>>2]|0);break}default:UQ(c[b>>2]|0)}if(d|0)C_(b);return}function XQ(a){a=a|0;var b=0,d=0,e=0;e=a+84|0;if((c[a+100>>2]|0)==-1)xw(c[e>>2]|0)|0;else{b=c[e>>2]|0;C_(c[a+92>>2]|0);C_(c[a+96>>2]|0);while(1){d=c[b>>2]|0;if(!d)break;YQ(d);b=b+4|0}C_(c[e>>2]|0)}TQ(a);C_(a);return}function YQ(a){a=a|0;WQ(a+88|0,0);TQ(a);C_(a);return}function ZQ(b,e,f){b=b|0;e=e|0;f=f|0;var g=0;b=c[(c[(c[b+16>>2]|0)+104>>2]|0)+72>>2]|0;if((a[b+4>>0]|0)!=2?(g=_Q(c[b>>2]|0,e)|0,(g|0)!=0):0){c[f>>2]=d[g+35>>0];b=g+48|0}else b=0;return b|0}function _Q(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+4>>2]|0;if(!((d|0)!=0?(N$(d,b)|0)==0:0))e=3;a:do if((e|0)==3){d=c[a+84>>2]|0;while(1){a=c[d>>2]|0;if(!a){a=0;break a}a=$Q(a,b)|0;if(!a)d=d+4|0;else break}}while(0);return a|0}function $Q(b,d){b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;if(!((e|0)!=0?(N$(e,d)|0)==0:0))if((a[b+92>>0]|0)==1)b=_Q(c[b+88>>2]|0,d)|0;else b=0;return b|0}function aR(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return 0}function bR(d){d=d|0;var f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=d+92|0;c[p>>2]=tH((c[d+100>>2]<<2)+4|0)|0;n=tH((c[d+104>>2]<<2)+4|0)|0;c[d+96>>2]=n;o=d+32|0;m=c[d+84>>2]|0;while(1){l=c[m>>2]|0;if(!l)break;d=b[l+82>>1]|0;f=+h[l+72>>3];if(d<<16>>16==1)i=~~f;else{i=~~((f-+(O((a[o>>0]|0)+-1|0,(d&65535)+-1|0)|0))/+(d&65535));i=(i|0)>1?i:1}j=b[l+80>>1]|0;f=+h[l+64>>3];if(j<<16>>16==1)k=~~f;else{k=~~((f-+(O((a[o>>0]|0)+-1|0,(j&65535)+-1|0)|0))/+(j&65535));k=(k|0)>1?k:1}q=e[l+86>>1]|0;g=(d&65535)+q|0;d=q;while(1){if((d|0)>=(g|0))break;q=(c[p>>2]|0)+(d<<2)|0;r=c[q>>2]|0;c[q>>2]=(r|0)>(i|0)?r:i;d=d+1|0}d=e[l+84>>1]|0;g=(j&65535)+d|0;while(1){if((d|0)>=(g|0))break;r=n+(d<<2)|0;q=c[r>>2]|0;c[r>>2]=(q|0)>(k|0)?q:k;d=d+1|0}m=m+4|0}return}function cR(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;if(a>>>0<21)a=c[55736+(a<<2)>>2]|0;else{c[b>>2]=a;X0(191879,134313,b)|0;a=191879}l=d;return a|0}function dR(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=a+104|0;l=a+100|0;j=d+16|0;f=0;g=0;while(1){if((f|0)>(c[k>>2]|0))break;i=$y(d,cR(f)|0,1)|0;zz(i,134365,304,1)|0;m=i+16|0;c[(c[m>>2]|0)+176>>2]=0;o=tH((c[l>>2]<<2)+4|0)|0;n=c[m>>2]|0;c[n+172>>2]=o;c[n+184>>2]=0;n=tH((c[l>>2]<<2)+4|0)|0;c[(c[m>>2]|0)+180>>2]=n;if(!g)c[(c[j>>2]|0)+192>>2]=i;else c[(c[g+16>>2]|0)+164>>2]=i;f=f+1|0;g=i}j=b+16|0;f=0;g=0;while(1){if((f|0)>(c[l>>2]|0))break;i=$y(b,cR(f)|0,1)|0;zz(i,134365,304,1)|0;o=i+16|0;c[(c[o>>2]|0)+176>>2]=0;m=tH((c[k>>2]<<2)+4|0)|0;n=c[o>>2]|0;c[n+172>>2]=m;c[n+184>>2]=0;n=tH((c[k>>2]<<2)+4|0)|0;c[(c[o>>2]|0)+180>>2]=n;if(!g)c[(c[j>>2]|0)+192>>2]=i;else c[(c[g+16>>2]|0)+164>>2]=i;f=f+1|0;g=i}f=c[a+84>>2]|0;while(1){g=c[f>>2]|0;if(!g)break;o=g+84|0;n=$y(d,cR(e[o>>1]|0)|0,0)|0;o=$y(d,cR((e[g+80>>1]|0)+(e[o>>1]|0)|0)|0,0)|0;eR(d,n,o,~~+h[g+64>>3]);o=g+86|0;n=$y(b,cR(e[o>>1]|0)|0,0)|0;o=$y(b,cR((e[g+82>>1]|0)+(e[o>>1]|0)|0)|0,0)|0;eR(b,n,o,~~+h[g+72>>3]);f=f+4|0}fR(d);fR(b);return}function eR(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0;h=Qx(a,d,f,0,0)|0;if(!h){i=Qx(a,d,f,0,1)|0;zz(i,134378,176,1)|0;b[(c[i+16>>2]|0)+170>>1]=g;d=d+16|0;a=c[d>>2]|0;h=c[a+180>>2]|0;if(!h)a=uH((c[a+184>>2]<<2)+8|0)|0;else a=wH(h,(c[a+184>>2]<<2)+8|0)|0;g=c[d>>2]|0;c[g+180>>2]=a;g=g+184|0;h=c[g>>2]|0;c[g>>2]=h+1;c[a+(h<<2)>>2]=i;d=c[d>>2]|0;c[(c[d+180>>2]|0)+(c[d+184>>2]<<2)>>2]=0;d=f+16|0;a=c[d>>2]|0;h=c[a+172>>2]|0;if(!h)a=uH((c[a+176>>2]<<2)+8|0)|0;else a=wH(h,(c[a+176>>2]<<2)+8|0)|0;g=c[d>>2]|0;c[g+172>>2]=a;g=g+176|0;f=c[g>>2]|0;c[g>>2]=f+1;c[a+(f<<2)>>2]=i;i=c[d>>2]|0;c[(c[i+172>>2]|0)+(c[i+176>>2]<<2)>>2]=0}else{i=(c[h+16>>2]|0)+170|0;f=e[i>>1]|0;b[i>>1]=(f|0)>(g|0)?f:g}return}function fR(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[(c[a+16>>2]|0)+192>>2]|0;while(1){f=d+16|0;h=c[(c[f>>2]|0)+164>>2]|0;if(!h)break;if(Qx(a,d,h,0,0)|0){d=h;continue}g=Qx(a,d,h,0,1)|0;zz(g,134378,176,1)|0;b[(c[g+16>>2]|0)+170>>1]=0;d=c[f>>2]|0;e=c[d+180>>2]|0;if(!e)d=uH((c[d+184>>2]<<2)+8|0)|0;else d=wH(e,(c[d+184>>2]<<2)+8|0)|0;i=c[f>>2]|0;c[i+180>>2]=d;i=i+184|0;e=c[i>>2]|0;c[i>>2]=e+1;c[d+(e<<2)>>2]=g;f=c[f>>2]|0;c[(c[f+180>>2]|0)+(c[f+184>>2]<<2)>>2]=0;f=h+16|0;d=c[f>>2]|0;e=c[d+172>>2]|0;if(!e)d=uH((c[d+176>>2]<<2)+8|0)|0;else d=wH(e,(c[d+176>>2]<<2)+8|0)|0;e=c[f>>2]|0;c[e+172>>2]=d;e=e+176|0;i=c[e>>2]|0;c[e>>2]=i+1;c[d+(i<<2)>>2]=g;d=c[f>>2]|0;c[(c[d+172>>2]|0)+(c[d+176>>2]<<2)>>2]=0;d=h}return}function gR(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=a+92|0;e=0;f=0;b=c[(c[(c[b+16>>2]|0)+192>>2]|0)+16>>2]|0;while(1){b=c[b+164>>2]|0;if(!b)break;b=c[b+16>>2]|0;h=b+232|0;c[(c[g>>2]|0)+(f<<2)>>2]=(c[h>>2]|0)-e;e=c[h>>2]|0;f=f+1|0}a=a+96|0;e=0;f=0;b=c[(c[(c[d+16>>2]|0)+192>>2]|0)+16>>2]|0;while(1){b=c[b+164>>2]|0;if(!b)break;b=c[b+16>>2]|0;h=b+232|0;c[(c[a>>2]|0)+(f<<2)>>2]=(c[h>>2]|0)-e;e=c[h>>2]|0;f=f+1|0}return}function hR(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h+4|0;d=h;c[d>>2]=c[4621];e=c[b+100>>2]|0;if((e|0)!=1?(f=b+104|0,(c[f>>2]|0)!=1):0){c[b+92>>2]=tH((e<<2)+4|0)|0;c[b+96>>2]=tH((c[f>>2]<<2)+4|0)|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;a[g+2>>0]=a[d+2>>0]|0;a[g+3>>0]=a[d+3>>0]|0;f=Wx(134391,g,0)|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;a[g+2>>0]=a[d+2>>0]|0;a[g+3>>0]=a[d+3>>0]|0;g=Wx(134396,g,0)|0;zz(f,134401,280,1)|0;zz(g,134401,280,1)|0;dR(b,f,g);eI(f,2,2147483647)|0;eI(g,2,2147483647)|0;gR(b,f,g);iR(f,g)}else bR(b);l=h;return}function iR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=(c[b+16>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;f=d+16|0;d=c[f>>2]|0;e=c[d+172>>2]|0;if(e){C_(e);d=c[f>>2]|0}e=c[d+180>>2]|0;if(e){C_(e);d=c[f>>2]|0}d=d+164|0}_x(a)|0;_x(b)|0;return}function jR(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0;p=l;l=l+272|0;n=p+104|0;o=p+136|0;j=p+72|0;k=p;g=p+144|0;c[k+48>>2]=b;switch(oz(b)|0){case 0:{e=c[b+60>>2]|0;break}case 1:{e=dz(b)|0;break}case 2:{e=dz(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;break}default:{}}i=k+52|0;c[i>>2]=e;m=c[e+60>>2]|0;h[k+32>>3]=+h[d+16>>3];c[k+16>>2]=c[d+4>>2];c[k+20>>2]=c[d+8>>2];c[k+40>>2]=0;f=tT(c[d>>2]|0,o,k)|0;if(!f){Sw(n,128,g);a[d+82>>0]=0;e=m1(kR(b,n)|0)|0;c[d>>2]=e;if((c[d+12>>2]|0)==1)e=QM(e)|0;else e=NM(e,c[i>>2]|0)|0;C_(c[d>>2]|0);c[d>>2]=e;hH(c[(c[m+16>>2]|0)+144>>2]|0,d);Ww(n);e=c[o>>2]|0}else{e=f+4|0;if((a[e>>0]|0)==1){if((c[(c[f>>2]|0)+24>>2]|0)==0?lR(b)|0:0){i=m1(lR(b)|0)|0;c[(c[f>>2]|0)+24>>2]=i}m=mR(m,c[f>>2]|0,0,k)|0;c[o>>2]=c[o>>2]|m;m=c[f>>2]|0;r=+h[m+64>>3]*.5;q=+h[m+72>>3]*.5;nR(j,-r,-q,r,q);m=c[f>>2]|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[n+16>>2]=c[j+16>>2];c[n+20>>2]=c[j+20>>2];c[n+24>>2]=c[j+24>>2];c[n+28>>2]=c[j+28>>2];oR(m,n,15)}else{pR(c[(c[m+16>>2]|0)+144>>2]|0,c[f>>2]|0,k);n=c[f>>2]|0;q=+h[n+24>>3]*.5;r=+h[n+32>>3]*.5;nR(j,-q,-r,q,r);n=(c[f>>2]|0)+8|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[n+16>>2]=c[j+16>>2];c[n+20>>2]=c[j+20>>2];c[n+24>>2]=c[j+24>>2];c[n+28>>2]=c[j+28>>2]}h[d+24>>3]=+h[j+16>>3]-+h[j>>3];h[d+32>>3]=+h[j+24>>3]-+h[j+8>>3];c[d+72>>2]=f;if((a[e>>0]|0)==1){C_(c[d>>2]|0);c[d>>2]=m1(138529)|0}e=c[o>>2]|0}l=p;return e|0}function kR(b,d){b=b|0;d=d|0;var e=0;a:do switch(oz(b)|0){case 0:{Vw(d,qy(b)|0)|0;break}case 1:{Vw(d,qy(b)|0)|0;break}case 2:{Vw(d,qy(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)|0;e=b+-48|0;Vw(d,qy(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)|0)|0;if(!(dy(dz(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)|0)|0)){Vw(d,138665)|0;break a}else{Vw(d,134656)|0;break a}}default:{}}while(0);e=d+4|0;b=c[e>>2]|0;if(b>>>0>=(c[d+8>>2]|0)>>>0){Tw(d,1)|0;b=c[e>>2]|0}a[b>>0]=0;d=c[d>>2]|0;c[e>>2]=d;return d|0}function lR(b){b=b|0;var c=0,d=0;c=wx(b,134647)|0;if(!((c|0)!=0?(a[c>>0]|0)!=0:0))d=3;do if((d|0)==3){c=wx(b,137741)|0;if(c|0?a[c>>0]|0:0)break;c=0}while(0);return c|0}function mR(f,g,i,j){f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+16|0;u=w+8|0;t=w;v=g+108|0;k=c[v>>2]|0;if(k|0)HQ(j,k,183496);c[g+80>>2]=i;k=tR(f,g,j)|0;r=g+36|0;f=b[r>>1]|0;if(!(f&128))a[g+32>>0]=2;i=g+33|0;if(!(f&32))a[i>>0]=1;hR(g);n=c[g+104>>2]|0;p=a[g+32>>0]|0;f=O(n+1|0,p)|0;o=d[i>>0]<<1;q=c[g+100>>2]|0;p=O(q+1|0,p)|0;m=g+96|0;f=o+f|0;i=0;while(1){if((i|0)>=(n|0))break;f=(c[(c[m>>2]|0)+(i<<2)>>2]|0)+f|0;i=i+1|0}n=g+92|0;i=p+o|0;m=0;while(1){if((m|0)>=(q|0))break;i=(c[(c[n>>2]|0)+(m<<2)>>2]|0)+i|0;m=m+1|0}n=g+38|0;do if(b[r>>1]&1){r=b[n>>1]|0;m=r&65535;if(r<<16>>16?(s=b[g+40>>1]|0,s<<16>>16):0){if(!((f|0)>(m|0)|(i|0)>(s&65535|0))){i=0;f=0;break}Ow(0,134447,t)|0;k=1;i=0;f=0;break}Ow(0,134481,u)|0;k=1}while(0);u=e[n>>1]|0;h[g+64>>3]=+(((f|0)>(u|0)?f:u)|0);u=e[g+40>>1]|0;h[g+72>>3]=+(((i|0)>(u|0)?i:u)|0);if(c[v>>2]|0)PQ(j,183496);l=w;return k|0}function nR(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h[a+16>>3]=d;h[a+24>>3]=e;return}function oR(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0;I=l;l=l+64|0;G=I+32|0;H=I;E=c[e+84>>2]|0;k=c[e+80>>2]|0;if((k|0?(i=c[k+24>>2]|0,i|0):0)?(j=e+24|0,(c[j>>2]|0)==0):0)c[j>>2]=m1(i)|0;F=e+48|0;i=f+16|0;n=+h[i>>3];m=+h[f>>3];k=~~(n-m-+(~~+h[e+64>>3]|0));if((k|0)<=-1)qa(134414,134260,1761,134424);o=f+24|0;y=+h[o>>3];p=f+8|0;q=+h[p>>3];r=+(~~+h[e+72>>3]|0);s=~~(y-q-r);if((s|0)<=-1)qa(134437,134260,1764,134424);t=b[e+36>>1]|0;j=t&65535;a:do if(j&1){b:do if((k|0)>0)switch(j&6){case 4:{h[i>>3]=m+r;break b}case 2:{J=+(k|0);h[i>>3]=n+J;m=m+J;h[f>>3]=m;break b}default:{J=+(k>>>1|0);m=m+J;h[f>>3]=m;h[i>>3]=n-J;break b}}while(0);if((s|0)>0)switch(t&24){case 16:{y=q+r;h[o>>3]=y;s=0;i=0;break a}case 8:{J=+(s|0);y=y+J;h[o>>3]=y;h[p>>3]=q+J;s=0;i=0;break a}default:{J=+(s>>>1|0);h[p>>3]=q+J;y=y-J;h[o>>3]=y;s=0;i=0;break a}}else{s=0;i=0}}else i=k;while(0);n=+(d[e+33>>0]|0);C=e+32|0;u=a[C>>0]|0;q=+(u<<24>>24);D=e+104|0;k=c[D>>2]|0;t=(i|0)/(k|0)|0;o=i-(O(t,k)|0)|0;o=~~(((o|0)>-1?.5:-.5)+ +(o|0));B=e+96|0;p=u<<24>>24;i=~~(m+n+q);j=0;while(1){if((j|0)>(k|0))break;A=(c[B>>2]|0)+(j<<2)|0;k=c[A>>2]|0;c[A>>2]=i;i=i+t+((j|0)<(o|0)&1)+k+p|0;j=j+1|0;k=c[D>>2]|0}A=e+100|0;k=c[A>>2]|0;t=(s|0)/(k|0)|0;p=s-(O(t,k)|0)|0;p=~~(((p|0)>-1?.5:-.5)+ +(p|0));z=e+92|0;o=u<<24>>24;i=~~(y-n-q);j=0;while(1){if((j|0)>(k|0))break;x=(c[z>>2]|0)+(j<<2)|0;k=c[x>>2]|0;c[x>>2]=i;i=i-t+(((j|0)<(p|0))<<31>>31)-k-o|0;j=j+1|0;k=c[A>>2]|0}u=(g|0)==0;v=H+16|0;w=H+24|0;x=H+8|0;i=E;while(1){o=c[i>>2]|0;if(!o)break;k=b[o+84>>1]|0;if(u){j=0;p=b[o+80>>1]|0;s=b[o+86>>1]|0;t=b[o+82>>1]|0}else{j=k<<16>>16==0?8:0;s=b[o+86>>1]|0;j=s<<16>>16==0?j|4:j;p=b[o+80>>1]|0;t=b[o+82>>1]|0;j=(((p&65535)+(k&65535)|0)==(c[D>>2]|0)?j|2:j)|((t&65535)+(s&65535)|0)==(c[A>>2]|0)}K=c[B>>2]|0;k=k&65535;h[H>>3]=+(c[K+(k<<2)>>2]|0);E=a[C>>0]|0;h[v>>3]=+((c[K+((p&65535)+k<<2)>>2]|0)-E|0);p=c[z>>2]|0;h[w>>3]=+(c[p+((s&65535)<<2)>>2]|0);h[x>>3]=+((c[p+((t&65535)+(s&65535)<<2)>>2]|0)+E|0);c[G>>2]=c[H>>2];c[G+4>>2]=c[H+4>>2];c[G+8>>2]=c[H+8>>2];c[G+12>>2]=c[H+12>>2];c[G+16>>2]=c[H+16>>2];c[G+20>>2]=c[H+20>>2];c[G+24>>2]=c[H+24>>2];c[G+28>>2]=c[H+28>>2];qR(o,G,j&g);i=i+4|0}a[e+35>>0]=g;c[F>>2]=c[f>>2];c[F+4>>2]=c[f+4>>2];c[F+8>>2]=c[f+8>>2];c[F+12>>2]=c[f+12>>2];c[F+16>>2]=c[f+16>>2];c[F+20>>2]=c[f+20>>2];c[F+24>>2]=c[f+24>>2];c[F+28>>2]=c[f+28>>2];l=I;return}function pR(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0,Q=0.0,R=0.0;O=l;l=l+112|0;H=O+48|0;I=O+16|0;J=O;c[I>>2]=0;c[I+4>>2]=0;c[I+8>>2]=0;c[I+12>>2]=0;c[I+16>>2]=0;c[I+20>>2]=0;c[I+24>>2]=0;c[I+28>>2]=0;K=e+4|0;L=f+16|0;M=f+32|0;N=I+16|0;r=b[K>>1]|0;n=r<<16>>16;g=0;j=-1.0;m=0;while(1){if((m|0)>=(n|0)){g=1;break}i=c[e>>2]|0;if((b[i+(m*24|0)+4>>1]|0)>1){g=0;break}i=c[(c[i+(m*24|0)>>2]|0)+4>>2]|0;if(!i){k=+h[M>>3];h[N>>3]=k;i=L}else{if(c[i+24>>2]&127|0){g=0;break}k=+h[(+h[i+16>>3]>0.0?i:L)+16>>3];h[N>>3]=k;i=(c[i>>2]|0)==0?L:i}i=c[i>>2]|0;c[I>>2]=i;if(!(j==-1.0)){if(k!=j){g=0;break}}else j=k;if(g){if(a$(i,g)|0){g=0;break}}else g=i;m=m+1|0}a[e+6>>0]=g;E=f+48|0;F=f+20|0;G=I+4|0;w=f+40|0;x=I+24|0;y=d+144|0;z=H+4|0;v=J+8|0;A=H+16|0;B=H+24|0;C=H+8|0;D=H+12|0;f=(g|0)==0;j=0.0;s=0.0;t=0.0;u=0.0;n=0;g=r;while(1){if((n|0)>=(g<<16>>16|0))break;k=0.0;q=0.0;m=0;p=0.0;j=0.0;i=c[e>>2]|0;while(1){if((m|0)>=(b[i+(n*24|0)+4>>1]|0))break;c[H>>2]=oH(c[(c[i+(n*24|0)>>2]|0)+(m*56|0)>>2]|0,c[E>>2]|0)|0;i=(c[e>>2]|0)+(n*24|0)|0;g=c[(c[i>>2]|0)+(m*56|0)+4>>2]|0;if(!g){h[N>>3]=+h[M>>3];c[I>>2]=c[L>>2];c[G>>2]=c[F>>2];c[x>>2]=c[x>>2]&-128|c[w>>2]&127}else{g=c[g+24>>2]&127;if(!g)g=c[w>>2]&127;c[x>>2]=c[x>>2]&-128|g;r=c[(c[i>>2]|0)+(m*56|0)+4>>2]|0;h[N>>3]=+h[(+h[r+16>>3]>0.0?r:L)+16>>3];c[I>>2]=c[((c[r>>2]|0)==0?L:r)>>2];c[G>>2]=c[((c[r+4>>2]|0)==0?L:r)+4>>2]}i=c[y>>2]|0;c[z>>2]=nb[c[i>>2]&63](i,I,1)|0;vL(J,d,H);Q=+h[J>>3];o=+h[v>>3];C_(c[(c[(c[e>>2]|0)+(n*24|0)>>2]|0)+(m*56|0)>>2]|0);i=c[e>>2]|0;r=c[i+(n*24|0)>>2]|0;c[r+(m*56|0)>>2]=c[H>>2];h[r+(m*56|0)+32>>3]=Q;h[r+(m*56|0)+16>>3]=+h[A>>3];h[r+(m*56|0)+24>>3]=+h[B>>3];c[r+(m*56|0)+4>>2]=c[z>>2];c[r+(m*56|0)+8>>2]=c[C>>2];c[r+(m*56|0)+12>>2]=c[D>>2];P=+h[N>>3];R=+h[B>>3];k=R>k?R:k;q=Q+q;m=m+1|0;p=P>p?P:p;j=o>j?o:j}h[i+(n*24|0)+8>>3]=q;g=(n|0)==0;do if(f)if(g){o=p;k=p-k;g=i;break}else{o=p;k=t-u+p-k;g=i+(n*24|0)|0;break}else{o=j;k=g?p:j;g=i+(n*24|0)|0}while(0);h[g+16>>3]=k;s=q>s?q:s;t=o+t;u=+h[i+(n*24|0)+16>>3]+u;n=n+1|0;g=b[K>>1]|0}h[e+24>>3]=s;h[e+32>>3]=g<<16>>16==1?j:t;l=O;return}function qR(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;y=l;l=l+64|0;v=y+32|0;x=y;j=e+24|0;if((c[j>>2]|0)==0?(i=c[(c[e+96>>2]|0)+24>>2]|0,i|0):0)c[j>>2]=m1(i)|0;t=e+36|0;w=b[t>>1]|0;i=w&65535;a:do if(i&1){k=+h[e+64>>3];q=+h[e+72>>3];j=f+16|0;m=+h[j>>3];o=+h[f>>3];n=m-o-k;b:do if(n>0.0)switch(i&6){case 4:{m=o+k;h[j>>3]=m;k=o;break b}case 2:{m=n+m;h[j>>3]=m;k=o+n;h[f>>3]=k;break b}default:{p=n*.5;k=p+o;h[f>>3]=k;m=m-p;h[j>>3]=m;break b}}else k=o;while(0);i=f+24|0;p=+h[i>>3];j=f+8|0;n=+h[j>>3];o=p-n-q;if(o>0.0)switch(w&24){case 16:{o=n+q;h[i>>3]=o;break a}case 8:{q=o+p;h[i>>3]=q;n=n+o;h[j>>3]=n;o=q;break a}default:{o=o*.5;n=o+n;h[j>>3]=n;o=p-o;h[i>>3]=o;break a}}else o=p}else{k=+h[f>>3];n=+h[f+8>>3];m=+h[f+16>>3];o=+h[f+24>>3]}while(0);s=e+48|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];c[s+16>>2]=c[f+16>>2];c[s+20>>2]=c[f+20>>2];c[s+24>>2]=c[f+24>>2];c[s+28>>2]=c[f+28>>2];a[e+35>>0]=g;A=+(d[e+33>>0]|0);z=+(d[e+34>>0]|0);p=k+A+z;h[x>>3]=p;q=n+A+z;s=x+8|0;h[s>>3]=q;n=m-A-z;f=x+16|0;h[f>>3]=n;o=o-A-z;r=x+24|0;h[r>>3]=o;j=e+88|0;switch(a[e+92>>0]|0){case 1:{w=c[j>>2]|0;c[v>>2]=c[x>>2];c[v+4>>2]=c[x+4>>2];c[v+8>>2]=c[x+8>>2];c[v+12>>2]=c[x+12>>2];c[v+16>>2]=c[x+16>>2];c[v+20>>2]=c[x+20>>2];c[v+24>>2]=c[x+24>>2];c[v+28>>2]=c[x+28>>2];oR(w,v,g);break}case 3:{i=c[j>>2]|0;k=+h[i+24>>3];m=n-p-+h[i+16>>3];c:do if(m>0.0)switch(w&6){case 4:{h[f>>3]=n-m;break c}case 2:{h[x>>3]=m+p;break c}default:break c}while(0);k=o-q-k;d:do if(k>0.0)switch(w&24){case 16:{h[r>>3]=o-k;break d}case 8:{h[s>>3]=k+q;break d}default:break d}while(0);c[v>>2]=c[x>>2];c[v+4>>2]=c[x+4>>2];c[v+8>>2]=c[x+8>>2];c[v+12>>2]=c[x+12>>2];c[v+16>>2]=c[x+16>>2];c[v+20>>2]=c[x+20>>2];c[v+24>>2]=c[x+24>>2];c[v+28>>2]=c[x+28>>2];rR(i,v);break}default:{i=c[j>>2]|0;k=+h[i+32>>3];m=n-p-+h[i+24>>3];e:do if(m>0.0?(u=w&6,u<<16>>16!=6):0)switch(u&7){case 4:{h[f>>3]=n-m;break e}case 2:{h[x>>3]=m+p;break e}default:{A=m*.5;h[x>>3]=A+p;h[f>>3]=n-A;break e}}while(0);k=o-q-k;f:do if(k>0.0)switch(w&24){case 16:{h[r>>3]=o-k;break f}case 8:{h[s>>3]=k+q;break f}default:{A=k*.5;h[s>>3]=A+q;h[r>>3]=o-A;break f}}while(0);w=i+8|0;c[w>>2]=c[x>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];c[w+16>>2]=c[x+16>>2];c[w+20>>2]=c[x+20>>2];c[w+24>>2]=c[x+24>>2];c[w+28>>2]=c[x+28>>2];x=b[t>>1]&768;sR(c[j>>2]|0,(x&1023)==512?108:(x&1023)==256?114:110)}}l=y;return}function rR(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2];return}function sR(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;g=b[d+4>>1]|0;f=0;while(1){if((f|0)>=(g|0))break;h=(c[d>>2]|0)+(f*24|0)+6|0;if(!(a[h>>0]|0))a[h>>0]=e;f=f+1|0}return}function tR(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;l=f+84|0;t=c[l>>2]|0;u=uI()|0;v=xR()|0;i=0;h=0;k=zw(t)|0;while(1){if(!k)break;j=zw(c[k+8>>2]|0)|0;while(1){if(!j)break;j=c[j>>2]|0;i=i+1|0}h=h+1|0;if(a[k+12>>0]|0)BR(v,h);k=c[k>>2]|0}h=tH((i<<2)+4|0)|0;c[l>>2]=h;i=0;j=0;k=0;q=0;r=zw(t)|0;while(1){if(!r)break;s=q&65535;p=0;o=zw(c[r+8>>2]|0)|0;while(1){if(!o)break;n=c[o+8>>2]|0;c[h>>2]=n;k=uR(d,n,f,g)|0|k;l=vR(u,q,p,n)|0;b[n+86>>1]=s;b[n+84>>1]=l;l=l+(e[n+80>>1]|0)|0;m=q+(e[n+82>>1]|0)|0;if(CR(v,m)|0){p=n+100|0;a[p>>0]=a[p>>0]|2}p=l;h=h+4|0;o=c[o>>2]|0;i=(l|0)>(i|0)?l:i;j=(m|0)>(j|0)?m:j}q=q+1|0;r=c[r>>2]|0}c[f+100>>2]=j;c[f+104>>2]=i;xw(t)|0;xw(v)|0;xI(u);return k|0}function uR(f,g,i,j){f=f|0;g=g|0;i=i|0;j=j|0;var k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+16|0;t=u+8|0;s=u;c[g+96>>2]=i;q=g+36|0;o=b[q>>1]|0;if(!(o&64)){if(!(b[i+36>>1]&64))n=2;else n=a[i+34>>0]|0;a[g+34>>0]=n}if(!(o&32)){n=a[i+88>>0]|0;if(n<<24>>24<=-1)if(!(b[i+36>>1]&32))n=1;else n=a[i+33>>0]|0;a[g+33>>0]=n}n=g+88|0;p=g+92|0;switch(a[p>>0]|0){case 1:{o=mR(f,c[n>>2]|0,g,j)|0;i=c[n>>2]|0;n=o;o=i+64|0;i=i+72|0;break}case 3:{o=wR(c[n>>2]|0,j)|0;i=c[n>>2]|0;n=o;o=i+16|0;i=i+24|0;break}default:{pR(c[(c[f+16>>2]|0)+144>>2]|0,c[n>>2]|0,j);i=c[n>>2]|0;n=0;o=i+24|0;i=i+32|0}}k=+((d[g+33>>0]|0)+(d[g+34>>0]|0)<<1|0);m=+h[o>>3]+k;k=+h[i>>3]+k;i=g+38|0;do if(b[q>>1]&1){o=b[i>>1]|0;if(o<<16>>16?(r=b[g+40>>1]|0,r<<16>>16):0){if(!(m>+(o&65535)|k>+(r&65535))){m=0.0;k=0.0;break}if((a[p>>0]|0)==3){m=0.0;k=0.0;break}Ow(0,134532,s)|0;n=1;m=0.0;k=0.0;break}Ow(0,134565,t)|0;n=1}while(0);v=+(e[i>>1]|0);h[g+64>>3]=m>v?m:v;m=+(e[g+40>>1]|0);h[g+72>>3]=k>m?k:m;l=u;return n|0}function vR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var f=0,g=0,h=0,i=0,j=0;j=d+80|0;i=(e[j>>1]|0)+-1|0;h=0;a:while(1){f=c;while(1){if(h)break a;g=i+f|0;while(1){if((g|0)<(f|0)){c=f;h=1;continue a}if(CI(a,g,b)|0)break;g=g+-1|0}f=g+1|0}}h=d+82|0;f=c;while(1){if((f|0)<(c+(e[j>>1]|0)|0))g=b;else break;while(1){if((g|0)>=((e[h>>1]|0)+b|0))break;AI(a,f,g);g=g+1|0}f=f+1|0}return c|0}function wR(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;j=m;i=m+8|0;d=d+52|0;g=b+32|0;BC(i,c[d>>2]|0,c[g>>2]|0);k=c[i>>2]|0;i=c[i+4>>2]|0;if((i&k|0)==-1){c[j>>2]=c[g>>2];Ow(1,134615,j)|0;d=1;f=0.0;e=0.0}else{a[(c[(c[d>>2]|0)+16>>2]|0)+114>>0]=1;d=0;f=+(i|0);e=+(k|0)}c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;h[b+16>>3]=e;h[b+24>>3]=f;l=m;return d|0}function xR(){return Bw(55820,c[4555]|0)|0}function yR(a,b,d){a=a|0;b=b|0;d=d|0;d=tH(12)|0;c[d>>2]=c[b>>2];return d|0}function zR(a,b,c){a=a|0;b=b|0;c=c|0;C_(b);return}function AR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b>>2]|0;e=c[d>>2]|0;return ((b|0)>(e|0)?1:((b|0)<(e|0))<<31>>31)|0}function BR(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;nb[c[a>>2]&63](a,e,1)|0;l=d;return}function CR(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;b=(nb[c[a>>2]&63](a,e,512)|0)!=0&1;l=d;return b|0}function DR(a){a=a|0;var b=0;if(!(c[46605]|0)){b=tH((a<<2)+4|0)|0;c[46605]=b;c[b>>2]=186424;c[46616]=a}c[46617]=0;return}function ER(){C_(c[46605]|0);c[46605]=0;c[46617]=0;return}function FR(){c[46617]=0;return}function GR(){var a=0,b=0,d=0;b=c[46617]|0;d=c[46605]|0;a=1;while(1){if((a|0)>(b|0)){a=5;break}if((c[(c[d+(a<<2)>>2]|0)+4>>2]|0)==(a|0))a=a+1|0;else{a=4;break}}if((a|0)==4)qa(135312,134659,59,134665);else if((a|0)==5)return}function HR(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=c[46605]|0;g=c[f+(a<<2)>>2]|0;h=c[g>>2]|0;while(1){b=(a|0)/2|0;d=c[f+(b<<2)>>2]|0;e=f+(a<<2)|0;if((c[d>>2]|0)>=(h|0))break;c[e>>2]=d;c[d+4>>2]=a;a=b}c[e>>2]=g;c[g+4>>2]=a;return}function IR(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=c[46617]|0;if((b|0)==(c[46616]|0)){Ow(1,134673,d)|0;a=1}else{b=b+1|0;c[46617]=b;c[(c[46605]|0)+(b<<2)>>2]=a;HR(b);GR();a=0}l=d;return a|0}function JR(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=c[46605]|0;f=c[e+(a<<2)>>2]|0;g=c[f>>2]|0;h=c[46617]|0;i=(h|0)/2|0;while(1){if((a|0)>(i|0))break;d=a<<1;b=c[e+(d<<2)>>2]|0;if((d|0)<(h|0)){l=d|1;j=c[e+(l<<2)>>2]|0;k=(c[b>>2]|0)<(c[j>>2]|0);d=k?l:d;b=k?j:b}if((g|0)>=(c[b>>2]|0))break;c[e+(a<<2)>>2]=b;c[b+4>>2]=a;a=d}c[e+(a<<2)>>2]=f;c[f+4>>2]=a;return}function KR(){var a=0,b=0,d=0,e=0;b=c[46617]|0;if(!b)a=0;else{e=c[46605]|0;d=e+4|0;a=c[d>>2]|0;c[d>>2]=c[e+(b<<2)>>2];b=b+-1|0;c[46617]=b;if(b|0)JR(1);GR()}return a|0}function LR(a,b){a=a|0;b=b|0;c[a>>2]=b;HR(c[a+4>>2]|0);GR();return}function MR(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=b+16|0;j=c[m>>2]|0;j=(a[j+((c[e+12>>2]|0)*40|0)+36>>0]|0)!=(a[j+((c[e+16>>2]|0)*40|0)+36>>0]|0);k=~~((+h[d+64>>3]+-3.0-+h[d+48>>3])*.5);l=~~((+h[d+56>>3]+-3.0-+h[d+40>>3])*.5);g=(k|0)<(l|0)?k:l;n=d+4|0;f=0;while(1){b=c[n>>2]|0;if((f|0)>=(b|0)){g=f;break}i=c[d+8+(f<<2)>>2]|0;o=c[m>>2]|0;if((a[o+((c[i+12>>2]|0)*40|0)+36>>0]|0)==(a[o+((c[i+16>>2]|0)*40|0)+36>>0]|0)){g=f;break}NR(i,g);f=f+1|0}while(1){if((g|0)>=(b|0))break;f=c[d+8+(g<<2)>>2]|0;if(j|(f|0)==(e|0)){NR(f,a[(c[m>>2]|0)+((c[f+12>>2]|0)*40|0)+36>>0]|0?k:l);b=c[n>>2]|0}g=g+1|0}return}function NR(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+8|0;e=c[d>>2]|0;c[d>>2]=e+1;if((e|0)>=(b|0)){c[d>>2]=0;h[a>>3]=+h[a>>3]+16384.0}return}function OR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0.0;x=l;l=l+112|0;u=x+64|0;t=x+96|0;m=x+32|0;v=x;w=tH(28)|0;b=$x(a)|0;s=w+4|0;c[s>>2]=b;b=tH(b*72|0)|0;r=w+12|0;c[r>>2]=b;e=v+8|0;h[e>>3]=1797693134862315708145274.0e284;h[v>>3]=1797693134862315708145274.0e284;f=v+24|0;h[f>>3]=-1797693134862315708145274.0e284;g=v+16|0;h[g>>3]=-1797693134862315708145274.0e284;i=m+16|0;j=m+8|0;k=m+24|0;d=Ry(a)|0;n=1797693134862315708145274.0e284;o=1797693134862315708145274.0e284;p=-1797693134862315708145274.0e284;q=-1797693134862315708145274.0e284;while(1){if(!d)break;C=d+16|0;D=c[C>>2]|0;z=(+h[D+96>>3]+ +h[D+88>>3])*.5;z=z<1.0?1.0:z;y=+h[D+80>>3]*.5;y=y<1.0?1.0:y;E=+h[D+16>>3];B=E-z;h[m>>3]=B;z=E+z;h[i>>3]=z;E=+h[D+24>>3];A=E-y;h[j>>3]=A;y=E+y;h[k>>3]=y;B=+h[(n>3];h[v>>3]=B;A=+h[(o>3];h[e>>3]=A;z=+h[(p>z?v:m)+16>>3];h[g>>3]=z;y=+h[(q>y?v:m)+24>>3];h[f>>3]=y;D=b+40|0;c[D>>2]=c[m>>2];c[D+4>>2]=c[m+4>>2];c[D+8>>2]=c[m+8>>2];c[D+12>>2]=c[m+12>>2];c[D+16>>2]=c[m+16>>2];c[D+20>>2]=c[m+20>>2];c[D+24>>2]=c[m+24>>2];c[D+28>>2]=c[m+28>>2];c[b>>2]=c[b>>2]|1;c[(c[C>>2]|0)+112>>2]=b;b=b+72|0;d=Sy(a,d)|0;n=B;o=A;p=z;q=y}h[v>>3]=n+-36.0;h[e>>3]=o+-36.0;h[g>>3]=p+36.0;h[f>>3]=q+36.0;D=c[r>>2]|0;f=c[s>>2]|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];f=YR(D,f,t,u)|0;if(c[46553]&1|0){r=c[r>>2]|0;C=c[s>>2]|0;D=c[t>>2]|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];PR(r,C,u,f,D)}e=w+8|0;c[e>>2]=tH((c[t>>2]|0)*72|0)|0;c[w>>2]=c[t>>2];d=c[t>>2]|0;b=0;while(1){if((b|0)>=(d|0))break;D=(c[e>>2]|0)+(b*72|0)+40|0;C=f+(b<<5)|0;c[D>>2]=c[C>>2];c[D+4>>2]=c[C+4>>2];c[D+8>>2]=c[C+8>>2];c[D+12>>2]=c[C+12>>2];c[D+16>>2]=c[C+16>>2];c[D+20>>2]=c[C+20>>2];c[D+24>>2]=c[C+24>>2];c[D+28>>2]=c[C+28>>2];b=b+1|0}C_(f);c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];c[w+16>>2]=QR(w,u)|0;l=x;return w|0}function PR(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0;q=l;l=l+128|0;p=q+96|0;o=q+64|0;j=q+32|0;r=q+16|0;s=q;m=+h[d+16>>3];n=+h[d>>3];k=+h[d+24>>3];g=+h[d+8>>3];i=c[15686]|0;C1(134688,i)|0;c[s>>2]=10;c[s+4>>2]=10;c[s+8>>2]=~~(m+10.0-n);c[s+12>>2]=~~(k+10.0-g);f1(i,135118,s)|0;h[r>>3]=10.0-n;h[r+8>>3]=10.0-g;f1(i,135166,r)|0;C1(135183,i)|0;d=0;while(1){if((d|0)>=(b|0))break;v=+h[a+(d*72|0)+48>>3];u=+h[a+(d*72|0)+56>>3];t=+h[a+(d*72|0)+64>>3];h[j>>3]=+h[a+(d*72|0)+40>>3];h[j+8>>3]=v;h[j+16>>3]=u;h[j+24>>3]=t;f1(i,135202,j)|0;d=d+1|0}C1(135220,i)|0;d=0;while(1){if((d|0)>=(f|0))break;t=+h[e+(d<<5)+8>>3];u=+h[e+(d<<5)+16>>3];v=+h[e+(d<<5)+24>>3];h[o>>3]=+h[e+(d<<5)>>3];h[o+8>>3]=t;h[o+16>>3]=u;h[o+24>>3]=v;f1(i,135239,o)|0;d=d+1|0}C1(135257,i)|0;h[p>>3]=n;h[p+8>>3]=g;h[p+16>>3]=m;h[p+24>>3]=k;f1(i,135239,p)|0;C1(135004,i)|0;l=q;return}function QR(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;A=l;l=l+32|0;t=A+16|0;k=A;w=c[a>>2]|0;y=mO(w<<2|2)|0;z=Bw(55856,c[4555]|0)|0;v=Bw(55892,c[4555]|0)|0;w=tH(w<<7)|0;f=tH(c[a>>2]<<4)|0;x=a+8|0;g=b+16|0;i=k+8|0;j=b+24|0;m=b+8|0;d=0;while(1){if((d|0)>=(c[a>>2]|0))break;n=c[x>>2]|0;o=n+(d*72|0)|0;c[n+(d*72|0)+32>>2]=4;p=n+(d*72|0)+36|0;c[p>>2]=f+(d<<2<<2);q=n+(d*72|0)+40|0;e=+h[n+(d*72|0)+56>>3];if(e<+h[g>>3]){h[k>>3]=e;h[i>>3]=+h[n+(d*72|0)+48>>3];c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];s=RR(y,z,t,w,1)|0;c[s+20>>2]=o;c[c[p>>2]>>2]=s}e=+h[n+(d*72|0)+64>>3];if(e<+h[j>>3]){h[k>>3]=+h[q>>3];h[i>>3]=e;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];s=RR(y,v,t,w,0)|0;c[s+20>>2]=o;c[(c[p>>2]|0)+4>>2]=s}if(+h[q>>3]>+h[b>>3]){c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];s=RR(y,z,t,w,1)|0;c[s+24>>2]=o;c[(c[p>>2]|0)+8>>2]=s}if(+h[n+(d*72|0)+48>>3]>+h[m>>3]){c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];s=RR(y,v,t,w,0)|0;c[s+24>>2]=o;c[(c[p>>2]|0)+12>>2]=s}d=d+1|0}o=tH(c[y>>2]<<2)|0;r=a+4|0;s=a+12|0;p=t+8|0;m=0;q=0;n=0;while(1){d=c[r>>2]|0;if((n|0)>=(d|0)){b=0;break}g=c[s>>2]|0;i=g+(n*72|0)|0;j=g+(n*72|0)+36|0;c[j>>2]=o+(m<<2);b=g+(n*72|0)+40|0;c[t>>2]=c[b>>2];c[t+4>>2]=c[b+4>>2];c[t+8>>2]=c[b+8>>2];c[t+12>>2]=c[b+12>>2];b=g+(n*72|0)+56|0;k=g+(n*72|0)+32|0;d=nb[c[v>>2]&63](v,t,512)|0;while(1){if(!d)break;if(!(+h[d+8>>3]<+h[b>>3]))break;C=c[d>>2]|0;B=c[j>>2]|0;f=c[k>>2]|0;c[k>>2]=f+1;c[B+(f<<2)>>2]=C;c[(c[d>>2]|0)+24>>2]=i;d=nb[c[v>>2]&63](v,d,8)|0}f=g+(n*72|0)+64|0;d=nb[c[z>>2]&63](z,t,512)|0;while(1){if(!d){u=20;break}e=+h[f>>3];if(!(+h[d+16>>3]>2]|0;B=c[j>>2]|0;C=c[k>>2]|0;c[k>>2]=C+1;c[B+(C<<2)>>2]=b;c[(c[d>>2]|0)+24>>2]=i;d=nb[c[z>>2]&63](z,d,8)|0}if((u|0)==20){u=0;e=+h[f>>3]}h[p>>3]=e;b=g+(n*72|0)+56|0;d=nb[c[v>>2]&63](v,t,512)|0;while(1){if(!d){u=25;break}e=+h[b>>3];if(!(+h[d+8>>3]>2]|0;B=c[j>>2]|0;C=c[k>>2]|0;c[k>>2]=C+1;c[B+(C<<2)>>2]=D;c[(c[d>>2]|0)+20>>2]=i;d=nb[c[v>>2]&63](v,d,8)|0}if((u|0)==25){u=0;e=+h[b>>3]}h[t>>3]=e;h[p>>3]=+h[g+(n*72|0)+48>>3];d=nb[c[z>>2]&63](z,t,512)|0;while(1){if(!d)break;if(!(+h[d+16>>3]<+h[f>>3]))break;B=c[d>>2]|0;C=c[j>>2]|0;D=c[k>>2]|0;c[k>>2]=D+1;c[C+(D<<2)>>2]=B;c[(c[d>>2]|0)+20>>2]=i;d=nb[c[z>>2]&63](z,d,8)|0}D=c[k>>2]|0;m=D+m|0;q=(D|0)>(q|0)?D:q;n=n+1|0}while(1){if((b|0)>=(d|0))break;SR((c[s>>2]|0)+(b*72|0)|0);b=b+1|0;d=c[r>>2]|0}d=c[y>>2]|0;D=c[y+16>>2]|0;c[D+(d*40|0)+32>>2]=d;d=d+1|0;c[D+(d*40|0)+32>>2]=d;lO(y,q);d=0;while(1){if((d|0)>=(c[a>>2]|0))break;TR((c[x>>2]|0)+(d*72|0)|0,y);d=d+1|0}xw(z)|0;xw(v)|0;C_(w);UR(y);jO(y);l=A;return y|0}function RR(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=nb[c[d>>2]&63](d,e,512)|0;do if(!h){b=nO(b)|0;if(!f)qa(135101,135049,291,135108);else{h=c[b+32>>2]|0;i=f+(h<<5)|0;f=f+(h<<5)+8|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[i>>2]=b;a[b+36>>0]=g;nb[c[d>>2]&63](d,i,1)|0;break}}else i=h;while(0);return c[i>>2]|0}function SR(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;a:do if((+h[b+64>>3]+-3.0-+h[b+48>>3])*.5<2.0){i=c[b+32>>2]|0;j=b+36|0;g=0;while(1){if((g|0)>=(i|0))break a;d=c[(c[j>>2]|0)+(g<<2)>>2]|0;b:do if(a[d+36>>0]|0){f=c[d+20>>2]|0;if((f|0)==(b|0)){e=c[d+24>>2]|0;d=e;e=c[e>>2]|0;do{c[d>>2]=e|8;d=c[c[d+36>>2]>>2]|0;if(!d)break b;d=c[d+24>>2]|0;e=c[d>>2]|0}while(!(e&1|0))}else{e=f;d=c[f>>2]|0;do{c[e>>2]=d|8;d=c[(c[e+36>>2]|0)+8>>2]|0;if(!d)break b;e=c[d+20>>2]|0;d=c[e>>2]|0}while(!(d&1|0))}}while(0);g=g+1|0}}while(0);c:do if((+h[b+56>>3]+-3.0-+h[b+40>>3])*.5<2.0){i=c[b+32>>2]|0;j=b+36|0;g=0;while(1){if((g|0)>=(i|0))break c;d=c[(c[j>>2]|0)+(g<<2)>>2]|0;d:do if(!(a[d+36>>0]|0)){f=c[d+20>>2]|0;if((f|0)==(b|0)){e=c[d+24>>2]|0;d=e;e=c[e>>2]|0;do{c[d>>2]=e|16;d=c[(c[d+36>>2]|0)+4>>2]|0;if(!d)break d;d=c[d+24>>2]|0;e=c[d>>2]|0}while(!(e&1|0))}else{e=f;d=c[f>>2]|0;do{c[e>>2]=d|16;d=c[(c[e+36>>2]|0)+12>>2]|0;if(!d)break d;e=c[d+20>>2]|0;d=c[e>>2]|0}while(!(d&1|0))}}while(0);g=g+1|0}}while(0);return}function TR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0;g=+h[a+56>>3]-+h[a+40>>3];i=+h[a+64>>3]-+h[a+48>>3];f=(i+g)*.5+500.0;if((i+-3.0)*.5<2.0){l=(c[a>>2]&8|0)==0;f=l?16384.0:f;p=l?16384.0:g}else p=g;if((g+-3.0)*.5<2.0){l=(c[a>>2]&16|0)==0;i=l?16384.0:i;f=l?16384.0:f}l=a+36|0;d=c[l>>2]|0;e=c[d+8>>2]|0;if((e|0)!=0?(j=c[d+4>>2]|0,(j|0)!=0):0){j=oO(b,e,j,f)|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+1;c[a+8+(d<<2)>>2]=j;d=c[l>>2]|0}e=c[d+4>>2]|0;if((e|0)!=0?(k=c[d>>2]|0,(k|0)!=0):0){k=oO(b,e,k,f)|0;j=a+4|0;d=c[j>>2]|0;c[j>>2]=d+1;c[a+8+(d<<2)>>2]=k;d=c[l>>2]|0}e=c[d+8>>2]|0;if((e|0)!=0?(m=c[d+12>>2]|0,(m|0)!=0):0){m=oO(b,e,m,f)|0;k=a+4|0;d=c[k>>2]|0;c[k>>2]=d+1;c[a+8+(d<<2)>>2]=m;d=c[l>>2]|0}e=c[d+12>>2]|0;if((e|0)!=0?(n=c[d>>2]|0,(n|0)!=0):0){n=oO(b,e,n,f)|0;m=a+4|0;d=c[m>>2]|0;c[m>>2]=d+1;c[a+8+(d<<2)>>2]=n;d=c[l>>2]|0}e=c[d+4>>2]|0;if((e|0)!=0?(o=c[d+12>>2]|0,(o|0)!=0):0){o=oO(b,e,o,i)|0;n=a+4|0;d=c[n>>2]|0;c[n>>2]=d+1;c[a+8+(d<<2)>>2]=o;d=c[l>>2]|0}e=c[d+8>>2]|0;if(e|0?(q=c[d>>2]|0,q|0):0){b=oO(b,e,q,p)|0;o=a+4|0;q=c[o>>2]|0;c[o>>2]=q+1;c[a+8+(q<<2)>>2]=b}return}function UR(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j+8|0;h=j;f=a+16|0;g=c[15686]|0;e=0;while(1){if((e|0)>=(c[a>>2]|0)){b=10;break}b=c[f>>2]|0;d=b+(e*40|0)+20|0;if((c[d>>2]|0)==0?(c[h>>2]=e,f1(g,135014,h)|0,(c[d>>2]|0)==0):0){b=5;break}b=b+(e*40|0)+24|0;if((c[b>>2]|0)==0?(c[i>>2]=e,f1(g,135066,i)|0,(c[b>>2]|0)==0):0){b=8;break}e=e+1|0}if((b|0)==5)qa(135036,135049,311,135056);else if((b|0)==8)qa(135088,135049,313,135056);else if((b|0)==10){l=j;return}}function VR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[c+8>>3];if(!(e>f))if(!(e>3];e=+h[c>>3];if(f>e)a=1;else a=(f>31}else a=-1;else a=1;return a|0}function WR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b>>3];f=+h[c>>3];if(!(e>f))if(!(e>3];e=+h[c+8>>3];if(f>e)a=1;else a=(f>31}else a=-1;else a=1;return a|0}function XR(a){a=a|0;var b=0,d=0;d=a+8|0;C_(c[(c[d>>2]|0)+36>>2]|0);b=a+12|0;C_(c[(c[b>>2]|0)+36>>2]|0);C_(c[d>>2]|0);C_(c[b>>2]|0);qO(c[a+16>>2]|0);xw(c[a+20>>2]|0)|0;xw(c[a+24>>2]|0)|0;C_(a);return}function YR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+32|0;h=p;i=b<<2;f=i+4|0;i=i+5|0;o=uH(i*56|0)|0;i=tH(i<<2)|0;g=f*5|1;j=uH(g*72|0)|0;m=g<<5;k=tH(m)|0;m=tH(m)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[h+16>>2]=c[e+16>>2];c[h+20>>2]=c[e+20>>2];c[h+24>>2]=c[e+24>>2];c[h+28>>2]=c[e+28>>2];ZR(a,b,h,o,0);h2(173);_R(f,i);iS(f,o,i,g,j)|0;n=$R(f,o,j,0,k)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[h+16>>2]=c[e+16>>2];c[h+20>>2]=c[e+20>>2];c[h+24>>2]=c[e+24>>2];c[h+28>>2]=c[e+28>>2];ZR(a,b,h,o,1);_R(f,i);iS(f,o,i,g,j)|0;f=$R(f,o,j,1,m)|0;g=tH(O(n<<5,f)|0)|0;b=0;a=0;while(1){if((b|0)>=(f|0))break;h=m+(b<<5)|0;e=0;while(1){if((e|0)>=(n|0))break;q=a+((aS(g+(a<<5)|0,h,k+(e<<5)|0)|0)!=0&1)|0;e=e+1|0;a=q}b=b+1|0}q=wH(g,a<<5)|0;C_(o);C_(i);C_(j);C_(k);C_(m);c[d>>2]=a;l=p;return q|0}function ZR(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;j=l;l=l+96|0;h=j+64|0;i=j;c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];c[h+16>>2]=c[d+16>>2];c[h+20>>2]=c[d+20>>2];c[h+24>>2]=c[d+24>>2];c[h+28>>2]=c[d+28>>2];gS(h,f,1,i);d=hS(e,1,i)|0;g=0;while(1){if((g|0)>=(b|0))break;k=a+(g*72|0)+40|0;c[h>>2]=c[k>>2];c[h+4>>2]=c[k+4>>2];c[h+8>>2]=c[k+8>>2];c[h+12>>2]=c[k+12>>2];c[h+16>>2]=c[k+16>>2];c[h+20>>2]=c[k+20>>2];c[h+24>>2]=c[k+24>>2];c[h+28>>2]=c[k+28>>2];gS(h,f,0,i);d=hS(e,d,i)|0;g=g+1|0}l=j;return}function _R(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=0;while(1){if((d|0)>(a|0))break;c[b+(d<<2)>>2]=d;d=d+1|0}g=a+1|0;d=1;while(1){if((d|0)>(a|0))break;h=~~(+j2()*+(g-d|0)+ +(d|0));e=b+(d<<2)|0;f=b+(h<<2)|0;if((d|0)!=(h|0)){h=c[e>>2]|0;c[e>>2]=c[f>>2];c[f>>2]=h}d=d+1|0}return}function $R(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=a*5|0;j=g+1|0;l=tH(j<<2)|0;c[46618]=tH(j<<4)|0;c[46619]=tH((a*56|0)+56|0)|0;j=tH(a<<2)|0;c[46620]=j;k=0;while(1){if((k|0)>(g|0))break;if(bS(d+(k*72|0)|0,b)|0)break;k=k+1|0}h=c[46618]|0;i=c[46619]|0;g=1;while(1){if((g|0)>(a|0))break;c[h+(g<<4)+8>>2]=c[b+(g*56|0)+48>>2];m=b+(g*56|0)+44|0;c[h+(g<<4)+4>>2]=c[m>>2];c[h+(g<<4)>>2]=g;n=i+(g*56|0)|0;o=b+(g*56|0)|0;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];c[i+(g*56|0)+16>>2]=c[m>>2];c[i+(g*56|0)+32>>2]=g;c[i+(g*56|0)+48>>2]=1;g=g+1|0}c[46621]=a;c[46622]=0;c[j>>2]=1;g=c[d+(k*72|0)+40>>2]|0;if((g|0)<=0){g=c[d+(k*72|0)+48>>2]|0;if((g|0)>0)g=cS(l,f,0,b,d,0,k,g,e,2)|0;else g=0}else g=cS(l,f,0,b,d,0,k,g,e,1)|0;C_(l);C_(c[46618]|0);C_(c[46619]|0);C_(c[46620]|0);return g|0}function aS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;g=+h[(+h[b>>3]>+h[c>>3]?b:c)>>3];f=+h[(+h[b+16>>3]<+h[c+16>>3]?b:c)+16>>3];h[a+16>>3]=f;h[a>>3]=g;e=+h[(+h[b+8>>3]>+h[c+8>>3]?b:c)+8>>3];d=+h[(+h[b+24>>3]<+h[c+24>>3]?b:c)+24>>3];h[a+24>>3]=d;h[a+8>>3]=e;return !(g>=f)&!(e>=d)&1|0}function bS(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[a+4>>2]|0;do if((c[a+68>>2]|0)!=2?!((f|0)<1|(c[a>>2]|0)<1):0){if(!((c[a+40>>2]|0)<1?(c[a+44>>2]|0)<1:0)){if((c[a+48>>2]|0)>=1){a=0;break}if((c[a+52>>2]|0)>=1){a=0;break}}d=+h[b+(f*56|0)+24>>3];e=+h[b+(f*56|0)+8>>3];if(!(d>e+1.0e-07))if(d>3]>+h[b+(f*56|0)>>3]&1;else a=1}else a=0;while(0);return a|0}function cS(a,b,d,e,f,g,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0.0,L=0,M=0,N=0,O=0,P=0;D=(k|0)==0;C=i;a:while(1){y=f+(C*72|0)|0;if((C|0)<1)break;i=a+(C<<2)|0;if(c[i>>2]|0)break;c[i>>2]=1;v=f+(C*72|0)+8|0;t=f+(C*72|0)+16|0;p=+h[t>>3];w=f+(C*72|0)+24|0;x=f+(C*72|0)+32|0;o=+h[x>>3];if((p>o?(A=c[y>>2]|0,I=+h[e+(A*56|0)>>3],I==+h[e+(A*56|0)+16>>3]):0)?(A=c[f+(C*72|0)+4>>2]|0,K=+h[e+(A*56|0)>>3],K==+h[e+(A*56|0)+16>>3]):0){i=b+(d<<5)|0;if(D){h[i>>3]=I;q=p;p=K}else{h[i>>3]=o;q=-I;o=-K}h[b+(d<<5)+8>>3]=o;h[b+(d<<5)+16>>3]=p;h[b+(d<<5)+24>>3]=q;d=d+1|0}i=f+(C*72|0)+40|0;z=c[i>>2]|0;do if((z|0)<1?(L=f+(C*72|0)+44|0,(c[L>>2]|0)<1):0){i=f+(C*72|0)+48|0;n=f+(C*72|0)+52|0;if((c[i>>2]|0)>0?(M=c[n>>2]|0,(M|0)>0):0){m=c[f+(M*72|0)>>2]|0;l=c[y>>2]|0;if((M|0)==(j|0)){l=dS(g,l,m)|0;d=cS(a,b,d,e,f,g,c[n>>2]|0,C,k,1)|0;g=l;l=1;break}else{l=dS(g,m,l)|0;d=cS(a,b,d,e,f,g,c[i>>2]|0,C,k,1)|0;g=l;i=n;l=1;break}}d=cS(a,b,d,e,f,g,z,C,k,2)|0;d=cS(a,b,d,e,f,g,c[L>>2]|0,C,k,2)|0;d=cS(a,b,d,e,f,g,c[i>>2]|0,C,k,1)|0;i=n;l=1}else P=19;while(0);do if((P|0)==19){P=0;A=f+(C*72|0)+48|0;r=c[A>>2]|0;if((r|0)<1?(N=f+(C*72|0)+52|0,(c[N>>2]|0)<1):0){n=f+(C*72|0)+44|0;if((z|0)>0?(O=c[n>>2]|0,(O|0)>0):0){m=c[f+(C*72|0)+4>>2]|0;l=c[f+(z*72|0)+4>>2]|0;if((O|0)==(j|0)){l=dS(g,l,m)|0;d=cS(a,b,d,e,f,g,c[n>>2]|0,C,k,2)|0;g=l;l=2;break}else{l=dS(g,m,l)|0;d=cS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;g=l;i=n;l=2;break}}d=cS(a,b,d,e,f,g,z,C,k,2)|0;d=cS(a,b,d,e,f,g,c[n>>2]|0,C,k,2)|0;d=cS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;i=N;l=1;break}u=f+(C*72|0)+44|0;s=c[u>>2]|0;m=(s|0)>0;if((z|0)>0){if(m){if((r|0)>0?(E=f+(C*72|0)+52|0,F=c[E>>2]|0,(F|0)>0):0){n=c[f+(F*72|0)>>2]|0;m=c[f+(z*72|0)+4>>2]|0;if(!((l|0)==2&(F|0)==(j|0))?!((l|0)==1&(s|0)==(j|0)):0){l=dS(g,n,m)|0;d=cS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=cS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=cS(a,b,d,e,f,l,c[u>>2]|0,C,k,2)|0;g=l;i=E;l=1;break}l=dS(g,m,n)|0;d=cS(a,b,d,e,f,g,c[u>>2]|0,C,k,2)|0;d=cS(a,b,d,e,f,g,c[E>>2]|0,C,k,1)|0;d=cS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=A;l=1;break}m=c[y>>2]|0;if(+B(+(+h[x>>3]-+h[e+(m*56|0)+24>>3]))<=1.0e-07?+B(+(+h[w>>3]-+h[e+(m*56|0)+16>>3]))<=1.0e-07:0){n=c[f+(z*72|0)+4>>2]|0;m=c[e+(m*56|0)+44>>2]|0;if((l|0)==1&(z|0)==(j|0)){l=dS(g,m,n)|0;d=cS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=cS(a,b,d,e,f,l,c[A>>2]|0,C,k,1)|0;d=cS(a,b,d,e,f,l,c[u>>2]|0,C,k,2)|0;g=l;i=f+(C*72|0)+52|0;l=1;break}else{l=dS(g,n,m)|0;d=cS(a,b,d,e,f,g,c[u>>2]|0,C,k,2)|0;d=cS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=cS(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;l=2;break}}n=c[f+(C*72|0)+4>>2]|0;m=c[f+(z*72|0)+4>>2]|0;if((l|0)==1&(s|0)==(j|0)){l=dS(g,m,n)|0;d=cS(a,b,d,e,f,g,c[u>>2]|0,C,k,2)|0;d=cS(a,b,d,e,f,l,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;d=cS(a,b,d,e,f,l,c[A>>2]|0,C,k,1)|0;g=l;l=2;break}else{l=dS(g,n,m)|0;d=cS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=cS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=cS(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;i=u;l=2;break}}}else if(!m)break a;if((r|0)>0?(G=f+(C*72|0)+52|0,H=c[G>>2]|0,(H|0)>0):0){n=c[y>>2]|0;if(+B(+(+h[t>>3]-+h[e+(n*56|0)+8>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[e+(n*56|0)>>3]))<=1.0e-07:0){m=c[f+(H*72|0)>>2]|0;if((l|0)==2&(r|0)==(j|0)){l=dS(g,m,n)|0;d=cS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=cS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;d=cS(a,b,d,e,f,l,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;g=l;i=G;l=1;break}else{l=dS(g,n,m)|0;d=cS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=cS(a,b,d,e,f,g,c[G>>2]|0,C,k,1)|0;d=cS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;g=l;i=A;l=1;break}}m=c[f+(H*72|0)>>2]|0;n=c[e+((c[f+(C*72|0)+4>>2]|0)*56|0)+44>>2]|0;if((l|0)==2&(H|0)==(j|0)){l=dS(g,n,m)|0;d=cS(a,b,d,e,f,g,c[G>>2]|0,C,k,1)|0;d=cS(a,b,d,e,f,l,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=cS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=A;l=1;break}else{l=dS(g,m,n)|0;d=cS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=cS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=cS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;g=l;i=G;l=1;break}}o=+h[t>>3];n=c[y>>2]|0;if(((+B(+(o-+h[e+(n*56|0)+8>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[e+(n*56|0)>>3]))<=1.0e-07:0)?(J=c[f+(C*72|0)+4>>2]|0,+B(+(+h[x>>3]-+h[e+(J*56|0)+8>>3]))<=1.0e-07):0)?+B(+(+h[w>>3]-+h[e+(J*56|0)>>3]))<=1.0e-07:0)if((l|0)==1){l=dS(g,n,J)|0;d=cS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=cS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=cS(a,b,d,e,f,l,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;i=A;l=1;break}else{l=dS(g,J,n)|0;d=cS(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;d=cS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=cS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=f+(C*72|0)+44|0;l=2;break}j=c[f+(C*72|0)+4>>2]|0;if(((+B(+(o-+h[e+(j*56|0)+24>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[e+(j*56|0)+16>>3]))<=1.0e-07:0)?+B(+(+h[x>>3]-+h[e+(n*56|0)+24>>3]))<=1.0e-07:0)?+B(+(+h[w>>3]-+h[e+(n*56|0)+16>>3]))<=1.0e-07:0){m=c[e+(j*56|0)+44>>2]|0;j=c[e+(n*56|0)+44>>2]|0;if((l|0)==1){l=dS(g,j,m)|0;d=cS(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=cS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=cS(a,b,d,e,f,l,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;i=A;l=1;break}else{l=dS(g,m,j)|0;d=cS(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;d=cS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=cS(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=f+(C*72|0)+44|0;l=2;break}}d=cS(a,b,d,e,f,g,z,C,k,2)|0;d=cS(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=cS(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;i=f+(C*72|0)+52|0;l=1}while(0);j=C;C=c[i>>2]|0}return d|0}function dS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+16|0;r=f+4|0;i=f;e=(c[46622]|0)+1|0;c[46622]=e;m=c[46619]|0;eS(b,d,r,i);r=c[r>>2]|0;h=c[m+(b*56|0)+32+(r<<2)>>2]|0;i=c[m+(d*56|0)+32+(c[i>>2]<<2)>>2]|0;n=c[46621]|0;g=n+1|0;n=n+2|0;c[46621]=n;q=c[46618]|0;c[q+(g<<4)>>2]=b;c[q+(n<<4)>>2]=d;o=q+(h<<4)+4|0;p=q+(g<<4)+4|0;c[p>>2]=c[o>>2];c[q+(c[o>>2]<<4)+8>>2]=g;c[q+(g<<4)+8>>2]=n;c[q+(n<<4)+4>>2]=g;j=q+(i<<4)+8|0;c[q+(n<<4)+8>>2]=c[j>>2];c[q+(c[j>>2]<<4)+4>>2]=n;c[o>>2]=i;c[j>>2]=h;j=m+(b*56|0)+48|0;o=c[j>>2]|0;i=m+(d*56|0)+48|0;k=c[i>>2]|0;c[m+(b*56|0)+16+(r<<2)>>2]=d;c[m+(b*56|0)+32+(o<<2)>>2]=g;c[m+(b*56|0)+16+(o<<2)>>2]=c[q+(c[p>>2]<<4)>>2];c[m+(d*56|0)+32+(k<<2)>>2]=n;c[m+(d*56|0)+16+(k<<2)>>2]=b;c[j>>2]=(c[j>>2]|0)+1;c[i>>2]=(c[i>>2]|0)+1;d=c[46620]|0;c[d+(a<<2)>>2]=h;c[d+(e<<2)>>2]=g;l=f;return e|0}function eS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0;l=c[46619]|0;m=l+(a*56|0)|0;n=l+(b*56|0)|0;f=0;g=-4.0;i=0;while(1){if((i|0)==4)break;h=c[l+(a*56|0)+16+(i<<2)>>2]|0;if((h|0)>=1?(j=+fS(m,l+(h*56|0)|0,n),j>g):0){f=i;g=j}i=i+1|0}c[d>>2]=f;f=0;i=0;g=-4.0;while(1){if((i|0)==4)break;h=c[l+(b*56|0)+16+(i<<2)>>2]|0;if((h|0)>=1?(k=+fS(n,l+(h*56|0)|0,m),k>g):0){f=i;g=k}i=i+1|0}c[e>>2]=f;return}function fS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;g=+h[a>>3];i=+h[b>>3]-g;d=+h[a+8>>3];f=+h[b+8>>3]-d;g=+h[c>>3]-g;d=+h[c+8>>3]-d;e=d*f+g*i;if(!(d*i-g*f>=0.0))d=-e/(+C(+(d*d+g*g))*+C(+(f*f+i*i)))+-2.0;else d=e/(+C(+(d*d+g*g))*+C(+(f*f+i*i)));return +d}function gS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,l=0.0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];i=e+32|0;j=a+16|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];if(!d){f=a+8|0;g=j;i=a+24|0;d=a}else{f=a+24|0;g=a;i=a+8|0;d=j}k=+h[g>>3];l=+h[i>>3];h[e+16>>3]=+h[d>>3];h[e+24>>3]=l;h[e+48>>3]=k;h[e+56>>3]=+h[f>>3];a:do if(b|0){d=0;while(1){if((d|0)==4)break a;j=e+(d<<4)+8|0;l=+h[j>>3];b=e+(d<<4)|0;h[j>>3]=+h[b>>3];h[b>>3]=-l;d=d+1|0}}while(0);return}function hS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=b+3|0;i=b+1|0;j=b+2|0;k=a+(b*56|0)+44|0;l=a+(h*56|0)+44|0;e=0;f=b;while(1){if((f|0)>(h|0))break;do if((f|0)!=(b|0))if((f|0)==(h|0)){c[l>>2]=b;g=j;break}else{c[a+(f*56|0)+44>>2]=f+1;g=f+-1|0;break}else{c[k>>2]=i;g=h}while(0);c[a+(f*56|0)+48>>2]=g;c[a+(f*56|0)+32>>2]=0;n=a+(f*56|0)|0;m=d+(e<<4)|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];F3(a+(g*56|0)+16|0,m|0,16)|0;e=e+1|0;f=f+1|0}return b+4|0}function iS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;c[46623]=e<<1;c[46624]=e;k=tH(e*80|0)|0;c[46625]=1;c[46626]=1;G3(f|0,0,e*72|0)|0;g=jS(c[d+4>>2]|0,b,f,k)|0;e=1;while(1){if((e|0)>(a|0))break;c[b+(e*56|0)+40>>2]=g;c[b+(e*56|0)+36>>2]=g;e=e+1|0}j=kS(a)|0;g=2;i=1;while(1){if((i|0)>(j|0))break;e=lS(a,i+-1|0)|0;h=lS(a,i)|0;while(1){if((e|0)>=(h|0)){e=1;break}mS(c[d+(g<<2)>>2]|0,b,f,k);e=e+1|0;g=g+1|0}while(1){if((e|0)>(a|0))break;nS(e,b,f,k);e=e+1|0}i=i+1|0}e=lS(a,j)|0;while(1){if((e|0)>=(a|0))break;mS(c[d+(g<<2)>>2]|0,b,f,k);g=g+1|0;e=e+1|0}C_(k);return c[46625]|0}function jS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=sS()|0;c[e+(f*40|0)>>2]=2;s=e+(f*40|0)+8|0;k=b+(a*56|0)|0;l=b+(a*56|0)+16|0;wS(s,k,l);n=sS()|0;c[e+(f*40|0)+36>>2]=n;c[e+(n*40|0)>>2]=3;c[e+(n*40|0)+28>>2]=f;j=sS()|0;c[e+(f*40|0)+32>>2]=j;c[e+(j*40|0)>>2]=2;r=e+(j*40|0)+8|0;xS(r,k,l);c[e+(j*40|0)+28>>2]=f;l=sS()|0;c[e+(j*40|0)+32>>2]=l;c[e+(l*40|0)>>2]=3;c[e+(l*40|0)+28>>2]=j;k=sS()|0;c[e+(j*40|0)+36>>2]=k;c[e+(k*40|0)>>2]=1;c[e+(k*40|0)+4>>2]=a;c[e+(k*40|0)+28>>2]=j;j=sS()|0;c[e+(k*40|0)+32>>2]=j;c[e+(j*40|0)>>2]=3;c[e+(j*40|0)+28>>2]=k;g=sS()|0;c[e+(k*40|0)+36>>2]=g;c[e+(g*40|0)>>2]=3;c[e+(g*40|0)+28>>2]=k;k=rS(d)|0;i=rS(d)|0;m=rS(d)|0;o=rS(d)|0;p=d+(k*72|0)+8|0;q=d+(i*72|0)+8|0;t=d+(o*72|0)+24|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];F3(q|0,s|0,16)|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];p=d+(k*72|0)+24|0;q=d+(i*72|0)+24|0;s=d+(m*72|0)+8|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];F3(q|0,r|0,16)|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];h[d+(o*72|0)+16>>3]=1073741824.0;h[d+(o*72|0)+8>>3]=1073741824.0;h[d+(m*72|0)+32>>3]=-1073741824.0;h[d+(m*72|0)+24>>3]=-1073741824.0;c[d+(i*72|0)>>2]=a;c[d+(k*72|0)+4>>2]=a;c[d+(i*72|0)+40>>2]=o;c[d+(k*72|0)+40>>2]=o;c[d+(i*72|0)+48>>2]=m;c[d+(k*72|0)+48>>2]=m;c[d+(m*72|0)+40>>2]=k;c[d+(o*72|0)+48>>2]=k;c[d+(m*72|0)+44>>2]=i;c[d+(o*72|0)+52>>2]=i;c[d+(k*72|0)+56>>2]=j;c[d+(i*72|0)+56>>2]=g;c[d+(m*72|0)+56>>2]=l;c[d+(o*72|0)+56>>2]=n;c[d+(i*72|0)+68>>2]=1;c[d+(k*72|0)+68>>2]=1;c[d+(o*72|0)+68>>2]=1;c[d+(m*72|0)+68>>2]=1;c[e+(n*40|0)+24>>2]=o;c[e+(l*40|0)+24>>2]=m;c[e+(j*40|0)+24>>2]=k;c[e+(g*40|0)+24>>2]=i;c[b+(a*56|0)+32>>2]=1;return f|0}function kS(a){a=a|0;var b=0.0;b=+(a|0);a=0;while(1){if(!(b>=1.0))break;b=+f$(b);a=a+1|0}return a+-1|0}function lS(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+(a|0);c=d;a=0;while(1){if((a|0)>=(b|0))break;c=+f$(c);a=a+1|0}return ~~+N(+(d/c))|0}function mS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;W=l;l=l+96|0;S=W+32|0;f=W+16|0;T=W;s=S;k=b+(a*56|0)|0;r=s+56|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));U=S+16|0;V=S+24|0;i=+h[V>>3];H=S+8|0;j=+h[H>>3];do if(!(i>j+1.0e-07)){if(!(i>3]>+h[S>>3]:0){G=4;break}G=(qS(a,b,1)|0)==0;f=c[S+36>>2]|0;if(G){n=0;G=7}else{f=oS(S,U,f,b,e)|0;G=20}}else G=4;while(0);if((G|0)==4){c[f>>2]=c[S>>2];c[f+4>>2]=c[S+4>>2];c[f+8>>2]=c[S+8>>2];c[f+12>>2]=c[S+12>>2];c[S>>2]=c[U>>2];c[S+4>>2]=c[U+4>>2];c[S+8>>2]=c[U+8>>2];c[S+12>>2]=c[U+12>>2];c[U>>2]=c[f>>2];c[U+4>>2]=c[f+4>>2];c[U+8>>2]=c[f+8>>2];c[U+12>>2]=c[f+12>>2];E=S+36|0;F=c[E>>2]|0;G=S+40|0;f=c[G>>2]|0;c[E>>2]=f;c[G>>2]=F;if(!(qS(a,b,2)|0)){n=1;G=7}else{f=oS(S,U,f,b,e)|0;G=19}}if((G|0)==7){m=oS(S,U,f,b,e)|0;f=rS(d)|0;c[d+(f*72|0)+68>>2]=1;s=d+(f*72|0)|0;k=d+(m*72|0)|0;r=s+72|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));q=+h[H>>3];h[d+(f*72|0)+16>>3]=q;h[d+(m*72|0)+32>>3]=q;q=+h[S>>3];h[d+(f*72|0)+8>>3]=q;h[d+(m*72|0)+24>>3]=q;c[d+(m*72|0)+48>>2]=f;c[d+(m*72|0)+52>>2]=0;c[d+(f*72|0)+40>>2]=m;c[d+(f*72|0)+44>>2]=0;g=c[d+(f*72|0)+48>>2]|0;if((g|0)>0){k=d+(g*72|0)+40|0;if((c[k>>2]|0)==(m|0))c[k>>2]=f;g=d+(g*72|0)+44|0;if((c[g>>2]|0)==(m|0))c[g>>2]=f}g=c[d+(f*72|0)+52>>2]|0;if((g|0)>0){k=d+(g*72|0)+40|0;if((c[k>>2]|0)==(m|0))c[k>>2]=f;g=d+(g*72|0)+44|0;if((c[g>>2]|0)==(m|0))c[g>>2]=f}E=sS()|0;G=sS()|0;F=d+(m*72|0)+56|0;D=c[F>>2]|0;c[e+(D*40|0)>>2]=2;C=e+(D*40|0)+8|0;c[C>>2]=c[S>>2];c[C+4>>2]=c[S+4>>2];c[C+8>>2]=c[S+8>>2];c[C+12>>2]=c[S+12>>2];c[e+(D*40|0)+4>>2]=a;c[e+(D*40|0)+32>>2]=G;c[e+(D*40|0)+36>>2]=E;c[e+(E*40|0)>>2]=3;c[e+(E*40|0)+24>>2]=m;c[e+(E*40|0)+28>>2]=D;c[e+(G*40|0)>>2]=3;c[e+(G*40|0)+24>>2]=f;c[e+(G*40|0)+28>>2]=D;c[F>>2]=E;c[d+(f*72|0)+56>>2]=G;if(n)G=19;else G=20}if((G|0)==19)if(!(qS(a,b,1)|0)){g=1;G=21}else{g=1;G=32}else if((G|0)==20)if(!(qS(a,b,2)|0)){g=0;G=21}else{g=0;G=32}if((G|0)==21){o=oS(U,S,c[S+40>>2]|0,b,e)|0;n=rS(d)|0;c[d+(n*72|0)+68>>2]=1;s=d+(n*72|0)|0;k=d+(o*72|0)|0;r=s+72|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));q=+h[V>>3];h[d+(n*72|0)+16>>3]=q;h[d+(o*72|0)+32>>3]=q;q=+h[U>>3];h[d+(n*72|0)+8>>3]=q;h[d+(o*72|0)+24>>3]=q;c[d+(o*72|0)+48>>2]=n;c[d+(o*72|0)+52>>2]=0;c[d+(n*72|0)+40>>2]=o;c[d+(n*72|0)+44>>2]=0;k=c[d+(n*72|0)+48>>2]|0;if((k|0)>0){m=d+(k*72|0)+40|0;if((c[m>>2]|0)==(o|0))c[m>>2]=n;k=d+(k*72|0)+44|0;if((c[k>>2]|0)==(o|0))c[k>>2]=n}k=c[d+(n*72|0)+52>>2]|0;if((k|0)>0){m=d+(k*72|0)+40|0;if((c[m>>2]|0)==(o|0))c[m>>2]=n;k=d+(k*72|0)+44|0;if((c[k>>2]|0)==(o|0))c[k>>2]=n}D=sS()|0;F=sS()|0;E=d+(o*72|0)+56|0;C=c[E>>2]|0;c[e+(C*40|0)>>2]=2;A=e+(C*40|0)+8|0;c[A>>2]=c[U>>2];c[A+4>>2]=c[U+4>>2];c[A+8>>2]=c[U+8>>2];c[A+12>>2]=c[U+12>>2];c[e+(C*40|0)+4>>2]=a;c[e+(C*40|0)+32>>2]=F;c[e+(C*40|0)+36>>2]=D;c[e+(D*40|0)>>2]=3;c[e+(D*40|0)+24>>2]=o;c[e+(D*40|0)+28>>2]=C;c[e+(F*40|0)>>2]=3;c[e+(F*40|0)+24>>2]=n;c[e+(F*40|0)+28>>2]=C;c[E>>2]=D;c[d+(n*72|0)+56>>2]=F;F=f;f=0}else if((G|0)==32){F=f;o=oS(U,S,c[S+40>>2]|0,b,e)|0;f=1}a:do if((F|0)>0){D=d+(o*72|0)+24|0;E=d+(o*72|0)+32|0;C=(f|0)!=0;y=g?b+(a*56|0)+48|0:b+(a*56|0)+44|0;z=T+8|0;g=0;f=0;x=F;b:while(1){k=d+(x*72|0)|0;v=d+(x*72|0)+24|0;if(!(tS(v,D)|0))break a;m=d+(x*72|0)+56|0;u=c[m>>2]|0;n=sS()|0;p=sS()|0;c[e+(u*40|0)>>2]=1;c[e+(u*40|0)+4>>2]=a;c[e+(u*40|0)+32>>2]=n;c[e+(u*40|0)+36>>2]=p;c[e+(n*40|0)>>2]=3;c[e+(n*40|0)+24>>2]=x;c[e+(n*40|0)+28>>2]=u;c[e+(p*40|0)>>2]=3;w=rS(d)|0;c[e+(p*40|0)+24>>2]=w;A=d+(w*72|0)|0;c[d+(w*72|0)+68>>2]=1;c[e+(p*40|0)+28>>2]=u;g=(x|0)==(F|0)?w:g;u=d+(x*72|0)+32|0;if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0)f=w;s=A;r=s+72|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));c[m>>2]=n;c[d+(w*72|0)+56>>2]=p;t=d+(x*72|0)+48|0;m=d+(x*72|0)+52|0;k=(c[m>>2]|0)<1;do if((c[t>>2]|0)<1){if(k)break b;s=d+(x*72|0)+40|0;k=c[s>>2]|0;do if((k|0)>0?(M=d+(x*72|0)+44|0,N=c[M>>2]|0,(N|0)>0):0){r=d+(x*72|0)+60|0;k=c[r>>2]|0;if((k|0)<=0){c[d+(w*72|0)+40>>2]=N;c[d+(w*72|0)+44>>2]=-1;c[M>>2]=-1;c[d+(N*72|0)+48>>2]=w;break}if((c[d+(x*72|0)+64>>2]|0)==1){c[d+(w*72|0)+40>>2]=N;c[M>>2]=-1;c[d+(w*72|0)+44>>2]=k;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;p=w;n=N}else{c[d+(w*72|0)+44>>2]=-1;t=d+(w*72|0)+40|0;c[t>>2]=c[M>>2];n=c[s>>2]|0;c[M>>2]=n;c[s>>2]=k;c[d+(k*72|0)+48>>2]=x;p=x;k=c[t>>2]|0}c[d+(n*72|0)+48>>2]=p;c[d+(k*72|0)+48>>2]=w;c[d+(w*72|0)+60>>2]=0;c[r>>2]=0}else G=77;while(0);do if((G|0)==77){G=0;n=d+(k*72|0)+48|0;p=c[n>>2]|0;k=d+(k*72|0)+52|0;if((p|0)>0?(c[k>>2]|0)>0:0){k=c[d+(p*72|0)+4>>2]|0;if((k|0)>0?(pS(k,b,U)|0)==0:0){c[d+(w*72|0)+44>>2]=-1;c[d+(x*72|0)+44>>2]=-1;c[s>>2]=-1;c[d+((c[d+(w*72|0)+40>>2]|0)*72|0)+52>>2]=w;break}c[d+(x*72|0)+44>>2]=-1;c[d+(w*72|0)+44>>2]=-1;c[d+(w*72|0)+40>>2]=-1;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;break}c[n>>2]=x;c[k>>2]=w}while(0);if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?C&+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0){k=c[y>>2]|0;if((k|0)>0?(pS(k,b,S)|0)!=0:0){c[d+((c[m>>2]|0)*72|0)+40>>2]=x;n=d+(w*72|0)+52|0;k=w}else{c[d+((c[d+(w*72|0)+52>>2]|0)*72|0)+44>>2]=w;n=m;k=x}c[n>>2]=-1;c[d+(k*72|0)+48>>2]=-1;k=c[m>>2]|0;break}k=c[m>>2]|0;m=d+(k*72|0)+40|0;n=c[m>>2]|0;p=d+(k*72|0)+44|0;if((n|0)>0?(O=c[p>>2]|0,P=(n|0)==(x|0),(O|0)>0):0){c[d+(k*72|0)+60>>2]=P?O:n;c[d+(k*72|0)+64>>2]=P?1:2}c[m>>2]=x;c[p>>2]=w}else{if(!k){i=+h[u>>3];j=+h[H>>3];q=i-j;if(!(+B(+q)<=1.0e-07)){h[z>>3]=i;i=+h[S>>3];h[T>>3]=(+h[U>>3]-i)*(q/(+h[V>>3]-j))+i;s=(uS(T,v)|0)!=0}else s=+h[v>>3]>+h[S>>3];r=d+(x*72|0)+40|0;k=c[r>>2]|0;do if((k|0)>0?(Q=d+(x*72|0)+44|0,R=c[Q>>2]|0,(R|0)>0):0){p=d+(x*72|0)+60|0;k=c[p>>2]|0;if((k|0)<=0){c[d+(w*72|0)+40>>2]=R;c[d+(w*72|0)+44>>2]=-1;c[Q>>2]=-1;c[d+(R*72|0)+48>>2]=w;break}if((c[d+(x*72|0)+64>>2]|0)==1){c[d+(w*72|0)+40>>2]=R;c[Q>>2]=-1;c[d+(w*72|0)+44>>2]=k;c[d+((c[r>>2]|0)*72|0)+48>>2]=x;n=w;m=R}else{c[d+(w*72|0)+44>>2]=-1;X=d+(w*72|0)+40|0;c[X>>2]=c[Q>>2];m=c[r>>2]|0;c[Q>>2]=m;c[r>>2]=k;c[d+(k*72|0)+48>>2]=x;n=x;k=c[X>>2]|0}c[d+(m*72|0)+48>>2]=n;c[d+(k*72|0)+48>>2]=w;c[d+(w*72|0)+60>>2]=0;c[p>>2]=0}else G=106;while(0);do if((G|0)==106){G=0;m=d+(k*72|0)+48|0;n=c[m>>2]|0;k=d+(k*72|0)+52|0;if((n|0)>0?(c[k>>2]|0)>0:0){k=c[d+(n*72|0)+4>>2]|0;if((k|0)>0?(pS(k,b,U)|0)==0:0){c[d+(w*72|0)+44>>2]=-1;c[d+(x*72|0)+44>>2]=-1;c[r>>2]=-1;c[d+((c[d+(w*72|0)+40>>2]|0)*72|0)+52>>2]=w;break}c[d+(x*72|0)+44>>2]=-1;c[d+(w*72|0)+44>>2]=-1;c[d+(w*72|0)+40>>2]=-1;c[d+((c[r>>2]|0)*72|0)+48>>2]=x;break}c[m>>2]=x;c[k>>2]=w}while(0);if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?C&+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0){k=c[t>>2]|0;c[d+(k*72|0)+40>>2]=x;c[d+(k*72|0)+44>>2]=-1;k=d+(x*72|0)+52|0;X=c[k>>2]|0;c[d+(X*72|0)+40>>2]=w;c[d+(X*72|0)+44>>2]=-1;c[d+(w*72|0)+48>>2]=X;c[d+(w*72|0)+52>>2]=-1;c[k>>2]=-1;k=-1}else G=116;do if((G|0)==116){G=0;k=c[t>>2]|0;c[d+(k*72|0)+40>>2]=x;m=d+(k*72|0)+44|0;if(s){c[m>>2]=w;X=d+(x*72|0)+52|0;v=c[X>>2]|0;c[d+(v*72|0)+40>>2]=w;c[d+(v*72|0)+44>>2]=-1;c[X>>2]=-1;break}else{c[m>>2]=-1;k=d+(x*72|0)+52|0;X=c[k>>2]|0;c[d+(X*72|0)+40>>2]=x;c[d+(X*72|0)+44>>2]=w;c[d+(w*72|0)+48>>2]=X;c[d+(w*72|0)+52>>2]=-1;k=c[k>>2]|0;break}}while(0);break}s=d+(x*72|0)+40|0;k=c[s>>2]|0;do if((k|0)>0?(I=d+(x*72|0)+44|0,J=c[I>>2]|0,(J|0)>0):0){r=d+(x*72|0)+60|0;k=c[r>>2]|0;if((k|0)<=0){c[d+(w*72|0)+40>>2]=J;c[d+(w*72|0)+44>>2]=-1;c[I>>2]=-1;c[d+(J*72|0)+48>>2]=w;break}if((c[d+(x*72|0)+64>>2]|0)==1){c[d+(w*72|0)+40>>2]=J;c[I>>2]=-1;c[d+(w*72|0)+44>>2]=k;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;p=w;n=J}else{c[d+(w*72|0)+44>>2]=-1;X=d+(w*72|0)+40|0;c[X>>2]=c[I>>2];n=c[s>>2]|0;c[I>>2]=n;c[s>>2]=k;c[d+(k*72|0)+48>>2]=x;p=x;k=c[X>>2]|0}c[d+(n*72|0)+48>>2]=p;c[d+(k*72|0)+48>>2]=w;c[d+(w*72|0)+60>>2]=0;c[r>>2]=0}else G=51;while(0);do if((G|0)==51){G=0;n=d+(k*72|0)+48|0;p=c[n>>2]|0;k=d+(k*72|0)+52|0;if((p|0)>0?(c[k>>2]|0)>0:0){k=c[d+(p*72|0)+4>>2]|0;if((k|0)>0?(pS(k,b,U)|0)==0:0){c[d+(w*72|0)+44>>2]=-1;c[d+(x*72|0)+44>>2]=-1;c[s>>2]=-1;c[d+((c[d+(w*72|0)+40>>2]|0)*72|0)+52>>2]=w;break}c[d+(x*72|0)+44>>2]=-1;c[d+(w*72|0)+44>>2]=-1;c[d+(w*72|0)+40>>2]=-1;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;break}c[n>>2]=x;c[k>>2]=w}while(0);if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?C&+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0){k=c[y>>2]|0;if((k|0)>0?(pS(k,b,S)|0)!=0:0){c[d+((c[t>>2]|0)*72|0)+40>>2]=x;m=d+(w*72|0)+52|0;k=w}else{c[d+((c[d+(w*72|0)+48>>2]|0)*72|0)+44>>2]=w;k=x}c[m>>2]=-1;c[d+(k*72|0)+48>>2]=-1;k=c[t>>2]|0;break}k=c[t>>2]|0;m=d+(k*72|0)+40|0;n=c[m>>2]|0;p=d+(k*72|0)+44|0;if((n|0)>0?(K=c[p>>2]|0,L=(n|0)==(x|0),(K|0)>0):0){c[d+(k*72|0)+60>>2]=L?K:n;c[d+(k*72|0)+64>>2]=L?1:2}c[m>>2]=x;c[p>>2]=w}while(0);c[A>>2]=a;c[d+(x*72|0)+4>>2]=a;if((k|0)>0)x=k;else break a}D1(135342,19,1,c[15686]|0)|0}else{g=0;f=0}while(0);vS(a,F,o,1,d,e);vS(a,g,f,2,d,e);c[b+(a*56|0)+32>>2]=1;l=W;return}function nS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!(c[b+(a*56|0)+32>>2]|0)){f=b+(a*56|0)|0;g=b+(a*56|0)+16|0;h=b+(a*56|0)+36|0;c[h>>2]=c[d+((oS(f,g,c[h>>2]|0,b,e)|0)*72|0)+56>>2];a=b+(a*56|0)+40|0;c[a>>2]=c[d+((oS(g,f,c[a>>2]|0,b,e)|0)*72|0)+56>>2]}return}function oS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0,r=0;o=a+8|0;q=b+8|0;a:while(1){b:do switch(c[f+(d*40|0)>>2]|0){case 3:{r=3;break a}case 2:{g=+h[o>>3];i=f+(d*40|0)+8|0;j=+h[f+(d*40|0)+16>>3];k=j+1.0e-07;do if(!(g>k)){l=j+-1.0e-07;if(!(g>3]>+h[i>>3]:0)break;if(+B(+(g-j))<=1.0e-07?(m=+h[i>>3],+B(+(+h[a>>3]-m))<=1.0e-07):0){g=+h[q>>3];do if(!(g>k)){if(!(g>3]>m:0)break;d=f+(d*40|0)+32|0;break b}while(0);d=f+(d*40|0)+36|0;break b}d=f+(d*40|0)+32|0;break b}while(0);d=f+(d*40|0)+36|0;break}case 1:{g=+h[o>>3];i=c[f+(d*40|0)+4>>2]|0;if(+B(+(g-+h[e+(i*56|0)+8>>3]))<=1.0e-07?(n=+h[a>>3],+B(+(n-+h[e+(i*56|0)>>3]))<=1.0e-07):0)j=n;else r=19;do if((r|0)==19){r=0;if(+B(+(g-+h[e+(i*56|0)+24>>3]))<=1.0e-07?(p=+h[a>>3],+B(+(p-+h[e+(i*56|0)+16>>3]))<=1.0e-07):0){j=p;break}if(!(pS(i,e,a)|0)){d=f+(d*40|0)+36|0;break b}else{d=f+(d*40|0)+32|0;break b}}while(0);if(!(+B(+(g-+h[q>>3]))<=1.0e-07))if(!(pS(i,e,b)|0)){d=f+(d*40|0)+36|0;break b}else{d=f+(d*40|0)+32|0;break b}else if(+h[b>>3]>2]|0}if((r|0)==3)return c[f+(d*40|0)+24>>2]|0;else if((r|0)==31){D1(135276,35,1,c[15686]|0)|0;qa(135312,135314,349,135326)}return 0}function pS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0.0;f=b+(a*56|0)+16|0;g=+h[b+(a*56|0)+24>>3];i=b+(a*56|0)|0;e=+h[b+(a*56|0)+8>>3];do if(!(g>e+1.0e-07)){if(!(g>3]>+h[i>>3]:0){j=4;break}d=+h[c+8>>3];if(+B(+(g-d))<=1.0e-07){d=+h[c>>3]<+h[f>>3]?1.0:-1.0;break}if(!(+B(+(e-d))<=1.0e-07)){k=+h[f>>3];d=(+h[i>>3]-k)*(d-g)-(+h[c>>3]-k)*(e-g);break}else{d=+h[c>>3]<+h[i>>3]?1.0:-1.0;break}}else j=4;while(0);do if((j|0)==4){d=+h[c+8>>3];if(+B(+(g-d))<=1.0e-07){d=+h[c>>3]<+h[f>>3]?1.0:-1.0;break}if(!(+B(+(e-d))<=1.0e-07)){k=+h[i>>3];d=(+h[f>>3]-k)*(d-e)-(+h[c>>3]-k)*(g-e);break}else{d=+h[c>>3]<+h[i>>3]?1.0:-1.0;break}}while(0);return d>0.0|0}function qS(a,b,d){a=a|0;b=b|0;d=d|0;return c[b+((c[((d|0)==1?b+(a*56|0)+48|0:b+(a*56|0)+44|0)>>2]|0)*56|0)+32>>2]|0}function rS(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=c[46625]|0;if((b|0)<(c[46624]|0)){c[a+(b*72|0)>>2]=-1;c[a+(b*72|0)+4>>2]=-1;c[a+(b*72|0)+68>>2]=1;c[46625]=b+1;l=e;return b|0}else{e=c[15686]|0;c[d>>2]=b;f1(e,135401,d)|0;qa(135312,135314,88,135439)}return 0}function sS(){var a=0;a=c[46626]|0;if((a|0)<(c[46623]|0)){c[46626]=a+1;return a|0}else{D1(135362,30,1,c[15686]|0)|0;qa(135312,135314,72,135393)}return 0}function tS(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];if(!(c>d+1.0e-07))if(c>3]>=+h[b>>3]&1;else a=1;return a|0}function uS(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];if(!(cd+1.0e-07)a=0;else a=+h[a>>3]<+h[b>>3]&1;else a=1;return a|0}function vS(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=f+(d*72|0)+24|0;p=(e|0)==1;a:while(1){o=f+(b*72|0)+24|0;j=f+(b*72|0)+48|0;k=f+(b*72|0)+52|0;l=f+(b*72|0)|0;m=f+(b*72|0)+4|0;n=f+(b*72|0)+56|0;if((b|0)<=0)break;while(1){if(!(tS(o,q)|0))break a;d=c[j>>2]|0;e=(d|0)>0;do if(p){if(e?(c[f+(d*72|0)+4>>2]|0)==(a|0):0)break;d=c[k>>2]|0;if((d|0)<=0){b=d;continue a}if((c[f+(d*72|0)+4>>2]|0)!=(a|0)){b=d;continue a}}else{if(e?(c[f+(d*72|0)>>2]|0)==(a|0):0)break;d=c[k>>2]|0;if((d|0)<=0){b=d;continue a}if((c[f+(d*72|0)>>2]|0)!=(a|0)){b=d;continue a}}while(0);if((c[l>>2]|0)!=(c[f+(d*72|0)>>2]|0)){b=d;continue a}if((c[m>>2]|0)!=(c[f+(d*72|0)+4>>2]|0)){b=d;continue a}r=c[f+(d*72|0)+56>>2]|0;e=c[g+(r*40|0)+28>>2]|0;h=g+(e*40|0)+32|0;i=c[n>>2]|0;if((c[h>>2]|0)==(r|0))c[h>>2]=i;else c[g+(e*40|0)+36>>2]=i;e=c[f+(d*72|0)+48>>2]|0;c[j>>2]=e;do if((e|0)>0){h=f+(e*72|0)+40|0;if((c[h>>2]|0)==(d|0)){c[h>>2]=b;break}e=f+(e*72|0)+44|0;if((c[e>>2]|0)==(d|0))c[e>>2]=b}while(0);e=c[f+(d*72|0)+52>>2]|0;c[k>>2]=e;do if((e|0)>0){h=f+(e*72|0)+40|0;if((c[h>>2]|0)==(d|0)){c[h>>2]=b;break}e=f+(e*72|0)+44|0;if((c[e>>2]|0)==(d|0))c[e>>2]=b}while(0);r=f+(d*72|0)+24|0;c[o>>2]=c[r>>2];c[o+4>>2]=c[r+4>>2];c[o+8>>2]=c[r+8>>2];c[o+12>>2]=c[r+12>>2];c[f+(d*72|0)+68>>2]=2}}return}function wS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[d+8>>3];do if(!(e>f+1.0e-07)){if(!(+B(+(e-f))<=1.0e-07)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}if(+h[b>>3]>+h[d>>3]+1.0e-07){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}while(0);return}function xS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[d+8>>3];do if(!(e>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}if(+h[b>>3]<+h[d>>3]){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}while(0);return}function yS(a){a=a|0;var b=0;b=tH(8)|0;if(b|0){c[b+4>>2]=a;c[b>>2]=0}return b|0}function zS(a,b){a=a|0;b=b|0;if(b){b=yS(b)|0;c[b>>2]=a;a=b}return a|0}function AS(a){a=a|0;var b=0;do{b=a;a=c[a>>2]|0;C_(b)}while((a|0)!=0);return}function BS(){var a=0;a=tH(1992)|0;if(a|0)c[a>>2]=CS(a)|0;return a|0}function CS(a){a=a|0;var b=0;b=IS(a)|0;c[b+4>>2]=0;a=a+1972|0;c[a>>2]=(c[a>>2]|0)+1;return b|0}function DS(a){a=a|0;ES(a,c[a>>2]|0);C_(c[a>>2]|0);C_(a);return 0}function ES(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=a+1980|0;h=a+1912|0;i=a+1936|0;a:do if((c[b+4>>2]|0)>0){d=0;while(1){if((d|0)==64)break a;e=b+8+(d*20|0)+16|0;f=c[e>>2]|0;if(f|0?(ES(a,f),C_(c[e>>2]|0),OS(b,d),c[g>>2]=(c[g>>2]|0)+-1,c[h>>2]|0):0)c[i>>2]=(c[i>>2]|0)+1;d=d+1|0}}else{d=0;while(1){if((d|0)==64)break a;if(c[b+8+(d*20|0)+16>>2]|0?(OS(b,d),c[g>>2]=(c[g>>2]|0)+-1,c[h>>2]|0):0)c[i>>2]=(c[i>>2]|0)+1;d=d+1|0}}while(0);return}function FS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(!b)qa(135797,135447,194,135455);e=c[b+4>>2]|0;if((e|0)<=-1)qa(135467,135447,195,135455);if(!d)qa(135739,135447,196,135455);i=a+1952|0;c[i>>2]=(c[i>>2]|0)+1;a:do if((e|0)>0){i=0;e=0;while(1){if((i|0)==64)break a;f=b+8+(i*20|0)+16|0;if((c[f>>2]|0)!=0?(TS(d,b+8+(i*20|0)|0)|0)!=0:0){g=FS(a,c[f>>2]|0,d)|0;if(!e)e=g;else{f=e;while(1){h=c[f>>2]|0;if(!h)break;else f=h}c[f>>2]=g}}i=i+1|0}}else{g=0;e=0;while(1){if((g|0)==64)break a;f=b+8+(g*20|0)|0;if((c[b+8+(g*20|0)+16>>2]|0)!=0?(TS(d,f)|0)!=0:0)e=zS(e,f)|0;g=g+1|0}}while(0);return e|0}function GS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+64|0;k=p+52|0;m=p+32|0;n=p+16|0;o=p;c[k>>2]=0;if(!((b|0)!=0&(e|0)!=0))qa(135653,135447,247,135481);if((f|0)>-1?(j=c[e>>2]|0,(c[j+4>>2]|0)>=(f|0)):0){g=0;while(1){if((g|0)>=2)break;if((c[b+(g<<2)>>2]|0)>(c[b+(g+2<<2)>>2]|0)){h=8;break}else g=g+1|0}if((h|0)==8)qa(135528,135447,250,135481);i=a+1912|0;g=a+1908|0;h=c[g>>2]|0;if(c[i>>2]|0){q=h|0?a+1924|0:a+1916|0;c[q>>2]=(c[q>>2]|0)+1}if(!h){q=a+1964|0;c[q>>2]=(c[q>>2]|0)+1}if(!(HS(a,b,d,j,k,f)|0))g=0;else{if(c[i>>2]|0){q=c[g>>2]|0?a+1948|0:a+1944|0;c[q>>2]=(c[q>>2]|0)+1}g=IS(a)|0;q=a+1976|0;c[q>>2]=(c[q>>2]|0)+1;q=c[e>>2]|0;c[g+4>>2]=(c[q+4>>2]|0)+1;LS(n,q);c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];q=m+16|0;c[q>>2]=c[e>>2];NS(a,m,g,0)|0;LS(o,c[k>>2]|0);c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[q>>2]=c[k>>2];NS(a,m,g,0)|0;c[e>>2]=g;g=a+1980|0;c[g>>2]=(c[g>>2]|0)+2;g=1}l=p;return g|0}qa(135493,135447,248,135481);return 0}function HS(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+80|0;m=q+52|0;n=q+48|0;o=q+32|0;p=q+16|0;k=q;c[n>>2]=0;if(!((b|0)!=0&(e|0)!=0&(f|0)!=0))qa(135571,135447,311,135585);if((g|0)>-1?(i=e+4|0,h=c[i>>2]|0,(h|0)>=(g|0)):0){if(c[a+1912>>2]|0){h=c[a+1908>>2]|0?a+1948|0:a+1944|0;c[h>>2]=(c[h>>2]|0)+1;h=c[i>>2]|0}do if((h|0)>(g|0)){i=MS(b,e)|0;h=e+8+(i*20|0)+16|0;i=e+8+(i*20|0)|0;if(!(HS(a,b,d,c[h>>2]|0,n,g)|0)){SS(o,b,i);c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];j=0;break}else{LS(p,c[h>>2]|0);c[i>>2]=c[p>>2];c[i+4>>2]=c[p+4>>2];c[i+8>>2]=c[p+8>>2];c[i+12>>2]=c[p+12>>2];j=c[n>>2]|0;c[m+16>>2]=j;LS(k,j);c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];j=a+1980|0;c[j>>2]=(c[j>>2]|0)+1;j=NS(a,m,e,f)|0;break}}else if((h|0)==(g|0)){c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];c[m+16>>2]=d;j=a+1980|0;c[j>>2]=(c[j>>2]|0)+1;j=NS(a,m,e,f)|0;break}else qa(135630,135447,341,135585);while(0);l=q;return j|0}qa(135598,135447,312,135585);return 0}function IS(a){a=a|0;a=a+1968|0;c[a>>2]=(c[a>>2]|0)+1;a=B_(1288)|0;JS(a);return a|0}function JS(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=-1;b=0;while(1){if((b|0)==64)break;KS(a+8+(b*20|0)|0);b=b+1|0}return}function KS(a){a=a|0;PS(a);c[a+16>>2]=0;return}function LS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+32|0;g=i+16|0;h=i;if(!b)qa(135797,135636,99,135643);PS(g);d=1;f=0;while(1){if((f|0)==64)break;do if(c[b+8+(f*20|0)+16>>2]|0){e=b+8+(f*20|0)|0;if(!d){SS(h,g,e);c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];d=0;break}else{c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];d=0;break}}while(0);f=f+1|0}c[a>>2]=c[g>>2];c[a+4>>2]=c[g+4>>2];c[a+8>>2]=c[g+8>>2];c[a+12>>2]=c[g+12>>2];l=i;return}function MS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;k=l;l=l+32|0;i=k+16|0;j=k;if(!((a|0)!=0&(b|0)!=0))qa(135653,135636,125,135660);d=0;e=0;f=0;g=1;h=0;while(1){if((h|0)==64)break;if(c[b+8+(h*20|0)+16>>2]|0){n=b+8+(h*20|0)|0;p=RS(n)|0;SS(j,a,n);c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];n=(RS(i)|0)-p|0;m=(g|0)!=0|(n|0)<(f|0);o=m|(p|0)<(e|0)&(n|0)==(f|0);d=o?h:d;e=o?p:e;f=o?n:f;g=m?0:g}h=h+1|0}l=k;return d|0}function NS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!b)qa(135819,135636,167,135671);if(!d)qa(135797,135636,168,135671);do if((c[d>>2]|0)<64){a=0;while(1){if((a|0)>=64){e=10;break}if(!(c[d+8+(a*20|0)+16>>2]|0)){e=8;break}a=a+1|0}if((e|0)==8){f=d+8+(a*20|0)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];f=0;g=d;break}else if((e|0)==10)qa(135681,135636,178,135671)}else{if(c[a+1912>>2]|0){h=c[a+1908>>2]|0?a+1948|0:a+1944|0;c[h>>2]=(c[h>>2]|0)+1}if(!e)qa(135694,135636,187,135671);else{US(a,d,b,e);f=1;g=(c[d+4>>2]|0)==0?a+1972|0:a+1976|0;break}}while(0);c[g>>2]=(c[g>>2]|0)+1;return f|0}function OS(a,b){a=a|0;b=b|0;if(!((a|0)!=0&b>>>0<64))qa(135698,135636,201,135726);if(!(c[a+8+(b*20|0)+16>>2]|0))qa(136220,135636,202,135726);else{KS(a+8+(b*20|0)|0);c[a>>2]=(c[a>>2]|0)+-1;return}}function PS(a){a=a|0;var b=0;b=0;while(1){if((b|0)==4)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function QS(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;c[d>>2]=1;c[d+8>>2]=-1;b=1;while(1){if((b|0)==2)break;c[d+(b+2<<2)>>2]=0;c[d+(b<<2)>>2]=0;b=b+1|0}c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];l=e;return}function RS(a){a=a|0;var b=0,d=0,e=0;if(!a)qa(135739,135741,128,135753);a:do if((c[a>>2]|0)>(c[a+8>>2]|0))b=0;else{b=1;d=0;while(1){if((d|0)==2)break a;e=O(c[a+(d+2<<2)>>2]|0,b)|0;b=e-(c[a+(d<<2)>>2]|0)|0;d=d+1|0}}while(0);return b|0}function SS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;g=l;l=l+16|0;f=g;if(!((b|0)!=0&(d|0)!=0))qa(135762,135741,195,135770);do if((c[b>>2]|0)>(c[b+8>>2]|0)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2]}else{if((c[d>>2]|0)>(c[d+8>>2]|0)){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else e=0;while(1){if((e|0)==2)break;j=c[b+(e<<2)>>2]|0;h=c[d+(e<<2)>>2]|0;c[f+(e<<2)>>2]=(j|0)<(h|0)?j:h;h=e+2|0;j=c[b+(h<<2)>>2]|0;i=c[d+(h<<2)>>2]|0;c[f+(h<<2)>>2]=(j|0)>(i|0)?j:i;e=e+1|0}c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];c[a+12>>2]=c[f+12>>2]}while(0);l=g;return}function TS(a,b){a=a|0;b=b|0;var d=0,e=0;if((a|0)!=0&(b|0)!=0)d=0;else qa(135782,135741,216,135789);while(1){if((d|0)>=2){d=1;break}e=d+2|0;if((c[a+(d<<2)>>2]|0)>(c[b+(e<<2)>>2]|0)){d=0;break}if((c[b+(d<<2)>>2]|0)>(c[a+(e<<2)>>2]|0)){d=0;break}else d=d+1|0}return d|0}function US(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0;if(!b)qa(135797,135799,40,135809);if(!d)qa(135819,135799,41,135809);j=a+1912|0;if(c[j>>2]|0){i=c[a+1908>>2]|0?a+1932|0:a+1928|0;c[i>>2]=(c[i>>2]|0)+1}h=b+4|0;i=c[h>>2]|0;VS(a,b,d);d=a+1324|0;WS(a);f=RS(a+1852|0)|0;f=(RS(a+1868|0)|0)+f|0;if(c[j>>2]|0?(f|0)!=0&(c[a+1908>>2]|0)==0:0){j=a+1960|0;g[j>>2]=+((c[a+1320>>2]|0)>>>0)/+(f|0)+ +g[j>>2]}j=IS(a)|0;c[e>>2]=j;c[h>>2]=i;c[j+4>>2]=i;XS(a,b,j,d);if(((c[c[e>>2]>>2]|0)+(c[b>>2]|0)|0)==65)return;else qa(135821,135799,86,135809)}function VS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+16|0;g=h;if(!b)qa(135797,135799,106,136208);if(!d)qa(135819,135799,107,136208);else e=0;while(1){if((e|0)>=64)break;if(!(c[b+8+(e*20|0)+16>>2]|0)){f=7;break}j=b+8+(e*20|0)|0;i=a+4+(e*20|0)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];c[i+16>>2]=c[j+16>>2];e=e+1|0}if((f|0)==7)qa(136220,135799,111,136208);e=a+4|0;j=a+1284|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];c[j+16>>2]=c[d+16>>2];d=a+1304|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=1;while(1){if((e|0)==65)break;SS(g,d,a+4+(e*20|0)|0);c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];e=e+1|0}c[a+1320>>2]=RS(d)|0;JS(b);l=h;return}function WS(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=l;l=l+48|0;i=u+32|0;k=u+16|0;m=u;YS(a);ZS(a);q=a+1844|0;s=a+1848|0;t=a+1892|0;n=a+1852|0;o=a+1884|0;p=a+1868|0;j=a+1888|0;f=0;e=0;while(1){d=c[q>>2]|0;b=c[s>>2]|0;if((b+d|0)>=65)break;h=65-(c[t>>2]|0)|0;if((d|0)<(h|0)&(b|0)<(h|0)){g=-1;h=0}else{r=12;break}while(1){if((h|0)==65)break;if(!(c[a+1584+(h<<2)>>2]|0)){v=a+4+(h*20|0)|0;SS(k,v,n);c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];b=RS(i)|0;d=c[o>>2]|0;SS(m,v,p);c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];v=RS(i)|0;b=v-(c[j>>2]|0)+(d-b)|0;d=(b|0)>-1;b=d?b:0-b|0;d=(d^1)&1;if((b|0)<=(g|0))if((b|0)==(g|0)){v=(c[a+1844+(d<<2)>>2]|0)<(c[a+1844+(f<<2)>>2]|0);b=g;d=v?d:f;e=v?h:e}else{b=g;d=f}else e=h}else{b=g;d=f}g=b;h=h+1|0;f=d}_S(a,e,f)}if((r|0)==12){b=(d|0)>=(65-(c[t>>2]|0)|0)&1;d=0;while(1){if((d|0)==65)break;if(!(c[a+1584+(d<<2)>>2]|0))_S(a,d,b);d=d+1|0}d=c[q>>2]|0;b=c[s>>2]|0}if((b+d|0)!=65)qa(135964,135799,210,136050);v=c[t>>2]|0;if((d|0)<(v|0)|(b|0)<(v|0))qa(136061,135799,212,136050);else{l=u;return}}function XS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if(!b)qa(135797,135799,297,135861);if(!d)qa(135871,135799,298,135861);if(!e)qa(135873,135799,299,135861);else f=0;while(1){if((f|0)>=65){e=14;break}e=c[a+1324+(f<<2)>>2]|0;if(e>>>0>=2){e=9;break}switch(e|0){case 0:{NS(a,a+4+(f*20|0)|0,b,0)|0;break}case 1:{NS(a,a+4+(f*20|0)|0,d,0)|0;break}default:{}}f=f+1|0}if((e|0)==9)qa(135875,135799,303,135861);else if((e|0)==14)return}function YS(a){a=a|0;var b=0,d=0,e=0,f=0;d=l;l=l+16|0;e=d;c[a+1848>>2]=0;c[a+1844>>2]=0;b=a+1852|0;f=a+1868|0;QS(e);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];c[a+1888>>2]=0;c[a+1884>>2]=0;b=0;while(1){if((b|0)==65)break;c[a+1584+(b<<2)>>2]=0;c[a+1324+(b<<2)>>2]=-1;b=b+1|0}l=d;return}function ZS(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;o=l;l=l+304|0;k=o+32|0;m=o+16|0;n=o;b=0;while(1){if((b|0)==65)break;c[k+(b<<2)>>2]=RS(a+4+(b*20|0)|0)|0;b=b+1|0}b=0;d=0;e=0;g=0;a:while(1){if((g|0)==64)break;i=g+1|0;j=a+4+(g*20|0)|0;h=k+(g<<2)|0;f=i;while(1){if((f|0)==65){g=i;continue a}SS(n,j,a+4+(f*20|0)|0);c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];p=RS(m)|0;p=p-(c[h>>2]|0)-(c[k+(f<<2)>>2]|0)|0;q=p>>>0>e>>>0;r=q?f:b;f=f+1|0;b=r;d=q?g:d;e=q?p:e}}_S(a,d,0);_S(a,b,1);l=o;return}function _S(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;e=a+1584+(b<<2)|0;if(c[e>>2]|0)qa(136164,135799,257,136199);c[a+1324+(b<<2)>>2]=d;c[e>>2]=1;g=a+1844+(d<<2)|0;f=a+1852+(d<<4)|0;e=a+4+(b*20|0)|0;if(!(c[g>>2]|0)){c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2]}else{SS(h,e,f);c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2]}c[a+1884+(d<<2)>>2]=RS(f)|0;c[g>>2]=(c[g>>2]|0)+1;l=i;return}function $S(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1200|0;r=t+800|0;g=t;c[46627]=0;c[46628]=-2;f=r;i=200;n=g;p=0;q=0;o=r;a:while(1){b[o>>1]=p;if((f+(i<<1)+-2|0)>>>0>o>>>0)k=i;else{m=o-f>>1;e=m+1|0;if(i>>>0>9999){s=95;break}k=i<<1;k=k>>>0<1e4?k:1e4;h=B_(k*6|3)|0;if(h){E3(h|0,f|0,e<<1|0)|0;i=h+(k>>>1<<2)|0;E3(i|0,n|0,e<<2|0)|0;if((f|0)==(r|0)){e=0;f=h}else{C_(f);e=0;f=h}}else{e=4;i=n}j=(e|0)==0;h=f+(m<<1)|0;switch((j?((f+(k<<1)+-2|0)>>>0>h>>>0?0:9):e)&15){case 9:{e=1;s=96;break a}case 4:{s=95;break a}case 0:{g=j?i+(m<<2)|0:g;n=i;o=j?h:o;break}default:{e=0;break a}}}if((p|0)==31){e=0;s=96;break}e=b[65430+(p<<1)>>1]|0;j=e<<16>>16;do if(e<<16>>16!=-82){h=c[46628]|0;if((h|0)==-2){h=oU()|0;c[46628]=h}if((h|0)>=1)if(h>>>0<296)i=d[136239+h>>0]|0;else i=2;else{c[46628]=0;i=0}h=i+j|0;if(h>>>0<=271?(i|0)==(a[136535+h>>0]|0):0){p=a[136807+h>>0]|0;e=p<<24>>24;if(p<<24>>24<1){h=0-e|0;s=23;break}else{c[46628]=-2;g=g+4|0;c[g>>2]=c[46629];j=(q|0)==0?0:q+-1|0;h=o;break}}else s=22}else s=22;while(0);if((s|0)==22){s=0;p=a[137079+p>>0]|0;h=p&255;if(!(p<<24>>24)){h=c[46628]|0;b:do switch(q|0){case 0:{c[46627]=(c[46627]|0)+1;uT(140679);h=o;break}case 3:if((h|0)<1)if(!h){e=1;s=96;break a}else{h=o;break b}else{c[46628]=-2;h=o;break b}default:h=o}while(0);while(1){if(e<<16>>16==8)break;if((h|0)==(f|0)){e=1;s=96;break a}e=h+-2|0;g=g+-4|0;h=e;e=b[65430+(b[e>>1]<<1)>>1]|0}g=g+4|0;c[g>>2]=c[46629];e=1;j=3}else s=23}do if((s|0)==23){s=0;j=d[137195+h>>0]|0;e=c[g+(1-j<<2)>>2]|0;do switch(h|0){case 4:{s=26;break a}case 2:{c[46630]=aT(c[g+-4>>2]|0,2)|0;break}case 3:{c[46630]=aT(c[g+-4>>2]|0,1)|0;break}case 5:{e=cT()|0;break}case 8:{dT(c[46631]|0);break}case 9:{eT(c[g>>2]|0);break}case 18:{fT(c[g>>2]|0);break}case 19:{gT();break}case 20:{fT(c[g>>2]|0);break}case 21:{gT();break}case 22:{fT(c[g>>2]|0);break}case 23:{gT();break}case 24:{fT(c[g>>2]|0);break}case 25:{gT();break}case 26:{fT(c[g>>2]|0);break}case 27:{gT();break}case 28:{fT(c[g>>2]|0);break}case 29:{gT();break}case 30:{fT(c[g>>2]|0);break}case 31:{gT();break}case 32:{fT(c[g>>2]|0);break}case 33:{gT();break}case 34:{e=c[g+-4>>2]|0;break}case 35:{e=c[g>>2]|0;break}case 38:{e=c[46631]|0;i=c[e+4>>2]|0;if(i>>>0>=(c[e+8>>2]|0)>>>0){Tw(e,1)|0;i=c[46631]|0;e=i;i=c[i+4>>2]|0}a[i>>0]=0;p=c[e>>2]|0;c[e+4>>2]=p;if(hT(p)|0){s=51;break a}c[(c[g>>2]|0)+80>>2]=c[46632];e=Bw(55928,c[4554]|0)|0;c[(c[g>>2]|0)+84>>2]=e;c[46632]=c[g>>2];c[(c[g>>2]|0)+108>>2]=c[c[46633]>>2];e=c[g>>2]|0;break}case 39:{e=c[46631]|0;i=c[e+4>>2]|0;if(i>>>0>=(c[e+8>>2]|0)>>>0){Tw(e,1)|0;i=c[46631]|0;e=i;i=c[i+4>>2]|0}a[i>>0]=0;p=c[e>>2]|0;c[e+4>>2]=p;if(hT(p)|0){s=56;break a}e=c[46632]|0;c[46632]=c[e+80>>2];break}case 40:{e=c[g>>2]|0;break}case 41:{e=c[g+-4>>2]|0;break}case 42:{e=c[g+-4>>2]|0;break}case 43:{e=c[g+-4>>2]|0;break}case 44:{e=c[g+-4>>2]|0;break}case 45:{e=c[g+-4>>2]|0;break}case 48:{e=c[g>>2]|0;break}case 49:{e=c[g>>2]|0;break}case 50:{a[(c[g+-8>>2]|0)+12>>0]=1;e=c[g>>2]|0;break}case 51:{iT();break}case 52:{e=jT()|0;break}case 53:{e=c[g>>2]|0;break}case 54:{e=c[g>>2]|0;break}case 55:{e=(c[g+-8>>2]|0)+100|0;a[e>>0]=a[e>>0]|1;e=c[g>>2]|0;break}case 56:{kT(c[g+-4>>2]|0,c[g>>2]|0,1);break}case 57:{e=c[g+-12>>2]|0;break}case 58:{kT(c[g+-4>>2]|0,c[g>>2]|0,2);break}case 59:{e=c[g+-12>>2]|0;break}case 60:{kT(c[g+-4>>2]|0,c[g>>2]|0,3);break}case 61:{e=c[g+-12>>2]|0;break}case 62:{kT(c[g>>2]|0,cT()|0,2);break}case 63:{e=c[g+-8>>2]|0;break}case 64:{e=c[g+-4>>2]|0;break}case 65:{e=c[g>>2]|0;break}default:{}}while(0);i=0-j|0;p=g+(i<<2)|0;i=o+(i<<1)|0;g=p+4|0;c[p+4>>2]=e;e=(d[137367+h>>0]|0)+-41|0;p=b[i>>1]|0;h=p+(b[65662+(e<<1)>>1]|0)|0;if(h>>>0<272?(a[136535+h>>0]|0)==(p|0):0){e=a[136807+h>>0]|0;j=q;h=i;break}e=a[137437+e>>0]|0;j=q;h=i}while(0);i=k;p=e;q=j;o=h+2|0}if((s|0)==26){bT();e=1;s=96}else if((s|0)==51){uT(137265);bT();e=1;s=96}else if((s|0)==56){uT(137316);bT();e=1;s=96}else if((s|0)==95){uT(137476);e=2;s=96}if((s|0)==96)if((f|0)!=(r|0))C_(f);l=t;return e|0}function aT(b,d){b=b|0;d=d|0;var e=0;e=tH(8)|0;a[e+4>>0]=d;c[e>>2]=b;return e|0}function bT(){var a=0,b=0;a=c[46632]|0;b=c[46630]|0;if(b|0){WQ(b,1);c[46630]=0}c[13995]=67;while(1){if(!a)break;b=c[a+80>>2]|0;oT(a);a=b}c[13995]=56;c[14004]=68;b=c[46635]|0;nb[c[b>>2]&63](b,0,64)|0;c[14004]=56;c[14013]=69;b=c[46636]|0;nb[c[b>>2]&63](b,0,64)|0;c[14013]=56;rT();return}function cT(){var a=0,d=0,e=0,f=0,g=0,h=0;e=c[46636]|0;f=tH(40)|0;if(Dw(c[46635]|0)|0)eT(0);a=Dw(e)|0;b[f+4>>1]=a;a:do if(!a)a=e;else{c[f>>2]=tH(a*24|0)|0;a=0;d=nb[c[e>>2]&63](e,0,128)|0;while(1){if(!d){a=e;break a}g=(c[f>>2]|0)+(a*24|0)|0;h=d+8|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];c[g+16>>2]=c[h+16>>2];c[g+20>>2]=c[h+20>>2];a=a+1|0;d=nb[c[e>>2]&63](e,d,8)|0}}while(0);nb[c[a>>2]&63](e,0,64)|0;return f|0}function dT(b){b=b|0;var d=0,e=0,f=0;e=tH(64)|0;f=b+4|0;d=c[f>>2]|0;if(d>>>0>=(c[b+8>>2]|0)>>>0){Tw(b,1)|0;d=c[f>>2]|0}a[d>>0]=0;b=c[b>>2]|0;c[f>>2]=b;c[e+8>>2]=m1(b)|0;c[e+12>>2]=c[c[46633]>>2];f=c[46635]|0;nb[c[f>>2]&63](f,e,1)|0;return}function eT(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=tH(32)|0;j=c[46635]|0;e=Dw(j)|0;k=i+8|0;a[i+14>>0]=d;a:do if(!e){c[k>>2]=tH(56)|0;b[i+12>>1]=1;h=m1(191979)|0;k=c[k>>2]|0;c[k>>2]=h;c[k+4>>2]=c[c[46633]>>2]}else{b[i+12>>1]=e;c[k>>2]=tH(e*56|0)|0;d=0;e=zw(j)|0;while(1){if(!e)break a;f=(c[k>>2]|0)+(d*56|0)|0;g=e+8|0;h=f+56|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));d=d+1|0;e=c[e>>2]|0}}while(0);nb[c[j>>2]&63](j,0,64)|0;k=c[46636]|0;nb[c[k>>2]&63](k,i,1)|0;return}function fT(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;g=j;i=tH(8)|0;f=c[c[46633]>>2]|0;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[g+16>>2]=c[a+16>>2];c[g+20>>2]=c[a+20>>2];c[g+24>>2]=c[a+24>>2];c[g+28>>2]=c[a+28>>2];if(f|0){a=g+4|0;if((c[a>>2]|0)==0?(b=c[f+4>>2]|0,b|0):0)c[a>>2]=b;a=g+16|0;if(+h[a>>3]<0.0?(d=+h[f+16>>3],d>=0.0):0)h[a>>3]=d;if((c[g>>2]|0)==0?(e=c[f>>2]|0,e|0):0)c[g>>2]=e;a=c[f+24>>2]&127;if(a|0){f=g+24|0;e=c[f>>2]|0;c[f>>2]=e&127|a|e&-128}}f=c[(c[46634]|0)+144>>2]|0;c[i>>2]=nb[c[f>>2]&63](f,g,1)|0;c[i+4>>2]=c[46633];c[46633]=i;l=j;return}function gT(){var a=0,b=0;b=c[46633]|0;a=c[b+4>>2]|0;C_(b);c[46633]=a;return}function hT(b){b=b|0;var c=0;while(1){c=a[b>>0]|0;if(!(c<<24>>24)){b=0;break}if(c<<24>>24==32)b=b+1|0;else{b=1;break}}return b|0}function iT(){var b=0,d=0,e=0;e=Bw(55964,c[4554]|0)|0;b=c[46632]|0;d=tH(16)|0;c[d+8>>2]=e;if(a[b+112>>0]&2)a[d+12>>0]=1;e=c[b+84>>2]|0;nb[c[e>>2]&63](e,d,1)|0;return}function jT(){var a=0;a=c[(c[46632]|0)+84>>2]|0;return nb[c[a>>2]&63](a,0,256)|0}function kT(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=tH(16)|0;f=c[46632]|0;h=c[f+84>>2]|0;h=c[(nb[c[h>>2]&63](h,0,256)|0)+8>>2]|0;c[g+8>>2]=b;nb[c[h>>2]&63](h,g,1)|0;a[b+92>>0]=e;if(a[f+112>>0]&1)a[b+100>>0]=1;c[b+88>>2]=d;return}function lT(a,b,c){a=a|0;b=b|0;c=c|0;C_(b);return}function mT(a,b,d){a=a|0;b=b|0;d=d|0;xw(c[b+8>>2]|0)|0;C_(b);return}function nT(a,b,d){a=a|0;b=b|0;d=d|0;sT(c[b+8>>2]|0);C_(b);return}function oT(a){a=a|0;xw(c[a+84>>2]|0)|0;TQ(a);C_(a);return}function pT(a,b,d){a=a|0;b=b|0;d=d|0;C_(c[b+8>>2]|0);C_(b);return}function qT(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d+12|0;a=b[g>>1]|0;if(a<<16>>16){h=d+8|0;e=0;f=c[h>>2]|0;while(1){if((e|0)>=(a<<16>>16|0))break;C_(c[f>>2]|0);e=e+1|0;f=f+56|0;a=b[g>>1]|0}C_(c[h>>2]|0)}C_(d);return}function rT(){var a=0,b=0;a=c[46633]|0;while(1){b=c[a+4>>2]|0;if(!b)break;C_(a);a=b}return}function sT(b){b=b|0;var d=0;d=b+88|0;switch(a[b+92>>0]|0){case 1:{oT(c[d>>2]|0);break}case 2:{UQ(c[d>>2]|0);break}default:{}}TQ(b);C_(b);return}function tT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+160|0;e=f+8|0;g=f;c[g>>2]=0;c[g+4>>2]=0;c[46633]=g;c[46632]=0;c[46630]=0;c[46634]=c[(c[(c[d+52>>2]|0)+16>>2]|0)+144>>2];c[46635]=Bw(56e3,c[4554]|0)|0;c[46636]=Bw(56036,c[4554]|0)|0;Sw(e,128,f+24|0);c[46631]=e;if(!(xT(a,e,d)|0)){$S()|0;c[b>>2]=nU()|0;a=c[46630]|0}else{c[b>>2]=2;a=0}xw(c[46635]|0)|0;xw(c[46636]|0)|0;c[46635]=0;c[46636]=0;c[46633]=0;Ww(e);l=f;return a|0}function uT(b){b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;if(!(a[186581]|0)){a[186581]=1;f=vT()|0;c[d>>2]=b;c[d+4>>2]=f;Ow(1,137493,d)|0;wT()}l=e;return}function vT(){return cX(c[46637]|0)|0}function wT(){var b=0,d=0,e=0,f=0;f=l;l=l+16|0;e=f;b=c[46640]|0;c[b+4>>2]=c[b>>2];d=c[46649]|0;if((d|0)>0){Uw(b,c[46647]|0,d)|0;b=c[46640]|0}Uw(b,c[46646]|0,c[46648]|0)|0;d=c[46640]|0;b=c[d+4>>2]|0;if(b>>>0>=(c[d+8>>2]|0)>>>0){Tw(d,1)|0;b=c[46640]|0;d=b;b=c[b+4>>2]|0}c[d+4>>2]=b+1;a[b>>0]=0;b=c[46640]|0;d=c[b>>2]|0;c[b+4>>2]=d;c[e>>2]=d;Ow(3,137509,e)|0;l=f;return}function xT(b,e,f){b=b|0;e=e|0;f=f|0;c[46640]=e;Sw(186564,128,0);c[46638]=b;a[186583]=0;a[186580]=0;a[186581]=0;c[46648]=0;c[46649]=0;a[186582]=1;f=f+52|0;e=CV(gH(d[(c[(c[f>>2]|0)+16>>2]|0)+115>>0]|0)|0)|0;c[46637]=e;RW(e,c[(c[(c[f>>2]|0)+16>>2]|0)+144>>2]|0);SW(c[46637]|0,70,27);TW(c[46637]|0,71);return 0}function yT(b,d,e){b=b|0;d=d|0;e=e|0;do if(!(N$(d,137521)|0)){c[46629]=CT(e)|0;a[186582]=0;c[46639]=286}else{if(N$(d,137527)|0?N$(d,137530)|0:0){if(!(N$(d,137533)|0)){a[186582]=1;c[46629]=DT(e)|0;c[46639]=287;break}if(!(N$(d,137541)|0)){c[46629]=ET(b,e,0)|0;c[46639]=288;break}if(!(N$(d,137546)|0)){c[46629]=ET(b,0,1)|0;c[46639]=290;break}if(!(N$(d,137562)|0)){c[46629]=ET(b,0,32)|0;c[46639]=295;break}if(!(N$(d,137548)|0)){c[46629]=ET(b,0,4)|0;c[46639]=291;break}if(!(N$(d,137550)|0)){c[46629]=ET(b,0,64)|0;c[46639]=292;break}if(!(N$(d,137552)|0)){c[46629]=ET(b,0,2)|0;c[46639]=289;break}if(!(N$(d,137554)|0)){c[46629]=ET(b,0,8)|0;c[46639]=293;break}if(!(N$(d,137558)|0)){c[46629]=ET(b,0,16)|0;c[46639]=294;break}if(!(N$(d,137564)|0)){FT(e);c[46639]=283;break}if(!(N$(d,137567)|0)){c[46639]=277;break}if(!(N$(d,137570)|0)){c[46639]=280;break}if(!(N$(d,137573)|0)){c[46629]=GT(e)|0;c[46639]=285;break}if(!(N$(d,137536)|0)){c[46639]=262;break}else{BT(d);break}}a[186582]=0;c[46639]=260}while(0);return}function zT(b,d){b=b|0;d=d|0;do if(!(N$(d,137521)|0)){c[46639]=264;a[186582]=1}else{if(N$(d,137527)|0?N$(d,137530)|0:0){if(!(N$(d,137533)|0)){c[46639]=265;a[186582]=0;break}if(!(N$(d,137536)|0)){c[46639]=263;break}if(!(N$(d,137541)|0)){c[46639]=266;break}if(!(N$(d,137546)|0)){c[46639]=270;break}if(!(N$(d,137548)|0)){c[46639]=271;break}if(!(N$(d,137550)|0)){c[46639]=272;break}if(!(N$(d,137552)|0)){c[46639]=269;break}if(!(N$(d,137554)|0)){c[46639]=273;break}if(!(N$(d,137558)|0)){c[46639]=274;break}if(!(N$(d,137562)|0)){c[46639]=275;break}if(!(N$(d,137564)|0)){c[46639]=(c[46639]|0)==283?282:258;break}if(!(N$(d,137567)|0)){c[46639]=(c[46639]|0)==277?276:278;break}if(!(N$(d,137570)|0)){c[46639]=(c[46639]|0)==280?279:281;break}if(!(N$(d,137573)|0)){c[46639]=(c[46639]|0)==285?284:259;break}else{BT(d);break}}c[46639]=261}while(0);return}function AT(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(a[186582]|0){b=0;while(1){if(!e)break;h=d+1|0;g=a[d>>0]|0;if((g&255)>31){d=c[46640]|0;f=c[d+4>>2]|0;if(f>>>0>=(c[d+8>>2]|0)>>>0){Tw(d,1)|0;f=c[46640]|0;d=f;f=c[f+4>>2]|0}c[d+4>>2]=f+1;a[f>>0]=g;b=b+1|0}d=h;e=e+-1|0}if(b|0)c[46639]=267}return}function BT(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;c[46639]=268;a[186581]=1;f=vT()|0;c[e>>2]=b;c[e+4>>2]=f;Ow(1,137577,e)|0;l=d;return}function CT(b){b=b|0;var d=0;d=tH(120)|0;c[d+100>>2]=-1;a[d+88>>0]=-1;HT(d,56296,22,b,138529);return d|0}function DT(a){a=a|0;var c=0;c=tH(104)|0;b[c+80>>1]=1;b[c+82>>1]=1;HT(c,56120,22,a,137883);return c|0}function ET(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=l;l=l+32|0;e=f;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;h[e+16>>3]=-1.0;c[e+24>>2]=d&127;if(b|0)HT(e,56096,3,b,137734);d=c[a+144>>2]|0;e=nb[c[d>>2]&63](d,e,1)|0;l=f;return e|0}function FT(a){a=a|0;c[46629]=0;HT(186516,56088,1,a,137670);return}function GT(a){a=a|0;var b=0;b=tH(40)|0;HT(b,56072,2,a,137616);return b|0}function HT(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;m=o+8|0;while(1){k=c[g>>2]|0;if(!k)break;i=c[g+4>>2]|0;c[m>>2]=k;j=d2(m,e,f,8,102)|0;if(!j){c[n>>2]=k;c[n+4>>2]=h;Ow(0,137622,n)|0;i=1}else{i=lb[c[j+4>>2]&127](b,i)|0;i=(i|(d[186580]|0))&255}a[186580]=i;g=g+8|0}l=o;return}function IT(a,b){a=a|0;b=b|0;return N$(c[a>>2]|0,c[b>>2]|0)|0}function JT(a,b){a=a|0;b=b|0;c[a+36>>2]=m1(b)|0;return 0}function KT(a,b){a=a|0;b=b|0;c[a+32>>2]=m1(b)|0;return 0}function LT(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=(H0(a[d>>0]|0)|0)<<24>>24;switch(f|0){case 82:{e=d+1|0;if(!(N$(e,137681)|0)){c[b>>2]=114;e=0}else h=5;break}case 76:{h=6;break}default:{e=d+1|0;h=5}}do if((h|0)==5)if(!(N$(e,137686)|0))h=6;else{if((f|0)!=67?(N$(e,137690)|0)==0:0){c[g>>2]=d;Ow(0,137696,g)|0;e=1;break}c[b>>2]=110;e=0}while(0);if((h|0)==6){c[b>>2]=108;e=0}l=i;return e|0}function MT(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return 0}function NT(a,b){a=a|0;b=b|0;c[a>>2]=b;return 0}function OT(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;if(!(PT(b,137763,0,255,d)|0)){h[a+16>>3]=+(c[d>>2]|0);a=0}else a=1;l=e;return a|0}function PT(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+48|0;j=k+24|0;i=k+8|0;h=k;m=k+36|0;g=h1(a,m,10)|0;do if((c[m>>2]|0)!=(a|0)){if((g|0)>(e|0)){c[i>>2]=b;c[i+4>>2]=a;c[i+8>>2]=e;Ow(0,137805,i)|0;a=1;break}if((g|0)<(d|0)){c[j>>2]=b;c[j+4>>2]=a;c[j+8>>2]=d;Ow(0,137844,j)|0;a=1;break}else{c[f>>2]=g;a=0;break}}else{c[h>>2]=b;c[h+4>>2]=a;Ow(0,137774,h)|0;a=1}while(0);l=k;return a|0}function QT(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((H0(a[e>>0]|0)|0)<<24>>24|0){case 76:{if(!(N$(e+1|0,137686)|0)){d=d+36|0;b[d>>1]=b[d>>1]|4;d=0}else g=9;break}case 82:{if(!(N$(e+1|0,137681)|0)){d=d+36|0;b[d>>1]=b[d>>1]|2;d=0}else g=9;break}case 84:{if(!(N$(e+1|0,138481)|0)){d=d+36|0;b[d>>1]=b[d>>1]|6;d=0}else g=9;break}case 67:{if(!(N$(e+1|0,137690)|0))d=0;else g=9;break}default:g=9}if((g|0)==9){c[f>>2]=e;Ow(0,138485,f)|0;d=1}l=h;return d|0}function RT(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((H0(a[e>>0]|0)|0)<<24>>24|0){case 76:{if(!(N$(e+1|0,137686)|0)){d=d+36|0;b[d>>1]=b[d>>1]|512;d=0}else g=7;break}case 82:{if(!(N$(e+1|0,137681)|0)){d=d+36|0;b[d>>1]=b[d>>1]|256;d=0}else g=7;break}case 67:{if(!(N$(e+1|0,137690)|0))d=0;else g=7;break}default:g=7}if((g|0)==7){c[f>>2]=e;Ow(0,138436,f)|0;d=1}l=h;return d|0}function ST(a,b){a=a|0;b=b|0;c[a+20>>2]=m1(b)|0;return 0}function TT(d,e){d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g;if(!(PT(e,138429,0,255,f)|0)){a[d+33>>0]=c[f>>2];d=d+36|0;b[d>>1]=b[d>>1]|32;d=0}else d=1;l=g;return d|0}function UT(d,e){d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g;if(!(PT(e,138417,0,255,f)|0)){a[d+34>>0]=c[f>>2];d=d+36|0;b[d>>1]=b[d>>1]|64;d=0}else d=1;l=g;return d|0}function VT(d,e){d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g;if(!(PT(e,138405,-128,127,f)|0)){a[d+32>>0]=c[f>>2];d=d+36|0;b[d>>1]=b[d>>1]|128;d=0}else d=1;l=g;return d|0}function WT(a,b){a=a|0;b=b|0;c[a+24>>2]=m1(b)|0;return 0}function XT(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=g+4|0;do if(!(PT(d,138360,0,65535,e)|0)){d=c[e>>2]|0;if(!d){Ow(0,138368,f)|0;d=1;break}else{b[a+80>>1]=d;d=0;break}}else d=1;while(0);l=g;return d|0}function YT(a,e){a=a|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((H0(d[e>>0]|0)|0)<<24>>24|0){case 84:{if(!(N$(e+1|0,138309)|0)){a=a+36|0;b[a>>1]=b[a>>1]|1;a=0}else g=5;break}case 70:{if(!(N$(e+1|0,138313)|0))a=0;else g=5;break}default:g=5}if((g|0)==5){c[f>>2]=e;Ow(0,138318,f)|0;a=1}l=h;return a|0}function ZT(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;if(!(PT(b,138295,0,360,d)|0)){c[a+28>>2]=c[d>>2]&65535;a=0}else a=1;l=e;return a|0}function _T(a,d){a=a|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(!(PT(d,138288,0,65535,e)|0)){b[a+40>>1]=c[e>>2];a=0}else a=1;l=f;return a|0}function $T(a,b){a=a|0;b=b|0;c[a>>2]=m1(b)|0;return 0}function aU(a,b){a=a|0;b=b|0;c[a+16>>2]=m1(b)|0;return 0}function bU(a,b){a=a|0;b=b|0;c[a+4>>2]=m1(b)|0;return 0}function cU(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=g+4|0;do if(!(PT(d,138243,0,65535,e)|0)){d=c[e>>2]|0;if(!d){Ow(0,138251,f)|0;d=1;break}else{b[a+82>>1]=d;d=0;break}}else d=1;while(0);l=g;return d|0}function dU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;i=k;h=0;a:while(1){b:while(1){g=e+1|0;e=a[e>>0]|0;if(!(e<<24>>24))break a;e=e<<24>>24;f=(O$(e)|0)+-98|0;switch(f>>>1|f<<31|0){case 5:{j=5;break b}case 9:{f=2048;break b}case 8:{j=6;break b}case 0:{j=7;break b}default:{}}c[i>>2]=e;c[i+4>>2]=e;Ow(0,138190,i)|0;e=g}if((j|0)==5){j=0;f=1024}else if((j|0)==6){j=0;f=4096}else if((j|0)==7){j=0;f=8192}e=g;h=h|f}if(h<<16>>16!=15360){j=d+36|0;b[j>>1]=b[j>>1]|h}l=k;return 0}function eU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;h=m1(e)|0;g=d+42|0;f=0;e=h;while(1){d=j1(e,138100)|0;if(!d)break;if(((H0(a[d>>0]|0)|0)&255|0)==82){e=d+1|0;if(!(N$(e,138103)|0)){b[g>>1]=b[g>>1]|4;d=f;e=0;f=d;continue}if(!(N$(e,138110)|0)){b[g>>1]=b[g>>1]|2;d=f;e=0;f=d;continue}else{c[i>>2]=d;Ow(0,138116,i)|0;f=1;e=0;continue}}if(!(N$(d,138154)|0)){b[g>>1]=b[g>>1]&-385;d=f;e=0;f=d;continue}if(N$(d,138160)|0?N$(d,138170)|0:0){if(!(N$(d,138176)|0)){b[g>>1]=b[g>>1]|128;d=f;e=0;f=d;continue}if(!(N$(d,138183)|0)){b[g>>1]=b[g>>1]|256;d=f;e=0;f=d;continue}else{c[j>>2]=d;Ow(0,138116,j)|0;f=1;e=0;continue}}b[g>>1]=b[g>>1]|32;d=f;e=0;f=d}C_(h);l=k;return f|0}function fU(a,b){a=a|0;b=b|0;c[a+8>>2]=m1(b)|0;return 0}function gU(a,b){a=a|0;b=b|0;c[a+12>>2]=m1(b)|0;return 0}function hU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((H0(a[e>>0]|0)|0)<<24>>24|0){case 66:{if(!(N$(e+1|0,138046)|0)){d=d+36|0;b[d>>1]=b[d>>1]|16;d=0}else g=7;break}case 84:{if(!(N$(e+1|0,138052)|0)){d=d+36|0;b[d>>1]=b[d>>1]|8;d=0}else g=7;break}case 77:{if(!(N$(e+1|0,138055)|0))d=0;else g=7;break}default:g=7}if((g|0)==7){c[f>>2]=e;Ow(0,138061,f)|0;d=1}l=h;return d|0}function iU(a,d){a=a|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(!(PT(d,138040,0,65535,e)|0)){b[a+38>>1]=c[e>>2];a=0}else a=1;l=f;return a|0}function jU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((H0(a[e>>0]|0)|0)<<24>>24|0){case 76:{if(!(N$(e+1|0,137686)|0)){d=d+36|0;b[d>>1]=b[d>>1]|4;d=0}else g=7;break}case 82:{if(!(N$(e+1|0,137681)|0)){d=d+36|0;b[d>>1]=b[d>>1]|2;d=0}else g=7;break}case 67:{if(!(N$(e+1|0,137690)|0))d=0;else g=7;break}default:g=7}if((g|0)==7){c[f>>2]=e;Ow(0,137696,f)|0;d=1}l=h;return d|0}function kU(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(!(PT(d,138638,0,127,e)|0)){a[b+88>>0]=c[e>>2];b=0}else b=1;l=f;return b|0}function lU(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if((a[d>>0]|0)==42){b=b+112|0;a[b>>0]=a[b>>0]|1;b=0}else{c[e>>2]=d;Ow(0,138598,e)|0;b=1}l=f;return b|0}function mU(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if((a[d>>0]|0)==42){b=b+112|0;a[b>>0]=a[b>>0]|2;b=0}else{c[e>>2]=d;Ow(0,138561,e)|0;b=1}l=f;return b|0}function nU(){var b=0;b=(a[186581]|a[186580])<<24>>24;IV(c[46637]|0);Ww(186564);return b|0}function oU(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j;c[46639]=0;d=0;a:do{b:do switch(a[186583]|0){case 2:{b=-1;break a}case 0:{a[186583]=1;h=6;b=138650;d=0;break}default:{b=c[46638]|0;if(!(a[b>>0]|0)){a[186583]=2;h=7;b=138657;break b}else{d=pU(b)|0;h=d-b|0;break b}}}while(0);c[46647]=c[46646];c[46649]=c[46648];c[46646]=b;c[46648]=h;e=c[46642]|0;f=e-(c[46641]|0)|0;g=c[46637]|0;if(!f)b=UW(g,b,h,(h|0)==0&1)|0;else{if(e>>>0<(c[46643]|0)>>>0)b=e;else{Tw(186564,1)|0;b=c[46642]|0}a[b>>0]=0;b=c[46641]|0;c[46642]=b;b=UW(g,b,f,0)|0}if(!((b|0)!=0|(a[186581]|0)!=0)){g=dX(bX(c[46637]|0)|0)|0;h=vT()|0;c[i>>2]=g;c[i+4>>2]=h;Ow(1,137493,i)|0;wT();a[186581]=1;c[46639]=268}if(d|0)c[46638]=d;b=c[46639]|0}while((b|0)==0);l=j;return b|0}function pU(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;d=b+1|0;e=a[b>>0]|0;a:do if(e<<24>>24==60){e=a[d>>0]|0;if(e<<24>>24==33)if(!(y$(b+2|0,138665,2)|0)){e=qU(b+4|0)|0;d=e;e=a[e>>0]|0;g=8}else{e=d;g=5}else g=6;b:while(1)if((g|0)==5){d=e;e=a[e>>0]|0;g=6;continue}else if((g|0)==6){switch(e<<24>>24){case 62:case 0:{g=8;continue b}default:{}}e=d+1|0;g=5;continue}else if((g|0)==8)if(e<<24>>24==62){g=10;break}else{g=9;break}if((g|0)==9){Ow(0,138668,f)|0;a[186580]=1;break}else if((g|0)==10){d=d+1|0;break}}else{d=b;b=e;while(1){switch(b<<24>>24){case 60:case 0:break a;case 38:{e=d+1|0;if((a[e>>0]|0)==35)g=15;else e=LM(e,186564)|0;break}default:g=15}if((g|0)==15){g=0;e=c[46642]|0;if(e>>>0>=(c[46643]|0)>>>0){Tw(186564,1)|0;e=c[46642]|0}c[46642]=e+1;a[e>>0]=b;e=d+1|0}d=e;b=a[e>>0]|0}}while(0);l=h;return d|0}function qU(b){b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j;f=1;c=b;a:while(1){e=(f|0)==0;d=c;b:while(1){if(e)break a;g=d+1|0;switch(a[d>>0]|0){case 0:{c=g;break a}case 60:{h=5;break b}case 62:{c=-1;break b}default:d=g}}if((h|0)==5){h=0;c=1}f=f+c|0;c=g}d=c+-1|0;do if(a[d>>0]|0){c=c+-3|0;if(c>>>0>=b>>>0?(y$(c,138665,2)|0)==0:0)break;Ow(0,138709,i)|0;a[186580]=1}while(0);l=j;return d|0}function rU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=B_(28)|0;if(!d)d=0;else{e=0;f=0;while(1){if((e|0)>=(b|0))break;r=(c[(c[a+(e<<2)>>2]|0)+4>>2]|0)+f|0;e=e+1|0;f=r}o=d+8|0;c[o>>2]=sU(f<<4)|0;p=d+12|0;c[p>>2]=sU((b<<2)+4|0)|0;e=f<<2;q=d+16|0;c[q>>2]=sU(e)|0;e=sU(e)|0;r=d+20|0;c[r>>2]=e;c[d+4>>2]=f;c[d>>2]=b;f=0;h=0;while(1){c[(c[p>>2]|0)+(h<<2)>>2]=f;if((h|0)>=(b|0))break;j=a+(h<<2)|0;n=c[j>>2]|0;k=c[n+4>>2]|0;l=f+-1|0;g=0;i=f;m=k;while(1){if((g|0)>=(m|0))break;m=(c[o>>2]|0)+(i<<4)|0;e=(c[n>>2]|0)+(g<<4)|0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];m=i+1|0;c[(c[q>>2]|0)+(i<<2)>>2]=m;e=c[r>>2]|0;c[e+(i<<2)>>2]=i+-1;s=c[j>>2]|0;g=g+1|0;i=m;m=c[s+4>>2]|0;n=s}s=l+k|0;c[(c[q>>2]|0)+(s<<2)>>2]=f;c[e+(f<<2)>>2]=s;f=i;h=h+1|0}sV(d)}return d|0}function sU(a){a=a|0;if(!a)a=0;else a=B_(a)|0;return a|0}function tU(a){a=a|0;var b=0,d=0;C_(c[a+8>>2]|0);C_(c[a+12>>2]|0);C_(c[a+16>>2]|0);C_(c[a+20>>2]|0);d=a+24|0;b=c[d>>2]|0;if(b|0){C_(c[b>>2]|0);C_(c[d>>2]|0)}C_(a);return}function uU(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+32|0;m=p+16|0;j=p;c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];n=zV(a,d,m)|0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];o=zV(a,f,m)|0;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];m=iV(j,d,n,m,f,o,a)|0;d=c[a+4>>2]|0;j=d+1|0;f=1;h=d;while(1){h=c[m+(h<<2)>>2]|0;k=f+1|0;if((h|0)==(j|0))break;else f=k}i=B_(k<<4)|0;h=i+(f<<4)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];a=a+8|0;while(1){d=c[m+(d<<2)>>2]|0;f=f+-1|0;h=i+(f<<4)|0;if((d|0)==(j|0))break;e=(c[a>>2]|0)+(d<<4)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2]}c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];if(f|0)qa(138727,138734,148,138740);if(n|0)C_(n);if(o|0)C_(o);c[g+4>>2]=k;c[g>>2]=i;C_(m);l=p;return 1}function vU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;j=l;l=l+48|0;h=j+32|0;g=j+16|0;f=j;i=c[a>>2]|0;d=c[a+4>>2]|0;e=d+-1|0;a=0;while(1){if((a|0)>=(d|0)){a=1;break}m=i+(((e+a|0)%(d|0)|0)<<4)|0;k=i+(a<<4)|0;c[f>>2]=c[m>>2];c[f+4>>2]=c[m+4>>2];c[f+8>>2]=c[m+8>>2];c[f+12>>2]=c[m+12>>2];c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];if((oV(f,g,h)|0)==1){a=0;break}else a=a+1|0}l=j;return a|0}function wU(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+64|0;m=u+48|0;k=u+32|0;s=4;j=B_(40)|0;c[j>>2]=0;n=u+16|0;q=u;r=c[d>>2]|0;i=c[d+4>>2]|0;s=C3(186600,1,j|0,s|0)|0;j=z;o=0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=D3(c[d>>2]|0,s|0,j|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1)d=z;else d=0;while(1){if(d|0){d=-1;break}o=0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];ja(28,n|0,m|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=D3(c[d>>2]|0,s|0,j|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;continue};c[e>>2]=c[n>>2];c[e+4>>2]=c[n+4>>2];c[e+8>>2]=c[n+8>>2];c[e+12>>2]=c[n+12>>2];h=e+16|0;o=0;c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2];ja(28,q|0,m|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=D3(c[d>>2]|0,s|0,j|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;continue};c[h>>2]=c[q>>2];c[h+4>>2]=c[q+4>>2];c[h+8>>2]=c[q+8>>2];c[h+12>>2]=c[q+12>>2];c[46689]=0;o=0;ia(112,4);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=D3(c[d>>2]|0,s|0,j|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;continue}g=c[46690]|0;d=c[46689]|0;c[46689]=d+1;d=g+(d<<4)|0;c[d>>2]=c[r>>2];c[d+4>>2]=c[r+4>>2];c[d+8>>2]=c[r+8>>2];c[d+12>>2]=c[r+12>>2];o=0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2];d=fa(1,a|0,b|0,r|0,i|0,k|0,m|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,s|0,j|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1)d=z;else{t=8;break}}if((t|0)==8)if((d|0)==-1)d=-1;else{c[f+4>>2]=c[46689];c[f>>2]=c[46690];d=0}C_(s|0);l=u;return d|0}function xU(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0.0,i=0.0;d=+h[b>>3];e=b+8|0;f=+h[e>>3];i=f*f+d*d;g=+C(+i);if(i>1.0e-06){h[b>>3]=d/g;h[e>>3]=f/g};c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function yU(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[46693]|0)<(a|0)){b=c[46690]|0;if(!b){e=B_(a<<4)|0;c[46690]=e;if(!e){e=c[15686]|0;c[d>>2]=138749;c[d+4>>2]=531;c[d+8>>2]=138884;f1(e,138757,d)|0;bb(186600,1)}}else{d=E_(b,a<<4)|0;c[46690]=d;if(!d){d=c[15686]|0;c[e>>2]=138749;c[e+4>>2]=537;c[e+8>>2]=138902;f1(d,138757,e)|0;bb(186600,1)}}c[46693]=a}l=f;return}function zU(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0.0,U=0.0,V=0.0,W=0.0;R=l;l=l+336|0;J=R+320|0;I=R+304|0;w=R+144|0;q=R+128|0;G=R+112|0;H=R+96|0;Q=R+80|0;A=R+64|0;C=R+48|0;K=R+32|0;L=R+16|0;M=R;x=R+288|0;y=R+272|0;z=R+256|0;B=R+240|0;D=R+224|0;E=R+208|0;N=R+192|0;O=R+176|0;P=R+160|0;i=c[46692]|0;do if((c[46691]|0)<(e|0)){if(!i){i=B_(e*40|0)|0;c[46692]=i;if(!i){i=-1;break}}else{i=E_(i,e*40|0)|0;c[46692]=i;if(!i){i=-1;break}}c[46691]=e;k=6}else k=6;while(0);if((k|0)==6){h[i>>3]=0.0;k=1;j=0.0;while(1){if((k|0)>=(e|0))break;n=d+(k<<4)|0;F=d+(k+-1<<4)|0;c[I>>2]=c[n>>2];c[I+4>>2]=c[n+4>>2];c[I+8>>2]=c[n+8>>2];c[I+12>>2]=c[n+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];v=+AU(I,J)+j;h[i+(k*40|0)>>3]=v;k=k+1|0;j=v}F=e+-1|0;n=i+(F*40|0)|0;k=1;while(1){if((k|0)>=(e|0))break;S=i+(k*40|0)|0;h[S>>3]=+h[S>>3]/+h[n>>3];k=k+1|0}k=0;while(1){if((k|0)>=(e|0))break;S=i+(k*40|0)+8|0;n=i+(k*40|0)|0;v=+BU(+h[n>>3]);c[J>>2]=c[f>>2];c[J+4>>2]=c[f+4>>2];c[J+8>>2]=c[f+8>>2];c[J+12>>2]=c[f+12>>2];CU(x,J,v);c[S>>2]=c[x>>2];c[S+4>>2]=c[x+4>>2];c[S+8>>2]=c[x+8>>2];c[S+12>>2]=c[x+12>>2];S=i+(k*40|0)+24|0;v=+DU(+h[n>>3]);c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];CU(y,J,v);c[S>>2]=c[y>>2];c[S+4>>2]=c[y+4>>2];c[S+8>>2]=c[y+8>>2];c[S+12>>2]=c[y+12>>2];k=k+1|0}c[I>>2]=c[f>>2];c[I+4>>2]=c[f+4>>2];c[I+8>>2]=c[f+8>>2];c[I+12>>2]=c[f+12>>2];c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];EU(d,e,i,I,J,G,A,H,C);c[q>>2]=c[G>>2];c[q+4>>2]=c[G+4>>2];c[q+8>>2]=c[G+8>>2];c[q+12>>2]=c[G+12>>2];c[w>>2]=c[A>>2];c[w+4>>2]=c[A+4>>2];c[w+8>>2]=c[A+8>>2];c[w+12>>2]=c[A+12>>2];c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];if(!(FU(a,b,q,w,I,J,d,e)|0)){c[J>>2]=c[A>>2];c[J+4>>2]=c[A+4>>2];c[J+8>>2]=c[A+8>>2];c[J+12>>2]=c[A+12>>2];CU(z,J,.3333333333333333);c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[J>>2]=c[z>>2];c[J+4>>2]=c[z+4>>2];c[J+8>>2]=c[z+8>>2];c[J+12>>2]=c[z+12>>2];GU(B,I,J);v=+h[B>>3];u=+h[B+8>>3];c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];CU(D,J,.3333333333333333);c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];c[J>>2]=c[D>>2];c[J+4>>2]=c[D+4>>2];c[J+8>>2]=c[D+8>>2];c[J+12>>2]=c[D+12>>2];HU(E,I,J);t=+h[E>>3];p=+h[E+8>>3];q=c[46692]|0;r=+h[G>>3];s=+h[H>>3];o=+h[G+8>>3];m=+h[H+8>>3];n=Q+8|0;i=-1;j=-1.0;k=1;while(1){if((k|0)>=(F|0))break;T=+h[q+(k*40|0)>>3];U=+IU(T);V=+BU(T);W=+DU(T);T=+JU(T);h[Q>>3]=V*v+r*U+W*t+s*T;h[n>>3]=W*p+V*u+o*U+m*T;S=d+(k<<4)|0;c[I>>2]=c[Q>>2];c[I+4>>2]=c[Q+4>>2];c[I+8>>2]=c[Q+8>>2];c[I+12>>2]=c[Q+12>>2];c[J>>2]=c[S>>2];c[J+4>>2]=c[S+4>>2];c[J+8>>2]=c[S+8>>2];c[J+12>>2]=c[S+12>>2];T=+AU(I,J);S=T>j;i=S?k:i;j=S?T:j;k=k+1|0}S=d+(i<<4)|0;Q=d+(i+-1<<4)|0;c[I>>2]=c[S>>2];c[I+4>>2]=c[S+4>>2];c[I+8>>2]=c[S+8>>2];c[I+12>>2]=c[S+12>>2];c[J>>2]=c[Q>>2];c[J+4>>2]=c[Q+4>>2];c[J+8>>2]=c[Q+8>>2];c[J+12>>2]=c[Q+12>>2];HU(N,I,J);c[J>>2]=c[N>>2];c[J+4>>2]=c[N+4>>2];c[J+8>>2]=c[N+8>>2];c[J+12>>2]=c[N+12>>2];xU(L,J);Q=i+1|0;N=d+(Q<<4)|0;c[I>>2]=c[N>>2];c[I+4>>2]=c[N+4>>2];c[I+8>>2]=c[N+8>>2];c[I+12>>2]=c[N+12>>2];c[J>>2]=c[S>>2];c[J+4>>2]=c[S+4>>2];c[J+8>>2]=c[S+8>>2];c[J+12>>2]=c[S+12>>2];HU(O,I,J);c[J>>2]=c[O>>2];c[J+4>>2]=c[O+4>>2];c[J+8>>2]=c[O+8>>2];c[J+12>>2]=c[O+12>>2];xU(M,J);c[I>>2]=c[L>>2];c[I+4>>2]=c[L+4>>2];c[I+8>>2]=c[L+8>>2];c[I+12>>2]=c[L+12>>2];c[J>>2]=c[M>>2];c[J+4>>2]=c[M+4>>2];c[J+8>>2]=c[M+8>>2];c[J+12>>2]=c[M+12>>2];GU(P,I,J);c[J>>2]=c[P>>2];c[J+4>>2]=c[P+4>>2];c[J+8>>2]=c[P+8>>2];c[J+12>>2]=c[P+12>>2];xU(K,J);c[I>>2]=c[f>>2];c[I+4>>2]=c[f+4>>2];c[I+8>>2]=c[f+8>>2];c[I+12>>2]=c[f+12>>2];c[J>>2]=c[K>>2];c[J+4>>2]=c[K+4>>2];c[J+8>>2]=c[K+8>>2];c[J+12>>2]=c[K+12>>2];zU(a,b,d,Q,I,J)|0;c[I>>2]=c[K>>2];c[I+4>>2]=c[K+4>>2];c[I+8>>2]=c[K+8>>2];c[I+12>>2]=c[K+12>>2];c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];zU(a,b,S,e-i|0,I,J)|0;i=0}else i=0}l=R;return i|0}function AU(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[b>>3]-+h[a>>3];d=+h[b+8>>3]-+h[a+8>>3];return +(+C(+(d*d+c*c)))}function BU(a){a=+a;var b=0.0;b=1.0-a;return +(b*b*(a*3.0))}function CU(a,b,d){a=a|0;b=b|0;d=+d;var e=0;h[b>>3]=+h[b>>3]*d;e=b+8|0;h[e>>3]=+h[e>>3]*d;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function DU(a){a=+a;return +(a*a*3.0*(1.0-a))}function EU(a,b,d,e,f,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0,K=0,L=0,M=0;G=l;l=l+128|0;B=G+112|0;v=G+80|0;u=G;r=G+96|0;s=G+64|0;t=G+48|0;C=G+32|0;D=G+16|0;E=a+(b+-1<<4)|0;q=0;w=0.0;x=0.0;y=0.0;z=0.0;A=0.0;while(1){if((q|0)>=(b|0))break;K=d+(q*40|0)+8|0;c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];H=+PU(v,B)+x;J=d+(q*40|0)+24|0;c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[J>>2];c[B+4>>2]=c[J+4>>2];c[B+8>>2]=c[J+8>>2];c[B+12>>2]=c[J+12>>2];p=+PU(v,B)+A;c[v>>2]=c[J>>2];c[v+4>>2]=c[J+4>>2];c[v+8>>2]=c[J+8>>2];c[v+12>>2]=c[J+12>>2];c[B>>2]=c[J>>2];c[B+4>>2]=c[J+4>>2];c[B+8>>2]=c[J+8>>2];c[B+12>>2]=c[J+12>>2];o=+PU(v,B)+y;L=a+(q<<4)|0;M=d+(q*40|0)|0;I=+QU(+h[M>>3]);c[B>>2]=c[a>>2];c[B+4>>2]=c[a+4>>2];c[B+8>>2]=c[a+8>>2];c[B+12>>2]=c[a+12>>2];CU(s,B,I);I=+RU(+h[M>>3]);c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];CU(t,B,I);c[v>>2]=c[s>>2];c[v+4>>2]=c[s+4>>2];c[v+8>>2]=c[s+8>>2];c[v+12>>2]=c[s+12>>2];c[B>>2]=c[t>>2];c[B+4>>2]=c[t+4>>2];c[B+8>>2]=c[t+8>>2];c[B+12>>2]=c[t+12>>2];GU(r,v,B);c[v>>2]=c[L>>2];c[v+4>>2]=c[L+4>>2];c[v+8>>2]=c[L+8>>2];c[v+12>>2]=c[L+12>>2];c[B>>2]=c[r>>2];c[B+4>>2]=c[r+4>>2];c[B+8>>2]=c[r+8>>2];c[B+12>>2]=c[r+12>>2];HU(u,v,B);c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];I=+PU(v,B)+w;c[v>>2]=c[J>>2];c[v+4>>2]=c[J+4>>2];c[v+8>>2]=c[J+8>>2];c[v+12>>2]=c[J+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];q=q+1|0;w=I;x=H;y=o;z=+PU(v,B)+z;A=p}o=y*x-A*A;p=o>=0.0?o:-o;if(!(p>=1.0e-06?(m=(y*w-A*z)/o,n=(x*z-A*w)/o,!(p<1.0e-06|m<=0.0|n<=0.0)):0))F=6;if((F|0)==6){c[v>>2]=c[a>>2];c[v+4>>2]=c[a+4>>2];c[v+8>>2]=c[a+8>>2];c[v+12>>2]=c[a+12>>2];c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];m=+AU(v,B)*.3333333333333333;n=m};c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[B>>2]=c[e>>2];c[B+4>>2]=c[e+4>>2];c[B+8>>2]=c[e+8>>2];c[B+12>>2]=c[e+12>>2];CU(C,B,m);c[i>>2]=c[C>>2];c[i+4>>2]=c[C+4>>2];c[i+8>>2]=c[C+8>>2];c[i+12>>2]=c[C+12>>2];c[j>>2]=c[E>>2];c[j+4>>2]=c[E+4>>2];c[j+8>>2]=c[E+8>>2];c[j+12>>2]=c[E+12>>2];c[B>>2]=c[f>>2];c[B+4>>2]=c[f+4>>2];c[B+8>>2]=c[f+8>>2];c[B+12>>2]=c[f+12>>2];CU(D,B,n);c[k>>2]=c[D>>2];c[k+4>>2]=c[D+4>>2];c[k+8>>2]=c[D+8>>2];c[k+12>>2]=c[D+12>>2];l=G;return}function FU(a,b,d,e,f,g,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0,u=0.0,v=0,w=0.0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0.0,E=0;C=l;l=l+64|0;B=C;z=(j|0)==2;y=+h[d>>3];u=+h[d+8>>3];v=B+8|0;w=+h[e>>3];x=B+16|0;p=+h[e+8>>3];q=B+24|0;r=+h[f>>3];s=+h[g>>3];t=B+32|0;o=+h[f+8>>3];n=+h[g+8>>3];e=B+40|0;f=B+48|0;g=B+56|0;d=1;k=4.0;m=4.0;while(1){h[B>>3]=y;h[v>>3]=u;D=m*.3333333333333333;h[x>>3]=D*w+y;h[q>>3]=D*p+u;D=k*.3333333333333333;h[t>>3]=r-D*s;h[e>>3]=o-D*n;h[f>>3]=r;h[g>>3]=o;if(d?(D=+KU(B,4),D<+KU(i,j)+-.001):0){d=0;break}if(LU(a,b,B)|0){A=5;break}if(m==0.0&k==0.0){A=9;break}E=m>.01;d=0;k=E?k*.5:0.0;m=E?m*.5:0.0}a:do if((A|0)==5){yU((c[46689]|0)+4|0);e=c[46690]|0;d=1;while(1){if((d|0)==4){d=1;break a}E=c[46689]|0;h[e+(E<<4)>>3]=+h[B+(d<<4)>>3];D=+h[B+(d<<4)+8>>3];c[46689]=E+1;h[e+(E<<4)+8>>3]=D;d=d+1|0}}else if((A|0)==9)if(z){yU((c[46689]|0)+4|0);e=c[46690]|0;d=1;while(1){if((d|0)==4){d=1;break a}E=c[46689]|0;h[e+(E<<4)>>3]=+h[B+(d<<4)>>3];D=+h[B+(d<<4)+8>>3];c[46689]=E+1;h[e+(E<<4)+8>>3]=D;d=d+1|0}}else d=0;while(0);l=C;return d|0}function GU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]+ +h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]+ +h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function HU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]-+h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]-+h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function IU(a){a=+a;a=1.0-a;return +(a*a*a)}function JU(a){a=+a;return +(a*a*a)}function KU(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0,f=0.0,g=0;c=0.0;d=1;while(1){if((d|0)>=(b|0))break;g=d+-1|0;e=+h[a+(d<<4)>>3]-+h[a+(g<<4)>>3];f=+h[a+(d<<4)+8>>3]-+h[a+(g<<4)+8>>3];c=+C(+(f*f+e*e))+c;d=d+1|0}return +c}function LU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0.0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0;C=l;l=l+64|0;t=C+32|0;u=C;w=u+16|0;y=d+16|0;z=d+32|0;A=d+48|0;B=d+8|0;g=d+24|0;i=d+40|0;j=d+56|0;k=u+8|0;m=u+24|0;f=0;a:while(1){if((f|0)>=(b|0)){e=1;break}n=a+(f<<5)|0;c[u>>2]=c[n>>2];c[u+4>>2]=c[n+4>>2];c[u+8>>2]=c[n+8>>2];c[u+12>>2]=c[n+12>>2];n=a+(f<<5)+16|0;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];n=MU(d,u,t)|0;b:do if((n|0)!=4){o=+h[u>>3];p=+h[k>>3];q=+h[w>>3];r=+h[m>>3];e=0;while(1){if((e|0)>=(n|0))break b;s=+h[t+(e<<3)>>3];if((!(s<1.0e-06|s>.999999)?(x=s*s*s,E=s*3.0,D=1.0-s,s=E*s*D,v=D*D,E=v*E,D=v*D,v=+h[y>>3]*E+ +h[d>>3]*D+ +h[z>>3]*s+ +h[A>>3]*x,x=+h[g>>3]*E+ +h[B>>3]*D+ +h[i>>3]*s+ +h[j>>3]*x,s=v-o,D=x-p,!(D*D+s*s<.001)):0)?(E=v-q,D=x-r,!(D*D+E*E<.001)):0){e=0;break a}e=e+1|0}}while(0);f=f+1|0}l=C;return e|0}function MU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+96|0;s=v+48|0;t=v+24|0;k=v;u=v+80|0;p=+h[b>>3];g=+h[b+16>>3]-p;q=+h[b+8>>3];j=+h[b+24>>3]-q;c[u>>2]=0;a:do if(!(g==0.0)){j=j/g;m=a+16|0;n=a+32|0;o=a+48|0;NU(+h[a+8>>3]-+h[a>>3]*j,+h[a+24>>3]-+h[m>>3]*j,+h[a+40>>3]-+h[n>>3]*j,+h[a+56>>3]-+h[o>>3]*j,s);h[s>>3]=j*p-q+ +h[s>>3];e=jV(s,t)|0;if((e|0)==4)b=4;else{f=s+8|0;i=s+16|0;k=s+24|0;g=1.0/g;b=0;while(1){if((b|0)>=(e|0))break;j=+h[t+(b<<3)>>3];if(j>=0.0&j<=1.0?(NU(+h[a>>3],+h[m>>3],+h[n>>3],+h[o>>3],s),q=(+h[s>>3]-p+((+h[k>>3]*j+ +h[i>>3])*j+ +h[f>>3])*j)*g,q>=0.0&q<=1.0):0)OU(j,d,u);b=b+1|0}b=c[u>>2]|0}}else{NU(+h[a>>3],+h[a+16>>3],+h[a+32>>3],+h[a+48>>3],s);h[s>>3]=+h[s>>3]-p;r=jV(s,t)|0;if(!(j==0.0)){if((r|0)==4){b=4;break}m=a+8|0;n=a+24|0;o=a+40|0;e=a+56|0;f=s+8|0;i=s+16|0;k=s+24|0;g=1.0/j;b=0;while(1){if((b|0)>=(r|0))break;j=+h[t+(b<<3)>>3];if(j>=0.0&j<=1.0?(NU(+h[m>>3],+h[n>>3],+h[o>>3],+h[e>>3],s),p=(+h[s>>3]-q+((+h[k>>3]*j+ +h[i>>3])*j+ +h[f>>3])*j)*g,p>=0.0&p<=1.0):0)OU(j,d,u);b=b+1|0}b=c[u>>2]|0;break}NU(+h[a+8>>3],+h[a+24>>3],+h[a+40>>3],+h[a+56>>3],s);h[s>>3]=+h[s>>3]-q;i=jV(s,k)|0;b=(i|0)==4;b:do if((r|0)==4){if(b){b=4;break a}else b=0;while(1){if((b|0)>=(i|0))break b;OU(+h[k+(b<<3)>>3],d,u);b=b+1|0}}else{if(b){b=0;while(1){if((b|0)>=(r|0))break b;OU(+h[t+(b<<3)>>3],d,u);b=b+1|0}}else e=0;while(1){if((e|0)>=(r|0))break b;f=t+(e<<3)|0;b=0;while(1){if((b|0)>=(i|0))break;g=+h[f>>3];if(g==+h[k+(b<<3)>>3])OU(g,d,u);b=b+1|0}e=e+1|0}}while(0);b=c[u>>2]|0}while(0);l=v;return b|0}function NU(a,b,c,d,e){a=+a;b=+b;c=+c;d=+d;e=e|0;h[e+24>>3]=d-a+(b-c)*3.0;h[e+16>>3]=(c+a)*3.0-b*6.0;h[e+8>>3]=(b-a)*3.0;h[e>>3]=a;return}function OU(a,b,d){a=+a;b=b|0;d=d|0;var e=0;if(a>=0.0&a<=1.0){e=c[d>>2]|0;h[b+(e<<3)>>3]=a;c[d>>2]=e+1}return}function PU(a,b){a=a|0;b=b|0;return +(+h[b+8>>3]*+h[a+8>>3]+ +h[b>>3]*+h[a>>3])}function QU(a){a=+a;var b=0.0;b=1.0-a;return +(b*b*(b+a*3.0))}function RU(a){a=+a;return +(a*a*((1.0-a)*3.0+a))}function SU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0;H=l;l=l+112|0;E=H+80|0;D=H+64|0;C=H+48|0;G=4;F=B_(40)|0;c[F>>2]=0;w=H+32|0;x=H+16|0;y=H;A=H+96|0;G=C3(186776,1,F|0,G|0)|0;F=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1)e=z;else e=0;a:while(1){if(e|0){e=-2;break}g=a+4|0;o=0;ia(113,c[g>>2]|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}c[46733]=0;c[46734]=0;o=0;ia(114,c[g>>2]<<1|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}m=(c[46736]|0)/2|0;c[46737]=m;c[46738]=m+-1;m=c[g>>2]|0;g=c[a>>2]|0;e=0;f=-1;i=t;while(1){if((e|0)>=(m|0))break;I=+h[g+(e<<4)>>3];v=i>I;u=v?e:f;e=e+1|0;f=u;i=v?I:i}v=g+(f<<4)|0;c[x>>2]=c[v>>2];c[x+4>>2]=c[v+4>>2];c[x+8>>2]=c[v+8>>2];c[x+12>>2]=c[v+12>>2];v=g+(((f|0)==0?m:f)+-1<<4)|0;c[w>>2]=c[v>>2];c[w+4>>2]=c[v+4>>2];c[w+8>>2]=c[v+8>>2];c[w+12>>2]=c[v+12>>2];v=g+(((f|0)==(m+-1|0)?0:f+1|0)<<4)|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];I=+h[x>>3];if((+h[w>>3]==I?I==+h[y>>3]:0)?+h[y+8>>3]>+h[x+8>>3]:0)v=15;else v=12;b:do if((v|0)==12){v=0;o=0;e=ca(33,w|0,x|0,y|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,G|0,F|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}if((e|0)==1){g=c[46740]|0;e=c[46741]|0;f=0;while(1){if((f|0)>=(m|0))break b;j=c[a>>2]|0;if(!(((f|0)>0?(B=f+-1|0,+h[j+(f<<4)>>3]==+h[j+(B<<4)>>3]):0)?+h[j+(f<<4)+8>>3]==+h[j+(B<<4)+8>>3]:0)){u=c[46733]|0;c[g+(u<<3)>>2]=j+(f<<4);c[g+(u<<3)+4>>2]=g+(((u|0)%(m|0)|0)<<3);c[e+(u<<2)>>2]=g+(u<<3);c[46733]=u+1}f=f+1|0}}else v=15}while(0);c:do if((v|0)==15){v=0;j=c[46740]|0;e=c[46741]|0;g=m;while(1){f=g+-1|0;if((g|0)<=0)break c;k=c[a>>2]|0;if(((g|0)<(m|0)?+h[k+(f<<4)>>3]==+h[k+(g<<4)>>3]:0)?+h[k+(f<<4)+8>>3]==+h[k+(g<<4)+8>>3]:0){g=f;continue}g=c[46733]|0;c[j+(g<<3)>>2]=k+(f<<4);c[j+(g<<3)+4>>2]=j+(((g|0)%(m|0)|0)<<3);c[e+(g<<2)>>2]=j+(g<<3);c[46733]=g+1;g=f}}while(0);o=0;ja(29,e|0,c[46733]|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}j=0;e=c[46734]|0;d:while(1){if((j|0)>=(e|0)){s=0;break}k=j+1|0;g=k;while(1){if((g|0)>=(e|0)){j=k;continue d}o=0;ja(30,j|0,g|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue a}g=g+1|0;e=c[46734]|0}}while(1){if((s|0)>=(e|0))break;o=0;f=aa(103,s|0,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=D3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}if(f|0)break;s=s+1|0}if((s|0)==(e|0)){e=c[15686]|0;o=0;c[C>>2]=138776;c[C+4>>2]=192;c[C+8>>2]=138787;ca(29,e|0,138757,C|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=41;break}}u=b+16|0;k=0;while(1){if((k|0)>=(e|0))break;o=0;f=aa(103,k|0,u|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=D3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}if(f|0)break;k=k+1|0}if((k|0)==(e|0)){e=c[15686]|0;o=0;c[D>>2]=138776;c[D+4>>2]=200;c[D+8>>2]=138820;ca(29,e|0,138757,D|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=48;break}}o=0;e=aa(104,s|0,k|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,G|0,F|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue}if(!e){e=c[15686]|0;o=0;c[E>>2]=138776;c[E+4>>2]=207;c[E+8>>2]=138858;ca(29,e|0,138757,E|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}o=0;ia(115,2);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=53;break}}if((s|0)==(k|0)){o=0;ia(115,2);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,G|0,F|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=56;break}}c[A>>2]=b;c[A+4>>2]=0;f=A+8|0;c[f>>2]=u;c[A+12>>2]=0;o=0;ja(31,1,A|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=D3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue}c[46739]=c[46737];q=s;e:while(1){if((q|0)==-1){g=f;e=0;break}r=c[46743]|0;c[r+(q*52|0)>>2]=2;e=0;while(1){if((e|0)>=3){v=65;break}v=c[r+(q*52|0)+4+(e<<4)+12>>2]|0;if(v|0?(c[v>>2]|0)==1:0){v=68;break}e=e+1|0}if((v|0)==65){v=0;if((e|0)==3){e=c[46735]|0;k=c[e+(c[46738]<<2)>>2]|0;o=0;e=ca(33,u|0,c[c[e+(c[46737]<<2)>>2]>>2]|0,c[k>>2]|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=D3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}j=(e|0)==1;n=j?f:k;j=j?k:f}else v=68}if((v|0)==68){v=0;k=c[r+(q*52|0)+4+(e<<4)>>2]|0;m=c[r+(q*52|0)+4+(e<<4)+4>>2]|0;o=0;e=ca(33,c[k>>2]|0,c[c[r+(q*52|0)+4+(((e+1|0)%3|0)<<4)+4>>2]>>2]|0,c[m>>2]|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=D3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}j=(e|0)==1;n=j?k:m;j=j?m:k}do if((q|0)==(s|0)){o=0;ja(31,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=D3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(31,1,n|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=D3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}e=0}else{m=c[46735]|0;if((c[m+(c[46737]<<2)>>2]|0)!=(n|0)?(c[m+(c[46738]<<2)>>2]|0)!=(n|0):0){o=0;j=$(34,n|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){g=D3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(32,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=D3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(31,1,n|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=D3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}if((j|0)<=(c[46739]|0)){e=0;break}c[46739]=j;e=0;break}o=0;k=$(34,j|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){g=D3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(32,1,k|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=D3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ja(31,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=D3(c[e>>2]|0,G|0,F|0)|0;if(!g)bb(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}if((k|0)>=(c[46739]|0)){e=0;break}c[46739]=k;e=0}while(0);while(1){if((e|0)>=3){q=-1;continue e}g=c[r+(q*52|0)+4+(e<<4)+12>>2]|0;if(g|0?(c[g>>2]|0)==1:0)break;e=e+1|0}q=(g-(c[46743]|0)|0)/52|0}while(1){if(!g)break;g=c[g+4>>2]|0;e=e+1|0}o=0;ia(115,e|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){j=D3(c[g>>2]|0,G|0,F|0)|0;if(!j)bb(g|0,p|0);z=p}else j=-1;if((j|0)==1)e=z;else{v=94;break}}if((v|0)==41)e=-1;else if((v|0)==48)e=-1;else if((v|0)==53){c[d+4>>2]=2;e=c[46742]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];F=e+16|0;c[F>>2]=c[u>>2];c[F+4>>2]=c[u+4>>2];c[F+8>>2]=c[u+8>>2];c[F+12>>2]=c[u+12>>2];c[d>>2]=e;e=0}else if((v|0)==56){c[d+4>>2]=2;e=c[46742]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];F=e+16|0;c[F>>2]=c[u>>2];c[F+4>>2]=c[u+4>>2];c[F+8>>2]=c[u+8>>2];c[F+12>>2]=c[u+12>>2];c[d>>2]=e;e=0}else if((v|0)==94){c[d+4>>2]=e;g=c[46742]|0;while(1){e=e+-1|0;if(!f)break;F=g+(e<<4)|0;E=c[f>>2]|0;c[F>>2]=c[E>>2];c[F+4>>2]=c[E+4>>2];c[F+8>>2]=c[E+8>>2];c[F+12>>2]=c[E+12>>2];f=c[f+4>>2]|0}c[d>>2]=g;e=0}C_(G|0);l=H;return e|0}function TU(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+64|0;e=h+48|0;g=h+32|0;f=h+16|0;d=h;if((c[46746]|0)<(a|0)){b=c[46740]|0;if(!b){g=B_(a<<3)|0;c[46740]=g;if(!g){g=c[15686]|0;c[d>>2]=138776;c[d+4>>2]=523;c[d+8>>2]=139026;f1(g,138757,d)|0;bb(186776,1)}g=B_(a<<2)|0;c[46741]=g;if(!g){g=c[15686]|0;c[f>>2]=138776;c[f+4>>2]=527;c[f+8>>2]=139045;f1(g,138757,f)|0;bb(186776,1)}}else{f=E_(b,a<<3)|0;c[46740]=f;if(!f){f=c[15686]|0;c[g>>2]=138776;c[g+4>>2]=533;c[g+8>>2]=139065;f1(f,138757,g)|0;bb(186776,1)}g=E_(c[46741]|0,a<<2)|0;c[46741]=g;if(!g){g=c[15686]|0;c[e>>2]=138776;c[e+4>>2]=539;c[e+8>>2]=139085;f1(g,138757,e)|0;bb(186776,1)}}c[46746]=a}l=h;return}function UU(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[46736]|0)<(a|0)){b=c[46735]|0;if(!b){e=B_(a<<2)|0;c[46735]=e;if(!e){e=c[15686]|0;c[d>>2]=138776;c[d+4>>2]=573;c[d+8>>2]=138981;f1(e,138757,d)|0;bb(186776,1)}}else{d=E_(b,a<<2)|0;c[46735]=d;if(!d){d=c[15686]|0;c[e>>2]=138776;c[e+4>>2]=580;c[e+8>>2]=139003;f1(d,138757,e)|0;bb(186776,1)}}c[46736]=a}l=f;return}function VU(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];d=(+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d);return (d>0.0?1:d<0.0?2:3)|0}function WU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;a:while(1){if((b|0)>3)e=0;else{b=9;break}while(1){if((e|0)>=(b|0)){b=8;break a}f=e+1|0;d=(f|0)%(b|0)|0;g=(e+2|0)%(b|0)|0;if(!(cV(e,g,a,b)|0))e=f;else break}dV(c[a+(e<<2)>>2]|0,c[a+(d<<2)>>2]|0,c[a+(g<<2)>>2]|0);b=b+-1|0;while(1){if((d|0)>=(b|0))continue a;g=d+1|0;c[a+(d<<2)>>2]=c[a+(g<<2)>>2];d=g}}if((b|0)==8){a=c[15686]|0;c[h>>2]=138776;c[h+4>>2]=324;c[h+8>>2]=138921;f1(a,138757,h)|0}else if((b|0)==9)dV(c[a>>2]|0,c[a+4>>2]|0,c[a+8>>2]|0);l=i;return}function XU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=c[46743]|0;j=i+(a*52|0)|0;k=i+(b*52|0)|0;g=0;while(1){if((g|0)==3)break;l=i+(a*52|0)+4+(g<<4)|0;m=i+(a*52|0)+4+(g<<4)+4|0;n=i+(a*52|0)+4+(g<<4)+12|0;f=0;while(1){if((f|0)==3)break;o=c[c[l>>2]>>2]|0;h=c[c[i+(b*52|0)+4+(f<<4)>>2]>>2]|0;if((o|0)==(h|0)){d=c[c[i+(b*52|0)+4+(f<<4)+4>>2]>>2]|0;if((c[c[m>>2]>>2]|0)==(d|0))e=10;else e=8}else{d=c[c[i+(b*52|0)+4+(f<<4)+4>>2]>>2]|0;e=8}if(((e|0)==8?(e=0,(o|0)==(d|0)):0)?(c[c[m>>2]>>2]|0)==(h|0):0)e=10;if((e|0)==10){c[n>>2]=k;c[i+(b*52|0)+4+(f<<4)+12>>2]=j}f=f+1|0}g=g+1|0}return}function YU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[46743]|0;d=0;e=0;while(1){if((e|0)==3)break;d=d+((VU(c[c[f+(a*52|0)+4+(e<<4)>>2]>>2]|0,c[c[f+(a*52|0)+4+(e<<4)+4>>2]>>2]|0,b)|0)!=2&1)|0;e=e+1|0}return ((d|0)==3|(d|0)==0)&1|0}function ZU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[46743]|0;e=d+(a*52|0)|0;a:do if(!(c[e>>2]|0)){c[e>>2]=1;if((a|0)==(b|0))d=1;else{f=0;while(1){if((f|0)>=3)break;e=c[d+(a*52|0)+4+(f<<4)+12>>2]|0;if(e){if(ZU((e-d|0)/52|0,b)|0){d=1;break a}d=c[46743]|0}f=f+1|0}c[d+(a*52|0)>>2]=0;d=0}}else d=0;while(0);return d|0}function _U(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[46744]|0)<(a|0)){b=c[46742]|0;if(!b){e=B_(a<<4)|0;c[46742]=e;if(!e){e=c[15686]|0;c[d>>2]=138776;c[d+4>>2]=593;c[d+8>>2]=138884;f1(e,138757,d)|0;bb(186776,1)}}else{d=E_(b,a<<4)|0;c[46742]=d;if(!d){d=c[15686]|0;c[e>>2]=138776;c[e+4>>2]=599;c[e+8>>2]=138902;f1(d,138757,e)|0;bb(186776,1)}}c[46744]=a}l=f;return}function $U(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[46738]|0;e=c[46737]|0;f=(d|0)>=(e|0);if((a|0)==1)if(f){c[b+4>>2]=c[(c[46735]|0)+(e<<2)>>2];a=186948;d=-1}else{a=186948;d=-1}else if(f){c[b+4>>2]=c[(c[46735]|0)+(d<<2)>>2];a=186952;d=1}else{a=186952;d=1}f=(c[a>>2]|0)+d|0;c[a>>2]=f;c[(c[46735]|0)+(f<<2)>>2]=b;return}function aV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[46739]|0;g=c[46735]|0;b=c[46737]|0;while(1){if((b|0)>=(f|0)){e=4;break}d=b+1|0;if((VU(c[c[g+(d<<2)>>2]>>2]|0,c[c[g+(b<<2)>>2]>>2]|0,c[a>>2]|0)|0)==1)break;else b=d}a:do if((e|0)==4){b=c[46738]|0;while(1){if((b|0)<=(f|0)){b=f;break a}d=b+-1|0;if((VU(c[c[g+(d<<2)>>2]>>2]|0,c[c[g+(b<<2)>>2]>>2]|0,c[a>>2]|0)|0)==2)break;else b=d}}while(0);return b|0}function bV(a,b){a=a|0;b=b|0;c[((a|0)==1?186952:186948)>>2]=b;return}function cV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=c[c[d+(((a+-1+e|0)%(e|0)|0)<<2)>>2]>>2]|0;i=c[c[d+(a<<2)>>2]>>2]|0;g=c[c[d+(((a+1|0)%(e|0)|0)<<2)>>2]>>2]|0;k=(VU(f,i,g)|0)==1;j=c[c[d+(b<<2)>>2]>>2]|0;if(k)if((VU(i,j,f)|0)==1){f=VU(j,i,g)|0;g=1;h=5}else f=0;else{f=VU(i,j,g)|0;g=2;h=5}a:do if((h|0)==5)if((f|0)==(g|0)){f=0;while(1){if((f|0)>=(e|0)){f=1;break a}g=f;f=f+1|0;h=(f|0)%(e|0)|0;if((h|0)==(b|0)|((g|0)==(b|0)|((g|0)==(a|0)|(h|0)==(a|0))))continue;if(fV(i,j,c[c[d+(g<<2)>>2]>>2]|0,c[c[d+(h<<2)>>2]>>2]|0)|0){f=0;break}}}else f=0;while(0);return f|0}function dV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[46734]|0;f=c[46745]|0;if((e|0)<(f|0))h=e;else{eV(f+20|0);h=c[46734]|0}g=c[46743]|0;c[46734]=h+1;f=g+(h*52|0)|0;c[f>>2]=0;c[g+(h*52|0)+4>>2]=a;c[g+(h*52|0)+8>>2]=b;c[g+(h*52|0)+16>>2]=0;c[g+(h*52|0)+20>>2]=b;c[g+(h*52|0)+24>>2]=d;c[g+(h*52|0)+32>>2]=0;c[g+(h*52|0)+36>>2]=d;c[g+(h*52|0)+40>>2]=a;c[g+(h*52|0)+48>>2]=0;e=0;while(1){if((e|0)==3)break;c[g+(h*52|0)+4+(e<<4)+8>>2]=f;e=e+1|0}return}function eV(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[46745]|0)<(a|0)){b=c[46743]|0;if(!b){e=B_(a*52|0)|0;c[46743]=e;if(!e){e=c[15686]|0;c[d>>2]=138776;c[d+4>>2]=552;c[d+8>>2]=138942;f1(e,138757,d)|0;bb(186776,1)}}else{d=E_(b,a*52|0)|0;c[46743]=d;if(!d){d=c[15686]|0;c[e>>2]=138776;c[e+4>>2]=558;c[e+8>>2]=138961;f1(d,138757,e)|0;bb(186776,1)}}c[46745]=a}l=f;return}function fV(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;f=VU(a,b,c)|0;if((((f|0)!=3?(g=VU(a,b,d)|0,(g|0)!=3):0)?(h=VU(c,d,a)|0,(h|0)!=3):0)?(e=VU(c,d,b)|0,(e|0)!=3):0)return ((f|0)==1^(g|0)==1)&((h|0)==1^(e|0)==1)&1|0;if(((gV(a,b,c)|0)==0?(gV(a,b,d)|0)==0:0)?(gV(c,d,a)|0)==0:0)return (gV(c,d,b)|0)!=0|0;return 1}function gV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;e=+h[a>>3];g=+h[b>>3]-e;f=+h[a+8>>3];d=+h[b+8>>3]-f;e=+h[c>>3]-e;f=+h[c+8>>3]-f;if((VU(a,b,c)|0)==3?f*d+e*g>=0.0:0)a=f*f+e*e<=d*d+g*g&1;else a=0;return a|0}function hV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0;m=B_(d<<2)|0;n=B_((d<<3)+8|0)|0;o=n+8|0;f=0;while(1){if((f|0)>=(d|0))break;c[m+(f<<2)>>2]=-1;h[o+(f<<3)>>3]=-2147483647.0;f=f+1|0}h[n>>3]=-2147483648.0;a:while(1){if((a|0)==(b|0))break;l=o+(a<<3)|0;j=+h[l>>3];h[l>>3]=j==-2147483647.0?0.0:-j;k=0;f=-1;while(1){if((k|0)>=(d|0)){a=f;continue a}i=o+(k<<3)|0;g=+h[i>>3];if(g<0.0){q=(a|0)<(k|0);p=+h[(c[e+((q?k:a)<<2)>>2]|0)+((q?a:k)<<3)>>3];j=-(p+ +h[l>>3]);if(p!=0.0&g>3]=j;c[m+(k<<2)>>2]=a;g=j}f=g>+h[o+(f<<3)>>3]?k:f}k=k+1|0}}C_(n);return m|0}function iV(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0;j=l;l=l+32|0;k=j+16|0;m=j;i=c[h+4>>2]|0;c[m>>2]=c[a>>2];c[m+4>>2]=c[a+4>>2];c[m+8>>2]=c[a+8>>2];c[m+12>>2]=c[a+12>>2];c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];if(!(BV(m,b,k,f,h)|0)){a=c[h+24>>2]|0;c[a+(i<<2)>>2]=g;m=i+1|0;c[a+(m<<2)>>2]=d;a=hV(m,i,i+2|0,a)|0}else{a=B_((i<<2)+8|0)|0;m=i+1|0;c[a+(i<<2)>>2]=m;c[a+(m<<2)>>2]=-1}l=j;return a|0}function jV(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0;d=+h[a+24>>3];a:do if(d<1.0e-07&d>-1.0e-07)a=kV(a,b)|0;else{g=+h[a+16>>3]/(d*3.0);f=+h[a+8>>3]/d;e=g*g;d=g*2.0*e-g*f+ +h[a>>3]/d;e=f*.3333333333333333-e;e=e*e*4.0*e;f=d*d+e;if(!(f<0.0)){i=(+C(+f)-d)*.5;e=+m$(i);d=+m$(-d-i)+e;h[b>>3]=d;if(f>0.0)a=1;else{d=d*-.5;h[b+16>>3]=d;a=1;c=7}}else{i=+K(+(+C(+-f)),+-d);d=+m$(+C(+-e)*.5)*2.0;h[b>>3]=d*+E(+(i*.3333333333333333));h[b+8>>3]=+E(+((i+6.283185307179586)*.3333333333333333))*d;d=+E(+((i+-6.283185307179586)*.3333333333333333))*d;a=2;c=7}if((c|0)==7){h[b+(a<<3)>>3]=d;a=3}c=0;while(1){if((c|0)>=(a|0))break a;j=b+(c<<3)|0;h[j>>3]=+h[j>>3]-g;c=c+1|0}}while(0);return a|0}function kV(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+16>>3];do if(!(c<1.0e-07&c>-1.0e-07)){d=+h[a+8>>3]/(c*2.0);c=d*d-+h[a>>3]/c;if(!(c<0.0))if(c==0.0){h[b>>3]=-d;a=1;break}else{c=+C(+c)-d;h[b>>3]=c;h[b+8>>3]=d*-2.0-c;a=2;break}else a=0}else a=lV(a,b)|0;while(0);return a|0}function lV(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[a+8>>3];c=+h[a>>3];if(d<1.0e-07&d>-1.0e-07)a=c<1.0e-07&c>-1.0e-07?4:0;else{h[b>>3]=-c/d;a=1}return a|0}function mV(a){a=a|0;C_(c[a>>2]|0);C_(a);return}function nV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=c[a+4>>2]|0;i=(e*3|0)+-2|0;d=c[46748]|0;if((i|0)>(c[46747]|0)){if(!d)d=B_(i<<4)|0;else d=E_(d,i<<4)|0;c[46748]=d;c[46747]=i;h=d;g=d}else{h=d;g=d}f=c[a>>2]|0;c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];F3(h+16|0,f|0,16)|0;e=e+-1|0;d=1;a=2;while(1){if((d|0)>=(e|0))break;j=h+(a+2<<4)|0;k=h+(a+1<<4)|0;m=h+(a<<4)|0;l=f+(d<<4)|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];c[m+12>>2]=c[l+12>>2];F3(k|0,l|0,16)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];d=d+1|0;a=a+3|0}l=h+(a<<4)|0;m=f+(d<<4)|0;c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];F3(h+(a+1<<4)|0,m|0,16)|0;c[b+4>>2]=i;c[b>>2]=g;return}function oV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];d=(+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d);return (d>.0001?1:(d<-.0001)<<31>>31)|0}function pV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;e=+h[a>>3];f=+h[b>>3];if(e!=f){d=+h[c>>3];if(!(e>3];e=+h[c+8>>3];d=+h[b+8>>3];if(!(f>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];j=oV(g,h,i)|0;if((j|0)==0?(c[g>>2]=c[a>>2],c[g+4>>2]=c[a+4>>2],c[g+8>>2]=c[a+8>>2],c[g+12>>2]=c[a+12>>2],c[h>>2]=c[b>>2],c[h+4>>2]=c[b+4>>2],c[h+8>>2]=c[b+8>>2],c[h+12>>2]=c[b+12>>2],c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],(pV(g,h,i)|0)!=0):0)f=1;else k=3;do if((k|0)==3){c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];c[i>>2]=c[e>>2];c[i+4>>2]=c[e+4>>2];c[i+8>>2]=c[e+8>>2];c[i+12>>2]=c[e+12>>2];f=oV(g,h,i)|0;if((f|0)==0?(c[g>>2]=c[a>>2],c[g+4>>2]=c[a+4>>2],c[g+8>>2]=c[a+8>>2],c[g+12>>2]=c[a+12>>2],c[h>>2]=c[b>>2],c[h+4>>2]=c[b+4>>2],c[h+8>>2]=c[b+8>>2],c[h+12>>2]=c[b+12>>2],c[i>>2]=c[e>>2],c[i+4>>2]=c[e+4>>2],c[i+8>>2]=c[e+8>>2],c[i+12>>2]=c[e+12>>2],pV(g,h,i)|0):0){f=1;break};c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[i>>2]=c[a>>2];c[i+4>>2]=c[a+4>>2];c[i+8>>2]=c[a+8>>2];c[i+12>>2]=c[a+12>>2];a=oV(g,h,i)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];k=(O(f,j)|0)<0;f=(O(oV(g,h,i)|0,a)|0)>>>31;f=k?f:0}while(0);l=m;return f|0}function rV(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+8>>3]-+h[b+8>>3];return +(d*d+c*c)}function sV(a){a=a|0;c[a+24>>2]=tV(c[a+4>>2]|0)|0;uV(a);return}function tV(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+2|0;f=B_(e<<2)|0;b=D_(O(a,a)|0,8)|0;d=0;while(1){if((d|0)>=(a|0))break;c[f+(d<<2)>>2]=b;b=b+(a<<3)|0;d=d+1|0}while(1){if((a|0)>=(e|0))break;c[f+(a<<2)>>2]=0;a=a+1|0}return f|0}function uV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;p=l;l=l+32|0;i=p+16|0;g=p;j=c[a+4>>2]|0;m=c[a+8>>2]|0;n=c[a+16>>2]|0;o=c[a+20>>2]|0;d=c[a+24>>2]|0;b=0;while(1){if((b|0)>=(j|0))break;q=c[o+(b<<2)>>2]|0;e=m+(b<<4)|0;f=m+(q<<4)|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];r=+vV(g,i);f=c[d+(b<<2)>>2]|0;h[f+(q<<3)>>3]=r;h[(c[d+(q<<2)>>2]|0)+(b<<3)>>3]=r;a=b+-1|0;a=(q|0)==(a|0)?b+-2|0:a;while(1){if((a|0)<=-1)break;if((wV(b,a,m,n,o)|0?wV(a,b,m,n,o)|0:0)?(k=m+(a<<4)|0,c[g>>2]=c[e>>2],c[g+4>>2]=c[e+4>>2],c[g+8>>2]=c[e+8>>2],c[g+12>>2]=c[e+12>>2],c[i>>2]=c[k>>2],c[i+4>>2]=c[k+4>>2],c[i+8>>2]=c[k+8>>2],c[i+12>>2]=c[k+12>>2],xV(g,i,j,j,j,m,n)|0):0){c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];r=+vV(g,i);h[f+(a<<3)>>3]=r;h[(c[d+(a<<2)>>2]|0)+(b<<3)>>3]=r}a=a+-1|0}b=b+1|0}l=p;return}function vV(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0;e=l;l=l+32|0;f=e+16|0;g=e;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];d=+C(+(+rV(g,f)));l=e;return +d}function wV(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;g=l;l=l+64|0;h=g+48|0;i=g+32|0;j=g+16|0;k=g;n=d+(c[f+(a<<2)>>2]<<4)|0;m=d+(a<<4)|0;e=d+(c[e+(a<<2)>>2]<<4)|0;f=d+(b<<4)|0;c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];c[i>>2]=c[e>>2];c[i+4>>2]=c[e+4>>2];c[i+8>>2]=c[e+8>>2];c[i+12>>2]=c[e+12>>2];c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];f=yV(k,j,i,h)|0;l=g;return f|0}function xV(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;p=l;l=l+64|0;n=p+48|0;m=p+32|0;k=p+16|0;j=p;i=0;while(1){if((i|0)>=(d|0)){o=4;break}r=g+(i<<4)|0;q=g+(c[h+(i<<2)>>2]<<4)|0;c[j>>2]=c[a>>2];c[j+4>>2]=c[a+4>>2];c[j+8>>2]=c[a+8>>2];c[j+12>>2]=c[a+12>>2];c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[m>>2]=c[r>>2];c[m+4>>2]=c[r+4>>2];c[m+8>>2]=c[r+8>>2];c[m+12>>2]=c[r+12>>2];c[n>>2]=c[q>>2];c[n+4>>2]=c[q+4>>2];c[n+8>>2]=c[q+8>>2];c[n+12>>2]=c[q+12>>2];if(!(qV(j,k,m,n)|0))i=i+1|0;else{e=0;break}}a:do if((o|0)==4)while(1){if((e|0)>=(f|0)){e=1;break a}q=g+(e<<4)|0;r=g+(c[h+(e<<2)>>2]<<4)|0;c[j>>2]=c[a>>2];c[j+4>>2]=c[a+4>>2];c[j+8>>2]=c[a+8>>2];c[j+12>>2]=c[a+12>>2];c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[m>>2]=c[q>>2];c[m+4>>2]=c[q+4>>2];c[m+8>>2]=c[q+8>>2];c[m+12>>2]=c[q+12>>2];c[n>>2]=c[r>>2];c[n+4>>2]=c[r+4>>2];c[n+8>>2]=c[r+8>>2];c[n+12>>2]=c[r+12>>2];if(!(qV(j,k,m,n)|0)){e=e+1|0;o=4}else{e=0;break}}while(0);l=p;return e|0}function yV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=l;l=l+48|0;h=g+32|0;i=g+16|0;j=g;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];c[i>>2]=c[a>>2];c[i+4>>2]=c[a+4>>2];c[i+8>>2]=c[a+8>>2];c[i+12>>2]=c[a+12>>2];c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];f=oV(j,i,h)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];e=oV(j,i,h)|0;c[j>>2]=c[a>>2];c[j+4>>2]=c[a+4>>2];c[j+8>>2]=c[a+8>>2];c[j+12>>2]=c[a+12>>2];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];d=(oV(j,i,h)|0)>0;l=g;return (d?e|f:e&f)>>>31^1|0}function zV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=l;l=l+80|0;j=s+64|0;i=s+48|0;g=s+32|0;k=s+16|0;o=s;p=c[a+4>>2]|0;q=c[a+8>>2]|0;r=c[a+16>>2]|0;m=c[a+20>>2]|0;n=B_((p<<3)+16|0)|0;if((b|0)==-2222){c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];b=AV(a,j)|0}if((b|0)>-1){a=c[a+12>>2]|0;f=c[a+(b+1<<2)>>2]|0;a=c[a+(b<<2)>>2]|0}else{f=p;a=p}b=0;while(1){if((b|0)>=(a|0)){b=a;break}u=q+(b<<4)|0;c[o>>2]=c[u>>2];c[o+4>>2]=c[u+4>>2];c[o+8>>2]=c[u+8>>2];c[o+12>>2]=c[u+12>>2];u=q+(c[m+(b<<2)>>2]<<4)|0;t=q+(c[r+(b<<2)>>2]<<4)|0;c[k>>2]=c[u>>2];c[k+4>>2]=c[u+4>>2];c[k+8>>2]=c[u+8>>2];c[k+12>>2]=c[u+12>>2];c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[i>>2]=c[t>>2];c[i+4>>2]=c[t+4>>2];c[i+8>>2]=c[t+8>>2];c[i+12>>2]=c[t+12>>2];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];if((yV(k,g,i,j)|0)!=0?(c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[j>>2]=c[o>>2],c[j+4>>2]=c[o+4>>2],c[j+8>>2]=c[o+8>>2],c[j+12>>2]=c[o+12>>2],(xV(i,j,a,f,p,q,r)|0)!=0):0){c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];c[j+12>>2]=c[o+12>>2];e=+vV(i,j)}else e=0.0;h[n+(b<<3)>>3]=e;b=b+1|0}while(1){if((b|0)>=(f|0)){b=f;break}h[n+(b<<3)>>3]=0.0;b=b+1|0}while(1){if((b|0)>=(p|0))break;t=q+(b<<4)|0;c[o>>2]=c[t>>2];c[o+4>>2]=c[t+4>>2];c[o+8>>2]=c[t+8>>2];c[o+12>>2]=c[t+12>>2];t=q+(c[m+(b<<2)>>2]<<4)|0;u=q+(c[r+(b<<2)>>2]<<4)|0;c[k>>2]=c[t>>2];c[k+4>>2]=c[t+4>>2];c[k+8>>2]=c[t+8>>2];c[k+12>>2]=c[t+12>>2];c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];if((yV(k,g,i,j)|0)!=0?(c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[j>>2]=c[o>>2],c[j+4>>2]=c[o+4>>2],c[j+8>>2]=c[o+8>>2],c[j+12>>2]=c[o+12>>2],(xV(i,j,a,f,p,q,r)|0)!=0):0){c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[j>>2]=c[o>>2];c[j+4>>2]=c[o+4>>2];c[j+8>>2]=c[o+8>>2];c[j+12>>2]=c[o+12>>2];e=+vV(i,j)}else e=0.0;h[n+(b<<3)>>3]=e;b=b+1|0}h[n+(p<<3)>>3]=0.0;h[n+(p+1<<3)>>3]=0.0;l=s;return n|0}function AV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;m=l;l=l+32|0;f=m+8|0;e=m;h=m+24|0;i=a+8|0;j=a+12|0;k=h+4|0;d=0;while(1){if((d|0)>=(c[a>>2]|0)){d=-1111;break}o=c[j>>2]|0;n=c[o+(d<<2)>>2]|0;c[h>>2]=(c[i>>2]|0)+(n<<4);g=d+1|0;c[k>>2]=(c[o+(g<<2)>>2]|0)-n;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];if(!(vU(e,f)|0))d=g;else break}l=m;return d|0}function BV(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+64|0;n=t+48|0;m=t+32|0;p=t+16|0;o=t;r=c[f+4>>2]|0;s=c[f+8>>2]|0;q=c[f+16>>2]|0;g=(e|0)<0;do if((b|0)<0)if(g){g=0;i=0;f=0;h=0}else{b=c[f+12>>2]|0;f=0;h=0;i=e;j=b;b=b+(e<<2)|0;k=9}else{if(g){k=c[f+12>>2]|0;f=0;h=0;i=b;j=k;b=k+(b<<2)|0;k=9;break}g=c[f+12>>2]|0;if((b|0)>(e|0)){f=c[g+(e+1<<2)>>2]|0;h=c[g+(e<<2)>>2]|0;i=b;j=g;b=g+(b<<2)|0;k=9;break}else{f=c[g+(b+1<<2)>>2]|0;h=c[g+(b<<2)>>2]|0;i=e;j=g;b=g+(e<<2)|0;k=9;break}}while(0);if((k|0)==9){g=c[j+(i+1<<2)>>2]|0;i=c[b>>2]|0}b=0;while(1){if((b|0)>=(h|0)){k=13;break}j=s+(b<<4)|0;e=s+(c[q+(b<<2)>>2]<<4)|0;c[o>>2]=c[a>>2];c[o+4>>2]=c[a+4>>2];c[o+8>>2]=c[a+8>>2];c[o+12>>2]=c[a+12>>2];c[p>>2]=c[d>>2];c[p+4>>2]=c[d+4>>2];c[p+8>>2]=c[d+8>>2];c[p+12>>2]=c[d+12>>2];c[m>>2]=c[j>>2];c[m+4>>2]=c[j+4>>2];c[m+8>>2]=c[j+8>>2];c[m+12>>2]=c[j+12>>2];c[n>>2]=c[e>>2];c[n+4>>2]=c[e+4>>2];c[n+8>>2]=c[e+8>>2];c[n+12>>2]=c[e+12>>2];if(!(qV(o,p,m,n)|0))b=b+1|0;else{g=0;break}}a:do if((k|0)==13){while(1){if((f|0)>=(i|0))break;e=s+(f<<4)|0;k=s+(c[q+(f<<2)>>2]<<4)|0;c[o>>2]=c[a>>2];c[o+4>>2]=c[a+4>>2];c[o+8>>2]=c[a+8>>2];c[o+12>>2]=c[a+12>>2];c[p>>2]=c[d>>2];c[p+4>>2]=c[d+4>>2];c[p+8>>2]=c[d+8>>2];c[p+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];if(!(qV(o,p,m,n)|0)){f=f+1|0;k=13}else{g=0;break a}}while(1){if((g|0)>=(r|0)){g=1;break a}e=s+(g<<4)|0;k=s+(c[q+(g<<2)>>2]<<4)|0;c[o>>2]=c[a>>2];c[o+4>>2]=c[a+4>>2];c[o+8>>2]=c[a+8>>2];c[o+12>>2]=c[a+12>>2];c[p>>2]=c[d>>2];c[p+4>>2]=c[d+4>>2];c[p+8>>2]=c[d+8>>2];c[p+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];if(!(qV(o,p,m,n)|0))g=g+1|0;else{g=0;break}}}while(0);l=t;return g|0}function CV(a){a=a|0;return DV(a,0,0)|0}function DV(a,b,c){a=a|0;b=b|0;c=c|0;return EV(a,b,c,0)|0}function EV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;if(!d){g=B_(496)|0;if(!g)g=0;else{c[g+12>>2]=35;c[g+16>>2]=105;c[g+20>>2]=103;d=35;h=6}}else{g=kb[c[d>>2]&63](496)|0;if(!g)g=0;else{h=c[d>>2]|0;c[g+12>>2]=h;c[g+16>>2]=c[d+4>>2];c[g+20>>2]=c[d+8>>2];d=h;h=6}}do if((h|0)==6){c[g+8>>2]=0;c[g+32>>2]=0;c[g+376>>2]=16;j=g+12|0;i=kb[d&63](256)|0;d=g+388|0;c[d>>2]=i;if(!i){tb[c[g+20>>2]&127](g);g=0;break}h=kb[c[j>>2]&63](1024)|0;i=g+44|0;c[i>>2]=h;if(!h){e=g+20|0;tb[c[e>>2]&127](c[d>>2]|0);tb[c[e>>2]&127](g);g=0;break}c[g+48>>2]=h+1024;if(!f){f=FV(j)|0;c[g+352>>2]=f;if(!f){e=g+20|0;tb[c[e>>2]&127](c[i>>2]|0);tb[c[e>>2]&127](c[d>>2]|0);tb[c[e>>2]&127](g);g=0;break}}else c[g+352>>2]=f;c[g+372>>2]=0;c[g+364>>2]=0;c[g+300>>2]=0;c[g+464>>2]=0;c[g+460>>2]=0;c[g+124>>2]=0;c[g+244>>2]=0;d=g+468|0;a[d>>0]=33;h=g+232|0;a[h>>0]=0;a[g+233>>0]=0;c[g+392>>2]=0;c[g+396>>2]=0;a[g+400>>0]=0;f=g+228|0;c[f>>2]=0;GV(g+412|0,j);GV(g+436|0,j);HV(g,b);if(b|0?(c[f>>2]|0)==0:0){IV(g);g=0;break}if(!e){c[g+224>>2]=SX()|0;break}else{a[h>>0]=1;c[g+224>>2]=wZ()|0;a[d>>0]=a[e>>0]|0;break}}while(0);return g|0}function FV(b){b=b|0;var d=0;d=kb[c[b>>2]&63](188)|0;if(d|0){GV(d+80|0,b);GV(d+104|0,b);PW(d,b);PW(d+20|0,b);PW(d+40|0,b);PW(d+60|0,b);a[d+131>>0]=0;PW(d+132|0,b);c[d+152>>2]=0;c[d+156>>2]=0;a[d+160>>0]=0;b=d+164|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;a[d+128>>0]=1;a[d+129>>0]=0;a[d+130>>0]=0}return d|0}function GV(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=0;c[a+20>>2]=b;return}function HV(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;c[d+276>>2]=56;DZ(d+252|0);if(e|0)c[d+228>>2]=QV(e,d+12|0)|0;c[d+356>>2]=0;GY(d+148|0,d+144|0,0)|0;c[d>>2]=0;c[d+4>>2]=0;e=d+116|0;g=d+52|0;h=g+64|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));c[e>>2]=d;c[d+120>>2]=0;e=d+128|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;e=c[d+8>>2]|0;c[d+24>>2]=e;c[d+28>>2]=e;c[d+36>>2]=0;c[d+40>>2]=0;e=d+312|0;g=d+404|0;c[g>>2]=0;c[g+4>>2]=0;g=d+280|0;f=d+304|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;g=e;h=g+36|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));b[e+36>>1]=0;a[f>>0]=1;c[d+308>>2]=0;c[d+360>>2]=0;c[d+368>>2]=0;c[d+380>>2]=0;c[d+236>>2]=0;c[d+248>>2]=0;c[d+240>>2]=0;c[d+472>>2]=0;c[d+476>>2]=0;a[d+484>>0]=0;a[d+485>>0]=0;c[d+488>>2]=0;c[d+492>>2]=0;return}function IV(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;if(b|0){e=b+364|0;g=b+20|0;d=c[b+360>>2]|0;while(1){if(!d){d=c[e>>2]|0;if(!d)break;c[e>>2]=0}h=c[d>>2]|0;tb[c[g>>2]&127](c[d+36>>2]|0);JV(c[d+44>>2]|0,b);tb[c[g>>2]&127](d);d=h}e=b+300|0;d=c[b+296>>2]|0;while(1){if(!d){d=c[e>>2]|0;if(!d)break;c[e>>2]=0}h=c[d+8>>2]|0;tb[c[g>>2]&127](d);d=h}JV(c[b+372>>2]|0,b);JV(c[b+368>>2]|0,b);KV(b+412|0);KV(b+436|0);d=b+12|0;tb[c[g>>2]&127](c[b+228>>2]|0);if((a[b+484>>0]|0)==0?(f=c[b+352>>2]|0,f|0):0)LV(f,(c[b+472>>2]|0)==0&1,d);tb[c[g>>2]&127](c[b+388>>2]|0);tb[c[g>>2]&127](c[b+460>>2]|0);tb[c[g>>2]&127](c[b+8>>2]|0);tb[c[g>>2]&127](c[b+44>>2]|0);tb[c[g>>2]&127](c[b+392>>2]|0);tb[c[g>>2]&127](c[b+236>>2]|0);d=c[b+248>>2]|0;if(d|0)tb[d&127](c[b+240>>2]|0);tb[c[g>>2]&127](b)}return}function JV(a,b){a=a|0;b=b|0;var d=0;b=b+20|0;while(1){if(!a)break;d=c[a+4>>2]|0;tb[c[b>>2]&127](c[a+16>>2]|0);tb[c[b>>2]&127](a);a=d}return}function KV(a){a=a|0;var b=0,d=0,e=0;d=a+20|0;b=c[a>>2]|0;while(1){if(!b)break;e=c[b>>2]|0;tb[c[(c[d>>2]|0)+8>>2]&127](b);b=e}b=c[a+4>>2]|0;while(1){if(!b)break;e=c[b>>2]|0;tb[c[(c[d>>2]|0)+8>>2]&127](b);b=e}return}function LV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;g=a+20|0;MV(f,g);d=d+8|0;while(1){e=NV(f)|0;if(!e)break;if(!(c[e+16>>2]|0))continue;tb[c[d>>2]&127](c[e+20>>2]|0)}OV(a);OV(a+132|0);OV(g);OV(a+40|0);OV(a+60|0);KV(a+80|0);KV(a+104|0);if(b<<24>>24){tb[c[d>>2]&127](c[a+184>>2]|0);tb[c[d>>2]&127](c[a+164>>2]|0)}tb[c[d>>2]&127](a);l=h;return}function MV(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=d;c[a+4>>2]=d+(c[b+8>>2]<<2);return}function NV(a){a=a|0;var b=0,d=0,e=0;d=c[a+4>>2]|0;e=c[a>>2]|0;do{if((e|0)==(d|0)){b=0;break}b=e;e=e+4|0;c[a>>2]=e;b=c[b>>2]|0}while(!(b|0));return b|0}function OV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=a+8|0;e=a+16|0;b=0;while(1){f=c[(c[e>>2]|0)+8>>2]|0;g=c[a>>2]|0;if(b>>>0>=(c[d>>2]|0)>>>0)break;tb[f&127](c[g+(b<<2)>>2]|0);b=b+1|0}tb[f&127](g);return}function PV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=RV(a)|0;if(!f){c[a+276>>2]=57;f=SV(a,b,d,e)|0}return f|0}function QV(b,d){b=b|0;d=d|0;var e=0,f=0;e=0;do{f=e;e=e+1|0}while((a[b+f>>0]|0)!=0);d=kb[c[d>>2]&63](e)|0;if(!d)d=0;else E3(d|0,b|0,e|0)|0;return d|0}function RV(b){b=b|0;var d=0;d=b+228|0;if(!(nb[(a[b+232>>0]<<24>>24?35:34)&63](b+148|0,b+144|0,c[d>>2]|0)|0))b=OW(b,c[d>>2]|0)|0;else b=0;return b|0}function SV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l+16|0;h=g;c[h>>2]=d;j=b+144|0;i=c[j>>2]|0;i=ob[c[i>>2]&127](i,d,e,h)|0;f=TV(b,c[j>>2]|0,d,e,i,c[h>>2]|0,f,(a[b+480>>0]|0)==0&1)|0;l=g;return f|0}function TV(b,e,f,g,h,i,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0;Ga=l;l=l+16|0;Da=Ga;c[Da>>2]=i;r=c[b+352>>2]|0;s=b+144|0;if((c[s>>2]|0)==(e|0)){p=b+284|0;q=b+288|0;na=b+296|0}else{na=b+296|0;q=c[na>>2]|0;p=q;q=q+4|0}t=k<<24>>24!=0;pa=b+252|0;u=b+80|0;v=b+476|0;w=b+84|0;x=b+320|0;y=b+412|0;z=b+316|0;A=b+424|0;B=b+428|0;C=b+324|0;ra=b+4|0;D=b+485|0;E=r+132|0;F=b+312|0;ta=r+129|0;G=r+128|0;H=r+80|0;I=r+92|0;J=r+96|0;K=b+136|0;L=b+88|0;M=b+488|0;va=b+112|0;wa=r+131|0;xa=b+116|0;ya=r+130|0;za=b+108|0;Aa=b+356|0;N=b+340|0;O=b+132|0;P=b+344|0;Q=b+348|0;R=b+328|0;S=b+349|0;T=b+420|0;U=r+120|0;V=r+116|0;W=b+92|0;X=b+472|0;Y=b+336|0;Z=b+332|0;_=b+96|0;$=b+256|0;aa=b+464|0;ba=b+460|0;ca=r+160|0;da=r+184|0;ea=r+180|0;fa=r+164|0;ga=b+128|0;ha=b+12|0;ia=b+16|0;ja=b+268|0;ka=b+120|0;la=r+176|0;ma=r+168|0;o=e;n=f;e=h;a:while(1){c[p>>2]=n;f=c[Da>>2]|0;c[q>>2]=f;i=f;b:do if((e|0)<1){if(t&(e|0)!=0){m=7;break a}switch(e|0){case -1:{i=5;m=280;break a}case 0:{m=9;break a}case -2:{i=6;break a}case -4:{m=10;break a}case -15:{e=15;break b}default:{}}c[Da>>2]=g;e=0-e|0;i=g}while(0);h=pb[c[pa>>2]&127](pa,e,n,i,o)|0;c:do switch(h|0){case 2:{m=58;break a}case -1:{m=184;break a}case 1:{i=UV(b,0,n,c[Da>>2]|0)|0;if(i|0){m=280;break a}i=c[s>>2]|0;break}case 4:{if(!(c[w>>2]|0))i=1;else{m=VV(y,o,n,c[Da>>2]|0)|0;c[z>>2]=m;if(!m){i=1;m=280;break a}c[B>>2]=c[A>>2];c[C>>2]=0;i=0}c[x>>2]=0;m=274;break}case 7:{i=c[w>>2]|0;if(!i)m=275;else{yb[i&15](c[ra>>2]|0,c[z>>2]|0,c[x>>2]|0,c[C>>2]|0,1);c[z>>2]=0;WV(y);i=o}break}case 57:{i=UV(b,1,n,c[Da>>2]|0)|0;if(i|0){m=280;break a}i=c[s>>2]|0;break}case 6:{a[D>>0]=0;m=XV(b,E,75291,36)|0;c[F>>2]=m;if(!m){i=1;m=280;break a}a[ta>>0]=1;if(!(c[w>>2]|0))m=33;else{if(!(ob[c[o+52>>2]&127](o,n,c[Da>>2]|0,p)|0)){i=32;m=280;break a}i=c[o+64>>2]|0;i=VV(y,o,n+i|0,(c[Da>>2]|0)+(0-i)|0)|0;if(!i){i=1;m=280;break a}YV(i);c[B>>2]=c[A>>2];c[C>>2]=i;i=0;m=34}break}case 14:{m=33;break}case 8:{i=c[z>>2]|0;if(!i)i=1;else{yb[c[w>>2]&15](c[ra>>2]|0,i,c[x>>2]|0,c[C>>2]|0,0);WV(y);i=0}if(!((c[x>>2]|0)==0?!(a[D>>0]|0):0)){f=a[ta>>0]|0;a[ta>>0]=1;do if(c[M>>2]|0?c[va>>2]|0:0){h=XV(b,E,75291,36)|0;if(!h){i=1;m=280;break a}if(!(a[D>>0]|0))e=h+20|0;else{e=h+20|0;c[e>>2]=c[Aa>>2]}a[wa>>0]=0;if(!(pb[c[va>>2]&127](c[xa>>2]|0,0,c[e>>2]|0,c[h+16>>2]|0,c[h+24>>2]|0)|0)){i=21;m=280;break a}if(!(a[wa>>0]|0)){if(c[x>>2]|0)break;a[ta>>0]=f;break}if(((a[ya>>0]|0)==0?(oa=c[za>>2]|0,oa|0):0)?(kb[oa&63](c[ra>>2]|0)|0)==0:0){i=22;m=280;break a}}while(0);a[D>>0]=0}e=c[L>>2]|0;if(!e)m=274;else{tb[e&127](c[ra>>2]|0);i=o}break}case 34:{m=_V(b,o,n,c[Da>>2]|0)|0;c[N>>2]=m;if(!m){i=1;m=280;break a}else m=80;break}case 22:{m=$V(b,o,n,c[Da>>2]|0)|0;c[P>>2]=m;if(!m){i=1;m=280;break a}a[Q>>0]=0;c[R>>2]=0;a[S>>0]=0;m=80;break}case 23:{a[Q>>0]=1;c[R>>2]=139106;m=80;break}case 24:{a[S>>0]=1;c[R>>2]=139112;m=80;break}case 25:{c[R>>2]=139115;m=80;break}case 26:{c[R>>2]=139121;m=80;break}case 27:{c[R>>2]=139128;m=80;break}case 28:{c[R>>2]=139135;m=80;break}case 29:{c[R>>2]=139144;m=80;break}case 30:{c[R>>2]=139152;m=80;break}case 32:case 31:{if((a[G>>0]|0)!=0?(c[O>>2]|0)!=0:0){if(!(aW(y,(c[R>>2]|0)==0?((h|0)==32?139161:139171):139173)|0)){i=1;m=280;break a}if(!(bW(y,o,n,c[Da>>2]|0)|0)){i=1;m=280;break a}c[R>>2]=c[B>>2];i=o}else m=275;break}case 36:case 35:{if(a[G>>0]|0){if(!(cW(c[N>>2]|0,c[P>>2]|0,a[Q>>0]|0,a[S>>0]|0,0,b)|0)){i=1;m=280;break a}if((c[O>>2]|0)!=0?(qa=c[R>>2]|0,(qa|0)!=0):0){switch(a[qa>>0]|0){case 40:{m=93;break}case 78:{if((a[qa+1>>0]|0)==79)m=93;break}default:{}}if((m|0)==93){m=0;i=c[A>>2]|0;if((i|0)==(c[T>>2]|0)){if(!((dW(y)|0)<<24>>24)){i=1;m=280;break a}i=c[A>>2]|0}c[A>>2]=i+1;a[i>>0]=41;i=c[A>>2]|0;if((i|0)==(c[T>>2]|0)){if(!((dW(y)|0)<<24>>24)){i=1;m=280;break a}i=c[A>>2]|0}c[A>>2]=i+1;a[i>>0]=0;c[R>>2]=c[B>>2];c[B>>2]=c[A>>2]}c[q>>2]=n;zb[c[O>>2]&15](c[ra>>2]|0,c[c[N>>2]>>2]|0,c[c[P>>2]>>2]|0,c[R>>2]|0,0,(h|0)==36&1);WV(y);i=o}else m=275}else m=275;break}case 38:case 37:{if(a[G>>0]|0){i=c[o+64>>2]|0;i=eW(b,o,a[Q>>0]|0,n+i|0,(c[Da>>2]|0)+(0-i)|0,H)|0;if(i|0){m=280;break a}e=c[J>>2]|0;c[J>>2]=c[I>>2];if(!(cW(c[N>>2]|0,c[P>>2]|0,a[Q>>0]|0,0,e,b)|0)){i=1;m=280;break a}if((c[O>>2]|0)!=0?(sa=c[R>>2]|0,(sa|0)!=0):0){switch(a[sa>>0]|0){case 40:{m=108;break}case 78:{if((a[sa+1>>0]|0)==79)m=108;break}default:{}}if((m|0)==108){m=0;i=c[A>>2]|0;if((i|0)==(c[T>>2]|0)){if(!((dW(y)|0)<<24>>24)){i=1;m=280;break a}i=c[A>>2]|0}c[A>>2]=i+1;a[i>>0]=41;i=c[A>>2]|0;if((i|0)==(c[T>>2]|0)){if(!((dW(y)|0)<<24>>24)){i=1;m=280;break a}i=c[A>>2]|0}c[A>>2]=i+1;a[i>>0]=0;c[R>>2]=c[B>>2];c[B>>2]=c[A>>2]}c[q>>2]=n;zb[c[O>>2]&15](c[ra>>2]|0,c[c[N>>2]>>2]|0,c[c[P>>2]>>2]|0,c[R>>2]|0,e,(h|0)==38&1);WV(y);i=o}else m=275}else m=275;break}case 12:{if(a[G>>0]|0){i=c[o+64>>2]|0;i=fW(b,o,n+i|0,(c[Da>>2]|0)+(0-i)|0)|0;e=c[F>>2]|0;f=c[U>>2]|0;if(e){c[e+4>>2]=f;c[(c[F>>2]|0)+8>>2]=(c[V>>2]|0)-(c[U>>2]|0);c[U>>2]=c[V>>2];if(!(c[K>>2]|0))e=1;else{c[q>>2]=n;e=c[F>>2]|0;Ab[c[K>>2]&0](c[ra>>2]|0,c[e>>2]|0,d[e+33>>0]|0,c[e+4>>2]|0,c[e+8>>2]|0,c[Aa>>2]|0,0,0,0);e=0}}else{c[V>>2]=f;e=1}if(!i){i=e;m=274}else{m=280;break a}}else m=275;break}case 5:{a[D>>0]=0;a[ta>>0]=1;if(!(c[w>>2]|0)){c[x>>2]=75291;i=1}else{m=c[o+64>>2]|0;m=VV(y,o,n+m|0,(c[Da>>2]|0)+(0-m)|0)|0;c[x>>2]=m;if(!m){i=1;m=280;break a}c[B>>2]=c[A>>2];i=0}if((((a[ya>>0]|0)==0?(c[M>>2]|0)==0:0)?(ua=c[za>>2]|0,ua|0):0)?(kb[ua&63](c[ra>>2]|0)|0)==0:0){i=22;m=280;break a}if(!(c[F>>2]|0)){e=XV(b,E,75291,36)|0;c[F>>2]=e;if(!e){i=1;m=280;break a}c[e+24>>2]=0;m=133}else m=133;break}case 13:{i=1;m=133;break}case 15:{if(((a[G>>0]|0)!=0?(c[F>>2]|0)!=0:0)?(c[K>>2]|0)!=0:0){c[q>>2]=n;i=c[F>>2]|0;Ab[c[K>>2]&0](c[ra>>2]|0,c[i>>2]|0,d[i+33>>0]|0,0,0,c[i+20>>2]|0,c[i+16>>2]|0,c[i+24>>2]|0,0);i=o}else m=275;break}case 16:{if((a[G>>0]|0)!=0?(c[F>>2]|0)!=0:0){h=VV(H,o,n,c[Da>>2]|0)|0;c[(c[F>>2]|0)+28>>2]=h;if(!(c[(c[F>>2]|0)+28>>2]|0)){i=1;m=280;break a}c[J>>2]=c[I>>2];if(c[W>>2]|0){c[q>>2]=n;i=c[F>>2]|0;zb[c[W>>2]&15](c[ra>>2]|0,c[i>>2]|0,c[i+20>>2]|0,c[i+16>>2]|0,c[i+24>>2]|0,c[i+28>>2]|0);i=o;break c}if(c[K>>2]|0){c[q>>2]=n;i=c[F>>2]|0;Ab[c[K>>2]&0](c[ra>>2]|0,c[i>>2]|0,0,0,0,c[i+20>>2]|0,c[i+16>>2]|0,c[i+24>>2]|0,c[i+28>>2]|0);i=o}else m=275}else m=275;break}case 9:{if(nb[c[o+44>>2]&63](o,n,c[Da>>2]|0)|0){c[F>>2]=0;m=275;break c}if(!(a[G>>0]|0)){c[I>>2]=c[J>>2];c[F>>2]=0;m=275;break c}i=VV(H,o,n,c[Da>>2]|0)|0;if(!i){i=1;m=280;break a}e=XV(b,r,i,36)|0;c[F>>2]=e;if(!e){i=1;m=280;break a}if((c[e>>2]|0)!=(i|0)){c[I>>2]=c[J>>2];c[F>>2]=0;m=275;break c}c[J>>2]=c[I>>2];c[(c[F>>2]|0)+24>>2]=0;a[(c[F>>2]|0)+33>>0]=0;if(!(c[X>>2]|0))i=(c[na>>2]|0)!=0;else i=1;a[(c[F>>2]|0)+34>>0]=(i^1)&1;if(!(c[K>>2]|0))m=275;else i=o;break}case 10:{if(!(a[G>>0]|0)){c[I>>2]=c[J>>2];c[F>>2]=0;m=275;break c}i=VV(H,o,n,c[Da>>2]|0)|0;if(!i){i=1;m=280;break a}e=XV(b,E,i,36)|0;c[F>>2]=e;if(!e){i=1;m=280;break a}if((c[e>>2]|0)!=(i|0)){c[I>>2]=c[J>>2];c[F>>2]=0;m=275;break c}c[J>>2]=c[I>>2];c[(c[F>>2]|0)+24>>2]=0;a[(c[F>>2]|0)+33>>0]=1;if(!(c[X>>2]|0))i=(c[na>>2]|0)!=0;else i=1;a[(c[F>>2]|0)+34>>0]=(i^1)&1;if(!(c[K>>2]|0))m=275;else i=o;break}case 18:{c[Y>>2]=0;c[Z>>2]=0;if(!(c[_>>2]|0))m=275;else{n=VV(y,o,n,c[Da>>2]|0)|0;c[Z>>2]=n;if(!n){i=1;m=280;break a}c[B>>2]=c[A>>2];i=o}break}case 21:{if(!(ob[c[o+52>>2]&127](o,n,c[Da>>2]|0,p)|0)){i=32;m=280;break a}if(!(c[Z>>2]|0))m=275;else{i=c[o+64>>2]|0;i=VV(y,o,n+i|0,(c[Da>>2]|0)+(0-i)|0)|0;if(!i){i=1;m=280;break a}YV(i);c[Y>>2]=i;c[B>>2]=c[A>>2];i=o}break}case 19:{if((c[Z>>2]|0)!=0?(c[_>>2]|0)!=0:0){i=c[o+64>>2]|0;i=VV(y,o,n+i|0,(c[Da>>2]|0)+(0-i)|0)|0;if(!i){i=1;m=280;break a}c[q>>2]=n;yb[c[_>>2]&15](c[ra>>2]|0,c[Z>>2]|0,c[Aa>>2]|0,i,c[Y>>2]|0);i=0}else i=1;WV(y);m=274;break}case 20:{if((c[Y>>2]|0)!=0?(c[_>>2]|0)!=0:0){c[q>>2]=n;yb[c[_>>2]&15](c[ra>>2]|0,c[Z>>2]|0,c[Aa>>2]|0,0,c[Y>>2]|0);i=0}else i=1;WV(y);m=274;break}case 58:{if(c[u>>2]|0)gW(b,o,n,c[Da>>2]|0);i=hW(b,o,Da,g,j,k)|0;if(i|0){m=280;break a}if(!(c[Da>>2]|0)){m=189;break a}else i=o;break}case 44:{i=c[aa>>2]|0;do if((c[$>>2]|0)>>>0>=i>>>0){if(!i){h=c[ha>>2]|0;c[aa>>2]=32;h=kb[h&63](32)|0;c[ba>>2]=h;if(!h){m=198;break a}else break}f=c[ia>>2]|0;h=c[ba>>2]|0;i=i<<1;c[aa>>2]=i;i=lb[f&127](h,i)|0;if(!i){m=193;break a}c[ba>>2]=i;i=c[da>>2]|0;if(i|0){i=lb[c[ia>>2]&127](i,c[aa>>2]<<2)|0;if(!i){i=1;m=280;break a}c[da>>2]=i}}while(0);a[(c[ba>>2]|0)+(c[$>>2]|0)>>0]=0;if(a[ca>>0]|0){i=jW(b)|0;if((i|0)<0){i=1;m=280;break a}c[(c[da>>2]|0)+(c[ea>>2]<<2)>>2]=i;c[ea>>2]=(c[ea>>2]|0)+1;c[(c[fa>>2]|0)+(i*28|0)>>2]=6;if(c[ga>>2]|0)i=o;else m=275}else m=275;break}case 50:{i=(c[ba>>2]|0)+(c[$>>2]|0)|0;if((a[i>>0]|0)==124){i=2;m=280;break a}a[i>>0]=44;if((a[ca>>0]|0)!=0?(c[ga>>2]|0)!=0:0)i=o;else m=275;break}case 49:{f=c[ba>>2]|0;e=c[$>>2]|0;i=a[f+e>>0]|0;if(i<<24>>24==44){i=2;m=280;break a}if(i<<24>>24==0&(a[ca>>0]|0)!=0?(Ba=(c[fa>>2]|0)+((c[(c[da>>2]|0)+((c[ea>>2]|0)+-1<<2)>>2]|0)*28|0)|0,(c[Ba>>2]|0)!=3):0){c[Ba>>2]=5;i=(c[ga>>2]|0)==0&1;f=c[ba>>2]|0;e=c[$>>2]|0}else i=1;a[f+e>>0]=124;m=274;break}case 59:case 60:{a[ta>>0]=1;if(c[M>>2]|0){e=c[o+64>>2]|0;e=VV(H,o,n+e|0,(c[Da>>2]|0)+(0-e)|0)|0;if(!e){i=1;m=280;break a}f=XV(b,E,e,0)|0;c[I>>2]=c[J>>2];do if(c[ja>>2]|0){if(!(a[ya>>0]|0)){if(a[ta>>0]|0){m=219;break}}else if(c[na>>2]|0){m=219;break}if(!f){i=11;m=280;break a}if(!(a[f+34>>0]|0)){i=24;m=280;break a}}else m=219;while(0);if((m|0)==219?(m=0,(f|0)==0):0){a[G>>0]=a[ya>>0]|0;if((h|0)!=60){m=275;break c}i=c[ka>>2]|0;if(!i){m=275;break c}vb[i&127](c[ra>>2]|0,e,1);i=o;break c}i=f+32|0;if(a[i>>0]|0){i=12;m=280;break a}if(c[f+4>>2]|0){i=kW(b,f,(h|0)==60&1)|0;e=(i|0)==0;if(e){i=(e^1)&1;m=274;break c}else{m=280;break a}}if(!(c[va>>2]|0)){a[G>>0]=a[ya>>0]|0;m=275;break c}a[wa>>0]=0;a[i>>0]=1;h=(pb[c[va>>2]&127](c[xa>>2]|0,0,c[f+20>>2]|0,c[f+16>>2]|0,c[f+24>>2]|0)|0)==0;a[i>>0]=0;if(h){i=21;m=280;break a}e=a[ya>>0]|0;if(!(a[wa>>0]|0)){a[G>>0]=e;i=o;break c}else i=0}else{e=a[ya>>0]|0;a[G>>0]=e;i=1}if((e<<24>>24==0?(Ca=c[za>>2]|0,(Ca|0)!=0):0)?(kb[Ca&63](c[ra>>2]|0)|0)==0:0){i=22;m=280;break a}else m=274;break}case 40:{if(!(c[ga>>2]|0))m=275;else{n=_V(b,o,n,c[Da>>2]|0)|0;c[N>>2]=n;if(!n){i=1;m=280;break a}c[ea>>2]=0;c[la>>2]=0;a[ca>>0]=1;i=o}break}case 42:case 41:{if(!(a[ca>>0]|0))m=275;else{if(!(c[ga>>2]|0))i=1;else{i=kb[c[ha>>2]&63](20)|0;if(!i){i=1;m=280;break a}m=i+4|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[i>>2]=(h|0)==41?2:1;c[q>>2]=n;vb[c[ga>>2]&127](c[ra>>2]|0,c[c[N>>2]>>2]|0,i);i=0}a[ca>>0]=0;m=274}break}case 43:{if((a[ca>>0]|0)!=0?(c[(c[fa>>2]|0)+((c[(c[da>>2]|0)+((c[ea>>2]|0)+-1<<2)>>2]|0)*28|0)>>2]=3,(c[ga>>2]|0)!=0):0)i=o;else m=275;break}case 51:{e=0;m=247;break}case 53:{e=1;m=247;break}case 52:{e=2;m=247;break}case 54:{e=3;m=247;break}case 45:{f=0;m=258;break}case 47:{f=1;m=258;break}case 46:{f=2;m=258;break}case 48:{f=3;m=258;break}case 55:{if(!(mW(b,o,n,c[Da>>2]|0)|0)){i=1;m=280;break a}else i=o;break}case 56:{if(!(nW(b,o,n,c[Da>>2]|0)|0)){i=1;m=280;break a}else i=o;break}case 0:{if((e|0)==14)i=o;else m=275;break}case 3:{if(!(c[w>>2]|0))m=275;else i=o;break}case 11:{if((a[G>>0]|0)!=0?(c[K>>2]|0)!=0:0)i=o;else m=275;break}case 17:{if(!(c[_>>2]|0))m=275;else i=o;break}case 33:{if((a[G>>0]|0)!=0?(c[O>>2]|0)!=0:0)i=o;else m=275;break}case 39:{if(!(c[ga>>2]|0))m=275;else i=o;break}default:m=275}while(0);if((m|0)==33)if(!(ob[c[o+52>>2]&127](o,n,c[Da>>2]|0,p)|0)){i=32;m=280;break}else{i=1;m=34}else if((m|0)==80){m=0;if((a[G>>0]|0)!=0?(c[O>>2]|0)!=0:0)i=o;else m=275}else if((m|0)==133){m=0;if((a[G>>0]|0)!=0?(c[F>>2]|0)!=0:0){e=c[o+64>>2]|0;e=VV(H,o,n+e|0,(c[Da>>2]|0)+(0-e)|0)|0;c[(c[F>>2]|0)+16>>2]=e;e=c[F>>2]|0;if(!(c[e+16>>2]|0)){i=1;m=280;break}c[e+20>>2]=c[Aa>>2];c[J>>2]=c[I>>2];if((h|0)==13&(c[K>>2]|0)!=0)i=o;else m=274}else m=274}else if((m|0)==247){m=0;if(a[ca>>0]|0){i=c[Da>>2]|0;if(e)i=i+(0-(c[o+64>>2]|0))|0;f=jW(b)|0;if((f|0)<0){i=1;m=280;break}c[(c[fa>>2]|0)+(f*28|0)>>2]=4;c[(c[fa>>2]|0)+(f*28|0)+4>>2]=e;i=_V(b,o,n,i)|0;if(!i){i=1;m=280;break}e=c[i>>2]|0;c[(c[fa>>2]|0)+(f*28|0)+8>>2]=e;i=0;do{h=i;i=i+1|0}while((a[e+h>>0]|0)!=0);c[ma>>2]=(c[ma>>2]|0)+i;if(c[ga>>2]|0)i=o;else m=275}else m=275}else if((m|0)==258)if(a[ca>>0]|0){e=(c[ga>>2]|0)==0;i=e&1;m=(c[ea>>2]|0)+-1|0;c[ea>>2]=m;c[(c[fa>>2]|0)+((c[(c[da>>2]|0)+(m<<2)>>2]|0)*28|0)+4>>2]=f;if(!(c[ea>>2]|0)){if(!e){e=lW(b)|0;if(!e){i=1;m=280;break}c[q>>2]=n;vb[c[ga>>2]&127](c[ra>>2]|0,c[c[N>>2]>>2]|0,e)}a[ca>>0]=0;c[ma>>2]=0;m=274}else m=274}else m=275;if((m|0)==34){m=0;if((a[G>>0]|0)!=0?(c[F>>2]|0)!=0:0){e=c[o+64>>2]|0;e=VV(H,o,n+e|0,(c[Da>>2]|0)+(0-e)|0)|0;if(!e){i=1;m=280;break}YV(e);c[(c[F>>2]|0)+24>>2]=e;c[J>>2]=c[I>>2];if((h|0)==14&(c[K>>2]|0)!=0)i=o;else m=274}else m=274}if((m|0)==274){m=0;if(!(i<<24>>24))i=o;else m=275}if((m|0)==275){m=0;if(!(c[u>>2]|0))i=o;else{gW(b,o,n,c[Da>>2]|0);i=o}}switch(c[v>>2]|0){case 3:{m=278;break a}case 2:{i=35;m=280;break a}default:{}}e=c[Da>>2]|0;o=i;n=e;e=ob[c[i>>2]&127](i,e,g,Da)|0}d:switch(m|0){case 7:{c[j>>2]=n;i=0;break}case 9:{c[p>>2]=f;i=4;break}case 10:{i=(o|0)==(c[s>>2]|0);if(!i?(a[(c[na>>2]|0)+20>>0]|0)==0:0){c[j>>2]=n;i=0;break}if((a[b+484>>0]|0)!=0|i^1)if((pb[c[pa>>2]&127](pa,-4,g,g,o)|0)==-1)i=29;else{c[j>>2]=n;i=0}else i=3;break}case 58:{do if((a[D>>0]|0?(Ea=a[ta>>0]|0,a[ta>>0]=1,c[M>>2]|0):0)?c[va>>2]|0:0){i=XV(b,E,75291,36)|0;if(!i){i=1;break d}Da=i+20|0;c[Da>>2]=c[Aa>>2];a[wa>>0]=0;if(!(pb[c[va>>2]&127](c[xa>>2]|0,0,c[Da>>2]|0,c[i+16>>2]|0,c[i+24>>2]|0)|0)){i=21;break d}if(!(a[wa>>0]|0)){a[ta>>0]=Ea;break}if(((a[ya>>0]|0)==0?(Fa=c[za>>2]|0,Fa|0):0)?(kb[Fa&63](c[ra>>2]|0)|0)==0:0){i=22;break d}}while(0);c[b+276>>2]=58;i=ZV(b,n,g,j)|0;break}case 184:{i=(e|0)==28?10:(e|0)==12?17:2;break}case 189:{c[b+276>>2]=59;i=0;break}case 193:{c[aa>>2]=(c[aa>>2]|0)>>>1;i=1;break}case 198:{c[aa>>2]=0;i=1;break}case 278:{c[j>>2]=c[Da>>2];i=0;break}case 280:break}l=Ga;return i|0}function UV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+32|0;p=q+16|0;m=q+12|0;i=q+8|0;j=q+4|0;k=q;c[p>>2]=0;c[m>>2]=0;c[i>>2]=0;c[k>>2]=-1;n=b+144|0;o=b+284|0;g=(d|0)!=0;a:do if(rb[(a[b+232>>0]<<24>>24?2:1)&3](d,c[n>>2]|0,e,f,o,i,j,p,m,k)|0){if((c[k>>2]|0)==1&(g^1)?(a[(c[b+352>>2]|0)+130>>0]=1,h=b+488|0,(c[h>>2]|0)==1):0)c[h>>2]=0;h=b+140|0;if(!(c[h>>2]|0))if(!(c[b+80>>2]|0)){e=0;d=0}else{gW(b,c[n>>2]|0,e,f);e=0;d=0}else{d=c[p>>2]|0;if(!d)d=0;else{f=c[n>>2]|0;d=VV(b+436|0,f,d,d+(lb[c[f+28>>2]&127](f,d)|0)|0)|0;if(!d){d=1;break}c[b+452>>2]=c[b+448>>2]}g=c[i>>2]|0;if(g){i=c[n>>2]|0;g=VV(b+436|0,i,g,(c[j>>2]|0)+(0-(c[i+64>>2]|0))|0)|0;if(!g){d=1;break}}else g=0;xb[c[h>>2]&31](c[b+4>>2]|0,g,d,c[k>>2]|0);e=g}do if(!(c[b+228>>2]|0)){g=c[m>>2]|0;h=g;if(g|0){k=c[g+64>>2]|0;m=c[n>>2]|0;if((k|0)==(c[m+64>>2]|0)?(k|0)!=2|(g|0)==(m|0):0){c[n>>2]=h;break}c[o>>2]=c[p>>2];d=19;break a}g=c[p>>2]|0;if(g|0){h=b+436|0;if(!d){d=c[n>>2]|0;d=VV(h,d,g,g+(lb[c[d+28>>2]&127](d,g)|0)|0)|0;if(!d){d=1;break a}}d=OW(b,d)|0;WV(h);if((d|0)!=18)break a;c[o>>2]=c[p>>2];d=18;break a}}while(0);if((d|0)!=0|(e|0)!=0){WV(b+436|0);d=0}else d=0}else d=g?31:30;while(0);l=q;return d|0}function VV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;do if(!(bW(b,d,e,f)|0))d=0;else{e=b+12|0;d=c[e>>2]|0;if((d|0)==(c[b+8>>2]|0)){if(!((dW(b)|0)<<24>>24)){d=0;break}d=c[e>>2]|0}c[e>>2]=d+1;a[d>>0]=0;d=c[b+16>>2]|0}while(0);return d|0}function WV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=a+4|0;b=c[e>>2]|0;a:do if(!b){c[e>>2]=c[a>>2];b=a}else{d=c[a>>2]|0;while(1){if(!d){b=a;break a}g=c[d>>2]|0;c[d>>2]=b;c[e>>2]=d;f=d;d=g;b=f}}while(0);c[b>>2]=0;c[a+16>>2]=0;c[a+12>>2]=0;c[a+8>>2]=0;return}function XV(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;w=e+8|0;a:do if(!(c[w>>2]|0))if(g){a[e+4>>0]=6;c[w>>2]=64;h=e+16|0;i=kb[c[c[h>>2]>>2]&63](256)|0;c[e>>2]=i;if(!i){c[w>>2]=0;h=0;break}else{G3(i|0,0,256)|0;j=MW(b,f)|0;j=(c[w>>2]|0)+-1&j;i=e;o=27;break}}else h=0;else{v=MW(b,f)|0;k=c[w>>2]|0;j=k+-1|0;l=c[e>>2]|0;m=v&0-k;u=e+4|0;n=j>>>2;i=0;j=j&v;while(1){h=c[l+(j<<2)>>2]|0;if(!h)break;if((NW(f,c[h>>2]|0)|0)<<24>>24)break a;if(!(i<<24>>24))h=(m>>>((d[u>>0]|0)+-1|0)&n|1)&255;else h=i;t=h&255;i=h;j=j-t+(j>>>0>>0?k:0)|0}if(g){i=a[u>>0]|0;h=i&255;if(!((c[e+12>>2]|0)>>>(h+-1|0))){h=e+16|0;i=e;o=27;break}q=h+1&255;j=i+1&255;s=1<>2]>>2]&63](i)|0;if(t){G3(t|0,0,i|0)|0;p=0-s|0;n=j+-1|0;o=r>>>2;m=0;while(1){if(m>>>0>=(c[w>>2]|0)>>>0)break;i=c[(c[e>>2]|0)+(m<<2)>>2]|0;if(i|0){i=MW(b,c[i>>2]|0)|0;k=((i&p)>>>n&o|1)&255;i=i&r;j=0;while(1){l=t+(i<<2)|0;if(!(c[l>>2]|0))break;l=j<<24>>24==0?k:j;x=l&255;i=i+(i>>>0>>0?s:0)-x|0;j=l}c[l>>2]=c[(c[e>>2]|0)+(m<<2)>>2]}m=m+1|0}tb[c[(c[h>>2]|0)+8>>2]&127](c[e>>2]|0);c[e>>2]=t;a[u>>0]=q;c[w>>2]=s;k=((v&p)>>>n&o|1)&255;i=r&v;j=0;while(1){if(!(c[t+(i<<2)>>2]|0)){j=i;i=e;o=27;break a}x=j<<24>>24==0?k:j;w=x&255;i=i+(i>>>0>>0?s:0)-w|0;j=x}}else h=0}else h=0}while(0);if((o|0)==27){h=kb[c[c[h>>2]>>2]&63](g)|0;c[(c[i>>2]|0)+(j<<2)>>2]=h;h=c[(c[i>>2]|0)+(j<<2)>>2]|0;if(!h)h=0;else{G3(h|0,0,g|0)|0;c[c[(c[i>>2]|0)+(j<<2)>>2]>>2]=f;h=e+12|0;c[h>>2]=(c[h>>2]|0)+1;h=c[(c[i>>2]|0)+(j<<2)>>2]|0}}return h|0}function YV(b){b=b|0;var c=0,d=0,e=0;e=b;c=b;while(1){d=a[e>>0]|0;if(!(d<<24>>24))break;switch(d<<24>>24|0){case 10:case 13:case 32:{if((c|0)!=(b|0)){if((a[c+-1>>0]|0)!=32){a[c>>0]=32;c=c+1|0}}else c=b;break}default:{a[c>>0]=d;c=c+1|0}}e=e+1|0}if((c|0)!=(b|0)){b=c+-1|0;b=(a[b>>0]|0)==32?b:c}a[b>>0]=0;return}function ZV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;d=qW(b,0,c[b+144>>2]|0,d,e,f,(a[b+480>>0]|0)==0&1)|0;if((d|0)==0?(zW(b)|0)<<24>>24==0:0)d=1;return d|0}function _V(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a+352>>2]|0;b=VV(g+80|0,b,d,e)|0;do if((b|0)!=0?(f=XV(a,g+20|0,b,24)|0,(f|0)!=0):0)if((c[f>>2]|0)==(b|0)){c[g+96>>2]=c[g+92>>2];if(!(BW(a,f)|0)){f=0;break}}else c[g+92>>2]=c[g+96>>2];else f=0;while(0);return f|0}function $V(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=c[b+352>>2]|0;k=m+80|0;n=m+92|0;h=c[n>>2]|0;l=m+88|0;if((h|0)==(c[l>>2]|0))if(!((dW(k)|0)<<24>>24))g=0;else{h=c[n>>2]|0;i=4}else i=4;a:do if((i|0)==4){c[n>>2]=h+1;a[h>>0]=0;d=VV(k,d,e,f)|0;if((d|0)!=0?(j=d+1|0,g=XV(b,m+40|0,j,12)|0,(g|0)!=0):0){if((c[g>>2]|0)!=(j|0)){c[n>>2]=c[m+96>>2];break}h=c[n>>2]|0;i=m+96|0;c[i>>2]=h;if(a[b+232>>0]|0){e=a[j>>0]|0;b:do if(e<<24>>24==120)if((((a[d+2>>0]|0)==109?(a[d+3>>0]|0)==108:0)?(a[d+4>>0]|0)==110:0)?(a[d+5>>0]|0)==115:0){switch(a[d+6>>0]|0){case 0:{h=m+152|0;break}case 58:{h=XV(b,m+60|0,d+7|0,8)|0;break}default:{f=0;d=120;break b}}c[g+4>>2]=h;a[g+9>>0]=1;break a}else{f=0;d=120}else{f=0;d=e}while(0);c:while(1){switch(d<<24>>24){case 0:break a;case 58:{e=0;break c}default:{}}d=f+1|0;f=d;d=a[j+d>>0]|0}while(1){d=(h|0)==(c[l>>2]|0);if((e|0)>=(f|0))break;if(d){if(!((dW(k)|0)<<24>>24)){g=0;break a}h=c[n>>2]|0}d=a[j+e>>0]|0;c[n>>2]=h+1;a[h>>0]=d;e=e+1|0;h=c[n>>2]|0}if(d){if(!((dW(k)|0)<<24>>24)){g=0;break}h=c[n>>2]|0}c[n>>2]=h+1;a[h>>0]=0;h=XV(b,m+60|0,c[i>>2]|0,8)|0;c[g+4>>2]=h;if(h){d=c[i>>2]|0;if((c[h>>2]|0)==(d|0)){c[i>>2]=c[n>>2];break}else{c[n>>2]=d;break}}else g=0}}else g=0}while(0);return g|0}function aW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=b+12|0;h=b+8|0;while(1){e=a[d>>0]|0;if(!(e<<24>>24)){i=7;break}f=c[g>>2]|0;if((f|0)==(c[h>>2]|0)){if(!((dW(b)|0)<<24>>24)){d=0;break}f=c[g>>2]|0;e=a[d>>0]|0}c[g>>2]=f+1;a[f>>0]=e;d=d+1|0}if((i|0)==7)d=c[b+16>>2]|0;return d|0}function bW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;c[h>>2]=d;g=a+12|0;if((c[g>>2]|0)==0?(dW(a)|0)<<24>>24==0:0)d=0;else f=3;a:do if((f|0)==3){d=b+56|0;f=a+8|0;while(1){if((pb[c[d>>2]&127](b,h,e,g,c[f>>2]|0)|0)>>>0<2)break;if(!((dW(a)|0)<<24>>24)){d=0;break a}}d=c[a+16>>2]|0}while(0);l=i;return d|0}function cW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0;i=f<<24>>24==0;n=b+12|0;m=c[n>>2]|0;a:do if(!(i&(g|0)==0)){j=b+20|0;f=0;while(1){if((f|0)>=(m|0))break;if((c[(c[j>>2]|0)+(f*12|0)>>2]|0)==(d|0)){f=1;break a}else f=f+1|0}if((!i?(k=b+8|0,(c[k>>2]|0)==0):0)?(a[d+9>>0]|0)==0:0){c[k>>2]=d;l=9}else l=9}else l=9;while(0);b:do if((l|0)==9){j=b+16|0;do if((m|0)==(c[j>>2]|0))if(!m){c[j>>2]=8;f=kb[c[h+12>>2]&63](96)|0;c[b+20>>2]=f;if(f|0)break;c[j>>2]=0;f=0;break b}else{i=b+20|0;f=lb[c[h+16>>2]&127](c[i>>2]|0,m*24|0)|0;if(!f){f=0;break b}c[j>>2]=m<<1;c[i>>2]=f;break}else f=c[b+20>>2]|0;while(0);h=c[n>>2]|0;c[f+(h*12|0)>>2]=d;c[f+(h*12|0)+8>>2]=g;a[f+(h*12|0)+4>>0]=e;if(!(e<<24>>24))a[d+8>>0]=1;c[n>>2]=(c[n>>2]|0)+1;f=1}while(0);return f|0}function dW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;b=a+4|0;e=c[b>>2]|0;do if(e){f=a+16|0;g=c[f>>2]|0;if(!g){c[a>>2]=e;c[b>>2]=c[e>>2];c[e>>2]=0;l=c[a>>2]|0;b=l+8|0;c[f>>2]=b;c[a+8>>2]=(c[l+4>>2]|0)+(l+8);c[a+12>>2]=b;b=1;break}d=a+8|0;if(((c[d>>2]|0)-g|0)<(c[e+4>>2]|0)){k=c[e>>2]|0;c[e>>2]=c[a>>2];l=c[b>>2]|0;c[a>>2]=l;c[b>>2]=k;b=c[f>>2]|0;E3(l+8|0,b|0,(c[d>>2]|0)-b|0)|0;b=c[a>>2]|0;l=a+12|0;c[l>>2]=(c[l>>2]|0)-(c[f>>2]|0)+(b+8);c[f>>2]=b+8;c[d>>2]=(c[b+4>>2]|0)+(b+8);b=1}else h=6}else h=6;while(0);a:do if((h|0)==6){e=c[a>>2]|0;k=a+16|0;do if(!e){i=k;b=c[k>>2]|0}else{j=c[k>>2]|0;b=j;if((j|0)!=(e+8|0)){i=k;break}f=a+8|0;g=(c[f>>2]|0)-b<<1;h=a+12|0;d=(c[h>>2]|0)-b|0;if((g|0)<0){b=0;break a}b=LW(g)|0;if(!b){b=0;break a}b=lb[c[(c[a+20>>2]|0)+4>>2]&127](e,b)|0;if(!b){b=0;break a}c[a>>2]=b;c[b+4>>2]=g;b=c[a>>2]|0;c[h>>2]=b+8+d;c[k>>2]=b+8;c[f>>2]=b+8+g;b=1;break a}while(0);j=a+8|0;b=(c[j>>2]|0)-b|0;if((b|0)>=0){if((b|0)>=1024){b=b<<1;if((b|0)<0){b=0;break}}else b=1024;d=LW(b)|0;if((d|0)!=0?(l=kb[c[c[a+20>>2]>>2]&63](d)|0,(l|0)!=0):0){c[l+4>>2]=b;c[l>>2]=c[a>>2];c[a>>2]=l;h=a+12|0;a=c[h>>2]|0;e=c[k>>2]|0;d=a;f=e;if((a|0)==(e|0)){g=l+8|0;e=f}else{g=l+8|0;E3(g|0,e|0,d-f|0)|0;e=c[i>>2]|0;d=c[h>>2]|0}c[h>>2]=l+8+(d-e);c[k>>2]=g;c[j>>2]=l+8+b;b=1}else b=0}else b=0}while(0);return b|0}function eW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;b=KW(b,d,e,f,g,h)|0;do if(!b){d=h+12|0;b=c[d>>2]|0;if((e<<24>>24==0?(c[h+16>>2]|0)!=(b|0):0)?(i=b+-1|0,(a[i>>0]|0)==32):0){c[d>>2]=i;b=i}if((b|0)==(c[h+8>>2]|0)){if(!((dW(h)|0)<<24>>24)){b=1;break}b=c[d>>2]|0}c[d>>2]=b+1;a[b>>0]=0;b=0}while(0);return b|0}function fW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+16|0;B=H;C=H+4|0;g=c[b+352>>2]|0;D=g+104|0;F=b+272|0;E=c[F>>2]|0;c[F>>2]=1;if((c[D>>2]|0)==0?(dW(D)|0)<<24>>24==0:0)g=1;else{n=d+20|0;o=b+484|0;p=b+144|0;q=b+412|0;r=d+64|0;s=g+132|0;t=b+428|0;u=b+424|0;v=b+224|0;w=b+112|0;m=g+130|0;x=g+128|0;y=g+131|0;z=b+116|0;A=g+112|0;j=g+116|0;k=d+40|0;a:while(1){b:do switch(ob[c[n>>2]&127](d,e,f,B)|0){case -4:{g=0;break a}case -1:{G=37;break a}case 0:{G=39;break a}case 28:{if((a[o>>0]|0)==0?(c[p>>2]|0)==(d|0):0){G=19;break a}g=c[r>>2]|0;g=VV(q,d,e+g|0,(c[B>>2]|0)+(0-g)|0)|0;if(!g){g=1;break a}h=XV(b,s,g,0)|0;c[u>>2]=c[t>>2];if(!h){G=9;break a}i=h+32|0;if(a[i>>0]|0){G=11;break a}g=h+16|0;if(!(c[g>>2]|0)){a[i>>0]=1;g=c[h+4>>2]|0;g=fW(b,c[v>>2]|0,g,g+(c[h+8>>2]|0)|0)|0;a[i>>0]=0;if(!g)break b;else break a}if(c[w>>2]|0){a[y>>0]=0;a[i>>0]=1;h=(pb[c[w>>2]&127](c[z>>2]|0,0,c[h+20>>2]|0,c[g>>2]|0,c[h+24>>2]|0)|0)==0;a[i>>0]=0;if(h){g=21;break a}if(a[y>>0]|0)break b}a[x>>0]=a[m>>0]|0;break}case 6:case 9:{if(!(bW(D,d,e,c[B>>2]|0)|0)){g=1;break a}break}case -3:{c[B>>2]=e+(c[r>>2]|0);G=22;break}case 7:{G=22;break}case 10:{g=lb[c[k>>2]&127](d,e)|0;if((g|0)<0){G=27;break a}h=fX(g,C)|0;e=0;while(1){if((e|0)>=(h|0))break;g=c[j>>2]|0;if((c[A>>2]|0)==(g|0)){if(!((dW(D)|0)<<24>>24)){g=1;G=35;break a}g=c[j>>2]|0}i=a[C+e>>0]|0;c[j>>2]=g+1;a[g>>0]=i;e=e+1|0}break}default:{G=41;break a}}while(0);if((G|0)==22){G=0;g=c[j>>2]|0;if((c[A>>2]|0)==(g|0)){if(!((dW(D)|0)<<24>>24)){g=1;break}g=c[j>>2]|0}c[j>>2]=g+1;a[g>>0]=10}e=c[B>>2]|0}if((G|0)==9){a[x>>0]=a[m>>0]|0;g=0}else if((G|0)==11)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=e;g=12}else g=12;else if((G|0)==19){c[b+284>>2]=e;g=10}else if((G|0)==27)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=e;g=14;G=35}else{g=14;G=35}else if((G|0)==37)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=e;g=4}else g=4;else if((G|0)==39)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=c[B>>2];g=4}else g=4;else if((G|0)==41)if((c[p>>2]|0)==(d|0)){c[b+284>>2]=e;g=23}else g=23;c[F>>2]=E}l=H;return g|0}function gW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+16|0;n=p;o=p+4|0;c[n>>2]=e;if(!(a[d+68>>0]|0)){if((c[b+144>>2]|0)==(d|0)){g=b+288|0;h=b+284|0}else{h=c[b+296>>2]|0;g=h+4|0}i=b+44|0;j=d+56|0;k=b+48|0;m=b+80|0;e=b+4|0;do{c[o>>2]=c[i>>2];b=pb[c[j>>2]&127](d,n,f,o,c[k>>2]|0)|0;c[g>>2]=c[n>>2];q=c[i>>2]|0;vb[c[m>>2]&127](c[e>>2]|0,q,(c[o>>2]|0)-q|0);c[h>>2]=c[n>>2]}while(b>>>0>1)}else vb[c[b+80>>2]&127](c[b+4>>2]|0,e,f-e|0);l=p;return}function hW(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;j=m;k=c[d>>2]|0;if((c[a+144>>2]|0)==(b|0)){i=a+284|0;c[i>>2]=k;h=a+288|0}else{i=c[a+296>>2]|0;h=i+4|0}c[i>>2]=k;c[d>>2]=0;n=ob[c[b+12>>2]&127](b,k,e,j)|0;e=c[j>>2]|0;c[h>>2]=e;switch(n|0){case 42:{if(c[a+80>>2]|0){gW(a,b,k,e);e=c[j>>2]|0}c[d>>2]=e;c[f>>2]=e;e=(c[a+476>>2]|0)==2?35:0;break}case 0:{c[i>>2]=e;e=4;break}case -2:{if(!(g<<24>>24))e=6;else{c[f>>2]=k;e=0}break}case -4:case -1:{if(!(g<<24>>24))e=2;else{c[f>>2]=k;e=0}break}default:{c[i>>2]=e;e=23}}l=m;return e|0}function iW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=l;l=l+16|0;g=h;c[g>>2]=d;d=hW(b,c[b+144>>2]|0,g,e,f,(a[b+480>>0]|0)==0&1)|0;g=c[g>>2]|0;if(!((d|0)!=0|(g|0)==0)){c[b+276>>2]=57;d=SV(b,g,e,f)|0}l=h;return d|0}function jW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=c[a+352>>2]|0;j=i+184|0;if(!(c[j>>2]|0)){b=kb[c[a+12>>2]&63](c[a+464>>2]<<2)|0;c[j>>2]=b;if(!b)b=-1;else{c[b>>2]=0;d=4}}else d=4;do if((d|0)==4){h=i+176|0;b=c[h>>2]|0;g=i+172|0;d=c[g>>2]|0;f=i+164|0;e=c[f>>2]|0;if(b>>>0>>0)g=e;else{if(!e){b=kb[c[a+12>>2]&63](896)|0;if(!b){b=-1;break}else{d=b;b=32}}else{b=lb[c[a+16>>2]&127](e,d*56|0)|0;if(!b){b=-1;break}d=b;b=c[g>>2]<<1}c[g>>2]=b;c[f>>2]=d;b=c[h>>2]|0;g=d}c[h>>2]=b+1;d=c[i+180>>2]|0;if(d|0){a=c[(c[j>>2]|0)+(d+-1<<2)>>2]|0;f=g+(a*28|0)+16|0;d=c[f>>2]|0;if(d|0)c[g+(d*28|0)+24>>2]=b;d=g+(a*28|0)+20|0;e=c[d>>2]|0;if(!e)c[g+(a*28|0)+12>>2]=b;c[f>>2]=b;c[d>>2]=e+1}j=g+(b*28|0)+12|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0}while(0);return b|0}function kW(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;n=p;o=b+300|0;f=c[o>>2]|0;if(!f){f=kb[c[b+12>>2]&63](24)|0;if(!f)f=1;else{m=f;g=4}}else{c[o>>2]=c[f+8>>2];m=f;g=4}do if((g|0)==4){h=d+32|0;a[h>>0]=1;i=d+12|0;c[i>>2]=0;j=b+296|0;k=m+8|0;c[k>>2]=c[j>>2];c[j>>2]=m;c[m+12>>2]=d;f=b+308|0;c[m+16>>2]=c[f>>2];a[m+20>>0]=e;c[m>>2]=0;c[m+4>>2]=0;g=c[d+4>>2]|0;e=g+(c[d+8>>2]|0)|0;c[n>>2]=g;if(!(a[d+33>>0]|0))f=qW(b,c[f>>2]|0,c[b+224>>2]|0,g,e,n,0)|0;else{d=b+224|0;f=c[d>>2]|0;f=ob[c[f>>2]&127](f,g,e,n)|0;f=TV(b,c[d>>2]|0,g,e,f,c[n>>2]|0,n,0)|0}if(!f){f=c[n>>2]|0;if((e|0)!=(f|0)?(c[b+476>>2]|0)==3:0){c[i>>2]=f-g;c[b+276>>2]=60;f=0;break}a[h>>0]=0;c[j>>2]=c[k>>2];c[k>>2]=c[o>>2];c[o>>2]=m;f=0}}while(0);l=p;return f|0}function lW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+16|0;d=g+4|0;e=g;b=c[a+352>>2]|0;f=b+176|0;b=kb[c[a+12>>2]&63](((c[f>>2]|0)*20|0)+(c[b+168>>2]|0)|0)|0;if(!b)b=0;else{c[e>>2]=b+((c[f>>2]|0)*20|0);c[d>>2]=b+20;pW(a,0,b,d,e)}l=g;return b|0}function mW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=a+64|0;if(!(c[j>>2]|0))if(!(c[a+80>>2]|0))d=1;else{gW(a,b,d,e);d=1}else{h=b+64|0;g=d+(c[h>>2]<<1)|0;d=g+(lb[c[b+28>>2]&127](b,g)|0)|0;f=a+412|0;g=VV(f,b,g,d)|0;if((g|0)!=0?(c[a+428>>2]=c[a+424>>2],i=lb[c[b+32>>2]&127](b,d)|0,i=VV(f,b,i,e+(0-(c[h>>2]<<1))|0)|0,(i|0)!=0):0){oW(i);vb[c[j>>2]&127](c[a+4>>2]|0,g,i);WV(f);d=1}else d=0}return d|0}function nW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=a+68|0;if(!(c[g>>2]|0))if(!(c[a+80>>2]|0))b=1;else{gW(a,b,d,e);b=1}else{f=a+412|0;h=c[b+64>>2]|0;b=VV(f,b,d+(h<<2)|0,e+(O(h,-3)|0)|0)|0;if(!b)b=0;else{oW(b);ub[c[g>>2]&63](c[a+4>>2]|0,b);WV(f);b=1}}return b|0}function oW(b){b=b|0;var c=0,d=0,e=0;a:while(1){switch(a[b>>0]|0){case 0:break a;case 13:{d=b;c=13;e=4;break a}default:{}}b=b+1|0}if((e|0)==4){while(1){if(c<<24>>24==13){a[d>>0]=10;e=b+1|0;b=(a[e>>0]|0)==10?b+2|0:e}else{a[d>>0]=c;b=b+1|0}d=d+1|0;c=a[b>>0]|0;if(!(c<<24>>24))break;else e=4}a[d>>0]=0}return}function pW(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=(c[b+352>>2]|0)+164|0;j=c[(c[k>>2]|0)+(d*28|0)>>2]|0;c[e>>2]=j;c[e+4>>2]=c[(c[k>>2]|0)+(d*28|0)+4>>2];if((j|0)==4){c[e+8>>2]=c[g>>2];d=c[(c[k>>2]|0)+(d*28|0)+8>>2]|0;while(1){j=a[d>>0]|0;k=c[g>>2]|0;c[g>>2]=k+1;a[k>>0]=j;if(!(a[d>>0]|0))break;else d=d+1|0}c[e+12>>2]=0;c[e+16>>2]=0}else{h=c[(c[k>>2]|0)+(d*28|0)+20>>2]|0;i=e+12|0;c[i>>2]=h;j=e+16|0;c[j>>2]=c[f>>2];c[f>>2]=(c[f>>2]|0)+(h*20|0);d=(c[k>>2]|0)+(d*28|0)+12|0;h=0;while(1){d=c[d>>2]|0;if(h>>>0>=(c[i>>2]|0)>>>0)break;pW(b,d,(c[j>>2]|0)+(h*20|0)|0,f,g);d=(c[k>>2]|0)+(d*28|0)+24|0;h=h+1|0}c[e+8>>2]=0}return}function qW(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;ma=l;l=l+48|0;ja=ma+28|0;ea=ma+32|0;ka=ma+24|0;Z=ma;c[ja>>2]=f;_=c[b+352>>2]|0;if((c[b+144>>2]|0)==(e|0)){fa=b+284|0;Y=b+288|0}else{Y=c[b+296>>2]|0;fa=Y;Y=Y+4|0}c[fa>>2]=f;t=e+4|0;ga=b+80|0;u=b+476|0;v=e+44|0;w=e+64|0;x=_+80|0;y=_+96|0;z=_+92|0;A=_+129|0;B=b+112|0;C=b+116|0;D=b+428|0;E=b+424|0;F=b+304|0;G=b+120|0;ha=b+4|0;H=_+130|0;$=b+60|0;I=b+364|0;J=b+12|0;K=b+360|0;L=e+28|0;ia=b+308|0;aa=e+56|0;M=b+16|0;N=b+52|0;O=b+412|0;P=b+388|0;Q=b+56|0;R=b+232|0;S=b+233|0;T=b+468|0;U=b+104|0;V=b+372|0;W=e+40|0;X=b+72|0;ba=e+68|0;ca=b+44|0;da=b+48|0;a:while(1){s=c[ja>>2]|0;c[ea>>2]=s;s=ob[c[t>>2]&127](e,s,g,ea)|0;f=c[ea>>2]|0;c[Y>>2]=f;k=f;b:do switch(s|0){case -3:{la=6;break a}case -4:{la=15;break a}case 0:{la=20;break a}case -1:{la=21;break a}case -2:{la=23;break a}case 12:{f=17;break a}case -5:{la=134;break a}case 9:{s=c[w>>2]|0;s=(nb[c[v>>2]&63](e,(c[ja>>2]|0)+s|0,k+(0-s)|0)|0)&255;a[ka>>0]=s;do if(s<<24>>24){f=c[$>>2]|0;if(f|0){vb[f&127](c[ha>>2]|0,ka,1);break}if(c[ga>>2]|0)gW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else{j=c[w>>2]|0;j=VV(x,e,(c[ja>>2]|0)+j|0,(c[ea>>2]|0)+(0-j)|0)|0;if(!j){f=1;la=56;break a}k=XV(b,_,j,0)|0;c[z>>2]=c[y>>2];if((a[A>>0]|0)!=0?(a[H>>0]|0)==0:0){if(!k){f=c[G>>2]|0;if(f|0){vb[f&127](c[ha>>2]|0,j,0);break}if(!(c[ga>>2]|0))break;gW(b,e,c[ja>>2]|0,c[ea>>2]|0);break}}else{if(!k){f=11;la=56;break a}if(!(a[k+34>>0]|0)){f=24;la=56;break a}}f=k+32|0;if(a[f>>0]|0){f=12;la=56;break a}if(c[k+28>>2]|0){f=15;la=56;break a}if(!(c[k+4>>2]|0)){if(!(c[B>>2]|0)){if(!(c[ga>>2]|0))break;gW(b,e,c[ja>>2]|0,c[ea>>2]|0);break}a[f>>0]=1;j=sW(b)|0;a[f>>0]=0;if(!j){f=1;la=56;break a}if(!(pb[c[B>>2]&127](c[C>>2]|0,j,c[k+20>>2]|0,c[k+16>>2]|0,c[k+24>>2]|0)|0)){f=21;la=56;break a}c[E>>2]=c[D>>2];break}if(a[F>>0]|0){f=kW(b,k,0)|0;if(!f)break;else{la=58;break a}}f=c[G>>2]|0;if(!f){if(c[ga>>2]|0)gW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else vb[f&127](c[ha>>2]|0,c[k>>2]|0,0);break b}while(0);break}case 1:case 2:{f=c[I>>2]|0;if(!f){f=kb[c[J>>2]&63](48)|0;if(!f){f=1;la=75;break a}j=kb[c[J>>2]&63](32)|0;c[f+36>>2]=j;if(!j){la=63;break a}c[f+40>>2]=j+32}else c[I>>2]=c[f>>2];o=f+44|0;c[o>>2]=0;c[f>>2]=c[K>>2];c[K>>2]=f;s=f+12|0;c[f+16>>2]=0;c[f+20>>2]=0;r=(c[ja>>2]|0)+(c[w>>2]|0)|0;q=f+4|0;c[q>>2]=r;p=f+8|0;c[p>>2]=lb[c[L>>2]&127](e,r)|0;c[ia>>2]=(c[ia>>2]|0)+1;q=c[q>>2]|0;p=q+(c[p>>2]|0)|0;c[Z>>2]=q;q=f+36|0;c[ka>>2]=c[q>>2];r=f+40|0;j=c[r>>2]|0;while(1){na=pb[c[aa>>2]&127](e,Z,p,ka,j+-1|0)|0;j=c[ka>>2]|0;m=c[q>>2]|0;k=m;n=j-k|0;if((na|0)==1?1:(c[Z>>2]|0)>>>0>=p>>>0)break;k=(c[r>>2]|0)-k<<1;j=lb[c[M>>2]&127](m,k)|0;if(!j){la=69;break a}c[q>>2]=j;na=j+k|0;c[r>>2]=na;c[ka>>2]=j+n;j=na}c[f+24>>2]=n;c[s>>2]=k;a[j>>0]=0;f=tW(b,e,c[ja>>2]|0,s,o)|0;if(f|0){la=75;break a}f=c[N>>2]|0;if(!f){if(c[ga>>2]|0)gW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else vb[f&127](c[ha>>2]|0,c[s>>2]|0,c[P>>2]|0);WV(O);break}case 3:case 4:{na=(c[ja>>2]|0)+(c[w>>2]|0)|0;c[ka>>2]=0;na=VV(O,e,na,na+(lb[c[L>>2]&127](e,na)|0)|0)|0;c[Z>>2]=na;if(!na){f=1;la=89;break a}c[D>>2]=c[E>>2];f=tW(b,e,c[ja>>2]|0,Z,ka)|0;if(f|0){la=79;break a}c[D>>2]=c[E>>2];f=c[N>>2]|0;if(!f)j=1;else{vb[f&127](c[ha>>2]|0,c[Z>>2]|0,c[P>>2]|0);j=0}f=c[Q>>2]|0;if(!f){if(j|0?c[ga>>2]|0:0)gW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else{if(c[N>>2]|0){c[fa>>2]=c[Y>>2];f=c[Q>>2]|0}ub[f&63](c[ha>>2]|0,c[Z>>2]|0)}WV(O);uW(b,c[ka>>2]|0);if((c[ia>>2]|0)==0?(c[u>>2]&-2|0)!=2:0){la=92;break a}break}case 5:{if((c[ia>>2]|0)==(d|0)){f=13;break a}n=c[K>>2]|0;c[K>>2]=c[n>>2];c[n>>2]=c[I>>2];c[I>>2]=n;f=(c[ja>>2]|0)+(c[w>>2]<<1)|0;j=lb[c[L>>2]&127](e,f)|0;if((j|0)!=(c[n+8>>2]|0)){la=96;break a}if(K0(c[n+4>>2]|0,f,j)|0){la=96;break a}c[ia>>2]=(c[ia>>2]|0)+-1;f=c[Q>>2]|0;if(!f){if(c[ga>>2]|0)gW(b,e,c[ja>>2]|0,c[ea>>2]|0)}else{j=c[n+16>>2]|0;m=n+12|0;if((j|0)!=0&(a[R>>0]|0)!=0){f=(c[m>>2]|0)+(c[n+28>>2]|0)|0;while(1){k=a[j>>0]|0;if(!(k<<24>>24))break;a[f>>0]=k;f=f+1|0;j=j+1|0}j=c[n+20>>2]|0;c:do if((j|0)!=0&(a[S>>0]|0)!=0){a[f>>0]=a[T>>0]|0;while(1){f=f+1|0;k=a[j>>0]|0;if(!(k<<24>>24))break c;a[f>>0]=k;j=j+1|0}}while(0);a[f>>0]=0;f=c[Q>>2]|0}ub[f&63](c[ha>>2]|0,c[m>>2]|0)}k=n+44|0;while(1){m=c[k>>2]|0;if(!m)break;f=c[U>>2]|0;if(!f){f=m;j=m}else{ub[f&63](c[ha>>2]|0,c[c[m>>2]>>2]|0);f=m;j=c[k>>2]|0}c[k>>2]=c[j+4>>2];c[m+4>>2]=c[V>>2];c[V>>2]=m;c[(c[f>>2]|0)+4>>2]=c[m+8>>2]}if(!(c[ia>>2]|0)){la=117;break a}break}case 10:{f=lb[c[W>>2]&127](e,c[ja>>2]|0)|0;if((f|0)<0){f=14;break a}j=c[$>>2]|0;if(j|0){s=c[ha>>2]|0;na=fX(f,ka)|0;vb[j&127](s,ka,na);break b}if(c[ga>>2]|0)gW(b,e,c[ja>>2]|0,c[ea>>2]|0);break}case 7:{f=c[$>>2]|0;if(f|0){a[ka>>0]=10;vb[f&127](c[ha>>2]|0,ka,1);break b}if(c[ga>>2]|0)gW(b,e,c[ja>>2]|0,k);break}case 8:{f=c[X>>2]|0;if(!f){if(c[ga>>2]|0)gW(b,e,c[ja>>2]|0,k)}else tb[f&127](c[ha>>2]|0);f=wW(b,e,ea,g,h,i)|0;if(f|0)break a;if(!(c[ea>>2]|0)){la=133;break a}break}case 6:{j=c[$>>2]|0;if(!j){if(!(c[ga>>2]|0))break b;gW(b,e,c[ja>>2]|0,k);break b}if(!(a[ba>>0]|0))f=k;else{na=c[ja>>2]|0;vb[j&127](c[ha>>2]|0,na,f-na|0);break b}while(1){c[ka>>2]=c[ca>>2];na=pb[c[aa>>2]&127](e,ja,f,ka,c[da>>2]|0)|0;c[Y>>2]=c[ja>>2];s=c[ca>>2]|0;vb[j&127](c[ha>>2]|0,s,(c[ka>>2]|0)-s|0);if(na>>>0<2)break;c[fa>>2]=c[ja>>2];f=c[ea>>2]|0}break}case 11:{if(!(mW(b,e,c[ja>>2]|0,k)|0)){f=1;break a}break}case 13:{if(!(nW(b,e,c[ja>>2]|0,k)|0)){f=1;break a}break}default:if(c[ga>>2]|0)gW(b,e,c[ja>>2]|0,k)}while(0);na=c[ea>>2]|0;c[ja>>2]=na;c[fa>>2]=na;switch(c[u>>2]|0){case 2:{f=35;break a}case 3:{la=160;break a}default:{}}}switch(la|0){case 6:{if(i<<24>>24){c[h>>2]=c[ja>>2];f=0;break}c[Y>>2]=g;f=c[$>>2]|0;if(!f){if(c[ga>>2]|0)gW(b,e,c[ja>>2]|0,g)}else{a[ka>>0]=10;vb[f&127](c[ha>>2]|0,ka,1)}if(d)if((c[ia>>2]|0)==(d|0)){c[h>>2]=g;f=0}else f=13;else f=3;break}case 15:{if(i<<24>>24){c[h>>2]=c[ja>>2];f=0;break}if((d|0)>0)if((c[ia>>2]|0)==(d|0)){c[h>>2]=c[ja>>2];f=0}else f=13;else f=3;break}case 20:{c[fa>>2]=f;f=4;break}case 21:{if(!(i<<24>>24))f=5;else{c[h>>2]=c[ja>>2];f=0}break}case 23:{if(!(i<<24>>24))f=6;else{c[h>>2]=c[ja>>2];f=0}break}case 56:break;case 58:break;case 63:{tb[c[b+20>>2]&127](f);f=1;la=75;break}case 69:{f=1;la=75;break}case 79:{uW(b,c[ka>>2]|0);la=89;break}case 92:{f=vW(b,c[ea>>2]|0,g,h)|0;break}case 96:{c[fa>>2]=f;f=7;break}case 117:{f=vW(b,c[ea>>2]|0,g,h)|0;break}case 133:{c[b+276>>2]=61;f=0;break}case 134:{if(i<<24>>24){c[h>>2]=c[ja>>2];f=0;break}f=c[$>>2]|0;do if(!f){if(c[ga>>2]|0)gW(b,e,c[ja>>2]|0,g)}else if(!(a[ba>>0]|0)){c[ka>>2]=c[ca>>2];pb[c[aa>>2]&127](e,ja,g,ka,c[da>>2]|0)|0;na=c[ca>>2]|0;vb[c[$>>2]&127](c[ha>>2]|0,na,(c[ka>>2]|0)-na|0);break}else{na=c[ja>>2]|0;vb[f&127](c[ha>>2]|0,na,g-na|0);break}while(0);if(!d){c[fa>>2]=g;f=3;break}if((c[ia>>2]|0)==(d|0)){c[h>>2]=g;f=0;break}else{c[fa>>2]=g;f=13;break}}case 160:{c[h>>2]=c[ea>>2];f=0;break}}l=ma;return f|0}function rW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=l;l=l+16|0;p=q;k=b+296|0;m=c[k>>2]|0;do if(m){n=c[m+12>>2]|0;h=n+4|0;j=c[h>>2]|0;i=n+12|0;g=j+(c[i>>2]|0)|0;j=j+(c[n+8>>2]|0)|0;c[p>>2]=g;o=n+33|0;if(!(a[o>>0]|0))g=qW(b,c[m+16>>2]|0,c[b+224>>2]|0,g,j,p,0)|0;else{s=b+224|0;r=c[s>>2]|0;r=ob[c[r>>2]&127](r,g,j,p)|0;g=TV(b,c[s>>2]|0,g,j,r,c[p>>2]|0,p,0)|0}if(!g){g=c[p>>2]|0;if((j|0)!=(g|0)?(c[b+476>>2]|0)==3:0){c[i>>2]=g-(c[h>>2]|0);g=0;break}a[n+32>>0]=0;s=m+8|0;c[k>>2]=c[s>>2];g=b+300|0;c[s>>2]=c[g>>2];c[g>>2]=m;g=b+276|0;if(!(a[o>>0]|0)){c[g>>2]=58;g=qW(b,(c[b+472>>2]|0)!=0&1,c[b+144>>2]|0,d,e,f,(a[b+480>>0]|0)==0&1)|0;break}else{c[g>>2]=57;s=b+144|0;g=c[s>>2]|0;g=ob[c[g>>2]&127](g,d,e,p)|0;g=TV(b,c[s>>2]|0,d,e,g,c[p>>2]|0,f,(a[b+480>>0]|0)==0&1)|0;break}}}else g=23;while(0);l=q;return g|0}function sW(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;n=q;m=c[b+352>>2]|0;h=m+156|0;o=b+412|0;p=b+424|0;a:do if(!(c[h>>2]|0)){d=0;i=b+420|0;k=b+468|0;j=12}else{d=c[p>>2]|0;i=b+420|0;if((d|0)==(c[i>>2]|0)){if(!((dW(o)|0)<<24>>24)){d=0;break}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=61;g=b+468|0;e=(c[(c[h>>2]|0)+20>>2]|0)+(((a[g>>0]|0)!=0)<<31>>31)|0;f=0;while(1){if((f|0)>=(e|0)){d=1;k=g;j=12;break a}d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((dW(o)|0)<<24>>24)){d=0;break a}d=c[p>>2]|0}k=a[(c[(c[h>>2]|0)+16>>2]|0)+f>>0]|0;c[p>>2]=d+1;a[d>>0]=k;f=f+1|0}}while(0);b:do if((j|0)==12){MV(n,m+60|0);c:while(1){do{e=NV(n)|0;if(!e)break c;h=e+4|0}while(!(c[h>>2]|0));if(d<<24>>24){d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((dW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=12}g=c[e>>2]|0;while(1){e=a[g>>0]|0;d=c[p>>2]|0;f=(d|0)==(c[i>>2]|0);if(!(e<<24>>24))break;if(f){if(!((dW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0;e=a[g>>0]|0}c[p>>2]=d+1;a[d>>0]=e;g=g+1|0}if(f){if(!((dW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=61;f=(c[(c[h>>2]|0)+20>>2]|0)+(((a[k>>0]|0)!=0)<<31>>31)|0;e=0;while(1){if((e|0)>=(f|0)){d=1;continue c}d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((dW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0}j=a[(c[(c[h>>2]|0)+16>>2]|0)+e>>0]|0;c[p>>2]=d+1;a[d>>0]=j;e=e+1|0}}MV(n,m);d:while(1){do{e=NV(n)|0;if(!e)break d}while(!(a[e+32>>0]|0));if(d<<24>>24){d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((dW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=12}f=c[e>>2]|0;while(1){e=a[f>>0]|0;if(!(e<<24>>24)){d=1;continue d}d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((dW(o)|0)<<24>>24)){d=0;break b}d=c[p>>2]|0;e=a[f>>0]|0}c[p>>2]=d+1;a[d>>0]=e;f=f+1|0}}d=c[p>>2]|0;if((d|0)==(c[i>>2]|0)){if(!((dW(o)|0)<<24>>24)){d=0;break}d=c[p>>2]|0}c[p>>2]=d+1;a[d>>0]=0;d=c[b+428>>2]|0}while(0);l=q;return d|0}function tW(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;O=l;l=l+80|0;K=O+16|0;L=O;M=c[b+352>>2]|0;k=M+20|0;i=XV(b,k,c[g>>2]|0,0)|0;if(!i){i=AW(M+80|0,c[g>>2]|0)|0;if((i|0)!=0?(j=XV(b,k,i,24)|0,(j|0)!=0):0)if((a[b+232>>0]|0)!=0?(BW(b,j)|0)==0:0)i=1;else A=6;else i=1}else{j=i;A=6}a:do if((A|0)==6){x=c[j+12>>2]|0;k=e+36|0;m=b+376|0;t=b+388|0;u=ob[c[k>>2]&127](e,f,c[m>>2]|0,c[t>>2]|0)|0;i=u+x|0;n=c[m>>2]|0;if((i|0)>(n|0)){i=i+16|0;c[m>>2]=i;i=lb[c[b+16>>2]&127](c[t>>2]|0,i<<4)|0;if(!i){c[m>>2]=n;i=1;break}c[t>>2]=i;if((u|0)>(n|0))ob[c[k>>2]&127](e,f,u,i)|0}J=c[t>>2]|0;r=e+28|0;H=b+412|0;I=b+428|0;w=j+20|0;q=b+424|0;s=0;p=0;k=0;while(1){if((p|0)>=(u|0))break;o=c[(c[t>>2]|0)+(p<<4)>>2]|0;o=$V(b,e,o,o+(lb[c[r>>2]&127](e,o)|0)|0)|0;if(!o){i=1;break a}i=(c[o>>2]|0)+-1|0;if(a[i>>0]|0){A=15;break}a[i>>0]=1;f=s+1|0;c[J+(s<<2)>>2]=c[o>>2];n=c[t>>2]|0;if(a[n+(p<<4)+12>>0]|0){G=VV(H,e,c[n+(p<<4)+4>>2]|0,c[n+(p<<4)+8>>2]|0)|0;c[J+(f<<2)>>2]=G;if(!G){i=1;break a}}else{b:do if(!(a[o+8>>0]|0))i=1;else{i=0;while(1){if((i|0)>=(x|0)){i=1;break b}m=c[w>>2]|0;if((o|0)==(c[m+(i*12|0)>>2]|0))break;i=i+1|0}i=a[m+(i*12|0)+4>>0]|0}while(0);i=eW(b,e,i,c[n+(p<<4)+4>>2]|0,c[n+(p<<4)+8>>2]|0,H)|0;if(i|0)break a;c[J+(f<<2)>>2]=c[I>>2]}c[I>>2]=c[q>>2];i=c[o+4>>2]|0;do if(i)if(a[o+9>>0]|0){i=CW(b,i,o,c[J+(f<<2)>>2]|0,h)|0;if(!i){i=s;break}else break a}else{a[(c[o>>2]|0)+-1>>0]=2;k=k+1|0;i=s+2|0;break}else i=s+2|0;while(0);s=i;p=p+1|0}if((A|0)==15){if((c[b+144>>2]|0)!=(e|0)){i=8;break}c[b+284>>2]=c[(c[t>>2]|0)+(p<<4)>>2];i=8;break}c[b+380>>2]=s;i=c[j+8>>2]|0;c:do if((i|0)!=0?(v=c[i>>2]|0,(a[v+-1>>0]|0)!=0):0){i=0;while(1){if((i|0)>=(s|0)){f=0;p=k;G=s;break c}if((c[J+(i<<2)>>2]|0)==(v|0)){A=37;break c}i=i+2|0}}else{i=-1;A=37}while(0);if((A|0)==37){c[b+384>>2]=i;f=0;p=k;G=s}while(1){if((f|0)>=(x|0))break;i=c[w>>2]|0;n=i+(f*12|0)|0;k=c[n>>2]|0;m=(c[k>>2]|0)+-1|0;d:do if((a[m>>0]|0)==0?(y=i+(f*12|0)+8|0,z=c[y>>2]|0,(z|0)!=0):0){i=c[k+4>>2]|0;do if(i)if(a[k+9>>0]|0){i=CW(b,i,k,z,h)|0;if(!i){i=p;k=G;break d}else break a}else{a[m>>0]=2;i=p+1|0;break}else{a[m>>0]=1;i=p}while(0);c[J+(G<<2)>>2]=c[c[n>>2]>>2];c[J+(G+1<<2)>>2]=c[y>>2];k=G+2|0}else{i=p;k=G}while(0);f=f+1|0;p=i;G=k}c[J+(G<<2)>>2]=0;e:do if(!p)i=0;else{o=b+396|0;n=c[o>>2]|0;F=b+400|0;f=a[F>>0]|0;i=f&255;do if(!(p<<1>>i)){i=1<>24}while((p>>(E&255)|0)!=0);i=(i&255)>3?i:3;a[F>>0]=i;i=i&255;m=b+392|0;k=lb[c[b+16>>2]&127](c[m>>2]|0,12<>0]=f;i=1;break a}else{c[m>>2]=k;k=1<>2]|0)+(E*12|0)>>2]=-1;i=E}}while(0);E=i+-1|0;c[o>>2]=E;w=M+40|0;x=b+424|0;y=b+420|0;z=k+-1|0;A=0-k|0;B=z>>>2;C=b+233|0;D=b+468|0;i=0;v=p;g:while(1){while(1){if((i|0)>=(G|0))break e;e=J+(i<<2)|0;n=c[e>>2]|0;f=n+-1|0;if((a[f>>0]|0)==2)break;a[f>>0]=0;i=i+2|0}DW(b,L);EW(K,L);a[f>>0]=0;f=XV(b,w,n,0)|0;if(!f){i=1;break}f=c[f+4>>2]|0;if(!f){i=1;break}u=c[f+4>>2]|0;if(!u){i=27;break}q=u+20|0;r=u+16|0;p=0;while(1){f=c[q>>2]|0;o=c[r>>2]|0;if((p|0)>=(f|0))break;o=a[o+p>>0]|0;f=c[x>>2]|0;if((f|0)==(c[y>>2]|0)){if(!((dW(H)|0)<<24>>24)){i=1;break g}f=c[x>>2]|0}c[x>>2]=f+1;a[f>>0]=o;p=p+1|0}FW(K,o,f);do{t=n;n=n+1|0}while((a[t>>0]|0)!=58);FW(K,n,GW(n)|0);while(1){f=c[x>>2]|0;if((f|0)==(c[y>>2]|0)){if(!((dW(H)|0)<<24>>24)){i=1;break g}f=c[x>>2]|0}t=a[n>>0]|0;c[x>>2]=f+1;a[f>>0]=t;if(!(a[n>>0]|0))break;else n=n+1|0}t=HW(K)|0;q=c[m>>2]|0;r=t&A;n=0;s=z&t;while(1){if((c[q+(s*12|0)>>2]|0)!=(E|0))break;if((c[q+(s*12|0)+4>>2]|0)==(t|0)){f=c[q+(s*12|0)+8>>2]|0;o=c[I>>2]|0;while(1){P=a[o>>0]|0;p=P<<24>>24==0;if(p|P<<24>>24!=(a[f>>0]|0))break;f=f+1|0;o=o+1|0}if(p){i=8;break g}}if(!(n<<24>>24))n=(r>>>((d[F>>0]|0)+-1|0)&B|1)&255;P=n&255;s=s+((s|0)<(P|0)?k:0)-P|0}if(a[C>>0]|0){a[(c[x>>2]|0)+-1>>0]=a[D>>0]|0;f=c[c[u>>2]>>2]|0;while(1){n=c[x>>2]|0;if((n|0)==(c[y>>2]|0)){if(!((dW(H)|0)<<24>>24)){i=1;break g}n=c[x>>2]|0}P=a[f>>0]|0;c[x>>2]=n+1;a[n>>0]=P;if(!(a[f>>0]|0))break;else f=f+1|0}}P=c[I>>2]|0;c[I>>2]=c[x>>2];c[e>>2]=P;c[(c[m>>2]|0)+(s*12|0)>>2]=E;c[(c[m>>2]|0)+(s*12|0)+4>>2]=t;c[(c[m>>2]|0)+(s*12|0)+8>>2]=P;v=v+-1|0;i=i+2|0;if(!v)break e}break a}while(0);while(1){if((i|0)>=(G|0)){i=h;break}a[(c[J+(i<<2)>>2]|0)+-1>>0]=0;i=i+2|0}while(1){i=c[i>>2]|0;if(!i)break;a[(c[c[i+12>>2]>>2]|0)+-1>>0]=0;i=i+4|0}if(!(a[b+232>>0]|0))i=0;else{i=c[j+4>>2]|0;if(!i){i=c[M+156>>2]|0;if(!i){i=0;break}k=c[g>>2]|0}else{i=c[i+4>>2]|0;if(!i){i=27;break}j=c[g>>2]|0;while(1){k=j+1|0;if((a[j>>0]|0)==58)break;else j=k}}if((a[b+233>>0]|0)!=0?(N=c[c[i>>2]>>2]|0,(N|0)!=0):0){j=0;while(1){m=j+1|0;if(!(a[N+j>>0]|0))break;else j=m}}else m=0;c[g+4>>2]=k;p=i+20|0;c[g+16>>2]=c[p>>2];c[g+8>>2]=c[c[i>>2]>>2];c[g+20>>2]=m;q=0;while(1){r=q+1|0;if(!(a[k+q>>0]|0))break;else q=r}j=c[p>>2]|0;n=r+m+j|0;f=i+24|0;if((n|0)>(c[f>>2]|0)){j=n+24|0;o=kb[c[b+12>>2]&63](j)|0;if(!o){i=1;break}c[f>>2]=j;f=i+16|0;E3(o|0,c[f>>2]|0,c[p>>2]|0)|0;j=b+360|0;while(1){j=c[j>>2]|0;if(!j)break;n=j+12|0;if((c[n>>2]|0)==(c[f>>2]|0))c[n>>2]=o}tb[c[b+20>>2]&127](c[f>>2]|0);c[f>>2]=o;n=o;j=c[p>>2]|0}else{n=i+16|0;f=n;n=c[n>>2]|0}j=n+j|0;E3(j|0,k|0,r|0)|0;if(m|0){P=j+q|0;a[P>>0]=a[b+468>>0]|0;E3(P+1|0,c[c[i>>2]>>2]|0,m|0)|0}c[g>>2]=c[f>>2];i=0}}while(0);l=O;return i|0}function uW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=a+104|0;f=a+372|0;d=a+4|0;while(1){if(!b)break;a=c[e>>2]|0;if(!a)a=b;else{ub[a&63](c[d>>2]|0,c[c[b>>2]>>2]|0);a=b}h=b+4|0;g=c[h>>2]|0;c[h>>2]=c[f>>2];c[f>>2]=b;c[(c[a>>2]|0)+4>>2]=c[b+8>>2];b=g}return}function vW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;q=l;l=l+16|0;j=q;c[b+276>>2]=62;k=b+284|0;c[k>>2]=d;m=b+144|0;n=b+288|0;o=b+80|0;i=b+476|0;g=d;a:while(1){c[j>>2]=0;r=c[m>>2]|0;r=ob[c[r>>2]&127](r,g,e,j)|0;d=c[j>>2]|0;c[n>>2]=d;h=d;switch(r|0){case -15:{p=3;break a}case -4:{p=7;break a}case 0:{p=12;break a}case -1:{p=13;break a}case -2:{p=15;break a}case 15:{if(c[o>>2]|0)gW(b,c[m>>2]|0,g,h);break}case 11:{if(!(mW(b,c[m>>2]|0,g,h)|0)){d=1;break a}break}case 13:{if(!(nW(b,c[m>>2]|0,g,h)|0)){d=1;break a}break}default:{d=9;break a}}d=c[j>>2]|0;c[k>>2]=d;switch(c[i>>2]|0){case 2:{d=35;break a}case 3:{p=18;break a}default:{}}g=d}do if((p|0)==3){if(c[o>>2]|0){gW(b,c[m>>2]|0,g,h);if((c[i>>2]|0)==2){d=35;break}d=c[j>>2]|0}c[f>>2]=d;d=0}else if((p|0)==7){c[f>>2]=g;d=0}else if((p|0)==12){c[k>>2]=d;d=4}else if((p|0)==13)if(!(a[b+480>>0]|0)){c[f>>2]=g;d=0}else d=5;else if((p|0)==15)if(!(a[b+480>>0]|0)){c[f>>2]=g;d=0}else d=6;else if((p|0)==18){c[f>>2]=d;d=0}while(0);l=q;return d|0}function wW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=l;l=l+16|0;y=B+8|0;z=B+4|0;x=B;i=c[e>>2]|0;c[y>>2]=i;if((c[b+144>>2]|0)==(d|0)){s=b+284|0;c[s>>2]=i;t=b+288|0}else{t=c[b+296>>2]|0;s=t;t=t+4|0}c[s>>2]=i;c[e>>2]=0;k=d+8|0;m=b+60|0;u=b+80|0;v=b+4|0;w=b+476|0;n=d+68|0;o=b+44|0;p=d+56|0;q=b+48|0;a:while(1){j=ob[c[k>>2]&127](d,c[y>>2]|0,f,z)|0;i=c[z>>2]|0;c[t>>2]=i;r=i;b:do switch(j|0){case 40:{A=6;break a}case 0:{A=23;break a}case -2:{A=24;break a}case -4:case -1:{A=26;break a}case 7:{i=c[m>>2]|0;if(i|0){a[x>>0]=10;vb[i&127](c[v>>2]|0,x,1);break b}if(c[u>>2]|0)gW(b,d,c[y>>2]|0,r);break}case 6:{j=c[m>>2]|0;if(!j){if(!(c[u>>2]|0))break b;gW(b,d,c[y>>2]|0,r);break b}if(!(a[n>>0]|0))i=r;else{r=c[y>>2]|0;vb[j&127](c[v>>2]|0,r,i-r|0);break b}while(1){c[x>>2]=c[o>>2];r=pb[c[p>>2]&127](d,y,i,x,c[q>>2]|0)|0;c[t>>2]=c[z>>2];i=c[o>>2]|0;vb[j&127](c[v>>2]|0,i,(c[x>>2]|0)-i|0);if(r>>>0<2)break;c[s>>2]=c[y>>2];i=c[z>>2]|0}break}default:{A=28;break a}}while(0);r=c[z>>2]|0;c[y>>2]=r;c[s>>2]=r;switch(c[w>>2]|0){case 3:{A=30;break a}case 2:{i=35;break a}default:{}}}if((A|0)==6){i=c[b+76>>2]|0;if(!i){if(c[u>>2]|0)gW(b,d,c[y>>2]|0,r)}else tb[i&127](c[v>>2]|0);i=c[z>>2]|0;c[e>>2]=i;c[g>>2]=i;i=(c[w>>2]|0)==2?35:0}else if((A|0)==23){c[s>>2]=i;i=4}else if((A|0)==24)if(!(h<<24>>24))i=6;else{c[g>>2]=c[y>>2];i=0}else if((A|0)==26)if(!(h<<24>>24))i=20;else{c[g>>2]=c[y>>2];i=0}else if((A|0)==28){c[s>>2]=i;i=23}else if((A|0)==30){c[g>>2]=c[z>>2];i=0}l=B;return i|0}function xW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=l;l=l+16|0;g=h;c[g>>2]=d;d=wW(b,c[b+144>>2]|0,g,e,f,(a[b+480>>0]|0)==0&1)|0;g=c[g>>2]|0;do if(!((d|0)!=0|(g|0)==0)){d=b+276|0;if(!(c[b+472>>2]|0)){c[d>>2]=58;d=ZV(b,g,e,f)|0;break}else{c[d>>2]=63;d=yW(b,g,e,f)|0;break}}while(0);l=h;return d|0}function yW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;d=qW(b,1,c[b+144>>2]|0,d,e,f,(a[b+480>>0]|0)==0&1)|0;if((d|0)==0?(zW(b)|0)<<24>>24==0:0)d=1;return d|0}function zW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=a+16|0;a=a+360|0;while(1){a=c[a>>2]|0;if(!a){a=1;break}i=(c[a+24>>2]|0)+1|0;j=a+36|0;f=c[j>>2]|0;e=f+i|0;l=a+4|0;d=c[l>>2]|0;if((d|0)==(e|0)){a=1;break}k=a+8|0;b=c[k>>2]|0;g=b+i|0;h=a+40|0;if((g|0)>((c[h>>2]|0)-f|0)){e=lb[c[m>>2]&127](f,g)|0;if(!e){a=0;break}b=a+12|0;f=c[j>>2]|0;if((c[b>>2]|0)==(f|0))c[b>>2]=e;b=a+16|0;d=c[b>>2]|0;if(d|0)c[b>>2]=e+(d-f);c[j>>2]=e;c[h>>2]=e+g;e=e+i|0;d=c[l>>2]|0;b=c[k>>2]|0}E3(e|0,d|0,b|0)|0;c[l>>2]=e}return a|0}function AW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=b+12|0;g=b+8|0;while(1){e=c[f>>2]|0;if((e|0)==(c[g>>2]|0)){if(!((dW(b)|0)<<24>>24)){d=0;break}e=c[f>>2]|0}i=a[d>>0]|0;c[f>>2]=e+1;a[e>>0]=i;if(!(a[d>>0]|0)){h=6;break}else d=d+1|0}if((h|0)==6){i=b+16|0;d=c[i>>2]|0;c[i>>2]=c[f>>2]}return d|0}function BW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=c[b+352>>2]|0;j=n+80|0;k=n+92|0;l=n+88|0;m=n+60|0;n=n+96|0;i=d+4|0;h=c[d>>2]|0;a:while(1){switch(a[h>>0]|0){case 0:{e=1;break a}case 58:{g=c[d>>2]|0;while(1){e=c[k>>2]|0;f=(e|0)==(c[l>>2]|0);if((g|0)==(h|0))break;if(f){if(!((dW(j)|0)<<24>>24)){e=0;break a}e=c[k>>2]|0}f=a[g>>0]|0;c[k>>2]=e+1;a[e>>0]=f;g=g+1|0}if(f){if(!((dW(j)|0)<<24>>24)){e=0;break a}e=c[k>>2]|0}c[k>>2]=e+1;a[e>>0]=0;e=XV(b,m,c[n>>2]|0,8)|0;if(!e){e=0;break a}f=c[n>>2]|0;if((c[e>>2]|0)==(f|0))c[n>>2]=c[k>>2];else c[k>>2]=f;c[i>>2]=e;break}default:{}}h=h+1|0}return e|0}function CW(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;k=a[f>>0]|0;i=c[d>>2]|0;h=(i|0)==0;do if(!(k<<24>>24))if(h){m=0;j=11}else h=28;else if(((!h?(a[i>>0]|0)==120:0)?(a[i+1>>0]|0)==109:0)?(a[i+2>>0]|0)==108:0){h=a[i+3>>0]|0;if((h<<24>>24==110?(a[i+4>>0]|0)==115:0)?(a[i+5>>0]|0)==0:0){h=39;break}m=h<<24>>24==0&1;j=11}else{m=0;j=11}while(0);a:do if((j|0)==11){l=m<<24>>24!=0;h=1;i=1;n=0;while(1){j=i<<24>>24!=0;if(!(k<<24>>24))break;do if(j){if((n|0)<=36?k<<24>>24==(a[139175+n>>0]|0):0)break;i=0}else i=0;while(0);do if(!(l|h<<24>>24==0)){if((n|0)<=29?k<<24>>24==(a[139212+n>>0]|0):0)break;h=0}while(0);k=n+1|0;n=k;k=a[f+k>>0]|0}if((m&255|0)!=(j&(n|0)==36&1|0)){h=l?38:40;break}if(!(h<<24>>24!=0&(n|0)==29)){o=b+468|0;n=n+((a[o>>0]|0)!=0&1)|0;h=b+372|0;j=c[h>>2]|0;do if(!j){h=b+12|0;i=kb[c[h>>2]&63](28)|0;if(!i){h=1;break a}j=n+24|0;m=kb[c[h>>2]&63](j)|0;c[i+16>>2]=m;if(!m){tb[c[b+20>>2]&127](i);h=1;break a}else{c[i+24>>2]=j;j=i;break}}else{i=j+24|0;if((n|0)>(c[i>>2]|0)){k=j+16|0;l=n+24|0;m=lb[c[b+16>>2]&127](c[k>>2]|0,l)|0;if(!m){h=1;break a}c[k>>2]=m;c[i>>2]=l}c[h>>2]=c[j+4>>2]}while(0);c[j+20>>2]=n;i=j+16|0;E3(c[i>>2]|0,f|0,n|0)|0;h=a[o>>0]|0;if(h<<24>>24)a[(c[i>>2]|0)+(n+-1)>>0]=h;c[j>>2]=d;c[j+12>>2]=e;i=d+4|0;c[j+8>>2]=c[i>>2];if((a[f>>0]|0)==0?((c[b+352>>2]|0)+152|0)==(d|0):0)h=0;else h=j;c[i>>2]=h;c[j+4>>2]=c[g>>2];c[g>>2]=j;if((e|0)!=0?(p=c[b+100>>2]|0,(p|0)!=0):0){vb[p&127](c[b+4>>2]|0,c[d>>2]|0,c[i>>2]|0?f:0);h=0}else h=0}else h=40}while(0);return h|0}function DW(a,b){a=a|0;b=b|0;var d=0;d=b;c[d>>2]=0;c[d+4>>2]=0;b=b+8|0;c[b>>2]=JW(a)|0;c[b+4>>2]=0;return}function EW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=b;g=c[d+4>>2]^1936682341;e=a;c[e>>2]=c[d>>2]^1886610805;c[e+4>>2]=g;e=b+8|0;g=e;d=c[g+4>>2]^1685025377;f=a+8|0;c[f>>2]=c[g>>2]^1852075885;c[f+4>>2]=d;f=b;b=c[f+4>>2]^1819895653;d=a+16|0;c[d>>2]=c[f>>2]^1852142177;c[d+4>>2]=b;d=c[e+4>>2]^1952801890;b=a+24|0;c[b>>2]=c[e>>2]^2037671283;c[b+4>>2]=d;c[a+40>>2]=a+32;b=a+48|0;c[b>>2]=0;c[b+4>>2]=0;return}function FW(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0;n=e+f|0;o=b+40|0;p=b+40|0;q=b+32|0;r=b+33|0;s=b+34|0;t=b+35|0;h=b+36|0;i=b+37|0;j=b+38|0;k=b+39|0;l=b+24|0;m=b+48|0;f=e;do{while(1){g=c[o>>2]|0;if(f>>>0>=n>>>0){e=0;break}if(g>>>0>=p>>>0){e=1;break}e=a[f>>0]|0;c[o>>2]=g+1;a[g>>0]=e;f=f+1|0}if(g>>>0

>>0)break;A=d[q>>0]|0;B=z3(d[r>>0]|0|0,0,8)|0;g=z;y=z3(d[s>>0]|0|0,0,16)|0;g=g|z;w=z3(d[t>>0]|0|0,0,24)|0;g=g|z|(d[h>>0]|0);u=z3(d[i>>0]|0|0,0,40)|0;g=g|z;x=z3(d[j>>0]|0|0,0,48)|0;g=g|z;v=z3(d[k>>0]|0|0,0,56)|0;v=B|A|y|w|u|x|v;g=g|z;x=l;u=g^c[x+4>>2];w=l;c[w>>2]=v^c[x>>2];c[w+4>>2]=u;IW(b,2);w=b;g=c[w+4>>2]^g;u=b;c[u>>2]=c[w>>2]^v;c[u+4>>2]=g;c[o>>2]=q;u=m;u=r3(c[u>>2]|0,c[u+4>>2]|0,8,0)|0;g=m;c[g>>2]=u;c[g+4>>2]=z}while(e);return}function GW(b){b=b|0;var c=0;c=0;while(1){if(!(a[b>>0]|0))break;c=c+1|0;b=b+1|0}return c|0}function HW(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0;f=a+32|0;h=(c[a+40>>2]|0)-f|0;e=a+48|0;e=r3(c[e>>2]|0,c[e+4>>2]|0,h|0,0)|0;e=z3(e|0,z|0,56)|0;b=z;switch(h<<24>>24|0){case 7:{e=z3(d[a+38>>0]|0|0,0,48)|0|e;b=z|b;g=3;break}case 6:{g=3;break}case 5:{g=4;break}case 4:{g=5;break}case 3:{g=6;break}case 2:{g=7;break}case 1:{g=8;break}default:{}}if((g|0)==3){h=z3(d[a+37>>0]|0|0,0,40)|0;e=h|e;b=z|b;g=4}if((g|0)==4){b=d[a+36>>0]|0|b;g=5}if((g|0)==5){h=z3(d[a+35>>0]|0|0,0,24)|0;e=h|e;b=z|b;g=6}if((g|0)==6){h=z3(d[a+34>>0]|0|0,0,16)|0;e=h|e;b=z|b;g=7}if((g|0)==7){h=z3(d[a+33>>0]|0|0,0,8)|0;b=z|b;e=h|e;g=8}if((g|0)==8)e=e|(d[f>>0]|0);h=a+24|0;i=h;g=c[i+4>>2]^b;f=h;c[f>>2]=c[i>>2]^e;c[f+4>>2]=g;IW(a,2);f=a;b=c[f+4>>2]^b;g=a;c[g>>2]=c[f>>2]^e;c[g+4>>2]=b;g=a+16|0;b=g;e=c[b+4>>2]|0;f=g;c[f>>2]=c[b>>2]^255;c[f+4>>2]=e;IW(a,4);f=a;a=a+8|0;z=c[a+4>>2]^c[f+4>>2]^c[g+4>>2]^c[h+4>>2];return c[a>>2]^c[f>>2]^c[g>>2]^c[h>>2]|0}function IW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=a+8|0;f=a+24|0;g=a+16|0;d=0;while(1){if((d|0)>=(b|0))break;h=e;n=c[h>>2]|0;h=c[h+4>>2]|0;o=a;o=r3(c[o>>2]|0,c[o+4>>2]|0,n|0,h|0)|0;k=z;m=z3(n|0,h|0,13)|0;l=z;h=y3(n|0,h|0,51)|0;h=(m|h)^o;l=(l|z)^k;m=f;n=c[m>>2]|0;m=c[m+4>>2]|0;j=g;j=r3(c[j>>2]|0,c[j+4>>2]|0,n|0,m|0)|0;i=z;q=z3(n|0,m|0,16)|0;p=z;m=y3(n|0,m|0,48)|0;m=(q|m)^j;p=(p|z)^i;o=r3(k|0,o|0,m|0,p|0)|0;k=z;q=a;c[q>>2]=o;c[q+4>>2]=k;q=z3(m|0,p|0,21)|0;n=z;p=y3(m|0,p|0,43)|0;m=f;c[m>>2]=(q|p)^o;c[m+4>>2]=(n|z)^k;i=r3(j|0,i|0,h|0,l|0)|0;j=z;m=z3(h|0,l|0,17)|0;k=z;l=y3(h|0,l|0,47)|0;h=e;c[h>>2]=(m|l)^i;c[h+4>>2]=(k|z)^j;h=g;c[h>>2]=j;c[h+4>>2]=i;d=d+1|0}return}function JW(a){a=a|0;var b=0;while(1){b=c[a+472>>2]|0;if(!b)break;else a=b}return c[a+492>>2]|0}function KW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;L=l;l=l+16|0;I=L;J=L+4|0;K=c[b+352>>2]|0;o=d+16|0;p=d+40|0;q=b+144|0;r=b+284|0;s=e<<24>>24==0;t=h+12|0;v=h+16|0;w=h+8|0;x=d+44|0;y=d+64|0;z=b+436|0;A=b+452|0;B=b+448|0;C=(K+80|0)==(h|0);D=b+268|0;E=K+130|0;F=K+129|0;G=b+296|0;H=b+224|0;i=0;a:while(1){b:while(1){switch(ob[c[o>>2]&127](d,f,g,I)|0){case -4:{i=0;n=61;break a}case 0:{n=4;break a}case -1:{n=6;break a}case 6:{n=21;break b}case -3:{n=22;break b}case 7:case 39:{n=23;break b}case 10:{j=lb[c[p>>2]&127](d,f)|0;c:do if((j|0)<0)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;j=1;i=14}else{j=1;i=14}else{if(s&(j|0)==32){k=c[t>>2]|0;if((c[v>>2]|0)==(k|0)){j=4;break}if((a[k+-1>>0]|0)==32){j=4;break}}m=fX(j,J)|0;k=0;while(1){if((k|0)>=(m|0)){j=0;break c}j=c[t>>2]|0;if((j|0)==(c[w>>2]|0)){if(!((dW(h)|0)<<24>>24)){j=1;i=1;break c}j=c[t>>2]|0}M=a[J+k>>0]|0;c[t>>2]=j+1;a[j>>0]=M;k=k+1|0}}while(0);switch(j&7){case 4:case 0:break b;default:{}}break}case 9:{j=c[y>>2]|0;j=(nb[c[x>>2]&63](d,f+j|0,(c[I>>2]|0)+(0-j)|0)|0)&255;if(j<<24>>24){n=31;break b}j=c[y>>2]|0;j=VV(z,d,f+j|0,(c[I>>2]|0)+(0-j)|0)|0;if(!j){i=1;n=61;break a}m=XV(b,K,j,0)|0;c[B>>2]=c[A>>2];do if(C){if(!(c[D>>2]|0))if(!m)break b;else break;if(!(a[E>>0]|0)){j=(m|0)!=0;if(!(a[F>>0]|0)){n=45;break}else{u=j;n=47;break}}else{j=(m|0)!=0;if(!(c[G>>2]|0)){n=45;break}else{u=j;n=47;break}}}else if(!(a[F>>0]|0))if(!m){i=11;n=61;break a}else{n=46;break}else{j=(m|0)!=0;if(!(a[E>>0]|0)){u=j;n=47;break}else{n=45;break}}while(0);if((n|0)==45)if(j)n=46;else{i=11;n=61;break a}else if((n|0)==47?(n=0,!u):0)break b;if((n|0)==46?(n=0,(a[m+34>>0]|0)==0):0){i=24;n=61;break a}k=m+32|0;if(a[k>>0]|0){n=49;break a}if(c[m+28>>2]|0){n=52;break a}j=c[m+4>>2]|0;if(!j){n=55;break a}m=j+(c[m+8>>2]|0)|0;a[k>>0]=1;m=KW(b,c[H>>2]|0,e,j,m,h)|0;a[k>>0]=0;j=(m|0)==0;if(j)break b;else{j=(j^1)&1;i=m}break}default:{n=58;break a}}if(j)break a}if((n|0)==21){n=0;if(!(bW(h,d,f,c[I>>2]|0)|0)){i=1;n=61;break}}else if((n|0)==22){c[I>>2]=f+(c[y>>2]|0);n=23}else if((n|0)==31){n=0;f=c[t>>2]|0;if((f|0)==(c[w>>2]|0)){if(!((dW(h)|0)<<24>>24)){i=1;n=61;break}f=c[t>>2]|0}c[t>>2]=f+1;a[f>>0]=j}do if((n|0)==23){n=0;f=c[t>>2]|0;if(s){if((c[v>>2]|0)==(f|0))break;if((a[f+-1>>0]|0)==32)break}if((f|0)==(c[w>>2]|0)){if(!((dW(h)|0)<<24>>24)){i=1;n=61;break a}f=c[t>>2]|0}c[t>>2]=f+1;a[f>>0]=32}while(0);f=c[I>>2]|0}if((n|0)==4)if((c[q>>2]|0)==(d|0)){c[r>>2]=c[I>>2];i=4;n=61}else{i=4;n=61}else if((n|0)==6)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=4;n=61}else{i=4;n=61}else if((n|0)==49)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=12;n=61}else{i=12;n=61}else if((n|0)==52)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=15;n=61}else{i=15;n=61}else if((n|0)==55)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=16;n=61}else{i=16;n=61}else if((n|0)==58)if((c[q>>2]|0)==(d|0)){c[r>>2]=f;i=23;n=61}else{i=23;n=61}l=L;return i|0}function LW(a){a=a|0;var b=0;b=a+8|0;return ((a|0)<1?0:(b|0)>0?b:0)|0}function MW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=l;l=l+80|0;d=c+16|0;e=c;DW(a,e);EW(d,e);FW(d,b,GW(b)|0);b=HW(d)|0;l=c;return b|0}function NW(b,c){b=b|0;c=c|0;var d=0;while(1){d=a[b>>0]|0;if(d<<24>>24!=(a[c>>0]|0)){c=0;break}if(!(d<<24>>24)){c=1;break}c=c+1|0;b=b+1|0}return c|0}function OW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+1040|0;i=k;f=c[b+124>>2]|0;a:do if(!f)e=18;else{e=0;while(1){if((e|0)==256)break;c[i+(e<<2)>>2]=-1;e=e+1|0}g=i+1028|0;c[g>>2]=0;j=i+1024|0;c[j>>2]=0;h=i+1032|0;c[h>>2]=0;do if(nb[f&63](c[b+244>>2]|0,d,i)|0){f=c[b+12>>2]|0;e=gX()|0;e=kb[f&63](e)|0;c[b+236>>2]=e;if(!e){e=c[h>>2]|0;if(!e)e=1;else{tb[e&127](c[j>>2]|0);e=1}}else{e=ob[(a[b+232>>0]<<24>>24?65:64)&127](e,i,c[g>>2]|0,c[j>>2]|0)|0;if(!e)break;c[b+240>>2]=c[j>>2];c[b+248>>2]=c[h>>2];c[b+144>>2]=e;e=0}break a}while(0);e=c[h>>2]|0;if(e|0)tb[e&127](c[j>>2]|0);e=18}while(0);l=k;return e|0}function PW(b,d){b=b|0;d=d|0;a[b+4>>0]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b>>2]=0;c[b+16>>2]=d;return}function QW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=c[b+352>>2]|0;m=b+424|0;n=b+420|0;o=b+412|0;p=b+428|0;q=l+152|0;r=b+368|0;j=l+60|0;k=l+80|0;a:while(1){h=d;b:while(1){if(!(a[d>>0]|0)){d=1;break a}f=a[h>>0]|0;switch(f<<24>>24){case 0:case 12:{s=5;break b}case 61:break b;default:{}}e=c[m>>2]|0;if((e|0)==(c[n>>2]|0)){if(!((dW(o)|0)<<24>>24)){d=0;break a}e=c[m>>2]|0;f=a[h>>0]|0}c[m>>2]=e+1;a[e>>0]=f;h=h+1|0}if((s|0)==5){s=0;d=c[m>>2]|0;if((d|0)==(c[n>>2]|0)){if(!((dW(o)|0)<<24>>24)){d=0;break}d=c[m>>2]|0}c[m>>2]=d+1;a[d>>0]=0;d=XV(b,l,c[p>>2]|0,0)|0;if(d|0)a[d+32>>0]=1;d=(a[h>>0]|0)==0?h:h+1|0;c[m>>2]=c[p>>2];continue}d=c[m>>2]|0;if((c[p>>2]|0)==(d|0))f=q;else{if((d|0)==(c[n>>2]|0)){if(!((dW(o)|0)<<24>>24)){d=0;break}d=c[m>>2]|0}c[m>>2]=d+1;a[d>>0]=0;f=XV(b,j,c[p>>2]|0,8)|0;if(!f){d=0;break}e=c[f>>2]|0;i=c[p>>2]|0;d=i;if((e|0)==(i|0)){i=AW(k,e)|0;c[f>>2]=i;if(!i){d=0;break}d=c[p>>2]|0}c[m>>2]=d}c:while(1){i=h+1|0;e=a[i>>0]|0;g=(d|0)==(c[n>>2]|0);switch(e<<24>>24){case 0:case 12:break c;default:{}}if(g){if(!((dW(o)|0)<<24>>24)){d=0;break a}d=c[m>>2]|0;e=a[i>>0]|0}c[m>>2]=d+1;a[d>>0]=e;h=i;d=c[m>>2]|0}if(g){if(!((dW(o)|0)<<24>>24)){d=0;break}d=c[m>>2]|0}c[m>>2]=d+1;a[d>>0]=0;if(CW(b,f,0,c[p>>2]|0,r)|0){d=0;break}c[m>>2]=c[p>>2];d=(a[i>>0]|0)==0?i:h+2|0}return d|0}function RW(a,b){a=a|0;b=b|0;var d=0,e=0;if(a|0?(d=a+4|0,e=(c[d>>2]|0)==(c[a>>2]|0),c[a>>2]=b,e):0)c[d>>2]=b;return}function SW(a,b,d){a=a|0;b=b|0;d=d|0;if(a|0){c[a+52>>2]=b;c[a+56>>2]=d}return}function TW(a,b){a=a|0;b=b|0;if(a|0)c[a+60>>2]=b;return}function UW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=(b|0)==0;a:do if(!(g|(e|0)<0)?!((d|0)==0&(e|0)!=0):0){h=b+476|0;switch(c[h>>2]|0){case 3:{c[b+280>>2]=33;g=0;break a}case 2:{c[b+280>>2]=36;g=0;break a}case 0:{if((c[b+472>>2]|0)==0?(VW(b)|0)<<24>>24==0:0){c[b+280>>2]=1;g=0;break a}break}default:{}}c[h>>2]=1;if(e|0){g=XW(b,e)|0;if(!g){g=0;break}E3(g|0,d|0,e|0)|0;g=YW(b,e,f)|0;break}a[b+480>>0]=f;if(!f)g=1;else{g=b+24|0;j=c[g>>2]|0;d=b+292|0;c[d>>2]=j;f=c[b+28>>2]|0;c[b+40>>2]=f;e=b+276|0;f=ob[c[e>>2]&127](b,j,f,g)|0;c[b+280>>2]=f;if(f|0){c[b+288>>2]=c[b+284>>2];c[e>>2]=66;g=0;break}switch(c[h>>2]|0){case 3:{j=c[b+144>>2]|0;xb[c[j+48>>2]&31](j,c[d>>2]|0,c[g>>2]|0,b+404|0);c[d>>2]=c[g>>2];g=2;break a}case 1:case 0:{c[h>>2]=2;g=1;break a}default:{g=1;break a}}}}else i=3;while(0);if((i|0)==3)if(g)g=0;else{c[b+280>>2]=41;g=0}return g|0}function VW(b){b=b|0;var d=0;d=b+492|0;if(!(c[d>>2]|0))c[d>>2]=ZW()|0;if(!(a[b+232>>0]|0))b=1;else b=QW(b,139242)|0;return b|0}function WW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return c[a+280>>2]|0}function XW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a:do if(!a)d=0;else{if((b|0)<0){c[a+280>>2]=1;d=0;break}switch(c[a+476>>2]|0){case 3:{c[a+280>>2]=33;d=0;break a}case 2:{c[a+280>>2]=36;d=0;break a}default:{m=a+32|0;j=c[m>>2]|0;n=a+28|0;e=c[n>>2]|0;d=e;if((j-e|0)>=(b|0))break a;p=a+24|0;k=c[p>>2]|0;i=e-k|0;e=i+b|0;if((e|0)<0){c[a+280>>2]=1;d=0;break a}l=a+8|0;f=c[l>>2]|0;q=f;g=k-q|0;h=(g|0)>1024;b=h?1024:g;e=b+e|0;do if((e|0)>(j-q|0)){d=j-k|0;d=(d|0)==0?1024:d;do d=d<<1;while((d|0)<(e|0)&(d|0)>0);if((d|0)<1){c[a+280>>2]=1;d=0;break a}e=kb[c[a+12>>2]&63](d)|0;if(!e){c[a+280>>2]=1;d=0;break a}c[m>>2]=e+d;d=c[p>>2]|0;if(!d){d=e+(c[n>>2]|0)|0;c[n>>2]=d;c[l>>2]=e;o=22;break}else{q=d;o=q-(c[l>>2]|0)|0;o=(o|0)<1024?o:1024;E3(e|0,d+(0-o)|0,(c[n>>2]|0)-q+o|0)|0;tb[c[a+20>>2]&127](c[l>>2]|0);c[l>>2]=e;d=e+((c[n>>2]|0)-(c[p>>2]|0))+o|0;c[n>>2]=d;e=e+o|0;o=22;break}}else if(h){e=g-b|0;F3(f|0,f+e|0,b+i|0)|0;e=0-e|0;d=(c[n>>2]|0)+e|0;c[n>>2]=d;e=(c[p>>2]|0)+e|0;o=22}while(0);if((o|0)==22)c[p>>2]=e;c[a+288>>2]=0;c[a+284>>2]=0;c[a+292>>2]=0;break a}}}while(0);return d|0}function YW(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;a:do if(!b)d=0;else{f=b+476|0;switch(c[f>>2]|0){case 3:{c[b+280>>2]=33;d=0;break a}case 2:{c[b+280>>2]=36;d=0;break a}case 0:{if((c[b+472>>2]|0)==0?(VW(b)|0)<<24>>24==0:0){c[b+280>>2]=1;d=0;break a}break}default:{}}c[f>>2]=1;g=b+24|0;j=c[g>>2]|0;h=b+292|0;c[h>>2]=j;k=b+28|0;i=(c[k>>2]|0)+d|0;c[k>>2]=i;c[b+40>>2]=i;k=b+36|0;c[k>>2]=(c[k>>2]|0)+d;a[b+480>>0]=e;d=b+276|0;i=ob[c[d>>2]&127](b,j,i,g)|0;c[b+280>>2]=i;if(i|0){c[b+288>>2]=c[b+284>>2];c[d>>2]=66;d=0;break}switch(c[f>>2]|0){case 3:{d=2;break}case 1:case 0:{if(!e)d=1;else{c[f>>2]=2;d=1;break a}break}default:d=1}k=c[b+144>>2]|0;xb[c[k+48>>2]&31](k,c[h>>2]|0,c[g>>2]|0,b+404|0);c[h>>2]=c[g>>2]}while(0);return d|0}function ZW(){var a=0,b=0,d=0;b=l;l=l+16|0;a=b;if(!(_W(a)|0)){d=aX()|0;d=(G1()|0)^d;c[a>>2]=d;a=$W(139296,O(d,2147483647)|0)|0}else a=$W(139283,c[a>>2]|0)|0;l=b;return a|0}function _W(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=W_(139283,0,f)|0;if((e|0)<0)b=0;else{b=0;while(1){g=F1(e,a+b|0,4-b|0)|0;d=g+b|0;if((g|0)>0)if(d>>>0<4)b=d;else{b=1;break}if((c[(N_()|0)>>2]|0)!=4){b=0;break}}W0(e)|0}l=f;return b|0}function $W(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=Ta(139361)|0;if(d|0?(a$(d,139381)|0)==0:0){d=c[15686]|0;c[e>>2]=a;c[e+4>>2]=8;c[e+8>>2]=b;c[e+12>>2]=4;f1(d,139383,e)|0}l=f;return b|0}function aX(){var a=0,b=0;b=l;l=l+16|0;a=b;if(!(Ua(a|0,0)|0)){l=b;return c[a+4>>2]|0}else qa(139308,139330,819,139341);return 0}function bX(a){a=a|0;if(!a)a=41;else a=c[a+280>>2]|0;return a|0}function cX(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(!a)a=0;else{b=a+284|0;d=c[b>>2]|0;if(d|0?(e=a+292|0,f=c[e>>2]|0,d>>>0>=f>>>0):0){g=c[a+144>>2]|0;xb[c[g+48>>2]&31](g,f,d,a+404|0);c[e>>2]=c[b>>2]}a=(c[a+404>>2]|0)+1|0}return a|0}function dX(a){a=a|0;do switch(a|0){case 41:{a=139420;break}case 1:{a=140692;break}case 2:{a=140679;break}case 3:{a=140662;break}case 4:{a=140630;break}case 5:{a=140615;break}case 6:{a=140597;break}case 7:{a=140582;break}case 8:{a=140562;break}case 9:{a=140534;break}case 10:{a=140499;break}case 11:{a=140482;break}case 12:{a=140455;break}case 13:{a=140435;break}case 14:{a=140397;break}case 15:{a=140370;break}case 16:{a=140328;break}case 17:{a=140281;break}case 18:{a=140264;break}case 19:{a=140213;break}case 20:{a=140190;break}case 21:{a=140144;break}case 22:{a=140117;break}case 23:{a=140066;break}case 24:{a=140030;break}case 25:{a=139978;break}case 26:{a=139933;break}case 27:{a=139918;break}case 28:{a=139892;break}case 29:{a=139854;break}case 30:{a=139822;break}case 31:{a=139789;break}case 32:{a=139755;break}case 33:{a=139738;break}case 34:{a=139717;break}case 35:{a=139701;break}case 36:{a=139684;break}case 37:{a=139640;break}case 38:{a=139560;break}case 39:{a=139501;break}case 40:{a=139437;break}default:a=0}while(0);return a|0}function eX(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0;e=c[b>>2]|0;f=0;a:while(1){if(e>>>0<=a>>>0)break;h=e+-1|0;g=d[h>>0]|0;do if((g&248|0)==240)if((f+1|0)>>>0>3){i=5;break a}else f=0;else{if((g&240|0)==224)if((f+1|0)>>>0>2){i=8;break a}else{f=0;break}if((g&224|0)==192)if((f+1|0)>>>0>1){i=11;break a}else{f=0;break}else if(!(g&128))break a;else break}while(0);e=h;f=f+1|0}if((i|0)==5)e=e+3|0;else if((i|0)==8)e=e+2|0;else if((i|0)==11)e=e+1|0;c[b>>2]=e;return}function fX(b,c){b=b|0;c=c|0;do if((b|0)>=0){if((b|0)<128){a[c>>0]=b;b=1;break}if((b|0)<2048){a[c>>0]=b>>>6|192;a[c+1>>0]=b&63|128;b=2;break}if((b|0)<65536){a[c>>0]=b>>>12|224;a[c+1>>0]=b>>>6&63|128;a[c+2>>0]=b&63|128;b=3;break}if((b|0)<1114112){a[c>>0]=b>>>18|240;a[c+1>>0]=b>>>12&63|128;a[c+2>>0]=b>>>6&63|128;a[c+3>>0]=b&63|128;b=4}else b=0}else b=0;while(0);return b|0}function gX(){return 1908}function hX(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=0;while(1){if((i|0)==364){i=0;break}a[e+i>>0]=a[56472+i>>0]|0;i=i+1|0}a:while(1){if((i|0)>=128){j=5;break}switch(a[56544+i>>0]|0){case 0:case 28:break;default:if((c[f+(i<<2)>>2]|0)!=(i|0)){e=0;break a}}i=i+1|0}b:do if((j|0)==5){q=e+72|0;m=e+372|0;n=e+884|0;o=(g|0)==0;l=0;while(1){if((l|0)>=256)break;p=c[f+(l<<2)>>2]|0;do if((p|0)==-1){a[q+l>>0]=1;b[m+(l<<1)>>1]=-1;a[n+(l<<2)>>0]=1;a[n+(l<<2)+1>>0]=0}else{if((p|0)<0){if(o|(p|0)<-4){e=0;break b}a[q+l>>0]=3-p;a[n+(l<<2)>>0]=0;b[m+(l<<1)>>1]=0;break}if((p|0)<128){i=a[56544+p>>0]|0;switch(i<<24>>24){case 0:case 28:break;default:if((p|0)!=(l|0)){e=0;break b}}a[q+l>>0]=i;a[n+(l<<2)>>0]=1;a[n+(l<<2)+1>>0]=p;b[m+(l<<1)>>1]=(p|0)==0?-1:p&65535;break}if((iX(p)|0)<0){a[q+l>>0]=0;b[m+(l<<1)>>1]=-1;a[n+(l<<2)>>0]=1;a[n+(l<<2)+1>>0]=0;break}if((p|0)>65535){e=0;break b}i=p>>>8;j=p>>>5&7;k=1<<(p&31);if(!(c[56836+((d[140706+i>>0]<<3|j)<<2)>>2]&k))a[q+l>>0]=c[56836+((d[140962+i>>0]<<3|j)<<2)>>2]&k|0?26:28;else a[q+l>>0]=22;a[n+(l<<2)>>0]=fX(p,n+(l<<2)+1|0)|0;b[m+(l<<1)>>1]=p}while(0);l=l+1|0}c[e+368>>2]=h;c[e+364>>2]=g;if(!o){c[e+328>>2]=106;c[e+332>>2]=106;c[e+336>>2]=106;c[e+340>>2]=107;c[e+344>>2]=107;c[e+348>>2]=107;c[e+352>>2]=108;c[e+356>>2]=108;c[e+360>>2]=108}c[e+56>>2]=13;c[e+60>>2]=14}while(0);return e|0}function iX(b){b=b|0;var c=0;switch(b>>8|0){case 223:case 222:case 221:case 220:case 219:case 218:case 217:case 216:{b=-1;break}case 0:{if(!(a[56544+b>>0]|0))b=-1;else c=4;break}case 255:{if((b|1|0)==65535)b=-1;else c=4;break}default:c=4}return b|0}function jX(a,b){a=a|0;b=b|0;a=lb[c[a+364>>2]&127](c[a+368>>2]|0,b)|0;if(a>>>0>65535)a=0;else a=c[56836+(((d[140962+(a>>>8)>>0]|0)<<3|a>>>5&7)<<2)>>2]&1<<(a&31);return a|0}function kX(a,b){a=a|0;b=b|0;a=lb[c[a+364>>2]&127](c[a+368>>2]|0,b)|0;if(a>>>0>65535)a=0;else a=c[56836+(((d[140706+(a>>>8)>>0]|0)<<3|a>>>5&7)<<2)>>2]&1<<(a&31);return a|0}function lX(a,b){a=a|0;b=b|0;a=lb[c[a+364>>2]&127](c[a+368>>2]|0,b)|0;if(a>>>0>65535)a=1;else a=(iX(a)|0)>>>31;return a|0}function mX(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;q=l;l=l+16|0;m=q;n=b+364|0;o=b+884|0;p=b+368|0;k=b+72|0;while(1){i=c[e>>2]|0;if((i|0)==(f|0)){h=0;break}r=d[i>>0]|0;j=o+(r<<2)+1|0;r=a[o+(r<<2)>>0]|0;b=r<<24>>24;if(!(r<<24>>24)){b=fX(lb[c[n>>2]&127](c[p>>2]|0,i)|0,m)|0;if((b|0)>(h-(c[g>>2]|0)|0)){h=2;break}i=c[e>>2]|0;j=m;i=i+((d[k+(d[i>>0]|0)>>0]|0)+-3)|0}else{if((h-(c[g>>2]|0)|0)<(b|0)){h=2;break}i=i+1|0}c[e>>2]=i;E3(c[g>>2]|0,j|0,b|0)|0;c[g>>2]=(c[g>>2]|0)+b}l=q;return h|0}function nX(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=a+372|0;n=a+364|0;o=a+368|0;l=a+72|0;while(1){k=c[e>>2]|0;a=k>>>0>>0;i=c[g>>2]|0;if(!(a&i>>>0>>0))break;a=b[m+((d[k>>0]|0)<<1)>>1]|0;if(!(a<<16>>16)){a=(lb[c[n>>2]&127](c[o>>2]|0,k)|0)&65535;i=c[e>>2]|0;j=(d[l+(d[i>>0]|0)>>0]|0)+-3|0}else{j=1;i=k}c[e>>2]=i+j;k=c[g>>2]|0;c[g>>2]=k+2;b[k>>1]=a}return ((i|0)!=(h|0)|a^1?0:2)|0}function oX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;a:do if(e>>>0>>0){n=b+72|0;do switch(a[n+(d[e>>0]|0)>>0]|0){case 12:{h=PX(12,b,e+1|0,f,g)|0;break a}case 13:{h=PX(13,b,e+1|0,f,g)|0;break a}case 2:{h=e+1|0;if((f-h|0)<=0){h=-1;break a}switch(a[n+(d[h>>0]|0)>>0]|0){case 16:{h=QX(b,e+2|0,f,g)|0;break a}case 15:{h=LX(b,e+2|0,f,g)|0;break a}case 7:case 6:case 5:case 29:case 24:case 22:{c[g>>2]=e;h=29;break a}default:{c[g>>2]=h;h=0;break a}}}case 9:{if((e+1|0)==(f|0)){c[g>>2]=f;h=-15;break a}else k=3;break}case 10:case 21:{k=3;break}case 30:{h=FX(b,e+1|0,f,g)|0;break a}case 35:{c[g>>2]=e+1;h=38;break a}case 20:{c[g>>2]=e+1;h=25;break a}case 4:{i=e+1|0;h=f-i|0;if((h|0)<=0){h=-26;break a}if((a[i>>0]|0)==93){if((h|0)<=1){h=-1;break a}if((a[e+2>>0]|0)==62){c[g>>2]=e+3;h=34;break a}}c[g>>2]=i;h=26;break a}case 31:{c[g>>2]=e+1;h=23;break a}case 32:{h=e+1|0;if((f-h|0)<=0){h=-24;break a}switch(a[n+(d[h>>0]|0)>>0]|0){case 33:{c[g>>2]=e+2;h=36;break a}case 15:{c[g>>2]=e+2;h=35;break a}case 34:{c[g>>2]=e+2;h=37;break a}case 32:case 36:case 35:case 11:case 21:case 10:case 9:{c[g>>2]=h;h=24;break a}default:{c[g>>2]=h;h=0;break a}}}case 36:{c[g>>2]=e+1;h=21;break a}case 11:{c[g>>2]=e+1;h=17;break a}case 19:{h=RX(b,e+1|0,f,g)|0;break a}case 5:{if((f-e|0)<2){h=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0))if(!(lb[c[b+328>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else{h=19;i=2}else{h=18;i=2}break}case 6:{if((f-e|0)<3){h=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0))if(!(lb[c[b+332>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else{h=19;i=3}else{h=18;i=3}break}case 7:{if((f-e|0)<4){h=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0))if(!(lb[c[b+336>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else{h=19;i=4}else{h=18;i=4}break}case 24:case 22:{h=18;i=1;break}case 23:case 27:case 26:case 25:{h=19;i=1;break}default:{c[g>>2]=e;h=0;break a}}while(0);if((k|0)==3){j=f;i=e;b:while(1){h=i;i=i+1|0;if((j-i|0)<=0){k=18;break}switch(a[n+(d[i>>0]|0)>>0]|0){case 10:case 21:continue b;case 9:break;default:{k=17;break b}}if((h+2|0)==(f|0)){k=17;break}}if((k|0)==17){c[g>>2]=i;h=15;break}else if((k|0)==18){c[g>>2]=i;h=15;break}}k=b+328|0;l=b+332|0;m=b+336|0;j=e+i|0;c:while(1){i=f-j|0;if((i|0)<=0){k=99;break}switch(a[n+(d[j>>0]|0)>>0]|0){case 29:{k=56;break c}case 10:case 9:case 21:case 30:case 20:case 36:case 35:case 32:case 11:{k=70;break c}case 34:{k=89;break c}case 33:{k=92;break c}case 15:{k=95;break c}case 27:case 26:case 25:case 24:case 22:{e=h;j=j+1|0;h=e;continue c}case 5:{if((i|0)<2){h=-2;break a}if(!(lb[c[k>>2]&127](b,j)|0)){k=60;break c}e=h;j=j+2|0;h=e;continue c}case 6:{if((i|0)<3){h=-2;break a}if(!(lb[c[l>>2]&127](b,j)|0)){k=64;break c}e=h;j=j+3|0;h=e;continue c}case 7:{if((i|0)<4){h=-2;break a}if(!(lb[c[m>>2]&127](b,j)|0)){k=68;break c}e=h;j=j+4|0;h=e;continue c}case 23:{i=j+1|0;switch(h&63){case 18:break;case 41:{h=19;j=i;continue c}default:{e=h;j=i;h=e;continue c}}h=f-i|0;if((h|0)<=0){h=-1;break a}switch(a[n+(d[i>>0]|0)>>0]|0){case 29:{k=74;break c}case 27:case 26:case 25:case 24:case 22:{h=41;j=j+2|0;continue c}case 5:{if((h|0)<2){h=-2;break a}if(!(lb[c[k>>2]&127](b,i)|0)){k=78;break c}h=41;j=j+3|0;continue c}case 6:{if((h|0)<3){h=-2;break a}if(!(lb[c[l>>2]&127](b,i)|0)){k=82;break c}h=41;j=j+4|0;continue c}case 7:{if((h|0)<4){h=-2;break a}if(!(lb[c[m>>2]&127](b,i)|0)){k=86;break c}h=41;j=j+5|0;continue c}default:{h=19;j=i;continue c}}}default:{k=98;break c}}}switch(k|0){case 56:{c[g>>2]=j;h=0;break a}case 60:{c[g>>2]=j;h=0;break a}case 64:{c[g>>2]=j;h=0;break a}case 68:{c[g>>2]=j;h=0;break a}case 70:{c[g>>2]=j;break a}case 74:{c[g>>2]=i;h=0;break a}case 78:{c[g>>2]=i;h=0;break a}case 82:{c[g>>2]=i;h=0;break a}case 86:{c[g>>2]=i;h=0;break a}case 89:if((h|0)==19){c[g>>2]=j;h=0;break a}else{c[g>>2]=j+1;h=32;break a}case 92:if((h|0)==19){c[g>>2]=j;h=0;break a}else{c[g>>2]=j+1;h=31;break a}case 95:if((h|0)==19){c[g>>2]=j;h=0;break a}else{c[g>>2]=j+1;h=30;break a}case 98:{c[g>>2]=j;h=0;break a}case 99:{h=0-h|0;break a}}}else h=-4;while(0);return h|0}function pX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;a:do if(e>>>0>>0){m=b+72|0;b:do switch(a[m+(d[e>>0]|0)>>0]|0){case 2:{h=IX(b,e+1|0,f,g)|0;break a}case 3:{h=EX(b,e+1|0,f,g)|0;break a}case 9:{h=e+1|0;if((f-h|0)<=0){h=-3;break a}c[g>>2]=(a[m+(d[h>>0]|0)>>0]|0)==10?e+2|0:h;h=7;break a}case 10:{c[g>>2]=e+1;h=7;break a}case 4:{i=e+1|0;if((f-i|0)<=0){h=-5;break a}if((a[i>>0]|0)==93){h=e+2|0;if((f-h|0)<=0){h=-5;break a}if((a[h>>0]|0)==62){c[g>>2]=h;h=0;break a}else h=f}else h=f;break}case 5:{h=f;if((h-e|0)<2){h=-2;break a}if(!(lb[c[b+352>>2]&127](b,e)|0)){i=e+2|0;break b}else{c[g>>2]=e;h=0;break a}}case 6:{h=f;if((h-e|0)<3){h=-2;break a}if(!(lb[c[b+356>>2]&127](b,e)|0)){i=e+3|0;break b}else{c[g>>2]=e;h=0;break a}}case 7:{h=f;if((h-e|0)<4){h=-2;break a}if(!(lb[c[b+360>>2]&127](b,e)|0)){i=e+4|0;break b}else{c[g>>2]=e;h=0;break a}}case 8:case 1:case 0:{c[g>>2]=e;h=0;break a}default:{i=e+1|0;h=f}}while(0);j=b+352|0;k=b+356|0;l=b+360|0;c:while(1){f=h-i|0;if((f|0)<=0){f=49;break}switch(a[m+(d[i>>0]|0)>>0]|0){case 10:case 9:case 8:case 1:case 0:case 2:case 3:{f=47;break c}case 5:{if((f|0)<2){f=32;break c}if(lb[c[j>>2]&127](b,i)|0){f=32;break c}i=i+2|0;continue c}case 6:{if((f|0)<3){f=36;break c}if(lb[c[k>>2]&127](b,i)|0){f=36;break c}i=i+3|0;continue c}case 7:{if((f|0)<4){f=40;break c}if(lb[c[l>>2]&127](b,i)|0){f=40;break c}i=i+4|0;continue c}case 4:{if((f|0)<=1){f=47;break c}e=i+1|0;if((a[e>>0]|0)!=93){i=e;continue c}if((f|0)<=2){f=47;break c}i=i+2|0;if((a[i>>0]|0)==62){f=46;break c}else{i=e;continue c}}default:{i=i+1|0;continue c}}}if((f|0)==32){c[g>>2]=i;h=6;break}else if((f|0)==36){c[g>>2]=i;h=6;break}else if((f|0)==40){c[g>>2]=i;h=6;break}else if((f|0)==46){c[g>>2]=i;h=0;break}else if((f|0)==47){c[g>>2]=i;h=6;break}else if((f|0)==49){c[g>>2]=i;h=6;break}}else h=-4;while(0);return h|0}function qX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;a:do if(e>>>0>>0){l=b+72|0;b:do switch(a[l+(d[e>>0]|0)>>0]|0){case 4:{i=e+1|0;h=f;if((h-i|0)<=0){h=-1;break a}if((a[i>>0]|0)==93){f=e+2|0;if((h-f|0)<=0){h=-1;break a}if((a[f>>0]|0)==62){c[g>>2]=e+3;h=40;break a}}break}case 9:{h=e+1|0;if((f-h|0)<=0){h=-1;break a}c[g>>2]=(a[l+(d[h>>0]|0)>>0]|0)==10?e+2|0:h;h=7;break a}case 10:{c[g>>2]=e+1;h=7;break a}case 5:{h=f;if((h-e|0)<2){h=-2;break a}if(!(lb[c[b+352>>2]&127](b,e)|0)){i=e+2|0;break b}else{c[g>>2]=e;h=0;break a}}case 6:{h=f;if((h-e|0)<3){h=-2;break a}if(!(lb[c[b+356>>2]&127](b,e)|0)){i=e+3|0;break b}else{c[g>>2]=e;h=0;break a}}case 7:{h=f;if((h-e|0)<4){h=-2;break a}if(!(lb[c[b+360>>2]&127](b,e)|0)){i=e+4|0;break b}else{c[g>>2]=e;h=0;break a}}case 8:case 1:case 0:{c[g>>2]=e;h=0;break a}default:{i=e+1|0;h=f}}while(0);e=b+352|0;j=b+356|0;k=b+360|0;c:while(1){f=h-i|0;if((f|0)<=0){f=39;break}switch(a[l+(d[i>>0]|0)>>0]|0){case 4:case 10:case 9:case 8:case 1:case 0:{f=37;break c}case 5:{if((f|0)<2){f=30;break c}if(!(lb[c[e>>2]&127](b,i)|0))f=2;else{f=30;break c}break}case 6:{if((f|0)<3){f=33;break c}if(!(lb[c[j>>2]&127](b,i)|0))f=3;else{f=33;break c}break}case 7:{if((f|0)<4){f=36;break c}if(!(lb[c[k>>2]&127](b,i)|0))f=4;else{f=36;break c}break}default:f=1}i=i+f|0}if((f|0)==30){c[g>>2]=i;h=6;break}else if((f|0)==33){c[g>>2]=i;h=6;break}else if((f|0)==36){c[g>>2]=i;h=6;break}else if((f|0)==37){c[g>>2]=i;h=6;break}else if((f|0)==39){c[g>>2]=i;h=6;break}}else h=-4;while(0);return h|0}function rX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=b+72|0;k=b+352|0;l=b+356|0;m=b+360|0;i=0;a:while(1){h=f-e|0;if((h|0)<=0){f=-1;break}switch(a[j+(d[e>>0]|0)>>0]|0){case 8:case 1:case 0:{n=16;break a}case 5:{if((h|0)<2){f=-2;break a}if(lb[c[k>>2]&127](b,e)|0){n=6;break a}h=i;e=e+2|0;i=h;continue a}case 6:{if((h|0)<3){f=-2;break a}if(lb[c[l>>2]&127](b,e)|0){n=10;break a}h=i;e=e+3|0;i=h;continue a}case 7:{if((h|0)<4){f=-2;break a}if(lb[c[m>>2]&127](b,e)|0){n=14;break a}h=i;e=e+4|0;i=h;continue a}case 2:{h=e+1|0;if((f-h|0)<=0){f=-1;break a}if((a[h>>0]|0)!=33){o=i;e=h;i=o;continue a}h=e+2|0;if((f-h|0)<=0){f=-1;break a}o=(a[h>>0]|0)==91;i=i+(o&1)|0;e=o?e+3|0:h;continue a}case 4:{h=e+1|0;if((f-h|0)<=0){f=-1;break a}if((a[h>>0]|0)!=93){o=i;e=h;i=o;continue a}h=e+2|0;if((f-h|0)<=0){f=-1;break a}if((a[h>>0]|0)!=62){o=i;e=h;i=o;continue a}e=e+3|0;if(!i){n=26;break a}i=i+-1|0;continue a}default:{o=i;e=e+1|0;i=o;continue a}}}if((n|0)==6){c[g>>2]=e;f=0}else if((n|0)==10){c[g>>2]=e;f=0}else if((n|0)==14){c[g>>2]=e;f=0}else if((n|0)==16){c[g>>2]=e;f=0}else if((n|0)==26){c[g>>2]=e;f=42}return f|0}function sX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0>>0){k=f;if((k-e|0)>0){l=b+72|0;i=e;a:while(1){if((k-i|0)<=0){j=24;break}switch(a[l+(d[i>>0]|0)>>0]|0){case 3:{j=8;break a}case 2:{j=11;break a}case 10:{j=12;break a}case 9:{j=15;break a}case 21:{j=19;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=1}i=i+h|0}if((j|0)==8)if((i|0)==(e|0)){h=EX(b,e+1|0,f,g)|0;break}else{c[g>>2]=i;h=6;break}else if((j|0)==11){c[g>>2]=i;h=0;break}else if((j|0)==12)if((i|0)==(e|0)){c[g>>2]=e+1;h=7;break}else{c[g>>2]=i;h=6;break}else if((j|0)==15){if((i|0)!=(e|0)){c[g>>2]=i;h=6;break}h=e+1|0;if((k-h|0)<=0){h=-3;break}c[g>>2]=(a[l+(d[h>>0]|0)>>0]|0)==10?e+2|0:h;h=7;break}else if((j|0)==19)if((i|0)==(e|0)){c[g>>2]=e+1;h=39;break}else{c[g>>2]=i;h=6;break}else if((j|0)==24){c[g>>2]=i;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function tX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0>>0){k=f;if((k-e|0)>0){l=b+72|0;i=e;a:while(1){if((k-i|0)<=0){j=23;break}switch(a[l+(d[i>>0]|0)>>0]|0){case 3:{j=8;break a}case 30:{j=11;break a}case 10:{j=14;break a}case 9:{j=17;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=1}i=i+h|0}if((j|0)==8)if((i|0)==(e|0)){h=EX(b,e+1|0,f,g)|0;break}else{c[g>>2]=i;h=6;break}else if((j|0)==11)if((i|0)==(e|0)){h=FX(b,e+1|0,f,g)|0;h=(h|0)==22?0:h;break}else{c[g>>2]=i;h=6;break}else if((j|0)==14)if((i|0)==(e|0)){c[g>>2]=e+1;h=7;break}else{c[g>>2]=i;h=6;break}else if((j|0)==17){if((i|0)!=(e|0)){c[g>>2]=i;h=6;break}h=e+1|0;if((k-h|0)<=0){h=-3;break}c[g>>2]=(a[l+(d[h>>0]|0)>>0]|0)==10?e+2|0:h;h=7;break}else if((j|0)==23){c[g>>2]=i;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function uX(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=d;b=c;while(1){c=a[e>>0]|0;if(!(c<<24>>24)){g=6;break}if((f-b|0)<1){b=0;break}if((a[b>>0]|0)!=c<<24>>24){b=0;break}e=e+1|0;b=b+1|0}if((g|0)==6)b=(b|0)==(d|0)&1;return b|0}function vX(b,c){b=b|0;c=c|0;var e=0,f=0;f=b+72|0;b=c;a:while(1){switch(a[f+(d[b>>0]|0)>>0]|0){case 5:{e=2;break}case 6:{e=3;break}case 7:{e=4;break}case 27:case 26:case 25:case 24:case 23:case 22:case 29:{e=1;break}default:break a}b=b+e|0}return b-c|0}function wX(b,c){b=b|0;c=c|0;b=b+72|0;a:while(1){switch(a[b+(d[c>>0]|0)>>0]|0){case 21:case 9:case 10:break;default:break a}c=c+1|0}return c|0}function xX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=b+72|0;j=0;k=0;b=1;a:while(1){h=e+1|0;i=a[h>>0]|0;do switch(a[l+(i&255)>>0]|0){case 5:{if(!b)if((k|0)<(f|0)){c[g+(k<<4)>>2]=h;a[g+(k<<4)+12>>0]=1;b=1}else b=1;h=k;i=j;e=e+2|0;k=h;j=i;continue a}case 6:{if(!b)if((k|0)<(f|0)){c[g+(k<<4)>>2]=h;a[g+(k<<4)+12>>0]=1;b=1}else b=1;h=k;i=j;e=e+3|0;k=h;j=i;continue a}case 7:{if(!b)if((k|0)<(f|0)){c[g+(k<<4)>>2]=h;a[g+(k<<4)+12>>0]=1;b=1}else b=1;h=k;i=j;e=e+4|0;k=h;j=i;continue a}case 24:case 22:case 29:{if(b|0){o=b;n=k;i=j;e=h;b=o;k=n;j=i;continue a}if((k|0)>=(f|0)){n=k;o=j;b=1;e=h;k=n;j=o;continue a}c[g+(k<<4)>>2]=h;a[g+(k<<4)+12>>0]=1;n=k;o=j;b=1;e=h;k=n;j=o;continue a}case 12:{if((b|0)!=2){if((k|0)>=(f|0)){o=k;j=12;b=2;e=h;k=o;continue a}c[g+(k<<4)+4>>2]=e+2;o=k;j=12;b=2;e=h;k=o;continue a}if((j|0)!=12){n=k;o=j;b=2;e=h;k=n;j=o;continue a}if((k|0)<(f|0))c[g+(k<<4)+8>>2]=h;j=12;k=k+1|0;b=0;e=h;continue a}case 13:{if((b|0)!=2){if((k|0)>=(f|0)){o=k;j=13;b=2;e=h;k=o;continue a}c[g+(k<<4)+4>>2]=e+2;o=k;j=13;b=2;e=h;k=o;continue a}if((j|0)!=13){n=k;o=j;b=2;e=h;k=n;j=o;continue a}if((k|0)<(f|0))c[g+(k<<4)+8>>2]=h;j=13;k=k+1|0;b=0;e=h;continue a}case 3:{if((k|0)>=(f|0)){i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}a[g+(k<<4)+12>>0]=0;i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}case 21:{switch(b|0){case 1:{n=k;o=j;b=0;e=h;k=n;j=o;continue a}case 2:break;default:{i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}}if((k|0)>=(f|0)){n=k;o=j;b=2;e=h;k=n;j=o;continue a}b=g+(k<<4)+12|0;if(!(a[b>>0]|0)){n=k;o=j;b=2;e=h;k=n;j=o;continue a}if(((i<<24>>24==32?(h|0)!=(c[g+(k<<4)+4>>2]|0):0)?(m=a[e+2>>0]|0,m<<24>>24!=32):0)?(j|0)!=(d[l+(m&255)>>0]|0):0){n=k;o=j;b=2;e=h;k=n;j=o;continue a}a[b>>0]=0;n=k;o=j;b=2;e=h;k=n;j=o;continue a}case 10:case 9:{switch(b|0){case 1:{n=k;o=j;b=0;e=h;k=n;j=o;continue a}case 2:break;default:{i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}}if((k|0)>=(f|0)){n=k;o=j;b=2;e=h;k=n;j=o;continue a}a[g+(k<<4)+12>>0]=0;n=k;o=j;b=2;e=h;k=n;j=o;continue a}case 17:case 11:if((b|0)==2){n=k;o=j;b=2;e=h;k=n;j=o;continue a}else break a;default:{i=b;n=k;o=j;e=h;b=i;k=n;j=o;continue a}}while(0)}return k|0}function yX(b,c){b=b|0;c=c|0;var d=0,e=0;b=c+2|0;d=a[b>>0]|0;a:do if(d<<24>>24==120){d=c+3|0;b=0;while(1){b:while(1){e=a[d>>0]|0;c=e<<24>>24;if(e<<24>>24==59){e=14;break a}switch(c|0){case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{e=7;break b}case 70:case 69:case 68:case 67:case 66:case 65:{e=8;break b}case 102:case 101:case 100:case 99:case 98:case 97:{e=9;break b}default:{}}d=d+1|0}if((e|0)==7){e=0;b=c+-48|b<<4}else if((e|0)==8){e=0;b=(b<<4)+-55+c|0}else if((e|0)==9){e=0;b=(b<<4)+-87+c|0}if((b|0)<1114112)d=d+1|0;else{b=-1;break}}}else{c=b;b=0;while(1){if(d<<24>>24==59){e=14;break a}b=(d<<24>>24)+-48+(b*10|0)|0;if((b|0)>=1114112){b=-1;break a}d=c+1|0;c=d;d=a[d>>0]|0}}while(0);if((e|0)==14)b=iX(b)|0;return b|0}function zX(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;a:do switch(d-c|0){case 2:{if((a[c+1>>0]|0)==116){b=a[c>>0]|0;b=b<<24>>24==108?60:b<<24>>24==103?62:0}else e=14;break}case 3:{if(((a[c>>0]|0)==97?(a[c+1>>0]|0)==109:0)?(a[c+2>>0]|0)==112:0)b=38;else e=14;break}case 4:switch(a[c>>0]|0){case 113:{if((a[c+1>>0]|0)!=117){e=14;break a}if((a[c+2>>0]|0)!=111){e=14;break a}if((a[c+3>>0]|0)==116){b=34;break a}else{e=14;break a}}case 97:{if((a[c+1>>0]|0)!=112){e=14;break a}if((a[c+2>>0]|0)!=111){e=14;break a}if((a[c+3>>0]|0)==115){b=39;break a}else{e=14;break a}}default:{e=14;break a}}default:e=14}while(0);if((e|0)==14)b=0;return b|0}function AX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=b+72|0;i=g+4|0;while(1){if((f-e|0)<=0)break;switch(a[h+(d[e>>0]|0)>>0]|0){case 5:{e=e+2|0;break}case 6:{e=e+3|0;break}case 7:{e=e+4|0;break}case 10:{c[i>>2]=-1;c[g>>2]=(c[g>>2]|0)+1;e=e+1|0;break}case 9:{c[g>>2]=(c[g>>2]|0)+1;b=e+1|0;if((f-b|0)>0)e=(a[h+(d[b>>0]|0)>>0]|0)==10?e+2|0:b;else e=b;c[i>>2]=-1;break}default:e=e+1|0}c[i>>2]=(c[i>>2]|0)+1}return}function BX(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=e+-1|0;b=b+72|0;a:while(1){d=d+1|0;if((g-d|0)<=0){d=1;break}e=a[d>>0]|0;switch(a[b+(e&255)>>0]|0){case 23:case 19:case 30:case 33:case 16:case 18:case 10:case 9:case 15:case 14:case 17:case 35:case 34:case 32:case 31:case 13:case 27:case 24:case 25:continue a;case 21:if(e<<24>>24==9){h=7;break a}else continue a;case 22:case 26:{if(e<<24>>24>=0)continue a;break}default:{}}switch(e<<24>>24|0){case 64:case 36:break;default:{h=7;break a}}}if((h|0)==7){c[f>>2]=d;d=0}return d|0}function CX(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;i=h;while(1){j=c[e>>2]|0;if((j|0)==(f|0)){b=0;break}k=d[j>>0]|0;b=c[g>>2]|0;if(!(k&128)){if((b|0)==(h|0)){b=2;break}c[e>>2]=j+1;j=a[j>>0]|0;k=c[g>>2]|0;c[g>>2]=k+1;a[k>>0]=j;continue}else{if((i-b|0)<2){b=2;break}c[g>>2]=b+1;a[b>>0]=k>>>6|192;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=k&63|128;c[e>>2]=(c[e>>2]|0)+1;continue}}return b|0}function DX(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;while(1){a=c[e>>2]|0;i=a>>>0>>0;j=c[g>>2]|0;if(!(i&j>>>0>>0))break;c[e>>2]=a+1;i=d[a>>0]|0;j=c[g>>2]|0;c[g>>2]=j+2;b[j>>1]=i}return ((j|0)!=(h|0)|i^1?0:2)|0}function EX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f;h=k-e|0;a:do if((h|0)>0){l=b+72|0;switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{f=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=4;break}case 19:{f=GX(b,e+1|0,f,g)|0;break a}default:{c[g>>2]=e;f=0;break a}}h=b+328|0;i=b+332|0;j=b+336|0;e=e+f|0;b:while(1){f=k-e|0;if((f|0)<=0){f=-1;break a}switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{h=18;break b}case 18:{h=29;break b}case 27:case 26:case 25:case 24:case 22:{f=1;break}case 5:{if((f|0)<2){f=-2;break a}if(!(lb[c[h>>2]&127](b,e)|0)){h=21;break b}else f=2;break}case 6:{if((f|0)<3){f=-2;break a}if(!(lb[c[i>>2]&127](b,e)|0)){h=24;break b}else f=3;break}case 7:{if((f|0)<4){f=-2;break a}if(!(lb[c[j>>2]&127](b,e)|0)){h=27;break b}else f=4;break}default:{h=30;break b}}e=e+f|0}if((h|0)==18){c[g>>2]=e;f=0;break}else if((h|0)==21){c[g>>2]=e;f=0;break}else if((h|0)==24){c[g>>2]=e;f=0;break}else if((h|0)==27){c[g>>2]=e;f=0;break}else if((h|0)==29){c[g>>2]=e+1;f=9;break}else if((h|0)==30){c[g>>2]=e;f=0;break}}else f=-1;while(0);return f|0}function FX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=f-e|0;a:do if((h|0)>0){l=b+72|0;switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=4;break}case 30:case 9:case 10:case 21:{c[g>>2]=e;f=22;break a}default:{c[g>>2]=e;f=0;break a}}i=b+328|0;j=b+332|0;k=b+336|0;e=e+h|0;b:while(1){h=f-e|0;if((h|0)<=0){f=-1;break a}switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{h=18;break b}case 18:{h=29;break b}case 27:case 26:case 25:case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[i>>2]&127](b,e)|0)){h=21;break b}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[j>>2]&127](b,e)|0)){h=24;break b}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[k>>2]&127](b,e)|0)){h=27;break b}else h=4;break}default:{h=30;break b}}e=e+h|0}if((h|0)==18){c[g>>2]=e;f=0;break}else if((h|0)==21){c[g>>2]=e;f=0;break}else if((h|0)==24){c[g>>2]=e;f=0;break}else if((h|0)==27){c[g>>2]=e;f=0;break}else if((h|0)==29){c[g>>2]=e+1;f=28;break}else if((h|0)==30){c[g>>2]=e;f=0;break}}else f=-1;while(0);return f|0}function GX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=f;a:do if((i-e|0)>0){h=a[e>>0]|0;if(h<<24>>24==120){b=HX(b,e+1|0,f,g)|0;break}f=b+72|0;if((a[f+(h&255)>>0]|0)!=25){c[g>>2]=e;b=0;break}b:while(1){b=e+1|0;if((i-b|0)<=0){b=-1;break a}switch(a[f+(d[b>>0]|0)>>0]|0){case 25:{e=b;break}case 18:{f=8;break b}default:{f=9;break b}}}if((f|0)==8){c[g>>2]=e+2;b=10;break}else if((f|0)==9){c[g>>2]=b;b=0;break}}else b=-1;while(0);return b|0}function HX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0;a:do if((f-e|0)>0){b=b+72|0;if((a[b+(d[e>>0]|0)>>0]&-2)<<24>>24!=24){c[g>>2]=e;f=0;break}b:while(1){h=e+1|0;if((f-h|0)<=0){f=-1;break a}switch(a[b+(d[h>>0]|0)>>0]|0){case 24:case 25:{e=h;break}case 18:{b=6;break b}default:{b=7;break b}}}if((b|0)==6){c[g>>2]=e+2;f=10;break}else if((b|0)==7){c[g>>2]=h;f=0;break}}else f=-1;while(0);return f|0}function IX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=f;h=q-e|0;a:do if((h|0)>0){p=b+72|0;switch(a[p+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;h=0;break a}case 24:case 22:{h=1;break}case 5:{if((h|0)<2){h=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else h=2;break}case 6:{if((h|0)<3){h=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else h=3;break}case 7:{if((h|0)<4){h=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;h=0;break a}else h=4;break}case 16:{h=e+1|0;if((q-h|0)<=0){h=-1;break a}switch(a[p+(d[h>>0]|0)>>0]|0){case 27:{h=JX(b,e+2|0,f,g)|0;break a}case 20:{h=KX(e+2|0,f,g)|0;break a}default:{c[g>>2]=h;h=0;break a}}}case 15:{h=LX(b,e+1|0,f,g)|0;break a}case 17:{h=MX(b,e+1|0,f,g)|0;break a}default:{c[g>>2]=e;h=0;break a}}j=b+328|0;k=b+332|0;l=b+336|0;m=b+340|0;n=b+344|0;o=b+348|0;i=0;h=e+h|0;b:while(1){e=q-h|0;if((e|0)<=0){h=-1;break a}c:do switch(a[p+(d[h>>0]|0)>>0]|0){case 29:{r=24;break b}case 10:case 9:case 21:{r=50;break b}case 11:{r=64;break b}case 17:break b;case 27:case 26:case 25:case 24:case 22:{e=1;break}case 5:{if((e|0)<2){h=-2;break a}if(!(lb[c[j>>2]&127](b,h)|0)){r=27;break b}else e=2;break}case 6:{if((e|0)<3){h=-2;break a}if(!(lb[c[k>>2]&127](b,h)|0)){r=30;break b}else e=3;break}case 7:{if((e|0)<4){h=-2;break a}if(!(lb[c[l>>2]&127](b,h)|0)){r=33;break b}else e=4;break}case 23:{if(i|0){r=35;break b}i=h+1|0;e=q-i|0;if((e|0)<=0){h=-1;break a}switch(a[p+(d[i>>0]|0)>>0]|0){case 29:{r=38;break b}case 24:case 22:{i=1;e=2;break c}case 5:{if((e|0)<2){h=-2;break a}if(!(lb[c[m>>2]&127](b,i)|0)){r=42;break b}else{i=1;e=3;break c}}case 6:{if((e|0)<3){h=-2;break a}if(!(lb[c[n>>2]&127](b,i)|0)){r=45;break b}else{i=1;e=4;break c}}case 7:{if((e|0)<4){h=-2;break a}if(!(lb[c[o>>2]&127](b,i)|0)){r=48;break b}else{i=1;e=5;break c}}default:{r=49;break b}}}default:{r=69;break b}}while(0);h=h+e|0}d:switch(r|0){case 24:{c[g>>2]=h;h=0;break a}case 27:{c[g>>2]=h;h=0;break a}case 30:{c[g>>2]=h;h=0;break a}case 33:{c[g>>2]=h;h=0;break a}case 35:{c[g>>2]=h;h=0;break a}case 38:{c[g>>2]=i;h=0;break a}case 42:{c[g>>2]=i;h=0;break a}case 45:{c[g>>2]=i;h=0;break a}case 48:{c[g>>2]=i;h=0;break a}case 49:{c[g>>2]=i;h=0;break a}case 50:{e:while(1){r=0;i=h+1|0;e=q-i|0;if((e|0)<=0){h=-1;break a}switch(a[p+(d[i>>0]|0)>>0]|0){case 11:{h=i;r=64;break d}case 17:{h=i;break d}case 10:case 9:case 21:{h=i;r=50;break}case 29:{r=52;break e}case 24:case 22:{i=2;break e}case 5:{r=53;break e}case 6:{r=56;break e}case 7:{r=59;break e}default:{r=62;break e}}}if((r|0)==52){c[g>>2]=i;h=0;break a}else if((r|0)==53){if((e|0)<2){h=-2;break a}if(!(lb[c[m>>2]&127](b,i)|0)){c[g>>2]=i;h=0;break a}else i=3}else if((r|0)==56){if((e|0)<3){h=-2;break a}if(!(lb[c[n>>2]&127](b,i)|0)){c[g>>2]=i;h=0;break a}else i=4}else if((r|0)==59){if((e|0)<4){h=-2;break a}if(!(lb[c[o>>2]&127](b,i)|0)){c[g>>2]=i;h=0;break a}else i=5}else if((r|0)==62){c[g>>2]=i;h=0;break a}h=NX(b,h+i|0,f,g)|0;break a}case 69:{c[g>>2]=h;h=0;break a}}if((r|0)==64){c[g>>2]=h+1;h=2;break}i=h+1|0;if((q-i|0)>0)if((a[i>>0]|0)==62){c[g>>2]=h+2;h=4;break}else{c[g>>2]=i;h=0;break}else h=-1}else h=-1;while(0);return h|0}function JX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;a:do if((f-e|0)>0){if((a[e>>0]|0)!=45){c[g>>2]=e;f=0;break}h=b+72|0;i=b+352|0;j=b+356|0;k=b+360|0;l=e+1|0;b:while(1){e=f-l|0;if((e|0)<=0){f=-1;break a}switch(a[h+(d[l>>0]|0)>>0]|0){case 8:case 1:case 0:{e=19;break b}case 5:{if((e|0)<2){f=-2;break a}if(lb[c[i>>2]&127](b,l)|0){e=9;break b}l=l+2|0;continue b}case 6:{if((e|0)<3){f=-2;break a}if(lb[c[j>>2]&127](b,l)|0){e=13;break b}l=l+3|0;continue b}case 7:{if((e|0)<4){f=-2;break a}if(lb[c[k>>2]&127](b,l)|0){e=17;break b}l=l+4|0;continue b}case 27:{e=l+1|0;if((f-e|0)<=0){f=-1;break a}if((a[e>>0]|0)==45){e=22;break b}else{l=e;continue b}}default:{l=l+1|0;continue b}}}if((e|0)==9){c[g>>2]=l;f=0;break}else if((e|0)==13){c[g>>2]=l;f=0;break}else if((e|0)==17){c[g>>2]=l;f=0;break}else if((e|0)==19){c[g>>2]=l;f=0;break}else if((e|0)==22){e=l+2|0;if((f-e|0)<=0){f=-1;break}if((a[e>>0]|0)==62){c[g>>2]=l+3;f=13;break}else{c[g>>2]=e;f=0;break}}}else f=-1;while(0);return f|0}function KX(b,d,e){b=b|0;d=d|0;e=e|0;if((d-b|0)>5){d=0;while(1){if((d|0)>=6){d=8;break}if((a[b>>0]|0)!=(a[141218+d>>0]|0)){d=0;break}d=d+1|0;b=b+1|0}c[e>>2]=b}else d=-1;return d|0}function LX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q;o=f;f=o-e|0;a:do if((f|0)>0){n=b+72|0;switch(a[n+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{f=1;break}case 5:{if((f|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=2;break}case 6:{if((f|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=3;break}case 7:{if((f|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else f=4;break}default:{c[g>>2]=e;f=0;break a}}i=b+328|0;j=b+332|0;k=b+336|0;f=e+f|0;b:while(1){h=o-f|0;if((h|0)<=0){f=-1;break a}switch(a[n+(d[f>>0]|0)>>0]|0){case 29:{m=17;break b}case 10:case 9:case 21:{m=28;break b}case 15:{m=50;break b}case 27:case 26:case 25:case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[i>>2]&127](b,f)|0)){m=20;break b}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[j>>2]&127](b,f)|0)){m=23;break b}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[k>>2]&127](b,f)|0)){m=26;break b}else h=4;break}default:break b}f=f+h|0}if((m|0)==17){c[g>>2]=f;f=0;break}else if((m|0)==20){c[g>>2]=f;f=0;break}else if((m|0)==23){c[g>>2]=f;f=0;break}else if((m|0)==26){c[g>>2]=f;f=0;break}else if((m|0)==28){if(!(OX(e,f,p)|0)){c[g>>2]=f;f=0;break}i=b+352|0;j=b+356|0;k=b+360|0;h=f+1|0;c:while(1){f=o-h|0;if((f|0)<=0){f=-1;break a}switch(a[n+(d[h>>0]|0)>>0]|0){case 8:case 1:case 0:{m=45;break c}case 5:{if((f|0)<2){f=-2;break a}if(lb[c[i>>2]&127](b,h)|0){m=35;break c}h=h+2|0;continue c}case 6:{if((f|0)<3){f=-2;break a}if(lb[c[j>>2]&127](b,h)|0){m=39;break c}h=h+3|0;continue c}case 7:{if((f|0)<4){f=-2;break a}if(lb[c[k>>2]&127](b,h)|0){m=43;break c}h=h+4|0;continue c}case 15:{f=h+1|0;if((o-f|0)<=0){f=-1;break a}if((a[f>>0]|0)==62){m=48;break c}else{h=f;continue c}}default:{h=h+1|0;continue c}}}if((m|0)==35){c[g>>2]=h;f=0;break}else if((m|0)==39){c[g>>2]=h;f=0;break}else if((m|0)==43){c[g>>2]=h;f=0;break}else if((m|0)==45){c[g>>2]=h;f=0;break}else if((m|0)==48){c[g>>2]=h+2;f=c[p>>2]|0;break}}else if((m|0)==50){if(!(OX(e,f,p)|0)){c[g>>2]=f;f=0;break}h=f+1|0;if((o-h|0)<=0){f=-1;break}if((a[h>>0]|0)==62){c[g>>2]=f+2;f=c[p>>2]|0;break}else f=h}c[g>>2]=f;f=0}else f=-1;while(0);l=q;return f|0}function MX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=f-e|0;a:do if((h|0)>0){l=b+72|0;switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=4;break}default:{c[g>>2]=e;f=0;break a}}i=b+328|0;j=b+332|0;k=b+336|0;h=e+h|0;b:while(1){e=f-h|0;if((e|0)<=0){f=-1;break a}switch(a[l+(d[h>>0]|0)>>0]|0){case 29:{i=17;break b}case 10:case 9:case 21:{i=27;break b}case 11:{i=32;break b}case 23:case 27:case 26:case 25:case 24:case 22:{e=1;break}case 5:{if((e|0)<2){f=-2;break a}if(!(lb[c[i>>2]&127](b,h)|0)){i=20;break b}else e=2;break}case 6:{if((e|0)<3){f=-2;break a}if(!(lb[c[j>>2]&127](b,h)|0)){i=23;break b}else e=3;break}case 7:{if((e|0)<4){f=-2;break a}if(!(lb[c[k>>2]&127](b,h)|0)){i=26;break b}else e=4;break}default:{i=33;break b}}h=h+e|0}if((i|0)==17){c[g>>2]=h;f=0;break}else if((i|0)==20){c[g>>2]=h;f=0;break}else if((i|0)==23){c[g>>2]=h;f=0;break}else if((i|0)==26){c[g>>2]=h;f=0;break}else if((i|0)==27){c:while(1){e=h+1|0;if((f-e|0)<=0){f=-1;break a}switch(a[l+(d[e>>0]|0)>>0]|0){case 10:case 9:case 21:{h=e;i=27;break}case 11:{i=29;break c}default:{i=30;break c}}}if((i|0)==29){c[g>>2]=h+2;f=5;break}else if((i|0)==30){c[g>>2]=e;f=0;break}}else if((i|0)==32){c[g>>2]=h+1;f=5;break}else if((i|0)==33){c[g>>2]=h;f=0;break}}else f=-1;while(0);return f|0}function NX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+16|0;v=y;c[v>>2]=e;w=f;r=b+72|0;s=b+328|0;t=b+332|0;u=b+336|0;k=b+340|0;m=b+344|0;n=b+348|0;o=b+352|0;p=b+356|0;q=b+360|0;i=0;a:while(1){h=w-e|0;if((h|0)<=0){e=-1;break}b:do switch(a[r+(d[e>>0]|0)>>0]|0){case 29:{x=4;break a}case 27:case 26:case 25:case 24:case 22:{h=e+1|0;c[v>>2]=h;j=i;e=h;i=j;continue a}case 5:{if((h|0)<2){e=-2;break a}if(!(lb[c[s>>2]&127](b,e)|0)){x=8;break a}h=e+2|0;c[v>>2]=h;j=i;e=h;i=j;continue a}case 6:{if((h|0)<3){e=-2;break a}if(!(lb[c[t>>2]&127](b,e)|0)){x=12;break a}h=e+3|0;c[v>>2]=h;j=i;e=h;i=j;continue a}case 7:{if((h|0)<4){e=-2;break a}if(!(lb[c[u>>2]&127](b,e)|0)){x=16;break a}h=e+4|0;c[v>>2]=h;j=i;e=h;i=j;continue a}case 23:{if(i|0){x=19;break a}h=e+1|0;c[v>>2]=h;i=w-h|0;if((i|0)<=0){e=-1;break a}switch(a[r+(d[h>>0]|0)>>0]|0){case 29:{x=22;break a}case 24:case 22:{j=e+2|0;c[v>>2]=j;i=1;e=j;continue a}case 5:{if((i|0)<2){e=-2;break a}if(!(lb[c[k>>2]&127](b,h)|0)){x=26;break a}j=e+3|0;c[v>>2]=j;i=1;e=j;continue a}case 6:{if((i|0)<3){e=-2;break a}if(!(lb[c[m>>2]&127](b,h)|0)){x=30;break a}j=e+4|0;c[v>>2]=j;i=1;e=j;continue a}case 7:{if((i|0)<4){e=-2;break a}if(!(lb[c[n>>2]&127](b,h)|0)){x=34;break a}j=e+5|0;c[v>>2]=j;i=1;e=j;continue a}default:{x=36;break a}}}case 10:case 9:case 21:while(1){e=e+1|0;c[v>>2]=e;if((w-e|0)<=0){e=-1;break a}switch(a[r+(d[e>>0]|0)>>0]|0){case 14:break b;case 9:case 10:case 21:break;default:{x=39;break a}}}case 14:break;default:{x=92;break a}}while(0);while(1){h=e+1|0;c[v>>2]=h;if((w-h|0)<=0){e=-1;break a}j=a[r+(d[h>>0]|0)>>0]|0;if((j|1)<<24>>24==13)break;switch(j<<24>>24){case 9:case 10:case 21:{e=h;break}default:{x=43;break a}}}e=e+2|0;c[v>>2]=e;c:while(1){h=w-e|0;if((h|0)<=0){e=-1;break a}i=a[r+(d[e>>0]|0)>>0]|0;if(i<<24>>24==j<<24>>24)break;switch(i<<24>>24){case 8:case 1:case 0:{x=60;break a}case 2:{x=65;break a}case 5:{if((h|0)<2){e=-2;break a}if(lb[c[o>>2]&127](b,e)|0){x=50;break a}i=e+2|0;c[v>>2]=i;e=i;continue c}case 6:{if((h|0)<3){e=-2;break a}if(lb[c[p>>2]&127](b,e)|0){x=54;break a}i=e+3|0;c[v>>2]=i;e=i;continue c}case 7:{if((h|0)<4){e=-2;break a}if(lb[c[q>>2]&127](b,e)|0){x=58;break a}i=e+4|0;c[v>>2]=i;e=i;continue c}case 3:{e=EX(b,e+1|0,f,v)|0;if((e|0)<1){x=63;break a}e=c[v>>2]|0;continue c}default:{i=e+1|0;c[v>>2]=i;e=i;continue c}}}h=e+1|0;c[v>>2]=h;if((w-h|0)<=0){e=-1;break}switch(a[r+(d[h>>0]|0)>>0]|0){case 11:{x=86;break a}case 17:{x=87;break a}case 10:case 9:case 21:{e=h;break}default:{x=69;break a}}d:while(1){h=e+1|0;c[v>>2]=h;i=w-h|0;if((i|0)<=0){e=-1;break a}switch(a[r+(d[h>>0]|0)>>0]|0){case 29:{x=72;break a}case 11:{x=86;break a}case 17:{x=87;break a}case 10:case 9:case 21:{e=h;break}case 24:case 22:{x=73;break d}case 5:{x=74;break d}case 6:{x=78;break d}case 7:{x=82;break d}default:{x=91;break a}}}if((x|0)==73){x=0;e=e+2|0;c[v>>2]=e;i=0;continue}else if((x|0)==74){x=0;if((i|0)<2){e=-2;break}if(!(lb[c[k>>2]&127](b,h)|0)){x=76;break}e=e+3|0;c[v>>2]=e;i=0;continue}else if((x|0)==78){x=0;if((i|0)<3){e=-2;break}if(!(lb[c[m>>2]&127](b,h)|0)){x=80;break}e=e+4|0;c[v>>2]=e;i=0;continue}else if((x|0)==82){x=0;if((i|0)<4){e=-2;break}if(!(lb[c[n>>2]&127](b,h)|0)){x=84;break}e=e+5|0;c[v>>2]=e;i=0;continue}}switch(x|0){case 4:{c[g>>2]=e;e=0;break}case 8:{c[g>>2]=e;e=0;break}case 12:{c[g>>2]=e;e=0;break}case 16:{c[g>>2]=e;e=0;break}case 19:{c[g>>2]=e;e=0;break}case 22:{c[g>>2]=h;e=0;break}case 26:{c[g>>2]=h;e=0;break}case 30:{c[g>>2]=h;e=0;break}case 34:{c[g>>2]=h;e=0;break}case 36:{c[g>>2]=h;e=0;break}case 39:{c[g>>2]=e;e=0;break}case 43:{c[g>>2]=h;e=0;break}case 50:{c[g>>2]=e;e=0;break}case 54:{c[g>>2]=e;e=0;break}case 58:{c[g>>2]=e;e=0;break}case 60:{c[g>>2]=e;e=0;break}case 63:{if(!e){c[g>>2]=c[v>>2];e=0}break}case 65:{c[g>>2]=e;e=0;break}case 69:{c[g>>2]=h;e=0;break}case 72:{c[g>>2]=h;e=0;break}case 76:{c[g>>2]=h;e=0;break}case 80:{c[g>>2]=h;e=0;break}case 84:{c[g>>2]=h;e=0;break}case 86:{c[g>>2]=e+2;e=1;break}case 87:{e=h+1|0;c[v>>2]=e;if((w-e|0)>0)if((a[e>>0]|0)==62){c[g>>2]=h+2;e=3;break}else{c[g>>2]=e;e=0;break}else e=-1;break}case 91:{c[g>>2]=h;e=0;break}case 92:{c[g>>2]=e;e=0;break}}l=y;return e|0}function OX(b,d,e){b=b|0;d=d|0;e=e|0;c[e>>2]=11;a:do if((d-b|0)==3){switch(a[b>>0]|0){case 120:{d=0;break}case 88:{d=1;break}default:{d=1;break a}}switch(a[b+1>>0]|0){case 109:break;case 77:{d=1;break}default:{d=1;break a}}switch(a[b+2>>0]|0){case 108:break;case 76:{d=0;break a}default:{d=1;break a}}if(!d){c[e>>2]=12;d=1}else d=0}else d=1;while(0);return d|0}function PX(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=e+72|0;l=e+352|0;m=e+356|0;n=e+360|0;a:while(1){i=g-f|0;if((i|0)<=0){g=-1;break}j=a[k+(d[f>>0]|0)>>0]|0;switch(j<<24>>24){case 8:case 1:case 0:{o=16;break a}case 5:{if((i|0)<2){g=-2;break a}if(lb[c[l>>2]&127](e,f)|0){o=6;break a}f=f+2|0;continue a}case 6:{if((i|0)<3){g=-2;break a}if(lb[c[m>>2]&127](e,f)|0){o=10;break a}f=f+3|0;continue a}case 7:{if((i|0)<4){g=-2;break a}if(lb[c[n>>2]&127](e,f)|0){o=14;break a}f=f+4|0;continue a}case 13:case 12:{f=f+1|0;if((j&255|0)==(b|0)){o=18;break a}else continue a}default:{f=f+1|0;continue a}}}b:do if((o|0)==6){c[h>>2]=f;g=0}else if((o|0)==10){c[h>>2]=f;g=0}else if((o|0)==14){c[h>>2]=f;g=0}else if((o|0)==16){c[h>>2]=f;g=0}else if((o|0)==18)if((g-f|0)>0){c[h>>2]=f;switch(a[k+(d[f>>0]|0)>>0]|0){case 20:case 30:case 11:case 10:case 9:case 21:{g=27;break b}default:{}}g=0}else g=-27;while(0);return g|0}function QX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=f;a:do if((h-e|0)>0){i=b+72|0;switch(a[i+(d[e>>0]|0)>>0]|0){case 27:{b=JX(b,e+1|0,f,g)|0;break a}case 20:{c[g>>2]=e+1;b=33;break a}case 24:case 22:{b:while(1){b=e+1|0;f=h-b|0;if((f|0)<=0){b=-1;break a}switch(a[i+(d[b>>0]|0)>>0]|0){case 24:case 22:{e=b;break}case 30:{j=8;break b}case 10:case 9:case 21:break b;default:{j=12;break b}}}if((j|0)==12){c[g>>2]=b;b=0;break a}c:do if((j|0)==8){if((f|0)<=1){b=-1;break a}switch(a[i+(d[e+2>>0]|0)>>0]|0){case 30:case 10:case 9:case 21:break;default:break c}c[g>>2]=b;b=0;break a}while(0);c[g>>2]=b;b=16;break a}default:{c[g>>2]=e;b=0;break a}}}else b=-1;while(0);return b|0} +function Qv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=a;while(1){j=c[f>>2]|0;if(!j){k=6;break}if((c[j>>2]|0)==(b|0))break;f=j+4|0}if((k|0)==6)qa(93188,93195,217,93206);i=j+8|0;f=c[i>>2]|0;g=j+4|0;b=c[g>>2]|0;c[(f|0?f+4|0:a)>>2]=b;h=a+4|0;c[(b|0?b+8|0:h)>>2]=f;b=0;f=a;while(1){f=c[f>>2]|0;if(!f)break;if((c[f>>2]|0)==(d|0)){k=9;break}b=f;f=f+4|0}if((k|0)==9){do if(!e)if((f|0)==(c[a>>2]|0)){c[a>>2]=j;c[g>>2]=f;c[i>>2]=0;f=f+8|0;break}else{c[b+4>>2]=j;c[i>>2]=b;c[g>>2]=f;f=f+8|0;break}else if((f|0)==(c[h>>2]|0)){c[h>>2]=j;c[g>>2]=0;c[i>>2]=f;f=f+4|0;break}else{c[i>>2]=f;f=f+4|0;c[g>>2]=c[f>>2];c[(c[f>>2]|0)+8>>2]=j;break}while(0);c[f>>2]=j}return}function Rv(a){a=a|0;return c[a+8>>2]|0}function Sv(a,b){a=a|0;b=b|0;Tv(a,Nv(b)|0);C_(b);return}function Tv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[b>>2]|0;if(d|0){e=a+4|0;f=c[e>>2]|0;c[f+4>>2]=d;c[d+8>>2]=f;c[e>>2]=c[b+4>>2];d=a+8|0;c[d>>2]=(c[d>>2]|0)+(c[b+8>>2]|0)}return}function Uv(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0;m=c[b+8>>2]|0;Vv(a,b);l=Wv(m)|0;a=Yv(Xv(l)|0)|0;Zv(m,a);m=_v(a,m)|0;a=Rv(m)|0;j=+$v(m);k=(a|0)==1;f=+(a|0);i=f*.15915494309189535*(j+d);g=k?0.0:i;a=m;while(1){a=c[a>>2]|0;if(!a)break;if(c[(c[(c[(c[a>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&8|0){e=4;break}a=a+4|0}if((e|0)==4)Ov(m,a);d=1.0/f;e=0;a=m;while(1){a=c[a>>2]|0;if(!a)break;n=(c[a>>2]|0)+16|0;c[(c[(c[n>>2]|0)+112>>2]|0)+16>>2]=e;h[(c[(c[n>>2]|0)+112>>2]|0)+24>>3]=0.0;f=6.283185307179586*d*+(e|0);o=+E(+f)*g;n=c[(c[n>>2]|0)+132>>2]|0;h[n>>3]=o;h[n+8>>3]=+F(+f)*g;e=e+1|0;a=a+4|0}o=k?j*.5:i;h[b+16>>3]=o;h[b+24>>3]=o;h[b+48>>3]=-1.0;_x(l)|0;return m|0}function Vv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[b+8>>2]|0;d=Ry(f)|0;while(1){if(!d)break;e=Dx(a,d)|0;while(1){if(!e)break;if((c[(c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0)+12>>2]|0)==(b|0))Ux(f,e,1)|0;e=Fx(a,e)|0}d=Sy(f,d)|0}return}function Wv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;g=k;f=fw(a,g)|0;g=c[g>>2]|0;i=$x(g)|0;h=gw(g)|0;i=i+-3|0;e=0;while(1){if((e|0)>=(i|0))break;j=pw(h)|0;d=Ix(g,j)|0;while(1){if(!d)break;b=c[d>>2]&3;a=c[((b|0)==2?d:d+-48|0)+40>>2]|0;if((j|0)==(a|0))a=c[((b|0)==3?d:d+48|0)+40>>2]|0;ow(h,a);d=Jx(g,d,j)|0}hw(g,j,f);d=Ix(g,j)|0;while(1){if(!d)break;b=c[d>>2]&3;a=c[((b|0)==2?d:d+-48|0)+40>>2]|0;if((j|0)==(a|0))a=c[((b|0)==3?d:d+48|0)+40>>2]|0;b=(c[a+16>>2]|0)+236|0;c[b>>2]=(c[b>>2]|0)+-1;nw(h,a);d=Jx(g,d,j)|0}cz(g,j)|0;e=e+1|0}_x(g)|0;mw(h);l=k;return f|0}function Xv(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+144|0;b=f;e=f+8|0;d=c[46162]|0;c[46162]=d+1;c[b>>2]=d;X0(e,93221,b)|0;e=uA(a,e,1)|0;zz(e,134401,280,1)|0;b=Ry(a)|0;while(1){if(!b)break;Wy(e,b,1)|0;d=b+16|0;c[(c[(c[d>>2]|0)+112>>2]|0)+16+12>>2]=0;c[(c[(c[d>>2]|0)+112>>2]|0)+32>>2]=0;d=(c[(c[d>>2]|0)+112>>2]|0)+4|0;c[d>>2]=c[d>>2]&-2;b=Sy(a,b)|0}b=Ry(a)|0;while(1){if(!b)break;d=c[(c[b+16>>2]|0)+112>>2]|0;if(!(c[d+4>>2]&1)){c[d+16>>2]=0;ew(a,b,e)}b=Sy(a,b)|0}l=f;return e|0}function Yv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(($x(a)|0)!=1){d=Ry(a)|0;while(1){if(!d)break;b=0;e=Ix(a,d)|0;while(1){if(!e)break;b=b+1|0;e=Jx(a,e,d)|0}if((b|0)==1)dw(d,d,0,0);d=Sy(a,d)|0}b=0;f=0;d=Ry(a)|0;while(1){if(!d)break;g=c[(c[d+16>>2]|0)+112>>2]|0;g=(c[g+32>>2]|0)+(c[g+16+12>>2]|0)|0;e=(g|0)>(b|0);b=e?g:b;f=e?d:f;d=Sy(a,d)|0}b=Jv()|0;e=f+16|0;d=(c[(c[e>>2]|0)+112>>2]|0)+16+4|0;while(1){d=c[d>>2]|0;if((d|0)==(f|0))break;Lv(b,0,d);d=c[(c[d+16>>2]|0)+112>>2]|0;g=d+4|0;c[g>>2]=c[g>>2]|16;d=d+16|0}Lv(b,0,f);g=c[(c[e>>2]|0)+112>>2]|0;a=g+4|0;c[a>>2]=c[a>>2]|16;if(c[g+32>>2]|0){a=Jv()|0;d=(c[(c[e>>2]|0)+112>>2]|0)+24|0;while(1){d=c[d>>2]|0;if((d|0)==(f|0))break;Lv(a,0,d);d=c[(c[d+16>>2]|0)+112>>2]|0;g=d+4|0;c[g>>2]=c[g>>2]|16;d=d+16|0}Sv(b,a)}}else{b=Jv()|0;g=Ry(a)|0;Lv(b,0,g);g=(c[(c[g+16>>2]|0)+112>>2]|0)+4|0;c[g>>2]=c[g>>2]|16}return b|0}function Zv(a,b){a=a|0;b=b|0;var d=0;d=Ry(a)|0;while(1){if(!d)break;if(!(c[(c[(c[d+16>>2]|0)+112>>2]|0)+4>>2]&16))cw(a,d,b);d=Sy(a,d)|0}return}function _v(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;d=aw(a,b)|0;c[f>>2]=d;a:do if(d){e=0;while(1){if((e|0)>=10)break a;a=bw(a,b,f)|0;h=d;d=c[f>>2]|0;if((h|0)==(d|0)|(d|0)==0)break;else e=e+1|0}}while(0);l=g;return a|0}function $v(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0;b=0.0;while(1){a=c[a>>2]|0;if(!a)break;f=c[(c[c[(c[(c[a>>2]|0)+16>>2]|0)+112>>2]>>2]|0)+16>>2]|0;d=+h[f+32>>3];d=d>b?d:b;e=+h[f+40>>3];b=e>d?e:d;a=a+4|0}return +b}function aw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=qw()|0;e=Ry(b)|0;while(1){if(!e)break;d=Dx(b,e)|0;while(1){if(!d)break;c[c[(c[d+16>>2]|0)+120>>2]>>2]=0;d=Fx(b,d)|0}e=Sy(b,e)|0}j=1;d=0;while(1){h=c[a>>2]|0;if(!h)break;i=c[h>>2]|0;g=Ix(b,i)|0;while(1){if(!g)break;f=g+16|0;if((c[c[(c[f>>2]|0)+120>>2]>>2]|0)>0){a=nb[c[k>>2]&63](k,0,128)|0;while(1){if(!a)break;e=c[a+8>>2]|0;if((c[c[(c[e+16>>2]|0)+120>>2]>>2]|0)>(c[c[(c[f>>2]|0)+120>>2]>>2]|0)?(l=c[e>>2]&3,(c[((l|0)==2?e:e+-48|0)+40>>2]|0)!=(i|0)):0)d=d+((c[((l|0)==3?e:e+48|0)+40>>2]|0)!=(i|0)&1)|0;a=nb[c[k>>2]&63](k,a,8)|0}ww(k,g)}g=Jx(b,g,i)|0}e=Ix(b,i)|0;while(1){if(!e)break;a=c[(c[e+16>>2]|0)+120>>2]|0;if(!(c[a>>2]|0)){c[a>>2]=j;vw(k,e)}e=Jx(b,e,i)|0}a=h+4|0;j=j+1|0}uw(k);return d|0}function bw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[d>>2]|0;k=Ry(b)|0;a:while(1){if(!k)break;j=Ix(b,k)|0;while(1){if(!j)break;g=c[j>>2]&3;f=c[((g|0)==3?j:j+48|0)+40>>2]|0;if((f|0)==(k|0))f=c[((g|0)==2?j:j+-48|0)+40>>2]|0;i=0;while(1){if((i|0)>=2)break;h=Pv(a)|0;Qv(a,k,f,i);g=aw(a,b)|0;if((g|0)<(e|0)){Kv(h);if(!g){e=0;break a}else e=g}else{Kv(a);a=h}i=i+1|0}j=Jx(b,j,k)|0}k=Sy(b,k)|0}c[d>>2]=e;return a|0}function cw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=Jv()|0;e=Dx(a,b)|0;while(1){if(!e)break;f=e+-48|0;Lv(h,0,c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0);f=(c[(c[(c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0)+16>>2]|0)+112>>2]|0)+4|0;c[f>>2]=c[f>>2]|32;e=Fx(a,e)|0}e=Gx(a,b)|0;while(1){if(!e)break;f=e+48|0;Lv(h,0,c[((c[e>>2]&3|0)==3?e:f)+40>>2]|0);f=(c[(c[(c[((c[e>>2]&3|0)==3?e:f)+40>>2]|0)+16>>2]|0)+112>>2]|0)+4|0;c[f>>2]=c[f>>2]|32;e=Hx(a,e)|0}a:do if((Rv(h)|0)>1){f=d+4|0;a=d;while(1){e=c[a>>2]|0;if(!e){g=13;break a}a=e+4|0;if(!(c[(c[(c[(c[e>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&32))continue;if(c[(c[(c[(c[c[((e|0)==(c[f>>2]|0)?d:a)>>2]>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&32|0)break}Lv(d,e,b)}else g=13;while(0);b:do if((g|0)==13){c:do if((Rv(h)|0)>0){e=d;while(1){e=c[e>>2]|0;if(!e)break c;if(c[(c[(c[(c[e>>2]|0)+16>>2]|0)+112>>2]|0)+4>>2]&32|0)break;e=e+4|0}Lv(d,e,b);break b}while(0);Lv(d,0,b)}while(0);e=h;while(1){e=c[e>>2]|0;if(!e)break;d=(c[(c[(c[e>>2]|0)+16>>2]|0)+112>>2]|0)+4|0;c[d>>2]=c[d>>2]&-33;e=e+4|0}Kv(h);return}function dw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;while(1){g=c[(c[(c[b+16>>2]|0)+112>>2]|0)+16>>2]|0;if(!g)break;h=d+1|0;i=g+16|0;j=c[(c[i>>2]|0)+112>>2]|0;b=j+16|0;f=c[b+12>>2]|0;if(f){if((f|0)>(d|0)){k=11;break}b=c[b+4>>2]|0;f=b;if((b|0)==(e|0))b=j;else{d=j+24|0;if(!((c[j+32>>2]|0)!=0?(c[d>>2]|0)==(e|0):0))e=b;c[d>>2]=f;b=c[(c[i>>2]|0)+112>>2]|0;c[b+32>>2]=c[b+16+12>>2];b=c[(c[i>>2]|0)+112>>2]|0}b=b+16|0}c[b+4>>2]=a;c[(c[(c[i>>2]|0)+112>>2]|0)+16+12>>2]=h;b=g;d=h}if((k|0)==11?(c[j+32>>2]|0)<=(d|0):0){c[j+24>>2]=a;c[(c[(c[i>>2]|0)+112>>2]|0)+32>>2]=h}return}function ew(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=(c[(c[b+16>>2]|0)+112>>2]|0)+4|0;c[g>>2]=c[g>>2]|1;g=Ix(a,b)|0;while(1){if(!g)break;f=c[g>>2]&3;e=c[((f|0)==2?g:g+-48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((f|0)==3?g:g+48|0)+40>>2]|0;f=e+16|0;if(!(c[(c[(c[f>>2]|0)+112>>2]|0)+4>>2]&1)){Ux(d,g,1)|0;c[(c[(c[f>>2]|0)+112>>2]|0)+16>>2]=b;ew(a,e,d)}g=Jx(a,g,b)|0}return}function fw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;k=l;l=l+144|0;j=k+8|0;i=k;e=k+16|0;h=c[46163]|0;c[46163]=h+1;c[i>>2]=h;X0(e,93230,i)|0;i=uA(b,e,1)|0;zz(i,134401,280,1)|0;h=c[46163]|0;c[46163]=h+1;c[j>>2]=h;X0(e,93230,j)|0;h=b+24|0;a[j>>0]=a[h>>0]|0;a[j+1>>0]=a[h+1>>0]|0;a[j+2>>0]=a[h+2>>0]|0;a[j+3>>0]=a[h+3>>0]|0;j=Wx(e,j,0)|0;e=Ry(b)|0;while(1){if(!e)break;Wy(i,e,1)|0;h=$y(j,qy(e)|0,1)|0;zz(h,134365,304,1)|0;c[(c[(c[e+16>>2]|0)+112>>2]|0)+16>>2]=h;e=Sy(b,e)|0}f=Ry(b)|0;while(1){if(!f)break;g=c[(c[(c[f+16>>2]|0)+112>>2]|0)+16>>2]|0;h=g+16|0;e=Dx(b,f)|0;while(1){if(!e)break;Ux(i,e,1)|0;m=c[(c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0)+16>>2]|0;n=Qx(j,g,m,0,1)|0;zz(n,134378,176,1)|0;c[(c[n+16>>2]|0)+116>>2]=e;n=(c[h>>2]|0)+236|0;c[n>>2]=(c[n>>2]|0)+1;m=(c[m+16>>2]|0)+236|0;c[m>>2]=(c[m>>2]|0)+1;e=Fx(b,e)|0}f=Sy(b,f)|0}c[d>>2]=j;l=k;return i|0}function gw(a){a=a|0;var b=0,c=0;c=iw()|0;b=Ry(a)|0;while(1){if(!b)break;nw(c,b);b=Sy(a,b)|0}return c|0}function hw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=c[(c[b+16>>2]|0)+236>>2]|0;p=m<<2;o=uH(p)|0;p=uH(p)|0;i=0;l=Ix(a,b)|0;n=0;f=0;while(1){if(!l)break;e=c[l>>2]&3;g=c[((e|0)==2?l:l+-48|0)+40>>2]|0;if((g|0)==(b|0))g=c[((e|0)==3?l:l+48|0)+40>>2]|0;h=0;k=Ix(a,b)|0;j=i;while(1){if(!k)break;if((k|0)!=(l|0)){i=c[k>>2]&3;e=c[((i|0)==2?k:k+-48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((i|0)==3?k:k+48|0)+40>>2]|0;i=Qx(a,g,e,0,0)|0;if(i)if(g>>>0>>0){e=j+1|0;h=i+16|0;i=c[(c[h>>2]|0)+116>>2]|0;if(!i)h=1;else{cz(d,i)|0;c[(c[h>>2]|0)+116>>2]=0;h=1}}else{h=1;e=j}else e=j}else e=j;k=Jx(a,k,b)|0;j=e}if(!h){c[p+(n<<2)>>2]=g;e=n+1|0}else{c[o+(f<<2)>>2]=g;e=n;f=f+1|0}i=j;l=Jx(a,l,b)|0;n=e}e=m+-1-i|0;a:do if((e|0)>0){if((e|0)<(n|0))g=0;else{if((e|0)!=(n|0))break;f=c[o>>2]|0;g=f+16|0;e=0;while(1){if((e|0)>=(n|0))break a;m=c[p+(e<<2)>>2]|0;zz(Qx(a,f,m,0,1)|0,134378,176,1)|0;d=(c[g>>2]|0)+236|0;c[d>>2]=(c[d>>2]|0)+1;m=(c[m+16>>2]|0)+236|0;c[m>>2]=(c[m>>2]|0)+1;e=e+1|0}}while(1){if((g|0)>=(n|0)){f=2;break}f=g|1;if((f|0)>=(n|0)){f=2;break}d=c[p+(g<<2)>>2]|0;m=c[p+(f<<2)>>2]|0;zz(Qx(a,d,m,0,1)|0,134378,176,1)|0;d=(c[d+16>>2]|0)+236|0;c[d>>2]=(c[d>>2]|0)+1;m=(c[m+16>>2]|0)+236|0;c[m>>2]=(c[m>>2]|0)+1;g=g+2|0;e=e+-1|0}while(1){if((e|0)<=0)break a;m=c[p>>2]|0;n=c[p+(f<<2)>>2]|0;zz(Qx(a,m,n,0,1)|0,134378,176,1)|0;m=(c[m+16>>2]|0)+236|0;c[m>>2]=(c[m>>2]|0)+1;n=(c[n+16>>2]|0)+236|0;c[n>>2]=(c[n>>2]|0)+1;f=f+1|0;e=e+-1|0}}while(0);C_(p);C_(o);return}function iw(){return Bw(18136,c[4555]|0)|0}function jw(a,b,d){a=a|0;b=b|0;d=d|0;d=uH(16)|0;c[d+12>>2]=0;c[d+8>>2]=c[b+8>>2];return d|0}function kw(a,b,c){a=a|0;b=b|0;c=c|0;C_(b);return}function lw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b>>2]|0;e=c[d>>2]|0;return ((b|0)<(e|0)?-1:(b|0)>(e|0)&1)|0}function mw(a){a=a|0;xw(a)|0;return}function nw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;f=d;e=b+16|0;c[f+8>>2]=c[(c[e>>2]|0)+236>>2];a=(nb[c[a>>2]&63](a,f,1)|0)+12|0;c[(c[e>>2]|0)+164>>2]=c[a>>2];c[a>>2]=b;l=d;return}function ow(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=b+16|0;c[g+8>>2]=c[(c[f>>2]|0)+236>>2];g=nb[c[a>>2]&63](a,g,4)|0;if(!g)qa(93240,93243,107,93253);e=g+12|0;d=c[e>>2]|0;if((d|0)==(b|0)){b=c[(c[f>>2]|0)+164>>2]|0;c[e>>2]=b;if(!b)nb[c[a>>2]&63](a,g,2)|0}else{do{a=(c[d+16>>2]|0)+164|0;d=c[a>>2]|0;e=(d|0)!=0}while(e&(d|0)!=(b|0));if(e)c[a>>2]=c[(c[d+16>>2]|0)+164>>2]}l=h;return}function pw(a){a=a|0;var b=0,d=0,e=0,f=0;d=nb[c[a>>2]&63](a,0,128)|0;if(d){f=d+12|0;b=c[f>>2]|0;e=c[(c[b+16>>2]|0)+164>>2]|0;c[f>>2]=e;if(!e)nb[c[a>>2]&63](a,d,2)|0}else b=0;return b|0}function qw(){return Bw(18172,c[4555]|0)|0}function rw(a,b,d){a=a|0;b=b|0;d=d|0;d=uH(12)|0;c[d+8>>2]=c[b+8>>2];return d|0}function sw(a,b,c){a=a|0;b=b|0;c=c|0;C_(b);return}function tw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b>>2]|0;e=c[d>>2]|0;return (b>>>0>e>>>0?1:(b>>>0>>0)<<31>>31)|0}function uw(a){a=a|0;xw(a)|0;return}function vw(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e+8>>2]=b;nb[c[a>>2]&63](a,e,1)|0;l=d;return}function ww(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e+8>>2]=b;nb[c[a>>2]&63](a,e,2)|0;l=d;return}function xw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;do if((a|0)!=0?(c[a+24>>2]|0)<=0:0){h=c[a+4>>2]|0;g=h+32|0;b=c[g>>2]|0;if(b){b=ob[b&127](a,2,0,h)|0;if((b|0)<0){b=-1;break}}else b=0;if(c[a+28>>2]|0)Gw(a,0)|0;f=(b|0)==0;if(f){nb[c[c[a+16>>2]>>2]&63](a,0,64)|0;if((Dw(a)|0)>0){b=-1;break}d=a+8|0;b=c[d>>2]|0;if((c[b+12>>2]|0)>0){e=a+12|0;ob[c[e>>2]&127](a,c[b+8>>2]|0,0,h)|0;b=c[d>>2]|0}else e=a+12|0;ob[c[e>>2]&127](a,b,0,h)|0}b=c[a+20>>2]|0;if(b){if(f&(b|0)==1)ob[c[a+12>>2]&127](a,a,0,h)|0}else C_(a);b=c[g>>2]|0;if(!b)b=0;else{ob[b&127](a,6,0,h)|0;b=0}}else b=-1;while(0);return b|0}function yw(a){a=a|0;var b=0,d=0,e=0;e=a+8|0;b=c[e>>2]|0;d=c[b>>2]|0;a:do if(!(d&12)){if(!(d&3)){d=b+8|0;a=c[d>>2]|0;c[d>>2]=0;break}a=zw(a)|0;d=c[e>>2]|0;b=c[d+8>>2]|0;d=b+(c[d+12>>2]<<2)|0;while(1){if(b>>>0>=d>>>0)break a;c[b>>2]=0;b=b+4|0}}else a=c[b+4>>2]|0;while(0);e=c[e>>2]|0;c[e>>2]=c[e>>2]&-4097;c[e+16>>2]=0;c[e+4>>2]=0;return a|0}function zw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+8|0;a=c[g>>2]|0;b=c[a>>2]|0;if(!(b&4096)){a:do if(!(b&3)){if(b&112|0){a=c[a+8>>2]|0;break}a=c[a+4>>2]|0;if(!a)a=0;else{while(1){b=a+4|0;d=c[b>>2]|0;if(!d){e=a;break}c[b>>2]=c[d>>2];c[d>>2]=a;a=d}while(1){b=c[e>>2]|0;if(!b)break a;d=c[b+4>>2]|0;if(!d){e=b;continue}while(1){c[b+4>>2]=c[d>>2];c[d>>2]=b;b=c[d+4>>2]|0;if(!b)break;else{f=d;d=b;b=f}}c[e>>2]=d;e=d}}}else{e=c[a+8>>2]|0;f=e+(c[a+12>>2]<<2)|0;b=0;a=0;while(1){if(e>>>0>=f>>>0)break a;d=c[e>>2]|0;if(d){if(!b){b=d;a=d}else c[b>>2]=d;while(1){d=c[b>>2]|0;if(!d)break;else b=d}c[e>>2]=b}e=e+4|0}}while(0);g=c[g>>2]|0;c[g+4>>2]=a;c[g>>2]=c[g>>2]|4096}else a=c[a+4>>2]|0;return a|0}function Aw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=a+8|0;if(c[c[s>>2]>>2]&4096|0)Cw(a,0)|0;r=c[a+4>>2]|0;m=c[r>>2]|0;n=c[r+4>>2]|0;q=r+8|0;u=c[q>>2]|0;o=c[r+20>>2]|0;p=a+20|0;f=c[p>>2]&-32769;c[p>>2]=f;a:do if(!b){if(d&384|0){f=c[s>>2]|0;e=c[f+8>>2]|0;if(!e){e=0;break}if(d&256){e=c[e+4>>2]|0;c[f+4>>2]=e;if(!e){e=0;break}}else c[f+4>>2]=e;if((u|0)<0){e=c[e+8>>2]|0;break}else{e=e+(0-u)|0;break}}if(d&4098|0){e=c[s>>2]|0;if(c[e>>2]&144|0){e=0;break}e=c[e+8>>2]|0;if(!e){e=0;break}else{h=e;t=84;break}}if(!(d&64))e=0;else{i=r+16|0;b:do if((c[i>>2]|0)!=0|(u|0)<0){j=a+12|0;k=(u|0)<0;f=0-u|0;e=c[(c[s>>2]|0)+8>>2]|0;while(1){if(!e)break b;g=c[e>>2]|0;h=c[i>>2]|0;if(h|0){if(k)b=c[e+8>>2]|0;else b=e+f|0;vb[h&127](a,b,r)}if((c[q>>2]|0)>=0){e=g;continue}ob[c[j>>2]&127](a,e,0,r)|0;e=g}}while(0);e=c[s>>2]|0;c[e+4>>2]=0;c[e+8>>2]=0;c[(c[s>>2]|0)+16>>2]=0;e=0}}else{if(d&2049|0){g=r+12|0;e=c[g>>2]|0;h=(d&1|0)==0;if(!(h|(e|0)==0)){e=nb[e&63](a,b,r)|0;if(!e){e=0;break}else f=e}else f=b;do if((u|0)>-1)h=f+u|0;else{e=ob[c[a+12>>2]&127](a,0,12,r)|0;if(e|0){c[e+8>>2]=f;h=e;break}if(!(c[g>>2]|0)){e=0;break a}e=c[r+16>>2]|0;if(h|(e|0)==0){e=0;break a}vb[e&127](a,f,r);e=0;break a}while(0);g=c[s>>2]|0;e=c[g>>2]|0;do if(!(e&128)){if(!(e&16))if(!(e&32)){t=51;break}else{t=48;break}f=c[g+4>>2]|0;e=(f|0)!=0;if(!(d&8192)){if(!e){t=48;break}if((f|0)==(c[g+8>>2]|0)){t=48;break}r=f+4|0;a=c[r>>2]|0;c[h+4>>2]=a;c[a>>2]=h;c[h>>2]=f;c[r>>2]=h;break}else{if(!e){t=51;break}e=c[f>>2]|0;if(!e){t=51;break}c[h>>2]=e;c[e+4>>2]=h;c[h+4>>2]=f;c[f>>2]=h;break}}else if(!(d&8192))t=48;else t=51;while(0);if((t|0)==48){e=c[g+8>>2]|0;c[h>>2]=e;if(!e)e=h;else c[h+4>>2]=c[e+4>>2];c[e+4>>2]=h;c[(c[s>>2]|0)+8>>2]=h}else if((t|0)==51){f=g+8|0;e=c[f>>2]|0;if(!e){c[f>>2]=h;e=h}else{r=e+4|0;c[c[r>>2]>>2]=h;c[h+4>>2]=c[r>>2]}c[e+4>>2]=h;c[h>>2]=0}e=c[s>>2]|0;f=e+16|0;g=c[f>>2]|0;if((g|0)>-1)c[f>>2]=g+1;c[e+4>>2]=h;if((u|0)<0){e=c[h+8>>2]|0;break}else{e=h+(0-u)|0;break}}h=c[s>>2]|0;do if(!(d&512)){e=c[h+4>>2]|0;if(e|0){if((u|0)<0)g=c[e+8>>2]|0;else g=e+(0-u)|0;if((g|0)==(b|0))break}e=b+m|0;if((n|0)<0){b=c[e>>2]|0;t=68}else{b=e;t=68}}else t=68;while(0);if((t|0)==68){g=(u|0)<0;i=(n|0)<0;j=(o|0)==0;k=(n|0)<1;l=0-u|0;e=h+8|0;do{e=c[e>>2]|0;if(!e){e=0;break a}if(g)f=c[e+8>>2]|0;else f=e+l|0;f=f+m|0;if(i)f=c[f>>2]|0;do if(j)if(k){f=a$(b,f)|0;break}else{f=K0(b,f,n)|0;break}else f=ob[o&127](a,b,f,r)|0;while(0)}while((f|0)!=0);f=c[p>>2]|0}c[p>>2]=f|32768;if(!(d&4098)){do if(!(d&8)){f=c[s>>2]|0;if(!(d&16)){c[f+4>>2]=e;break}if((e|0)==(c[f+8>>2]|0)){c[f+4>>2]=0;e=0;break a}else{e=e+4|0;t=108;break}}else{f=c[s>>2]|0;t=108}while(0);if((t|0)==108){e=c[e>>2]|0;c[f+4>>2]=e;if(!e){e=0;break}}if((u|0)<0){e=c[e+8>>2]|0;break}else{e=e+(0-u)|0;break}}else{h=e;t=84}}while(0);if((t|0)==84){e=c[h>>2]|0;if(e){c[e+4>>2]=c[h+4>>2];e=c[h>>2]|0}f=(c[s>>2]|0)+8|0;g=c[f>>2]|0;if((h|0)==(g|0)){c[f>>2]=e;e=c[(c[s>>2]|0)+8>>2]|0;if(e|0)c[e+4>>2]=c[h+4>>2]}else{f=h+4|0;c[c[f>>2]>>2]=e;e=g+4|0;if((h|0)==(c[e>>2]|0))c[e>>2]=c[f>>2]}e=c[s>>2]|0;f=e+4|0;if((h|0)==(c[f>>2]|0))g=c[h>>2]|0;else g=0;c[f>>2]=g;t=e+16|0;c[t>>2]=(c[t>>2]|0)+-1;if((u|0)<0)e=c[h+8>>2]|0;else e=h+(0-u)|0;f=c[r+16>>2]|0;if(!((d&2|0)==0|(f|0)==0))vb[f&127](a,e,r);if((c[q>>2]|0)<0)ob[c[a+12>>2]&127](a,h,0,r)|0}return e|0}function Bw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;a:do if((a|0)!=0&(b|0)!=0?(f=B_(40)|0,(f|0)!=0):0){c[f>>2]=0;c[f+16>>2]=0;c[f+4>>2]=0;Jw(f,a,0)|0;d=f+20|0;i=a+32|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;d=c[i>>2]|0;do if(d){c[g>>2]=0;d=ob[d&127](f,1,g,a)|0;if((d|0)>=0)if(d){e=c[g>>2]|0;if(e|0)if(!(c[b+4>>2]&c[e>>2])){d=f;h=12;break}else{d=f;break}d=a+28|0;if(!(c[d>>2]|0)){d=f;h=12}else{C_(f);e=ob[c[d>>2]&127](0,0,40,a)|0;if(!e){d=0;break a}c[e>>2]=0;c[e+16>>2]=0;c[e+4>>2]=0;Jw(e,a,0)|0;c[e+20>>2]=1;c[e+24>>2]=0;c[e+32>>2]=0;c[e+28>>2]=0;d=e;f=e;h=11}}else{d=f;h=11}else{d=f;h=12}}else{d=f;h=11}while(0);if((h|0)==11){e=ob[c[d+12>>2]&127](d,0,28,a)|0;c[g>>2]=e;if(!e){d=f;h=12}else{c[e>>2]=c[b+4>>2];g=e+4|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0}}if((h|0)==12){C_(d);d=0;break}c[d+8>>2]=e;c[d>>2]=c[b>>2];c[d+16>>2]=b;e=c[i>>2]|0;if(e)ob[e&127](d,5,f,a)|0}else d=0;while(0);l=j;return d|0}function Cw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=c[c[a+16>>2]>>2]|0;j=a+8|0;g=c[j>>2]|0;h=c[g>>2]|0;d=h&4096;if(!b)if(!d)b=-1;else{e=d;b=c[g+4>>2]|0;i=5}else if(!(c[g+16>>2]|0)){e=0;i=5}else b=-1;a:do if((i|0)==5){c[g>>2]=h&-4097;if(!(h&3)){d=g+4|0;if(!(h&12)){c[d>>2]=0;d=g+8|0}c[d>>2]=b;if(e|0){b=0;break}c[(c[j>>2]|0)+16>>2]=-1;b=0;break}c[g+4>>2]=0;if(!e){c[g+16>>2]=0;while(1){if(!b){b=0;break a}j=c[b>>2]|0;nb[f&63](a,b,32)|0;b=j}}e=c[g+8>>2]|0;a=e+(c[g+12>>2]<<2)|0;while(1){if(e>>>0>=a>>>0){b=0;break a}d=c[e>>2]|0;if(d){c[e>>2]=b;b=c[d>>2]|0;c[d>>2]=0}e=e+4|0}}while(0);return b|0}function Dw(a){a=a|0;var b=0,d=0,e=0;b=a+8|0;d=c[b>>2]|0;if(c[d>>2]&4096){Cw(a,0)|0;d=c[b>>2]|0}e=d+16|0;a=c[e>>2]|0;do if((a|0)<0){b=c[d>>2]|0;if(b&12|0){a=Ew(c[d+4>>2]|0)|0;c[e>>2]=a;break}if(b&112){a=0;b=d+8|0;while(1){b=c[b>>2]|0;if(!b)break;a=a+1|0}c[e>>2]=a}}while(0);return a|0}function Ew(a){a=a|0;var b=0;if(!a)return 0;else{b=Ew(c[a+4>>2]|0)|0;return b+1+(Ew(c[a>>2]|0)|0)|0}return 0}function Fw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=l;l=l+128|0;z=G+120|0;r=G;F=a+8|0;e=c[F>>2]|0;if(c[e>>2]&4096){Cw(a,0)|0;e=c[F>>2]|0}E=c[a+4>>2]|0;A=c[E>>2]|0;B=c[E+4>>2]|0;x=E+8|0;D=c[x>>2]|0;C=c[E+20>>2]|0;t=a+20|0;c[t>>2]=c[t>>2]&-32769;h=c[e+4>>2]|0;a:do if(!b)if((d&448|0)==0|(h|0)==0)e=0;else{if(!(d&64)){b:do if(!(d&256)){e=h;while(1){f=e+4|0;g=c[f>>2]|0;if(!g)break b;c[f>>2]=c[g>>2];c[g>>2]=e;e=g}}else{e=h;while(1){f=c[e>>2]|0;if(!f)break b;a=f+4|0;c[e>>2]=c[a>>2];c[a>>2]=e;e=f}}while(0);c[(c[F>>2]|0)+4>>2]=e;if((D|0)<0){e=c[e+8>>2]|0;break}else{e=e+(0-D)|0;break}}b=E+16|0;if((c[b>>2]|0)!=0|(D|0)<0){j=a+12|0;k=(D|0)<0;i=0-D|0;e=h;do{h=e;while(1){e=h+4|0;f=c[e>>2]|0;if(!f)break;c[e>>2]=c[f>>2];c[f>>2]=h;h=f}e=c[h>>2]|0;f=c[b>>2]|0;if(f|0){if(k)g=c[h+8>>2]|0;else g=h+i|0;vb[f&127](a,g,E)}if((c[x>>2]|0)<0)ob[c[j>>2]&127](a,h,0,E)|0}while((e|0)!=0);e=c[F>>2]|0}c[e+16>>2]=0;c[e+4>>2]=0;e=0}else{y=a+16|0;u=(d&4098|0)==0;c:do if(u|(c[(c[y>>2]|0)+4>>2]|0)!=8)v=45;else{k=(B|0)<0;e=b+A|0;if(k)e=c[e>>2]|0;i=(C|0)==0;j=(B|0)<1;g=nb[c[a>>2]&63](a,b,4)|0;while(1){if(!g){v=45;break c}f=g+A|0;if(k)f=c[f>>2]|0;do if(i)if(j){f=a$(e,f)|0;break}else{f=K0(e,f,B)|0;break}else f=ob[C&127](a,e,f,E)|0;while(0);if(f|0){v=45;break c}if((g|0)==(b|0))break;g=nb[c[a>>2]&63](a,g,8)|0}h=c[(c[F>>2]|0)+4>>2]|0;c[z>>2]=c[h+4>>2];c[z+4>>2]=c[h>>2];e=z;v=180}while(0);d:do if((v|0)==45){do if(!(d&2565)){if(d&32|0){if((D|0)<0)g=c[b+8>>2]|0;else g=b+(0-D)|0;e=g+A|0;if((B|0)<0)f=c[e>>2]|0;else f=e;if(!h){e=b;f=z;h=z;v=198;break}else{e=b;s=f;j=b;v=64;break}}if(h){if((D|0)<0)e=c[h+8>>2]|0;else e=h+(0-D)|0;if((e|0)!=(b|0)){f=b+A|0;if((B|0)<0){g=b;e=0;s=c[f>>2]|0;j=0;v=64}else{g=b;e=0;s=f;j=0;v=64}}else{e=0;g=b;f=z;k=z;j=0;v=141}}else{e=0;g=b;f=z;h=z;v=198}}else{if(!(d&512)){e=b+A|0;if((B|0)<0)f=c[e>>2]|0;else f=e}else f=b;if(!h){e=0;g=b;f=z;h=z;v=198}else{g=b;e=0;s=f;j=0;v=64}}while(0);e:do if((v|0)==64){f:do if((c[(c[y>>2]|0)+4>>2]|0)==4?(q=c[(c[F>>2]|0)+24>>2]|0,!((d&516|0)==0|(q|0)==0)):0){b=(D|0)<0;m=(B|0)<0;n=(C|0)==0;o=(B|0)<1;p=0-D|0;k=0;f=h;while(1){if((k|0)>=(q|0)){f=z;k=z;m=0;break}if(b)i=c[f+8>>2]|0;else i=f+p|0;i=i+A|0;if(m)i=c[i>>2]|0;do if(n)if(o){i=a$(s,i)|0;break}else{i=K0(s,i,B)|0;break}else i=ob[C&127](a,s,i,E)|0;while(0);if(!i){v=80;break}c[r+(k<<2)>>2]=i;f=c[((i|0)<0?f+4|0:f)>>2]|0;if(!f){e=0;break a}else k=k+1|0}if((v|0)==80)if(b){e=c[f+8>>2]|0;break a}else{e=f+p|0;break a}while(1){if((m|0)>=(q|0))break f;do if((c[r+(m<<2)>>2]|0)<0){i=h+4|0;b=c[i>>2]|0;if((c[r+((m|1)<<2)>>2]|0)<0){c[i>>2]=c[b>>2];c[b>>2]=h;c[f+4>>2]=b;f=b;h=k;i=b+4|0;break}else{c[k>>2]=b;c[f+4>>2]=h;f=h;h=b;i=b;break}}else{i=c[h>>2]|0;if((c[r+((m|1)<<2)>>2]|0)>0){p=i+4|0;c[h>>2]=c[p>>2];c[p>>2]=h;c[k>>2]=i;h=i;break}else{c[f+4>>2]=i;c[k>>2]=h;f=i;i=i+4|0;break}}while(0);k=h;m=m+2|0;h=c[i>>2]|0}}else{f=z;k=z}while(0);n=(D|0)<0;o=(B|0)<0;p=(C|0)!=0;q=(B|0)<1;r=0-D|0;i=h;g:while(1){h=i;while(1){if(n)i=c[h+8>>2]|0;else i=h+r|0;i=i+A|0;if(o)i=c[i>>2]|0;do if(!p)if(q){i=a$(s,i)|0;break}else{i=K0(s,i,B)|0;break}else i=ob[C&127](a,s,i,E)|0;while(0);if(!i){v=140;break g}if((i|0)>=0)break;b=h+4|0;m=c[b>>2]|0;if(!m){v=121;break g}if(n)i=c[m+8>>2]|0;else i=m+r|0;i=i+A|0;if(o)i=c[i>>2]|0;do if(!p)if(q){i=a$(s,i)|0;break}else{i=K0(s,i,B)|0;break}else i=ob[C&127](a,s,i,E)|0;while(0);if((i|0)>=0){v=118;break}c[b>>2]=c[m>>2];c[m>>2]=h;c[f+4>>2]=m;h=c[m+4>>2]|0;if(!h){f=m;h=k;v=198;break e}else f=m}if((v|0)==118){v=0;if(!i){v=119;break}c[k>>2]=m;c[f+4>>2]=h;i=c[m>>2]|0;if(!i){f=h;h=m;v=198;break e}else{f=h;k=m;continue}}b=c[h>>2]|0;if(!b){v=139;break}if(n)i=c[b+8>>2]|0;else i=b+r|0;i=i+A|0;if(o)i=c[i>>2]|0;do if(!p)if(q){i=a$(s,i)|0;break}else{i=K0(s,i,B)|0;break}else i=ob[C&127](a,s,i,E)|0;while(0);if((i|0)>0){i=b+4|0;c[h>>2]=c[i>>2];c[i>>2]=h;c[k>>2]=b;i=c[b>>2]|0;if(!i){h=b;v=198;break e}else{k=b;continue}}if(!i){v=137;break}c[f+4>>2]=b;c[k>>2]=h;i=c[b+4>>2]|0;if(!i){f=b;v=198;break e}else{f=b;k=h}}if((v|0)==119){c[f+4>>2]=h;f=h;h=m;v=141;break}else if((v|0)==121){c[f+4>>2]=h;f=h;h=k;v=198;break}else if((v|0)==137){c[k>>2]=h;k=h;h=b;v=141;break}else if((v|0)==139){c[k>>2]=h;v=198;break}else if((v|0)==140)if(!h){h=k;v=198;break}else{v=141;break}}while(0);do if((v|0)==141){c[t>>2]=c[t>>2]|32768;i=h+4|0;c[k>>2]=c[i>>2];c[f+4>>2]=c[h>>2];if(!(d&516)){if(d&8|0){c[i>>2]=c[z>>2];c[h>>2]=0;c[z>>2]=h;v=169;break}if(d&16|0){v=z+4|0;c[h>>2]=c[v>>2];c[i>>2]=0;c[v>>2]=h;v=175;break}if(!u){e=f;v=180;break d}if(d&2049|0){if(c[(c[y>>2]|0)+4>>2]&4|0){e=h;break}c[i>>2]=0;e=z+4|0;c[h>>2]=c[e>>2];c[e>>2]=h;e=h;v=205;break}if(!(d&32)){e=0;break a}if(!(c[(c[y>>2]|0)+4>>2]&4)){c[e+4>>2]=0;x=z+4|0;c[e>>2]=c[x>>2];c[x>>2]=j;e=(c[F>>2]|0)+16|0;c[e>>2]=(c[e>>2]|0)+1;e=h;break}e=c[E+16>>2]|0;if(e|0)vb[e&127](a,g,E);if((c[x>>2]|0)<0){ob[c[a+12>>2]&127](a,j,0,E)|0;e=h}else e=h}else e=h}else if((v|0)==198){c[f+4>>2]=0;c[h>>2]=0;if(!(d&8))if(!(d&16)){if(d&516|0){e=f;break d}if(!(d&2049)){if(!(d&32)){g=0;e=f;break d}x=(c[F>>2]|0)+16|0;c[x>>2]=(c[x>>2]|0)+1}else{e=0;v=205}}else v=175;else v=169}while(0);if((v|0)==169){h=z+4|0;e=c[h>>2]|0;if(!e){e=f;break}while(1){f=e+4|0;g=c[f>>2]|0;if(!g)break;c[f>>2]=c[g>>2];c[g>>2]=e;e=g}c[h>>2]=c[e>>2]}else if((v|0)==175){e=c[z>>2]|0;if(!e){e=f;break}while(1){f=c[e>>2]|0;if(!f)break;x=f+4|0;c[e>>2]=c[x>>2];c[x>>2]=e;e=f}c[z>>2]=c[e+4>>2]}else if((v|0)==205){i=E+12|0;h=c[i>>2]|0;j=(d&1|0)==0;if(!(j|(h|0)==0))g=nb[h&63](a,g,E)|0;do if(g){if((D|0)>-1){e=g+D|0;v=215;break}e=ob[c[a+12>>2]&127](a,0,12,E)|0;if(e|0){c[e+8>>2]=g;break}if((c[i>>2]|0)!=0?(w=c[E+16>>2]|0,!(j|(w|0)==0)):0){vb[w&127](a,g,E);v=215}else v=215}else v=215;while(0);if((v|0)==215)if(!e){e=f;break}f=(c[F>>2]|0)+16|0;g=c[f>>2]|0;if((g|0)>-1)c[f>>2]=g+1}c[e+4>>2]=c[z>>2];c[e>>2]=c[z+4>>2];h:do if(!((d&516|0)==0?1:(c[(c[y>>2]|0)+4>>2]&8|0)==0)){m=(D|0)<0;if(m)f=c[e+8>>2]|0;else f=e+(0-D)|0;n=(B|0)<0;f=f+A|0;if(n)f=c[f>>2]|0;j=(C|0)==0;k=(B|0)<1;b=0-D|0;while(1){i=e+4|0;g=c[i>>2]|0;if(!g)break h;while(1){h=c[g>>2]|0;if(!h)break;z=h+4|0;c[g>>2]=c[z>>2];c[z>>2]=g;g=h}c[i>>2]=g;if(m)h=c[g+8>>2]|0;else h=g+b|0;h=h+A|0;if(n)h=c[h>>2]|0;do if(j)if(k){h=a$(f,h)|0;break}else{h=K0(f,h,B)|0;break}else h=ob[C&127](a,f,h,E)|0;while(0);if(h|0)break h;c[i>>2]=c[g>>2];c[g>>2]=e;e=g}}while(0);c[(c[F>>2]|0)+4>>2]=e;if((D|0)<0){e=c[e+8>>2]|0;break a}else{e=e+(0-D)|0;break a}}while(0);if((v|0)==180){if((D|0)<0)g=c[h+8>>2]|0;else g=h+(0-D)|0;f=c[E+16>>2]|0;if(!((d&2|0)==0|(f|0)==0))vb[f&127](a,g,E);if((c[x>>2]|0)<0)ob[c[a+12>>2]&127](a,h,0,E)|0;a=(c[F>>2]|0)+16|0;E=c[a>>2]|0;c[a>>2]=(E|0)<1?-1:E+-1|0}do{f=e+4|0;e=c[f>>2]|0}while((e|0)!=0);c[f>>2]=c[z>>2];c[(c[F>>2]|0)+4>>2]=c[z+4>>2];e=d&2|0?g:0}while(0);l=G;return e|0}function Gw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(c[c[a+8>>2]>>2]&4096|0)Cw(a,0)|0;f=(b|0)!=0;if(f){if(c[c[b+8>>2]>>2]&4096|0)Cw(b,0)|0;if((c[b+16>>2]|0)==(c[a+16>>2]|0)){d=b;e=7}else b=0}else{d=0;e=7}a:do if((e|0)==7){while(1){if(!d)break;if((d|0)==(a|0)){b=0;break a}d=c[d+28>>2]|0;e=7}d=a+28|0;e=c[d>>2]|0;if(e|0){g=e+24|0;c[g>>2]=(c[g>>2]|0)+-1}c[a+32>>2]=0;c[d>>2]=0;if(f){c[d>>2]=b;c[a>>2]=25;g=b+24|0;c[g>>2]=(c[g>>2]|0)+1;break}else{c[a>>2]=c[c[a+16>>2]>>2];b=e;break}}while(0);return b|0}function Hw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:do if(!(d&99)){if((d&516|0)==0?(e=c[(c[a+16>>2]|0)+4>>2]|0,!((d&384|0)!=0&(e&12|0)==0)):0){if(e&12|0){if(!(d&408)){e=0;break}o=(d&136|0)!=0;p=(d&272|0)!=0;l=0;f=0;e=0;n=a;while(1){if(!n)break;m=nb[c[c[n+16>>2]>>2]&63](n,b,d)|0;do if(!m)g=l;else{h=c[n+4>>2]|0;i=c[h+4>>2]|0;j=c[h+20>>2]|0;g=m+(c[h>>2]|0)|0;if((i|0)<0)k=c[g>>2]|0;else k=g;if(e|0){do if(!j)if((i|0)<1){g=a$(k,f)|0;break}else{g=K0(k,f,i)|0;break}else g=ob[j&127](n,k,f,h)|0;while(0);if(!(o&(g|0)<0|p&(g|0)>0)){g=l;break}}g=n;f=k;e=m}while(0);l=g;n=c[n+28>>2]|0}c[a+32>>2]=l;break}if(!(d&24)){e=0;break}j=a+32|0;f=c[j>>2]|0;if(f){e=c[(c[f+4>>2]|0)+8>>2]|0;g=c[(c[f+8>>2]|0)+4>>2]|0;if((e|0)<0)e=c[g+8>>2]|0;else e=g+(0-e)|0;if((e|0)==(b|0))e=b;else{f=a;h=32}}else{f=a;h=32}do if((h|0)==32){while(1){if(!f){h=33;break}e=nb[c[c[f+16>>2]>>2]&63](f,b,4)|0;if(e|0){h=36;break}f=c[f+28>>2]|0;h=32}if((h|0)==33){c[j>>2]=0;e=0;break a}else if((h|0)==36){c[j>>2]=f;break}}while(0);i=(d<<4&128^128)+128|0;e=nb[c[c[f+16>>2]>>2]&63](f,e,d)|0;while(1){h=f+16|0;while(1){if(!e)break;else g=a;while(1){if((g|0)==(f|0))break a;if(nb[c[c[g+16>>2]>>2]&63](g,e,4)|0)break;g=c[g+28>>2]|0}e=nb[c[c[h>>2]>>2]&63](f,e,d)|0}f=c[f+28>>2]|0;c[j>>2]=f;if(!f){e=0;break a}e=nb[c[c[f+16>>2]>>2]&63](f,0,i)|0}}else f=a;while(1){if(!f){f=0;e=0;break}e=nb[c[c[f+16>>2]>>2]&63](f,b,d)|0;if(e|0)break;f=c[f+28>>2]|0}c[a+32>>2]=f}else e=nb[c[c[a+16>>2]>>2]&63](a,b,d)|0;while(0);return e|0}function Iw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=a+32|0;f=nb[c[a>>2]&63](a,0,128)|0;do{if(!f){e=0;break}h=c[g>>2]|0;e=f;f=nb[c[a>>2]&63](a,f,8)|0;e=nb[b&63]((h|0)==0?a:h,e,d)|0}while((e|0)>=0);return e|0}function Jw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=a+4|0;n=c[f>>2]|0;a:do if(n)if(b){m=c[c[a+16>>2]>>2]|0;g=a+8|0;if(c[c[g>>2]>>2]&4096|0)Cw(a,0)|0;e=c[n+32>>2]|0;if(e|0?(ob[e&127](a,3,b,n)|0)<0:0){b=0;break}c[f>>2]=b;e=c[b+28>>2]|0;c[a+12>>2]=(e|0)==0?52:e;e=c[c[g>>2]>>2]|0;if(!(e&112)){do if(!(e&2))if(!(e&3))if(!(d&1))break;else{b=n;break a}else if((d&3|0)==3){b=n;break a}else break;else if(d&2|0){b=n;break a}while(0);h=zw(a)|0;e=c[g>>2]|0;l=c[e>>2]|0;c[e>>2]=l&-4097;c[e+4>>2]=0;c[e+16>>2]=0;b:do if(l&3|0){l=c[e+8>>2]|0;f=l+(c[e+12>>2]<<2)|0;e=l;while(1){if(e>>>0>=f>>>0)break b;c[e>>2]=0;e=e+4|0}}while(0);i=(d&2|0)==0;j=b+8|0;k=b+4|0;l=b+24|0;while(1){if(!h){b=n;break a}d=c[h>>2]|0;if(i){e=c[j>>2]|0;if((e|0)<0)e=c[h+8>>2]|0;else e=h+(0-e)|0;g=c[k>>2]|0;e=e+(c[b>>2]|0)|0;if((g|0)<0)e=c[e>>2]|0;f=c[l>>2]|0;if(!f)e=Lw(0,e,g)|0;else e=nb[f&63](a,e,b)|0;c[h+4>>2]=e}nb[m&63](a,h,32)|0;h=d}}else b=n}else b=n;else{c[f>>2]=b;n=c[b+28>>2]|0;c[a+12>>2]=(n|0)==0?52:n}while(0);return b|0}function Kw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=(c|0)==0;do if(!b)if(a)a=0;else a=B_(c)|0;else if(a){C_(b);a=0;break}else{a=E_(b,c)|0;break}while(0);return a|0}function Lw(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0;g=c;if((e|0)>=1){h=c+e+-1|0;g=(h>>>0>>0?c:h)+(1-g)&-2;f=c;while(1){if(f>>>0>=h>>>0)break;b=O(((d[f>>0]|0)<<8)+b+(d[f+1>>0]|0)|0,17109811)|0;f=f+2|0}f=c+g|0;if(f>>>0>h>>>0)c=e;else{c=e;b=O(((d[f>>0]|0)<<8)+b|0,17109811)|0}}else{while(1){f=a[c>>0]|0;if(!(f<<24>>24))break;h=a[c+1>>0]|0;e=O(((f&255)<<8)+b+(h&255)|0,17109811)|0;b=e;c=c+(h<<24>>24?2:1)|0}c=c-g|0}return O(b+c|0,17109811)|0}function Mw(a){a=a|0;var b=0;b=c[46164]|0;c[46164]=a;return b|0}function Nw(a){a=a|0;var b=0;b=c[46165]|0;c[46165]=a;return b|0}function Ow(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=Pw(a,b,f)|0;l=e;return d|0}function Pw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=l;l=l+16|0;e=g;f=(a|0)==3;h=f?c[46167]|0:(a|0)==2?1:a;c[46167]=h;i=c[46168]|0;c[46168]=i>>>0>h>>>0?i:h;do if(h>>>0<(c[46165]|0)>>>0){a=c[46166]|0;if(!a){a=k3()|0;c[46166]=a;if(!a){a=1;break}}if(!f){n3(a)|0;a=c[46166]|0}q0(a,b,d)|0;a=0}else{if(c[46164]|0){Qw(a,b,d);a=0;break}if(f)a=c[15686]|0;else{i=c[15686]|0;c[e>>2]=(a|0)==1?93267:93273;f1(i,93281,e)|0;a=i}q0(a,b,d)|0;a=0}while(0);l=g;return a|0}function Qw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((c[46169]|0)==0?(f=B_(c[4564]|0)|0,c[46169]=f,(f|0)==0):0)C1(93286,c[15686]|0)|0;else e=4;do if((e|0)==4){if((a|0)!=3){kb[c[46164]&63]((a|0)==1?93267:93273)|0;kb[c[46164]&63](93945)|0}while(1){a=p0(c[46169]|0,c[4564]|0,b,d)|0;e=c[4564]|0;if((a|0)>-1&(a|0)<(e|0)){e=7;break}e=e<<1;f=a+1|0;f=(e|0)>(f|0)?e:f;c[4564]=f;if(!(E_(c[46169]|0,f)|0)){e=9;break}}if((e|0)==7){kb[c[46164]&63](c[46169]|0)|0;break}else if((e|0)==9){C1(93286,c[15686]|0)|0;break}}while(0);return}function Rw(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;Pw(1,a,e)|0;l=d;return}function Sw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!e){e=(d|0)==0?1024:d;d=e;e=B_(e)|0;f=1}else f=0;c[b+12>>2]=f;c[b>>2]=e;c[b+8>>2]=e+d;c[b+4>>2]=e;a[e>>0]=0;return}function Tw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;f=c[a>>2]|0;g=(c[h>>2]|0)-f|0;e=g<<1;g=g+b|0;e=g>>>0>e>>>0?g:e;g=a+4|0;b=f;f=(c[g>>2]|0)-f|0;d=a+12|0;if(!(c[d>>2]|0)){i=B_(e)|0;E3(i|0,b|0,f|0)|0;c[d>>2]=1;b=i}else b=E_(b,e)|0;c[a>>2]=b;c[g>>2]=b+f;c[h>>2]=b+e;return 0}function Uw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+4|0;e=c[f>>2]|0;if((e+d|0)>>>0>(c[a+8>>2]|0)>>>0){Tw(a,d)|0;e=c[f>>2]|0}E3(e|0,b|0,d|0)|0;c[f>>2]=(c[f>>2]|0)+d;return d|0}function Vw(a,b){a=a|0;b=b|0;return Uw(a,b,V_(b)|0)|0}function Ww(a){a=a|0;if(c[a+12>>2]|0)C_(c[a>>2]|0);return}function Xw(a){a=a|0;var b=0,e=0;b=a+4|0;e=c[b>>2]|0;if(e>>>0>(c[a>>2]|0)>>>0){c[b>>2]=e+-1;a=d[e>>0]|0}else a=-1;return a|0}function Yw(a,b,d){a=a|0;b=b|0;d=d|0;Pz(c[46171]|0,c[b+8>>2]|0)|0;Pz(c[46171]|0,c[b+12>>2]|0)|0;My(c[46171]|0,b);return}function Zw(a,b){a=a|0;b=b|0;var c=0;c=xz(a,93334,0)|0;if((b|0)!=0&(c|0)==0){_w(a);c=xz(a,93334,0)|0}return c|0}function _w(a){a=a|0;var b=0,c=0,d=0;d=ez(a)|0;iB(d,d,104,0,1)|0;c=Ry(d)|0;while(1){if(!c)break;ax(a,c);b=Dx(d,c)|0;while(1){if(!b)break;bx(a,b);b=Fx(d,b)|0}c=Sy(d,c)|0}return}function $w(b){b=b|0;var c=0;c=b+24|0;a[c>>0]=a[c>>0]|64;gx(b);c=xA(b)|0;dx((c|0)==0?b:c,b);return}function ax(a,b){a=a|0;b=b|0;var d=0;d=cx(b)|0;if(!((d|0)!=0?(c[d+8>>2]|0)!=0:0))dx(a,b);return}function bx(a,b){a=a|0;b=b|0;var d=0;d=cx(b)|0;if(!((d|0)!=0?(c[d+8>>2]|0)!=0:0))dx(a,b);return}function cx(a){a=a|0;return xz(a,93322,0)|0}function dx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=zz(b,93322,16,0)|0;f=ex(a,c[b>>2]&3)|0;e=d+8|0;a:do if(!(c[e>>2]|0)){a=ez(a)|0;c[e>>2]=ex(a,c[b>>2]&3)|0;a=fx(b)|0;d=d+12|0;c[d>>2]=Ly(dz(b)|0,((a|0)>4?a:4)<<2)|0;a=nb[c[f>>2]&63](f,0,128)|0;while(1){if(!a)break a;e=dz(b)|0;e=Nz(e,c[a+12>>2]|0)|0;c[(c[d>>2]|0)+(c[a+16>>2]<<2)>>2]=e;a=nb[c[f>>2]&63](f,a,8)|0}}while(0);return}function ex(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;a=Zw(a,0)|0;a:do if(!a)a=0;else switch(b|0){case 0:{a=c[a+16>>2]|0;break a}case 1:{a=c[a+8>>2]|0;break a}case 2:case 3:{a=c[a+12>>2]|0;break a}default:{c[d>>2]=b;Ow(1,93347,d)|0;a=0;break a}}while(0);l=e;return a|0}function fx(a){a=a|0;var b=0;b=ez(dz(a)|0)|0;a=ex(b,c[a>>2]&3)|0;if(!a)a=0;else a=Dw(a)|0;return a|0}function gx(a){a=a|0;var b=0,d=0,e=0,f=0;d=zz(a,93334,20,0)|0;e=d+8|0;c[e>>2]=BA(a,18260,c[4563]|0)|0;f=d+12|0;c[f>>2]=BA(a,18260,c[4563]|0)|0;d=d+16|0;c[d>>2]=BA(a,18260,c[4563]|0)|0;b=xA(a)|0;if(!b){b=c[46170]|0;if(!((b|0)==0|(b|0)==(a|0))){b=Zw(b,0)|0;hx(c[b+8>>2]|0,c[e>>2]|0,a,1);hx(c[b+12>>2]|0,c[f>>2]|0,a,2);hx(c[b+16>>2]|0,c[d>>2]|0,a,0)}}else{a=Zw(b,0)|0;Gw(c[e>>2]|0,c[a+8>>2]|0)|0;Gw(c[f>>2]|0,c[a+12>>2]|0)|0;Gw(c[d>>2]|0,c[a+16>>2]|0)|0}return}function hx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=nb[c[b>>2]&63](b,0,128)|0;while(1){if(!g)break;h=ix(e,c[g+8>>2]|0,c[g+12>>2]|0,c[g+16>>2]|0,f)|0;a[h+22>>0]=a[g+22>>0]|0;a[h+21>>0]=a[g+21>>0]|0;nb[c[d>>2]&63](d,h,1)|0;g=nb[c[b>>2]&63](b,g,8)|0}return}function ix(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=Ly(b,24)|0;a[h+20>>0]=g;c[h+8>>2]=Nz(b,d)|0;c[h+12>>2]=Nz(b,e)|0;c[h+16>>2]=f;return h|0}function jx(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+32|0;e=d;c[e+8>>2]=b;b=nb[c[a>>2]&63](a,e,4)|0;l=d;return b|0}function kx(a,b){a=a|0;b=b|0;var c=0;c=Gw(a,0)|0;b=jx(a,b)|0;Gw(a,c)|0;return b|0}function lx(a,b){a=a|0;b=b|0;a=cx(a)|0;if(!a)a=0;else a=jx(c[a+8>>2]|0,b)|0;return a|0}function mx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=l;l=l+16|0;g=h;if(!b){b=c[46170]|0;if(!b){a[g>>0]=a[18296]|0;a[g+1>>0]=a[18297]|0;a[g+2>>0]=a[18298]|0;a[g+3>>0]=a[18299]|0;b=Wx(0,g,0)|0;c[46170]=b}}if(!f)b=ox(b,d,e)|0;else b=nx(b,d,e,f)|0;l=h;return b|0}function nx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=ez(a)|0;Zw(a,1)|0;g=ex(a,b)|0;f=kx(g,d)|0;a:do if(!f){f=jx(g,d)|0;if(f|0){f=ix(a,d,e,c[f+16>>2]|0,b)|0;nb[c[g>>2]&63](g,f,1)|0;h=16;break}g=ex(i,b)|0;f=ix(a,d,e,Dw(g)|0,b)|0;nb[c[g>>2]&63](g,f,1)|0;switch(b|0){case 0:{iB(i,i,57,f,1)|0;h=16;break a}case 1:{d=Ry(i)|0;while(1){if(!d){h=16;break a}px(a,d,f);d=Sy(i,d)|0}}case 2:case 3:{g=Ry(i)|0;while(1){if(!g){h=16;break a}d=Dx(i,g)|0;while(1){if(!d)break;px(a,d,f);d=Fx(i,d)|0}g=Sy(i,g)|0}}default:break a}}else{h=f+12|0;Pz(a,c[h>>2]|0)|0;c[h>>2]=Nz(a,e)|0;h=16}while(0);if((h|0)==16)if((b|0)==0&(f|0)!=0)qx(a,f,e)|0;hz(a,a,f);return f|0}function ox(a,b,c){a=a|0;b=b|0;c=c|0;a=ex(a,b)|0;if(!a)a=0;else a=jx(a,c)|0;return a|0}function px(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;b=cx(b)|0;f=d+16|0;e=c[f>>2]|0;if((e|0)>3){g=c[a+64>>2]|0;b=b+12|0;e=e<<2;c[b>>2]=ob[c[(c[g>>2]|0)+8>>2]&127](c[g+12>>2]|0,c[b>>2]|0,e,e+4|0)|0}else b=b+12|0;g=Nz(a,c[d+12>>2]|0)|0;c[(c[b>>2]|0)+(c[f>>2]<<2)>>2]=g;return}function qx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=dz(a)|0;g=(cx(a)|0)+12|0;i=b+16|0;Pz(h,c[(c[g>>2]|0)+(c[i>>2]<<2)>>2]|0)|0;f=Nz(h,d)|0;c[(c[g>>2]|0)+(c[i>>2]<<2)>>2]=f;do if(!(c[a>>2]&3)){e=c[(Zw(h,0)|0)+16>>2]|0;f=b+8|0;g=kx(e,c[f>>2]|0)|0;if(!g){i=ix(h,c[f>>2]|0,d,c[i>>2]|0,c[a>>2]&3)|0;nb[c[e>>2]&63](e,i,1)|0;break}else{i=g+12|0;Pz(h,c[i>>2]|0)|0;c[i>>2]=Nz(h,d)|0;break}}while(0);hz(h,a,b);return 0}function rx(a,b,d){a=a|0;b=b|0;d=d|0;a=ex(a,b)|0;do if(a){b=c[a>>2]|0;if(!d){a=nb[b&63](a,0,128)|0;break}else{a=nb[b&63](a,d,8)|0;break}}else a=0;while(0);return a|0}function sx(a){a=a|0;var b=0;c[46171]=a;b=cx(a)|0;if(b|0){tx(a,b);Bz(a,c[b>>2]|0)|0}b=Zw(a,0)|0;if(b)if(((DA(a,c[b+8>>2]|0)|0)==0?(DA(a,c[b+12>>2]|0)|0)==0:0)?(DA(a,c[b+16>>2]|0)|0)==0:0){Bz(a,c[b>>2]|0)|0;b=0}else b=1;else b=0;return b|0}function tx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=dz(a)|0;e=fx(a)|0;b=b+12|0;a=0;while(1){d=c[b>>2]|0;if((a|0)>=(e|0))break;Pz(f,c[d+(a<<2)>>2]|0)|0;a=a+1|0}My(f,d);return}function ux(a){a=a|0;var b=0;b=cx(a)|0;if(b|0){tx(a,b);Bz(a,93322)|0}return}function vx(a){a=a|0;var b=0;b=cx(a)|0;if(b|0){tx(a,b);Bz(a,93322)|0}return}function wx(a,b){a=a|0;b=b|0;b=lx(a,b)|0;if(!b)b=0;else{a=c[(cx(a)|0)+12>>2]|0;b=c[a+(c[b+16>>2]<<2)>>2]|0}return b|0}function xx(a,b){a=a|0;b=b|0;a=c[(cx(a)|0)+12>>2]|0;return c[a+(c[b+16>>2]<<2)>>2]|0}function yx(a,b,c){a=a|0;b=b|0;c=c|0;b=lx(a,b)|0;if(!b)b=-1;else{qx(a,b,c)|0;b=0}return b|0}function zx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=dz(a)|0;f=mx(f,c[a>>2]&3,b,0)|0;if(!f){f=dz(a)|0;f=mx(f,c[a>>2]&3,b,e)|0}qx(a,f,d)|0;return 0}function Ax(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=dz(a)|0;f=c[a>>2]|0;a:do if(!((c[b>>2]^f)&3)){d=1;e=0;while(1){e=rx(g,f&3,e)|0;if(!e)break a;d=lx(b,c[e+8>>2]|0)|0;if(!d){d=1;break a}f=xx(a,e)|0;qx(b,d,f)|0;if(Qz(f)|0)Rz(xx(b,d)|0);d=0;f=c[a>>2]|0}}else d=1;while(0);return d|0}function Bx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;a=c[b+40>>2]|0;f=c[d+40>>2]|0;if((a|0)==(f|0)){e=(c[b>>2]|0)>>>4;a=(c[d>>2]|0)>>>4;if(e>>>0>=a>>>0)if(e>>>0>a>>>0)a=1;else g=6;else a=-1}else{e=(c[a>>2]|0)>>>4;a=(c[f>>2]|0)>>>4;if(e>>>0>=a>>>0)if(e>>>0>a>>>0)a=1;else g=6;else a=-1}if((g|0)==6)a=0;return a|0}function Cx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;a=(c[b+40>>2]|0)+8|0;g=c[a>>2]|0;a=c[a+4>>2]|0;f=(c[d+40>>2]|0)+8|0;e=c[f>>2]|0;f=c[f+4>>2]|0;do if(!(a>>>0>>0|(a|0)==(f|0)&g>>>0>>0))if(a>>>0>f>>>0|(a|0)==(f|0)&g>>>0>e>>>0)a=1;else{e=b+8|0;a=c[e>>2]|0;e=c[e+4>>2]|0;if(!((a|0)==0&(e|0)==0)?(i=d+8|0,h=c[i>>2]|0,i=c[i+4>>2]|0,!((h|0)==0&(i|0)==0)):0){if(e>>>0>>0|(e|0)==(i|0)&a>>>0>>0){a=-1;break}if(e>>>0>i>>>0|(e|0)==(i|0)&a>>>0>h>>>0){a=1;break}}a=0}else a=-1;while(0);return a|0}function Dx(a,b){a=a|0;b=b|0;var d=0;b=Ex(a,b)|0;if(!b)b=0;else{d=a+44|0;a=b+32|0;Cw(c[d>>2]|0,c[a>>2]|0)|0;b=c[d>>2]|0;b=nb[c[b>>2]&63](b,0,128)|0;c[a>>2]=yw(c[d>>2]|0)|0}return b|0}function Ex(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+48|0;d=e;if((c[b+24>>2]|0)==(a|0))a=b+28|0;else{c[d+16>>2]=b;a=c[a+40>>2]|0;a=nb[c[a>>2]&63](a,d,4)|0}l=e;return a|0}function Fx(a,b){a=a|0;b=b|0;var d=0,e=0;d=Ex(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;if(!d)a=0;else{e=a+44|0;d=d+32|0;Cw(c[e>>2]|0,c[d>>2]|0)|0;a=c[e>>2]|0;a=nb[c[a>>2]&63](a,b,8)|0;c[d>>2]=yw(c[e>>2]|0)|0}return a|0}function Gx(a,b){a=a|0;b=b|0;var d=0;b=Ex(a,b)|0;if(!b)b=0;else{d=a+44|0;a=b+28|0;Cw(c[d>>2]|0,c[a>>2]|0)|0;b=c[d>>2]|0;b=nb[c[b>>2]&63](b,0,128)|0;c[a>>2]=yw(c[d>>2]|0)|0}return b|0}function Hx(a,b){a=a|0;b=b|0;var d=0,e=0;d=Ex(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;if(!d)a=0;else{e=a+44|0;d=d+28|0;Cw(c[e>>2]|0,c[d>>2]|0)|0;a=c[e>>2]|0;a=nb[c[a>>2]&63](a,b,8)|0;c[d>>2]=yw(c[e>>2]|0)|0}return a|0}function Ix(a,b){a=a|0;b=b|0;var c=0;c=Dx(a,b)|0;if(!c)c=Gx(a,b)|0;return c|0}function Jx(a,b,d){a=a|0;b=b|0;d=d|0;a:do if((c[b>>2]&3|0)==2){b=Fx(a,b)|0;if(!b){b=0;do{if(!b)b=Gx(a,d)|0;else b=Hx(a,b)|0;if(!b){b=0;break a}}while((c[b+40>>2]|0)==(d|0))}}else do{b=Hx(a,b)|0;if(!b){b=0;break a}}while((c[b+40>>2]|0)==(d|0));while(0);return b|0}function Kx(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+32|0;f=h+16|0;g=h;if((fy(a)|0)!=0?(c[g>>2]=0,c[g+4>>2]=0,c[g+8>>2]=0,c[g+12>>2]=0,c[f>>2]=c[g>>2],c[f+4>>2]=c[g+4>>2],c[f+8>>2]=c[g+8>>2],c[f+12>>2]=c[g+12>>2],(Ox(a,b,e,f)|0)!=0):0)f=0;else f=((d[a+24>>0]|0)>>>2&1^1)&255|(b|0)!=(e|0);l=h;return f|0}function Lx(a,b){a=a|0;b=b|0;Nx(a,b);return}function Mx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;Wy(b,d,1)|0;Wy(b,e,1)|0;h=Ly(b,96)|0;i=h+48|0;l=Zx(b,2)|0;j=c[i>>2]|0;k=c[h>>2]|0;m=h+8|0;c[m>>2]=f;c[m+4>>2]=g;m=h+56|0;c[m>>2]=f;c[m+4>>2]=g;g=l<<4;c[h>>2]=k&12|g|2;c[i>>2]=j&12|g|3;c[h+88>>2]=d;c[h+40>>2]=e;Nx(b,h);if(a[b+24>>0]&64){zz(h,93322,16,0)|0;bx(b,h)}fz(b,h);return h|0}function Nx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;i=l;l=l+16|0;d=i;h=c[b>>2]&3;g=(h|0)==2?b:b+-48|0;h=(h|0)==3?b:b+48|0;e=c[h+40>>2]|0;f=c[g+40>>2]|0;while(1){if(!a)break;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];if(Ox(a,e,f,d)|0)break;j=Ex(a,e)|0;m=a+44|0;Px(c[m>>2]|0,j+32|0,g);k=a+48|0;Px(c[k>>2]|0,j+24|0,g);j=Ex(a,f)|0;Px(c[m>>2]|0,j+28|0,h);Px(c[k>>2]|0,j+20|0,h);a=xA(a)|0}l=i;return}function Ox(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+48|0;f=h;if(!((b|0)==0|(d|0)==0)?(c[f>>2]=c[e>>2],c[f+4>>2]=c[e+4>>2],c[f+8>>2]=c[e+8>>2],c[f+12>>2]=c[e+12>>2],c[f+40>>2]=b,g=Ex(a,d)|0,(g|0)!=0):0){e=a+48|0;g=g+20|0;Cw(c[e>>2]|0,c[g>>2]|0)|0;a=c[e>>2]|0;a=nb[c[a>>2]&63](a,f,4)|0;c[g>>2]=yw(c[e>>2]|0)|0}else a=0;l=h;return a|0}function Px(a,b,d){a=a|0;b=b|0;d=d|0;Cw(a,c[b>>2]|0)|0;nb[c[a>>2]&63](a,d,1)|0;c[b>>2]=yw(a)|0;return}function Qx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+48|0;i=n+24|0;k=n+16|0;j=n;do if(!(ny(a,2,e,k,0)|0))if(!e){if(f|0?(fy(a)|0)==0:0){m=18;break};c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;m=7}else m=17;else{o=j;c[o>>2]=0;c[o+4>>2]=0;o=k;g=c[o+4>>2]|0;m=j+8|0;c[m>>2]=c[o>>2];c[m+4>>2]=g;c[j>>2]=2;m=7}while(0);a:do if((m|0)==7){c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];g=Ox(a,b,d,i)|0;b:do if(!g){if(ey(a)|0?(c[i>>2]=c[j>>2],c[i+4>>2]=c[j+4>>2],c[i+8>>2]=c[j+8>>2],c[i+12>>2]=c[j+12>>2],h=Ox(a,d,b,i)|0,h|0):0){g=h;break}do if(f|0){g=ez(a)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];g=Ox(g,b,d,i)|0;if(!g){if(!(ey(a)|0))break;g=ez(a)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];g=Ox(g,d,b,i)|0;if(!g)break}Lx(a,g);break b}while(0);m=17;break a}while(0)}while(0);if((m|0)==17)if(!f)g=0;else m=18;if((m|0)==18)if((Kx(a,b,d)|0)!=0?(ny(a,2,e,k,1)|0)!=0:0){g=k;g=Mx(a,b,d,c[g>>2]|0,c[g+4>>2]|0)|0;ry(a,2,g)}else g=0;l=n;return g|0}function Rx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;d=(c[b>>2]&3|0)==3;g=d?b+-48|0:b;d=d?b:b+48|0;b=c[g+40>>2]|0;h=Ex(a,c[d+40>>2]|0)|0;f=a+44|0;Sx(c[f>>2]|0,h+32|0,g);e=a+48|0;Sx(c[e>>2]|0,h+24|0,g);b=Ex(a,b)|0;Sx(c[f>>2]|0,b+28|0,d);Sx(c[e>>2]|0,b+20|0,d);return}function Sx(a,b,d){a=a|0;b=b|0;d=d|0;Cw(a,c[b>>2]|0)|0;nb[c[a>>2]&63](a,d,2)|0;c[b>>2]=yw(a)|0;return}function Tx(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;d=(c[d>>2]&3|0)==2?d:d+-48|0;g=c[d>>2]&3;h=c[((g|0)==3?d:d+48|0)+40>>2]|0;g=c[((g|0)==2?d:d+-48|0)+40>>2]|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];if(Ox(b,h,g,f)|0){if((ez(b)|0)==(b|0)){if(a[b+24>>0]&64)vx(d);jz(b,d);Hz(d);h=d+8|0;py(b,2,c[h>>2]|0,c[h+4>>2]|0)}if(!(iB(b,d,58,0,0)|0))if((ez(b)|0)==(b|0)){My(b,d);d=0}else d=0;else d=-1}else d=-1;l=e;return d|0}function Ux(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;e=h;f=Wy(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0,d)|0;g=Wy(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0,d)|0;do if((f|0)!=0&(g|0)!=0){c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];e=Ox(a,f,g,e)|0;f=(e|0)==0;if(!((d|0)!=0&f)){if(f)break}else{Nx(a,b);e=b}d=c[e>>2]&3;l=h;return ((d|0)==(c[b>>2]&3|0)?e:e+(((d|0)==3?-1:1)*48|0)|0)|0}while(0);l=h;return 0}function Vx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=b+8|0;e=d+8|0;e=s3(c[b>>2]|0,c[b+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;return ((e|0)==0?0:e>>31|1)|0}function Wx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+16|0;g=h;j=Xx(e)|0;f=lb[c[(c[j>>2]|0)+4>>2]&127](c[j+12>>2]|0,72)|0;c[f>>2]=c[f>>2]&-4;i=f+64|0;c[i>>2]=j;k=f+24|0;d=c[d>>2]|0;c[k>>2]=d;a[k>>0]=d&255|8;c[f+60>>2]=f;e=lb[c[c[j+4>>2]>>2]&127](f,e)|0;c[(c[i>>2]|0)+16>>2]=e;if(ny(f,0,b,g,1)|0){i=g;j=c[i+4>>2]|0;k=f+8|0;c[k>>2]=c[i>>2];c[k+4>>2]=j}k=Yx(f)|0;ry(k,0,f);l=h;return k|0}function Xx(b){b=b|0;var d=0,e=0,f=0,g=0;d=(b|0)!=0;if(d){e=c[b>>2]|0;e=(e|0)==0?18632:e}else e=18632;g=kb[c[e>>2]&63](b)|0;f=lb[c[e+4>>2]&127](g,80)|0;c[f>>2]=e;c[f+12>>2]=g;if(d){g=c[b+4>>2]|0;c[f+4>>2]=(g|0)==0?18508:g;b=c[b+8>>2]|0;b=(b|0)==0?18608:b}else{c[f+4>>2]=18508;b=18608}c[f+8>>2]=b;a[f+52>>0]=1;return f|0}function Yx(b){b=b|0;var d=0,e=0;c[b+36>>2]=BA(b,18688,c[4563]|0)|0;c[b+40>>2]=BA(b,18652,c[4563]|0)|0;d=(ez(b)|0)==(b|0);c[b+44>>2]=BA(b,d?18300:18336,c[4563]|0)|0;d=(ez(b)|0)==(b|0);c[b+48>>2]=BA(b,d?18372:18408,c[4563]|0)|0;c[b+52>>2]=BA(b,18444,c[4563]|0)|0;d=xA(b)|0;if(!((d|0)!=0?(e=Zx(d,0)|0,c[b>>2]=c[b>>2]&15|e<<4,e=c[d+52>>2]|0,nb[c[e>>2]&63](e,b,1)|0,!(a[d+24>>0]&64)):0))$w(b);fz(b,b);return b|0}function Zx(a,b){a=a|0;b=b|0;var d=0;d=(c[a+64>>2]|0)+24+(b<<3)|0;b=d;b=r3(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;a=z;c[d>>2]=b;c[d+4>>2]=a;z=a;return b|0}function _x(b){b=b|0;var d=0,e=0,f=0,g=0;f=xA(b)|0;g=(f|0)==0;if(g?(d=b+64|0,(c[(c[c[d>>2]>>2]|0)+16>>2]|0)!=0):0){jz(b,b);g=b+8|0;py(b,0,c[g>>2]|0,c[g+4>>2]|0);d=c[d>>2]|0;tb[c[(c[d>>2]|0)+16>>2]&127](c[d+12>>2]|0);d=0}else e=4;do if((e|0)==4){d=vA(b)|0;while(1){if(!d)break;e=wA(d)|0;_x(d)|0;d=e}d=Ry(b)|0;while(1){if(!d)break;e=Sy(b,d)|0;bz(b,d)|0;d=e}Ay(b);jz(b,b);if(((((DA(b,c[b+40>>2]|0)|0)==0?(DA(b,c[b+36>>2]|0)|0)==0:0)?(DA(b,c[b+48>>2]|0)|0)==0:0)?(DA(b,c[b+44>>2]|0)|0)==0:0)?(DA(b,c[b+52>>2]|0)|0)==0:0){if(a[b+24>>0]&64?sx(b)|0:0){d=-1;break}Hz(b);e=b+8|0;py(b,0,c[e>>2]|0,c[e+4>>2]|0);if(!g){yA(f,b)|0;My(f,b);d=0;break}d=b+64|0;while(1){e=c[d>>2]|0;f=c[e+48>>2]|0;if(!f)break;mz(b,c[f>>2]|0)|0}tb[c[(c[e+4>>2]|0)+20>>2]&127](c[e+16>>2]|0);if(!(Iz(b)|0)){d=c[d>>2]|0;g=c[d+12>>2]|0;f=(c[d>>2]|0)+12|0;ub[c[f>>2]&63](g,b);ub[c[f>>2]&63](g,d);d=0}else d=-1}else d=-1}while(0);return d|0}function $x(a){a=a|0;return Dw(c[a+40>>2]|0)|0}function ay(a){a=a|0;var b=0,c=0,d=0;b=0;c=Ry(a)|0;while(1){if(!c)break;d=(by(a,c,0,1)|0)+b|0;b=d;c=Sy(a,c)|0}return b|0}function by(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=Ex(a,b)|0;if(f){if(!e)b=0;else b=cy(c[a+44>>2]|0,f+32|0)|0;if(d)b=(cy(c[a+44>>2]|0,f+28|0)|0)+b|0}else b=0;return b|0}function cy(a,b){a=a|0;b=b|0;var d=0;Cw(a,c[b>>2]|0)|0;d=Dw(a)|0;c[b>>2]=yw(a)|0;return d|0}function dy(b){b=b|0;return a[b+24>>0]&1|0}function ey(a){a=a|0;return (dy(a)|0)==0|0}function fy(a){a=a|0;return (d[a+24>>0]|0)>>>1&1|0}function gy(a,b){a=a|0;b=b|0;return a|0}function hy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;if(!d){f=1392;d=c[f>>2]|0;f=c[f+4>>2]|0;c[e>>2]=d;c[e+4>>2]=f;f=r3(d|0,f|0,2,0)|0;e=1392;c[e>>2]=f;c[e+4>>2]=z}else{if(!f)a=Kz(a,d)|0;else a=Nz(a,d)|0;c[e>>2]=a;c[e+4>>2]=0}return 1}function iy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function jy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((c&1|0)==0&0==0)Pz(a,c)|0;return}function ky(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ((c&1|0)==0&0==0?c:0)|0}function ly(a){a=a|0;return}function my(a,b,c){a=a|0;b=b|0;c=c|0;return}function ny(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=(e|0)!=0;do if(i){if((a[e>>0]|0)!=37?(h=c[b+64>>2]|0,h=pb[c[(c[h+4>>2]|0)+4>>2]&127](c[h+16>>2]|0,d,e,f,g)|0,h|0):0)break;h=sy(b,d,e,f)|0;if(!h)j=5}else j=5;while(0);if((j|0)==5)if(g){h=c[b+64>>2]|0;h=pb[c[(c[h+4>>2]|0)+4>>2]&127](c[h+16>>2]|0,d,0,f,g)|0;if(i&(h|0)!=0){j=f;ty(b,d,e,c[j>>2]|0,c[j+4>>2]|0)}}else h=0;return h|0}function oy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[a+64>>2]|0;return ob[c[(c[a+4>>2]|0)+8>>2]&127](c[a+16>>2]|0,b,d,e)|0}function py(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;yy(a,b,d,e)|0;a=c[a+64>>2]|0;xb[c[(c[a+4>>2]|0)+12>>2]&31](c[a+16>>2]|0,b,d,e);return}function qy(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;d=dz(a)|0;f=a+8|0;b=f;b=wy(d,c[a>>2]&3,c[b>>2]|0,c[b+4>>2]|0)|0;do if(!b){b=c[d+64>>2]|0;d=c[(c[b+4>>2]|0)+16>>2]|0;if(d|0?(e=f,e=ob[d&127](c[b+16>>2]|0,c[a>>2]&3,c[e>>2]|0,c[e+4>>2]|0)|0,e|0):0){b=e;break}if((c[a>>2]&3|0)==2)b=0;else{e=c[f>>2]|0;f=c[f+4>>2]|0;c[g>>2]=37;b=g+8|0;c[b>>2]=e;c[b+4>>2]=f;X0(191693,93374,g)|0;b=191693}}while(0);l=h;return b|0}function ry(a,b,d){a=a|0;b=b|0;d=d|0;a=c[a+64>>2]|0;vb[c[(c[a+4>>2]|0)+24>>2]&127](c[a+16>>2]|0,b,d);return}function sy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i;b=c[(c[a+64>>2]|0)+56+(((b|0)==3?2:b)<<2)>>2]|0;if(((b|0)!=0?(f=Kz(a,d)|0,(f|0)!=0):0)?(c[h+24>>2]=f,g=nb[c[b>>2]&63](b,h,4)|0,(g|0)!=0):0){d=g+16|0;h=c[d+4>>2]|0;b=e;c[b>>2]=c[d>>2];c[b+4>>2]=h;b=1}else b=0;l=i;return b|0}function ty(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=Ly(a,32)|0;g=h+16|0;c[g>>2]=e;c[g+4>>2]=f;c[h+24>>2]=Nz(a,d)|0;e=(b|0)==3?2:b;g=a+64|0;d=c[g>>2]|0;b=c[d+56+(e<<2)>>2]|0;if(!b){f=BA(a,18536,c[4563]|0)|0;c[(c[g>>2]|0)+56+(e<<2)>>2]=f;b=c[g>>2]|0}else{f=b;b=d}b=c[b+68+(e<<2)>>2]|0;if(!b){b=BA(a,18572,c[4563]|0)|0;c[(c[g>>2]|0)+68+(e<<2)>>2]=b}nb[c[f>>2]&63](f,h,1)|0;nb[c[b>>2]&63](b,h,1)|0;return}function uy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=b+16|0;b=c[a>>2]|0;a=c[a+4>>2]|0;d=d+16|0;e=c[d>>2]|0;d=c[d+4>>2]|0;return (a>>>0>d>>>0|(a|0)==(d|0)&b>>>0>e>>>0?1:(a>>>0>>0|(a|0)==(d|0)&b>>>0>>0)<<31>>31)|0}function vy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b+24>>2]|0;e=c[d+24>>2]|0;return (b>>>0>e>>>0?1:(b>>>0>>0)<<31>>31)|0}function wy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=xy(a,b,d,e)|0;if(!a)a=0;else a=c[a+24>>2]|0;return a|0}function xy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;a=c[(c[a+64>>2]|0)+68+(((b|0)==3?2:b)<<2)>>2]|0;if(!a)a=0;else{b=f+16|0;c[b>>2]=d;c[b+4>>2]=e;a=nb[c[a>>2]&63](a,f,4)|0}l=g;return a|0}function yy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=(b|0)==3?2:b;b=xy(a,f,d,e)|0;if(!b)b=0;else{e=a+64|0;d=c[(c[e>>2]|0)+56+(f<<2)>>2]|0;nb[c[d>>2]&63](d,b,2)|0;e=c[(c[e>>2]|0)+68+(f<<2)>>2]|0;nb[c[e>>2]&63](e,b,2)|0;Pz(a,c[b+24>>2]|0)|0;My(a,b);b=1}return b|0}function zy(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;c[46171]=b;g=c[b+64>>2]|0;f=0;while(1){if((f|0)==3)break;h=g+56+(f<<2)|0;d=c[h>>2]|0;a:do if(d|0){d=nb[c[d>>2]&63](d,0,128)|0;while(1){if(!d)break a;e=c[h>>2]|0;e=nb[c[e>>2]&63](e,d,8)|0;if((a[c[d+24>>2]>>0]|0)!=37){d=e;continue}i=d+16|0;yy(b,f,c[i>>2]|0,c[i+4>>2]|0)|0;d=e}}while(0);f=f+1|0}return}function Ay(a){a=a|0;c[46171]=a;a=a+64|0;By((c[a>>2]|0)+56|0);By((c[a>>2]|0)+68|0);return}function By(a){a=a|0;var b=0,d=0,e=0;b=0;while(1){if((b|0)==3)break;d=a+(b<<2)|0;e=c[d>>2]|0;if(e|0){xw(e)|0;c[d>>2]=0}b=b+1|0}return}function Cy(a,b,c){a=a|0;b=b|0;c=c|0;if(!(N0(b,c,a)|0))a=0;else a=V_(b)|0;return a|0}function Dy(a,b){a=a|0;b=b|0;return C1(b,a)|0}function Ey(a){a=a|0;return v1(a)|0}function Fy(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+32|0;e=b+12|0;d=b;c[4656]=c[4653];c[4657]=c[4654];c[e>>2]=a;c[e+4>>2]=V_(a)|0;c[e+8>>2]=0;c[d>>2]=18632;c[d+4>>2]=18508;c[d+8>>2]=18620;a=SB(e,d)|0;Tz(0);l=b;return a|0}function Gy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if((e|0)!=0?(h=b+8|0,f=c[h>>2]|0,(f|0)<(c[b+4>>2]|0)):0){i=(c[b>>2]|0)+f|0;b=0;g=a[i>>0]|0;f=d;d=i;while(1){d=d+1|0;a[f>>0]=g;b=b+1|0;if(!(g<<24>>24!=10&(b|0)<(e|0)))break;g=a[d>>0]|0;if(!(g<<24>>24))break;else f=f+1|0}c[h>>2]=(c[h>>2]|0)+b}else b=0;return b|0}function Hy(a){a=a|0;return 0}function Iy(a,b){a=a|0;b=b|0;a=B_(b)|0;G3(a|0,0,b|0)|0;return a|0}function Jy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=E_(b,d)|0;if(d>>>0>c>>>0)G3(a+c|0,0,d-c|0)|0;return a|0}function Ky(a,b){a=a|0;b=b|0;C_(b);return}function Ly(a,b){a=a|0;b=b|0;var d=0;d=l;l=l+16|0;a=c[a+64>>2]|0;a=lb[c[(c[a>>2]|0)+4>>2]&127](c[a+12>>2]|0,b)|0;if(!a)Ow(1,93380,d)|0;l=d;return a|0}function My(a,b){a=a|0;b=b|0;if(b|0){a=c[a+64>>2]|0;ub[c[(c[a>>2]|0)+12>>2]&63](c[a+12>>2]|0,b)}return}function Ny(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=(c[b+16>>2]|0)+8|0;b=c[a>>2]|0;a=c[a+4>>2]|0;d=(c[d+16>>2]|0)+8|0;e=c[d>>2]|0;d=c[d+4>>2]|0;return (a>>>0>>0|(a|0)==(d|0)&b>>>0>>0?-1:(a>>>0>d>>>0|(a|0)==(d|0)&b>>>0>e>>>0)&1)|0}function Oy(a,b,d){a=a|0;b=b|0;d=d|0;a=c[b+16>>2]|0;if((a+28|0)!=(b|0))My(c[a+24>>2]|0,b);return}function Py(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=(c[c[b+16>>2]>>2]|0)>>>4;e=(c[c[d+16>>2]>>2]|0)>>>4;return (b>>>0>>0?-1:b>>>0>e>>>0&1)|0}function Qy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=183176;c[e>>2]=b;c[e+4>>2]=d;c[46176]=183168;a=c[a+40>>2]|0;a=nb[c[a>>2]&63](a,184688,4)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function Ry(a){a=a|0;a=c[a+36>>2]|0;a=nb[c[a>>2]&63](a,0,128)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function Sy(a,b){a=a|0;b=b|0;var d=0;b=Ex(a,b)|0;if((b|0)!=0?(d=c[a+36>>2]|0,d=nb[c[d>>2]&63](d,b,8)|0,(d|0)!=0):0)b=c[d+16>>2]|0;else b=0;return b|0}function Ty(a){a=a|0;a=c[a+36>>2]|0;a=nb[c[a>>2]&63](a,0,256)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function Uy(a,b){a=a|0;b=b|0;var d=0;b=Ex(a,b)|0;if((b|0)!=0?(d=c[a+36>>2]|0,d=nb[c[d>>2]&63](d,b,16)|0,(d|0)!=0):0)b=c[d+16>>2]|0;else b=0;return b|0}function Vy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=Qy(a,b,c)|0;do if((d|0)!=0&(e|0)==0){e=ez(a)|0;if((e|0)!=(a|0)?(f=Qy(e,b,c)|0,f|0):0){Wy(a,f,1)|0;e=f;break}if(!(oy(a,1,b,c)|0))e=0;else{e=Zx(a,1)|0;e=Xy(a,b,c,e,z)|0;Yy(a,e);Zy(a,e)}}while(0);return e|0}function Wy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=ez(a)|0;if((e|0)==(c[b+24>>2]|0)){e=b+8|0;e=Qy(a,c[e>>2]|0,c[e+4>>2]|0)|0;if((d|0)!=0&(e|0)==0){e=xA(a)|0;if(!e)e=0;else{d=Wy(e,b,d)|0;_y(a,d);return d|0}}}else e=0;return e|0}function Xy(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;g=Ly(b,64)|0;h=c[g>>2]|0;i=g+8|0;c[i>>2]=d;c[i+4>>2]=e;c[g>>2]=h&12|f<<4|1;c[g+24>>2]=ez(b)|0;if(a[(ez(b)|0)+24>>0]&64)zz(g,93322,16,0)|0;return g|0}function Yy(a,b){a=a|0;b=b|0;do{_y(a,b);a=xA(a)|0}while((a|0)!=0);return}function Zy(b,c){b=b|0;c=c|0;if(a[(ez(b)|0)+24>>0]&64)ax(b,c);fz(b,c);return}function _y(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+40|0;Dw(c[e>>2]|0)|0;if((ez(a)|0)==(a|0))d=b+28|0;else d=Ly(a,36)|0;c[d+16>>2]=b;e=c[e>>2]|0;nb[c[e>>2]&63](e,d,1)|0;e=c[a+36>>2]|0;nb[c[e>>2]&63](e,d,1)|0;return}function $y(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;h=ez(a)|0;if(ny(a,1,b,g,0)|0){e=g;e=Qy(a,c[e>>2]|0,c[e+4>>2]|0)|0;if(!e)if(!((d|0)==0|(h|0)==(a|0))?(f=g,f=Qy(h,c[f>>2]|0,c[f+4>>2]|0)|0,(f|0)!=0):0)e=Wy(a,f,1)|0;else i=6}else i=6;if((i|0)==6)if((d|0)!=0?(ny(a,1,b,g,1)|0)!=0:0){i=g;h=c[i>>2]|0;i=c[i+4>>2]|0;e=Zx(a,1)|0;e=Xy(a,h,i,e,z)|0;Yy(a,e);Zy(a,e);ry(a,1,e)}else e=0;l=j;return e|0}function az(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[46185]=b;d=Ix(a,b)|0;while(1){if(!d)break;e=Jx(a,d,b)|0;Rx(a,d,0);d=e}e=c[a+40>>2]|0;nb[c[e>>2]&63](e,184724,2)|0;e=c[a+36>>2]|0;nb[c[e>>2]&63](e,184724,2)|0;return}function bz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d+8|0;e=f;if(Qy(b,c[e>>2]|0,c[e+4>>2]|0)|0){if((ez(b)|0)==(b|0)){e=Ix(b,d)|0;while(1){if(!e)break;g=Jx(b,e,d)|0;Tx(b,e)|0;e=g}if(a[b+24>>0]&64)ux(d);jz(b,d);Hz(d);g=f;py(b,1,c[g>>2]|0,c[g+4>>2]|0)}if(!(iB(b,d,59,0,0)|0))if((ez(b)|0)==(b|0)){My(b,d);e=0}else e=0;else e=-1}else e=-1;return e|0}function cz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;e=h;d=c[b>>2]|0;do if(!(d&3))if((xA(b)|0)==(a|0)){d=c[b>>2]|0;g=5;break}else{Ow(1,93406,e)|0;f=-1;break}else g=5;while(0);a:do if((g|0)==5)switch(d&3){case 1:{f=bz(a,b)|0;break a}case 2:case 3:{f=Tx(a,b)|0;break a}case 0:{f=_x(b)|0;break a}default:{}}while(0);l=h;return f|0}function dz(a){a=a|0;var b=0;switch(c[a>>2]&3){case 2:case 3:{b=c[(c[a+40>>2]|0)+24>>2]|0;break}case 1:{b=c[a+24>>2]|0;break}case 0:{b=a;break}default:{}}return b|0}function ez(a){a=a|0;var b=0;switch(c[a>>2]&3){case 2:case 3:{b=(c[a+40>>2]|0)+24|0;break}case 1:{b=a+24|0;break}case 0:{b=a+60|0;break}default:{}}return c[b>>2]|0}function fz(b,d){b=b|0;d=d|0;var e=0;e=c[b+64>>2]|0;if(!(a[e+52>>0]|0))pz(b,d,100,0);else gz(b,d,c[e+48>>2]|0);return}function gz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a:do if(d|0){gz(a,b,c[d+8>>2]|0);switch(c[b>>2]&3){case 0:{e=c[d>>2]|0;break}case 1:{e=(c[d>>2]|0)+12|0;break}case 2:{e=(c[d>>2]|0)+24|0;break}default:break a}e=c[e>>2]|0;if(e|0)vb[e&127](a,b,c[d+4>>2]|0)}while(0);return}function hz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=c[b+64>>2]|0;if(!(a[f+52>>0]|0))pz(b,d,101,e);else iz(b,d,e,c[f+48>>2]|0);return}function iz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;a:do if(e|0){iz(a,b,d,c[e+8>>2]|0);switch(c[b>>2]&3){case 0:{f=(c[e>>2]|0)+4|0;break}case 1:{f=(c[e>>2]|0)+16|0;break}case 2:{f=(c[e>>2]|0)+28|0;break}default:break a}f=c[f>>2]|0;if(f|0)xb[f&31](a,b,c[e+4>>2]|0,d)}while(0);return}function jz(b,d){b=b|0;d=d|0;var e=0;e=c[b+64>>2]|0;if(!(a[e+52>>0]|0))pz(b,d,102,0);else kz(b,d,c[e+48>>2]|0);return}function kz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a:do if(d|0){kz(a,b,c[d+8>>2]|0);switch(c[b>>2]&3){case 0:{e=(c[d>>2]|0)+8|0;break}case 1:{e=(c[d>>2]|0)+20|0;break}case 2:{e=(c[d>>2]|0)+32|0;break}default:break a}e=c[e>>2]|0;if(e|0)vb[e&127](a,b,c[d+4>>2]|0)}while(0);return}function lz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Ly(a,12)|0;c[e>>2]=b;c[e+4>>2]=d;d=(c[a+64>>2]|0)+48|0;c[e+8>>2]=c[d>>2];c[d>>2]=e;return}function mz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=(c[a+64>>2]|0)+48|0;d=c[e>>2]|0;a:do if(!d)d=-1;else{if((c[d>>2]|0)!=(b|0)){while(1){if(!d){d=-1;break a}e=d+8|0;f=c[e>>2]|0;if((c[f>>2]|0)==(b|0))break;else d=f}if(f)c[e>>2]=c[f+8>>2]}else c[e>>2]=c[d+8>>2];My(a,d);d=0}while(0);return d|0}function nz(a,b){a=a|0;b=b|0;var d=0;d=ez(a)|0;a:do if((d|0)==(ez(b)|0))switch(c[b>>2]&3){case 0:{while(1){if((b|0)==(a|0)){b=1;break a}b=xA(b)|0;if(!b){b=0;break}}break}case 1:{b=b+8|0;b=(Vy(a,c[b>>2]|0,c[b+4>>2]|0,0)|0)!=0;break a}default:{b=(Ux(a,b,0)|0)!=0;break a}}else b=0;while(0);return b&1|0}function oz(a){a=a|0;return c[a>>2]&3|0}function pz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=zz(a,93430,44,0)|0;switch(c|0){case 100:{e=qz(f,b,100)|0;if(!(rz(e,b)|0))sz(e,a,b,d)|0;break}case 101:{if(((rz(qz(f,b,100)|0,b)|0)==0?(rz(qz(f,b,102)|0,b)|0)==0:0)?(e=qz(f,b,101)|0,(rz(e,b)|0)==0):0)sz(e,a,b,d)|0;break}case 102:{tz(qz(f,b,100)|0,b);tz(qz(f,b,101)|0,b);e=qz(f,b,102)|0;if(!(rz(e,b)|0))sz(e,a,b,d)|0;break}default:Ow(1,93442,g)|0}l=h;return}function qz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;e=g;a:do switch(c[b>>2]&3){case 0:switch(d|0){case 100:{d=a+8|0;break a}case 101:{d=a+20|0;break a}case 102:{d=a+32|0;break a}default:{f=14;break a}}case 1:switch(d|0){case 100:{d=a+12|0;break a}case 101:{d=a+24|0;break a}case 102:{d=a+36|0;break a}default:{f=14;break a}}case 2:switch(d|0){case 100:{d=a+16|0;break a}case 101:{d=a+28|0;break a}case 102:{d=a+40|0;break a}default:{f=14;break a}}default:f=14}while(0);if((f|0)==14){Ow(1,93476,e)|0;d=0}a=c[d>>2]|0;if(!a){a=dz(b)|0;a=BA(a,18724,c[4563]|0)|0;c[d>>2]=a}l=g;return a|0}function rz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=uz(b)|0;b=e+8|0;c[b>>2]=f;c[b+4>>2]=z;b=nb[c[a>>2]&63](a,e,4)|0;l=d;return b|0}function sz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=Ly(dz(d)|0,32)|0;c[f+20>>2]=d;g=uz(d)|0;d=f+8|0;c[d>>2]=g;c[d+4>>2]=z;c[f+16>>2]=b;if(e|0){g=Ly(b,8)|0;c[f+24>>2]=g;c[g>>2]=e}nb[c[a>>2]&63](a,f,1)|0;return f|0}function tz(a,b){a=a|0;b=b|0;b=rz(a,b)|0;if(b|0)nb[c[a>>2]&63](a,b,2)|0;return}function uz(a){a=a|0;a=a+8|0;z=c[a+4>>2]|0;return c[a>>2]|0}function vz(a,b,d){a=a|0;b=b|0;d=d|0;wz(b);My(c[b+16>>2]|0,b);return}function wz(a){a=a|0;var b=0,d=0;b=a+16|0;a=c[a+24>>2]|0;while(1){if(!a)break;d=c[a+4>>2]|0;My(c[b>>2]|0,a);a=d}return}function xz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;i=k;h=c[b+16>>2]|0;f=h;while(1){if(!f){f=0;break}g=c[f>>2]|0;if((g|0)==(d|0)){j=7;break}if((a[d>>0]|0)==(a[g>>0]|0)?(a$(d,g)|0)==0:0){j=7;break}f=c[f+4>>2]|0;if((f|0)==(h|0)){f=0;break}}do if((j|0)==7){if(!(c[b>>2]&4)){if((f|0)==(h|0)&(e|0)==0){f=h;break}yz(b,f,e);break}if(e)if((h|0)==(f|0))f=h;else Ow(1,93501,i)|0}while(0);l=k;return f|0}function yz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[a+16>>2]=b;e=c[a>>2]|0;d=d<<2&4;c[a>>2]=e&-5|d;if(e&2|0){e=(e&3|0)==3?-1:1;c[a+(e*48|0)+16>>2]=b;e=a+(e*48|0)|0;c[e>>2]=c[e>>2]&-5|d}return}function zz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=dz(a)|0;f=xz(a,b,0)|0;a:do if((d|0)!=0&(f|0)==0){d=Ly(h,d)|0;c[d>>2]=Nz(h,b)|0;switch(c[a>>2]&3){case 0:{Az(a,d);g=d;break a}case 1:{Az(a,d);g=d;break a}case 2:case 3:{Az(a,d);g=d;break a}default:{}}}else g=f;while(0);if(e|0)xz(a,b,1)|0;return g|0}function Az(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a+16>>2]|0;do if(d){e=d+4|0;f=c[e>>2]|0;if((f|0)==(d|0)){c[e>>2]=b;e=d;d=b;break}else{c[b+4>>2]=f;e=b;break}}else{e=b;d=b}while(0);c[d+4>>2]=e;if(!(c[a>>2]&4))yz(a,b,0);return}function Bz(a,b){a=a|0;b=b|0;var d=0,e=0;e=dz(a)|0;d=xz(a,b,0)|0;if(!d)b=-1;else{Cz(a,d);if(!(c[a>>2]&3)){Dz(e,a,d);b=d}else{iB(ez(e)|0,a,60,d,0)|0;b=d}Pz(e,c[d>>2]|0)|0;My(e,b);b=0}return b|0}function Cz(a,b){a=a|0;b=b|0;var d=0;a=c[a+16>>2]|0;do{d=a+4|0;a=c[d>>2]|0}while((a|0)!=(b|0));c[d>>2]=c[b+4>>2];return}function Dz(a,b,d){a=a|0;b=b|0;d=d|0;if((c[b+16>>2]|0)==(d|0)){a=c[d+4>>2]|0;yz(b,(a|0)==(d|0)?0:a,0)}return}function Ez(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=(d|0)>-1;g=f?d:0-d|0;a:do switch(b|0){case 0:{zz(a,c,g,e)|0;if(!f){b=vA(a)|0;while(1){if(!b)break a;Ez(b,0,c,d,e);b=wA(b)|0}}break}case 3:case 2:case 1:{d=(b|0)==1;b=Ry(a)|0;while(1){if(!b)break a;b:do if(d)zz(b,c,g,e)|0;else{f=Dx(a,b)|0;while(1){if(!f)break b;zz(f,c,g,e)|0;f=Fx(a,f)|0}}while(0);b=Sy(a,b)|0}}default:{}}while(0);return}function Fz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:do switch(b|0){case 0:{iB(a,a,61,c,1)|0;break}case 3:case 2:case 1:{e=(b|0)==1;d=Ry(a)|0;while(1){if(!d)break a;b:do if(e)Bz(d,c)|0;else{b=Dx(a,d)|0;while(1){if(!b)break b;Bz(b,c)|0;b=Fx(a,b)|0}}while(0);d=Sy(a,d)|0}}default:{}}while(0);return}function Gz(a,b,c){a=a|0;b=b|0;c=c|0;Bz(b,c)|0;return}function Hz(a){a=a|0;var b=0,d=0,e=0;d=dz(a)|0;b=a+16|0;a=c[b>>2]|0;if(a|0)do{e=a;a=c[a+4>>2]|0;Pz(d,c[e>>2]|0)|0;My(d,e)}while((a|0)!=(c[b>>2]|0));c[b>>2]=0;return}function Iz(a){a=a|0;return DA(a,Jz(a)|0)|0}function Jz(a){a=a|0;var b=0,d=0;if(!a)d=184760;else d=(c[a+64>>2]|0)+20|0;b=c[d>>2]|0;if(!b){b=BA(a,18760,c[4563]|0)|0;c[d>>2]=b;a=183232;c[a>>2]=-2147483648;c[a+4>>2]=0;a=183240;c[a>>2]=2147483647;c[a+4>>2]=-1}return b|0}function Kz(a,b){a=a|0;b=b|0;return Lz(Jz(a)|0,b)|0}function Lz(a,b){a=a|0;b=b|0;a=Mz(a,b)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function Mz(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+32|0;e=d;c[e+16>>2]=b;b=nb[c[a>>2]&63](a,e,4)|0;l=d;return b|0}function Nz(a,b){a=a|0;b=b|0;var d=0,e=0;if(!b)d=0;else{e=Jz(a)|0;d=Mz(e,b)|0;if(!d){d=(V_(b)|0)+24|0;if(!a)d=B_(d)|0;else d=Ly(a,d)|0;a=d+8|0;c[a>>2]=1;c[a+4>>2]=0;a=d+20|0;a0(a,b)|0;c[d+16>>2]=a;nb[c[e>>2]&63](e,d,1)|0}else{e=d+8|0;b=e;b=r3(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;c[e>>2]=b;c[e+4>>2]=z}d=c[d+16>>2]|0}return d|0}function Oz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!b)d=0;else{e=Jz(a)|0;d=Mz(e,b)|0;if(!d){d=(V_(b)|0)+24|0;if(!a)d=B_(d)|0;else d=Ly(a,d)|0;g=183232;f=c[g+4>>2]|0;a=d+8|0;c[a>>2]=c[g>>2]|1;c[a+4>>2]=f;a=d+20|0;a0(a,b)|0;c[d+16>>2]=a;nb[c[e>>2]&63](e,d,1)|0}else{g=d+8|0;f=g;f=r3(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;c[g>>2]=f;c[g+4>>2]=z}d=c[d+16>>2]|0}return d|0}function Pz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if((b|0)!=0?(d=Jz(a)|0,e=Mz(d,b)|0,(e|0)!=0):0)if((c[e+16>>2]|0)==(b|0)?(b=e+8|0,g=b,g=r3(c[g>>2]|0,c[g+4>>2]|0,-1,-1)|0,f=z,b,c[b>>2]=g,c[b+4>>2]=f,b=183240,(g|0)==0&(f|0)==0|(c[b>>2]|0)==0&(c[b+4>>2]|0)==0):0){CA(a,d,e)|0;a=0}else a=0;else a=-1;return a|0}function Qz(a){a=a|0;var b=0;if(!a)a=0;else{a=a+-12|0;b=183232;a=c[b>>2]&c[a>>2]}return a|0}function Rz(a){a=a|0;var b=0,d=0,e=0;if(a|0){d=183232;a=a+-12|0;e=a;b=c[e+4>>2]|c[d+4>>2];c[a>>2]=c[e>>2]|c[d>>2];c[a+4>>2]=b}return}function Sz(a){a=a|0;c[4699]=a;return}function Tz(a){a=a|0;c[46195]=a;c[4699]=1;return}function Uz(a,b){a=a|0;b=b|0;c[46196]=a;c[46197]=b;c[46198]=0;return}function Vz(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(!(c[46199]|0)){c[46199]=1;if(!(c[46200]|0))c[46200]=1;if(!(c[46191]|0))c[46191]=c[15621];if(!(c[46192]|0))c[46192]=c[15653];k=c[46201]|0;if(!((k|0)!=0?(c[k>>2]|0)!=0:0)){Wz();k=Xz(c[46191]|0,16384)|0;c[c[46201]>>2]=k}Yz()}a:while(1){j=c[46202]|0;a[j>>0]=a[191725]|0;e=(c[(c[c[46201]>>2]|0)+28>>2]|0)+(c[46200]|0)|0;f=j;b:while(1){h=f;while(1){f=c[18800+(d[h>>0]<<2)>>2]|0;if(b[63752+(e<<1)>>1]|0){c[46203]=e;c[46204]=h}c:while(1){g=f&255;do{f=g+(b[63938+(e<<1)>>1]|0)|0;if((e|0)==(b[64148+(f<<1)>>1]|0))break c;k=b[64684+(e<<1)>>1]|0;e=k<<16>>16}while(k<<16>>16<=92);f=c[19824+(g<<2)>>2]|0}e=b[64894+(f<<1)>>1]|0;f=h+1|0;if((b[63938+(e<<1)>>1]|0)==219)break;else h=f}d:while(1){k=j;e:while(1){e=b[63752+(e<<1)>>1]|0;if(!(e<<16>>16)){e=b[63752+(c[46203]<<1)>>1]|0;f=c[46204]|0}else e=e<<16>>16;c[46193]=j;i=f;c[46194]=i-k;a[191725]=a[f>>0]|0;a[f>>0]=0;c[46202]=f;f:while(1){switch(e|0){case 1:{m=27;break a}case 12:{m=53;break a}case 13:{m=55;break a}case 14:{m=57;break a}case 15:{m=61;break a}case 16:{m=65;break a}case 17:{m=67;break a}case 18:{m=69;break a}case 19:{m=72;break a}case 20:{m=75;break a}case 21:{m=78;break a}case 23:{m=86;break a}case 33:{m=118;break a}case 39:case 38:case 37:case 36:{l=0;break a}case 2:{m=29;break b}case 3:{m=32;break b}case 4:{m=35;break b}case 5:{m=37;break b}case 6:{m=39;break b}case 7:{m=42;break b}case 8:{m=44;break b}case 9:{m=47;break b}case 10:{m=49;break b}case 11:{m=51;break b}case 22:{m=83;break b}case 24:{m=89;break b}case 25:{m=92;break b}case 26:{m=95;break b}case 27:{m=98;break b}case 28:{m=101;break b}case 29:{m=104;break b}case 30:{m=109;break b}case 31:{m=112;break b}case 32:{m=115;break b}case 34:{m=121;break b}case 0:break f;case 35:break;default:{m=134;break a}}h=c[46193]|0;a[f>>0]=a[191725]|0;e=c[46201]|0;g=c[e>>2]|0;if(!(c[g+44>>2]|0)){n=c[g+16>>2]|0;c[46206]=n;c[g>>2]=c[46191];g=c[e>>2]|0;c[g+44>>2]=1;e=n}else e=c[46206]|0;if((c[46202]|0)>>>0<=((c[g+4>>2]|0)+e|0)>>>0){m=128;break e}switch(fA()|0){case 0:{m=132;break d}case 2:{m=133;break e}case 1:break;default:continue a}c[46202]=c[46193];e=(((c[46200]|0)+-1|0)/2|0)+36|0}a[f>>0]=a[191725]|0;f=c[46204]|0;e=c[46203]|0}if((m|0)==128){m=0;g=i-h|0;h=c[46193]|0;f=h+(g+-1)|0;c[46202]=f;e=dA()|0;i=eA(e)|0;j=c[46193]|0;if(!i)continue;else{m=129;break}}else if((m|0)==133){m=0;f=(c[(c[c[46201]>>2]|0)+4>>2]|0)+(c[46206]|0)|0;c[46202]=f;e=dA()|0;j=c[46193]|0;continue}}if((m|0)==129){m=0;f=h+g|0;c[46202]=f;e=i;continue}else if((m|0)==132){m=0;f=(c[46193]|0)+(i-h+-1)|0;c[46202]=f;e=dA()|0;j=c[46193]|0;continue}}switch(m|0){case 29:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[4699]=(c[4699]|0)+1;continue a}case 32:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=3;continue a}case 35:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 37:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 39:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=1;continue a}case 42:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 44:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;Zz();continue a}case 47:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 49:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 51:{m=0;e=c[46194]|0;if(!e)continue a;c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;continue a}case 83:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=5;$z();continue a}case 89:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;bA(95669);continue a}case 92:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;bA(93534);continue a}case 95:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[4699]=(c[4699]|0)+1;continue a}case 98:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;bA(e);continue a}case 101:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=7;c[46205]=1;$z();continue a}case 104:{m=0;e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;n=(c[46205]|0)+-1|0;c[46205]=n;if(!n){m=108;break a}bA(c[46193]|0);continue a}case 109:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;c[46205]=(c[46205]|0)+1;bA(e);continue a}case 112:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;bA(e);c[4699]=(c[4699]|0)+1;continue a}case 115:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;bA(e);continue a}case 121:{m=0;f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;D1(e,f,1,c[46192]|0)|0;continue a}}}switch(m|0){case 27:{e=c[46194]|0;if(!e)l=-1;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=-1}break}case 53:{e=c[46194]|0;if(!e)l=259;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=259}break}case 55:{e=c[46194]|0;if(!e)l=260;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=260}break}case 57:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;if(!(c[46198]|0)){c[46198]=258;l=258}else l=258;break}case 61:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;if(!(c[46198]|0)){c[46198]=261;l=261}else l=261;break}case 65:{e=c[46194]|0;if(!e)l=263;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=263}break}case 67:{e=c[46194]|0;if(!e)l=262;else{c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=262}break}case 69:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=(c[46198]|0)==261?264:45;break}case 72:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;l=(c[46198]|0)==258?264:45;break}case 75:{f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;c[46221]=Nz(c[46171]|0,e)|0;l=267;break}case 78:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;if(_z()|0){m=(c[46194]|0)+-1|0;a[f>>0]=a[191725]|0;n=j+m|0;c[46202]=n;c[46193]=j;c[46194]=m;a[191725]=a[n>>0]|0;a[n>>0]=0;c[46202]=n}c[46221]=Nz(c[46171]|0,c[46193]|0)|0;l=267;break}case 86:{e=c[46194]|0;if(e|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[(c[46193]|0)+(e+-1)>>0]|0)==10&1;c[46200]=1;aA();l=268;break}case 108:{c[46200]=1;cA();l=268;break}case 118:{f=c[46194]|0;e=c[46193]|0;if(f|0)c[(c[c[46201]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;l=a[e>>0]|0;break}case 134:{gA(93537);break}}return l|0}function Wz(){var a=0,b=0,d=0;b=c[46201]|0;do if(!b){a=nA(4)|0;c[46201]=a;if(!a)gA(93895);else{c[a>>2]=0;a=1;d=9;break}}else{a=c[46212]|0;if(0>=(a+-1|0)>>>0){a=a+8|0;b=hA(b,a<<2)|0;c[46201]=b;if(!b)gA(93895);else{d=b+(c[46212]<<2)|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0;d=9;break}}}while(0);if((d|0)==9)c[46212]=a;return}function Xz(a,b){a=a|0;b=b|0;var d=0;d=nA(48)|0;if(!d)gA(93850);c[d+12>>2]=b;b=nA(b+2|0)|0;c[d+4>>2]=b;if(!b)gA(93850);else{c[d+20>>2]=1;jA(d,a);return d|0}return 0}function Yz(){var b=0,d=0;d=c[46201]|0;b=c[d>>2]|0;c[46206]=c[b+16>>2];b=c[b+8>>2]|0;c[46202]=b;c[46193]=b;c[46191]=c[c[d>>2]>>2];a[191725]=a[b>>0]|0;return}function Zz(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g;d=g+16|0;e=g+12|0;h=c[46193]|0;b=h+1|0;i=(y$(b,93834,4)|0)==0;b=i?h+5|0:b;c[f>>2]=e;c[f+4>>2]=g+20;c[f+8>>2]=d;f=M1(b,93839,f)|0;if((f|0)>0?(c[4699]=(c[e>>2]|0)+-1,(f|0)!=1):0){d=b+(c[d>>2]|0)|0;b=d;a:while(1){e=a[b>>0]|0;switch(e<<24>>24){case 0:case 34:break a;default:{}}b=b+1|0}if((b|0)!=(d|0)&e<<24>>24==34){a[b>>0]=0;mA(d,b-d|0)}}l=g;return}function _z(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+2080|0;i=j+8|0;f=j;b=j+1056|0;d=j+32|0;h=j+16|0;k=a[(c[46193]|0)+((c[46194]|0)+-1)>>0]|0;e=k<<24>>24==46;if(e|((k&255)+-48|0)>>>0<10)if(e?(lA()|0)!=0:0)g=4;else b=0;else g=4;if((g|0)==4){k=c[46195]|0;Sw(h,1024,b);Vw(h,93745)|0;Vw(h,c[46193]|0)|0;c[f>>2]=c[4699];X0(d,93789,f)|0;Vw(h,d)|0;Vw(h,(k|0)==0?93739:k)|0;Vw(h,93806)|0;d=h+4|0;b=c[d>>2]|0;if(b>>>0>=(c[h+8>>2]|0)>>>0){Tw(h,1)|0;b=c[d>>2]|0}a[b>>0]=0;b=c[h>>2]|0;c[d>>2]=b;c[i>>2]=b;Ow(0,93831,i)|0;Ww(h);b=1}l=j;return b|0}function $z(){var b=0;b=c[46207]|0;if(!b){b=B_(1024)|0;c[46207]=b;c[46209]=b+1024}c[46208]=b;a[b>>0]=0;return}function aA(){c[46221]=Nz(c[46171]|0,c[46207]|0)|0;a[c[46207]>>0]=0;return}function bA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=c[46208]|0;d=c[46207]|0;if(e>>>0>d>>>0){e=e+-1|0;f=3}a:while(1){if((f|0)==3)c[46208]=e;f=c[46209]|0;g=f;do{h=b;b=b+1|0;h=a[h>>0]|0;i=e;e=e+1|0;a[i>>0]=h;if(!(h<<24>>24))break a}while(e>>>0>>0);c[46208]=e;f=d;i=g-f<<1;d=E_(d,i)|0;c[46207]=d;c[46209]=d+i;e=d+(e-f)|0;f=3}c[46208]=e;return}function cA(){c[46221]=Oz(c[46171]|0,c[46207]|0)|0;a[c[46207]>>0]=0;return}function dA(){var d=0,e=0,f=0,g=0,h=0;h=c[46202]|0;g=c[46193]|0;e=(c[(c[c[46201]>>2]|0)+28>>2]|0)+(c[46200]|0)|0;while(1){if(g>>>0>=h>>>0)break;d=a[g>>0]|0;if(!(d<<24>>24))d=1;else d=c[18800+((d&255)<<2)>>2]|0;if(b[63752+(e<<1)>>1]|0){c[46203]=e;c[46204]=g}a:while(1){f=d&255;do{d=f+(b[63938+(e<<1)>>1]|0)|0;if((e|0)==(b[64148+(d<<1)>>1]|0))break a;d=b[64684+(e<<1)>>1]|0;e=d<<16>>16}while(d<<16>>16<=92);d=c[19824+(f<<2)>>2]|0}g=g+1|0;e=b[64894+(d<<1)>>1]|0}return e|0}function eA(a){a=a|0;var d=0;if(b[63752+(a<<1)>>1]|0){d=c[46202]|0;c[46203]=a;c[46204]=d}while(1){d=(b[63938+(a<<1)>>1]|0)+1|0;if((a|0)==(b[64148+(d<<1)>>1]|0))break;a=b[64684+(a<<1)>>1]|0}d=b[64894+(d<<1)>>1]|0;return (d<<16>>16==92?0:d<<16>>16)|0}function fA(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=c[46201]|0;g=c[j>>2]|0;i=c[g+4>>2]|0;f=c[46193]|0;l=c[46202]|0;k=l;if(l>>>0>(i+((c[46206]|0)+1)|0)>>>0)gA(93592);h=k-f|0;if(!(c[g+40>>2]|0))b=(h|0)==1?1:2;else{l=h+-1|0;h=i;g=0;while(1){if((g|0)>=(l|0))break;a[h>>0]=a[f>>0]|0;h=h+1|0;f=f+1|0;g=g+1|0}f=c[j>>2]|0;do if((c[f+44>>2]|0)==2){c[46206]=0;c[f+16>>2]=0;e=f;m=17}else{while(1){i=f+12|0;h=c[i>>2]|0;g=h-l+-1|0;if(g|0){m=16;break}g=f+4|0;j=c[g>>2]|0;if(!(c[f+20>>2]|0)){m=12;break}f=h<<1;f=(f|0)==0?(h>>>3)+h|0:f;c[i>>2]=f;f=hA(j,f+2|0)|0;c[g>>2]=f;if(!f)break;j=f+(k-j)|0;c[46202]=j;f=c[c[46201]>>2]|0;k=j}if((m|0)==12)c[g>>2]=0;else if((m|0)==16){d=nb[c[c[(c[46196]|0)+8>>2]>>2]&63](c[46197]|0,(c[f+4>>2]|0)+l|0,g>>>0<8192?g:8192)|0;e=c[c[46201]>>2]|0;c[46206]=d;c[e+16>>2]=d;if(!d){m=17;break}else{b=0;break}}gA(93648)}while(0);do if((m|0)==17)if(!l){iA(c[46191]|0);b=1;d=c[46206]|0;e=c[c[46201]>>2]|0;break}else{c[e+44>>2]=2;b=2;d=0;break}while(0);f=d+l|0;do if(f>>>0>(c[e+12>>2]|0)>>>0){m=hA(c[e+4>>2]|0,f+(d>>>1)|0)|0;d=c[46201]|0;c[(c[d>>2]|0)+4>>2]=m;d=c[(c[d>>2]|0)+4>>2]|0;if(!d)gA(93692);else{n=c[46206]|0;o=d;break}}else{n=d;o=c[e+4>>2]|0}while(0);n=n+l|0;c[46206]=n;a[o+n>>0]=0;o=c[46201]|0;a[(c[(c[o>>2]|0)+4>>2]|0)+((c[46206]|0)+1)>>0]=0;c[46193]=c[(c[o>>2]|0)+4>>2]}return b|0}function gA(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=c[15686]|0;c[b>>2]=a;f1(d,93588,b)|0;Sa(2)}function hA(a,b){a=a|0;b=b|0;return E_(a,b)|0}function iA(a){a=a|0;var b=0,d=0,e=0;d=c[46201]|0;if((d|0)!=0?(b=c[d>>2]|0,(b|0)!=0):0)e=4;else{Wz();b=Xz(c[46191]|0,16384)|0;d=c[46201]|0;c[d>>2]=b;if(!d)b=0;else e=4}jA(b,a);Yz();return}function jA(a,b){a=a|0;b=b|0;var d=0;d=c[(N_()|0)>>2]|0;kA(a);c[a>>2]=b;c[a+40>>2]=1;b=c[46201]|0;if(!b)b=0;else b=c[b>>2]|0;if((b|0)!=(a|0)){c[a+32>>2]=1;c[a+36>>2]=0}c[a+24>>2]=0;c[(N_()|0)>>2]=d;return}function kA(b){b=b|0;var d=0;if(b|0){c[b+16>>2]=0;d=b+4|0;a[c[d>>2]>>0]=0;a[(c[d>>2]|0)+1>>0]=0;c[b+8>>2]=c[d>>2];c[b+28>>2]=1;c[b+44>>2]=0;d=c[46201]|0;if(!d)d=0;else d=c[d>>2]|0;if((d|0)==(b|0))Yz()}return}function lA(){var b=0,d=0;d=c[46193]|0;b=(c[46194]|0)+-2|0;while(1){if((b|0)<=-1){b=0;break}if((a[d+b>>0]|0)==46){b=1;break}else b=b+-1|0}return b|0}function mA(a,b){a=a|0;b=b|0;var d=0;d=c[46210]|0;if((d|0)<(b|0)){if(!d)d=B_(b+1|0)|0;else d=E_(c[46211]|0,b+1|0)|0;c[46211]=d;c[46210]=b}else d=c[46211]|0;a0(d,a)|0;c[46195]=c[46211];return}function nA(a){a=a|0;return B_(a)|0}function oA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+2112|0;k=m+32|0;i=m+24|0;h=m+16|0;g=m+8|0;f=m;d=m+56|0;j=m+40|0;Sw(j,1024,m+1080|0);e=c[46195]|0;if(e|0){Vw(j,e)|0;Vw(j,93945)|0}Vw(j,b)|0;c[f>>2]=c[4699];X0(d,93948,f)|0;Vw(j,d)|0;a:do if(!(a[c[46193]>>0]|0))switch(((c[46200]|0)+-1|0)/2|0|0){case 2:{c[g>>2]=16384;X0(d,93968,g)|0;Vw(j,d)|0;b=c[46207]|0;if(!(a[b>>0]|0))break a;i=V_(b)|0;Vw(j,94030)|0;b=c[46207]|0;if((i|0)>80)a[b+80>>0]=0;Vw(j,b)|0;break a}case 3:{c[h>>2]=16384;X0(d,94049,h)|0;Vw(j,d)|0;b=c[46207]|0;if(!(a[b>>0]|0))break a;i=V_(b)|0;Vw(j,94117)|0;b=c[46207]|0;if((i|0)>80)a[b+80>>0]=0;Vw(j,b)|0;break a}case 1:{c[i>>2]=16384;X0(d,94136,i)|0;Vw(j,d)|0;break a}default:break a}else{Vw(j,93960)|0;Vw(j,c[46193]|0)|0;d=j+4|0;b=c[d>>2]|0;if(b>>>0>=(c[j+8>>2]|0)>>>0){Tw(j,1)|0;b=c[d>>2]|0}c[d>>2]=b+1;a[b>>0]=39}while(0);e=j+4|0;b=c[e>>2]|0;d=j+8|0;if(b>>>0>=(c[d>>2]|0)>>>0){Tw(j,1)|0;b=c[e>>2]|0}c[e>>2]=b+1;a[b>>0]=10;b=c[e>>2]|0;if(b>>>0>=(c[d>>2]|0)>>>0){Tw(j,1)|0;b=c[e>>2]|0}a[b>>0]=0;i=c[j>>2]|0;c[e>>2]=i;c[k>>2]=i;Ow(1,93831,k)|0;Ww(j);l=m;return}function pA(){qA(c[46193]|0);return}function qA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=c[46202]|0;a[j>>0]=a[191725]|0;i=c[46201]|0;e=c[i>>2]|0;d=c[e+4>>2]|0;if(j>>>0<(d+2|0)>>>0){f=d+((c[46206]|0)+2)|0;g=d+((c[e+12>>2]|0)+2)|0;k=d;h=e;while(1){if(f>>>0<=k>>>0)break;e=f+-1|0;k=g+-1|0;a[k>>0]=a[e>>0]|0;h=c[i>>2]|0;f=e;g=k;k=c[h+4>>2]|0}e=g-f|0;d=j+e|0;j=c[h+12>>2]|0;c[46206]=j;c[h+16>>2]=j;if(d>>>0<(k+2|0)>>>0)gA(94195);else{l=b+e|0;m=d}}else{l=b;m=j}b=m+-1|0;a[b>>0]=64;c[46193]=l;a[191725]=a[b>>0]|0;c[46202]=b;return}function rA(){var a=0;a=c[46201]|0;if(!a)a=0;else a=c[a>>2]|0;kA(a);return}function sA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+80|0;f=e;g=a+52|0;EA(a,c[g>>2]|0,18444);a=f+8|0;c[a>>2]=b;c[a+4>>2]=d;d=c[g>>2]|0;d=nb[c[d>>2]&63](d,f,4)|0;l=e;return d|0}function tA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=sA(b,d,e)|0;if(!f){f=Ly(b,72)|0;c[f+64>>2]=c[b+64>>2];g=f+24|0;h=c[b+24>>2]|0;c[g>>2]=h;a[g>>0]=h&255&-9;c[f+56>>2]=b;c[f+60>>2]=c[b+60>>2];b=f+8|0;c[b>>2]=d;c[b+4>>2]=e;Yx(f)|0}return f|0}function uA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;if(!(((b|0)!=0?(ny(a,0,b,f,0)|0)!=0:0)?(e=f,e=sA(a,c[e>>2]|0,c[e+4>>2]|0)|0,(e|0)!=0):0))if((d|0)!=0?(ny(a,0,b,f,1)|0)!=0:0){e=f;e=tA(a,c[e>>2]|0,c[e+4>>2]|0)|0;ry(a,0,e)}else e=0;l=g;return e|0}function vA(a){a=a|0;a=c[a+52>>2]|0;return nb[c[a>>2]&63](a,0,128)|0}function wA(a){a=a|0;var b=0;b=xA(a)|0;if(!b)a=0;else{b=c[b+52>>2]|0;a=nb[c[b>>2]&63](b,a,8)|0}return a|0}function xA(a){a=a|0;return c[a+56>>2]|0}function yA(a,b){a=a|0;b=b|0;a=c[a+52>>2]|0;return nb[c[a>>2]&63](a,b,2)|0}function zA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[46213]|0;e=(b|0)!=0;do if(!a)if(e){C_(b);a=0;break}else{a=B_(d)|0;break}else if(e){My(a,b);a=0;break}else{a=Ly(a,d)|0;break}while(0);return a|0}function AA(a,b,d){a=a|0;b=b|0;d=d|0;a=c[46213]|0;if(!a)C_(b);else My(a,b);return}function BA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=b+28|0;f=c[e>>2]|0;c[e>>2]=7;c[46213]=a;d=Bw(b,d)|0;c[e>>2]=f;c[46213]=0;return d|0}function CA(a,b,d){a=a|0;b=b|0;d=d|0;c[46213]=a;return nb[c[b>>2]&63](b,d,2)|0}function DA(a,b){a=a|0;b=b|0;var d=0,e=0;d=(Jw(b,0,0)|0)+28|0;e=c[d>>2]|0;c[d>>2]=7;c[46213]=a;if(!(xw(b)|0)){c[d>>2]=e;c[46213]=0;a=0}else a=1;return a|0}function EA(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0?(Jw(b,0,0)|0)!=(c|0):0)Jw(b,c,0)|0;return}function FA(a,b){a=a|0;b=b|0;if(!(Qz(a)|0))b=HA(a,b)|0;else GA(a,b)|0;return b|0}function GA(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;a[c>>0]=60;e=c;while(1){d=e+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;a[d>>0]=f;b=b+1|0;e=d}a[d>>0]=62;a[e+2>>0]=0;return c|0}function HA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a:do if((b|0)!=0?(a[b>>0]|0)!=0:0){a[d>>0]=34;l=a[b>>0]|0;q=0;g=((l+-45&255)<2|((l&255)+-48|0)>>>0<10)&1;h=0;i=0;j=0;e=d+1|0;f=b+1|0;b:while(1){k=e;while(1){if(!(l<<24>>24))break b;e=l&255;c:do if(l<<24>>24==34){a[k>>0]=92;m=g;n=1;k=k+1|0}else{if(!g){n=l<<24>>24>-1&(l<<24>>24!=95&(L$(e)|0)==0);m=0;n=n?1:h;break}switch(l<<24>>24){case 45:{n=(j|0)==0;m=n?g:0;n=n?h:1;break c}case 46:{n=(i|0)==0;m=n?g:0;n=n?h:1;i=i+1|0;break c}default:{n=(e+-48|0)>>>0<10;m=n?g:0;n=n?h:1;break c}}}while(0);e=k+1|0;a[k>>0]=l;p=f+1|0;o=a[f>>0]|0;j=j+1|0;f=c[5005]|0;if(!f){g=m;h=n;k=e;f=p;l=o;continue}g=o&255;h=o<<24>>24!=0;if((q&h?!(l<<24>>24==92|l<<24>>24>-1&((l+-45&255)>1&(L$(l<<24>>24)|0)==0)^1):0)?!(o<<24>>24>-1&((o+-45&255)>1&(L$(g)|0)==0)):0)break;if((j|0)<(f|0)|h^1){g=m;h=n;k=e;f=p;l=o;continue}if(l<<24>>24==92|l<<24>>24>-1&((L$(l<<24>>24)|0)==0&(l+-45&255)>1)^1){q=1;g=m;h=n;l=o;f=p;continue b}if(o<<24>>24>-1&((o+-45&255)>1&(L$(g)|0)==0)){q=1;g=m;h=n;l=o;f=p;continue b}a[e>>0]=92;a[k+2>>0]=10;g=m;h=1;j=0;k=k+3|0;f=p;l=o}a[e>>0]=92;a[k+2>>0]=10;q=0;g=m;h=1;j=0;l=o;e=k+3|0;f=p}a[k>>0]=34;a[k+1>>0]=0;if(!h){if((j|0)==1?((a[b>>0]|0)+-45&255)<2:0){b=d;break}else e=20024;while(1){f=c[e>>2]|0;if(!f)break a;if(!(N$(f,b)|0)){b=d;break}else e=e+4|0}}else b=d}else b=94227;while(0);return b|0}function IA(a){a=a|0;return FA(a,JA(a)|0)|0}function JA(a){a=a|0;var b=0;b=((V_(a)|0)<<1)+2|0;b=b>>>0>1024?b:1024;a=c[46215]|0;if(b>>>0>(c[46214]|0)>>>0){if(!a)a=B_(b)|0;else a=E_(a,b)|0;c[46215]=a;c[46214]=b}return a|0}function KA(a,b){a=a|0;b=b|0;a=vA(a)|0;while(1){if(!a){a=0;break}if((LA(a)|0)==0?Wy(a,b,0)|0:0){a=1;break}a=wA(a)|0}return a|0}function LA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=qy(b)|0;if((h|0)!=0?(a[h>>0]|0)!=37:0)d=0;else e=3;a:do if((e|0)==3){d=cx(b)|0;b:do if(d|0?(f=cx(xA(b)|0)|0,f|0):0){h=Dw(c[(cx(ez(b)|0)|0)+8>>2]|0)|0;g=d+12|0;e=f+12|0;d=0;while(1){if((d|0)>=(h|0))break b;f=c[(c[g>>2]|0)+(d<<2)>>2]|0;if((f|0?(i=c[(c[e>>2]|0)+(d<<2)>>2]|0,i|0):0)?a$(f,i)|0:0){d=0;break a}d=d+1|0}}while(0);d=Zw(b,0)|0;if(d)if((Dw(c[d+8>>2]|0)|0)>0)d=0;else return (Dw(c[d+12>>2]|0)|0)<1|0;else d=1}while(0);return d|0}function MA(b,d){b=b|0;d=d|0;var e=0,f=0;c[46216]=0;e=wx(b,94237)|0;if((e|0?((a[e>>0]|0)+-48|0)>>>0<10:0)?(f=h1(e,0,10)|0,(f|0)==0|(f|0)>59):0)c[5005]=f;NA(b,1);if(((OA(b,d,1)|0)!=-1?(PA(b,d)|0)!=-1:0)?(QA(b,d)|0)!=-1:0){c[5005]=128;b=kb[c[(c[(c[b+64>>2]|0)+8>>2]|0)+8>>2]&63](d)|0}else b=-1;return b|0}function NA(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[a>>2]&-9;d=vA(a)|0;while(1){if(!d)break;NA(d,0);d=wA(d)|0}a:do if(b|0){b=Ry(a)|0;while(1){if(!b)break a;c[b>>2]=c[b>>2]&-9;d=Dx(a,b)|0;while(1){if(!d)break;c[d>>2]=c[d>>2]&-9;d=Fx(a,d)|0}b=Sy(a,b)|0}}while(0);return}function OA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;if((e|0)==0?(xA(b)|0)!=0:0){i=0;g=191979;k=106488}else{k=(a[b+24>>0]&1)==0?191979:94281;g=(fy(b)|0)==0;c[46217]=mx(b,2,108373,0)|0;c[46218]=mx(b,2,108382,0)|0;i=1;g=g?191979:94284}f=qy(b)|0;if((f|0)!=0?(a[f>>0]|0)!=37:0){h=1;j=99578}else{h=0;j=191979;f=191979}do if((RA(b,d)|0)!=-1?(SA(b,d,g)|0)!=-1:0){g=(h|0)==0;if(h|i|0){if((SA(b,d,k)|0)==-1){f=-1;break}if((SA(b,d,99571)|0)==-1){f=-1;break}}if(!g?(bB(b,d,f)|0)==-1:0){f=-1;break}if(((SA(b,d,j)|0)!=-1?(SA(b,d,94292)|0)!=-1:0)?(c[46216]=(c[46216]|0)+1,(gB(b,d,e)|0)!=-1):0){c[b>>2]=c[b>>2]|8;f=0}else f=-1}else f=-1;while(0);return f|0}function PA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:do if((TA(a,b)|0)==-1)d=-1;else{k=Zw(ez(a)|0,0)|0;i=(k|0)==0;j=k+12|0;k=k+8|0;h=Ry(a)|0;while(1){if(!h){d=0;break a}if(UA(a,h,(c[h>>2]|0)>>>4,0)|0){if(i)d=0;else d=c[k>>2]|0;if((VA(h,b,d)|0)==-1){d=-1;break a}}g=Dx(a,h)|0;d=h;while(1){if(!g)break;f=g+-48|0;e=c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0;if((d|0)!=(e|0)?(UA(a,e,(c[h>>2]|0)>>>4,0)|0)!=0:0){if(i)d=0;else d=c[k>>2]|0;if((VA(c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0,b,d)|0)==-1){d=-1;break a}d=c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0}if(WA(a,g)|0){if(i)e=0;else e=c[j>>2]|0;if((XA(g,b,e)|0)==-1){d=-1;break a}}g=Fx(a,g)|0}h=Sy(a,h)|0}}while(0);return d|0}function QA(a,b){a=a|0;b=b|0;c[46216]=(c[46216]|0)+-1;if((RA(a,b)|0)==-1)a=-1;else a=((SA(a,b,107982)|0)==-1)<<31>>31;return a|0}function RA(a,b){a=a|0;b=b|0;var d=0;d=c[46216]|0;while(1){if((d|0)<=0){d=0;break}if((SA(a,b,150515)|0)==-1){d=-1;break}else d=d+-1|0}return d|0}function SA(a,b,d){a=a|0;b=b|0;d=d|0;return lb[c[(c[(c[a+64>>2]|0)+8>>2]|0)+4>>2]&127](b,d)|0}function TA(a,b){a=a|0;b=b|0;a=vA(a)|0;while(1){if(!a){a=0;break}if(!(LA(a)|0)){if((OA(a,b,0)|0)==-1){a=-1;break}if((PA(a,b)|0)==-1){a=-1;break}if((QA(a,b)|0)==-1){a=-1;break}}else TA(a,b)|0;a=wA(a)|0}return a|0}function UA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if((KA(a,b)|0)==0?(dB(a,b,c,d)|0)!=0:0)if((eB(a,b)|0)==0?(fB(b)|0)==0:0)e=5;else a=1;else e=5;if((e|0)==5)a=0;return a|0}function VA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=dz(a)|0;do if((RA(d,b)|0)!=-1?(YA(a,b)|0)!=-1:0){if((_A(a)|0)==0?($A(a,b,c)|0)==-1:0){a=-1;break}a=SA(d,b,94248)|0}else a=-1;while(0);return a|0}function WA(a,b){a=a|0;b=b|0;a=vA(a)|0;while(1){if(!a){a=1;break}if((LA(a)|0)==0?Ux(a,b,0)|0:0){a=0;break}a=wA(a)|0}return a|0}function XA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a>>2]&3;g=c[((e|0)==3?a:a+48|0)+40>>2]|0;e=c[((e|0)==2?a:a+-48|0)+40>>2]|0;f=dz(g)|0;do if((((((RA(f,b)|0)!=-1?(YA(g,b)|0)!=-1:0)?(ZA(a,b,c[46217]|0)|0)!=-1:0)?(g=(dy(dz(g)|0)|0)!=0,(SA(f,b,g?97053:97058)|0)!=-1):0)?(YA(e,b)|0)!=-1:0)?(ZA(a,b,c[46218]|0)|0)!=-1:0){if(!(_A(a)|0)){if(($A(a,b,d)|0)==-1){a=-1;break}}else if((aB(a,b,1)|0)==-1){a=-1;break}a=SA(f,b,94248)|0}else a=-1;while(0);return a|0}function YA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+32|0;g=i;d=i+8|0;e=qy(a)|0;f=dz(a)|0;if(!e){j=a+8|0;a=c[j+4>>2]|0;e=g;c[e>>2]=c[j>>2];c[e+4>>2]=a;X0(d,94268,g)|0;if((SA(f,b,d)|0)==-1)a=-1;else h=4}else if((bB(f,b,e)|0)==-1)a=-1;else h=4;if((h|0)==4)a=0;l=i;return a|0}function ZA(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if((d|0)!=0?(e=dz(b)|0,f=xx(b,d)|0,(a[f>>0]|0)!=0):0)if((SA(e,c,104958)|0)==-1)b=-1;else{do if(Qz(f)|0){if((bB(e,c,f)|0)==-1){b=-1;break a}}else{b=z$(f,58)|0;if(!b)if((cB(e,c,f,0)|0)==-1){b=-1;break a}else break;a[b>>0]=0;if((cB(e,c,f,0)|0)==-1){b=-1;break a}if((SA(e,c,104958)|0)==-1){b=-1;break a}if((cB(e,c,b+1|0,0)|0)==-1){b=-1;break a}a[b>>0]=58}while(0);b=0}else b=0;while(0);return b|0}function _A(a){a=a|0;return (c[a>>2]|0)>>>3&1|0}function $A(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:do if(!(c[a>>2]&2)){e=0;k=4}else{switch(aB(a,b,0)|0){case -1:{e=-1;break a}case 0:{e=0;k=4;break a}default:{}}e=1;k=4}while(0);b:do if((k|0)==4){f=cx(a)|0;j=dz(a)|0;c:do if(f){i=f+12|0;h=nb[c[d>>2]&63](d,0,128)|0;while(1){if(!h)break c;do if(c[a>>2]&2){g=c[46217]|0;if(g|0?(c[h+16>>2]|0)==(c[g+16>>2]|0):0)break;g=c[46218]|0;if(!((g|0)!=0?(c[h+16>>2]|0)==(c[g+16>>2]|0):0))k=12}else k=12;while(0);if((k|0)==12){k=0;f=h+16|0;if((c[(c[i>>2]|0)+(c[f>>2]<<2)>>2]|0)!=(c[h+12>>2]|0)){g=e+1|0;if(e){if((SA(j,b,94263)|0)==-1){e=-1;break b}if((RA(j,b)|0)==-1){e=-1;break b}}else{if((RA(j,b)|0)==-1){e=-1;break b}if((SA(j,b,94260)|0)==-1){e=-1;break b}c[46216]=(c[46216]|0)+1}if((bB(j,b,c[h+8>>2]|0)|0)==-1){e=-1;break b}if((SA(j,b,94266)|0)==-1){e=-1;break b}if((bB(j,b,c[(c[i>>2]|0)+(c[f>>2]<<2)>>2]|0)|0)==-1){e=-1;break b}else e=g}}h=nb[c[d>>2]&63](d,h,8)|0}}while(0);if((e|0)>0){if((SA(j,b,94258)|0)==-1){e=-1;break}c[46216]=(c[46216]|0)+-1}c[a>>2]=c[a>>2]|8;e=0}while(0);return e|0}function aB(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;e=qy(b)|0;b=dz(b)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0)if((SA(b,c,94251)|0)!=-1?(bB(b,c,e)|0)!=-1:0)if((d|0)!=0?(SA(b,c,94258)|0)==-1:0)b=-1;else{b=1;f=7}else b=-1;else{b=0;f=7}return b|0}function bB(a,b,c){a=a|0;b=b|0;c=c|0;return cB(a,b,c,1)|0}function cB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!d)c=HA(c,JA(c)|0)|0;else c=IA(c)|0;return SA(a,b,c)|0}function dB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a:do if(0>>0|(0==(e|0)?(c[b>>2]|0)>>>4>>>0>>0:0))b=0;else{b=Gx(a,b)|0;while(1){if(!b){b=1;break a}if(0>>0|(0==(e|0)?(c[c[b+40>>2]>>2]|0)>>>4>>>0>>0:0)){b=0;break a}b=Hx(a,b)|0}}while(0);return b|0}function eB(a,b){a=a|0;b=b|0;if(!(Gx(a,b)|0))a=(Dx(a,b)|0)==0&1;else a=0;return a|0}function fB(a){a=a|0;var b=0,d=0,e=0;a=cx(a)|0;a:do if(!a)a=0;else{d=a+8|0;e=c[d>>2]|0;b=a+12|0;a=nb[c[e>>2]&63](e,0,128)|0;while(1){if(!a){a=0;break a}if((c[(c[b>>2]|0)+(c[a+16>>2]<<2)>>2]|0)!=(c[a+12>>2]|0)){a=1;break a}e=c[d>>2]|0;a=nb[c[e>>2]&63](e,a,8)|0}}while(0);return a|0}function gB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=Zw(a,0)|0;if(e)if(((hB(a,b,108412,c[e+16>>2]|0,d)|0)!=-1?(hB(a,b,108399,c[e+8>>2]|0,d)|0)!=-1:0)?(hB(a,b,108368,c[e+12>>2]|0,d)|0)!=-1:0)f=5;else a=-1;else f=5;if((f|0)==5)a=0;return a|0}function hB(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=(g|0)!=0;if(m)l=0;else l=Gw(f,0)|0;k=(l|0)==0;j=nb[c[f>>2]&63](f,0,128)|0;g=0;while(1){if(!j){n=23;break}i=j+12|0;n=c[i>>2]|0;if((n|0)!=0?(a[n>>0]|0)!=0:0)n=12;else n=7;do if((n|0)==7){n=0;if(!(a[j+22>>0]|0)){if(!k){h=nb[c[l>>2]&63](l,j,4)|0;o=c[h+12>>2]|0;if(o|0?a[o>>0]|0:0){n=12;break}if(!(a[h+22>>0]|0))n=12}}else n=12}while(0);if((n|0)==12){n=0;h=g+1|0;if(g){if((SA(b,d,94263)|0)==-1){g=-1;break}if((RA(b,d)|0)==-1){g=-1;break}}else{if((RA(b,d)|0)==-1){g=-1;break}if((SA(b,d,e)|0)==-1){g=-1;break}if((SA(b,d,94260)|0)==-1){g=-1;break}c[46216]=(c[46216]|0)+1}if((bB(b,d,c[j+8>>2]|0)|0)==-1){g=-1;break}if((SA(b,d,94266)|0)==-1){g=-1;break}if((bB(b,d,c[i>>2]|0)|0)==-1){g=-1;break}else g=h}j=nb[c[f>>2]&63](f,j,8)|0}do if((n|0)==23){if((g|0)>0){c[46216]=(c[46216]|0)+-1;if((g|0)!=1){if((SA(b,d,150517)|0)==-1){g=-1;break}if((RA(b,d)|0)==-1){g=-1;break}}g=(SA(b,d,94295)|0)==-1;if(m|g){g=g<<31>>31;break}}else if(m){g=0;break}Gw(f,l)|0;g=0}while(0);return g|0}function iB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(c[b>>2]&3){case 0:{g=80;break}case 1:{g=81;break}case 3:case 2:{g=82;break}default:{}}b=lb[g&127](a,b)|0;if(!b)b=-1;else{mB(a,b,d,e,g,f);b=0}return b|0}function jB(a,b){a=a|0;b=b|0;if((dz(b)|0)!=(a|0))b=Ux(a,b,0)|0;return b|0}function kB(a,b){a=a|0;b=b|0;if((dz(b)|0)!=(a|0))b=Wy(a,b,0)|0;return b|0}function lB(a,b){a=a|0;b=b|0;return a|0}function mB(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=(f|0)!=0;if(h)vb[c&127](a,b,d);g=vA(a)|0;while(1){if(!g)break;i=lb[e&127](g,b)|0;if(i|0)mB(g,i,c,d,e,f);g=wA(g)|0}if(!h)vb[c&127](a,b,d);return}function nB(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1200|0;r=t+800|0;g=t;c[46219]=0;c[46220]=-2;f=r;i=200;n=g;p=0;q=0;o=r;a:while(1){b[o>>1]=p;if((f+(i<<1)+-2|0)>>>0>o>>>0)k=i;else{m=o-f>>1;e=m+1|0;if(i>>>0>9999){s=75;break}k=i<<1;k=k>>>0<1e4?k:1e4;h=B_(k*6|3)|0;if(h){E3(h|0,f|0,e<<1|0)|0;i=h+(k>>>1<<2)|0;E3(i|0,n|0,e<<2|0)|0;if((f|0)==(r|0)){e=0;f=h}else{C_(f);e=0;f=h}}else{e=4;i=n}j=(e|0)==0;h=f+(m<<1)|0;switch((j?((f+(k<<1)+-2|0)>>>0>h>>>0?0:9):e)&15){case 9:{e=1;s=76;break a}case 4:{s=75;break a}case 0:{g=j?i+(m<<2)|0:g;n=i;o=j?h:o;break}default:{e=0;break a}}}if((p|0)==6){e=0;s=76;break}e=a[94299+p>>0]|0;j=e<<24>>24;do if(e<<24>>24!=-18){h=c[46220]|0;if((h|0)==-2){h=Vz()|0;c[46220]=h}if((h|0)>=1)if(h>>>0<269)i=d[94379+h>>0]|0;else i=2;else{c[46220]=0;i=0}h=i+j|0;if(h>>>0<=59?(i|0)==(d[94648+h>>0]|0):0){p=a[94708+h>>0]|0;e=p<<24>>24;if(p<<24>>24<1){h=0-e|0;s=23;break}else{c[46220]=-2;g=g+4|0;c[g>>2]=c[46221];j=(q|0)==0?0:q+-1|0;h=o;break}}else s=22}else s=22;while(0);if((s|0)==22){s=0;p=a[94768+p>>0]|0;h=p&255;if(!(p<<24>>24)){h=c[46220]|0;b:do switch(q|0){case 0:{c[46219]=(c[46219]|0)+1;oA(140679);h=o;break}case 3:if((h|0)<1)if(!h){e=1;s=76;break a}else{h=o;break b}else{c[46220]=-2;h=o;break b}default:h=o}while(0);while(1){if(e<<24>>24==18)break;if((h|0)==(f|0)){e=1;s=76;break a}e=h+-2|0;g=g+-4|0;h=e;e=a[94299+(b[e>>1]|0)>>0]|0}g=g+4|0;c[g>>2]=c[46221];e=1;j=3}else s=23}do if((s|0)==23){s=0;i=d[94848+h>>0]|0;e=c[g+(1-i<<2)>>2]|0;c:do switch(h|0){case 2:{oB();pB();break}case 3:{if(c[46222]|0){oB();pB();_x(c[46222]|0)|0;c[46171]=0;c[46222]=0}break}case 6:{qB(c[g>>2]|0,c[g+-4>>2]|0,c[g+-8>>2]|0);break}case 7:{e=c[g>>2]|0;break}case 8:{e=0;break}case 9:{e=1;break}case 10:{e=0;break}case 11:{e=0;break}case 12:{e=1;break}case 21:if(!(c[g+-4>>2]|0)){sB();break c}else{rB();break c}case 24:{tB();break}case 25:{tB();break}case 26:{e=1;break}case 27:{e=0;break}case 30:{uB(c[g>>2]|0,0,0);break}case 31:{uB(c[g+-8>>2]|0,c[g>>2]|0,0);break}case 32:{uB(c[g+-16>>2]|0,c[g+-8>>2]|0,c[g>>2]|0);break}case 33:{vB(c[g+-8>>2]|0,c[g+-4>>2]|0);break}case 34:{vB(258,0);break}case 35:{e=258;break}case 36:{e=259;break}case 37:{e=260;break}case 38:{e=c[g+-4>>2]|0;break}case 39:{e=0;break}case 48:{wB(c[g+-8>>2]|0,c[g>>2]|0);break}case 49:{wB(c[g>>2]|0,0);break}case 51:{xB(c[g>>2]|0);break}case 52:{yB();break}case 53:{e=c[g>>2]|0;break}case 54:{e=0;break}case 55:{e=0;break}case 59:{e=c[g>>2]|0;break}case 60:{e=c[g>>2]|0;break}case 61:{e=c[g>>2]|0;break}case 62:{e=zB(c[g+-8>>2]|0,c[g>>2]|0)|0;break}default:{}}while(0);i=0-i|0;p=g+(i<<2)|0;i=o+(i<<1)|0;g=p+4|0;c[p+4>>2]=e;e=(d[94911+h>>0]|0)+-24|0;p=b[i>>1]|0;h=p+(a[94974+e>>0]|0)|0;if(h>>>0<60?(d[94648+h>>0]|0)==(p|0):0){e=a[94708+h>>0]|0;j=q;h=i;break}e=a[95009+e>>0]|0;j=q;h=i}while(0);i=k;p=e;q=j;o=h+2|0}if((s|0)==75){oA(137476);e=2;s=76}if((s|0)==76)if((f|0)!=(r|0))C_(f);l=t;return e|0}function oB(){var a=0,b=0;a=c[46223]|0;while(1){if(!a)break;HB(a+8|0);HB((c[46223]|0)+24|0);HB((c[46223]|0)+16|0);b=AB(c[46223]|0)|0;c[46223]=b;a=b}return}function pB(){pA();zy(c[46222]|0);return}function qB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=c[46222]|0;if(!f){a[184896]=d&1|(e&255)<<1&2|a[184896]&-12|8;f=c[46225]|0;a[g>>0]=a[184896]|0;a[g+1>>0]=a[184897]|0;a[g+2>>0]=a[184898]|0;a[g+3>>0]=a[184899]|0;f=Wx(b,g,f)|0;c[46222]=f}c[46171]=f;c[46223]=BB(c[46223]|0,f)|0;Pz(0,b)|0;l=h;return}function rB(){var b=0,d=0,e=0,f=0,g=0,h=0;GB(2);e=c[46223]|0;f=a[95044]|0;h=0;b=e+24|0;while(1){d=c[b>>2]|0;if(!d)break;if(((c[d>>2]|0)==267?(g=c[d+4>>2]|0,(a[g>>0]|0)==f<<24>>24):0)?(a$(g,95044)|0)==0:0)b=c[d+8>>2]|0;else b=h;h=b;b=d+12|0}b=e+16|0;a:while(1){e=c[b>>2]|0;b=e+12|0;if(!(c[b>>2]|0))break;d=e+4|0;if((c[e>>2]|0)==262){e=c[d>>2]|0;d=Ry(e)|0;while(1){if(!d)continue a;g=Wy(c[c[46223]>>2]|0,d,0)|0;OB(g,0,c[b>>2]|0,h);d=Sy(e,d)|0}}else while(1){d=c[d>>2]|0;if(!d)continue a;OB(c[d+4>>2]|0,c[d+8>>2]|0,c[b>>2]|0,h);d=d+12|0}}HB((c[46223]|0)+8|0);HB((c[46223]|0)+16|0);HB((c[46223]|0)+24|0);c[(c[46223]|0)+4>>2]=0;return}function sB(){var a=0;GB(1);a=(c[46223]|0)+8|0;while(1){a=c[a>>2]|0;if(!a)break;NB(c[a+4>>2]|0);a=a+12|0}HB((c[46223]|0)+8|0);HB((c[46223]|0)+24|0);HB((c[46223]|0)+16|0);c[(c[46223]|0)+4>>2]=0;return}function tB(){var a=0,b=0;a=c[46223]|0;b=c[a+8>>2]|0;if(!b){b=c[a+4>>2]|0;if(!b)b=0;else{b=MB(b)|0;a=c[46223]|0}c[a+4>>2]=0}else{b=LB(b)|0;a=c[46223]|0;c[a+12>>2]=0;c[a+8>>2]=0}if(b|0)DB(a+16|0,b);return}function uB(a,b,d){a=a|0;b=b|0;d=d|0;if(d)b=JB(b,d)|0;d=KB($y(c[c[46223]>>2]|0,a,1)|0,b)|0;DB((c[46223]|0)+8|0,d);Pz(c[46222]|0,a)|0;return}function vB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;if(d|0)FB();d=(c[46223]|0)+24|0;while(1){d=c[d>>2]|0;if(!d)break;if(!(c[d+8>>2]|0))FB();d=d+12|0}g=(b|0)==260?2:(b|0)==259&1;GB(g);b=c[46223]|0;d=b+24|0;while(1){f=c[d>>2]|0;if(!f)break;do if((c[f>>2]|0)!=267){d=c[f+4>>2]|0;e=c[b>>2]|0;if(!((a[d+21>>0]|0)!=0&(e|0)==(c[46222]|0))){d=mx(e,g,c[d+8>>2]|0,c[f+8>>2]|0)|0;b=c[46223]|0;if((c[b>>2]|0)!=(c[46222]|0))break}a[d+22>>0]=1}while(0);d=f+12|0}HB(b+24|0);return}function wB(a,b){a=a|0;b=b|0;b=CB(a,b)|0;DB((c[46223]|0)+24|0,b);return}function xB(a){a=a|0;var b=0;b=c[46223]|0;c[46223]=BB(b,uA(c[b>>2]|0,a,1)|0)|0;Pz(c[46222]|0,a)|0;return}function yB(){var a=0,b=0;a=c[46223]|0;b=c[a>>2]|0;a=AB(a)|0;c[46223]=a;c[a+4>>2]=b;return}function zB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+1024|0;f=g;d=V_(a)|0;d=d+1+(V_(b)|0)|0;if(d>>>0<1025)d=f;else d=B_(d)|0;a0(d,a)|0;o1(d,b)|0;e=Nz(c[46222]|0,d)|0;Pz(c[46222]|0,a)|0;Pz(c[46222]|0,b)|0;if((d|0)!=(f|0))C_(d);l=g;return e|0}function AB(a){a=a|0;var b=0;b=c[(c[46223]|0)+32>>2]|0;My(c[46222]|0,a);return b|0}function BB(a,b){a=a|0;b=b|0;var d=0;d=Ly(c[46222]|0,36)|0;c[d+32>>2]=a;c[d>>2]=b;return d|0}function CB(a,b){a=a|0;b=b|0;return EB(267,a,b)|0}function DB(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;e=c[d>>2]|0;if(e|0)c[e+12>>2]=b;c[d>>2]=b;if(!(c[a>>2]|0))c[a>>2]=b;return}function EB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Ly(c[46222]|0,16)|0;c[e>>2]=a;c[e+4>>2]=b;c[e+8>>2]=d;return e|0}function FB(){var a=0;a=l;l=l+16|0;Ow(0,95048,a)|0;l=a;return}function GB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=(b|0)==2;d=(c[46223]|0)+24|0;while(1){d=c[d>>2]|0;if(!d)break;e=d+4|0;f=c[e>>2]|0;if(!((g?(a[f>>0]|0)==(a[95044]|0):0)?!(a$(f,95044)|0):0)){h=mx(c[c[46223]>>2]|0,b,f,0)|0;c[e>>2]=h;if(!h)c[e>>2]=mx(c[c[46223]>>2]|0,b,f,191979)|0;c[d>>2]=266;Pz(c[46222]|0,f)|0}d=d+12|0}return}function HB(a){a=a|0;IB(c[a>>2]|0);c[a+4>>2]=0;c[a>>2]=0;return}function IB(a){a=a|0;var b=0;while(1){if(!a)break;b=c[a+12>>2]|0;switch(c[a>>2]|0){case 265:{IB(c[a+4>>2]|0);break}case 266:case 267:{Pz(c[46222]|0,c[a+8>>2]|0)|0;break}default:{}}My(c[46222]|0,a);a=b}return}function JB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+1040|0;f=h;g=h+8|0;d=V_(a)|0;d=d+2+(V_(b)|0)|0;if(d>>>0<1025)e=g;else e=B_(d)|0;c[f>>2]=a;c[f+4>>2]=b;X0(e,95081,f)|0;d=Nz(c[46222]|0,e)|0;Pz(c[46222]|0,a)|0;Pz(c[46222]|0,b)|0;if((e|0)!=(g|0))C_(e);l=h;return d|0}function KB(a,b){a=a|0;b=b|0;return EB(259,a,b)|0}function LB(a){a=a|0;return EB(265,a,0)|0}function MB(a){a=a|0;return EB(262,a,0)|0}function NB(a){a=a|0;var b=0,d=0;b=(c[46223]|0)+24|0;while(1){b=c[b>>2]|0;if(!b)break;if((c[b>>2]|0)==266?(d=c[b+4>>2]|0,d|0):0)qx(a,d,c[b+8>>2]|0)|0;b=b+12|0}return}function OB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=d+4|0;a:do if((c[d>>2]|0)==262){d=c[f>>2]|0;f=Ry(d)|0;while(1){if(!f)break a;PB(a,b,Wy(c[c[46223]>>2]|0,f,0)|0,0,e);f=Sy(d,f)|0}}else while(1){f=c[f>>2]|0;if(!f)break a;d=Wy(c[c[46223]>>2]|0,c[f+4>>2]|0,0)|0;PB(a,b,d,c[f+8>>2]|0,e);f=f+12|0}while(0);return}function PB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;d=Qx(c[c[46223]>>2]|0,a,d,f,1)|0;if(d|0){g=c[d>>2]&3;f=c[((g|0)==2?d:d+-48|0)+40>>2]|0;a=(f|0)==(a|0)?(c[((g|0)==3?d:d+48|0)+40>>2]|0)!=(f|0):0;QB(d,108373,a?e:b);QB(d,108382,a?b:e);NB(d)}return}function QB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(d|0){e=mx(c[c[46223]>>2]|0,2,b,0)|0;if(!e)e=mx(c[c[46223]>>2]|0,2,b,191979)|0;qx(a,e,d)|0}return}function RB(a,b,d){a=a|0;b=b|0;d=d|0;c[46191]=b;c[46222]=a;c[46171]=0;a=d|0?d:18496;c[46225]=a;Uz(a,b);nB()|0;a=c[46171]|0;if(!a){rA();a=c[46171]|0}return a|0}function SB(a,b){a=a|0;b=b|0;return RB(0,a,b)|0}function TB(a,b){a=a|0;b=b|0;b=vC(a,1,b)|0;if(!b)b=999;else{b=c[b+16>>2]|0;c[a+184>>2]=c[b+4>>2];c[a+172>>2]=c[b+12>>2];c[a+176>>2]=c[b>>2];c[a+180>>2]=c[b+16>>2];b=300}return b|0}function UB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i;zz(b,134401,280,1)|0;g=b+16|0;c[(c[g>>2]|0)+144>>2]=a;if((ez(b)|0)!=(b|0))c[(c[(ez(b)|0)+16>>2]|0)+144>>2]=a;e=wx(b,95297)|0;d=a+172|0;if((e|0)!=0?(c[d>>2]=0,(TB(a,e)|0)==999):0){d=wC(a,1,e)|0;c[f>>2]=e;c[f+4>>2]=d;Ow(1,95824,f)|0;d=-1}else{e=c[d>>2]|0;if(!e)d=-1;else{BG(1);aH(b,c[c[a+180>>2]>>2]&1);d=c[(c[g>>2]|0)+8>>2]|0;c[(c[(ez(b)|0)+16>>2]|0)+8>>2]=d;KK();d=c[e>>2]|0;if(d|0?(tb[d&127](b),h=c[e+4>>2]|0,h|0):0)c[(c[g>>2]|0)+148>>2]=h;BG(0);d=0}}l=i;return d|0}function VB(a,b){a=a|0;b=b|0;var d=0,e=0;if(zz(b,134401,0,1)|0){d=b+16|0;a=c[d>>2]|0;e=c[a+148>>2]|0;if(e){tb[e&127](b);a=c[d>>2]|0;c[a+148>>2]=0}if(c[a+8>>2]|0)fH(b)}return 0}function WB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;d=c[b+76>>2]|0;f=c[b>>2]|0;if((d|0)!=0?(e=c[d>>2]|0,(e|0)!=0):0){tb[e&127](b);g=12}else g=4;do if((g|0)==4)if((c[b+40>>2]|0)==0?(h=b+36|0,(c[h>>2]|0)==0):0){if(a[f+13>>0]|0)XB(b);d=b+32|0;e=c[d>>2]|0;if(!e){c[h>>2]=c[15653];g=12;break}f=K1(e,103486)|0;c[h>>2]=f;if(!f){j=c[(c[b+12>>2]|0)+16>>2]|0;h=c[d>>2]|0;d=b$(c[(N_()|0)>>2]|0)|0;c[i>>2]=h;c[i+4>>2]=d;ub[j&63](95087,i);d=1}else g=12}else g=12;while(0);if((g|0)==12)if(!(c[b+152>>2]&1024))d=0;else{ub[c[(c[b+12>>2]|0)+16>>2]&63](95125,j);d=1}l=k;return d|0}function XB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+112|0;e=h;g=h+4|0;d=c[b+24>>2]|0;if(!d)a[g>>0]=0;else{c[e>>2]=d+1;X0(g,95143,e)|0}e=c[b+20>>2]|0;e=e|0?e:95147;d=V_(e)|0;i=V_(g)|0;f=b+52|0;i=d+1+i+(V_(c[f>>2]|0)|0)|0;d=i+11|0;if((c[46226]|0)>>>0<(i+1|0)>>>0){c[46226]=d;d=E_(c[46227]|0,d)|0;c[46227]=d}else d=c[46227]|0;a0(d,e)|0;o1(c[46227]|0,g)|0;d=c[46227]|0;d=d+(V_(d)|0)|0;a[d>>0]=46;a[d+1>>0]=0;d=m1(c[f>>2]|0)|0;f=c[46227]|0;while(1){e=n1(d,58)|0;if(!e)break;o1(f,e+1|0)|0;i=c[46227]|0;g=i+(V_(i)|0)|0;a[g>>0]=46;a[g+1>>0]=0;a[e>>0]=0;f=i}o1(f,d)|0;C_(d);c[b+32>>2]=c[46227];l=h;return}function YB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h+8|0;f=h;if((b|0)!=0&(d|0)!=0){if(c[a+152>>2]&1024|0){ub[c[(c[a+12>>2]|0)+16>>2]&63](95125,f);Sa(1)}if((ZB(a,b,d)|0)==(d|0))e=d;else{f=c[(c[a+12>>2]|0)+16>>2]|0;c[g>>2]=d;ub[f&63](95157,g);Sa(1)}}else e=0;l=h;return e|0}function ZB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;f=c[(c[b>>2]|0)+104>>2]|0;do if(!f){j=b+40|0;h=c[j>>2]|0;if(!h){e=D1(d,1,e,c[b+36>>2]|0)|0;break}f=b+44|0;i=b+48|0;g=c[i>>2]|0;do if(((c[f>>2]|0)+-1-g|0)>>>0>>0){g=e+4096+g&-4096;c[f>>2]=g;f=E_(h,g)|0;c[j>>2]=f;if(!f){ub[c[(c[b+12>>2]|0)+16>>2]&63](95182,n);Sa(1)}else{k=f;m=c[i>>2]|0;break}}else{k=h;m=g}while(0);E3(k+m|0,d|0,e|0)|0;n=(c[i>>2]|0)+e|0;c[i>>2]=n;a[(c[j>>2]|0)+n>>0]=0}else e=nb[f&63](b,d,e)|0;while(0);l=o;return e|0}function _B(a,b){a=a|0;b=b|0;var c=0;c=V_(b)|0;b=(YB(a,b,c)|0)==(c|0);return (b?1:-1)|0}function $B(b,c){b=b|0;c=c|0;var d=0,e=0;d=l;l=l+16|0;e=d;a[e>>0]=c;b=(YB(b,e,1)|0)==1;l=d;return (b?c:-1)|0}function aC(b){b=b|0;var d=0;d=c[b+36>>2]|0;if(((d|0)!=0?(a[b+144>>0]|0)==0:0)?(c[(c[b>>2]|0)+104>>2]|0)==0:0)b=v1(d)|0;else b=0;return b|0}function bC(a){a=a|0;var b=0,d=0;b=c[a+76>>2]|0;if(b|0?(d=c[b+4>>2]|0,d|0):0)tb[d&127](a);aC(a)|0;return}function cC(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=c[a+76>>2]|0;if(c[a+152>>2]&1024|0){ub[c[(c[a+12>>2]|0)+16>>2]&63](95209,e);Sa(1)}if((d|0)!=0?(b=c[d+8>>2]|0,(b|0)!=0):0)tb[b&127](a);else{aC(a)|0;dC(a)}l=e;return}function dC(b){b=b|0;var d=0,e=0,f=0;d=b+32|0;if((c[d>>2]|0?(e=b+36|0,f=c[e>>2]|0,(f|0)!=(c[15653]|0)):0)?(a[b+144>>0]|0)==0:0){if(f|0){r1(f)|0;c[e>>2]=0}c[d>>2]=0}return}function eC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+1056|0;f=i;h=i+24|0;g=i+8|0;c[g>>2]=d;e=p0(h,1024,b,g)|0;if((e|0)>=0){if((e|0)>1023){e=uH(e+1|0)|0;c[g>>2]=d;f=e;e=Y0(e,b,g)|0}else f=h;YB(a,f,e)|0;if((f|0)!=(h|0))C_(f)}else{c[f>>2]=b$(c[(N_()|0)>>2]|0)|0;Ow(1,95226,f)|0}l=i;return}function fC(a,b){a=a|0;b=+b;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=gC(e,b)|0;YB(a,f,c[e>>2]|0)|0;l=d;return}function gC(b,d){b=b|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!(d<-1.0e15))if(!(d>1.0e15)){d=d*1.0e4;f=~~((d<0.0?-.5:.5)+d);if(!f){f=135312;e=1}else{l=(f|0)<0;k=4;i=0;e=191746;f=l?0-f|0:f;while(1){if(!((f|0)!=0|(k|0)>0))break;g=(f|0)%10|0;j=(f|0)/10|0;h=e+-1|0;if((g|0)==0&i<<24>>24==0)f=0;else{a[h>>0]=g|48;f=1;e=h}if((k|0)==1)if(!(f<<24>>24))f=1;else{e=e+-1|0;a[e>>0]=46;f=1}k=k+-1|0;i=f;f=j}if(l){e=e+-1|0;a[e>>0]=45}f=e;e=191746-e|0}}else{f=95241;e=18}else{f=95240;e=19}c[b>>2]=e;return f|0}function hC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=gC(e,+h[b>>3])|0;YB(a,f,c[e>>2]|0)|0;YB(a,99578,1)|0;b=gC(e,+h[b+8>>3])|0;YB(a,b,c[e>>2]|0)|0;l=d;return}function iC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;e=0;while(1){h=b+(e<<4)|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];hC(a,f);e=e+1|0;if((e|0)>=(d|0))break;YB(a,99578,1)|0}l=g;return}function jC(a,b){a=a|0;b=b|0;var d=0;d=tH(392)|0;if(d|0){c[d>>2]=20052;c[d+16>>2]=23;c[d+32>>2]=a;c[d+36>>2]=b}return d|0}function kC(a){a=a|0;var b=0,d=0,e=0,f=0;b=tH(392)|0;d=b;e=a;f=d+40|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));f=b+60|0;e=a+60|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];f=b+80|0;e=a+80|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];return b|0}function lC(a){a=a|0;sC(a);C_(a);return}function mC(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+160|0;d=c[e>>2]|0;if(d){e=c[46228]|0;if(e){d=c[e+4>>2]|0;if(!d){d=tH(632)|0;c[(c[46228]|0)+4>>2]=d}}}else{d=tH(632)|0;c[e>>2]=d;c[a+164>>2]=d}c[46228]=d;c[d+32>>2]=b;c[d>>2]=a;return}function nC(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+160|0;d=c[e>>2]|0;if(d){e=c[46229]|0;if(e){d=c[e+4>>2]|0;if(!d){d=tH(632)|0;c[(c[46229]|0)+4>>2]=d}}}else{d=tH(632)|0;c[e>>2]=d;c[a+164>>2]=d}c[46229]=d;c[d+52>>2]=b;c[d>>2]=a;return (vC(a,3,b)|0)!=0|0}function oC(a){a=a|0;var b=0;b=c[a+160>>2]|0;c[a+164>>2]=b;return b|0}function pC(a){a=a|0;var b=0,d=0,e=0;a=a+164|0;b=c[a>>2]|0;d=c[b+4>>2]|0;if(d|0?(e=d+52|0,(c[e>>2]|0)==0):0)c[e>>2]=c[b+52>>2];c[a>>2]=d;return d|0}function qC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+8|0;f=b+10|0;if((c[e>>2]|0)>(b|0))a=c[a>>2]|0;else{c[e>>2]=f;f=wH(c[a>>2]|0,f<<2)|0;c[a>>2]=f;a=f}c[a+(b<<2)>>2]=d;return}function rC(a){a=a|0;var b=0;b=c[a>>2]|0;if(b|0)C_(b);c[a>>2]=0;c[a+8>>2]=0;c[a+4>>2]=0;return}function sC(a){a=a|0;var b=0,d=0,e=0;d=a+160|0;b=c[d>>2]|0;while(1){if(!b)break;e=c[b+4>>2]|0;rC(b+604|0);rC(b+592|0);C_(c[b+584>>2]|0);C_(c[b+588>>2]|0);C_(b);b=e}c[46229]=0;c[46228]=0;c[a+192>>2]=0;c[a+164>>2]=0;c[d>>2]=0;c[a+28>>2]=0;return}function tC(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0;n=l;l=l+128|0;k=n+64|0;m=n;T0(k,e,63)|0;i=z$(k,58)|0;if(i|0)a[i>>0]=0;b=b+60+(d<<2)|0;while(1){d=c[b>>2]|0;if(!d){d=b;b=0;break}T0(m,c[d+4>>2]|0,63)|0;d=z$(m,58)|0;if(d|0)a[d>>0]=0;if((a$(k,m)|0)<1){j=9;break}b=c[b>>2]|0}while(1){if((j|0)==9){d=b;b=c[b>>2]|0}if(!b)break;T0(m,c[b+4>>2]|0,63)|0;b=z$(m,58)|0;if(b|0)a[b>>0]=0;if(a$(k,m)|0)break;b=c[d>>2]|0;if((c[b+8>>2]|0)<=(f|0))break;j=9}m=uH(20)|0;c[m>>2]=c[d>>2];c[d>>2]=m;c[m+4>>2]=e;c[m+8>>2]=f;c[m+12>>2]=g;c[m+16>>2]=h;l=n;return 1}function uC(a,b){a=a|0;b=b|0;b=l;l=l+16|0;Ow(1,95321,b)|0;l=b;return 0}function vC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+144|0;r=s;o=s+80|0;p=s+16|0;n=(d+-3|0)>>>0<2?0:d;T0(o,e,63)|0;e=z$(o,58)|0;if(e){f=e+1|0;a[e>>0]=0;e=z$(f,58)|0;if(!e)m=0;else{a[e>>0]=0;m=e+1|0}}else{m=0;f=0}i=(f|0)!=0;j=(m|0)==0;k=(n|0)==(d|0);h=b+60+(d<<2)|0;a:while(1){e=c[h>>2]|0;if(!e){e=0;break}T0(p,c[e+4>>2]|0,63)|0;e=z$(p,58)|0;if(!e)e=0;else{a[e>>0]=0;e=e+1|0}do if(!(a$(p,o)|0)){g=(e|0)!=0;if(i&g?a$(e,f)|0:0)break;if(!j?a$(m,c[(c[(c[h>>2]|0)+12>>2]|0)+8>>2]|0)|0:0)break;if(k|g^1){q=16;break a}if(vC(b,n,e)|0){q=16;break a}}while(0);h=c[h>>2]|0}do if((q|0)==16){e=c[h>>2]|0;if(e){f=e+16|0;if((c[f>>2]|0)==0?(uC(0,0)|0,(c[f>>2]|0)==0):0){e=0;break}if((c[b+8>>2]|0)>0){q=c[15686]|0;o=c[e+4>>2]|0;p=c[(c[e+12>>2]|0)+8>>2]|0;c[r>>2]=c[20064+(d<<2)>>2];c[r+4>>2]=o;c[r+8>>2]=p;f1(q,95352,r)|0}}else e=0}while(0);c[b+80+(d<<2)>>2]=e;l=s;return e|0}function wC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;do if(!e)e=0;else{if(c[5021]|0){Sw(184920,0,0);c[5021]=0}h=m1(e)|0;e=z$(h,58)|0;if(e){a[e>>0]=0;f=b+60+(d<<2)|0;e=1;g=f;while(1){b=c[g>>2]|0;if(!b)break;d=m1(c[b+4>>2]|0)|0;b=z$(d,58)|0;if(b|0)a[b>>0]=0;if(!((a[h>>0]|0)!=0?(N$(h,d)|0)!=0:0)){e=c[46231]|0;if(e>>>0>=(c[46232]|0)>>>0){Tw(184920,1)|0;e=c[46231]|0}c[46231]=e+1;a[e>>0]=32;Vw(184920,c[(c[g>>2]|0)+4>>2]|0)|0;e=c[46231]|0;if(e>>>0>=(c[46232]|0)>>>0){Tw(184920,1)|0;e=c[46231]|0}c[46231]=e+1;a[e>>0]=58;Vw(184920,c[(c[(c[g>>2]|0)+12>>2]|0)+8>>2]|0)|0;e=0}C_(d);g=c[g>>2]|0}C_(h);if(e<<24>>24){g=0;i=19}}else{C_(h);g=0;f=b+60+(d<<2)|0;e=1;i=19}if((i|0)==19){while(1){b=c[f>>2]|0;if(!b)break;d=m1(c[b+4>>2]|0)|0;b=z$(d,58)|0;if(b|0)a[b>>0]=0;if(!((g|0)!=0?(N$(g,d)|0)==0:0)){e=c[46231]|0;if(e>>>0>=(c[46232]|0)>>>0){Tw(184920,1)|0;e=c[46231]|0}c[46231]=e+1;a[e>>0]=32;Vw(184920,d)|0;e=0}g=d;f=c[f>>2]|0;i=19}if(e<<24>>24){e=191979;break}}e=c[46231]|0;if(e>>>0>=(c[46232]|0)>>>0){Tw(184920,1)|0;e=c[46231]|0}a[e>>0]=0;e=c[46230]|0;c[46231]=e}while(0);return e|0}function xC(b){b=b|0;var d=0;if(!b)qa(108182,95369,573,95383);if(!(a[b>>0]|0))qa(108187,95369,574,95383);d=c[46234]|0;if(!d)b=0;else b=nb[c[d>>2]&63](d,b,512)|0;return b|0}function yC(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;if(!b)qa(108230,95369,589,95400);g=b+8|0;e=c[g>>2]|0;if(!e)qa(108233,95369,590,95400);if(!(a[e>>0]|0))qa(108242,95369,591,95400);h=b+20|0;f=c[h>>2]|0;do if(!f){d=YL(e)|0;if(!d){c[i>>2]=c[g>>2];Ow(0,95424,i)|0;d=0;break}i=K1(d,135739)|0;c[h>>2]=i;if(!i){c[j>>2]=b$(c[(N_()|0)>>2]|0)|0;c[j+4>>2]=d;Ow(0,95449,j)|0;d=0;break}d=c[46235]|0;if((d|0)>49){a[b+17>>0]=1;d=1;break}else{c[46235]=d+1;d=1;break}}else{Y1(f,0,0)|0;if(!(c[h>>2]|0))qa(95470,95369,614,95400);else d=1}while(0);l=k;return d|0}function zC(b){b=b|0;var d=0,e=0;if(a[b+17>>0]|0?(d=b+20|0,e=c[d>>2]|0,e|0):0){r1(e)|0;c[d>>2]=0}return}function AC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0;if(!b){e=-1;d=-1}else{e=c[b+48>>2]|0;f=+(e|0);if(!e){g=+h[d>>3];f=+h[d+8>>3]}else{h[d+8>>3]=f;h[d>>3]=f;g=f}e=~~(+((c[b+40>>2]|0)*72|0)/g);d=~~(+((c[b+44>>2]|0)*72|0)/f)}c[a>>2]=e;c[a+4>>2]=d;return}function BC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0.0;m=l;l=l+48|0;f=m+16|0;j=m;k=m+32|0;if((e|0)!=0?(a[e>>0]|0)!=0:0){if((0==0?(g=c[46362]|0,(c[46236]|0)!=(g|0)):0)?(c[46236]=g,i=c[46234]|0,i|0):0){xw(i)|0;c[46234]=0}n=+h[(c[(c[d+16>>2]|0)+8>>2]|0)+24>>3];n=!(n>=1.0)?96.0:n;h[j+8>>3]=n;h[j>>3]=n;d=CC(e)|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];AC(k,d,f);d=c[k>>2]|0;f=c[k+4>>2]|0}else{d=-1;f=-1}c[b>>2]=d;c[b+4>>2]=f;l=m;return}function CC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;e=f;if(!a)qa(108182,95369,638,95476);if(!(c[46234]|0))c[46234]=Bw(20088,c[4563]|0)|0;b=xC(a)|0;a:do if(!b){b=tH(64)|0;if(!b)b=0;else{d=b+8|0;c[d>>2]=Nz(0,a)|0;if(!((yC(b)|0)<<24>>24)){DC(b);b=0;break}if(!(c[b+20>>2]|0))qa(95470,95369,653,95476);do switch(EC(b)|0){case 0:{a=UJ(c[d>>2]|0)|0;c[b+52>>2]=a;if(!a){c[e>>2]=c[d>>2];Ow(0,95493,e)|0;DC(b);b=0;break a}break}case 2:{FC(b);break}case 3:{GC(b);break}case 1:{HC(b);break}case 4:{IC(b);break}case 6:{JC(b);break}case 11:{KC(b);break}case 8:{LC(b);break}case 5:{MC(b);break}case 12:{NC(b);break}default:{}}while(0);zC(b);e=c[46234]|0;nb[c[e>>2]&63](e,b,1)|0}}else zC(b);while(0);l=f;return b|0}function DC(a){a=a|0;var b=0;b=c[a+8>>2]|0;if(b|0)Pz(0,b)|0;C_(a);return}function EC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+224|0;f=j+200|0;g=j;h=a+20|0;b=c[h>>2]|0;a:do if((b|0)!=0?(f3(f,1,20,b)|0)==20:0){d=0;while(1){if(d>>>0>=10){i=13;break a}if(!(K0(f,c[20124+(d<<4)>>2]|0,c[20124+(d<<4)+4>>2]|0)|0))break;d=d+1|0}e=a+28|0;c[e>>2]=c[20124+(d<<4)+12>>2];b=c[20124+(d<<4)+8>>2]|0;a=a+24|0;c[a>>2]=b;switch(d|0){case 7:break;case 8:{if(K0(f+8|0,95709,4)|0)break a;c[e>>2]=95714;c[a>>2]=11;b=11;break a}default:break a}while(1){if(!(N0(g,200,c[h>>2]|0)|0)){i=11;break}if(!(K0(g,95704,4)|0)){i=8;break}}if((i|0)==8){c[e>>2]=98777;c[a>>2]=8;b=8;break}else if((i|0)==11){b=c[a>>2]|0;break}}else i=13;while(0);if((i|0)==13){c[a+28>>2]=95719;c[a+24>>2]=0;b=0}l=j;return b|0}function FC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;Y1(c[e>>2]|0,6,0)|0;if((WC(c[e>>2]|0,2,b)|0)<<24>>24?(WC(c[e>>2]|0,2,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function GC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;Y1(c[e>>2]|0,16,0)|0;if((OC(c[e>>2]|0,4,b)|0)<<24>>24?(OC(c[e>>2]|0,4,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function HC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;b=h+12|0;d=h+8|0;e=h+4|0;f=h;c[a+48>>2]=0;g=a+20|0;Y1(c[g>>2]|0,16,0)|0;if((((WC(c[g>>2]|0,2,b)|0)<<24>>24?(WC(c[g>>2]|0,2,d)|0)<<24>>24:0)?(WC(c[g>>2]|0,2,e)|0)<<24>>24:0)?(WC(c[g>>2]|0,2,f)|0)<<24>>24:0){c[a+40>>2]=c[b>>2]<<16|c[d>>2];c[a+44>>2]=c[e>>2]<<16|c[f>>2]}l=h;return}function IC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+32|0;b=m+16|0;e=m+12|0;f=m+8|0;h=m+4|0;i=m;c[a+48>>2]=0;j=a+20|0;while(1){if(!((OC(c[j>>2]|0,1,b)|0)<<24>>24))break;d=c[b>>2]|0;if((d|0)==255)continue;if(z$(95692,d)|0)continue;if((d|0)==192){k=6;break}g=c[j>>2]|0;if((d|0)==194){k=11;break}if(!((OC(g,2,e)|0)<<24>>24))break;Y1(c[j>>2]|0,(c[e>>2]|0)+-2|0,1)|0}if((k|0)==6){if(((OC(c[j>>2]|0,3,i)|0)<<24>>24?(OC(c[j>>2]|0,2,f)|0)<<24>>24:0)?(OC(c[j>>2]|0,2,h)|0)<<24>>24:0){c[a+44>>2]=c[f>>2];c[a+40>>2]=c[h>>2]}}else if((((k|0)==11?(OC(g,3,i)|0)<<24>>24:0)?(OC(c[j>>2]|0,2,f)|0)<<24>>24:0)?(OC(c[j>>2]|0,2,h)|0)<<24>>24:0){c[a+44>>2]=c[f>>2];c[a+40>>2]=c[h>>2]}l=m;return}function JC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+1056|0;j=m;b=m+32|0;e=m+28|0;f=m+24|0;g=m+20|0;h=m+16|0;c[a+48>>2]=72;i=a+20|0;Y1(c[i>>2]|0,0,0)|0;while(1){if(!(N0(b,1024,c[i>>2]|0)|0))break;d=O0(b,95677)|0;if(!d)continue;c[j>>2]=e;c[j+4>>2]=f;c[j+8>>2]=g;c[j+12>>2]=h;if((M1(d,101285,j)|0)==4){k=5;break}}if((k|0)==5){j=c[e>>2]|0;c[a+32>>2]=j;k=c[f>>2]|0;c[a+36>>2]=k;c[a+40>>2]=(c[g>>2]|0)-j;c[a+44>>2]=(c[h>>2]|0)-k}l=m;return}function KC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;b=g+4|0;d=g;c[a+48>>2]=0;e=a+20|0;Y1(c[e>>2]|0,15,0)|0;h=(l3(c[e>>2]|0)|0)==88;f=c[e>>2]|0;if(h){Y1(f,24,0)|0;if((WC(c[e>>2]|0,4,b)|0)<<24>>24?(WC(c[e>>2]|0,4,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}}else{Y1(f,26,0)|0;if((WC(c[e>>2]|0,2,b)|0)<<24>>24?(WC(c[e>>2]|0,2,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}}l=g;return}function LC(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=l;l=l+352|0;C=F+80|0;B=F+72|0;E=F+64|0;D=F+56|0;A=F+48|0;d=F+40|0;s=F+32|0;t=F+24|0;u=F+16|0;v=F+8|0;w=F;x=F+328|0;y=F+128|0;z=F+96|0;if(!(c[46237]|0)){if(n2(184952,95562,1)|0){c[d>>2]=95562;Ow(1,95589,d)|0}c[46237]=184952}m=b+20|0;Y1(c[m>>2]|0,0,0)|0;n=z+12|0;o=z+20|0;p=z+8|0;q=z+16|0;r=z+4|0;d=0;g=0;f=0;e=0;a:while(1){if(!(N0(y,200,c[m>>2]|0)|0))break;if(g<<24>>24==0|d<<24>>24==0){i=y;k=e}else break;b:while(1){j=f;c:while(1){while(1){if($2(184952,i,4,z,0)|0){f=j;e=k;continue a}a[i+(c[n>>2]|0)>>0]=0;a[i+(c[o>>2]|0)>>0]=0;e=i+(c[p>>2]|0)|0;f=i+(c[q>>2]|0)|0;i=i+((c[r>>2]|0)+1)|0;if(!(a$(e,138034)|0))break;if(!(a$(e,137966)|0))break c;if(a$(e,95636)|0)continue;c[C>>2]=t;c[C+4>>2]=u;c[C+8>>2]=v;c[C+12>>2]=w;if((M1(f,95644,C)|0)==4)break b}c[A>>2]=s;c[A+4>>2]=x;if((M1(f,95626,A)|0)!=2){c[D>>2]=s;if((M1(f,98183,D)|0)==1){e=1;f=VC(+h[s>>3],95633)|0}else{e=g;f=j}}else{e=1;f=VC(+h[s>>3],x)|0}if(!(d<<24>>24)){d=0;g=e;j=f}else{g=e;e=k;continue a}}c[E>>2]=s;c[E+4>>2]=x;if((M1(f,95626,E)|0)!=2){c[B>>2]=s;if((M1(f,98183,B)|0)==1){d=1;e=VC(+h[s>>3],95633)|0}else e=k}else{d=1;e=VC(+h[s>>3],x)|0}if(!(g<<24>>24)){g=0;f=j;k=e}else{f=j;continue a}}d=1;g=1;f=~~(+h[v>>3]+1.0-+h[t>>3])>>>0;e=~~(+h[w>>3]+1.0-+h[u>>3])>>>0}c[b+48>>2]=0;c[b+40>>2]=f;c[b+44>>2]=e;l=F;return}function MC(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0.0;d=l;l=l+32|0;b=d;c[a+48>>2]=0;e=a+20|0;Y1(c[e>>2]|0,0,0)|0;if(!(PC(c[e>>2]|0,b)|0)){g=+h[b>>3];c[a+32>>2]=~~g;f=+h[b+8>>3];c[a+36>>2]=~~f;c[a+40>>2]=~~(+h[b+16>>3]-g);c[a+44>>2]=~~(+h[b+24>>3]-f)}l=d;return}function NC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;Y1(c[e>>2]|0,6,0)|0;if((OC(c[e>>2]|0,1,b)|0)<<24>>24?(OC(c[e>>2]|0,1,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function OC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[d>>2]=0;e=0;while(1){if(e>>>0>=b>>>0){e=1;break}f=l3(a)|0;if(q1(a)|0){e=0;break}c[d>>2]=c[d>>2]<<8|f;e=e+1|0}return e|0}function PC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+1040|0;d=h;e=h+16|0;while(1){if(!(N0(e,1024,a)|0)){a=1;break}f=O0(e,95552)|0;if(f|0){g=4;break}}if((g|0)==4){c[d+4>>2]=e;c[d>>2]=f+9;c[d+8>>2]=a;a=QC(d,b)|0}l=h;return a|0}function QC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+1024|0;f=g;RC(b);e=a[c[b>>2]>>0]|0;if(!(e<<24>>24))e=(SC(b)|0)&255;else e=e<<24>>24;if((((e|0)==91?(c[b>>2]=(c[b>>2]|0)+1,TC(b,f),(UC(f,d)|0)==0):0)?(TC(b,f),(UC(f,d+8|0)|0)==0):0)?(TC(b,f),(UC(f,d+16|0)|0)==0):0){TC(b,f);e=(UC(f,d+24|0)|0)!=0&1}else e=1;l=g;return e|0}function RC(b){b=b|0;var d=0;d=c[b>>2]|0;while(1){d=a[d>>0]|0;if(!(d<<24>>24))d=(SC(b)|0)&255;else d=d<<24>>24;if(!((d&255)<<24>>24))break;if(!(A$(d&255)|0))break;d=(c[b>>2]|0)+1|0;c[b>>2]=d}return}function SC(b){b=b|0;var d=0;d=b+4|0;if(!(N0(c[d>>2]|0,1024,c[b+8>>2]|0)|0))b=0;else{d=c[d>>2]|0;c[b>>2]=d;b=a[d>>0]|0}return b|0}function TC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;RC(b);e=0;f=c[b>>2]|0;while(1){f=a[f>>0]|0;if(!(f<<24>>24))g=(SC(b)|0)&255;else g=f<<24>>24;f=g<<24>>24;if(!f)break;if(!((f|0)==46|(f+-48|0)>>>0<10))break;a[d+e>>0]=g;e=e+1|0;f=(c[b>>2]|0)+1|0;c[b>>2]=f;if((e|0)==1023){e=1023;break}}a[d+e>>0]=0;return}function UC(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0;e=l;l=l+16|0;f=e;d=+b2(a,f);if((c[f>>2]|0)==(a|0))a=1;else{h[b>>3]=d;a=0}l=e;return a|0}function VC(a,b){a=+a;b=b|0;var c=0.0;do if(!(a$(b,95660)|0)){a=a*72.0;c=a;a=a>=0.0?.5:-.5}else{if(!(a$(b,95663)|0)){a=a*.75;c=a;a=a>=0.0?.5:-.5;break}if(!(a$(b,95666)|0)){a=a*12.0;c=a;a=a>=0.0?.5:-.5;break}if(a$(b,95633)|0?a$(b,95669)|0:0)if(!(a$(b,95671)|0)){a=a*28.346456664;c=a;a=a>=0.0?.5:-.5;break}else{b=(a$(b,95674)|0)==0;c=a*2.8346456663999997;return (b?~~(c+(c>=0.0?.5:-.5)):0)|0}c=a>=0.0?.5:-.5}while(0);return ~~(a+c)|0}function WC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[d>>2]=0;e=0;while(1){if(e>>>0>=b>>>0){e=1;break}f=l3(a)|0;if(q1(a)|0){e=0;break}c[d>>2]=c[d>>2]|f<<(e<<3);e=e+1|0}return e|0}function XC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[b+20>>2]|0;if(a|0)r1(a)|0;if(c[b+52>>2]|0?(e=c[b+60>>2]|0,e|0):0)tb[e&127](b);C_(b);return}function YC(){var a=0;mx(0,1,105198,102467)|0;a=jC(0,1)|0;KP(a,0);return a|0}function ZC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0;k=l;l=l+304|0;j=k+24|0;i=k+8|0;f=k;g=k+40|0;if((TB(b,e)|0)!=999)if((UB(b,d)|0)==-1)b=-1;else{b=c[d+16>>2]|0;e=b+16|0;if(!(a[(c[b+8>>2]|0)+81>>0]|0)){p=+h[e>>3];o=+h[b+24>>3];n=+h[b+32>>3];m=+h[b+40>>3];c[j>>2]=~~(p+(p>=0.0?.5:-.5));c[j+4>>2]=~~(o+(o>=0.0?.5:-.5));c[j+8>>2]=~~(n+(n>=0.0?.5:-.5));c[j+12>>2]=~~(m+(m>=0.0?.5:-.5));X0(g,95873,j)|0}else{m=+h[b+24>>3];n=+h[e>>3];o=+h[b+40>>3];p=+h[b+32>>3];c[i>>2]=~~(m+(m>=0.0?.5:-.5));c[i+4>>2]=~~(n+(n>=0.0?.5:-.5));c[i+8>>2]=~~(o+(o>=0.0?.5:-.5));c[i+12>>2]=~~(p+(p>=0.0?.5:-.5));X0(g,95873,i)|0}zx(d,99645,g,191979)|0;b=0}else{b=wC(b,1,e)|0;c[f>>2]=e;c[f+4>>2]=b;Ow(1,95824,f)|0;b=-1}l=k;return b|0}function _C(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=c[b+60>>2]|0;nC(a,d)|0;b=c[a+164>>2]|0;c[b+56>>2]=tO(b,c[b+52>>2]|0)|0;if((zz(f,134401,0,1)|0)!=0?(c[(c[f+16>>2]|0)+8>>2]|0)!=0:0)h=5;else if(!(c[b+152>>2]&67108864)){Rw(95885,g);b=-1}else h=5;if((h|0)==5){c[b+36>>2]=e;if(!e){h=b+152|0;c[h>>2]=c[h>>2]|134217728}h=CG(a,f)|0;vO(b);sC(a);b=h}l=i;return b|0}function $C(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=c[b+60>>2]|0;nC(a,d)|0;b=c[a+164>>2]|0;c[b+56>>2]=tO(b,c[b+52>>2]|0)|0;if((zz(f,134401,0,1)|0)!=0?(c[(c[f+16>>2]|0)+8>>2]|0)!=0:0)h=5;else if(!(c[b+152>>2]&67108864)){Rw(95885,g);b=-1}else h=5;if((h|0)==5){mC(a,e);h=CG(a,f)|0;vO(b);cC(b);sC(a);b=h}l=i;return b|0}function aD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;h=m+8|0;g=m;b=c[b+60>>2]|0;nC(a,d)|0;j=c[a+164>>2]|0;c[j+56>>2]=tO(j,c[j+52>>2]|0)|0;if((zz(b,134401,0,1)|0)!=0?(c[(c[b+16>>2]|0)+8>>2]|0)!=0:0)k=5;else if(!(c[j+152>>2]&67108864)){Rw(95885,g);b=-1}else k=5;do if((k|0)==5){if(e|0?(i=B_(4096)|0,c[e>>2]=i,i|0):0){g=j+40|0;c[g>>2]=i;c[j+44>>2]=4096;d=j+48|0;c[d>>2]=0;b=CG(a,b)|0;vO(j);if(!b){c[e>>2]=c[g>>2];c[f>>2]=c[d>>2]}sC(a);break}Ow(1,95906,h)|0;b=-1}while(0);l=m;return b|0}function bD(a,b){a=a|0;b=b|0;IP(a,0,b);return}function cD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+4288|0;E=H+8|0;D=H;F=4;G=B_(40)|0;c[G>>2]=0;A=H+4152|0;B=H+4148|0;C=H+4128|0;j=H+4112|0;k=H+16|0;o=0;i=$(24,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;a:do if((h|0)!=1){if(!i){c[d>>2]=0;g=0;break}o=0;n=ca(26,e|0,B|0,A|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)!=1){o=0;m=$(23,40)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)!=1){o=0;na(7,C|0,j|0,k|0,24,83);g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)!=1){o=0;e=$(25,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)!=1){j=C+16|0;i=c[j>>2]|0;g=e;while(1){if(!g)break;o=0;aa(i|0,g|0,0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){e=D3(c[h>>2]|0,G|0,F|0)|0;if(!e)bb(h|0,p|0);z=p}else e=-1;if((e|0)==1){y=0;x=j;w=m;v=n;g=z;m=15;break a}o=0;g=aa(84,b|0,g|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){e=D3(c[h>>2]|0,G|0,F|0)|0;if(!e)bb(h|0,p|0);z=p}else e=-1;if((e|0)==1){y=0;x=j;w=m;v=n;g=z;m=15;break a}}G=C3(184984,1,G|0,F|0)|0;F=z;o=0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){y=m;x=j;w=m;v=n;g=z;m=15}else{y=m;x=j;w=m;v=n;g=0;m=15}}else{y=0;x=0;w=m;v=n;g=z;m=15}}else{y=0;x=0;w=m;v=n;g=z;m=15}}else{y=0;x=0;w=m;v=n;g=z;m=15}}else{y=0;x=0;w=0;v=n;g=z;m=15}}else{y=0;x=0;w=0;v=0;g=z;m=15}while(0);do if((m|0)==15){b:while(1){c:do if(!g){o=0;e=$(25,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}u=v+(c[B>>2]|0)|0;k=0;m=0;j=0;while(1){if(!e)break;o=0;g=aa(c[x>>2]|0,e|0,-1)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){i=D3(c[h>>2]|0,G|0,F|0)|0;if(!i)bb(h|0,p|0);z=p}else i=-1;if((i|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}if((g|0)==0?(a[(c[e+16>>2]|0)+119>>0]|0)==3:0){if(!m){o=0;c[D>>2]=j;ca(27,u|0,134313,D|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;i=ca(28,b|0,v|0,1)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;da(53,i|0,134401,280,1)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}c[y+(j<<2)>>2]=i;k=1;j=j+1|0}else i=m;o=0;da(54,b|0,e|0,i|0,C|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}}else i=m;o=0;e=aa(84,b|0,e|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}m=i}o=0;e=$(25,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}i=10;n=y;q=w;r=w;t=w;while(1){if(!e){m=0;i=r;e=t;break c}o=0;g=aa(c[x>>2]|0,e|0,-1)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){m=D3(c[h>>2]|0,G|0,F|0)|0;if(!m)bb(h|0,p|0);z=p}else m=-1;if((m|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}if(!g){o=0;c[E>>2]=j;ca(27,u|0,134313,E|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;s=ca(28,b|0,v|0,1)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;da(53,s|0,134401,280,1)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){g=D3(c[h>>2]|0,G|0,F|0)|0;if(!g)bb(h|0,p|0);z=p}else g=-1;if((g|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}o=0;da(54,b|0,e|0,s|0,C|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}if((j|0)==(i|0)){i=j<<1;o=0;m=aa(85,q|0,j<<3|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}g=m;q=m;r=m;h=m}else{g=n;h=t}c[g+(j<<2)>>2]=s;n=g;j=j+1|0;m=h}else m=t;o=0;e=aa(84,b|0,e|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}t=m}}else{m=1;k=0;n=y;j=0;i=w;e=w}while(0);o=0;ia(105,C|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue}if((v|0)!=(A|0)){o=0;ia(103,v|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue}}if(!m){o=0;g=aa(85,e|0,j<<2|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){e=D3(c[h>>2]|0,G|0,F|0)|0;if(!e)bb(h|0,p|0);z=p}else e=-1;if((e|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue}else{m=58;break}}c[d>>2]=0;g=0;while(1){if((g|0)>=(j|0))break;o=0;$(26,c[n+(g<<2)>>2]|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){e=D3(c[h>>2]|0,G|0,F|0)|0;if(!e)bb(h|0,p|0);z=p}else e=-1;if((e|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15;continue b}g=g+1|0}o=0;ia(103,i|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){h=D3(c[g>>2]|0,G|0,F|0)|0;if(!h)bb(g|0,p|0);z=p}else h=-1;if((h|0)==1){s=v;t=w;u=x;m=y;g=z;v=s;w=t;x=u;y=m;m=15}else{m=56;break}}if((m|0)==56){g=0;break}else if((m|0)==58){c[d>>2]=j;a[f>>0]=k;break}}while(0);C_(G|0);l=H;return g|0}function dD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if(!((a|0)!=0?(mD(a)|0)!=0:0))a=95962;e=V_(a)|0;if((e|0)>=104){d=uH(e+25|0)|0;if(!d)d=0;else f=6}else f=6;if((f|0)==6){a0(d,a)|0;c[b>>2]=e}return d|0}function eD(a,b){a=a|0;b=b|0;Wy(b,a,1)|0;return}function fD(b,d){b=b|0;d=d|0;var e=0;b=(c[b+16>>2]|0)+157|0;e=a[b>>0]|0;if((d|0)>=0)a[b>>0]=d;return e|0}function gD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[b>>2]=d;c[b+4>>2]=d+4096;c[b+12>>2]=0;c[b+8>>2]=0;c[a>>2]=b;c[a+4>>2]=b;c[a+8>>2]=d;c[a+12>>2]=e;c[a+16>>2]=f;return}function hD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;kD(e,b);i=e+12|0;j=e+16|0;b=0;a:while(1){k=lD(e)|0;if(!k)break;b=b+1|0;f=c[i>>2]|0;if(f|0)ub[f&63](k,d);h=Ix(a,k)|0;while(1){if(!h)continue a;g=c[h>>2]&3;f=c[((g|0)==3?h:h+48|0)+40>>2]|0;if((f|0)==(k|0))f=c[((g|0)==2?h:h+-48|0)+40>>2]|0;if(!(lb[c[j>>2]&127](f,-1)|0))kD(e,f);h=Jx(a,h,k)|0}}return b|0}function iD(a){a=a|0;var b=0;a=c[(c[a>>2]|0)+12>>2]|0;while(1){if(!a)break;b=c[a+12>>2]|0;jD(a);a=b}return}function jD(a){a=a|0;C_(c[a>>2]|0);C_(a);return}function kD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;f=k;g=a+8|0;i=a+4|0;d=c[i>>2]|0;if((c[g>>2]|0)==(c[d+4>>2]|0)){d=c[d+12>>2]|0;do if(!d){e=uH(16)|0;if(!e){Ow(1,95943,f)|0;bb(184984,1)}c[e+8>>2]=c[i>>2];c[e+12>>2]=0;d=uH(4e6)|0;c[e>>2]=d;if(!d){Ow(1,95943,j)|0;bb(184984,1)}else{c[e+4>>2]=d+4e6;c[(c[i>>2]|0)+12>>2]=e;h=e;break}}else h=d;while(0);c[i>>2]=h;c[g>>2]=c[h>>2]}lb[c[a+16>>2]&127](b,1)|0;j=c[g>>2]|0;c[g>>2]=j+4;c[j>>2]=b;l=k;return}function lD(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+8|0;b=c[f>>2]|0;d=a+4|0;e=c[d>>2]|0;if((b|0)==(c[e>>2]|0))if((e|0)==(c[a>>2]|0))b=0;else{b=c[e+8>>2]|0;c[d>>2]=b;b=c[b+4>>2]|0;c[f>>2]=b;g=4}else g=4;if((g|0)==4){b=b+-4|0;c[f>>2]=b;b=c[b>>2]|0}return b|0}function mD(b){b=b|0;var c=0;a:while(1){c=b;b=b+1|0;c=a[c>>0]|0;switch(c<<24>>24){case 95:continue a;case 0:{b=1;break a}default:{}}if(!(L$(c&255)|0)){b=0;break}}return b|0}function nD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0;B=l;l=l+4272|0;x=B;y=4;A=B_(40)|0;c[A>>2]=0;u=B+4144|0;v=B+4140|0;w=B+4120|0;h=B+4104|0;i=B+8|0;o=0;f=$(24,a|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){e=D3(c[g>>2]|0,A|0,y|0)|0;if(!e)bb(g|0,p|0);z=p}else e=-1;a:do if((e|0)!=1)if(f){o=0;k=ca(26,d|0,v|0,u|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=D3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1){o=0;j=$(23,40)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=D3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1){o=0;na(7,w|0,h|0,i|0,24,83);e=o;o=0;if((e|0)!=0&(p|0)!=0){d=D3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1){o=0;f=$(25,a|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=D3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1){h=w+16|0;g=c[h>>2]|0;e=f;while(1){if(!e)break;o=0;aa(g|0,e|0,0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){f=D3(c[d>>2]|0,A|0,y|0)|0;if(!f)bb(d|0,p|0);z=p}else f=-1;if((f|0)==1){t=h;s=j;r=k;e=z;j=14;break a}o=0;e=aa(84,a|0,e|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){f=D3(c[d>>2]|0,A|0,y|0)|0;if(!f)bb(d|0,p|0);z=p}else f=-1;if((f|0)==1){t=h;s=j;r=k;e=z;j=14;break a}}A=C3(184984,1,A|0,y|0)|0;y=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=D3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){t=h;s=j;r=k;e=z;j=14}else{t=h;s=j;r=k;e=0;j=14}}else{t=0;s=j;r=k;e=z;j=14}}else{t=0;s=j;r=k;e=z;j=14}}else{t=0;s=j;r=k;e=z;j=14}}else{t=0;s=0;r=k;e=z;j=14}}else{d=0;e=0}else{t=0;s=0;r=0;e=z;j=14}while(0);b:do if((j|0)==14){c:while(1){if(e|0){o=0;ia(105,w|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){d=D3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}o=0;ia(103,s|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){d=D3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}if((r|0)==(u|0)){d=0;e=0;break b}o=0;ia(103,r|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){d=D3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}else{j=19;break}}o=0;f=$(25,a|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=D3(c[e>>2]|0,A|0,y|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}q=r+(c[v>>2]|0)|0;h=10;k=s;e=0;j=s;n=s;while(1){if(!f)break;o=0;d=aa(c[t>>2]|0,f|0,-1)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=D3(c[g>>2]|0,A|0,y|0)|0;if(!i)bb(g|0,p|0);z=p}else i=-1;if((i|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}if(!d){o=0;c[x>>2]=e;ca(27,q|0,134313,x|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=D3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}o=0;m=ca(28,a|0,r|0,1)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=D3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}o=0;da(53,m|0,134401,280,1)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=D3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}o=0;da(54,a|0,f|0,m|0,w|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=D3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}if((e|0)==(h|0)){h=e<<1;o=0;i=aa(85,j|0,e<<3|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=D3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}g=i;j=i;d=i}else{g=k;d=n}c[g+(e<<2)>>2]=m;e=e+1|0;k=g;i=d}else i=n;o=0;f=aa(84,a|0,f|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=D3(c[d>>2]|0,A|0,y|0)|0;if(!g)bb(d|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue c}n=i}o=0;ia(105,w|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){f=D3(c[d>>2]|0,A|0,y|0)|0;if(!f)bb(d|0,p|0);z=p}else f=-1;if((f|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}o=0;d=aa(85,n|0,e<<2|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,A|0,y|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14;continue}if((r|0)==(u|0))break b;o=0;ia(103,r|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,A|0,y|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){n=r;q=s;j=t;e=z;r=n;s=q;t=j;j=14}else{j=39;break}}if((j|0)==19){d=0;e=0;break}else if((j|0)==39)break}while(0);c[b>>2]=e;C_(A|0);l=B;return d|0}function oD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=0;f=Ry(a)|0;while(1){if(!f)break;e=Dx(b,f)|0;while(1){if(!e)break;if(Wy(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,0)|0){Ux(a,e,1)|0;d=d+1|0}e=Fx(b,e)|0}f=Sy(a,f)|0}return d|0}function pD(a){a=a|0;a=xz(a,95967,0)|0;if(!a)qa(95972,95975,529,95984);else return c[a+8>>2]|0;return 0}function qD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=l;l=l+4320|0;s=u+24|0;r=u+8|0;q=u;t=u+4184|0;p=u+4160|0;f=u+40|0;if($x(b)|0){Ez(b,0,95993,-12,0);Ez(b,1,96005,16,0);o=dD(e,f,t)|0;k=rD(b)|0;m=uH(($x(k)|0)<<2)|0;gD(p,u+4144|0,u+48|0,24,86);h=Ry(k)|0;n=p+16|0;i=o+(c[f>>2]|0)|0;j=c[15686]|0;e=0;while(1){if(!h)break;if(!(lb[c[n>>2]&127](h,-1)|0)){c[q>>2]=e;X0(i,96907,q)|0;v=uA(k,o,1)|0;w=uA(b,o,1)|0;zz(w,95993,12,0)|0;a[(xz(w,95993,0)|0)+8>>0]=1;f=hD(k,h,v,p)|0;tD(v,w);g=uD(w)|0;vD(b,w);c[m+(e<<2)>>2]=w;cz(k,v)|0;if(0){c[r>>2]=e;c[r+4>>2]=f;c[r+8>>2]=g;f1(j,96017,r)|0}e=e+1|0}h=Sy(k,h)|0}if(0){r=$x(b)|0;v=ay(b)|0;w=qy(b)|0;c[s>>2]=r;c[s+4>>2]=v;c[s+8>>2]=e;c[s+12>>2]=w;f1(j,96047,s)|0}_x(k)|0;Fz(b,0,95993);Fz(b,1,96005);iD(p);f=wH(m,e<<2)|0;if((o|0)!=(t|0))C_(o)}else{f=0;e=0}c[d>>2]=e;l=u;return f|0}function rD(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;a[h>>0]=a[18492]|0;a[h+1>>0]=a[18493]|0;a[h+2>>0]=a[18494]|0;a[h+3>>0]=a[18495]|0;h=Wx(96094,h,0)|0;yD(h,b);d=Ry(b)|0;while(1){if(!d)break;if(!(c[(xz(d,96005,0)|0)+12>>2]|0)){g=$y(h,qy(d)|0,1)|0;zz(g,96005,16,1)|0;c[(c[g+16>>2]|0)+12>>2]=d;c[(xz(d,96005,0)|0)+12>>2]=g}d=Sy(b,d)|0}e=Ry(b)|0;while(1){if(!e)break;f=c[(xz(e,96005,0)|0)+12>>2]|0;d=Dx(b,e)|0;while(1){if(!d)break;g=c[(xz(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,96005,0)|0)+12>>2]|0;do if((g|0)!=(f|0))if(g>>>0>f>>>0){Qx(h,f,g,0,1)|0;break}else{Qx(h,g,f,0,1)|0;break}while(0);d=Fx(b,d)|0}e=Sy(b,e)|0}l=i;return h|0}function sD(b,d){b=b|0;d=d|0;var e=0;b=(c[b+16>>2]|0)+8|0;e=a[b>>0]|0;if((d|0)>=0)a[b>>0]=d;return e|0}function tD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=Ry(a)|0;while(1){if(!e)break;f=c[(c[e+16>>2]|0)+12>>2]|0;a:do if((c[f>>2]&3|0)==1)Wy(b,f,1)|0;else{d=Ry(f)|0;while(1){if(!d)break a;Wy(b,d,1)|0;d=Sy(f,d)|0}}while(0);e=Sy(a,e)|0}return}function uD(a){a=a|0;return oD(a,c[a+60>>2]|0)|0}function vD(a,b){a=a|0;b=b|0;wD(a,b,0);return}function wD(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=(d|0)==0;b=vA(b)|0;while(1){if(!b)break;if((a[(xz(b,95993,0)|0)+8>>0]|0)==0?(f=xD(b,c,d)|0,f|0):0){if(g)e=(y$(qy(b)|0,104980,7)|0)==0;else e=1;wD(b,f,e&1)}b=wA(b)|0}return}function xD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=0;g=Ry(a)|0;while(1){if(!g)break;f=$y(b,qy(g)|0,0)|0;if(f){if(!e)e=uA(b,qy(a)|0,1)|0;Wy(e,f,1)|0}g=Sy(a,g)|0}if((d|0)!=0&(e|0)==0)e=uA(b,qy(a)|0,1)|0;if(e|0?(oD(e,a)|0,Ax(a,e)|0,(y$(qy(e)|0,104980,7)|0)==0):0)c[(zz(e,95967,12,0)|0)+8>>2]=a;return e|0}function yD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+16|0;g=h;d=vA(b)|0;e=c[15686]|0;while(1){if(!d)break;a:do if(!(y$(qy(d)|0,104980,7)|0)){f=$y(a,qy(d)|0,1)|0;zz(f,96005,16,1)|0;c[(c[f+16>>2]|0)+12>>2]=d;b=Ry(d)|0;while(1){if(!b)break a;if(c[(xz(b,96005,0)|0)+12>>2]|0){k=qy(b)|0;j=qy(d)|0;i=qy(c[(xz(b,96005,0)|0)+12>>2]|0)|0;c[g>>2]=k;c[g+4>>2]=j;c[g+8>>2]=i;f1(e,96097,g)|0}c[(xz(b,96005,0)|0)+12>>2]=f;b=Sy(d,b)|0}}else yD(a,d);while(0);d=wA(d)|0}l=h;return}function zD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0.0;n=+h[a>>3];j=~~(n+(n>=0.0?.5:-.5));n=+h[a+8>>3];a=~~(n+(n>=0.0?.5:-.5));n=+h[b>>3];g=~~(n+(n>=0.0?.5:-.5));n=+h[b+8>>3];f=~~(n+(n>=0.0?.5:-.5));l=g-j|0;i=((l|0)>-1?l:0-l|0)<<1;l=l>>31|1;m=f-a|0;k=((m|0)>-1?m:0-m|0)<<1;m=m>>31|1;a:do if((i|0)>(k|0)){e=0-i|0;d=k-(i>>1)|0;b=j;while(1){AI(c,b,a);if((b|0)==(g|0))break a;j=(d|0)>-1;d=d+k+(j?e:0)|0;b=b+l|0;a=(j?m:0)+a|0}}else{e=0-k|0;d=j;b=i-(k>>1)|0;while(1){AI(c,d,a);if((a|0)==(f|0))break a;k=(b|0)>-1;d=(k?l:0)+d|0;b=b+i+(k?e:0)|0;a=a+m|0}}while(0);return}function AD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;j=n+4|0;do if((a|0)<1)d=0;else{f=e+16|0;if((c[f>>2]|0)>>>0<4){d=BD(a,b,d,e)|0;break}m=uH(a<<5)|0;d=0;while(1){if((d|0)==(a|0))break;g=c[b+(d<<2)>>2]|0;lM(g);h=m+(d<<5)|0;g=(c[g+16>>2]|0)+16|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];c[h+16>>2]=c[g+16>>2];c[h+20>>2]=c[g+20>>2];c[h+24>>2]=c[g+24>>2];c[h+28>>2]=c[g+28>>2];d=d+1|0}if((c[f>>2]|0)==4){h=e+28|0;a:do if(c[h>>2]&2|0){f=e+24|0;c[f>>2]=tH(a<<2)|0;d=0;while(1){if((d|0)==(a|0))break a;g=wx(c[b+(d<<2)>>2]|0,96164)|0;if(g|0?(c[k>>2]=j,g=(M1(g,134313,k)|0)>0,i=c[j>>2]|0,g&(i|0)>-1):0)c[(c[f>>2]|0)+(d<<2)>>2]=i;d=d+1|0}}while(0);d=CD(a,m,e)|0;if(c[h>>2]&2)C_(c[e+24>>2]|0)}else d=0;C_(m)}while(0);l=n;return d|0}function BD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0.0,K=0.0;G=l;l=l+144|0;B=G+136|0;A=G+64|0;F=G+48|0;v=G+40|0;u=G;t=G+120|0;x=G+104|0;C=G+96|0;D=c[f+20>>2]|0;c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;a:do if((b|0)>=1){o=(D|0)==0;E=c[15686]|0;p=t+4|0;q=t+8|0;r=t+12|0;y=x+4|0;w=x+8|0;z=x+12|0;n=0;g=0;while(1){if((n|0)==(b|0))break;s=c[d+(n<<2)>>2]|0;lM(s);if(!o?(a[D+n>>0]|0)!=0:0){m=c[s+16>>2]|0;H=+h[m+16>>3];i=~~(H+(H>=0.0?.5:-.5));c[t>>2]=i;H=+h[m+24>>3];j=~~(H+(H>=0.0?.5:-.5));c[p>>2]=j;H=+h[m+32>>3];k=~~(H+(H>=0.0?.5:-.5));c[q>>2]=k;H=+h[m+40>>3];m=~~(H+(H>=0.0?.5:-.5));c[r>>2]=m;if(!g){c[x>>2]=c[t>>2];c[x+4>>2]=c[t+4>>2];c[x+8>>2]=c[t+8>>2];c[x+12>>2]=c[t+12>>2]}else{c[x>>2]=c[((c[x>>2]|0)>(i|0)?t:x)>>2];c[y>>2]=c[((c[y>>2]|0)>(j|0)?t:x)+4>>2];c[w>>2]=c[((c[w>>2]|0)<(k|0)?t:x)+8>>2];c[z>>2]=c[((c[z>>2]|0)<(m|0)?t:x)+12>>2]}g=g+1|0}if(0>2){m=qy(s)|0;s=c[s+16>>2]|0;K=+h[s+16>>3];J=+h[s+24>>3];I=+h[s+32>>3];H=+h[s+40>>3];c[u>>2]=m;h[u+8>>3]=K;h[u+16>>3]=J;h[u+24>>3]=I;h[u+32>>3]=H;f1(E,96231,u)|0}n=n+1|0}q=uH(b<<5)|0;g=0;while(1){if((g|0)==(b|0))break;u=q+(g<<5)|0;t=(c[(c[d+(g<<2)>>2]|0)+16>>2]|0)+16|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[u+16>>2]=c[t+16>>2];c[u+20>>2]=c[t+20>>2];c[u+24>>2]=c[t+24>>2];c[u+28>>2]=c[t+28>>2];g=g+1|0}o=f+8|0;p=FD(b,q,c[o>>2]|0)|0;if(0){c[v>>2]=p;f1(E,96259,v)|0}if((p|0)>=1){n=(D|0)!=0;if(n){i=((c[w>>2]|0)+(c[x>>2]|0)|0)/2|0;g=((c[z>>2]|0)+(c[y>>2]|0)|0)/2|0}else{i=0;g=0}c[C+4>>2]=g;c[C>>2]=i;m=tH(b<<4)|0;k=f+16|0;g=0;while(1){if((g|0)>=(b|0))break;i=c[d+(g<<2)>>2]|0;j=m+(g<<4)|0;c[m+(g<<4)+12>>2]=g;if((c[k>>2]|0)==3){x=(c[i+16>>2]|0)+16|0;y=c[o>>2]|0;z=qy(i)|0;c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];c[A+16>>2]=c[x+16>>2];c[A+20>>2]=c[x+20>>2];c[A+24>>2]=c[x+24>>2];c[A+28>>2]=c[x+28>>2];c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];GD(A,j,p,y,B,z)}else{c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];HD(e,i,j,p,f,B)}g=g+1|0}j=tH(b<<2)|0;g=0;while(1){if((g|0)>=(b|0))break;c[j+(g<<2)>>2]=m+(g<<4);g=g+1|0}Z0(j,b,4,87);k=uI()|0;g=tH(b<<3)|0;b:do if(n){i=0;while(1){if((i|0)>=(b|0)){i=0;break}if(a[D+i>>0]|0){e=c[j+(i<<2)>>2]|0;f=g+(c[e+12>>2]<<3)|0;c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];JD(e,k,f,B)}i=i+1|0}while(1){if((i|0)>=(b|0))break b;if(!(a[D+i>>0]|0)){C=c[j+(i<<2)>>2]|0;KD(i,C,k,g+(c[C+12>>2]<<3)|0,p,c[o>>2]|0,q)}i=i+1|0}}else{i=0;while(1){if((i|0)>=(b|0))break b;D=c[j+(i<<2)>>2]|0;KD(i,D,k,g+(c[D+12>>2]<<3)|0,p,c[o>>2]|0,q);i=i+1|0}}while(0);C_(j);i=0;while(1){if((i|0)>=(b|0))break;C_(c[m+(i<<4)+4>>2]|0);i=i+1|0}C_(m);xI(k);C_(q);if(0>1){i=0;while(1){if((i|0)>=(b|0))break a;C=c[g+(i<<3)>>2]|0;D=c[g+(i<<3)+4>>2]|0;c[F>>2]=i;c[F+4>>2]=C;c[F+8>>2]=D;f1(E,96275,F)|0;i=i+1|0}}}else g=0}else g=0;while(0);l=G;return g|0}function CD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=l;l=l+16|0;g=z;x=tH(a<<3)|0;f=c[d+4>>2]|0;y=d+28|0;e=(f|0)>0;do if(!(c[y>>2]&1))if(e){k=1;w=(a+-1+f|0)/(f|0)|0;break}else{f=~~+N(+(+C(+(+(a|0)))));k=1;w=(a+-1+f|0)/(f|0)|0;break}else if(e){k=0;w=f;f=(a+-1+f|0)/(f|0)|0;break}else{f=~~+N(+(+C(+(+(a|0)))));k=0;w=f;f=(a+-1+f|0)/(f|0)|0;break}while(0);if(0){v=c[15686]|0;c[g>>2]=k|0?96170:96180;c[g+4>>2]=w;c[g+8>>2]=f;f1(v,96193,g)|0}t=tH((f<<3)+8|0)|0;u=tH((w<<3)+8|0)|0;v=tH(a*24|0)|0;j=d+8|0;e=0;g=v;while(1){if((e|0)>=(a|0))break;p=+h[b+(e<<5)+8>>3];o=+h[b+(e<<5)+24>>3];q=+((c[j>>2]|0)>>>0);h[g>>3]=+h[b+(e<<5)+16>>3]-+h[b+(e<<5)>>3]+q;h[g+8>>3]=o-p+q;c[g+16>>2]=e;e=e+1|0;g=g+24|0}s=tH(a<<2)|0;e=0;while(1){if((e|0)>=(a|0))break;c[s+(e<<2)>>2]=v+(e*24|0);e=e+1|0}e=c[d+24>>2]|0;if(!e){if(!(c[y>>2]&64))Z0(s,a,4,89)}else{c[46285]=e;Z0(s,a,4,88)}r=(k|0)==0;e=0;g=0;j=0;while(1){if((j|0)>=(a|0)){i=0.0;e=0;break}k=c[s+(j<<2)>>2]|0;d=t+(g<<3)|0;q=+h[d>>3];p=+h[k>>3];h[d>>3]=q>p?q:p;d=u+(e<<3)|0;p=+h[d>>3];q=+h[k+8>>3];h[d>>3]=p>q?p:q;if(r){e=e+1|0;d=(e|0)==(w|0);e=d?0:e;g=g+(d&1)|0}else{g=g+1|0;d=(g|0)==(f|0);e=e+(d&1)|0;g=d?0:g}j=j+1|0}while(1){if((e|0)>(f|0)){i=0.0;e=w;break}d=t+(e<<3)|0;q=+h[d>>3];h[d>>3]=i;i=q+i;e=e+1|0}while(1){if((e|0)<=0)break;d=e+-1|0;q=+h[u+(d<<3)>>3];h[u+(e<<3)>>3]=i;i=q+i;e=d}h[u>>3]=i;e=0;g=0;d=0;while(1){if((d|0)>=(a|0))break;k=c[(c[s+(d<<2)>>2]|0)+16>>2]|0;i=+h[b+(k<<5)>>3];m=-i;p=+h[b+(k<<5)+8>>3];q=-p;n=+h[b+(k<<5)+16>>3];o=+h[b+(k<<5)+24>>3];j=c[y>>2]|0;do if(!(j&4))if(!(j&8)){i=(m-n+ +h[t+(g<<3)>>3]+ +h[t+(g+1<<3)>>3])*.5;break}else{i=i-n+ +h[t+(g+1<<3)>>3];break}else i=+h[t+(g<<3)>>3];while(0);c[x+(k<<3)>>2]=~~i;do if(!(j&16))if(!(j&32)){i=(q-o+ +h[u+(e<<3)>>3]+ +h[u+(e+1<<3)>>3])*.5;break}else{i=+h[u+(e+1<<3)>>3];break}else i=p-o+ +h[u+(e<<3)>>3];while(0);c[x+(k<<3)+4>>2]=~~i;if(r){e=e+1|0;k=(e|0)==(w|0);e=k?0:e;g=g+(k&1)|0}else{g=g+1|0;k=(g|0)==(f|0);e=e+(k&1)|0;g=k?0:g}d=d+1|0}C_(v);C_(s);C_(t);C_(u);l=z;return x|0}function DD(a,b){a=a|0;b=b|0;var d=0;d=c[46285]|0;a=c[d+(c[(c[a>>2]|0)+16>>2]<<2)>>2]|0;b=c[d+(c[(c[b>>2]|0)+16>>2]<<2)>>2]|0;return ((a|0)>(b|0)?1:((a|0)<(b|0))<<31>>31)|0}function ED(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a>>2]|0;b=c[b>>2]|0;e=+h[a>>3]+ +h[a+8>>3];d=+h[b>>3]+ +h[b+8>>3];return (ed)<<31>>31)|0}function FD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0;s=l;l=l+96|0;q=s+80|0;r=s+48|0;p=s+8|0;m=s;k=(a*100|0)+-1|0;e=+(d<<1|0);n=0.0;o=0.0;d=0;while(1){if((d|0)>=(a|0))break;j=+h[b+(d<<5)+16>>3]-+h[b+(d<<5)>>3]+e;i=+h[b+(d<<5)+24>>3]-+h[b+(d<<5)+8>>3]+e;n=n-j-i;o=o-i*j;d=d+1|0}i=+(k|0);j=n*n-i*4.0*o;if(!(j<0.0)){e=+C(+j);g=i*2.0;f=(e-n)/g;g=(-n-e)/g;d=~~f;d=(d|0)==0?1:d;if(0>2){m=c[15686]|0;D1(96418,27,1,m)|0;h[p>>3]=i;h[p+8>>3]=n;h[p+16>>3]=o;h[p+24>>3]=j;h[p+32>>3]=e;f1(m,96446,p)|0;c[r>>2]=d;h[r+8>>3]=f;c[r+16>>2]=~~g;h[r+24>>3]=g;f1(m,96472,r)|0;h[q>>3]=(f*i+n)*f+o;h[q+8>>3]=(g*i+n)*g+o;f1(m,96494,q)|0}}else{h[m>>3]=j;Ow(1,96391,m)|0;d=-1}l=s;return d|0}function GD(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0.0,w=0.0;u=l;l=l+32|0;t=u+16|0;s=u;p=+h[a>>3];q=+h[a+8>>3];n=+h[a+16>>3];o=+h[a+24>>3];r=uI()|0;j=c[f>>2]|0;a=j-e|0;k=c[f+4>>2]|0;i=k-e|0;j=e-~~(p+(p>=0.0?.5:-.5))+j+~~(n+(n>=0.0?.5:-.5))|0;k=e-~~(q+(q>=0.0?.5:-.5))+k+~~(o+(o>=0.0?.5:-.5))|0;if((a|0)>-1)f=(a|0)/(d|0)|0;else f=((a+1|0)/(d|0)|0)+-1|0;if((i|0)>-1)m=(i|0)/(d|0)|0;else m=((i+1|0)/(d|0)|0)+-1|0;if((j|0)>-1)j=(j|0)/(d|0)|0;else j=((j+1|0)/(d|0)|0)+-1|0;if((k|0)>-1)i=(k|0)/(d|0)|0;else i=((k+1|0)/(d|0)|0)+-1|0;while(1){if((f|0)>(j|0))break;else a=m;while(1){if((a|0)>(i|0))break;AI(r,f,a);a=a+1|0}f=f+1|0}k=b+4|0;c[k>>2]=EI(r)|0;j=DI(r)|0;m=b+8|0;c[m>>2]=j;w=+(e<<1|0);v=+(d|0);i=~~+N(+((n+w-p)/v));a=~~+N(+((o+w-q)/v));c[b>>2]=a+i;a:do if(0>2){f=c[15686]|0;c[s>>2]=g;c[s+4>>2]=j;c[s+8>>2]=i;c[s+12>>2]=a;f1(f,96350,s)|0;a=0;while(1){if((a|0)>=(c[m>>2]|0))break a;g=c[k>>2]|0;s=c[g+(a<<3)+4>>2]|0;c[t>>2]=c[g+(a<<3)>>2];c[t+4>>2]=s;f1(f,96377,t)|0;a=a+1|0}}while(0);xI(r);l=u;return}function HD(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,O=0,P=0,Q=0.0,R=0.0;P=l;l=l+128|0;F=P+112|0;E=P+104|0;O=P+16|0;M=P;H=P+64|0;I=P+56|0;z=P+40|0;A=P+96|0;y=P+88|0;v=P+24|0;w=P+80|0;x=P+72|0;K=c[f+8>>2]|0;G=c[f+12>>2]|0;C=(a|0)==0?b:a;L=uI()|0;J=b+16|0;B=c[J>>2]|0;t=+h[B+16>>3];D=(c[g>>2]|0)-~~(t+(t>=0.0?.5:-.5))|0;t=+h[B+24>>3];B=(c[g+4>>2]|0)-~~(t+(t>=0.0?.5:-.5))|0;a:do if((c[f+16>>2]|0)==1){v=uH(($x(b)|0)<<2)|0;a=0;g=Ry(b)|0;while(1){if(!g)break;x=g+16|0;c[v+(a<<2)>>2]=c[(c[x>>2]|0)+112>>2];c[(c[x>>2]|0)+112>>2]=0;a=a+1|0;g=Sy(b,g)|0}o=D-K|0;p=B-K|0;q=D+K|0;r=B+K|0;n=1;while(1){a=c[J>>2]|0;if((n|0)>(c[a+180>>2]|0))break;m=c[(c[a+184>>2]|0)+(n<<2)>>2]|0;i=c[m+16>>2]|0;t=+h[i+16>>3];a=~~(t+(t>=0.0?.5:-.5));t=+h[i+24>>3];g=~~(t+(t>=0.0?.5:-.5));t=+h[i+32>>3];f=~~(t+(t>=0.0?.5:-.5));t=+h[i+40>>3];i=~~(t+(t>=0.0?.5:-.5));b:do if((f|0)>(a|0)&(i|0)>(g|0)){a=o+a|0;j=p+g|0;f=q+f|0;k=r+i|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)j=(j|0)/(e|0)|0;else j=((j+1|0)/(e|0)|0)+-1|0;if((f|0)>-1)i=(f|0)/(e|0)|0;else i=((f+1|0)/(e|0)|0)+-1|0;if((k|0)>-1)f=(k|0)/(e|0)|0;else f=((k+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(i|0))break;else a=j;while(1){if((a|0)>(f|0))break;AI(L,g,a);a=a+1|0}g=g+1|0}a=Ry(m)|0;while(1){if(!a)break b;c[(c[a+16>>2]|0)+212>>2]=m;a=Sy(m,a)|0}}while(0);n=n+1|0}r=z+8|0;s=H+4|0;t=+(K|0);u=I+4|0;q=A+4|0;p=y+4|0;o=Ry(b)|0;while(1){if(!o)break;VL(z,o);R=+h[z>>3];Q=+h[r>>3];m=D+~~(R+(R>=0.0?.5:-.5))|0;c[H>>2]=m;n=B+~~(Q+(Q>=0.0?.5:-.5))|0;c[s>>2]=n;g=o+16|0;a=c[g>>2]|0;c:do if(!(c[a+212>>2]|0)){c[I>>2]=~~((+h[a+96>>3]+ +h[a+88>>3])*.5+t);c[u>>2]=~~(+h[a+80>>3]*.5+t);c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];MD(A,E,F);a=c[A>>2]|0;f=c[q>>2]|0;c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];ND(y,E,F);i=c[y>>2]|0;j=c[p>>2]|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((f|0)>-1)k=(f|0)/(e|0)|0;else k=((f+1|0)/(e|0)|0)+-1|0;if((i|0)>-1)i=(i|0)/(e|0)|0;else i=((i+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)f=(j|0)/(e|0)|0;else f=((j+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(i|0))break;else a=k;while(1){if((a|0)>(f|0))break;AI(L,g,a);a=a+1|0}g=g+1|0}if((m|0)>-1)a=(m|0)/(e|0)|0;else a=((m+1|0)/(e|0)|0)+-1|0;c[H>>2]=a;if((n|0)>-1)a=(n|0)/(e|0)|0;else a=((n+1|0)/(e|0)|0)+-1|0;c[s>>2]=a;a=Dx(C,o)|0;while(1){if(!a)break c;c[F>>2]=c[H>>2];c[F+4>>2]=c[H+4>>2];OD(a,F,L,D,B,e,G);a=Fx(C,a)|0}}else{if((m|0)>-1)a=(m|0)/(e|0)|0;else a=((m+1|0)/(e|0)|0)+-1|0;c[H>>2]=a;if((n|0)>-1)a=(n|0)/(e|0)|0;else a=((n+1|0)/(e|0)|0)+-1|0;c[s>>2]=a;a=Dx(C,o)|0;while(1){if(!a)break c;if((c[(c[g>>2]|0)+212>>2]|0)!=(c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)){c[F>>2]=c[H>>2];c[F+4>>2]=c[H+4>>2];OD(a,F,L,D,B,e,G)}a=Fx(C,a)|0}}while(0);o=Sy(b,o)|0}a=0;g=Ry(b)|0;while(1){if(!g)break;c[(c[g+16>>2]|0)+112>>2]=c[v+(a<<2)>>2];a=a+1|0;g=Sy(b,g)|0}C_(v)}else{r=v+8|0;s=H+4|0;t=+(K|0);u=I+4|0;q=w+4|0;p=x+4|0;o=Ry(b)|0;while(1){if(!o)break a;VL(v,o);Q=+h[v>>3];R=+h[r>>3];m=D+~~(Q+(Q>=0.0?.5:-.5))|0;c[H>>2]=m;n=B+~~(R+(R>=0.0?.5:-.5))|0;c[s>>2]=n;a=c[o+16>>2]|0;c[I>>2]=~~((+h[a+96>>3]+ +h[a+88>>3])*.5+t);c[u>>2]=~~(+h[a+80>>3]*.5+t);c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];MD(w,E,F);a=c[w>>2]|0;f=c[q>>2]|0;c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];ND(x,E,F);i=c[x>>2]|0;j=c[p>>2]|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((f|0)>-1)k=(f|0)/(e|0)|0;else k=((f+1|0)/(e|0)|0)+-1|0;if((i|0)>-1)i=(i|0)/(e|0)|0;else i=((i+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)f=(j|0)/(e|0)|0;else f=((j+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(i|0))break;else a=k;while(1){if((a|0)>(f|0))break;AI(L,g,a);a=a+1|0}g=g+1|0}if((m|0)>-1)a=(m|0)/(e|0)|0;else a=((m+1|0)/(e|0)|0)+-1|0;c[H>>2]=a;if((n|0)>-1)a=(n|0)/(e|0)|0;else a=((n+1|0)/(e|0)|0)+-1|0;c[s>>2]=a;a=Dx(C,o)|0;while(1){if(!a)break;c[F>>2]=c[H>>2];c[F+4>>2]=c[H+4>>2];OD(a,F,L,D,B,e,G);a=Fx(C,a)|0}o=Sy(b,o)|0}}while(0);i=d+4|0;c[i>>2]=EI(L)|0;j=d+8|0;c[j>>2]=DI(L)|0;g=c[J>>2]|0;Q=+(K<<1|0);R=+(e|0);a=~~+N(+((+h[g+32>>3]+Q-+h[g+16>>3])/R));g=~~+N(+((+h[g+40>>3]+Q-+h[g+24>>3])/R));c[d>>2]=g+a;d:do if(0>2){f=c[15686]|0;d=qy(b)|0;b=c[j>>2]|0;c[M>>2]=d;c[M+4>>2]=b;c[M+8>>2]=a;c[M+12>>2]=g;f1(f,96350,M)|0;a=0;while(1){if((a|0)>=(c[j>>2]|0))break d;b=c[i>>2]|0;M=c[b+(a<<3)+4>>2]|0;c[O>>2]=c[b+(a<<3)>>2];c[O+4>>2]=M;f1(f,96377,O)|0;a=a+1|0}}while(0);xI(L);l=P;return}function ID(a,b){a=a|0;b=b|0;return (c[c[b>>2]>>2]|0)-(c[c[a>>2]>>2]|0)|0}function JD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+32|0;h=j+16|0;i=j;k=c[a+4>>2]|0;g=c[a+8>>2]|0;c[d>>2]=0-(c[e>>2]|0);f=d+4|0;c[f>>2]=0-(c[e+4>>2]|0);a=0;e=k;while(1){if((a|0)>=(g|0))break;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];yI(b,h);a=a+1|0;e=e+8|0}if(0>1){k=c[15686]|0;b=c[d>>2]|0;d=c[f>>2]|0;c[i>>2]=g;c[i+4>>2]=b;c[i+8>>2]=d;f1(k,96324,i)|0}l=j;return}function KD(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;k=c[b+12>>2]|0;l=+h[i+(k<<5)>>3];m=+h[i+(k<<5)+8>>3];n=+h[i+(k<<5)+16>>3];o=+h[i+(k<<5)+24>>3];if(!((a|0)==0?(q=+(g<<1|0),p=+(f|0),(LD((~~+N(+((q-l+n)/p))|0)/-2|0,(~~+N(+((q-m+o)/p))|0)/-2|0,b,d,e,f,i)|0)!=0):0))j=3;a:do if((j|0)==3?(LD(0,0,b,d,e,f,i)|0)==0:0)if((~~+N(+(n-l))|0)<(~~+N(+(o-m))|0)){k=1;while(1){j=0-k|0;a=0;while(1){if((a|0)<=(j|0)){g=j;break}if(LD(j,a,b,d,e,f,i)|0)break a;a=a+-1|0}while(1){if((g|0)>=(k|0))break;if(LD(g,a,b,d,e,f,i)|0)break a;g=g+1|0}while(1){if((a|0)>=(k|0))break;if(LD(g,a,b,d,e,f,i)|0)break a;a=a+1|0}while(1){if((g|0)<=(j|0))break;if(LD(g,a,b,d,e,f,i)|0)break a;g=g+-1|0}while(1){if((a|0)<=0)break;if(!(LD(g,a,b,d,e,f,i)|0))a=a+-1|0;else break a}k=k+1|0}}else{k=1;while(1){j=0-k|0;a=0;while(1){if((a|0)>=(k|0)){g=j;break}if(LD(a,j,b,d,e,f,i)|0)break a;a=a+1|0}while(1){if((g|0)>=(k|0))break;if(LD(a,g,b,d,e,f,i)|0)break a;g=g+1|0}while(1){if((a|0)<=(j|0))break;if(LD(a,g,b,d,e,f,i)|0)break a;a=a+-1|0}while(1){if((g|0)<=(j|0))break;if(LD(a,g,b,d,e,f,i)|0)break a;g=g+-1|0}while(1){if((a|0)>=0)break;if(!(LD(a,g,b,d,e,f,i)|0))a=a+1|0;else break a}k=k+1|0}}while(0);return}function LD(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0;t=l;l=l+48|0;r=t+32|0;s=t+8|0;q=t;m=d+4|0;o=c[d+8>>2]|0;p=q+4|0;j=c[m>>2]|0;k=0;while(1){if((k|0)>=(o|0)){n=5;break}v=j;u=c[v+4>>2]|0;c[q>>2]=(c[v>>2]|0)+a;c[p>>2]=u+b;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];if(BI(e,r)|0){j=0;break}j=j+8|0;k=k+1|0}if((n|0)==5){d=c[d+12>>2]|0;x=+h[i+(d<<5)>>3];w=+h[i+(d<<5)+8>>3];c[f>>2]=(O(g,a)|0)-~~(x+(x>=0.0?.5:-.5));d=f+4|0;c[d>>2]=(O(g,b)|0)-~~(w+(w>=0.0?.5:-.5));j=c[m>>2]|0;k=0;while(1){if((k|0)>=(o|0))break;u=j;v=c[u+4>>2]|0;c[q>>2]=(c[u>>2]|0)+a;c[p>>2]=v+b;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];yI(e,r);j=j+8|0;k=k+1|0}if(0>1){j=c[15686]|0;u=c[f>>2]|0;v=c[d>>2]|0;c[s>>2]=o;c[s+4>>2]=a;c[s+8>>2]=b;c[s+12>>2]=u;c[s+16>>2]=v;f1(j,96290,s)|0;j=1}else j=1}l=t;return j|0}function MD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[b+4>>2]|0)-(c[d+4>>2]|0)|0;c[a>>2]=(c[b>>2]|0)-(c[d>>2]|0);c[a+4>>2]=e;return}function ND(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[d+4>>2]|0)+(c[b+4>>2]|0)|0;c[a>>2]=(c[d>>2]|0)+(c[b>>2]|0);c[a+4>>2]=e;return}function OD(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+112|0;x=A+96|0;w=A+80|0;r=A+48|0;s=A+32|0;y=A+16|0;z=A;n=A+64|0;h[y>>3]=+(c[b>>2]|0);t=y+8|0;h[t>>3]=+(c[b+4>>2]|0);a:do if((i|0)!=0?(u=a+16|0,m=c[(c[u>>2]|0)+8>>2]|0,(m|0)!=0):0){q=+(e|0);p=+(f|0);o=1.0/+(g|0);n=z+8|0;i=0;while(1){if((i|0)>=(c[m+4>>2]|0))break a;f=c[m>>2]|0;a=c[f+(i*48|0)>>2]|0;b=c[f+(i*48|0)+4>>2]|0;g=c[f+(i*48|0)+8>>2]|0;e=c[f+(i*48|0)+12>>2]|0;m=f+(i*48|0)+16|0;c[r>>2]=c[m>>2];c[r+4>>2]=c[m+4>>2];c[r+8>>2]=c[m+8>>2];c[r+12>>2]=c[m+12>>2];f=f+(i*48|0)+32|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];if(!g){c[y>>2]=c[a>>2];c[y+4>>2]=c[a+4>>2];c[y+8>>2]=c[a+8>>2];c[y+12>>2]=c[a+12>>2];m=a+16|0;c[z>>2]=c[m>>2];c[z+4>>2]=c[m+4>>2];c[z+8>>2]=c[m+8>>2];c[z+12>>2]=c[m+12>>2];m=2}else{c[y>>2]=c[r>>2];c[y+4>>2]=c[r+4>>2];c[y+8>>2]=c[r+8>>2];c[y+12>>2]=c[r+12>>2];c[z>>2]=c[a>>2];c[z+4>>2]=c[a+4>>2];c[z+8>>2]=c[a+8>>2];c[z+12>>2]=c[a+12>>2];m=1}j=+h[y>>3]+q;h[y>>3]=j;k=+h[t>>3]+p;h[t>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[y>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[t>>3]=j;j=+h[z>>3]+q;h[z>>3]=j;k=+h[n>>3]+p;h[n>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[n>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];zD(w,x,d);while(1){if((m|0)>=(b|0))break;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];g=a+(m<<4)|0;c[z>>2]=c[g>>2];c[z+4>>2]=c[g+4>>2];c[z+8>>2]=c[g+8>>2];c[z+12>>2]=c[g+12>>2];j=+h[z>>3]+q;h[z>>3]=j;k=+h[n>>3]+p;h[n>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[n>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];zD(w,x,d);m=m+1|0}if(e|0){c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[z>>2]=c[s>>2];c[z+4>>2]=c[s+4>>2];c[z+8>>2]=c[s+8>>2];c[z+12>>2]=c[s+12>>2];j=+h[z>>3]+q;h[z>>3]=j;k=+h[n>>3]+p;h[n>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[n>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];zD(w,x,d)}i=i+1|0;m=c[(c[u>>2]|0)+8>>2]|0}}else v=4;while(0);if((v|0)==4){VL(n,c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0);c[z>>2]=c[n>>2];c[z+4>>2]=c[n+4>>2];c[z+8>>2]=c[n+8>>2];c[z+12>>2]=c[n+12>>2];j=+h[z>>3]+ +(e|0);h[z>>3]=j;m=z+8|0;k=+h[m>>3]+ +(f|0);h[m>>3]=k;if(!(j>=0.0))j=(j+1.0)/+(g|0)+-1.0;else j=j/+(g|0);h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)/+(g|0)+-1.0;else j=k/+(g|0);h[m>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];zD(w,x,d)}l=A;return}function PD(a,b,d){a=a|0;b=b|0;d=d|0;a:do if((a|0)<1)a=0;else switch(c[d+16>>2]|0){case 4:{a=CD(a,b,d)|0;break a}case 3:{a=QD(a,b,d)|0;break a}default:{a=0;break a}}while(0);return a|0}function QD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+80|0;g=n+64|0;f=n+24|0;m=n+8|0;e=n;h=n+56|0;j=d+8|0;k=FD(a,b,c[j>>2]|0)|0;if(0){i=c[15686]|0;c[e>>2]=k;f1(i,96259,e)|0}a:do if((k|0)>=1){c[h+4>>2]=0;c[h>>2]=0;i=tH(a<<4)|0;d=0;while(1){if((d|0)>=(a|0))break;c[i+(d<<4)+12>>2]=d;o=b+(d<<5)|0;e=c[j>>2]|0;c[f>>2]=c[o>>2];c[f+4>>2]=c[o+4>>2];c[f+8>>2]=c[o+8>>2];c[f+12>>2]=c[o+12>>2];c[f+16>>2]=c[o+16>>2];c[f+20>>2]=c[o+20>>2];c[f+24>>2]=c[o+24>>2];c[f+28>>2]=c[o+28>>2];c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];GD(f,i+(d<<4)|0,k,e,g,191979);d=d+1|0}f=tH(a<<2)|0;d=0;while(1){if((d|0)>=(a|0))break;c[f+(d<<2)>>2]=i+(d<<4);d=d+1|0}Z0(f,a,4,87);g=uI()|0;d=tH(a<<3)|0;e=0;while(1){if((e|0)>=(a|0))break;o=c[f+(e<<2)>>2]|0;KD(e,o,g,d+(c[o+12>>2]<<3)|0,k,c[j>>2]|0,b);e=e+1|0}C_(f);e=0;while(1){if((e|0)>=(a|0))break;C_(c[i+(e<<4)+4>>2]|0);e=e+1|0}C_(i);xI(g);if(0>1){f=c[15686]|0;e=0;while(1){if((e|0)>=(a|0))break a;b=c[d+(e<<3)>>2]|0;o=c[d+(e<<3)+4>>2]|0;c[m>>2]=e;c[m+4>>2]=b;c[m+8>>2]=o;f1(f,96275,m)|0;e=e+1|0}}}else d=0;while(0);l=n;return d|0}function RD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0;a:do if((a|0)<1)f=0-a|0;else{s=(e|0)==0;q=(f|0)==0;j=0;while(1){if((j|0)==(a|0)){f=0;break a}r=c[b+(j<<2)>>2]|0;g=s?r:e;k=c[d+(j<<3)>>2]|0;l=c[d+(j<<3)+4>>2]|0;m=+(k|0);n=m*.013888888888888888;o=+(l|0);p=o*.013888888888888888;i=Ry(r)|0;while(1){if(!i)break;f=c[i+16>>2]|0;t=c[f+132>>2]|0;h[t>>3]=+h[t>>3]+n;t=t+8|0;h[t>>3]=+h[t>>3]+p;t=f+16|0;h[t>>3]=+h[t>>3]+m;t=f+24|0;h[t>>3]=+h[t>>3]+o;f=c[f+108>>2]|0;if(f|0){t=f+56|0;h[t>>3]=+h[t>>3]+m;t=f+64|0;h[t>>3]=+h[t>>3]+o}b:do if(!q){f=Dx(g,i)|0;while(1){if(!f)break b;SD(f,k,l);f=Fx(g,f)|0}}while(0);i=Sy(r,i)|0}TD(r,k,l);j=j+1|0}}while(0);return f|0}function SD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0,l=0.0,m=0,n=0;e=c[a+16>>2]|0;a=c[e+96>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}a=c[e+108>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}a=c[e+100>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}a=c[e+104>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}m=c[e+8>>2]|0;a:do if(m|0){l=+(b|0);j=+(d|0);b=c[m+4>>2]|0;a=0;while(1){if((a|0)>=(b|0))break a;k=c[m>>2]|0;d=c[k+(a*48|0)>>2]|0;f=c[k+(a*48|0)+4>>2]|0;g=c[k+(a*48|0)+8>>2]|0;i=c[k+(a*48|0)+12>>2]|0;e=0;while(1){if((e|0)>=(f|0))break;n=d+(e<<4)|0;h[n>>3]=+h[n>>3]+l;n=d+(e<<4)+8|0;h[n>>3]=+h[n>>3]+j;e=e+1|0}if(g|0){n=k+(a*48|0)+16|0;h[n>>3]=+h[n>>3]+l;n=k+(a*48|0)+24|0;h[n>>3]=+h[n>>3]+j}if(i|0){n=k+(a*48|0)+32|0;h[n>>3]=+h[n>>3]+l;n=k+(a*48|0)+40|0;h[n>>3]=+h[n>>3]+j}a=a+1|0}}while(0);return}function TD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0,n=0.0,o=0;j=b+16|0;b=c[j>>2]|0;o=b+16|0;m=b+24|0;f=b+32|0;b=b+40|0;g=+(d|0);l=+h[f>>3]+g;i=+(e|0);n=+h[m>>3]+i;k=+h[b>>3]+i;h[o>>3]=+h[o>>3]+g;h[m>>3]=n;h[f>>3]=l;h[b>>3]=k;b=c[j>>2]|0;f=c[b+12>>2]|0;if((f|0)!=0?(a[f+81>>0]|0)!=0:0){o=f+56|0;h[o>>3]=+h[o>>3]+g;f=f+64|0;h[f>>3]=+h[f>>3]+i;f=1}else f=1;while(1){if((f|0)>(c[b+180>>2]|0))break;TD(c[(c[b+184>>2]|0)+(f<<2)>>2]|0,d,e);f=f+1|0;b=c[j>>2]|0}return}function UD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=AD(a,b,d,e)|0;if(!f)a=1;else{a=RD(a,b,f,d,c[e+12>>2]|0)|0;C_(f)}return a|0}function VD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;p=l;l=l+32|0;o=p;n=UD(a,b,d,e)|0;if(!n){lM(d);m=(c[d+16>>2]|0)+16|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];c[o+16>>2]=c[m+16>>2];c[o+20>>2]=c[m+20>>2];c[o+24>>2]=c[m+24>>2];c[o+28>>2]=c[m+28>>2];f=o+8|0;g=o+16|0;i=o+24|0;e=0;while(1){if((e|0)>=(a|0))break;k=c[(c[b+(e<<2)>>2]|0)+16>>2]|0;j=c[k+180>>2]|0;k=k+184|0;d=1;while(1){if((d|0)>(j|0))break;r=(c[(c[(c[k>>2]|0)+(d<<2)>>2]|0)+16>>2]|0)+16|0;h[o>>3]=+h[(+h[o>>3]<+h[r>>3]?o:r)>>3];r=c[(c[(c[k>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;q=r+16|0;h[f>>3]=+h[(+h[f>>3]<+h[r+24>>3]?o:q)+8>>3];h[g>>3]=+h[(+h[g>>3]>+h[r+32>>3]?o:q)+16>>3];h[i>>3]=+h[(+h[i>>3]>+h[r+40>>3]?o:q)+24>>3];d=d+1|0}e=e+1|0}c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[m+16>>2]=c[o+16>>2];c[m+20>>2]=c[o+20>>2];c[m+24>>2]=c[o+24>>2];c[m+28>>2]=c[o+28>>2]}l=p;return n|0}function WD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=l;l=l+16|0;f=g;if(!e)qa(96508,96514,1400,96521);d=XD(a,d,d)|0;c[e+8>>2]=d;if(0){h=c[15686]|0;c[f>>2]=d;f1(h,96533,f)|0}c[e+12>>2]=0;c[e+20>>2]=0;YD(a,b,e)|0;l=g;return c[e+16>>2]|0}function XD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;f=i+4|0;g=wx(b,96663)|0;a:do if(g){c[h>>2]=f;h=(M1(g,134313,h)|0)==1;b=c[f>>2]|0;if(h&(b|0)>-1)d=b;else{switch(a[g>>0]|0){case 84:case 116:break;default:break a}d=e}}while(0);l=i;return d|0}function YD(a,b,c){a=a|0;b=b|0;c=c|0;return ZD(wx(a,96546)|0,b,c)|0}function ZD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+64|0;r=u+40|0;q=u+32|0;t=u+24|0;s=u+16|0;m=u+8|0;k=u;i=u+48|0;j=u+44|0;if(!e)qa(96508,96514,1292,96555);o=e+28|0;c[o>>2]=0;p=e+16|0;c[p>>2]=d;n=e+4|0;c[n>>2]=0;c[e+24>>2]=0;a:do if(b|0?(f=a[b>>0]|0,f<<24>>24):0)switch(f<<24>>24|0){case 97:if(!(y$(b,96573,5)|0)){c[p>>2]=4;m=_D(b+5|0,e)|0;c[k>>2]=j;m=(M1(m,134313,k)|0)>0;d=c[j>>2]|0;if(!(m&(d|0)>0))break a;c[n>>2]=d;break a}else{if(y$(b,96579,6)|0)break a;c[p>>2]=5;c[m>>2]=i;m=(M1(b+5|0,96586,m)|0)>0;v=+g[i>>2];g[e>>2]=m&v>0.0?v:1.0;break a}case 99:{if(f<<24>>24!=99)break a;if(a$(b,104980)|0)break a;c[p>>2]=1;break a}case 103:{if(f<<24>>24!=103)break a;if(a$(b,108412)|0)break a;c[p>>2]=3;break a}case 110:{if(f<<24>>24!=110)break a;if(a$(b,108399)|0)break a;c[p>>2]=2;break a}default:break a}while(0);if(0){d=c[15686]|0;D1(96589,11,1,d)|0;c[s>>2]=$D(c[p>>2]|0)|0;f1(d,96601,s)|0;if((c[p>>2]|0)==5){h[t>>3]=+g[e>>2];f1(d,96614,t)|0}c[q>>2]=c[n>>2];f1(d,96627,q)|0;c[r>>2]=c[o>>2];f1(d,96640,r)|0}l=u;return c[p>>2]|0}function _D(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;a:do if((a[b>>0]|0)==95){f=d+28|0;e=1;while(1){b=b+1|0;b:while(1){if(!e)break a;d=a[b>>0]|0;if(!(d<<24>>24))break a;switch(d<<24>>24|0){case 99:{g=10;break b}case 105:{g=9;break b}case 117:{g=11;break b}case 116:{g=12;break b}case 98:{d=32;break b}case 108:{g=7;break b}case 114:{g=8;break b}default:e=0}}if((g|0)==7){g=0;d=4}else if((g|0)==8){g=0;d=8}else if((g|0)==9){g=0;d=64}else if((g|0)==10){g=0;d=1}else if((g|0)==11){g=0;d=2}else if((g|0)==12){g=0;d=16}c[f>>2]=c[f>>2]|d}}while(0);return b|0}function $D(a){a=a|0;switch(a|0){case 1:{a=104980;break}case 2:{a=108399;break}case 3:{a=108412;break}case 4:{a=96573;break}case 5:{a=96579;break}default:a=96653}return a|0}function aE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+96|0;k=n;m=n+80|0;do if(a){if(!e){e=D_(1,20)|0;c[e+4>>2]=d>>>0>80?d:80}d=c[e>>2]|0;j=c[e+4>>2]|0;if(!d){h=100;d=a;i=D_(100,j)|0}else{h=d+100|0;i=E_(c[e+8>>2]|0,O(h,j)|0)|0;G3(i+(O(j,d)|0)|0,0,j*100|0)|0;d=a}while(1){d=bE(k,d,b,m)|0;if(!d)break;a=c[e>>2]|0;f=h<<1;g=O(h,j)|0;if((a|0)==(h|0)){i=E_(i,O(f,j)|0)|0;G3(i+g|0,0,g|0)|0;a=c[e>>2]|0}else f=h;a=i+(O(a,j)|0)|0;g=k;h=a+80|0;do{c[a>>2]=c[g>>2];a=a+4|0;g=g+4|0}while((a|0)<(h|0));c[e>>2]=(c[e>>2]|0)+1;h=f}if(c[m>>2]|0){m=e+16|0;c[m>>2]=c[m>>2]|1}d=c[e>>2]|0;if(!d){C_(i);C_(e);e=0;break}else{c[e+8>>2]=E_(i,O(d,j)|0)|0;break}}while(0);l=n;return e|0}function bE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+80|0;h=j+64|0;i=j;c[f>>2]=0;do{g=a[d>>0]|0;d=d+1|0}while((A$(g)|0)!=0);a:do switch(g|0){case 69:{c[b>>2]=0;d=cE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e>>2];break}case 101:{c[b>>2]=1;d=cE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e>>2];break}case 80:{c[b>>2]=2;d=dE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+4>>2];break}case 112:{c[b>>2]=3;d=dE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+4>>2];break}case 98:{c[b>>2]=4;d=dE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+8>>2];break}case 66:{c[b>>2]=5;d=dE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+8>>2];break}case 99:{d=eE(d,h)|0;if(!d){c[f>>2]=1;d=0;break a}g=fE(c[h>>2]|0,i)|0;c[h>>2]=g;if(!g){c[f>>2]=1;d=0;break a}if(!(c[i>>2]|0)){c[b>>2]=9;c[b+8>>2]=c[i+8>>2];if(!e)break a;c[b+72>>2]=c[e+24>>2];break a}else{c[b>>2]=14;f=b+8|0;g=i;h=f+64|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));if(!e)break a;c[b+72>>2]=c[e+40>>2];break a}}case 67:{d=eE(d,h)|0;if(!d){c[f>>2]=1;d=0;break a}g=fE(c[h>>2]|0,i)|0;c[h>>2]=g;if(!g){c[f>>2]=1;d=0;break a}if(!(c[i>>2]|0)){c[b>>2]=8;c[b+8>>2]=c[i+8>>2];if(!e)break a;c[b+72>>2]=c[e+20>>2];break a}else{c[b>>2]=13;f=b+8|0;g=i;h=f+64|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));if(!e)break a;c[b+72>>2]=c[e+40>>2];break a}}case 76:{c[b>>2]=6;d=dE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+12>>2];break}case 84:{c[b>>2]=7;d=gE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=gE(d,b+16|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=hE(d,b+24|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=gE(d,b+32|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=eE(d,b+40|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+16>>2];break}case 70:{c[b>>2]=10;d=gE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=eE(d,b+16|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+28>>2];break}case 83:{c[b>>2]=11;d=eE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+32>>2];break}case 73:{c[b>>2]=12;d=cE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=eE(d,b+40|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+36>>2];break}case 116:{c[b>>2]=15;d=iE(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+44>>2];break}case 0:{d=0;break}default:{c[f>>2]=1;d=0}}while(0);l=j;return d|0}function cE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0;i=l;l=l+16|0;e=i;h[b>>3]=+b2(a,e);f=c[e>>2]|0;if(((f|0)!=(a|0)?(h[b+8>>3]=+b2(f,e),g=c[e>>2]|0,(f|0)!=(g|0)):0)?(h[b+16>>3]=+b2(g,e),d=c[e>>2]|0,(g|0)!=(d|0)):0){h[b+24>>3]=+b2(d,e);a=c[e>>2]|0;a=(d|0)==(a|0)?0:a}else a=0;l=i;return a|0}function dE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+4|0;g=k;a=jE(a,j)|0;do if(a){d=c[j>>2]|0;i=D_(d,24)|0;c[b>>2]=d;e=i;f=0;while(1){if((f|0)>=(d|0)){d=9;break}h[e>>3]=+b2(a,g);d=c[g>>2]|0;if((a|0)==(d|0)){d=5;break}h[e+8>>3]=+b2(d,g);a=c[g>>2]|0;if((d|0)==(a|0)){d=7;break}h[e+16>>3]=0.0;e=e+24|0;d=c[b>>2]|0;f=f+1|0}if((d|0)==5){c[j>>2]=f;C_(i);a=0;break}else if((d|0)==7){c[j>>2]=f;C_(i);a=0;break}else if((d|0)==9){c[j>>2]=f;c[b+4>>2]=i;break}}else a=0;while(0);l=k;return a|0}function eE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j;b=jE(b,i)|0;f=c[i>>2]|0;do if(!((b|0)==0|(f|0)<1)){while(1){h=a[b>>0]|0;e=h<<24>>24==0;if(e^h<<24>>24!=45)b=b+1|0;else break}if(!e){h=D_(f+1|0,1)|0;g=h;e=f;while(1){b=b+1|0;if((e|0)<=0){e=9;break}e=a[b>>0]|0;if(!(e<<24>>24)){e=8;break}a[g>>0]=e;e=(c[i>>2]|0)+-1|0;c[i>>2]=e;g=g+1|0}if((e|0)==8){C_(h);b=0;break}else if((e|0)==9){a[g>>0]=0;c[d>>2]=h;break}}else b=0}else b=0;while(0);l=j;return b|0}function fE(b,d){b=b|0;d=d|0;var e=0;e=a[b>>0]|0;switch(e|0){case 91:{b=kE(b+1|0,d)|0;break}case 40:{b=lE(b+1|0,d)|0;break}case 47:case 35:{c[d>>2]=0;c[d+8>>2]=b;break}default:if(!(L$(e)|0))b=0;else{c[d>>2]=0;c[d+8>>2]=b}}return b|0}function gE(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0;f=l;l=l+16|0;d=f;e=+b2(a,d);d=c[d>>2]|0;if((d|0)==(a|0))d=0;else h[b>>3]=e;l=f;return d|0}function hE(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;a=jE(a,e)|0;e=c[e>>2]|0;c[b>>2]=(e|0)<0?0:e|0?2:1;l=d;return a|0}function iE(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[b>>2]=B$(a,e,10)|0;b=c[e>>2]|0;l=d;return ((b|0)==(a|0)?0:b)|0}function jE(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[b>>2]=h1(a,e,10)|0;b=c[e>>2]|0;l=d;return ((b|0)==(a|0)?0:b)|0}function kE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;m=o;c[b>>2]=1;n=b+8|0;i=gE(a,n)|0;do if(((((i|0)!=0?(j=gE(i,b+16|0)|0,(j|0)!=0):0)?(e=gE(j,b+24|0)|0,(e|0)!=0):0)?(f=gE(e,b+32|0)|0,(f|0)!=0):0)?(k=b+40|0,d=jE(f,k)|0,(d|0)!=0):0){b=c[k>>2]|0;f=D_(b,8)|0;e=0;while(1){if((e|0)>=(b|0)){d=13;break}d=gE(d,m)|0;if(!d){d=9;break}g[f+(e<<3)>>2]=+h[m>>3];d=eE(d,f+(e<<3)+4|0)|0;if(!d){d=12;break}e=e+1|0;b=c[k>>2]|0}if((d|0)==9){C_(f);a=0;break}else if((d|0)==12){C_(f);a=0;break}else if((d|0)==13){c[n+36>>2]=f;break}}else a=0;while(0);l=o;return a|0}function lE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;n=p;c[b>>2]=2;k=gE(a,b+8|0)|0;do if(((((((k|0)!=0?(m=gE(k,b+16|0)|0,(m|0)!=0):0)?(e=gE(m,b+24|0)|0,(e|0)!=0):0)?(f=gE(e,b+32|0)|0,(f|0)!=0):0)?(i=gE(f,b+40|0)|0,(i|0)!=0):0)?(j=gE(i,b+48|0)|0,(j|0)!=0):0)?(o=b+56|0,d=jE(j,o)|0,(d|0)!=0):0){e=c[o>>2]|0;i=D_(e,8)|0;f=0;while(1){if((f|0)>=(e|0)){d=15;break}d=gE(d,n)|0;if(!d){d=11;break}g[i+(f<<3)>>2]=+h[n>>3];d=eE(d,i+(f<<3)+4|0)|0;if(!d){d=14;break}f=f+1|0;e=c[o>>2]|0}if((d|0)==11){C_(i);a=0;break}else if((d|0)==14){C_(i);a=0;break}else if((d|0)==15){c[b+60>>2]=i;break}}else a=0;while(0);l=p;return a|0}function mE(a,b,c){a=a|0;b=b|0;c=c|0;return aE(a,b,c,0)|0}function nE(a){a=a|0;return mE(a,0,0)|0}function oE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=c[a+12>>2]|0;if(a|0){f=c[a+8>>2]|0;g=a+4|0;h=(e|0)==0;b=0;while(1){if((b|0)>=(c[a>>2]|0))break;d=f+(O(c[g>>2]|0,b)|0)|0;if(!h)tb[e&127](d);pE(d);b=b+1|0}C_(f);C_(a)}return}function pE(a){a=a|0;switch(c[a>>2]|0){case 3:case 2:{C_(c[a+8+4>>2]|0);break}case 5:case 4:{C_(c[a+8+4>>2]|0);break}case 6:{C_(c[a+8+4>>2]|0);break}case 7:{C_(c[a+40>>2]|0);break}case 9:case 8:{C_(c[a+8>>2]|0);break}case 14:case 13:{qE(a+8|0);break}case 10:{C_(c[a+16>>2]|0);break}case 11:{C_(c[a+8>>2]|0);break}case 12:{C_(c[a+40>>2]|0);break}default:{}}return}function qE(a){a=a|0;var b=0,d=0,e=0;switch(c[a>>2]|0){case 1:{e=a+40|0;b=a+8+36|0;a=0;while(1){d=c[b>>2]|0;if((a|0)>=(c[e>>2]|0))break;C_(c[d+(a<<3)+4>>2]|0);a=a+1|0}C_(d);break}case 2:{e=a+56|0;d=a+60|0;a=0;while(1){b=c[d>>2]|0;if((a|0)>=(c[e>>2]|0))break;C_(c[b+(a<<3)+4>>2]|0);a=a+1|0}C_(b);break}default:{}}return}function rE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;k=o+4|0;n=o;c[d>>2]=0;c[e>>2]=(dy(dz(b)|0)|0)!=0&1;f=c[46414]|0;a:do if(f|0?(h=xx(b,f)|0,i=a[h>>0]|0,i<<24>>24):0){f=20284;while(1){g=c[f>>2]|0;if(!g)break a;if(i<<24>>24==(a[g>>0]|0)?(a$(h,g)|0)==0:0)break;f=f+12|0}c[d>>2]=c[f+4>>2];c[e>>2]=c[f+8>>2]}while(0);f=c[46425]|0;if((f|0?(c[e>>2]|0)==1:0)?(j=xx(b,f)|0,a[j>>0]|0):0)sE(j,e);f=c[46426]|0;if((f|0?(c[d>>2]|0)==1:0)?(m=xx(b,f)|0,a[m>>0]|0):0)sE(m,d);if(a[(c[b+16>>2]|0)+153>>0]|0){j=b+-48|0;i=dz(c[((c[b>>2]&3|0)==2?b:j)+40>>2]|0)|0;m=c[b>>2]&3;rE(Qx(i,c[((m|0)==2?b:j)+40>>2]|0,c[((m|0)==3?b:b+48|0)+40>>2]|0,0,0)|0,k,n);c[e>>2]=c[k>>2]|c[e>>2];c[d>>2]=c[n>>2]|c[d>>2]}l=o;return}function sE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;m=o;k=o+4|0;j=0;e=0;a:while(1){c[d>>2]=e;g=(j|0)<4;h=(j|0)==3;i=(j|0)==0;while(1){if(!(g&(a[b>>0]|0)!=0))break a;c[k>>2]=0;f=tE(b,k)|0;e=c[k>>2]|0;if(!e){n=5;break a}b=(e|0)==8;if(!(h&b)){if(!(i&b))break;if(a[f>>0]|0)break}c[k>>2]=0;b=f}e=c[d>>2]|e<<(j<<3);j=j+1|0;b=f}if((n|0)==5){c[m>>2]=b;Ow(0,96668,m)|0}l=o;return}function tE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;c[e>>2]=0;d=uE(a,20344,e)|0;if((d|0)==(a|0)){while(1){d=uE(a,20360,e)|0;if((a|0)==(d|0))break;else a=d}d=uE(a,20408,e)|0}a=c[e>>2]|0;if((a|0)!=0&(a&15|0)==0){a=a|1;c[e>>2]=a}c[b>>2]=c[b>>2]|a;l=f;return d|0}function uE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;while(1){e=c[b>>2]|0;if(!e)break;f=V_(e)|0;if(!(y$(a,e,f)|0)){g=4;break}b=b+8|0}if((g|0)==4){c[d>>2]=c[d>>2]|c[b+4>>2];a=a+f|0}return a|0}function vE(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0;g=0;d=0.0;while(1){if((g|0)==4)break;f=b>>(g<<3)&15;e=1400;while(1){if(!(c[e+16>>2]|0))break;if((f|0)==(c[e>>2]|0)){i=6;break}e=e+24|0}if((i|0)==6){i=0;d=+h[e+8>>3]+d}g=g+1|0}return +(d*10.0*+KL(a,c[46418]|0,1.0,0.0))}function wE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0,n=0.0,o=0,p=0;p=l;l=l+96|0;m=p+80|0;o=p;k=f>4.0?f*.0875:.35;i=+h[d+8>>3];n=i*k;j=+h[d>>3];k=j*k;e=+h[b>>3];j=e+j;h[m>>3]=j;f=+h[b+8>>3];i=i+f;h[m+8>>3]=i;d=o+64|0;if(!(g&32)){c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];m=o+32|0;c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];f=i;e=j}else{c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];b=o+32|0;c[b>>2]=c[m>>2];c[b+4>>2]=c[m+4>>2];c[b+8>>2]=c[m+8>>2];c[b+12>>2]=c[m+12>>2]}h[o+16>>3]=e+n;h[o+24>>3]=f-k;h[o+48>>3]=e-n;h[o+56>>3]=f+k;do if(!(g&64))if(!(g&128)){ZO(a,o+16|0,3,g>>>4&1^1);break}else{ZO(a,o+32|0,3,g>>>4&1^1);break}else ZO(a,o,3,g>>>4&1^1);while(0);l=p;return}function xE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0;x=l;l=l+160|0;n=x+144|0;w=x;q=e*4.0;y=(g&32|0)==0;q=!(q1.0)|y?0.0:(f+-1.0)*.05/e;u=+h[d+8>>3];r=-u;v=q*r;t=+h[d>>3];q=t*q;r=s*r;s=t*s;p=+h[b>>3];e=p+t;h[n>>3]=e;o=+h[b+8>>3];f=u+o;h[n+8>>3]=f;t=t*.5+p;u=u*.5+o;d=w+128|0;if(y){c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];c[d+8>>2]=c[n+8>>2];c[d+12>>2]=c[n+12>>2];c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];y=w+64|0;c[y>>2]=c[b>>2];c[y+4>>2]=c[b+4>>2];c[y+8>>2]=c[b+8>>2];c[y+12>>2]=c[b+12>>2];i=o;j=p;k=o;m=p;f=o;e=p}else{c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[w>>2]=c[b>>2];c[w+4>>2]=c[b+4>>2];c[w+8>>2]=c[b+8>>2];c[w+12>>2]=c[b+12>>2];y=w+64|0;c[y>>2]=c[n>>2];c[y+4>>2]=c[n+4>>2];c[y+8>>2]=c[n+8>>2];c[y+12>>2]=c[n+12>>2];i=f+s;j=e+r;k=f-s;m=e-r}h[w+16>>3]=e-v;h[w+24>>3]=f-q;h[w+32>>3]=t-r;h[w+40>>3]=u-s;h[w+48>>3]=m;h[w+56>>3]=k;h[w+80>>3]=j;h[w+88>>3]=i;h[w+96>>3]=t+r;h[w+104>>3]=u+s;h[w+112>>3]=e+v;h[w+120>>3]=f+q;do if(!(g&64))if(!(g&128)){ZO(a,w,9,1);break}else{ZO(a,w+48|0,6,1);break}else ZO(a,w,6,1);while(0);l=x;return}function yE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0;q=l;l=l+64|0;p=q;t=+h[d+8>>3];s=+h[d>>3];k=+h[b>>3];e=k+s;m=+h[b+8>>3];f=m+t;i=k+s*.2;j=m+t*.2;k=k+s*.6;m=m+t*.6;h[p>>3]=i-t;h[p+8>>3]=j+s;n=p+16|0;h[n>>3]=i+t;o=p+24|0;h[o>>3]=j-s;h[p+32>>3]=k+t;h[p+40>>3]=m-s;h[p+48>>3]=k-t;h[p+56>>3]=m+s;if(!(g&64)){if(g&128|0){d=2;g=1;r=3}}else{d=3;g=0;r=3}if((r|0)==3){h[p+(g<<4)>>3]=i;h[p+(g<<4)+8>>3]=j;h[p+(d<<4)>>3]=k;h[p+(d<<4)+8>>3]=m}ZO(a,p,4,1);c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];h[n>>3]=e;h[o>>3]=f;aP(a,p,2);l=q;return}function zE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0;o=l;l=l+64|0;n=o;j=+h[d+8>>3];r=j*-.4;i=+h[d>>3];q=i*.4;t=+h[b>>3];e=t+i*.8;s=+h[b+8>>3];f=s+j*.8;i=t+i;j=s+j;h[n>>3]=t+r;k=n+8|0;h[k>>3]=s+q;d=n+16|0;h[d>>3]=t-r;m=n+24|0;h[m>>3]=s-q;h[n+32>>3]=e-r;h[n+40>>3]=f-q;h[n+48>>3]=e+r;h[n+56>>3]=f+q;if(!(g&64)){if(g&128|0){c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];d=2;p=5}}else{c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];d=3;p=5}if((p|0)==5){h[n+(d<<4)>>3]=e;h[n+(d<<4)+8>>3]=f}ZO(a,n,4,g>>>4&1^1);h[n>>3]=e;h[k>>3]=f;h[n+16>>3]=i;h[m>>3]=j;aP(a,n,2);l=o;return}function AE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;j=l;l=l+80|0;i=j;n=+h[d+8>>3];k=n*-.3333333333333333;p=+h[d>>3];f=p*.3333333333333333;q=+h[b>>3];m=q+p*.5;o=+h[b+8>>3];e=o+n*.5;d=i+64|0;h[i+64>>3]=q+p;h[i+72>>3]=o+n;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];h[i+16>>3]=m+k;h[i+24>>3]=e+f;d=i+32|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];h[i+48>>3]=m-k;h[i+56>>3]=e-f;do if(!(g&64)){d=g>>>4&1^1;if(!(g&128)){ZO(a,i,4,d);break}else{ZO(a,i,3,d);break}}else ZO(a,d,3,g>>>4&1^1);while(0);l=j;return}function BE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0.0;g=l;l=l+32|0;i=g;k=+h[c>>3];e=+h[c+8>>3];d=+C(+(e*e+k*k))*.5;m=+h[b>>3];k=k*.5;h[i>>3]=m+k-d;j=+h[b+8>>3];e=e*.5;h[i+8>>3]=j-d+e;h[i+16>>3]=m+d+k;h[i+24>>3]=j+d+e;YO(a,i,2,f>>>4&1^1);l=g;return}function CE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0;t=l;l=l+112|0;q=t+48|0;r=t+16|0;s=t;n=f>4.0?f*.125:.5;p=+h[b>>3];o=+h[d>>3];i=+h[b+8>>3];m=+h[d+8>>3];e=m*n;f=o*n;c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];h[r+16>>3]=o+p;h[r+24>>3]=m+i;h[q>>3]=n*(o-m)+p;j=n*(m+o);k=j+i;h[q+8>>3]=k;h[q+48>>3]=j+p;i=n*(m-o)+i;h[q+56>>3]=i;o=e*-.95;m=o+f+p;n=f*1.3333333333333333;if(!(g&32)){e=e*1.3333333333333333;j=f*-.33333333333333326;i=i-e;f=k-e;e=m-n}else{e=e*1.3333333333333333;j=f*2.333333333333333;i=i+e;f=k+e;e=m+n}h[q+16>>3]=e;h[q+24>>3]=f;h[q+32>>3]=j-o+p;h[q+40>>3]=i;aP(a,r,2);if(!(g&64)){if(g&128|0)WL(s,q,3,.5,q,0)}else WL(s,q,3,.5,0,q);$O(a,q,4,0,0,0);l=t;return}function DE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0;g=l;l=l+32|0;i=g;e=+h[d>>3]+ +h[b>>3];f=+h[d+8>>3]+ +h[b+8>>3];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];h[i+16>>3]=e;h[i+24>>3]=f;aP(a,i,2);l=g;return}function EE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0;n=l;l=l+80|0;j=n+72|0;k=n+8|0;m=n;i=+vE(a,g);i=i*i;h[m>>3]=i;c[f+12>>2]=g;g=f+32|0;a=e+3|0;f=b+(a<<4)|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];if((e|0)>(d|0)?(o=+h[b+(e<<4)>>3]-+h[f>>3],p=+h[b+(e<<4)+8>>3]-+h[b+(a<<4)+8>>3],p*p+o*o>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];q=k+32|0;a=b+(e+1<<4)|0;c[q>>2]=c[a>>2];c[q+4>>2]=c[a+4>>2];c[q+8>>2]=c[a+8>>2];c[q+12>>2]=c[a+12>>2];f=k+16|0;d=b+(e+2<<4)|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[k>>2]=c[g>>2];c[k+4>>2]=c[g+4>>2];c[k+8>>2]=c[g+8>>2];c[k+12>>2]=c[g+12>>2];c[j>>2]=k;c[j+4>>2]=m;LK(j,90,k,1);c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];c[a>>2]=c[q>>2];c[a+4>>2]=c[q+4>>2];c[a+8>>2]=c[q+8>>2];c[a+12>>2]=c[q+12>>2];c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];m=b+(e+3<<4)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];l=n;return e|0}function FE(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[a>>2]|0;d=+h[b>>3]-+h[f>>3];e=+h[b+8>>3]-+h[f+8>>3];return e*e+d*d<=+h[c[a+4>>2]>>3]|0}function GE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0;o=l;l=l+80|0;k=o+72|0;m=o+8|0;n=o;j=+vE(a,g);j=j*j;h[n>>3]=j;c[f+8>>2]=g;f=f+16|0;a=b+(d<<4)|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];if(!((e|0)>(d|0)?(i=d+3|0,p=+h[a>>3]-+h[b+(i<<4)>>3],q=+h[b+(d<<4)+8>>3]-+h[b+(i<<4)+8>>3],q*q+p*p>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];g=m+16|0;d=b+(i+2<<4)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];r=m+32|0;a=b+(i+1<<4)|0;c[r>>2]=c[a>>2];c[r+4>>2]=c[a+4>>2];c[r+8>>2]=c[a+8>>2];c[r+12>>2]=c[a+12>>2];s=m+48|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];c[k>>2]=s;c[k+4>>2]=n;LK(k,90,m,0);n=b+(i<<4)|0;c[n>>2]=c[s>>2];c[n+4>>2]=c[s+4>>2];c[n+8>>2]=c[s+8>>2];c[n+12>>2]=c[s+12>>2];c[a>>2]=c[r>>2];c[a+4>>2]=c[r+4>>2];c[a+8>>2]=c[r+8>>2];c[a+12>>2]=c[r+12>>2];c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];c[e>>2]=c[m>>2];c[e+4>>2]=c[m+4>>2];c[e+8>>2]=c[m+8>>2];c[e+12>>2]=c[m+12>>2];l=o;return i|0}function HE(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0,v=0,w=0;u=(g|0)!=0;l=(i|0)!=0;if(!((e|0)==(d|0)&(u&l))){if(l){j=+vE(a,i);k=+h[b+(e<<4)>>3];p=+h[b+(e<<4)+8>>3];l=e+3|0;r=b+(l<<4)|0;n=+h[r>>3];l=b+(l<<4)+8|0;o=+h[l>>3];t=k-n;s=p-o;t=+C(+(s*s+t*t))*.9;j=j>=t?t:j;if(p==o){m=(k>3]=k;h[b+(w<<4)+8>>3]=p;e=b+(e+2<<4)|0;h[r>>3]=m;h[l>>3]=j;c[e>>2]=c[r>>2];c[e+4>>2]=c[r+4>>2];c[e+8>>2]=c[r+8>>2];c[e+12>>2]=c[r+12>>2];c[f+12>>2]=i;h[f+32>>3]=n;h[f+40>>3]=o}if(u){m=+vE(a,g);l=b+(d<<4)|0;k=+h[l>>3];j=+h[b+(d<<4)+8>>3];w=d+3|0;o=+h[b+(w<<4)>>3];p=+h[b+(w<<4)+8>>3];t=k-o;s=j-p;t=+C(+(s*s+t*t))*.9;m=m>=t?t:m;if(j==p){n=(k>3]=n;h[b+(w<<4)+8>>3]=m;c[l>>2]=c[v>>2];c[l+4>>2]=c[v+4>>2];c[l+8>>2]=c[v+8>>2];c[l+12>>2]=c[v+12>>2];v=d+2|0;h[b+(v<<4)>>3]=o;h[b+(v<<4)+8>>3]=p;v=16}}else{r=b+(e<<4)|0;s=+h[r>>3];t=+h[b+(e<<4)+8>>3];l=e+3|0;u=b+(l<<4)|0;k=+h[u>>3];l=b+(l<<4)+8|0;j=+h[l>>3];m=+vE(a,g);q=+vE(a,i);n=s-k;p=t-j;n=+C(+(p*p+n*n));w=!(q+m>=n);n=n*.3333333333333333;m=w?m:n;n=w?q:n;if(t==j){w=s>3]=q;h[b+(w<<4)+8>>3]=o;c[r>>2]=c[v>>2];c[r+4>>2]=c[v+4>>2];c[r+8>>2]=c[v+8>>2];c[r+12>>2]=c[v+12>>2];v=b+(e+2<<4)|0;h[u>>3]=p;h[l>>3]=m;c[v>>2]=c[u>>2];c[v+4>>2]=c[u+4>>2];c[v+8>>2]=c[u+8>>2];c[v+12>>2]=c[u+12>>2];c[f+12>>2]=i;h[f+32>>3]=s;h[f+40>>3]=t;v=16}if((v|0)==16){c[f+8>>2]=g;h[f+16>>3]=k;h[f+24>>3]=j}return}function IE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;n=+h[b>>3];k=+h[c>>3]-n;o=+h[b+8>>3];l=+h[c+8>>3]-o;j=d*10.0/(+C(+(k*k+l*l))+.0001);k=j*((k>=0.0?.0001:-.0001)+k);j=((l>=0.0?.0001:-.0001)+l)*j;l=k*.5;m=j*.5;i=n-m;f=o-l;n=m+n;l=o+l;o=i+k;m=f+j;k=n+k;j=l+j;g=o>k?o:k;g=n>g?n:g;d=m>j?m:j;d=l>d?l:d;k=o>3]=i>3]=f>3]=i>g?i:g;h[a+24>>3]=f>d?f:d;return}function JE(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0;q=l;l=l+48|0;m=q+32|0;k=q+16|0;p=q;n=(c[a+16>>2]|0)+12|0;o=c[n>>2]|0;c[n>>2]=b;XO(a,c[(c[a>>2]|0)+336>>2]|0);eP(a,g);t=+h[e>>3]-+h[d>>3];b=e+8|0;s=+h[b>>3]-+h[d+8>>3];r=10.0/(+C(+(t*t+s*s))+.0001);h[e>>3]=r*((t>=0.0?.0001:-.0001)+t);h[b>>3]=((s>=0.0?.0001:-.0001)+s)*r;b=0;while(1){if((b|0)>=4)break;j=i>>(b<<3)&255;if(!j)break;c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];KE(p,a,k,m,f,g,j);c[d>>2]=c[p>>2];c[d+4>>2]=c[p+4>>2];c[d+8>>2]=c[p+8>>2];c[d+12>>2]=c[p+12>>2];b=b+1|0}c[n>>2]=o;l=q;return}function KE(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+32|0;m=q+16|0;k=q;n=i&15;j=1400;while(1){o=c[j>>2]|0;if(!o)break;if((n|0)==(o|0)){p=4;break}j=j+24|0}if((p|0)==4){r=+h[j+8>>3]*f;h[e>>3]=r*+h[e>>3];o=e+8|0;h[o>>3]=r*+h[o>>3];p=c[j+16>>2]|0;c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];wb[p&15](b,k,m,f,g,i);h[d>>3]=+h[e>>3]+ +h[d>>3];p=d+8|0;h[p>>3]=+h[o>>3]+ +h[p>>3]};c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];l=q;return}function LE(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i+8|0;f=i;d=wx(b,96770)|0;if((d|0)!=0?(a[d>>0]|0)!=0:0){e=d;h=5}else{d=wx(b,96782)|0;if((d|0)!=0?(a[d>>0]|0)!=0:0){e=d;h=5}else d=0}if((h|0)==5){d=mE(e,0,120)|0;if(!d){c[f>>2]=qy(b)|0;Ow(0,96789,f)|0;c[g>>2]=e;Ow(3,96842,g)|0}}l=i;return d|0}function ME(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+16|0;f=tH(304)|0;if(!f)Ow(1,96850,g)|0;e=a+16|0;a=c[e>>2]|0;c[f>>2]=a;c[e>>2]=f;if(!a){c[f+144>>2]=3;c[f+148>>2]=0;h[f+152>>3]=1.0}else{b=f+16|0;d=a+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=f+56|0;d=a+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));c[f+144>>2]=c[a+144>>2];c[f+148>>2]=c[a+148>>2];h[f+152>>3]=+h[a+152>>3];c[f+136>>2]=c[a+136>>2];b=f+96|0;d=a+96|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0))}l=g;return f|0}function NE(a){a=a|0;var b=0;a=a+16|0;b=c[a>>2]|0;if(!b)qa(96876,96880,117,96887);else{C_(c[b+212>>2]|0);C_(c[b+208>>2]|0);C_(c[b+216>>2]|0);C_(c[b+220>>2]|0);C_(c[b+224>>2]|0);C_(c[b+228>>2]|0);C_(c[b+232>>2]|0);C_(c[b+236>>2]|0);C_(c[b+240>>2]|0);C_(c[b+244>>2]|0);C_(c[b+248>>2]|0);C_(c[b+252>>2]|0);C_(c[b+256>>2]|0);C_(c[b+272>>2]|0);C_(c[b+284>>2]|0);C_(c[b+280>>2]|0);c[a>>2]=c[b>>2];C_(b);return}}function OE(d,e,f,g,h,i,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0;l=c[d+16>>2]|0;k=c[d+152>>2]|0;if((e|0)!=0&(k&32768|0)!=0)c[l+192>>2]=e;if(((k&65536|0)!=0?(c[l+212>>2]=oH(i,j)|0,(f|0)!=0):0)?(a[f>>0]|0)!=0:0){c[l+208>>2]=oH(f,j)|0;d=1}else d=0;do if(k&4194304){if(g|0?a[g>>0]|0:0){c[l+228>>2]=oH(g,j)|0;d=l+260|0;b[d>>1]=b[d>>1]|1;d=1;break}e=c[l+192>>2]|0;if(e){c[l+228>>2]=m1(e)|0;d=1}}while(0);if((h|0)!=0&(k&8388608|0)!=0?(a[h>>0]|0)!=0:0){c[l+244>>2]=oH(h,j)|0;d=1}return d|0}function PE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+80|0;i=j;h=j+8|0;g=c[(c[b>>2]|0)+168>>2]|0;f=c[(c[(c[g+16>>2]|0)+8>>2]|0)+92>>2]|0;QE(b,e);b=wx(d,137978)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0){Vw(e,b)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){Tw(e,1)|0;b=c[f>>2]|0}a[b>>0]=0;b=c[e>>2]|0;c[f>>2]=b}else{if((g|0)!=(d|0)&(f|0)!=0){Vw(e,f)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){Tw(e,1)|0;b=c[f>>2]|0}c[f>>2]=b+1;a[b>>0]=95}switch(oz(d)|0){case 0:{f=(g|0)==(d|0)?108412:96901;b=(c[d>>2]|0)>>>4;break}case 1:{f=108399;b=(c[d>>2]|0)>>>4;break}case 2:{f=108368;b=(c[d>>2]|0)>>>4;break}default:{f=0;b=0}}Vw(e,f)|0;c[i>>2]=b;X0(h,96907,i)|0;Vw(e,h)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){Tw(e,1)|0;b=c[f>>2]|0}a[b>>0]=0;b=c[e>>2]|0;c[f>>2]=b}l=j;return b|0}function QE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+144|0;h=i;g=i+8|0;e=c[b+160>>2]|0;if((e|0)>1?c[b+152>>2]&64|0:0){Vw(d,c[(c[(c[b>>2]|0)+308>>2]|0)+(e<<2)>>2]|0)|0;f=d+4|0;e=c[f>>2]|0;if(e>>>0>=(c[d+8>>2]|0)>>>0){Tw(d,1)|0;e=c[f>>2]|0}c[f>>2]=e+1;a[e>>0]=95}f=c[b+196>>2]|0;e=c[b+200>>2]|0;if((f|0)>0|(e|0)>0){c[h>>2]=f;c[h+4>>2]=e;X0(g,96911,h)|0;Vw(d,g)|0}l=i;return}function RE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,i=0.0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0;s=l;l=l+48|0;p=s+16|0;f=s+32|0;q=s;r=+h[(c[a+16>>2]|0)+152>>3];o=SE(d,0,f)|0;if((o+-1|0)>>>0>=2){e=+h[b+16>>3];k=(e+ +h[b>>3])*.5;h[q>>3]=k;i=+h[b+24>>3];m=(i+ +h[b+8>>3])*.5;h[q+8>>3]=m;k=e-k;m=i-m;n=r>.5;if(n)eP(a,.5);j=c[f>>2]|0;i=0.0;f=c[j+8>>2]|0;while(1){d=c[f>>2]|0;if(!d)break;b=f+4|0;if(+g[b>>2]==0.0)e=i;else{VO(a,d);if(!(c[f+12>>2]|0))e=6.283185307179586;else e=+g[b>>2]*6.283185307179586+i;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];b=qQ(p,k,m,i,e)|0;$O(a,c[b>>2]|0,c[b+4>>2]|0,0,0,1);mV(b)}i=e;f=f+12|0}if(n)eP(a,r);TE(j)}l=s;return o|0}function SE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;o=r+8|0;n=r;q=tH(12)|0;i=m1(b)|0;a:do if(!d){d=1;f=i;while(1){switch(a[f>>0]|0){case 0:break a;case 58:{d=d+1|0;break}default:{}}f=f+1|0}}while(0);c[q+4>>2]=i;p=tH((d*12|0)+12|0)|0;c[q+8>>2]=p;m=1.0;h=0;d=0;f=i;while(1){f=j1(f,104958)|0;if(!f){f=20;break}j=+UE(f);if(!(j>=0.0)){f=17;break}k=j-m;if(k>0.0)if((c[5130]|0)!=0?!(k<1.0e-05&k>-1.0e-05):0){c[n>>2]=b;Ow(0,96922,n)|0;c[5130]=0;j=m;d=3}else j=m;k=m-j;if(j>0.0)a[p+(h*12|0)+8>>0]=1;if(a[f>>0]|0)c[p+(h*12|0)>>2]=f;f=h+1|0;g[p+(h*12|0)+4>>2]=j;if(k<1.0e-05&k>-1.0e-05){h=f;f=30;break}else{m=k;h=f;f=0}}b:do if((f|0)==17){if(!(c[5130]|0))d=1;else{c[o>>2]=b;Ow(1,96957,o)|0;c[5130]=0;d=2}TE(q)}else if((f|0)==20)if(m>0.0){f=0;i=0;while(1){if((f|0)>=(h|0))break;o=i+(+g[p+(f*12|0)+4>>2]==0.0&1)|0;f=f+1|0;i=o}if((i|0)<=0){f=p+((h+-1|0)*12|0)+4|0;g[f>>2]=m+ +g[f>>2];f=30;break}j=m/+(i|0);f=0;while(1){if((f|0)>=(h|0)){f=30;break b}i=p+(f*12|0)+4|0;if(+g[i>>2]==0.0)g[i>>2]=j;f=f+1|0}}else f=30;while(0);if((f|0)==30){while(1){f=h+-1|0;if((h|0)<=0)break;if(+g[p+(f*12|0)+4>>2]>0.0)break;else h=f}c[p+(h*12|0)>>2]=0;c[q>>2]=h;c[e>>2]=q}l=r;return d|0}function TE(a){a=a|0;C_(c[a+4>>2]|0);C_(c[a+8>>2]|0);C_(a);return}function UE(b){b=b|0;var d=0.0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;b=z$(b,59)|0;if(!b)d=0.0;else{g=b+1|0;a[b>>0]=0;d=+b2(g,e);d=(d>=0.0?(c[e>>2]|0)!=(g|0):0)?d:-1.0}l=f;return +d}function VE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0;t=l;l=l+80|0;i=t+64|0;r=t;s=+h[(c[a+16>>2]|0)+152>>3];q=SE(d,0,i)|0;if((q+-1|0)>>>0>=2){if(!e){c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];p=r+16|0;o=b+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=r+32|0;o=b+32|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=r+48|0;o=b+48|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2]}else{p=b+32|0;c[r>>2]=c[p>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];p=r+16|0;o=b+48|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=r+32|0;c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];p=r+48|0;o=b+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2]}k=r+16|0;m=+h[k>>3];f=+h[r>>3];n=m-f;o=r+32|0;h[o>>3]=f;h[k>>3]=f;p=s>.5;if(p)eP(a,.5);i=c[i>>2]|0;j=r+48|0;e=c[i+8>>2]|0;while(1){d=c[e>>2]|0;if(!d)break;b=e+4|0;if(!(+g[b>>2]==0.0)){VO(a,d);if(!(c[e+12>>2]|0))f=m;else f=n*+g[b>>2]+ +h[r>>3];h[o>>3]=f;h[k>>3]=f;ZO(a,r,4,1);f=+h[k>>3];h[j>>3]=f;h[r>>3]=f}e=e+12|0}if(p)eP(a,s);TE(i)}l=t;return q|0}function WE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;g=f>>>16^2;c[d+264>>2]=g;h=d+268|0;c[h>>2]=g+2;g=d+272|0;C_(c[g>>2]|0);d=tH(c[h>>2]<<4)|0;c[g>>2]=d;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];g=d+16|0;b=b+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];if(!(e&8192))xO(a,d,d,2)|0;if(!f)VG(d)}return}function XE(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0,p=0,q=0;q=l;l=l+144|0;c=q+80|0;e=q+16|0;f=q;k=+h[b>>3];o=a+16|0;m=+h[o>>3];if(!(((((((((!(k>m)?(n=+h[a>>3],!(k>3],i=+h[a+24>>3],!(d>i)):0)?(j=+h[a+8>>3],!(d>3],!(k>m|k>3],!(k>i|k>3],!(k>m|k>3],!(k>i|k>3],!(k>m|k>3],!(n>i|n>3];if(!(d>+h[o>>3])){if(d<+h[a>>3]){c=a;p=16}}else{c=o;p=16}if((p|0)==16){p=0;h[c>>3]=d}d=+h[b+(e<<4)+8>>3];if(!(d>+h[f>>3])){if(d<+h[g>>3]){c=a;p=19}}else{c=o;p=19}if((p|0)==19){p=0;h[c+8>>3]=d}e=e+1|0}}while(0);l=q;return}function YE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,h=0,i=0;b=l;l=l+48|0;d=b+32|0;e=b+16|0;f=b;i=a+48|0;h=a+16|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];g=+_G(f,e,d);h=a+32|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];a=g<4.0&+_G(f,e,d)<4.0&1;l=b;return a|0}function ZE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0;D=l;l=l+272|0;u=D+256|0;v=D+224|0;w=D+192|0;x=D+128|0;y=D+64|0;z=D;A=D+160|0;B=D+96|0;C=D+32|0;t=c[d+16>>2]|0;s=c[t+144>>2]|0;r=t+16|0;c[x>>2]=c[r>>2];c[x+4>>2]=c[r+4>>2];c[x+8>>2]=c[r+8>>2];c[x+12>>2]=c[r+12>>2];c[x+16>>2]=c[r+16>>2];c[x+20>>2]=c[r+20>>2];c[x+24>>2]=c[r+24>>2];c[x+28>>2]=c[r+28>>2];t=c[(c[t+8>>2]|0)+88>>2]|0;c[z>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[z+12>>2]=0;c[z+16>>2]=0;c[z+20>>2]=0;c[z+24>>2]=0;c[z+28>>2]=0;if(!t){c[b>>2]=c[x>>2];c[b+4>>2]=c[x+4>>2];c[b+8>>2]=c[x+8>>2];c[b+12>>2]=c[x+12>>2];c[b+16>>2]=c[x+16>>2];c[b+20>>2]=c[x+20>>2];c[b+24>>2]=c[x+24>>2];c[b+28>>2]=c[x+28>>2]}else{d=x+16|0;if(+h[x>>3]==+h[d>>3]?(e=x+8|0,f=x+24|0,+h[e>>3]==+h[f>>3]):0){h[e>>3]=1797693134862315708145274.0e284;h[x>>3]=1797693134862315708145274.0e284;h[f>>3]=-1797693134862315708145274.0e284;h[d>>3]=-1797693134862315708145274.0e284}j=v+8|0;k=v+16|0;m=v+24|0;n=y+16|0;o=y+24|0;p=s+144|0;q=w+16|0;r=t+12|0;d=0;f=c[t+8>>2]|0;e=0;g=0.0;i=0;while(1){if((i|0)>=(c[t>>2]|0))break;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[y+16>>2]=c[z+16>>2];c[y+20>>2]=c[z+20>>2];c[y+24>>2]=c[z+24>>2];c[y+28>>2]=c[z+28>>2];switch(c[f>>2]|0){case 1:case 0:{H=+h[f+8>>3];I=+h[f+24>>3];h[v>>3]=H-I;F=+h[f+16>>3];G=+h[f+32>>3];h[j>>3]=F-G;h[k>>3]=I+H;h[m>>3]=G+F;E=f+80|0;c[E>>2]=c[v>>2];c[E+4>>2]=c[v+4>>2];c[E+8>>2]=c[v+8>>2];c[E+12>>2]=c[v+12>>2];E=f+96|0;c[E>>2]=c[k>>2];c[E+4>>2]=c[k+4>>2];c[E+8>>2]=c[k+8>>2];c[E+12>>2]=c[k+12>>2];c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];_E(x,u);c[u>>2]=c[k>>2];c[u+4>>2]=c[k+4>>2];c[u+8>>2]=c[k+8>>2];c[u+12>>2]=c[k+12>>2];_E(x,u);break}case 3:case 2:{E=f+80|0;J=f+8|0;$E(A,c[J+4>>2]|0,c[J>>2]|0,x);c[E>>2]=c[A>>2];c[E+4>>2]=c[A+4>>2];c[E+8>>2]=c[A+8>>2];c[E+12>>2]=c[A+12>>2];c[E+16>>2]=c[A+16>>2];c[E+20>>2]=c[A+20>>2];c[E+24>>2]=c[A+24>>2];c[E+28>>2]=c[A+28>>2];break}case 5:case 4:{J=f+80|0;E=f+8|0;$E(B,c[E+4>>2]|0,c[E>>2]|0,x);c[J>>2]=c[B>>2];c[J+4>>2]=c[B+4>>2];c[J+8>>2]=c[B+8>>2];c[J+12>>2]=c[B+12>>2];c[J+16>>2]=c[B+16>>2];c[J+20>>2]=c[B+20>>2];c[J+24>>2]=c[B+24>>2];c[J+28>>2]=c[B+28>>2];break}case 6:{J=f+80|0;E=f+8|0;$E(C,c[E+4>>2]|0,c[E>>2]|0,x);c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];c[J+16>>2]=c[C+16>>2];c[J+20>>2]=c[C+20>>2];c[J+24>>2]=c[C+24>>2];c[J+28>>2]=c[C+28>>2];break}case 7:{J=f+112|0;c[J>>2]=tH(56)|0;E=m1(c[f+40>>2]|0)|0;K=c[J>>2]|0;c[K>>2]=E;a[K+48>>0]=a[97003+(c[f+24>>2]|0)>>0]|0;c[y>>2]=e;h[n>>3]=g;c[o>>2]=c[o>>2]&-128|d&127;K=c[p>>2]|0;K=nb[c[K>>2]&63](K,y,1)|0;E=c[J>>2]|0;c[E+4>>2]=K;vL(u,s,E);aF(w,+h[f+8>>3],+h[f+16>>3],c[J>>2]|0);J=f+80|0;c[J>>2]=c[w>>2];c[J+4>>2]=c[w+4>>2];c[J+8>>2]=c[w+8>>2];c[J+12>>2]=c[w+12>>2];c[J+16>>2]=c[w+16>>2];c[J+20>>2]=c[w+20>>2];c[J+24>>2]=c[w+24>>2];c[J+28>>2]=c[w+28>>2];c[u>>2]=c[w>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];_E(x,u);c[u>>2]=c[q>>2];c[u+4>>2]=c[q+4>>2];c[u+8>>2]=c[q+8>>2];c[u+12>>2]=c[q+12>>2];_E(x,u);if(!(c[r>>2]|0))c[r>>2]=106;break}case 10:{e=c[f+16>>2]|0;g=+h[f+8>>3];break}case 15:{d=c[f+8>>2]|0;break}default:{}}f=f+120|0;i=i+1|0}c[b>>2]=c[x>>2];c[b+4>>2]=c[x+4>>2];c[b+8>>2]=c[x+8>>2];c[b+12>>2]=c[x+12>>2];c[b+16>>2]=c[x+16>>2];c[b+20>>2]=c[x+20>>2];c[b+24>>2]=c[x+24>>2];c[b+28>>2]=c[x+28>>2]}l=D;return}function _E(a,b){a=a|0;b=b|0;var c=0.0,d=0;c=+h[b>>3];d=a+16|0;if(c>+h[d>>3])h[d>>3]=c;if(c<+h[a>>3])h[a>>3]=c;c=+h[b+8>>3];b=a+24|0;if(c>+h[b>>3])h[b>>3]=c;b=a+8|0;if(c<+h[b>>3])h[b>>3]=c;return}function $E(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+48|0;k=r+32|0;n=r;f=+h[b>>3];o=n+16|0;h[o>>3]=f;h[n>>3]=f;f=+h[b+8>>3];p=n+24|0;h[p>>3]=f;m=n+8|0;h[m>>3]=f;j=1;while(1){if((j|0)>=(d|0))break;i=b+24|0;f=+h[i>>3];if(!(f<+h[n>>3])){if(f>+h[o>>3]){g=o;q=5}}else{g=n;q=5}if((q|0)==5){q=0;h[g>>3]=f}f=+h[b+32>>3];if(!(f<+h[m>>3])){if(f>+h[p>>3]){b=o;q=8}}else{b=n;q=8}if((q|0)==8){q=0;h[b+8>>3]=f}j=j+1|0;b=i}c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];_E(e,k);c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];_E(e,k);c[a>>2]=c[n>>2];c[a+4>>2]=c[n+4>>2];c[a+8>>2]=c[n+8>>2];c[a+12>>2]=c[n+12>>2];c[a+16>>2]=c[n+16>>2];c[a+20>>2]=c[n+20>>2];c[a+24>>2]=c[n+24>>2];c[a+28>>2]=c[n+28>>2];l=r;return}function aF(b,c,d,e){b=b|0;c=+c;d=+d;e=e|0;var f=0.0,g=0,i=0,j=0,k=0.0,m=0,n=0;n=l;l=l+16|0;i=n+8|0;j=n;f=+h[e+32>>3];k=+h[e+40>>3];switch(a[e+48>>0]|0){case 108:{h[i>>3]=c;f=f+c;g=j;m=5;break}case 110:{f=f*.5;h[i>>3]=c-f;f=f+c;g=j;m=5;break}case 114:{h[j>>3]=c;f=c-f;g=i;m=5;break}default:{c=0.0;f=0.0}}if((m|0)==5){h[g>>3]=f;c=+h[i>>3];f=+h[j>>3]}d=+h[e+16>>3]+d;h[b>>3]=c;h[b+8>>3]=d-k;h[b+16>>3]=f;h[b+24>>3]=d;l=n;return}function bF(a){a=a|0;if((c[a>>2]|0)==7)lH(c[a+112>>2]|0,1);return}function cF(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0.0;m=l;l=l+16|0;k=m;j=c[b+152>>2]|0;n=+h[b+432>>3];i=+h[b+352>>3]*.013888888888888888;f=i*n;h[b+488>>3]=f;g=+h[b+440>>3];i=i*g;h[b+496>>3]=i;h[b+520>>3]=n*.013888888888888888;e=b+528|0;h[e>>3]=g*.013888888888888888;if(j&4096|c[46369]|0)h[e>>3]=g*-.013888888888888888;e=(c[b+360>>2]|0)==0;n=+((c[b+448>>2]|0)>>>0);g=+((c[b+452>>2]|0)>>>0);h[b+368>>3]=(e?n:g)/f;h[b+376>>3]=(e?g:n)/i;bP(b,ML(d,mx(d,0,98496,0)|0,191979)|0);c[b+160>>2]=0;dF(b,d);if(j&2|0)eF(b,d);e=Ry(d)|0;while(1){if(!e)break;a[(c[e+16>>2]|0)+116>>0]=0;e=Sy(d,e)|0}fF(b,k);while(1){if(!((gF(b)|0)<<24>>24))break;if((hF(b)|0)>1)CO(b);iF(b);while(1){if(!((jF(b)|0)<<24>>24))break;kF(b,d);lF(b)}if((hF(b)|0)>1)DO(b);mF(b,k)}nF(b);l=m;return}function dF(a,b){a=a|0;b=b|0;var d=0;d=ME(a)|0;c[d+4>>2]=0;c[d+8>>2]=b;c[d+12>>2]=0;mG(a,c[(c[b+16>>2]|0)+12>>2]|0,b);yO(a,b);return}function eF(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;VO(b,131718);d=wx(c,137895)|0;if(d|0?a[d>>0]|0:0)VO(b,d);d=wx(c,98420)|0;if(d|0?a[d>>0]|0:0)TO(b,d);yG(b,c);g=Ry(c)|0;while(1){if(!g)break;d=wx(g,137741)|0;if(d|0?a[d>>0]|0:0)TO(b,d);d=wx(g,134647)|0;if(d|0?a[d>>0]|0:0)VO(b,d);d=wx(g,98392)|0;do if(d|0?a[d>>0]|0:0){if(!(z$(d,58)|0)){TO(b,d);break}e=m1(d)|0;d=e;while(1){d=j1(d,104958)|0;if(!d)break;if(!(a[d>>0]|0)){d=0;continue}TO(b,d);d=0}C_(e)}while(0);d=wx(g,98420)|0;if(d|0?a[d>>0]|0:0)TO(b,d);f=Dx(c,g)|0;while(1){if(!f)break;d=wx(f,137741)|0;do if(d|0?a[d>>0]|0:0){if(!(z$(d,58)|0)){TO(b,d);break}e=m1(d)|0;d=e;while(1){d=j1(d,104958)|0;if(!d)break;if(!(a[d>>0]|0)){d=0;continue}TO(b,d);d=0}C_(e)}while(0);d=wx(f,98420)|0;if(d|0?a[d>>0]|0:0)TO(b,d);f=Fx(c,f)|0}g=Sy(c,g)|0}return}function fF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;e=i+8|0;g=i;h=c[a>>2]|0;d=c[h+312>>2]|0;f=a+156|0;c[f>>2]=d;h=c[h+316>>2]|0;if(!h)if((d|0)>1?(c[a+152>>2]&64|0)==0:0){c[e>>2]=c[a+52>>2];Ow(0,97541,e)|0;c[f>>2]=1;e=1;d=0}else{e=1;d=0}else{d=h+4|0;if((c[h>>2]|0)>1?(c[a+152>>2]&64|0)==0:0){c[g>>2]=c[a+52>>2];Ow(0,97541,g)|0;c[h+8>>2]=(c[f>>2]|0)+1}e=c[d>>2]|0;d=h+8|0}c[a+160>>2]=e;c[b>>2]=d;l=i;return}function gF(a){a=a|0;return (c[a+160>>2]|0)<=(c[a+156>>2]|0)|0}function hF(a){a=a|0;var b=0;b=c[(c[a>>2]|0)+316>>2]|0;return c[((b|0)==0?a+156|0:b)>>2]|0}function iF(a){a=a|0;var b=0,d=0;d=a+172|0;b=c[d+4>>2]|0;a=a+196|0;c[a>>2]=c[d>>2];c[a+4>>2]=b;return}function jF(a){a=a|0;var b=0,d=0;d=c[a+196>>2]|0;if(((d|0)>-1?(d|0)<(c[a+164>>2]|0):0)?(b=c[a+200>>2]|0,(b|0)>-1):0)a=(b|0)<(c[a+168>>2]|0)&1;else a=0;return a|0}function kF(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+176|0;k=p;f=p+48|0;m=p+32|0;n=c[d+16>>2]|0;o=c[d+152>>2]|0;if((c[d+160>>2]|0)<=1?(c[d+196>>2]|0)<=0:0)h=0;else{Sw(m,128,f);g=n+212|0;h=c[g>>2]|0;QE(d,m);Vw(m,h)|0;i=m+4|0;f=c[i>>2]|0;if(f>>>0>=(c[m+8>>2]|0)>>>0){Tw(m,1)|0;f=c[i>>2]|0}a[f>>0]=0;f=c[m>>2]|0;c[i>>2]=f;c[g>>2]=f}pQ(wx(e,97006)|0);pF(d);AO(d);TO(d,134232);VO(d,131718);do if(o&4259840|0){if((c[n+208>>2]|0)==0?(b[n+260>>1]&1)==0:0)break;if(o&655360){i=o&131072;c[n+264>>2]=i>>>16^2;f=tH((i>>>12^32)+32|0)|0;g=d+288|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=f+16|0;q=d+304|0;c[g>>2]=c[q>>2];c[g+4>>2]=c[q+4>>2];c[g+8>>2]=c[q+8>>2];c[g+12>>2]=c[q+12>>2];if(!i){VG(f);g=4}else g=2}else{f=0;g=0}if(!(o&8192))xO(d,f,f,g)|0;c[n+272>>2]=f;c[n+268>>2]=g}while(0);if(o&32768|0?(j=c[(c[e+16>>2]|0)+12>>2]|0,j|0):0)c[n+192>>2]=c[j>>2];g=(o&4|0)!=0;do if(!g){f=n+208|0;if((c[f>>2]|0)==0?(b[n+260>>1]&1)==0:0)break;q=d+256|0;c[k>>2]=c[q>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[k+12>>2]=c[q+12>>2];c[k+16>>2]=c[q+16>>2];c[k+20>>2]=c[q+20>>2];c[k+24>>2]=c[q+24>>2];c[k+28>>2]=c[q+28>>2];WE(d,k);OO(d,c[f>>2]|0,c[n+228>>2]|0,c[n+244>>2]|0,c[n+212>>2]|0)}while(0);qF(d,e);f=c[(c[e+16>>2]|0)+12>>2]|0;if(f|0)nH(d,4,f);do if(!g){if((c[n+208>>2]|0)==0?(b[n+260>>1]&1)==0:0)break;PO(d)}while(0);rF(d,e,o);BO(d);if(h|0){Ww(m);c[n+212>>2]=h}l=p;return}function lF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+32|0;d=h+24|0;b=h+16|0;j=h+8|0;f=h;g=a+196|0;i=a+188|0;c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[d>>2]=c[i>>2];c[d+4>>2]=c[i+4>>2];oF(j,b,d);i=c[j+4>>2]|0;e=g;c[e>>2]=c[j>>2];c[e+4>>2]=i;if(!((jF(a)|0)<<24>>24)){e=a+180|0;if(!(c[a+184>>2]|0))c[a+200>>2]=c[a+176>>2];else c[g>>2]=c[a+172>>2];c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];oF(f,b,d);i=c[f+4>>2]|0;j=g;c[j>>2]=c[f>>2];c[j+4>>2]=i}l=h;return}function mF(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;if(!d){d=a+160|0;c[d>>2]=(c[d>>2]|0)+1}else{c[a+160>>2]=c[d>>2];c[b>>2]=d+4}return}function nF(a){a=a|0;zO(a);NE(a);return}function oF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[d+4>>2]|0)+(c[b+4>>2]|0)|0;c[a>>2]=(c[d>>2]|0)+(c[b>>2]|0);c[a+4>>2]=e;return}function pF(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0.0;t=l;l=l+48|0;n=t+32|0;f=t+24|0;j=t+8|0;k=t+16|0;m=t;r=a+196|0;q=c[r>>2]|0;r=c[r+4>>2]|0;p=f;c[p>>2]=q;c[p+4>>2]=r;p=a+164|0;i=c[p>>2]|0;p=c[p+4>>2]|0;s=j;c[s>>2]=i;c[s+4>>2]=p;s=a+360|0;if(!(c[s>>2]|0)){k=q;j=r}else{c[n>>2]=c[f>>2];c[n+4>>2]=c[f+4>>2];xG(k,n);r=k;k=c[r>>2]|0;r=c[r+4>>2]|0;p=f;c[p>>2]=k;c[p+4>>2]=r;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];xG(m,n);p=m;i=c[p>>2]|0;p=c[p+4>>2]|0;c[j>>2]=i;c[j+4>>2]=p;j=r}d=+h[a+320>>3];g=d*+(k|0)-+h[a+240>>3];h[a+288>>3]=g;e=+h[a+328>>3];o=e*+(j|0)-+h[a+248>>3];h[a+296>>3]=o;h[a+304>>3]=d+g;h[a+312>>3]=e+o;f=a+472|0;if(!(c[(c[a+12>>2]|0)+28>>2]|0)){r=a+456|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=c[r+12>>2]}else{q=a+456|0;c[f>>2]=c[((c[f>>2]|0)<(c[q>>2]|0)?f:q)>>2];r=a+476|0;c[r>>2]=c[((c[r>>2]|0)<(c[a+460>>2]|0)?f:q)+4>>2];r=a+480|0;c[r>>2]=c[((c[r>>2]|0)>(c[a+464>>2]|0)?f:q)+8>>2];r=a+484|0;c[r>>2]=c[((c[r>>2]|0)>(c[a+468>>2]|0)?f:q)+12>>2]}m=c[a+152>>2]|0;b=+h[a+336>>3];if(!(m&128)){b=(+(k|0)-+(i|0)*.5)*d+b;h[a+256>>3]=b;g=(+(j|0)-+(p|0)*.5)*e+ +h[a+344>>3];o=g;d=d+b;g=g+e}else{d=+h[a+368>>3]*.5;e=b-d;h[a+256>>3]=e;g=+h[a+344>>3];u=+h[a+376>>3]*.5;o=g-u;d=d+b;g=u+g;b=e}h[a+264>>3]=o;h[a+272>>3]=d;h[a+280>>3]=g;if(!(c[s>>2]|0)){e=+h[a+352>>3];h[a+504>>3]=+h[a+384>>3]/e-b;if(!(m&4096|c[46369])){d=+h[a+392>>3]/e;b=o}else{d=-g;b=+h[a+392>>3]/e}h[a+512>>3]=d-b}else{f=a+384|0;e=+h[a+352>>3];h[a+512>>3]=-g-+h[a+392>>3]/e;if(!(m&4096|c[46369]))d=+h[f>>3]/e;else{d=-d;b=+h[f>>3]/e}h[a+504>>3]=d-b}l=t;return}function qF(b,d){b=b|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+48|0;q=s;o=s+40|0;p=s+36|0;r=s+32|0;e=wx(d,137895)|0;if(!e){j=1;e=134116}else{i=(a[e>>0]|0)==0;j=i&1;e=i?134116:e}h=c[b+152>>2]|0;i=(a[e>>0]|0)==116;if(!(h&256))if(i){m=(a$(e,134297)|0)==0;k=m?134116:e;m=m?1:j;n=8}else{k=e;m=j;n=8}else if(!(i?!(a$(e,134297)|0):0)){k=e;m=j;n=8}if((n|0)==8?!((m|0)!=0&(h&33554432|0)!=0):0)if(!((tG(k,o,p)|0)<<24>>24)){VO(b,k);TO(b,134297);r=b+256|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];c[q+16>>2]=c[r+16>>2];c[q+20>>2]=c[r+20>>2];c[q+24>>2]=c[r+24>>2];c[q+28>>2]=c[r+28>>2];_O(b,q,1)}else{c[r>>2]=0;i=c[o>>2]|0;VO(b,i);TO(b,134297);sG(d,r)|0;e=c[o+4>>2]|0;h=JL(d,c[46373]|0,0,0)|0;f=+g[p>>2];if(!e)WO(b,134232,h,f);else WO(b,e,h,f);r=(c[r>>2]|0)>>>1&1|2;p=b+256|0;c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];c[q+16>>2]=c[p+16>>2];c[q+20>>2]=c[p+20>>2];c[q+24>>2]=c[p+24>>2];c[q+28>>2]=c[p+28>>2];_O(b,q,r);C_(i)}e=c[(c[(c[d+16>>2]|0)+8>>2]|0)+88>>2]|0;if(e|0)vG(b,e);l=s;return}function rF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=(c[a>>2]|0)+28|0;c[g>>2]=(c[g>>2]|0)+1;g=(d&4|0)!=0;if(!g)sF(a,b,d);a:do if(!(d&1)){if(d&16|0){IO(a);f=Ry(b)|0;while(1){if(!f)break;e=Dx(b,f)|0;while(1){if(!e)break;uF(a,e);e=Fx(b,e)|0}f=Sy(b,f)|0}JO(a);GO(a);e=Ry(b)|0;while(1){if(!e)break;tF(a,e);e=Sy(b,e)|0}HO(a);break}if(!(d&8)){f=Ry(b)|0;while(1){if(!f)break a;tF(a,f);e=Dx(b,f)|0;while(1){if(!e)break;tF(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0);uF(a,e);e=Fx(b,e)|0}f=Sy(b,f)|0}}GO(a);e=Ry(b)|0;while(1){if(!e)break;if((vF(b,e)|0)<<24>>24)tF(a,e);e=Sy(b,e)|0}HO(a);IO(a);f=Ry(b)|0;while(1){if(!f)break;e=Dx(b,f)|0;while(1){if(!e)break;if((wF(b,e)|0)<<24>>24)uF(a,e);e=Fx(b,e)|0}f=Sy(b,f)|0}JO(a)}else{GO(a);e=Ry(b)|0;while(1){if(!e)break;tF(a,e);e=Sy(b,e)|0}HO(a);IO(a);f=Ry(b)|0;while(1){if(!f)break;e=Dx(b,f)|0;while(1){if(!e)break;uF(a,e);e=Fx(b,e)|0}f=Sy(b,f)|0}JO(a)}while(0);if(g)sF(a,b,d);return}function sF(e,f,i){e=e|0;f=f|0;i=i|0;var j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;P=l;l=l+128|0;w=P+72|0;N=P+64|0;H=P+112|0;I=P;J=P+104|0;K=f+16|0;L=(i&4|0)!=0;M=e+16|0;x=I+32|0;y=I+16|0;A=I+8|0;B=I+24|0;C=I+48|0;D=I+40|0;E=I+56|0;F=(i&8|0)==0;G=J+4|0;v=1;while(1){j=c[K>>2]|0;if((v|0)>(c[j+180>>2]|0))break;u=c[(c[j+184>>2]|0)+(v<<2)>>2]|0;if((qG(e,u)|0)<<24>>24){if(L)sF(e,u,i);rG(e,u);r=c[M>>2]|0;s=r+208|0;if(!(c[s>>2]|0))t=(b[r+260>>1]&1)!=0;else t=1;pQ(wx(u,97006)|0);if(!(L|t^1)){q=(c[u+16>>2]|0)+16|0;c[w>>2]=c[q>>2];c[w+4>>2]=c[q+4>>2];c[w+8>>2]=c[q+8>>2];c[w+12>>2]=c[q+12>>2];c[w+16>>2]=c[q+16>>2];c[w+20>>2]=c[q+20>>2];c[w+24>>2]=c[q+24>>2];c[w+28>>2]=c[q+28>>2];WE(e,w);OO(e,c[s>>2]|0,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0)}c[H>>2]=0;j=sG(u,H)|0;if(!j)p=0;else{XO(e,j);p=c[H>>2]&1}q=u+16|0;j=d[(c[q>>2]|0)+112>>0]|0;do if(!(j&1)){if(j&2|0){j=NL(u,0,103230)|0;k=NL(u,0,103238)|0;O=29;break}if(j&8|0){j=NL(u,0,103246)|0;k=NL(u,0,103254)|0;O=29;break}if(j&4|0){j=NL(u,0,103262)|0;k=NL(u,0,103270)|0;O=29;break}j=wx(u,137741)|0;if(!j)k=0;else k=(a[j>>0]|0)==0?0:j;j=wx(u,134647)|0;if(!j)j=k;else j=(a[j>>0]|0)==0?k:j;m=wx(u,98392)|0;if(m)k=(a[m>>0]|0)==0?k:m;if(!((p|0)!=0&(k|0)!=0)){m=wx(u,137895)|0;if(m|0?a[m>>0]|0:0){k=m;O=29;break}j=(j|0)==0?134232:j;n=(k|0)==0?131718:k;c[J>>2]=0;if(!p)k=0;else O=31}else O=29}else{j=NL(u,0,103214)|0;k=NL(u,0,103222)|0;O=29}while(0);if((O|0)==29){c[J>>2]=0;j=(j|0)==0?134232:j;n=(k|0)==0?131718:k;O=31}if((O|0)==31){O=0;if(!((tG(n,J,w)|0)<<24>>24)){VO(e,n);k=1}else{VO(e,c[J>>2]|0);k=c[G>>2]|0;m=JL(u,c[46373]|0,0,0)|0;o=+g[w>>2];if(!k)WO(e,134232,m,o);else WO(e,k,m,o);k=(c[H>>2]|0)>>>1&1|2}}m=c[46372]|0;if((m|0?(z=xx(u,m)|0,z|0):0)?a[z>>0]|0:0)eP(e,+KL(u,c[46372]|0,1.0,0.0));p=c[H>>2]|0;do if(p&4){m=JL(u,c[46371]|0,1,0)|0;if(m|k|0){n=c[q>>2]|0;Q=n+16|0;c[I>>2]=c[Q>>2];c[I+4>>2]=c[Q+4>>2];c[I+8>>2]=c[Q+8>>2];c[I+12>>2]=c[Q+12>>2];n=n+32|0;c[x>>2]=c[n>>2];c[x+4>>2]=c[n+4>>2];c[x+8>>2]=c[n+8>>2];c[x+12>>2]=c[n+12>>2];h[y>>3]=+h[x>>3];h[B>>3]=+h[A>>3];h[C>>3]=+h[I>>3];h[E>>3]=+h[D>>3];if(!m)TO(e,134297);else TO(e,j);DJ(e,I,4,p,k)}}else{if(!(p&64)){if(JL(u,c[46371]|0,1,0)|0){TO(e,j);Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];_O(e,w,k);break}if(!k)break;TO(e,134297);Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];_O(e,w,k);break}Q=c[q>>2]|0;p=Q+16|0;c[I>>2]=c[p>>2];c[I+4>>2]=c[p+4>>2];c[I+8>>2]=c[p+8>>2];c[I+12>>2]=c[p+12>>2];Q=Q+32|0;c[x>>2]=c[Q>>2];c[x+4>>2]=c[Q+4>>2];c[x+8>>2]=c[Q+8>>2];c[x+12>>2]=c[Q+12>>2];h[y>>3]=+h[x>>3];h[B>>3]=+h[A>>3];h[C>>3]=+h[I>>3];h[E>>3]=+h[D>>3];if(!(JL(u,c[46371]|0,1,0)|0))TO(e,134297);else TO(e,j);if((VE(e,I,n,0)|0)>1){c[N>>2]=qy(u)|0;Ow(3,97374,N)|0}Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];_O(e,w,0)}while(0);C_(c[J>>2]|0);j=c[(c[q>>2]|0)+12>>2]|0;if(j|0)nH(e,5,j);if(t){if(L){Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];WE(e,w);OO(e,c[s>>2]|0,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0)}PO(e)}a:do if(!F){k=Ry(u)|0;while(1){if(!k)break a;tF(e,k);j=Dx(u,k)|0;while(1){if(!j)break;uF(e,j);j=Fx(u,j)|0}k=Sy(u,k)|0}}while(0);uG(e,f);if(!L)sF(e,u,i)}v=v+1|0}l=P;return}function tF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+32|0;e=j;h=c[b>>2]|0;i=d+16|0;a:do if(((c[(c[i>>2]|0)+8>>2]|0?(iG(b,dz(d)|0,d)|0)<<24>>24:0)?(k=b+256|0,c[e>>2]=c[k>>2],c[e+4>>2]=c[k+4>>2],c[e+8>>2]=c[k+8>>2],c[e+12>>2]=c[k+12>>2],c[e+16>>2]=c[k+16>>2],c[e+20>>2]=c[k+20>>2],c[e+24>>2]=c[k+24>>2],c[e+28>>2]=c[k+28>>2],(jG(d,e)|0)<<24>>24):0)?(f=(c[i>>2]|0)+116|0,g=c[h+28>>2]|0,(g|0)!=(a[f>>0]|0)):0){a[f>>0]=g;bP(b,qy(d)|0);e=ML(d,c[46399]|0,191979)|0;if(a[e>>0]|0)bP(b,e);e=ML(d,c[46387]|0,191979)|0;b:do if(a[e>>0]|0){zF(e)|0;e=185144;while(1){f=e;e=e+4|0;f=c[f>>2]|0;if(!f)break b;if((a[f>>0]|0)!=105)continue;if(!(a$(f,131253)|0))break a}}while(0);kG(b,d);ub[c[(c[(c[(c[i>>2]|0)+8>>2]|0)+4>>2]|0)+20>>2]&63](b,d);e=c[(c[i>>2]|0)+108>>2]|0;if(e|0?a[e+81>>0]|0:0)nH(b,10,e);lG(b)}while(0);l=j;return}function uF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;g=h;e=b+256|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[g+16>>2]=c[e+16>>2];c[g+20>>2]=c[e+20>>2];c[g+24>>2]=c[e+24>>2];c[g+28>>2]=c[e+28>>2];a:do if((xF(d,g)|0)<<24>>24?(f=d+-48|0,(yF(b,d)|0)<<24>>24):0){i=d+48|0;e=V_(qy(c[((c[d>>2]&3|0)==3?d:i)+40>>2]|0)|0)|0;e=B_(e+3+(V_(qy(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0)|0)|0;a0(e,qy(c[((c[d>>2]&3|0)==3?d:i)+40>>2]|0)|0)|0;i=(dy(dz(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0)==0;g=e+(V_(e)|0)|0;if(i){a[g>>0]=a[138665]|0;a[g+1>>0]=a[138666]|0;a[g+2>>0]=a[138667]|0}else{a[g>>0]=a[134656]|0;a[g+1>>0]=a[134657]|0;a[g+2>>0]=a[134658]|0}o1(e,qy(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0;bP(b,e);C_(e);e=ML(d,c[46421]|0,191979)|0;if(a[e>>0]|0)bP(b,e);e=ML(d,c[46415]|0,191979)|0;b:do if(!(a[e>>0]|0))e=0;else{zF(e)|0;e=185144;while(1){f=e;e=e+4|0;f=c[f>>2]|0;if(!f){e=185144;break b}if((a[f>>0]|0)!=105)continue;if(!(a$(f,131253)|0))break a}}while(0);AF(b,d,e);BF(b,d,e);CF(b)}while(0);l=h;return}function vF(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+16|0;a=1;while(1){e=c[d>>2]|0;if((a|0)>(c[e+180>>2]|0)){a=1;break}if(!(nz(c[(c[e+184>>2]|0)+(a<<2)>>2]|0,b)|0))a=a+1|0;else{a=0;break}}return a|0}function wF(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+16|0;a=1;while(1){e=c[d>>2]|0;if((a|0)>(c[e+180>>2]|0)){a=1;break}if(!(nz(c[(c[e+184>>2]|0)+(a<<2)>>2]|0,b)|0))a=a+1|0;else{a=0;break}}return a|0}function xF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+64|0;i=j+32|0;f=j;g=b+16|0;b=c[g>>2]|0;e=c[b+8>>2]|0;if((e|0)!=0?(e=e+8|0,c[f>>2]=c[e>>2],c[f+4>>2]=c[e+4>>2],c[f+8>>2]=c[e+8>>2],c[f+12>>2]=c[e+12>>2],c[f+16>>2]=c[e+16>>2],c[f+20>>2]=c[e+20>>2],c[f+24>>2]=c[e+24>>2],c[f+28>>2]=c[e+28>>2],c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[i+16>>2]=c[d+16>>2],c[i+20>>2]=c[d+20>>2],c[i+24>>2]=c[d+24>>2],c[i+28>>2]=c[d+28>>2],(hG(f,i)|0)!=0):0)b=1;else h=3;do if((h|0)==3){e=c[b+96>>2]|0;if(e){c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[i+16>>2]=c[d+16>>2];c[i+20>>2]=c[d+20>>2];c[i+24>>2]=c[d+24>>2];c[i+28>>2]=c[d+28>>2];if((UM(e,i)|0)<<24>>24){b=1;break}b=c[g>>2]|0}b=c[b+108>>2]|0;if((b|0?a[b+81>>0]|0:0)?(c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[i+16>>2]=c[d+16>>2],c[i+20>>2]=c[d+20>>2],c[i+24>>2]=c[d+24>>2],c[i+28>>2]=c[d+28>>2],(UM(b,i)|0)<<24>>24):0){b=1;break}b=0}while(0);l=j;return b|0}function yF(b,d){b=b|0;d=d|0;var e=0,f=0;a:do if((c[b+156>>2]|0)>=2?(e=ML(d,c[46420]|0,191979)|0,(dG(b,e)|0)<<24>>24==0):0)if(!(a[e>>0]|0)){e=0;while(1){if((e|0)>=2){e=0;break a}f=(e|0)==1;f=ML(c[((c[d>>2]&3|0)==((f?2:3)|0)?d:d+((f?-1:1)*48|0)|0)+40>>2]|0,c[46397]|0,191979)|0;if(!(a[f>>0]|0)){e=1;break a}if(!((dG(b,f)|0)<<24>>24))e=e+1|0;else{e=1;break}}}else e=0;else e=1;while(0);return e|0}function zF(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+192|0;o=p+24|0;n=p+16|0;m=p+8|0;k=p;g=p+48|0;j=p+32|0;if(a[97256]|0){Sw(185408,128,191746);a[97256]=0}Sw(j,128,p+56|0);c[g>>2]=b;h=j+4|0;i=j+8|0;d=0;e=0;a:while(1){f=d;b:while(1)switch(bG(g,j)|0){case 0:{d=21;break a}case 40:if(!(f<<24>>24)){f=1;continue b}else{d=7;break a}case 41:if(!(f<<24>>24)){d=9;break a}else{f=0;continue b}default:break b}if(!(f<<24>>24)){if((e|0)==63){d=12;break}d=c[46353]|0;if(d>>>0>=(c[46354]|0)>>>0){Tw(185408,1)|0;d=c[46353]|0}c[46353]=d+1;a[d>>0]=0;c[185144+(e<<2)>>2]=c[46353];e=e+1|0}d=c[h>>2]|0;if(d>>>0>=(c[i>>2]|0)>>>0){Tw(j,1)|0;d=c[h>>2]|0}a[d>>0]=0;d=c[j>>2]|0;c[h>>2]=d;Vw(185408,d)|0;d=c[46353]|0;if(d>>>0>=(c[46354]|0)>>>0){Tw(185408,1)|0;d=c[46353]|0}c[46353]=d+1;a[d>>0]=0;d=f}do if((d|0)==7){c[k>>2]=b;Ow(1,97257,k)|0;c[46286]=0;Ww(j)}else if((d|0)==9){c[m>>2]=b;Ow(1,97291,m)|0;c[46286]=0;Ww(j)}else if((d|0)==12){c[n>>2]=b;Ow(0,97319,n)|0;c[46349]=0;Ww(j)}else if((d|0)==21){if(f<<24>>24){c[o>>2]=b;Ow(1,97342,o)|0;c[46286]=0;Ww(j);break}c[185144+(e<<2)>>2]=0;Ww(j);d=c[46353]|0;if(d>>>0>=(c[46354]|0)>>>0){Tw(185408,1)|0;d=c[46353]|0}a[d>>0]=0;c[46353]=c[46352]}while(0);l=p;return 185144}function AF(d,f,g){d=d|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+160|0;y=A+24|0;w=A+20|0;v=A+16|0;o=A;p=A+32|0;x=c[d+152>>2]|0;c[y>>2]=0;c[w>>2]=0;c[v>>2]=0;z=ME(d)|0;c[z+4>>2]=3;c[z+8>>2]=f;c[z+12>>2]=9;t=f+16|0;n=c[(c[t>>2]|0)+96>>2]|0;if((n|0?(a[n+82>>0]|0)==0:0)?(QL(wx(f,97079)|0,0)|0)<<24>>24:0){n=z+260|0;b[n>>1]=b[n>>1]|512}if(g|0?c[(c[t>>2]|0)+8>>2]|0:0)XO(d,g);g=c[46436]|0;if((g|0?(i=xx(f,g)|0,i|0):0)?a[i>>0]|0:0)eP(d,+KL(f,c[46436]|0,1.0,0.0));do if(x&16777216|0){g=f+48|0;if((e[(c[(dz(c[((c[f>>2]&3|0)==3?f:g)+40>>2]|0)|0)+16>>2]|0)+178>>1]|0)>2){m=+h[(c[(c[(c[((c[f>>2]&3|0)==3?f:g)+40>>2]|0)+16>>2]|0)+132>>2]|0)+16>>3]*72.0;h[z+176>>3]=+(~~(m+(m>=0.0?.5:-.5))|0);m=+h[(c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0)+16>>3]*72.0;h[z+184>>3]=+(~~(m+(m>=0.0?.5:-.5))|0);break}else{n=z+176|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;break}}while(0);if(x&32768|0){n=c[t>>2]|0;g=c[n+96>>2]|0;if(!g)g=c[z+192>>2]|0;else{g=c[g>>2]|0;c[z+192>>2]=g}i=z+196|0;c[i>>2]=g;k=z+204|0;c[k>>2]=g;j=z+200|0;c[j>>2]=g;g=c[n+108>>2]|0;if(g|0)c[i>>2]=c[g>>2];g=c[n+104>>2]|0;if(g|0)c[j>>2]=c[g>>2];g=c[n+100>>2]|0;if(g|0)c[k>>2]=c[g>>2]}if(!(x&65536))j=0;else{Sw(o,128,p);c[z+212>>2]=oH(PE(d,f,o)|0,f)|0;Ww(o);g=wx(f,137973)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=31;else{g=wx(f,108395)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=31;else i=0}if((q|0)==31)i=oH(g,f)|0;g=wx(f,97092)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=36;else q=34;do if((q|0)==34){g=wx(f,97101)|0;if(g|0?a[g>>0]|0:0){q=36;break}if(i|0){g=m1(i)|0;q=39}}while(0);if((q|0)==36){g=oH(g,f)|0;q=39}if((q|0)==39)c[z+208>>2]=g;g=wx(f,97109)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=44;else q=42;do if((q|0)==42){g=wx(f,97119)|0;if(g|0?a[g>>0]|0:0){q=44;break}if(i|0){g=m1(i)|0;q=47}}while(0);if((q|0)==44){g=oH(g,f)|0;q=47}if((q|0)==47)c[z+216>>2]=g;g=wx(f,97128)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=52;else q=50;do if((q|0)==50){g=wx(f,97137)|0;if(g|0?a[g>>0]|0:0){q=52;break}if(i|0)c[z+220>>2]=m1(i)|0}while(0);if((q|0)==52){c[z+220>>2]=oH(g,f)|0;q=z+260|0;b[q>>1]=b[q>>1]|128}g=wx(f,97145)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=59;else q=57;do if((q|0)==57){g=wx(f,97154)|0;if(g|0?a[g>>0]|0:0){q=59;break}if(i|0)c[z+224>>2]=m1(i)|0}while(0);if((q|0)==59){c[z+224>>2]=oH(g,f)|0;q=z+260|0;b[q>>1]=b[q>>1]|256}j=i}do if(x&8388608){g=wx(f,138006)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)i=oH(g,f)|0;else i=0;g=wx(f,97162)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){q=z+260|0;b[q>>1]=b[q>>1]|64;g=oH(g,f)|0;q=72}else q=70;if((q|0)==70?i|0:0){g=m1(i)|0;q=72}if((q|0)==72)c[z+244>>2]=g;g=wx(f,97173)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){g=oH(g,f)|0;q=78}else q=76;if((q|0)==76?i|0:0){g=m1(i)|0;q=78}if((q|0)==78)c[z+248>>2]=g;g=wx(f,97185)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){c[z+252>>2]=oH(g,f)|0;p=z+260|0;b[p>>1]=b[p>>1]|16}else q=82;if((q|0)==82?i|0:0)c[z+252>>2]=m1(i)|0;g=wx(f,97196)|0;if(g|0?a[g>>0]|0:0){q=z+260|0;b[q>>1]=b[q>>1]|32;c[z+256>>2]=oH(g,f)|0;break}if(i)c[z+256>>2]=m1(i)|0;else i=0}else i=0;while(0);do if(x&4194304|0){g=wx(f,138019)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=94;else q=92;do if((q|0)==92){g=wx(f,97207)|0;if(g|0?a[g>>0]|0:0){q=94;break}g=c[z+192>>2]|0;if(g|0)c[z+228>>2]=m1(g)|0}while(0);if((q|0)==94){p=VF(g,f)|0;c[z+228>>2]=oH(p,f)|0;C_(p);p=z+260|0;b[p>>1]=b[p>>1]|1}g=wx(f,97219)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){p=VF(g,f)|0;c[z+232>>2]=oH(p,f)|0;C_(p);p=z+260|0;b[p>>1]=b[p>>1]|8}else q=100;if((q|0)==100?(r=c[z+192>>2]|0,r|0):0)c[z+232>>2]=m1(r)|0;g=wx(f,97232)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){r=VF(g,f)|0;c[z+236>>2]=oH(r,f)|0;C_(r);r=z+260|0;b[r>>1]=b[r>>1]|2}else q=105;if((q|0)==105?(s=c[z+200>>2]|0,s|0):0)c[z+236>>2]=m1(s)|0;g=wx(f,97244)|0;if(g|0?a[g>>0]|0:0){s=VF(g,f)|0;c[z+240>>2]=oH(s,f)|0;C_(s);s=z+260|0;b[s>>1]=b[s>>1]|4;break}g=c[z+204>>2]|0;if(g|0)c[z+240>>2]=m1(g)|0}while(0);C_(j);C_(i);do if(x&4259840|0?(u=c[(c[t>>2]|0)+8>>2]|0,u|0):0){if(!(c[z+208>>2]|0)){if((x&524288|0)==0|(c[z+228>>2]|0)==0)break}else if(!(x&524288))break;m=+h[(c[d+16>>2]|0)+152>>3]*.5;m=m>2.0?m:2.0;i=c[u+4>>2]|0;g=0;while(1){if((g|0)>=(i|0))break;WF(y,w,v,(c[u>>2]|0)+(g*48|0)|0,m);g=g+1|0}j=c[v>>2]|0;c[z+276>>2]=j;k=c[w>>2]|0;c[z+280>>2]=k;if(!(x&8192)){g=0;i=0;while(1){if((i|0)>=(j|0))break;g=(c[k+(i<<2)>>2]|0)+g|0;i=i+1|0}y=c[y>>2]|0;xO(d,y,y,g)|0;g=y}else g=c[y>>2]|0;c[z+284>>2]=g;c[z+264>>2]=2;c[z+272>>2]=g;c[z+268>>2]=c[k>>2]}while(0);MO(d,f);g=c[z+208>>2]|0;if(!((g|0)==0?!(b[z+260>>1]&1):0))OO(d,g,c[z+228>>2]|0,c[z+244>>2]|0,c[z+212>>2]|0);l=A;return}function BF(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0,P=0,Q=0,R=0,S=0;P=l;l=l+240|0;L=P+224|0;K=P+208|0;x=P+128|0;w=P+112|0;O=P+64|0;C=P+48|0;D=P+32|0;E=P+16|0;F=P;G=P+192|0;H=P+176|0;y=P+160|0;B=P+144|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;M=+h[(c[b+16>>2]|0)+152>>3];pQ(wx(e,97006)|0);J=e+16|0;a:do if(c[(c[J>>2]|0)+8>>2]|0){N=+KL(e,c[46418]|0,1.0,0.0);k=ML(e,c[46406]|0,191979)|0;v=(f|0)!=0;b:do if(v){g=f;while(1){i=g;g=g+4|0;i=c[i>>2]|0;if(!i){o=0;break b}if((a[i>>0]|0)!=116)continue;if(!(a$(i,108091)|0)){o=1;break}}}else o=0;while(0);j=k;q=0;i=0;c:while(1){switch(a[j>>0]|0){case 0:break c;case 58:{g=q+1|0;break}case 59:{g=q;i=i+1|0;break}default:g=q}j=j+1|0;q=g}n=(q|0)!=0;if((i|0)!=0&n)if(!(JF(b,e,f,k,q+1|0,N,M)|0))break;else m=134232;else m=k;g=d[(c[J>>2]|0)+115>>0]|0;if(!(g&1))if(!(g&2))if(!(g&8))if(!(g&4)){i=m;j=NL(e,c[46407]|0,m)|0}else{j=103270;g=103262;k=185632;i=185632;p=18}else{j=103254;g=103246;k=185632;i=185632;p=18}else{j=103238;g=103230;k=185632;i=185632;p=18}else{j=103222;g=103214;k=185632;i=185632;p=18}if((p|0)==18){i=c[i>>2]|0;i=NL(e,i,KF(m,g)|0)|0;g=NL(e,c[k>>2]|0,j)|0;if((i|0)==(m|0)){i=m;j=g}else{TO(b,i);j=g}}if((j|0)!=(m|0))VO(b,j);if(o<<24>>24){i=(a[i>>0]|0)==0?134232:i;g=(a[j>>0]|0)==0?134232:j;TO(b,134297);VO(b,i);u=O;r=c[c[(c[J>>2]|0)+8>>2]>>2]|0;s=u+48|0;do{c[u>>2]=c[r>>2];u=u+4|0;r=r+4|0}while((u|0)<(s|0));J=jL(O,LF(e)|0,M,0,0)|0;ZO(b,c[J+8>>2]|0,c[J>>2]|0,1);MF(J);TO(b,i);if((g|0)!=(i|0))VO(b,g);g=c[O+8>>2]|0;if(g|0){I=O+16|0;J=c[O>>2]|0;c[K>>2]=c[I>>2];c[K+4>>2]=c[I+4>>2];c[K+8>>2]=c[I+8>>2];c[K+12>>2]=c[I+12>>2];c[L>>2]=c[J>>2];c[L+4>>2]=c[J+4>>2];c[L+8>>2]=c[J+8>>2];c[L+12>>2]=c[J+12>>2];JE(b,2,K,L,N,M,g)}g=c[O+12>>2]|0;if(!g)break;J=O+32|0;O=(c[O>>2]|0)+((c[O+4>>2]|0)+-1<<4)|0;c[K>>2]=c[J>>2];c[K+4>>2]=c[J+4>>2];c[K+8>>2]=c[J+8>>2];c[K+12>>2]=c[J+12>>2];c[L>>2]=c[O>>2];c[L+4>>2]=c[O+4>>2];c[L+8>>2]=c[O+8>>2];c[L+12>>2]=c[O+12>>2];JE(b,3,K,L,N,M,g);break}g=c[J>>2]|0;if(!n){do if(!(a[g+115>>0]&3)){if(a[i>>0]|0){TO(b,i);VO(b,j);break}TO(b,134232);if(!(a[j>>0]|0)){VO(b,134232);break}else{VO(b,j);break}}while(0);k=b+152|0;m=O+4|0;n=O+8|0;o=O+12|0;p=O+32|0;q=O+16|0;j=0;while(1){g=c[(c[J>>2]|0)+8>>2]|0;if((j|0)>=(c[g+4>>2]|0))break a;u=O;r=(c[g>>2]|0)+(j*48|0)|0;s=u+48|0;do{c[u>>2]=c[r>>2];u=u+4|0;r=r+4|0}while((u|0)<(s|0));g=c[O>>2]|0;i=c[m>>2]|0;do if(!(c[k>>2]&16384)){$O(b,g,i,0,0,0);g=c[n>>2]|0;if(g|0){I=c[O>>2]|0;c[K>>2]=c[q>>2];c[K+4>>2]=c[q+4>>2];c[K+8>>2]=c[q+8>>2];c[K+12>>2]=c[q+12>>2];c[L>>2]=c[I>>2];c[L+4>>2]=c[I+4>>2];c[L+8>>2]=c[I+8>>2];c[L+12>>2]=c[I+12>>2];JE(b,2,K,L,N,M,g)}g=c[o>>2]|0;if(g|0){I=(c[O>>2]|0)+((c[m>>2]|0)+-1<<4)|0;c[K>>2]=c[p>>2];c[K+4>>2]=c[p+4>>2];c[K+8>>2]=c[p+8>>2];c[K+12>>2]=c[p+12>>2];c[L>>2]=c[I>>2];c[L+4>>2]=c[I+4>>2];c[L+8>>2]=c[I+8>>2];c[L+12>>2]=c[I+12>>2];JE(b,3,K,L,N,M,g)}if((c[(c[(c[J>>2]|0)+8>>2]|0)+4>>2]|0)>1){if(!(c[n>>2]|0)){if(!(v&(c[o>>2]|0)!=0))break}else if(!v)break;XO(b,f)}}else $O(b,g,i,c[n>>2]|0,c[o>>2]|0,0);while(0);j=j+1|0}}I=c[(c[g+8>>2]|0)+4>>2]|0;A=I*48|0;z=B_(A)|0;A=B_(A)|0;t=+(q+2|0)*.5;v=O+4|0;p=C+8|0;q=D+8|0;e=E+8|0;f=F+8|0;o=0;while(1){if((o|0)>=(I|0))break;u=O;r=(c[c[(c[J>>2]|0)+8>>2]>>2]|0)+(o*48|0)|0;s=u+48|0;do{c[u>>2]=c[r>>2];u=u+4|0;r=r+4|0}while((u|0)<(s|0));g=c[v>>2]|0;c[z+(o*48|0)+4>>2]=g;c[A+(o*48|0)+4>>2]=g;n=g<<4;m=B_(n)|0;c[z+(o*48|0)>>2]=m;n=B_(n)|0;c[A+(o*48|0)>>2]=n;k=c[O>>2]|0;c[F>>2]=c[k>>2];c[F+4>>2]=c[k+4>>2];c[F+8>>2]=c[k+8>>2];c[F+12>>2]=c[k+12>>2];k=0;while(1){if((k|0)>=(g+-1|0))break;c[C>>2]=c[F>>2];c[C+4>>2]=c[F+4>>2];c[C+8>>2]=c[F+8>>2];c[C+12>>2]=c[F+12>>2];g=k+1|0;j=(c[O>>2]|0)+(g<<4)|0;c[D>>2]=c[j>>2];c[D+4>>2]=c[j+4>>2];c[D+8>>2]=c[j+8>>2];c[D+12>>2]=c[j+12>>2];j=m+(k<<4)|0;if(!k){c[K>>2]=c[C>>2];c[K+4>>2]=c[C+4>>2];c[K+8>>2]=c[C+8>>2];c[K+12>>2]=c[C+12>>2];c[L>>2]=c[D>>2];c[L+4>>2]=c[D+4>>2];c[L+8>>2]=c[D+8>>2];c[L+12>>2]=c[D+12>>2];NF(G,K,L);c[j>>2]=c[G>>2];c[j+4>>2]=c[G+4>>2];c[j+8>>2]=c[G+8>>2];c[j+12>>2]=c[G+12>>2]}else{c[K>>2]=c[E>>2];c[K+4>>2]=c[E+4>>2];c[K+8>>2]=c[E+8>>2];c[K+12>>2]=c[E+12>>2];c[L>>2]=c[D>>2];c[L+4>>2]=c[D+4>>2];c[L+8>>2]=c[D+8>>2];c[L+12>>2]=c[D+12>>2];NF(H,K,L);c[j>>2]=c[H>>2];c[j+4>>2]=c[H+4>>2];c[j+8>>2]=c[H+8>>2];c[j+12>>2]=c[H+12>>2]}R=c[O>>2]|0;s=k+2|0;S=R+(s<<4)|0;c[E>>2]=c[S>>2];c[E+4>>2]=c[S+4>>2];c[E+8>>2]=c[S+8>>2];c[E+12>>2]=c[S+12>>2];u=k+3|0;R=R+(u<<4)|0;c[F>>2]=c[R>>2];c[F+4>>2]=c[R+4>>2];c[F+8>>2]=c[R+8>>2];c[F+12>>2]=c[R+12>>2];Q=m+(g<<4)|0;r=m+(s<<4)|0;c[w>>2]=c[C>>2];c[w+4>>2]=c[C+4>>2];c[w+8>>2]=c[C+8>>2];c[w+12>>2]=c[C+12>>2];c[x>>2]=c[D>>2];c[x+4>>2]=c[D+4>>2];c[x+8>>2]=c[D+8>>2];c[x+12>>2]=c[D+12>>2];c[K>>2]=c[S>>2];c[K+4>>2]=c[S+4>>2];c[K+8>>2]=c[S+8>>2];c[K+12>>2]=c[S+12>>2];c[L>>2]=c[R>>2];c[L+4>>2]=c[R+4>>2];c[L+8>>2]=c[R+8>>2];c[L+12>>2]=c[R+12>>2];OF(y,w,x,K,L);c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[Q>>2]=c[y>>2];c[Q+4>>2]=c[y+4>>2];c[Q+8>>2]=c[y+8>>2];c[Q+12>>2]=c[y+12>>2];h[n+(k<<4)>>3]=+h[C>>3]-+h[j>>3]*t;h[n+(k<<4)+8>>3]=+h[p>>3]-+h[m+(k<<4)+8>>3]*t;h[n+(g<<4)>>3]=+h[D>>3]-+h[Q>>3]*t;h[n+(g<<4)+8>>3]=+h[q>>3]-+h[m+(g<<4)+8>>3]*t;h[n+(s<<4)>>3]=+h[E>>3]-+h[r>>3]*t;h[n+(s<<4)+8>>3]=+h[e>>3]-+h[m+(s<<4)+8>>3]*t;k=u;g=c[v>>2]|0}S=m+(k<<4)|0;c[K>>2]=c[E>>2];c[K+4>>2]=c[E+4>>2];c[K+8>>2]=c[E+8>>2];c[K+12>>2]=c[E+12>>2];c[L>>2]=c[F>>2];c[L+4>>2]=c[F+4>>2];c[L+8>>2]=c[F+8>>2];c[L+12>>2]=c[F+12>>2];NF(B,K,L);c[S>>2]=c[B>>2];c[S+4>>2]=c[B+4>>2];c[S+8>>2]=c[B+8>>2];c[S+12>>2]=c[B+12>>2];h[n+(k<<4)>>3]=+h[F>>3]-+h[S>>3]*t;h[n+(k<<4)+8>>3]=+h[f>>3]-+h[m+(k<<4)+8>>3]*t;o=o+1|0}s=m1(i)|0;f=0;r=i;g=i;j=i;i=s;while(1){i=j1(i,104958)|0;if(!i)break;e=(a[i>>0]|0)==0?134232:i;if((e|0)!=(j|0))if(!(a[(c[J>>2]|0)+115>>0]&3)){TO(b,e);VO(b,e);j=e}else j=e;m=(f|0)==0;n=f>>>0<2;i=0;while(1){if((i|0)>=(I|0))break;o=c[A+(i*48|0)>>2]|0;p=c[z+(i*48|0)>>2]|0;q=c[A+(i*48|0)+4>>2]|0;k=0;while(1){if((k|0)>=(q|0))break;S=o+(k<<4)|0;h[S>>3]=+h[S>>3]+ +h[p+(k<<4)>>3];S=o+(k<<4)+8|0;h[S>>3]=+h[S>>3]+ +h[p+(k<<4)+8>>3];k=k+1|0}$O(b,o,q,0,0,0);i=i+1|0}f=f+1|0;r=m?e:r;g=n?e:g;i=0}i=c[O+8>>2]|0;if(!i)i=0;else{if(g){if(!(a[(c[J>>2]|0)+115>>0]&3)){TO(b,g);VO(b,g)}}else g=0;R=O+16|0;S=c[O>>2]|0;c[K>>2]=c[R>>2];c[K+4>>2]=c[R+4>>2];c[K+8>>2]=c[R+8>>2];c[K+12>>2]=c[R+12>>2];c[L>>2]=c[S>>2];c[L+4>>2]=c[S+4>>2];c[L+8>>2]=c[S+8>>2];c[L+12>>2]=c[S+12>>2];JE(b,2,K,L,N,M,i);i=g}j=O+12|0;g=c[j>>2]|0;if(g|0){if((i|0)!=(r|0)?(a[(c[J>>2]|0)+115>>0]&3)==0:0){TO(b,r);VO(b,r);g=c[j>>2]|0}R=O+32|0;S=(c[O>>2]|0)+((c[v>>2]|0)+-1<<4)|0;c[K>>2]=c[R>>2];c[K+4>>2]=c[R+4>>2];c[K+8>>2]=c[R+8>>2];c[K+12>>2]=c[R+12>>2];c[L>>2]=c[S>>2];c[L+4>>2]=c[S+4>>2];c[L+8>>2]=c[S+8>>2];c[L+12>>2]=c[S+12>>2];JE(b,3,K,L,N,M,g)}C_(s);g=0;while(1){if((g|0)>=(I|0))break;C_(c[z+(g*48|0)>>2]|0);C_(c[A+(g*48|0)>>2]|0);g=g+1|0}C_(z);C_(A)}while(0);l=P;return}function CF(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=l;l=l+64|0;r=x+48|0;u=x+32|0;t=x+16|0;s=x;w=c[a+16>>2]|0;v=c[w+8>>2]|0;q=w+208|0;if(!((c[q>>2]|0)==0?!(b[w+260>>1]&1):0))d=3;a:do if((d|0)==3?(PO(a),p=w+276|0,e=c[p>>2]|0,e|0):0){h=w+280|0;d=c[h>>2]|0;i=w+268|0;j=w+284|0;k=w+272|0;m=w+228|0;n=w+244|0;o=w+212|0;f=c[d>>2]|0;g=1;while(1){if((g|0)>=(e|0))break a;c[i>>2]=c[d+(g<<2)>>2];c[k>>2]=(c[j>>2]|0)+(f<<4);OO(a,c[q>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0);PO(a);y=c[h>>2]|0;f=(c[y+(g<<2)>>2]|0)+f|0;g=g+1|0;e=c[p>>2]|0;d=y}}while(0);c[w+268>>2]=0;c[w+272>>2]=0;q=v+16|0;d=c[q>>2]|0;e=c[d+8>>2]|0;if(!e)f=w+260|0;else{p=c[e>>2]|0;d=c[p>>2]|0;y=c[p+8>>2]|0;o=p+16|0;c[t>>2]=c[o>>2];c[t+4>>2]=c[o+4>>2];c[t+8>>2]=c[o+8>>2];c[t+12>>2]=c[o+12>>2];p=p+32|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];if(!y){c[u>>2]=c[d>>2];c[u+4>>2]=c[d+4>>2];c[u+8>>2]=c[d+8>>2];c[u+12>>2]=c[d+12>>2]}else{c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2]}f=w+260|0;p=b[f>>1]|0;o=c[w+220>>2]|0;c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];DF(a,r,(p<<8&65535)<<16>>16>>15&255,o,(p<<14&65535)<<16>>16>>15&255);p=c[(c[q>>2]|0)+8>>2]|0;o=c[p>>2]|0;p=(c[p+4>>2]|0)+-1|0;d=c[o+(p*48|0)>>2]|0;e=c[o+(p*48|0)+4>>2]|0;y=c[o+(p*48|0)+12>>2]|0;n=o+(p*48|0)+16|0;c[t>>2]=c[n>>2];c[t+4>>2]=c[n+4>>2];c[t+8>>2]=c[n+8>>2];c[t+12>>2]=c[n+12>>2];t=o+(p*48|0)+32|0;c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];if(!y){y=d+(e+-1<<4)|0;c[u>>2]=c[y>>2];c[u+4>>2]=c[y+4>>2];c[u+8>>2]=c[y+8>>2];c[u+12>>2]=c[y+12>>2]}else{c[u>>2]=c[s>>2];c[u+4>>2]=c[s+4>>2];c[u+8>>2]=c[s+8>>2];c[u+12>>2]=c[s+12>>2]}d=b[f>>1]|0;y=c[w+224>>2]|0;c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];DF(a,r,(d<<7&65535)<<16>>16>>15&255,y,(d<<13&65535)<<16>>16>>15&255);d=c[q>>2]|0}e=c[d+96>>2]|0;g=(b[f>>1]<<12&65535)<<16>>16>>15<<16>>16;m=w+216|0;h=c[m>>2]|0;n=w+232|0;i=c[n>>2]|0;o=w+248|0;j=c[o>>2]|0;p=w+212|0;k=c[p>>2]|0;if(!((PL(ML(v,c[46416]|0,134226)|0)|0)<<24>>24))d=0;else d=c[(c[q>>2]|0)+8>>2]|0;EF(a,e,11,g,h,i,j,k,d);j=c[(c[q>>2]|0)+108>>2]|0;k=(b[f>>1]<<12&65535)<<16>>16>>15<<16>>16;i=c[m>>2]|0;h=c[n>>2]|0;e=c[o>>2]|0;g=c[p>>2]|0;if(!((PL(ML(v,c[46416]|0,134226)|0)|0)<<24>>24))d=0;else d=c[(c[q>>2]|0)+8>>2]|0;EF(a,j,11,k,i,h,e,g,d);EF(a,c[(c[q>>2]|0)+100>>2]|0,7,(b[f>>1]<<13&65535)<<16>>16>>15<<16>>16,c[w+224>>2]|0,c[w+240>>2]|0,c[w+256>>2]|0,c[p>>2]|0,0);EF(a,c[(c[q>>2]|0)+104>>2]|0,6,(b[f>>1]<<14&65535)<<16>>16>>15<<16>>16,c[w+220>>2]|0,c[w+236>>2]|0,c[w+252>>2]|0,c[p>>2]|0,0);NO(a);NE(a);l=x;return}function DF(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+16|0;h=j;i=c[a+16>>2]|0;if(!(e<<24>>24))f=c[i+208>>2]|0;if(!(g<<24>>24==0?((f|0)==0?(b[i+260>>1]&1)==0:0):0)){c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];IF(a,h)}l=j;return}function EF(b,d,e,f,g,h,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;o=r;q=c[b+152>>2]|0;if(d|0?a[d+81>>0]|0:0){if(!j)n=0;else{n=tH((V_(j)|0)+11|0)|0;switch(e|0){case 11:{m=105198;break}case 7:{m=98557;break}case 6:{m=98567;break}default:qa(135312,96880,2730,97018)}c[o>>2]=j;c[o+4>>2]=m;X0(n,97034,o)|0}o=b+16|0;j=(c[o>>2]|0)+12|0;p=c[j>>2]|0;c[j>>2]=e;j=(f|0)!=0|(g|0)!=0;m=(q&4|0)==0;if(j&m){FF(b,d);OO(b,g,h,i,n)}nH(b,e,d);if(k|0)GF(b,d,k);if(j){if(!m){FF(b,d);OO(b,g,h,i,n)}PO(b)}C_(n);c[(c[o>>2]|0)+12>>2]=p}l=r;return}function FF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;i=f>>>16^2;c[d+264>>2]=i;j=d+268|0;c[j>>2]=i+2;i=d+272|0;C_(c[i>>2]|0);d=tH(c[j>>2]<<4)|0;c[i>>2]=d;i=b+56|0;j=b+24|0;h[d>>3]=+h[i>>3]-+h[j>>3]*.5;g=b+64|0;b=b+32|0;h[d+8>>3]=+h[g>>3]-+h[b>>3]*.5;h[d+16>>3]=+h[j>>3]*.5+ +h[i>>3];h[d+24>>3]=+h[b>>3]*.5+ +h[g>>3];if(!(e&8192))xO(a,d,d,2)|0;if(!f)VG(d)}return}function GF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+96|0;g=o+80|0;i=o+32|0;j=o+16|0;k=o;f=c[d>>2]|0;while(1){m=a[f>>0]|0;if(!(m<<24>>24))break;if(!(A$(m&255)|0)){n=4;break}else f=f+1|0}if((n|0)==4){p=+h[d+24>>3];m=d+56|0;HF(i,+h[m>>3]+p*.5,+h[d+64>>3]-+h[d+32>>3]*.5);n=i+16|0;HF(j,+h[i>>3]-p,+h[i+8>>3]);c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];n=i+32|0;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];c[g+8>>2]=c[m+8>>2];c[g+12>>2]=c[m+12>>2];aM(k,e,g);c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];XO(b,c[(c[b>>2]|0)+336>>2]|0);TO(b,c[d+8>>2]|0);aP(b,i,3)}l=o;return}function HF(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function IF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;j=f>>>16^2;c[d+264>>2]=j;k=d+268|0;c[k>>2]=j+2;j=d+272|0;C_(c[j>>2]|0);d=tH(c[k>>2]<<4)|0;c[j>>2]=d;i=+h[b>>3];h[d>>3]=i+-3.0;g=+h[b+8>>3];h[d+8>>3]=g+-3.0;h[d+16>>3]=i+3.0;h[d+24>>3]=g+3.0;if(!(e&8192))xO(a,d,d,2)|0;if(!f)VG(d)}return}function JF(a,b,d,e,f,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;i=+i;var j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=l;l=l+256|0;D=J+224|0;C=J+208|0;j=J+192|0;F=J+144|0;G=J+96|0;H=J+48|0;E=J;k=J+240|0;e=SE(e,f,k)|0;if((e|0)>1){z=b+48|0;A=dz(c[((c[b>>2]&3|0)==3?b:z)+40>>2]|0)|0;z=qy(c[((c[b>>2]&3|0)==3?b:z)+40>>2]|0)|0;A=(dy(A)|0)!=0;B=qy(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[j>>2]=z;c[j+4>>2]=A?97053:97058;c[j+8>>2]=B;Ow(3,97063,j)|0;if((e|0)==2)e=1;else I=4}else if((e|0)==1)e=1;else I=4;if((I|0)==4){B=b+16|0;r=c[k>>2]|0;s=r+8|0;t=H+4|0;u=F+8|0;v=F+12|0;w=(d|0)!=0;q=(d|0)==0;x=F+32|0;y=F+4|0;z=F+16|0;A=E+4|0;e=0;p=0;while(1){f=c[(c[B>>2]|0)+8>>2]|0;if((p|0)>=(c[f+4>>2]|0))break;j=F;f=(c[f>>2]|0)+(p*48|0)|0;b=j+48|0;do{c[j>>2]=c[f>>2];j=j+4|0;f=f+4|0}while((j|0)<(b|0));b=1;m=1.0;o=c[s>>2]|0;a:while(1){f=c[o>>2]|0;if(!f)break;k=o+4|0;n=+g[k>>2];do if(n<1.0e-05&n>-1.0e-05)f=b;else{TO(a,f);n=+g[k>>2];m=m-n;e=c[o>>2]|0;if(b|0){TF(F,n,H,E);k=c[H>>2]|0;$O(a,k,c[t>>2]|0,0,0,0);C_(k);if(m<1.0e-05&m>-1.0e-05){I=11;break a}else{f=0;break}}if(m<1.0e-05&m>-1.0e-05){I=13;break a}j=G;f=E;b=j+48|0;do{c[j>>2]=c[f>>2];j=j+4|0;f=f+4|0}while((j|0)<(b|0));n=+g[k>>2];TF(G,n/(m+n),H,E);C_(c[G>>2]|0);f=c[H>>2]|0;$O(a,f,c[t>>2]|0,0,0,0);C_(f);f=0}while(0);b=f;o=o+12|0}if((I|0)==11){I=0;C_(c[E>>2]|0)}else if((I|0)==13){I=0;o=c[E>>2]|0;$O(a,o,c[A>>2]|0,0,0,0);C_(o)}if(c[u>>2]|0){TO(a,c[c[s>>2]>>2]|0);VO(a,c[c[s>>2]>>2]|0);k=c[F>>2]|0;o=c[u>>2]|0;c[C>>2]=c[z>>2];c[C+4>>2]=c[z+4>>2];c[C+8>>2]=c[z+8>>2];c[C+12>>2]=c[z+12>>2];c[D>>2]=c[k>>2];c[D+4>>2]=c[k+4>>2];c[D+8>>2]=c[k+8>>2];c[D+12>>2]=c[k+12>>2];JE(a,2,C,D,h,i,o)}if(c[v>>2]|0){TO(a,e);VO(a,e);k=(c[F>>2]|0)+((c[y>>2]|0)+-1<<4)|0;o=c[v>>2]|0;c[C>>2]=c[x>>2];c[C+4>>2]=c[x+4>>2];c[C+8>>2]=c[x+8>>2];c[C+12>>2]=c[x+12>>2];c[D>>2]=c[k>>2];c[D+4>>2]=c[k+4>>2];c[D+8>>2]=c[k+8>>2];c[D+12>>2]=c[k+12>>2];JE(a,3,C,D,h,i,o)}do if((c[(c[(c[B>>2]|0)+8>>2]|0)+4>>2]|0)>1){if(!(c[u>>2]|0)){if(!(w&(c[v>>2]|0)!=0))break}else if(q)break;XO(a,d)}while(0);p=p+1|0}TE(r);e=0}l=J;return e|0}function KF(b,d){b=b|0;d=d|0;var e=0,f=0;e=1;a:while(1){switch(a[b>>0]|0){case 0:break a;case 58:{e=e+1|0;break}default:{}}b=b+1|0}f=O((V_(d)|0)+1|0,e)|0;b=f+10|0;if((c[46350]|0)<(f|0)){c[46350]=b;b=E_(c[46351]|0,b)|0;c[46351]=b}else b=c[46351]|0;a0(b,d)|0;while(1){e=e+-1|0;b=c[46351]|0;if(!e)break;f=b+(V_(b)|0)|0;a[f>>0]=58;a[f+1>>0]=0;o1(b,d)|0}return b|0}function LF(b){b=b|0;var d=0,e=0;d=c[46414]|0;a:do if(!d)e=7;else{d=xx(b,d)|0;switch(a[d>>0]|0){case 110:if(!(a$(d,132627)|0)){d=1;break a}else{e=7;break a}case 102:if(!(a$(d,97040)|0)){d=2;break a}else{e=7;break a}case 98:{if(!(a$(d,97048)|0)){d=3;break a}if(!(a$(d,108195)|0)){d=4;break a}else{e=7;break a}}default:{e=7;break a}}}while(0);if((e|0)==7){d=(dy(dz(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)|0)!=0;d=d?2:1}return d|0}function MF(a){a=a|0;if(a|0){C_(c[a+8>>2]|0);C_(a)}return}function NF(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;e=+h[b>>3]-+h[c>>3];f=+h[b+8>>3]-+h[c+8>>3];d=2.0/+C(+(e*e+.0001+f*f));h[a>>3]=d*f;h[a+8>>3]=-(e*d);return}function OF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0;g=+h[c>>3]-+h[d>>3];i=+h[c+8>>3]-+h[d+8>>3];f=+C(+(i*i+g*g));if(f<.0001){j=+h[b>>3]-+h[e>>3];f=+h[b+8>>3]-+h[e+8>>3];i=f;g=j;f=+C(+(j*j+.0001+f*f))}j=2.0/f;h[a>>3]=i*j;h[a+8>>3]=-(j*g);return}function PF(a,b,c){a=+a;b=+b;c=+c;return +(c*.5*(1.0-a/b))}function QF(a,b,c){a=+a;b=+b;c=+c;return +(c*.5)}function RF(a,b,c){a=+a;b=+b;c=+c;return +(c*.5*(a/b))}function SF(a,b,c){a=+a;b=+b;c=+c;b=a/b;return +((!(b<=.5)?1.0-b:b)*c)}function TF(a,b,d,e){a=a|0;b=+b;d=d|0;e=e|0;var f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0;p=l;l=l+16|0;o=p;n=c[a+4>>2]|0;j=(n+-1|0)/3|0;if((n+-4|0)>>>0<3){c[d+4>>2]=4;c[d>>2]=tH(64)|0;c[e+4>>2]=4;n=tH(64)|0;c[e>>2]=n;WL(o,c[a>>2]|0,3,b,c[d>>2]|0,n)}else{n=tH(j<<3)|0;g=0;i=c[a>>2]|0;f=0.0;while(1){if((g|0)>=(j|0))break;q=+UF(i);h[n+(g<<3)>>3]=q;g=g+1|0;i=i+48|0;f=q+f}b=f*b;m=0;f=0.0;while(1){if((j|0)<=(m|0))break;f=+h[n+(m<<3)>>3]+f;if(f>=b)break;m=m+1|0}k=m*3|0;g=k+4|0;i=d+4|0;c[i>>2]=g;c[d>>2]=tH(g<<4)|0;g=((j-m|0)*3|0)+1|0;j=e+4|0;c[j>>2]=g;c[e>>2]=tH(g<<4)|0;g=0;while(1){if((g|0)>=(c[i>>2]|0))break;r=(c[d>>2]|0)+(g<<4)|0;s=(c[a>>2]|0)+(g<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];g=g+1|0}g=g+-4|0;i=0;while(1){if((i|0)>=(c[j>>2]|0))break;s=(c[e>>2]|0)+(i<<4)|0;r=(c[a>>2]|0)+(g<<4)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];g=g+1|0;i=i+1|0}q=+h[n+(m<<3)>>3];WL(o,(c[a>>2]|0)+(k<<4)|0,3,(b-f+q)/q,(c[d>>2]|0)+(k<<4)|0,c[e>>2]|0);C_(n)}l=p;return}function UF(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0;e=+h[a+16>>3];d=+h[a>>3]-e;f=+h[a+24>>3];b=+h[a+8>>3]-f;d=+C(+(b*b+d*d));b=+h[a+32>>3];e=e-b;c=+h[a+40>>3];f=f-c;d=+C(+(f*f+e*e))+d;b=b-+h[a+48>>3];c=c-+h[a+56>>3];return +(d+ +C(+(c*c+b*b)))}function VF(b,d){b=b|0;d=d|0;d=ez(d)|0;if((a[(c[d+16>>2]|0)+115>>0]|0)==1)d=QM(b)|0;else d=NM(b,d)|0;return aG(d)|0}function WF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=l;l=l+1664|0;m=q+1600|0;n=q+800|0;o=q;p=uH(24)|0;c[p+16>>2]=1;j=((c[e+4>>2]|0)+-1|0)/3|0;h=0;i=p;while(1){if((h|0)>=(j|0))break;k=h*3|0;g=0;while(1){if((g|0)==4)break;r=m+(g<<4)|0;s=(c[e>>2]|0)+(g+k<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];g=g+1|0}h=h+1|0;i=XF(m,i)|0}g=0;h=0;i=p;while(1){if(!i){h=p;g=p;break}j=c[i+16>>2]|0;k=n+(g<<4)|0;e=o+(g<<4)|0;YF(h,i,j,k,e,f);g=g+1|0;if(!((g|0)==50|(j|0)==0)){h=i;i=j;continue}ZF(a,b,d,g,n,o);c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];h=i;g=1;i=j}while(1){if(!h)break;s=c[h+16>>2]|0;C_(g);h=s;g=s}l=q;return}function XF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+144|0;f=g+128|0;d=g+64|0;e=g;if(!(YE(a)|0)){WL(f,a,3,.5,d,e);d=XF(e,XF(d,b)|0)|0}else{d=b+16|0;if((c[d>>2]|0)==1){c[d>>2]=0;c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2]}d=a+48|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];d=$F(f,b)|0}l=g;return d|0}function YF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0;r=l;l=l+96|0;n=r+80|0;m=r+64|0;k=r+48|0;o=r+32|0;p=r+16|0;q=r;c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];do if(a){c[p>>2]=c[a>>2];c[p+4>>2]=c[a+4>>2];c[p+8>>2]=c[a+8>>2];c[p+12>>2]=c[a+12>>2];if(!d){i=+h[o>>3];h[q>>3]=i*2.0-+h[p>>3];j=+h[o+8>>3];h[q+8>>3]=j*2.0-+h[p+8>>3];break}else{c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];i=+h[o>>3];j=+h[o+8>>3];break}}else{c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];i=+h[o>>3];h[p>>3]=i*2.0-+h[q>>3];j=+h[o+8>>3];h[p+8>>3]=j*2.0-+h[q+8>>3]}while(0);c[k>>2]=c[p>>2];c[k+4>>2]=c[p+4>>2];c[k+8>>2]=c[p+8>>2];c[k+12>>2]=c[p+12>>2];c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[n>>2]=c[q>>2];c[n+4>>2]=c[q+4>>2];c[n+8>>2]=c[q+8>>2];c[n+12>>2]=c[q+12>>2];t=+_F(k,m,n);s=+E(+t)*g;g=+F(+t)*g;h[e>>3]=i+s;h[e+8>>3]=j+g;h[f>>3]=i-s;h[f+8>>3]=j-g;l=r;return}function ZF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;i=e<<1;j=c[d>>2]|0;h=0;k=0;while(1){if((h|0)>=(j|0))break;l=(c[(c[b>>2]|0)+(h<<2)>>2]|0)+k|0;h=h+1|0;k=l}l=j+1|0;c[d>>2]=l;l=wH(c[b>>2]|0,l<<2)|0;c[b>>2]=l;c[l+(h<<2)>>2]=i;c[a>>2]=wH(c[a>>2]|0,k+i<<4)|0;b=i+-1+k|0;h=0;while(1){if((h|0)>=(e|0))break;l=(c[a>>2]|0)+(h+k<<4)|0;j=f+(h<<4)|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];l=(c[a>>2]|0)+(b-h<<4)|0;j=g+(h<<4)|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];h=h+1|0}return}function _F(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;f=+h[b+8>>3];d=+h[b>>3];e=+K(+(+h[c+8>>3]-f),+(+h[c>>3]-d));d=+K(+(+h[a+8>>3]-f),+(+h[a>>3]-d));e=e-d;return +((e>0.0?e+-6.283185307179586:e)*.5+d)}function $F(a,b){a=a|0;b=b|0;var d=0;d=uH(24)|0;c[d+16>>2]=0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];c[b+16>>2]=d;return d|0}function aG(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;c=b;f=b;a:while(1){e=0;while(1){d=c;c=c+1|0;d=a[d>>0]|0;if(!(d<<24>>24))break a;if(e<<24>>24){g=5;break}if(d<<24>>24!=92)break;else e=1}b:do if((g|0)==5){g=0;switch(d<<24>>24|0){case 114:{d=13;break b}case 108:case 110:{d=10;break b}default:break b}}while(0);a[f>>0]=d;f=f+1|0}a[f>>0]=0;return b|0}function bG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=c[b>>2]|0;while(1){g=a[e>>0]|0;if(!(g<<24>>24)){f=0;break}f=g<<24>>24;if(!(g<<24>>24==44|(A$(f)|0)!=0)){h=5;break}e=e+1|0}a:do if((h|0)==5){switch(f|0){case 0:{f=0;break a}case 41:case 40:{e=e+1|0;break a}default:{}}h=d+4|0;i=d+8|0;while(1){if((cG(g<<24>>24)|0)<<24>>24){f=1;break a}f=c[h>>2]|0;if(f>>>0>=(c[i>>2]|0)>>>0){Tw(d,1)|0;f=c[h>>2]|0}c[h>>2]=f+1;a[f>>0]=g;f=e+1|0;e=f;g=a[f>>0]|0}}while(0);c[b>>2]=e;return f|0}function cG(a){a=a|0;switch(a|0){case 0:case 44:case 41:case 40:{a=1;break}default:a=0}return a|0}function dG(a,b){a=a|0;b=b|0;return eG(c[a>>2]|0,c[a+160>>2]|0,c[a+156>>2]|0,b)|0}function eG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+160|0;k=o+20|0;m=o+16|0;n=o;c[k>>2]=0;c[m>>2]=0;Sw(n,128,o+24|0);Vw(n,f)|0;g=n+4|0;f=c[g>>2]|0;if(f>>>0>=(c[n+8>>2]|0)>>>0){Tw(n,1)|0;f=c[g>>2]|0}a[f>>0]=0;h=c[n>>2]|0;c[g>>2]=h;i=b+300|0;j=b+296|0;f=0;g=h;a:while(1){if(f){f=1;break}f=l1(g,c[i>>2]|0,k)|0;if(!f){f=0;break}g=l1(f,c[j>>2]|0,m)|0;h=(g|0)!=0;if(h)f=l1(0,c[j>>2]|0,m)|0;else f=0;switch(((f|0)!=0&1)+(h&1)&3){case 2:{g=fG(b,g,0)|0;f=fG(b,f,e)|0;h=(g|0)>(f|0);f=(f&g|0)>-1&(((h?g:f)|0)>=(d|0)&((h?f:g)|0)<=(d|0));g=0;continue a}case 1:{f=(fG(b,g,d)|0)==(d|0);g=0;continue a}default:{f=0;g=0;continue a}}}Ww(n);l=o;return f|0}function fG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=a[d>>0]|0;if(!(h<<24>>24==97?(a$(d,97370)|0)==0:0))f=3;a:do if((f|0)==3){if((gG(d)|0)<<24>>24){e=$1(d)|0;break}g=c[b+308>>2]|0;if(!g)e=-1;else{b=c[b+312>>2]|0;e=1;while(1){if((e|0)>(b|0)){e=-1;break a}f=c[g+(e<<2)>>2]|0;if(h<<24>>24==(a[f>>0]|0)?(a$(d,f)|0)==0:0)break a;e=e+1|0}}}while(0);return e|0}function gG(b){b=b|0;var c=0;while(1){c=a[b>>0]|0;if(!(c<<24>>24)){b=1;break}if(((c&255)+-48|0)>>>0<10)b=b+1|0;else{b=0;break}}return b|0}function hG(a,b){a=a|0;b=b|0;if((+h[a+16>>3]>=+h[b>>3]?+h[b+16>>3]>=+h[a>>3]:0)?+h[a+24>>3]>=+h[b+8>>3]:0)a=+h[b+24>>3]>=+h[a+8>>3]&1;else a=0;return a|0}function iG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;a:do if((c[b+156>>2]|0)>=2?(f=ML(e,c[46397]|0,191979)|0,(dG(b,f)|0)<<24>>24==0):0)if(!(a[f>>0]|0))if(!(Ix(d,e)|0))f=1;else{f=Ix(d,e)|0;while(1){if(!f){f=0;break a}g=ML(f,c[46420]|0,191979)|0;if(!(a[g>>0]|0)){f=1;break a}if((dG(b,g)|0)<<24>>24){f=1;break a}f=Jx(d,f,e)|0}}else f=0;else f=1;while(0);return f|0}function jG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+64|0;e=d+32|0;f=d;a=(c[a+16>>2]|0)+48|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[f+28>>2]=c[a+28>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];c[e+24>>2]=c[b+24>>2];c[e+28>>2]=c[b+28>>2];b=(hG(f,e)|0)&255;l=d;return b|0}function kG(a,d){a=a|0;d=d|0;var f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0.0,v=0.0;r=c[a+152>>2]|0;s=ME(a)|0;c[s+4>>2]=2;c[s+8>>2]=d;c[s+12>>2]=8;if(r&16777216|0){if((e[(c[(dz(d)|0)+16>>2]|0)+178>>1]|0)>2){f=+h[(c[(c[d+16>>2]|0)+132>>2]|0)+16>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0)}else f=0.0;h[s+168>>3]=f}k=d+16|0;mG(a,c[(c[k>>2]|0)+104>>2]|0,d);do if(r&4259840|0){if((c[s+208>>2]|0)==0?(b[s+260>>1]&1)==0:0)break;p=GJ(d)|0;l=c[k>>2]|0;f=+h[l+16>>3];q=+h[l+24>>3];l=nG(d)|0;a:do if((p|2|0)==3){n=c[(c[k>>2]|0)+12>>2]|0;if(!((oG(n)|0)<<24>>24))g=0;else g=(c[n+4>>2]|l|0)!=0;if(!((r&524288|0)==0|((n|0)==0|g))){i=n+8|0;o=c[i>>2]|0;o=(o|0)<3?1:o;j=n+4|0;m=c[j>>2]|0;m=(m|0)>1?m:1;p=c[n+44>>2]|0;g=wx(d,99679)|0;if(!g)g=0;else g=$1(g)|0;g=(g+-4|0)>>>0>56?20:g;if(!(c[j>>2]|l)){c[s+264>>2]=0;i=tH(32)|0;g=c[k>>2]|0;v=+h[g+88>>3];h[i>>3]=f-v;u=+h[g+80>>3]*.5;h[i+8>>3]=q-u;h[i+16>>3]=v+f;h[i+24>>3]=u+q;g=2;break}i=c[i>>2]|0;if(((i|0)<3?+h[n+32>>3]==0.0:0)?+h[n+24>>3]==0.0:0){i=s+264|0;if(c[n>>2]|0){c[i>>2]=1;i=tH(32)|0;h[i>>3]=f;h[i+8>>3]=q;g=(m<<1)+-1|0;h[i+16>>3]=+h[p+(g<<4)>>3]+f;h[i+24>>3]=+h[p+(g<<4)+8>>3]+q;g=2;break}c[i>>2]=2;i=(m<<1)+-1|0;i=pG(+h[p+(i<<4)>>3],+h[p+(i<<4)+8>>3],g)|0;j=0;while(1){if((j|0)>=(g|0))break a;p=i+(j<<4)|0;h[p>>3]=+h[p>>3]+f;p=i+(j<<4)+8|0;h[p>>3]=+h[p>>3]+q;j=j+1|0}}m=O(i,m+-1|0)|0;c[s+264>>2]=2;if((i|0)<(g|0)){i=tH(o<<4)|0;g=0;while(1){if((g|0)>=(o|0)){g=o;break a}n=g+m|0;h[i+(g<<4)>>3]=+h[p+(n<<4)>>3]+f;h[i+(g<<4)+8>>3]=+h[p+(n<<4)+8>>3]+q;g=g+1|0}}else{l=(i|0)/(g|0)|0;i=tH(g<<4)|0;j=0;k=0;while(1){if((j|0)>=(g|0))break a;o=k+m|0;h[i+(j<<4)>>3]=+h[p+(o<<4)>>3]+f;h[i+(j<<4)+8>>3]=+h[p+(o<<4)+8>>3]+q;j=j+1|0;k=k+l|0}}}else t=31}else t=31;while(0);if((t|0)==31){c[s+264>>2]=0;i=tH(32)|0;g=c[k>>2]|0;h[i>>3]=f-+h[g+88>>3];v=+h[g+80>>3]*.5;h[i+8>>3]=q-v;h[i+16>>3]=+h[g+96>>3]+f;h[i+24>>3]=v+q;g=2}if(!(r&8192))xO(a,i,i,g)|0;c[s+272>>2]=i;c[s+268>>2]=g}while(0);pQ(wx(d,97006)|0);KO(a,d);return}function lG(a){a=a|0;LO(a);NE(a);return}function mG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m;f=wx(e,137973)|0;i=wx(e,138019)|0;k=wx(e,138006)|0;Sw(j,128,m+16|0);if(!d)h=0;else h=c[d>>2]|0;if(!((f|0)!=0?(a[f>>0]|0)!=0:0))f=wx(e,108395)|0;g=PE(b,e,j)|0;if(!i)d=0;else d=VF(i,e)|0;OE(b,h,f,d,k,g,e)|0;C_(d);Ww(j);l=m;return}function nG(b){b=b|0;var d=0,e=0;b=NL(b,c[46387]|0,191979)|0;a:do if(!(a[b>>0]|0))b=0;else{zF(b)|0;b=0;d=185144;while(1){e=c[d>>2]|0;if(!e)break a;e=(a$(e,108075)|0)==0;b=e?1:b;d=d+4|0}}while(0);return b|0}function oG(a){a=a|0;var b=0.0;if(((c[a+8>>2]|0)==4?(b=+h[a+16>>3],((~~(b+(b>=0.0?.5:-.5))|0)%90|0|0)==0):0)?+h[a+24>>3]==0.0:0)a=+h[a+32>>3]==0.0&1;else a=0;return a|0}function pG(a,b,c){a=+a;b=+b;c=c|0;var d=0.0,e=0,f=0.0,g=0;f=6.283185307179586/+(c|0);g=tH(c<<4)|0;d=0.0;e=0;while(1){if((e|0)>=(c|0))break;h[g+(e<<4)>>3]=+E(+d)*a;h[g+(e<<4)+8>>3]=+F(+d)*b;d=d+f;e=e+1|0}return g|0}function qG(b,d){b=b|0;d=d|0;var e=0;a:do if((c[b+156>>2]|0)>=2?(e=ML(d,mx(d,0,98484,0)|0,191979)|0,(dG(b,e)|0)<<24>>24==0):0)if(!(a[e>>0]|0)){e=Ry(d)|0;while(1){if(!e){e=0;break a}if((iG(b,d,e)|0)<<24>>24){e=1;break a}e=Sy(d,e)|0}}else e=0;else e=1;while(0);return e|0}function rG(a,b){a=a|0;b=b|0;var d=0;d=ME(a)|0;c[d+4>>2]=1;c[d+8>>2]=b;c[d+12>>2]=1;mG(a,c[(c[b+16>>2]|0)+12>>2]|0,b);EO(a,b);return}function sG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;b=wx(b,138e3)|0;a:do if((b|0)!=0?(a[b>>0]|0)!=0:0){zF(b)|0;e=185144;b=0;while(1){while(1){f=c[e>>2]|0;if(!f){e=185144;break a}if(!(a$(f,108075)|0)){g=10;break}if(!(a$(f,103308)|0)){f=e;g=12;break}if(!(a$(f,103315)|0)){f=e;g=14;break}if(!(a$(f,103290)|0)){f=e;g=16;break}e=e+4|0}if((g|0)==10){e=e+4|0;b=b|1;continue}else if((g|0)==12){while(1){h=f;f=f+4|0;g=c[f>>2]|0;c[h>>2]=g;if(!g)break;else g=12}b=b|3;continue}else if((g|0)==14){while(1){g=f;f=f+4|0;h=c[f>>2]|0;c[g>>2]=h;if(!h)break;else g=14}b=b|64;continue}else if((g|0)==16){while(1){g=f;f=f+4|0;h=c[f>>2]|0;c[g>>2]=h;if(!h)break;else g=16}b=b|4;continue}}}else{e=0;b=0}while(0);c[d>>2]=b;return e|0}function tG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;i=k;j=k+4|0;c[j>>2]=0;m=(SE(b,0,j)|0)==0;j=c[j>>2]|0;if((m?(f=c[j>>2]|0,(f|0)>=2):0)?(h=j+8|0,(c[c[h>>2]>>2]|0)!=0):0){if((f|0)>2)Ow(0,97389,i)|0;m=uH((V_(b)|0)+1|0)|0;c[d>>2]=m;a0(m,c[c[h>>2]>>2]|0)|0;if(!(c[(c[h>>2]|0)+12>>2]|0))c[d+4>>2]=0;else{m=c[d>>2]|0;m=m+((V_(m)|0)+1)|0;c[d+4>>2]=m;a0(m,c[(c[h>>2]|0)+12>>2]|0)|0}b=c[h>>2]|0;do if(!(a[b+8>>0]|0))if(!(a[b+20>>0]|0)){g[e>>2]=0.0;break}else{g[e>>2]=1.0-+g[b+16>>2];break}else c[e>>2]=c[b+4>>2];while(0);TE(j);b=1}else{c[d>>2]=0;TE(j);b=0}l=k;return b|0}function uG(a,b){a=a|0;b=b|0;FO(a,b);NE(a);return}function vG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=l;l=l+96|0;p=x+48|0;s=x+16|0;w=x+8|0;v=x;t=x+80|0;c[t>>2]=1e3;f=uH(16e3)|0;u=a+256|0;e=1;j=1;i=0;q=0;r=c[b+8>>2]|0;while(1){if((q|0)>=(c[b>>2]|0))break;d=c[r>>2]|0;a:do switch(d|0){case 1:case 0:{n=r+80|0;c[s>>2]=c[n>>2];c[s+4>>2]=c[n+4>>2];c[s+8>>2]=c[n+8>>2];c[s+12>>2]=c[n+12>>2];c[s+16>>2]=c[n+16>>2];c[s+20>>2]=c[n+20>>2];c[s+24>>2]=c[n+24>>2];c[s+28>>2]=c[n+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(hG(s,p)|0))d=j;else{z=r+8|0;A=r+24|0;h[f>>3]=+h[z>>3]-+h[A>>3];n=r+16|0;y=r+32|0;h[f+8>>3]=+h[n>>3]-+h[y>>3];h[f+16>>3]=+h[A>>3]+ +h[z>>3];h[f+24>>3]=+h[y>>3]+ +h[n>>3];YO(a,f,2,(d|0)==0?j:0);d=j}break}case 3:case 2:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(hG(s,p)|0))d=j;else{d=r+8|0;f=wG(f,t,c[d+4>>2]|0,c[d>>2]|0)|0;ZO(a,f,c[d>>2]|0,(c[r>>2]|0)==2?j:0);d=j}break}case 5:case 4:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(hG(s,p)|0))d=j;else{d=r+8|0;f=wG(f,t,c[d+4>>2]|0,c[d>>2]|0)|0;$O(a,f,c[d>>2]|0,0,0,(c[r>>2]|0)==4?j&255:0);d=j}break}case 6:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(hG(s,p)|0))d=j;else{d=r+8|0;f=wG(f,t,c[d+4>>2]|0,c[d>>2]|0)|0;aP(a,f,c[d>>2]|0);d=j}break}case 7:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(hG(s,p)|0))d=j;else{h[f>>3]=+h[r+8>>3];h[f+8>>3]=+h[r+16>>3];d=c[r+112>>2]|0;c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];SO(a,p,d);d=j}break}case 8:{VO(a,c[r+8>>2]|0);d=1;break}case 9:{TO(a,c[r+8>>2]|0);d=1;break}case 13:{if((c[r+8>>2]|0)!=2){d=r+16|0;z=c[d+36>>2]|0;A=c[z+12>>2]|0;o=+g[z+8>>2];d=~~(+K(+(+h[r+40>>3]-+h[r+24>>3]),+(+h[r+32>>3]-+h[d>>3]))*57.29577951308232);VO(a,c[z+4>>2]|0);WO(a,A,d,o);d=2;break a}A=c[r+68>>2]|0;j=c[A+4>>2]|0;n=c[A+12>>2]|0;o=+g[A+8>>2];k=+h[r+40>>3];m=+h[r+16>>3];if(k==m?+h[r+48>>3]==+h[r+24>>3]:0)d=0;else d=~~(+H(+((m-k)/+h[r+32>>3]))*57.29577951308232);VO(a,j);WO(a,n,d,o);d=3;break}case 14:{Ow(0,97455,v)|0;d=j;break}case 12:{if(!e){e=0;d=j}else{Ow(0,97495,w)|0;e=0;d=j}break}case 11:{zF(c[r+8>>2]|0)|0;XO(a,185144);i=185144;d=j;break}default:d=j}while(0);j=d;q=q+1|0;r=r+120|0}if(i|0)XO(a,c[(c[a>>2]|0)+336>>2]|0);C_(f);l=x;return}function wG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[b>>2]|0;f=g<<1;f=(f|0)>(e|0)?f:e;if((g|0)<(e|0)){a=wH(a,f<<4)|0;c[b>>2]=f}b=0;while(1){if((b|0)>=(e|0))break;h[a+(b<<4)>>3]=+h[d+(b*24|0)>>3];h[a+(b<<4)+8>>3]=+h[d+(b*24|0)+8>>3];b=b+1|0}return a|0}function xG(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=c[b+4>>2];c[a+4>>2]=d;return}function yG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=d+16|0;f=1;while(1){d=c[g>>2]|0;if((f|0)>(c[d+180>>2]|0))break;e=c[(c[d+184>>2]|0)+(f<<2)>>2]|0;yG(b,e);d=wx(e,137741)|0;if(d|0?a[d>>0]|0:0)TO(b,d);d=wx(e,134647)|0;if(d|0?a[d>>0]|0:0)TO(b,d);d=wx(e,137895)|0;if(d|0?a[d>>0]|0:0)TO(b,d);d=wx(e,98392)|0;if(d|0?a[d>>0]|0:0)VO(b,d);d=wx(e,98420)|0;if(d|0?a[d>>0]|0:0)TO(b,d);f=f+1|0}return}function zG(a){a=a|0;var b=0,d=0,e=0;b=c[46356]|0;if(!b){b=Bw(20524,c[4555]|0)|0;c[46356]=b}if(!(nb[c[b>>2]&63](b,a,4)|0)){d=c[46356]|0;e=c[d>>2]|0;b=m1(a)|0;nb[e&63](d,b,1)|0;b=1}else b=0;return b|0}function AG(a,b,c){a=a|0;b=b|0;c=c|0;C_(b);return}function BG(a){a=a|0;var b=0;b=c[46357]|0;if(!a){if((b|0)>0?(b=b+-1|0,c[46357]=b,(b|0)==0):0){I0(1,c[46358]|0)|0;C_(c[46358]|0)}}else{c[46357]=b+1;if(!b){c[46358]=m1(I0(1,0)|0)|0;I0(1,150481)|0}}return}function CG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+96|0;r=u+72|0;q=u+56|0;p=u+48|0;t=u+32|0;s=u+24|0;e=u+8|0;d=u;if(0)DL();do if((zz(b,134401,0,1)|0)!=0?(o=b+16|0,(c[(c[o>>2]|0)+8>>2]|0)!=0):0){DG(b);EG(a,b);FG(a,b);BG(1);j=a+56|0;k=a+184|0;m=a+192|0;n=a+28|0;i=oC(a)|0;a:while(1){if(!i){g=33;break}d=c[j>>2]|0;if(!d){c[i+20>>2]=0;d=0}else{c[i+20>>2]=c[d+8>>2];d=c[d+12>>2]|0}c[i+24>>2]=d;c[i+12>>2]=a;c[i+28>>2]=c[k>>2];c[i+620>>2]=25660;c[i+624>>2]=14;if(!(c[(c[o>>2]|0)+8>>2]|0)){g=13;break}e=i+52|0;g=tO(i,c[e>>2]|0)|0;c[i+56>>2]=g;switch(g|0){case 999:{g=16;break a}case 21:{d=1;break}case 24:{d=520;break}default:d=GG(b)|0}f=i+152|0;c[f>>2]=c[f>>2]|d;d=c[m>>2]|0;do if(!d)g=24;else{if(c[d+152>>2]&32|0?(a$(c[e>>2]|0,c[d+52>>2]|0)|0)==0:0){d=c[46359]|0;if(!d){g=27;break}c[d+8>>2]=i;c[i+36>>2]=c[d+36>>2];g=29;break}vO(d);c[m>>2]=0;c[n>>2]=0;g=24}while(0);if((g|0)==24){c[46359]=0;g=27}if((g|0)==27?(g=0,(uO(i)|0)==0):0){c[m>>2]=i;g=29}if((g|0)==29){c[i+8>>2]=0;c[i+104>>2]=25772;HG(i);IG(i);JG(i,b);KG(i,b);LG(i,b);if(!(c[f>>2]&128))cF(i,b);c[46359]=i}i=pC(a)|0}if((g|0)==13){Ow(1,97653,s)|0;BG(0);if(!0){d=-1;break}d=c[15686]|0;s=qy(b)|0;v=+EL();c[t>>2]=s;h[t+8>>3]=v;f1(d,97624,t)|0;d=-1;break}else if((g|0)==16){c[p>>2]=c[e>>2];Ow(1,97674,p)|0;BG(0);if(!0){d=-1;break}d=c[15686]|0;t=qy(b)|0;v=+EL();c[q>>2]=t;h[q+8>>3]=v;f1(d,97624,q)|0;d=-1;break}else if((g|0)==33){BG(0);if(!0){d=0;break}d=c[15686]|0;t=qy(b)|0;v=+EL();c[r>>2]=t;h[r+8>>3]=v;f1(d,97624,r)|0;d=0;break}}else g=5;while(0);if((g|0)==5){Ow(1,97576,d)|0;if(!0)d=-1;else{d=c[15686]|0;t=qy(b)|0;v=+EL();c[e>>2]=t;h[e+8>>3]=v;f1(d,97624,e)|0;d=-1}}l=u;return d|0}function DG(a){a=a|0;var b=0;b=Ry(a)|0;while(1){if(!b)break;QG(a,b);b=Sy(a,b)|0}return}function EG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+32|0;k=o+24|0;f=o+16|0;j=o+8|0;n=o;c[b+168>>2]=d;g=b+293|0;a[g>>0]=0;e=wx(d,102470)|0;if(e|0?(c[f>>2]=j,c[f+4>>2]=n,i=M1(e,102477,f)|0,(i|0)>0):0){p=+h[j>>3]*72.0;e=b+208|0;h[e>>3]=p;h[b+200>>3]=p;if((i|0)!=1)h[e>>3]=+h[n>>3]*72.0;a[g>>0]=1}f=b+292|0;a[f>>0]=0;e=wx(d,98076)|0;if(e|0?(c[k>>2]=j,c[k+4>>2]=n,m=M1(e,102477,k)|0,(m|0)>0):0){p=+h[j>>3]*72.0;e=b+224|0;h[e>>3]=p;h[b+216>>3]=p;if((m|0)!=1)h[e>>3]=+h[n>>3]*72.0;a[f>>0]=1}e=b+294|0;a[e>>0]=0;f=b+232|0;g=d+16|0;n=(c[(c[g>>2]|0)+8>>2]|0)+48|0;c[f>>2]=c[n>>2];c[f+4>>2]=c[n+4>>2];c[f+8>>2]=c[n+8>>2];c[f+12>>2]=c[n+12>>2];f=c[(c[g>>2]|0)+8>>2]|0;if(+h[f+48>>3]>.001?+h[f+56>>3]>.001:0)a[e>>0]=1;c[b+288>>2]=a[f+81>>0]|0?90:0;e=b+196|0;c[e>>2]=98080;f=wx(d,98083)|0;if(f|0?a[f>>0]|0:0)c[e>>2]=f;n=b+256|0;m=(c[g>>2]|0)+16|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];c[n+16>>2]=c[m+16>>2];c[n+20>>2]=c[m+20>>2];c[n+24>>2]=c[m+24>>2];c[n+28>>2]=c[m+28>>2];c[46371]=mx(d,0,98446,0)|0;c[46372]=mx(d,0,98437,0)|0;c[b+320>>2]=NL(0,c[46381]|0,104968)|0;h[b+328>>3]=+KL(0,c[46380]|0,14.0,1.0);c[b+336>>2]=20560;c[b+188>>2]=qy(d)|0;l=o;return}function FG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=b+304|0;f=c[e>>2]|0;if(f|0){C_(f);c[e>>2]=0}f=b+308|0;e=c[f>>2]|0;if(e|0){C_(e);c[f>>2]=0}g=b+316|0;e=c[g>>2]|0;if(e|0){C_(e);c[g>>2]=0}e=wx(d,97827)|0;if(e){c[b+312>>2]=OG(b,d,e)|0;e=wx(d,97834)|0;if(e|0?a[e>>0]|0:0)c[g>>2]=PG(b,e)|0}else{c[f>>2]=0;c[b+312>>2]=1}return}function GG(b){b=b|0;b=wx(b,97795)|0;a:do if(!b)b=0;else switch(a[b>>0]|0){case 110:{if(!(a$(b+1|0,97807)|0))b=1;else{b=0;break a}break}case 101:{if(!(a$(b+1|0,97817)|0))b=16;else{b=0;break a}break}default:{b=0;break a}}while(0);return b|0}function HG(b){b=b|0;var d=0.0,e=0;e=c[b>>2]|0;if(!(a[e+292>>0]|0)){if((c[b+56>>2]|0)==300)d=+h[(c[b+68>>2]|0)+8>>3];else d=4.0;h[b+248>>3]=d;h[b+240>>3]=d}else{b=b+240|0;e=e+216|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2]}return}function IG(b){b=b|0;var d=0;d=c[b>>2]|0;a:do if(!(a[d+293>>0]|0))switch(c[b+56>>2]|0){case 300:{d=b+416|0;b=(c[b+84>>2]|0)+8|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];break a}case 30:case 21:case 22:case 4:case 3:case 2:{h[b+424>>3]=36.0;h[b+416>>3]=36.0;break a}default:{d=b+416|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;break a}}else{b=b+416|0;d=d+200|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2]}while(0);return}function JG(b,d){b=b|0;d=d|0;var e=0.0,f=0;f=c[(c[b>>2]|0)+192>>2]|0;e=+h[(c[(c[d+16>>2]|0)+8>>2]|0)+24>>3];do if(!(e!=0.0)){if(f|0?a[f+128>>0]|0:0){b=b+432|0;f=f+112|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];break}d=b+432|0;if((c[b+56>>2]|0)==300){b=(c[b+84>>2]|0)+40|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];break}else{h[b+440>>3]=96.0;h[d>>3]=96.0;break}}else{h[b+440>>3]=e;h[b+432>>3]=e}while(0);return}function KG(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+112|0;t=A+80|0;u=A+56|0;s=A+40|0;v=A+32|0;w=A+24|0;x=A+16|0;y=A+8|0;z=A;m=c[b>>2]|0;o=+h[m+272>>3];q=+h[m+280>>3];p=+h[m+256>>3];r=+h[m+264>>3];f=+h[b+240>>3];e=p-f;h[b+208>>3]=e;i=+h[b+248>>3];j=r-i;h[b+216>>3]=j;f=f+o;h[b+224>>3]=f;i=i+q;h[b+232>>3]=i;e=f-e;j=i-j;h[x>>3]=1.0;g=c[(c[d+16>>2]|0)+8>>2]|0;i=+h[g+64>>3];do if(i>.001?(k=+h[g+72>>3],k>.001):0){e=e==0.0?i:e;f=j==0.0?k:j;if(!(if&(i>e&(a[g+80>>0]|0)!=0)):0){k=e;j=f;i=1.0;break}n=i/e>3]=i;k=e;j=f}else{k=e;i=1.0}while(0);f=(p+o)*.5;h[y>>3]=f;e=(r+q)*.5;h[z>>3]=e;c[b+360>>2]=c[m+288>>2];k=i*k;h[v>>3]=k;j=i*j;h[w>>3]=j;g=wx(d,97726)|0;if(g){m=B_((V_(g)|0)+1|0)|0;n=B_((V_(g)|0)+1|0)|0;c[s>>2]=v;c[s+4>>2]=w;c[s+8>>2]=x;c[s+12>>2]=m;do if((M1(g,97735,s)|0)==4){g=$y(c[d+60>>2]|0,m,0)|0;if(g|0){u=c[g+16>>2]|0;h[y>>3]=+h[u+16>>3];h[z>>3]=+h[u+24>>3]}}else{c[u>>2]=v;c[u+4>>2]=w;c[u+8>>2]=x;c[u+12>>2]=m;c[u+16>>2]=n;if((M1(g,97755,u)|0)!=4){c[t>>2]=v;c[t+4>>2]=w;c[t+8>>2]=x;c[t+12>>2]=y;c[t+16>>2]=z;M1(g,97775,t)|0;break}g=$y(c[d+60>>2]|0,m,0)|0;if(g|0){u=c[g+16>>2]|0;h[y>>3]=+h[u+16>>3];h[z>>3]=+h[u+24>>3]}}while(0);C_(m);C_(n);k=+h[v>>3];j=+h[w>>3];i=+h[x>>3];f=+h[y>>3];e=+h[z>>3]}h[b+368>>3]=k;h[b+376>>3]=j;h[b+352>>3]=i;h[b+336>>3]=f;h[b+344>>3]=e;l=A;return}function LG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,P=0.0,Q=0.0;M=l;l=l+224|0;J=M+200|0;z=M+168|0;E=M+144|0;I=M+120|0;F=M+96|0;G=M+64|0;e=M+184|0;v=M+176|0;w=M+160|0;y=M+136|0;x=M+112|0;A=M+80|0;B=M+48|0;C=M+32|0;D=M+16|0;K=M+8|0;L=M;u=c[b>>2]|0;c[G>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;c[G+12>>2]=0;H=b+368|0;c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];H=b+360|0;if(c[H>>2]|0){c[J>>2]=c[I>>2];c[J+4>>2]=c[I+4>>2];c[J+8>>2]=c[I+8>>2];c[J+12>>2]=c[I+12>>2];MG(e,J);c[I>>2]=c[e>>2];c[I+4>>2]=c[e+4>>2];c[I+8>>2]=c[e+8>>2];c[I+12>>2]=c[e+12>>2]}t=b+416|0;c[F>>2]=c[t>>2];c[F+4>>2]=c[t+4>>2];c[F+8>>2]=c[t+8>>2];c[F+12>>2]=c[t+12>>2];if((a[u+294>>0]|0)!=0?(c[b+152>>2]&32|0)!=0:0){i=+h[u+232>>3]-+h[F>>3]*2.0;h[E>>3]=i;k=+h[u+240>>3]-+h[F+8>>3]*2.0;p=E+8|0;h[p>>3]=k;if(!(i<.0001)){o=+h[I>>3];e=~~(o/i);f=b+164|0;c[f>>2]=e;if(o-i*+(e|0)>.0001){e=e+1|0;c[f>>2]=e}}else{c[b+164>>2]=1;e=1}if(!(k<.0001)){g=+h[I+8>>3];f=~~(g/k);j=b+168|0;c[j>>2]=f;if(g-k*+(f|0)>.0001){f=f+1|0;c[j>>2]=f}}else{c[b+168>>2]=1;f=1;g=+h[I+8>>3]}c[b+204>>2]=O(f,e)|0;o=+h[(+h[I>>3]>3];h[I>>3]=o;e=p;f=I;m=+h[(g>3];g=o;j=21}else{if(c[b+68>>2]|0){e=c[b+84>>2]|0;i=+h[e+24>>3]-+h[F>>3]*2.0;i=i<0.0?0.0:i;h[E>>3]=i;o=+h[e+32>>3]-+h[F+8>>3]*2.0;e=E+8|0;h[e>>3]=o;if(o<0.0){f=E;j=17}else e=E}else{h[E+8>>3]=0.0;f=E;e=E;j=17}if((j|0)==17){h[e>>3]=0.0;e=f;i=+h[f>>3]}c[b+204>>2]=1;c[b+168>>2]=1;c[b+164>>2]=1;g=+h[I>>3];if(i>3]=g;i=g}e=E+8|0;k=+h[e>>3];m=+h[I+8>>3];if(k>3]=m;r=e;m=+h[e>>3]}n=+h[F>>3];s=b+432|0;k=+h[s>>3]*.013888888888888888*(n*2.0+i);c[b+448>>2]=~~(k+(k>=0.0?.5:-.5));q=F+8|0;k=+h[q>>3];t=b+440|0;o=+h[t>>3]*.013888888888888888*(k*2.0+m);c[b+452>>2]=~~(o+(o>=0.0?.5:-.5));j=b+188|0;p=b+180|0;e=b+172|0;f=u+196|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;NG(v,b,a[c[f>>2]>>0]|0);u=v;v=c[u+4>>2]|0;e=p;c[e>>2]=c[u>>2];c[e+4>>2]=v;NG(w,b,a[(c[f>>2]|0)+1>>0]|0);e=w;w=c[e>>2]|0;e=c[e+4>>2]|0;v=j;c[v>>2]=w;c[v+4>>2]=e;w=(c[p>>2]|0)+w|0;if(!((((w|0)>-1?w:0-w|0)|0)==1?(w=(c[b+184>>2]|0)+e|0,(((w|0)>-1?w:0-w|0)|0)==1):0)){NG(y,b,66);v=y;y=c[v+4>>2]|0;w=p;c[w>>2]=c[v>>2];c[w+4>>2]=y;NG(x,b,76);w=x;x=c[w+4>>2]|0;y=j;c[y>>2]=c[w>>2];c[y+4>>2]=x;c[z>>2]=c[f>>2];Ow(0,97706,z)|0}if(a[(c[(c[d+16>>2]|0)+8>>2]|0)+82>>0]|0){if(i>g){m=(i-g)*.5;h[G>>3]=m}else m=0.0;i=+h[r>>3];o=+h[I+8>>3];if(i>o){i=(i-o)*.5;h[G+8>>3]=i}else i=0.0}else{i=0.0;m=0.0}if(!(c[H>>2]|0))j=1;else{c[J>>2]=c[I>>2];c[J+4>>2]=c[I+4>>2];c[J+8>>2]=c[I+8>>2];c[J+12>>2]=c[I+12>>2];MG(A,J);c[I>>2]=c[A>>2];c[I+4>>2]=c[A+4>>2];c[I+8>>2]=c[A+8>>2];c[I+12>>2]=c[A+12>>2];c[J>>2]=c[E>>2];c[J+4>>2]=c[E+4>>2];c[J+8>>2]=c[E+8>>2];c[J+12>>2]=c[E+12>>2];MG(B,J);c[E>>2]=c[B>>2];c[E+4>>2]=c[B+4>>2];c[E+8>>2]=c[B+8>>2];c[E+12>>2]=c[B+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];MG(C,J);c[F>>2]=c[C>>2];c[F+4>>2]=c[C+4>>2];c[F+8>>2]=c[C+8>>2];c[F+12>>2]=c[C+12>>2];c[J>>2]=c[G>>2];c[J+4>>2]=c[G+4>>2];c[J+8>>2]=c[G+8>>2];c[J+12>>2]=c[G+12>>2];MG(D,J);c[G>>2]=c[D>>2];c[G+4>>2]=c[D+4>>2];c[G+8>>2]=c[D+8>>2];c[G+12>>2]=c[D+12>>2];n=+h[F>>3];m=+h[G>>3];k=+h[q>>3];i=+h[G+8>>3];g=+h[I>>3];j=(c[H>>2]|0)==0}o=m+n;h[b+384>>3]=o;P=i+k;h[b+392>>3]=P;N=m+n+g;h[b+400>>3]=N;Q=+h[I+8>>3];n=i+k+Q;h[b+408>>3]=n;m=+h[b+352>>3];h[b+320>>3]=g/m;h[b+328>>3]=Q/m;m=+h[s>>3];o=o*.013888888888888888*m;f=b+456|0;c[f>>2]=~~(o+(o>=0.0?.5:-.5));o=+h[t>>3];k=P*.013888888888888888*o;c[b+460>>2]=~~(k+(k>=0.0?.5:-.5));m=N*.013888888888888888*m;e=b+464|0;c[e>>2]=~~(m+(m>=0.0?.5:-.5));o=n*.013888888888888888*o;c[b+468>>2]=~~(o+(o>=0.0?.5:-.5));if(!j){c[J>>2]=c[f>>2];c[J+4>>2]=c[f+4>>2];xG(K,J);I=K;K=c[I+4>>2]|0;b=f;c[b>>2]=c[I>>2];c[b+4>>2]=K;c[J>>2]=c[e>>2];c[J+4>>2]=c[e+4>>2];xG(L,J);b=L;K=c[b+4>>2]|0;L=e;c[L>>2]=c[b>>2];c[L+4>>2]=K}l=M;return}function MG(a,b){a=a|0;b=b|0;var c=0.0;c=+h[b>>3];h[a>>3]=+h[b+8>>3];h[a+8>>3]=c;return}function NG(a,b,d){a=a|0;b=b|0;d=d|0;d=(d<<24>>24)+-66|0;switch(d>>>1|d<<31|0){case 9:{c[b+176>>2]=(c[b+168>>2]|0)+-1;b=0;d=-1;break}case 0:{b=0;d=1;break}case 5:{b=1;d=0;break}case 8:{c[b+172>>2]=(c[b+164>>2]|0)+-1;b=-1;d=0;break}default:{b=0;d=0}}c[a>>2]=b;c[a+4>>2]=d;return}function OG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;f=wx(d,97947)|0;i=b+296|0;c[i>>2]=(f|0)==0?97956:f;d=wx(d,97960)|0;f=b+300|0;d=(d|0)==0?97973:d;c[f>>2]=d;d=p1(c[i>>2]|0,d)|0;if(d|0){c[g>>2]=a[d>>0];Ow(0,97975,g)|0;c[f>>2]=191979}d=m1(e)|0;c[b+304>>2]=d;h=b+308|0;f=0;b=0;while(1){e=j1(d,c[i>>2]|0)|0;if(!e)break;g=b+1|0;if((b|0)<(f|0))d=c[h>>2]|0;else{f=f+128|0;d=c[h>>2]|0;if(!d)d=uH(f<<2)|0;else d=wH(d,f<<2)|0;c[h>>2]=d}c[d+(g<<2)>>2]=e;b=g;d=0}if(b|0){i=wH(c[h>>2]|0,(b<<2)+8|0)|0;c[h>>2]=i;c[i>>2]=0;c[(c[h>>2]|0)+(b+1<<2)>>2]=0}l=j;return b|0}function PG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k;i=a+312|0;d=uH((c[i>>2]<<2)+8|0)|0;e=0;h=1;while(1){g=c[i>>2]|0;if((h|0)>(g|0))break;f=e+1|0;if((eG(a,h,g,b)|0)<<24>>24){c[d+(f<<2)>>2]=h;e=f}h=h+1|0}if(!e){c[j>>2]=b;Ow(0,97846,j)|0;C_(d);d=0}else{c[d>>2]=e;c[d+(e+1<<2)>>2]=(c[i>>2]|0)+1}l=k;return d|0}function QG(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0;d=c[b+16>>2]|0;g=+h[d+16>>3];h[d+48>>3]=g-+h[d+88>>3];e=+h[d+24>>3];f=+h[d+80>>3]*.5;h[d+56>>3]=e-f;h[d+64>>3]=+h[d+96>>3]+g;h[d+72>>3]=f+e;b=Dx(a,b)|0;while(1){if(!b)break;RG(b);b=Fx(a,b)|0}return}function RG(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(a|0)SG(a);return}function SG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=l;l=l+240|0;v=C+192|0;u=C+176|0;w=C+64|0;x=C+32|0;y=C;z=C+144|0;A=C+112|0;B=a+4|0;if((c[B>>2]|0)<=0)qa(98114,96880,3994,98128);b=c[a>>2]|0;d=w;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));d=v;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));TG(x,v);i=x+8|0;j=y+8|0;k=x+16|0;m=y+16|0;n=x+24|0;o=y+24|0;p=w+8|0;q=w+12|0;r=w+32|0;s=w+4|0;t=w+16|0;g=0;while(1){if((g|0)>=(c[B>>2]|0))break;if((g|0)>0){b=(c[a>>2]|0)+(g*48|0)|0;d=w;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));d=v;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));TG(y,v);h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}b=c[p>>2]|0;if(b|0){f=c[w>>2]|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[v>>2]=c[f>>2];c[v+4>>2]=c[f+4>>2];c[v+8>>2]=c[f+8>>2];c[v+12>>2]=c[f+12>>2];IE(z,u,v,1.0,b);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[y+16>>2]=c[z+16>>2];c[y+20>>2]=c[z+20>>2];c[y+24>>2]=c[z+24>>2];c[y+28>>2]=c[z+28>>2];h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}b=c[q>>2]|0;if(b|0){f=(c[w>>2]|0)+((c[s>>2]|0)+-1<<4)|0;c[u>>2]=c[r>>2];c[u+4>>2]=c[r+4>>2];c[u+8>>2]=c[r+8>>2];c[u+12>>2]=c[r+12>>2];c[v>>2]=c[f>>2];c[v+4>>2]=c[f+4>>2];c[v+8>>2]=c[f+8>>2];c[v+12>>2]=c[f+12>>2];IE(A,u,v,1.0,b);c[y>>2]=c[A>>2];c[y+4>>2]=c[A+4>>2];c[y+8>>2]=c[A+8>>2];c[y+12>>2]=c[A+12>>2];c[y+16>>2]=c[A+16>>2];c[y+20>>2]=c[A+20>>2];c[y+24>>2]=c[A+24>>2];c[y+28>>2]=c[A+28>>2];h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}g=g+1|0}B=a+8|0;c[B>>2]=c[x>>2];c[B+4>>2]=c[x+4>>2];c[B+8>>2]=c[x+8>>2];c[B+12>>2]=c[x+12>>2];c[B+16>>2]=c[x+16>>2];c[B+20>>2]=c[x+20>>2];c[B+24>>2]=c[x+24>>2];c[B+28>>2]=c[x+28>>2];l=C;return}function TG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0;n=l;l=l+48|0;i=n+32|0;j=n;k=c[b+4>>2]|0;if((k|0)<=0)qa(98144,96880,3968,98156);if(((k>>>0)%3|0|0)!=1)qa(98166,96880,3969,98156);m=j+16|0;d=c[b>>2]|0;c[m>>2]=c[d>>2];c[m+4>>2]=c[d+4>>2];c[m+8>>2]=c[d+8>>2];c[m+12>>2]=c[d+12>>2];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];e=i+8|0;f=j+8|0;g=j+24|0;b=1;while(1){if((b|0)>=(k|0))break;p=+h[d+(b<<4)+8>>3];t=b+1|0;o=+h[d+(t<<4)+8>>3];r=(+h[d+(t<<4)>>3]+ +h[d+(b<<4)>>3])*.5;h[i>>3]=r;p=(o+p)*.5;h[e>>3]=p;o=+h[(+h[j>>3]>3];h[j>>3]=o;s=+h[(+h[f>>3]>3];h[f>>3]=s;r=+h[(+h[m>>3]>r?m:i)>>3];h[m>>3]=r;p=+h[(+h[g>>3]>p?m:i)+8>>3];h[g>>3]=p;t=d+(b+2<<4)|0;c[i>>2]=c[t>>2];c[i+4>>2]=c[t+4>>2];c[i+8>>2]=c[t+8>>2];c[i+12>>2]=c[t+12>>2];q=+h[i>>3];h[j>>3]=+h[(o>3];o=+h[e>>3];h[f>>3]=+h[(s>3];h[m>>3]=+h[(r>q?m:i)>>3];h[g>>3]=+h[(p>o?m:i)+8>>3];b=b+3|0}c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[a+28>>2]=c[j+28>>2];l=n;return}function UG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0.0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0;q=+h[a>>3];r=+h[c>>3];k=!(q>=r);if((!k?q<=+h[c+16>>3]:0)?(e=+h[a+8>>3],e>=+h[c+8>>3]):0)i=e<=+h[c+24>>3];else i=0;e=+h[b>>3];if((e>=r?e<=+h[c+16>>3]:0)?(f=+h[b+8>>3],f>=+h[c+8>>3]):0){d=f<=+h[c+24>>3];if(!(i^d))if(i&d)d=1;else l=11;else d=0}else if(i)d=0;else l=11;a:do if((l|0)==11){p=+h[a+8>>3];do if(q==e){r=+h[c+8>>3];if(!(k|p>=r^+h[b+8>>3]>=r^1)?q<=+h[c+16>>3]:0){d=0;break a}}else{j=+h[b+8>>3];if(p==j){if(!(q>=r^e>=r))break;if(!(p>=+h[c+8>>3]))break;if(!(p<=+h[c+24>>3]))break;else{d=0;break a}}o=(j-p)/(e-q);l=q>3];if(!(!(r>=g)|!(r<=e)|!(f>=m))?f<=+h[c+24>>3]:0){d=0;break a}n=+h[c+16>>3];f=(n-r)*o+f;if(f>=m?!(!(n<=e)|(n>=g?!(f<=+h[c+24>>3]):1)):0){d=0;break a}l=p=r?!(!(m<=f)|(!(m>=g)|!(e<=n))):0){d=0;break a}p=+h[c+24>>3];q=(p-m)/o+e;if(q>=r?!(!(p<=f)|(!(p>=g)|!(q<=n))):0){d=0;break a}}while(0);d=-1}while(0);return d|0}function VG(a){a=a|0;var b=0,c=0.0;b=a+16|0;c=+h[b>>3];h[a+32>>3]=c;h[a+48>>3]=c;h[a+40>>3]=+h[a+24>>3];h[a+56>>3]=+h[a+8>>3];h[b>>3]=+h[a>>3];return}function WG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;if((c[46360]|0)!=(d|0)){v$(+(d|0)*.15915494309189535,183248,183256);c[46360]=d}g=+h[b>>3];e=+h[22907];f=+h[b+8>>3];i=+h[22906];h[a>>3]=e*g-i*f;h[a+8>>3]=i*g+f*e;return}function XG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0,j=0,k=0;k=l;l=l+16|0;f=k;e=+h[b>>3];i=b+8|0;g=+h[i>>3];a:do switch(d|0){case 0:{j=11;break}case 90:{h[b>>3]=g;e=-e;j=10;break}case 180:{e=-g;j=10;break}case 270:{h[b>>3]=g;j=10;break}default:{if((d|0)<0){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];YG(a,f,0-d|0);break a}if((d|0)>360){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];XG(a,f,(d>>>0)%360|0);break a}else{c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];WG(a,f,d);break a}}}while(0);if((j|0)==10){h[i>>3]=e;j=11}if((j|0)==11){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}l=k;return}function YG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0,j=0,k=0;k=l;l=l+16|0;f=k;e=+h[b>>3];i=b+8|0;g=+h[i>>3];a:do switch(d|0){case 0:{j=11;break}case 90:{h[b>>3]=-g;j=10;break}case 180:{e=-g;j=10;break}case 270:{h[b>>3]=g;j=10;break}default:{if((d|0)<0){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];XG(a,f,0-d|0);break a}if((d|0)>360){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];YG(a,f,(d>>>0)%360|0);break a}else{c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];WG(a,f,360-d|0);break a}}}while(0);if((j|0)==10){h[i>>3]=e;j=11}if((j|0)==11){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}l=k;return}function ZG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;g=+h[c>>3];d=+h[c+8>>3];f=d+ +h[b>>3];e=g+ +h[b+24>>3];d=d+ +h[b+16>>3];h[a>>3]=g+ +h[b+8>>3];h[a+8>>3]=f;h[a+16>>3]=e;h[a+24>>3]=d;return}function _G(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;f=+h[a>>3];d=+h[b>>3]-f;g=+h[a+8>>3];e=+h[b+8>>3]-g;f=(+h[c+8>>3]-g)*d-(+h[c>>3]-f)*e;f=f*f;return +(f<1.0e-10?0.0:f/(e*e+d*d))}function $G(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g+8|0;e=g;a=wx(a,b)|0;if(a|0?(c[f>>2]=e,(M1(a,98183,f)|0)>0):0)h[d>>3]=+h[e>>3];l=g;return}function aH(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;g=n+8|0;i=n;e=tH(96)|0;m=b+16|0;c[(c[m>>2]|0)+8>>2]=e;e=wx(b,98187)|0;if(!e){e=Ta(98196)|0;if(e|0)k=3}else k=3;if((k|0)==3)cb(98208,e|0,1)|0;e=(bH(b)|0)&255;a[(c[m>>2]|0)+115>>0]=e;if(0==0?(e=wx(b,98219)|0,c[46362]=e,(e|0)==0):0)c[46362]=c[46361];f=+KL(b,mx(b,0,98229,0)|0,0.0,0.0);h[c[(c[m>>2]|0)+8>>2]>>3]=f;e=wx(b,98237)|0;a:do if(!e)e=0;else{switch(a[e>>0]|0){case 76:{if(!(a$(e,98245)|0)){e=1;break a}break}case 66:{if(!(a$(e,98248)|0)){e=2;break a}break}case 82:{e=(a$(e,98251)|0)==0;e=e?3:0;break a}default:{e=0;break a}}e=0}while(0);c[(c[m>>2]|0)+116>>2]=e<<2|(d<<24>>24==0?0:e);f=+KL(b,mx(b,0,98254,0)|0,.25,.02);h[i>>3]=f;f=f*72.0;c[(c[m>>2]|0)+248>>2]=~~(f+(f>=0.0?.5:-.5));e=ML(b,mx(b,0,98262,0)|0,0)|0;if(e){c[g>>2]=i;if(M1(e,98183,g)|0){f=+h[i>>3];if(f<.02){h[i>>3]=.02;f=.02}}else{h[i>>3]=.5;f=.5}if(O0(e,98270)|0)a[(c[m>>2]|0)+276>>0]=1}else{h[i>>3]=.5;f=.5}f=f*72.0;c[(c[m>>2]|0)+252>>2]=~~(f+(f>=0.0?.5:-.5));i=(JL(b,mx(b,0,98278,0)|0,0,0)|0)&255;a[(c[m>>2]|0)+243>>0]=i;i=$L(ML(b,mx(b,0,98288,0)|0,0)|0,20572,20588)|0;c[(c[m>>2]|0)+244>>2]=i;cH(b);i=dH(b,98298,(c[(c[m>>2]|0)+8>>2]|0)+64|0)|0;e=c[(c[m>>2]|0)+8>>2]|0;a[e+80>>0]=i;dH(b,98303,e+48|0)|0;e=PL(wx(b,98308)|0)|0;a[(c[(c[m>>2]|0)+8>>2]|0)+82>>0]=e;e=wx(b,98315)|0;do if(!e){e=wx(b,98322)|0;if(e|0){e=(a[e>>0]|32)<<24>>24==108&1;k=27;break}e=wx(b,98334)|0;if(e|0){e=PL(e)|0;k=27}}else{e=($1(e)|0)==90&1;k=27}while(0);if((k|0)==27)a[(c[(c[m>>2]|0)+8>>2]|0)+81>>0]=e;c[46364]=$L(wx(b,98344)|0,20604,20620)|0;a[191874]=PL(wx(b,98356)|0)|0;c[46367]=0;c[46368]=0;h[(c[(c[m>>2]|0)+8>>2]|0)+24>>3]=0.0;e=wx(b,98368)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0)k=32;else k=30;if(((k|0)==30?(j=wx(b,98372)|0,j|0):0)?a[j>>0]|0:0){e=j;k=32}if((k|0)==32){f=+a2(e);h[(c[(c[m>>2]|0)+8>>2]|0)+24>>3]=f}eH(b);h[22910]=1.e+37;c[46370]=mx(b,0,98383,0)|0;c[46373]=mx(b,0,137952,0)|0;c[46374]=mx(b,0,102470,0)|0;c[46375]=mx(b,1,137966,0)|0;c[46376]=mx(b,1,138034,0)|0;c[46377]=mx(b,1,105204,0)|0;c[46378]=mx(b,1,137741,0)|0;c[46379]=mx(b,1,98392,0)|0;c[46387]=mx(b,1,138e3,0)|0;c[46380]=mx(b,1,98402,0)|0;c[46381]=mx(b,1,98411,0)|0;c[46382]=mx(b,1,98420,0)|0;k=mx(b,1,105198,0)|0;c[46384]=k;if(!k)c[46384]=mx(b,1,105198,102467)|0;c[46385]=mx(b,1,98430,0)|0;c[46388]=mx(b,1,98278,0)|0;c[46402]=mx(b,1,98437,0)|0;c[46391]=mx(b,1,98383,0)|0;c[46383]=mx(b,1,102470,0)|0;c[46389]=mx(b,1,137994,0)|0;c[46390]=mx(b,1,98446,0)|0;c[46393]=mx(b,1,98458,0)|0;c[46392]=mx(b,1,98322,0)|0;c[46394]=mx(b,1,98463,0)|0;c[46395]=mx(b,1,137942,0)|0;c[46396]=mx(b,1,134215,0)|0;c[46386]=mx(b,1,98474,0)|0;c[46397]=mx(b,1,98484,0)|0;c[46398]=mx(b,1,98490,0)|0;c[46399]=mx(b,1,98496,0)|0;c[46400]=mx(b,1,98504,0)|0;c[46401]=mx(b,1,98513,0)|0;c[46403]=mx(b,1,137952,0)|0;c[46404]=mx(b,2,98515,0)|0;c[46406]=mx(b,2,137741,0)|0;c[46407]=mx(b,2,98392,0)|0;c[46409]=mx(b,2,98402,0)|0;c[46410]=mx(b,2,98411,0)|0;c[46411]=mx(b,2,98420,0)|0;c[46412]=mx(b,2,105198,0)|0;c[46413]=mx(b,2,98430,0)|0;c[46422]=mx(b,2,98522,0)|0;c[46414]=mx(b,2,98533,0)|0;c[46425]=mx(b,2,98537,0)|0;c[46426]=mx(b,2,98547,0)|0;c[46427]=mx(b,2,98557,0)|0;c[46428]=mx(b,2,98567,0)|0;c[46429]=mx(b,2,98577,0)|0;c[46430]=mx(b,2,98591,0)|0;c[46431]=mx(b,2,98605,0)|0;c[46432]=mx(b,2,98620,0)|0;c[46433]=mx(b,2,98634,0)|0;c[46405]=mx(b,2,98645,0)|0;c[46417]=mx(b,2,98278,0)|0;c[46415]=mx(b,2,138e3,0)|0;c[46416]=mx(b,2,98652,0)|0;c[46418]=mx(b,2,98661,0)|0;c[46419]=mx(b,2,98671,0)|0;c[46420]=mx(b,2,98484,0)|0;c[46421]=mx(b,2,98496,0)|0;c[46434]=mx(b,2,98682,0)|0;c[46435]=mx(b,2,98691,0)|0;c[46436]=mx(b,2,98437,0)|0;e=LE(b)|0;c[(c[(c[m>>2]|0)+8>>2]|0)+88>>2]=e;e=wx(b,137978)|0;if(e|0?a[e>>0]|0:0){b=oH(e,b)|0;c[(c[(c[m>>2]|0)+8>>2]|0)+92>>2]=b}l=n;return}function bH(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;a=NL(a,mx(a,0,98781,0)|0,98789)|0;if(((((((N$(a,98795)|0)!=0?(N$(a,98803)|0)!=0:0)?(N$(a,98810)|0)!=0:0)?(N$(a,98813)|0)!=0:0)?(N$(a,98824)|0)!=0:0)?(N$(a,98835)|0)!=0:0)?(N$(a,98845)|0)!=0:0)if((N$(a,98856)|0)!=0?(N$(a,98862)|0)!=0:0)if((N$(a,98789)|0)!=0?(N$(a,98867)|0)!=0:0){c[b>>2]=a;Ow(0,98872,b)|0;a=0}else a=0;else a=2;else a=1;l=d;return a|0}function cH(b){b=b|0;var d=0.0,e=0,f=0;e=wx(b,98739)|0;a:do if(e|0?(f=a[e>>0]|0,f<<24>>24):0)switch(f<<24>>24|0){case 97:{if(f<<24>>24!=97)break a;if(a$(e,98745)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=4;break a}case 99:{if(f<<24>>24!=99)break a;if(a$(e,98750)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=3;break a}case 101:{if(f<<24>>24!=101)break a;if(a$(e,98759)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=5;break a}case 102:{if(f<<24>>24!=102)break a;if(a$(e,98766)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=2;break a}default:{d=+a2(e);if(!(d>0.0))break a;b=c[(c[b+16>>2]|0)+8>>2]|0;c[b+84>>2]=1;h[b+16>>3]=d;break a}}while(0);return}function dH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+48|0;m=o+32|0;i=o+16|0;k=o+8|0;j=o;n=o+40|0;a[n>>0]=0;b=wx(b,d)|0;do if(b){c[i>>2]=k;c[i+4>>2]=j;c[i+8>>2]=n;i=(M1(b,98723,i)|0)>1;g=+h[k>>3];f=+h[j>>3];if(i&g>0.0&f>0.0){g=g*72.0;h[e>>3]=+(~~(g+(g>=0.0?.5:-.5))|0);g=f*72.0;h[e+8>>3]=+(~~(g+(g>=0.0?.5:-.5))|0);b=(a[n>>0]|0)==33;break}a[n>>0]=0;c[m>>2]=k;c[m+4>>2]=n;m=(M1(b,98733,m)|0)>0;f=+h[k>>3];if(m&f>0.0){g=f*72.0;g=+(~~(g+(g>=0.0?.5:-.5))|0);h[e>>3]=g;h[e+8>>3]=g;b=(a[n>>0]|0)==33}else b=0}else b=0;while(0);l=o;return b&1|0}function eH(b){b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0;d=wx(b,105198)|0;do if(d|0?a[d>>0]|0:0){e=(c[(c[b+60>>2]|0)+16>>2]|0)+113|0;a[e>>0]=a[e>>0]|8;e=(Qz(d)|0)!=0;g=+KL(b,mx(b,0,98402,0)|0,14.0,1.0);i=NL(b,mx(b,0,98411,0)|0,104968)|0;d=jH(b,d,e?2:0,g,i,NL(b,mx(b,0,98420,0)|0,134232)|0)|0;i=b+16|0;c[(c[i>>2]|0)+12>>2]=d;d=wx(b,102602)|0;e=(d|0)!=0;do if((ez(b)|0)==(b|0)){if(e?(a[d>>0]|0)==116:0){d=1;break}d=0}else{if(e?(a[d>>0]|0)==98:0){d=0;break}d=1}while(0);e=wx(b,98700)|0;a:do if(e)switch(a[e>>0]|0){case 108:{d=d|2;break a}case 114:{d=d|4;break a}default:break a}while(0);a[(c[i>>2]|0)+275>>0]=d;if((ez(b)|0)!=(b|0)){d=c[(c[i>>2]|0)+12>>2]|0;f=+h[d+24>>3]+16.0;g=+h[d+32>>3]+8.0;b=(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1|0)==0;d=c[i>>2]|0;e=a[d+275>>0]<<1&2;if(b){b=e&255;h[d+48+(b<<4)>>3]=f;h[d+48+(b<<4)+8>>3]=g;break}else{b=(e^3)&255;h[d+48+(b<<4)>>3]=g;h[d+48+(b<<4)+8>>3]=f;break}}}while(0);return}function fH(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;d=c[e>>2]|0;b=c[d+8>>2]|0;do if(!b)b=d;else{d=c[b+88>>2]|0;if(d){oE(d);d=c[e>>2]|0;b=c[d+8>>2]|0;if(!b){b=d;break}}C_(c[b+92>>2]|0);b=c[e>>2]|0}while(0);C_(c[b+8>>2]|0);e=c[e>>2]|0;c[e+8>>2]=0;mH(c[e+12>>2]|0);Fz(a,0,134401);return}function gH(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;switch(a|0){case 0:{a=98945;break}case 1:{a=98813;break}case 2:{a=98951;break}default:{c[b>>2]=a;Ow(1,98915,b)|0;a=98945}}l=d;return a|0}function hH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=c[d>>2]|0;l=d+24|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;if(a[f>>0]|0){i=uH((V_(f)|0)+1|0)|0;a[i>>0]=0;j=d+12|0;e=i;a:while(1){b:while(1){h=f+1|0;g=a[f>>0]|0;if(!(g<<24>>24))break a;if(!(g<<24>>24==-1|((g&255)<161|(c[j>>2]|0)!=2))){a[e>>0]=g;h=a[h>>0]|0;g=e+2|0;a[e+1>>0]=h;if(!(h<<24>>24)){e=g;break a}else{e=g;f=f+2|0;continue}}switch(g<<24>>24){case 92:break b;case 10:{k=12;break b}default:{}}a[e>>0]=g;e=e+1|0;f=h}if((k|0)==12){k=0;f=e+1|0;a[e>>0]=0;iH(b,d,i,110);e=f;i=f;f=h;continue}g=a[h>>0]|0;switch(g<<24>>24|0){case 114:case 108:case 110:{g=e+1|0;a[e>>0]=0;iH(b,d,i,a[h>>0]|0);e=g;break}default:{a[e>>0]=g;e=e+1|0;g=i}}i=g;f=(a[h>>0]|0)==0?h:f+2|0}if((i|0)!=(e|0)){a[e>>0]=0;iH(b,d,i,110)}d=d+40|0;c[d>>2]=c[l>>2];c[d+4>>2]=c[l+4>>2];c[d+8>>2]=c[l+8>>2];c[d+12>>2]=c[l+12>>2]}return}function iH(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+32|0;q=s+16|0;p=s;r=e+76|0;k=b[r>>1]|0;o=e+72|0;m=c[o>>2]|0;if(!m)n=tH((k*56|0)+112|0)|0;else n=vH(m,k+2|0,56,k+1|0)|0;c[o>>2]=n;k=b[r>>1]|0;m=n+(k*56|0)|0;c[m>>2]=f;a[n+(k*56|0)+48>>0]=g;if((f|0)!=0?(a[f>>0]|0)!=0:0){c[45824]=c[e+4>>2];h[22914]=+h[e+16>>3];g=c[d+144>>2]|0;c[n+(k*56|0)+4>>2]=nb[c[g>>2]&63](g,183296,1)|0;vL(p,d,m);j=+h[p>>3];h[q>>3]=j;i=+h[p+8>>3]}else{h[q>>3]=0.0;i=+(~~(+h[e+16>>3]*1.2)|0);h[n+(k*56|0)+40>>3]=i;j=0.0}b[r>>1]=(b[r>>1]|0)+1<<16>>16;r=e+24|0;h[r>>3]=+h[(+h[r>>3]>j?r:q)>>3];r=e+32|0;h[r>>3]=+h[r>>3]+i;l=s;return}function jH(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+32|0;r=u+16|0;q=u+8|0;p=u;t=tH(88)|0;switch(oz(b)|0){case 0:{m=0;s=c[b+60>>2]|0;n=b;o=0;break}case 1:{m=0;s=ez(dz(b)|0)|0;n=0;o=b;break}case 2:{m=b;s=ez(dz(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)|0;n=0;o=0;break}default:{m=0;s=0;n=0;o=0}}c[t+4>>2]=i;c[t+8>>2]=j;h[t+16>>3]=g;k=s+16|0;j=t+12|0;c[j>>2]=d[(c[k>>2]|0)+115>>0];a:do if(f&4){c[t>>2]=m1(e)|0;if(f&2|0)a[t+82>>0]=1}else switch(f|0){case 2:{c[t>>2]=m1(e)|0;a[t+82>>0]=1;if(!(jR(b,t)|0))break a;switch(oz(b)|0){case 0:{c[p>>2]=qy(n)|0;Ow(3,98957,p)|0;break a}case 1:{c[q>>2]=qy(o)|0;Ow(3,98979,q)|0;break a}case 2:{p=qy(c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0)|0;q=(dy(s)|0)!=0;s=qy(c[((c[m>>2]&3|0)==2?m:m+-48|0)+40>>2]|0)|0;c[r>>2]=p;c[r+4>>2]=q?134656:138665;c[r+8>>2]=s;Ow(3,99e3,r)|0;break a}default:break a}}case 0:{i=kH(e,b,0)|0;c[t>>2]=i;if((c[j>>2]|0)==1)i=QM(i)|0;else i=NM(i,s)|0;C_(c[t>>2]|0);c[t>>2]=i;hH(c[(c[k>>2]|0)+144>>2]|0,t);break a}default:qa(99027,99043,166,99052)}while(0);l=u;return t|0}function kH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;switch(oz(d)|0){case 0:{i=qy(d)|0;g=V_(i)|0;f=c[(c[d+16>>2]|0)+12>>2]|0;if(f){f=c[f>>2]|0;if(!b){v=0;t=2;u=2;s=2;h=2;y=99075;m=99072;j=102467;o=191979;q=191979;p=0;r=0;n=2;w=f;x=99069}else{v=0;t=2;u=2;s=2;h=2;y=99075;m=99072;j=102467;o=191979;q=191979;p=0;r=0;n=V_(f)|0;w=f;x=99069}}else{v=0;t=2;u=2;s=2;h=2;y=99075;m=99072;j=102467;o=191979;q=191979;p=0;r=0;n=2;w=99063;x=99069}break}case 1:{i=qy(dz(d)|0)|0;g=V_(i)|0;j=qy(d)|0;h=V_(j)|0;f=c[(c[d+16>>2]|0)+104>>2]|0;if(f){f=c[f>>2]|0;if(!b){v=0;t=2;u=2;s=2;y=99075;m=99072;o=191979;q=191979;p=0;r=0;n=2;w=f;x=99069}else{v=0;t=2;u=2;s=2;y=99075;m=99072;o=191979;q=191979;p=0;r=0;n=V_(f)|0;w=f;x=99069}}else{v=0;t=2;u=2;s=2;y=99075;m=99072;o=191979;q=191979;p=0;r=0;n=2;w=99063;x=99069}break}case 2:{h=d+48|0;i=qy(ez(dz(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0)|0)|0;g=V_(i)|0;l=qy(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0;k=V_(l)|0;f=d+16|0;q=c[(c[f>>2]|0)+52>>2]|0;if(!q)r=0;else r=V_(q)|0;m=qy(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;f=c[f>>2]|0;o=c[f+92>>2]|0;if(!o)p=0;else p=V_(o)|0;j=V_(m)|0;f=c[f+96>>2]|0;if(f){f=c[f>>2]|0;if(!b)n=2;else n=V_(f)|0}else{n=2;f=99063}x=(dy(ez(dz(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0)|0)|0)==0;v=1;t=k;u=j;s=k+2+(r|0?r+1|0:0)+j+(p|0?p+1|0:0)|0;h=2;y=l;j=102467;w=f;x=x?138665:134656;break}default:{v=0;t=2;u=2;s=2;h=2;g=2;y=99075;m=99072;j=102467;i=99066;o=191979;q=191979;p=0;r=0;n=2;w=99063;x=99069}}e=(e|0)==0;l=0;f=b;a:while(1){d=f+1|0;b:do switch(a[f>>0]|0){case 0:break a;case 92:{f=f+2|0;switch(a[d>>0]|0){case 78:{k=h;break b}case 71:{k=g;break b}case 69:{k=s;break b}case 72:{k=u;break b}case 84:{k=t;break b}case 76:{k=n;break b}case 92:{if(!e){k=1;break b}break}default:{}}k=2;break}default:{k=1;f=d}}while(0);l=l+k|0}s=uH(l+1|0)|0;n=(v|0)==0;l=(r|0)==0;d=(p|0)==0;f=s;g=b;c:while(1){k=g+1|0;h=a[g>>0]|0;switch(h<<24>>24){case 0:break c;case 92:break;default:{a[f>>0]=h;f=f+1|0;g=k;continue c}}h=g+2|0;g=a[k>>0]|0;switch(g<<24>>24|0){case 71:{g=i;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}g=g+1|0;f=f+1|0}}case 78:{g=j;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}g=g+1|0;f=f+1|0}}case 69:{if(n){g=h;continue c}else g=y;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24))break;g=g+1|0;f=f+1|0}if(l)g=x;else{a[f>>0]=58;g=q;while(1){f=f+1|0;b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=x;break}else g=g+1|0}}while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=m;break}g=g+1|0;f=f+1|0}while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24))break;g=g+1|0;f=f+1|0}if(d){g=h;continue c}a[f>>0]=58;g=o;while(1){f=f+1|0;b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}else g=g+1|0}}case 84:{g=y;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}g=g+1|0;f=f+1|0}}case 72:{g=m;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}f=f+1|0;g=g+1|0}}case 76:{g=w;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}f=f+1|0;g=g+1|0}}case 92:{if(!e){a[f>>0]=92;f=f+1|0;g=h;continue c}break}default:{}}a[f>>0]=92;a[f+1>>0]=g;f=f+2|0;g=h}a[f>>0]=0;return s|0}function lH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(a|0){d=a;e=0;while(1){if((e|0)>=(b|0))break;if(!e)C_(c[d>>2]|0);g=c[d+8>>2]|0;if(g|0?(f=c[d+12>>2]|0,f|0):0)tb[f&127](g);d=d+56|0;e=e+1|0}C_(a)}return}function mH(d){d=d|0;var e=0;if(d|0){C_(c[d>>2]|0);e=d+72|0;if(a[d+82>>0]|0){e=c[e>>2]|0;if(e|0)WQ(e,1)}else lH(c[e>>2]|0,b[d+76>>1]|0);C_(d)}return}function nH(d,e,f){d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+32|0;q=u+16|0;r=u;k=c[d+16>>2]|0;s=k+12|0;t=c[s>>2]|0;c[s>>2]=e;if(!(a[f+82>>0]|0)){p=f+76|0;if((b[p>>1]|0)>=1){QO(d,0);TO(d,c[f+8>>2]|0);switch(a[f+80>>0]|0){case 116:{j=+h[f+64>>3];g=+h[f+48>>3]*.5+j;break}case 98:{j=+h[f+64>>3];g=+h[f+48>>3]*-.5+j+ +h[f+32>>3];break}default:{j=+h[f+64>>3];g=+h[f+32>>3]*.5+j}}g=g-+h[f+16>>3];o=r+8|0;h[o>>3]=g;if(b[k+260>>1]&512)h[o>>3]=g-j;m=f+72|0;n=f+56|0;i=f+40|0;e=0;while(1){if((e|0)>=(b[p>>1]|0))break;k=c[m>>2]|0;switch(a[k+(e*56|0)+48>>0]|0){case 108:{g=+h[n>>3]-+h[i>>3]*.5;break}case 114:{g=+h[i>>3]*.5+ +h[n>>3];break}default:g=+h[n>>3]}h[r>>3]=g;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];SO(d,q,k+(e*56|0)|0);h[o>>3]=+h[o>>3]-+h[(c[m>>2]|0)+(e*56|0)+40>>3];e=e+1|0}RO(d);i=18}}else{BQ(d,c[f+72>>2]|0,f);i=18}if((i|0)==18)c[s>>2]=t;l=u;return}function oH(a,b){a=a|0;b=b|0;return kH(a,b,1)|0}function pH(a){a=a|0;return qH(a,0)|0}function qH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[46437]|0;if(!e){c[46438]=64;e=uH(64)|0;c[46437]=e}j=d<<24>>24==0;i=0;f=0;h=b;while(1){if(!h)break;d=a[h>>0]|0;if(!(d<<24>>24))break;b=c[46438]|0;if((i|0)>(b+-8|0)){e=b<<1;c[46438]=e;e=wH(c[46437]|0,e)|0;c[46437]=e;e=e+i|0;d=a[h>>0]|0}a:do switch(d<<24>>24){case 38:{if(j?(rH(h)|0)!=0:0)k=18;else{f=5;d=99104}break}case 60:{f=4;d=99127;break}case 62:{f=4;d=99110;break}case 45:{f=5;d=99121;break}default:{if((f|0)!=0&d<<24>>24==32)if((a[f>>0]|0)==32){f=6;d=99097;break a}else{k=18;break a}switch(d<<24>>24){case 34:{f=6;d=99090;break a}case 39:{f=5;d=99115;break a}case 10:if(j){k=18;break a}else{f=5;d=99084;break a}default:{k=18;break a}}}}while(0);if((k|0)==18){k=0;d=j|d<<24>>24!=13;f=d?1:5;d=d?h:99078}g=e+f|0;b=f;while(1){if(!b)break;a[e>>0]=a[d>>0]|0;b=b+-1|0;d=d+1|0;e=e+1|0}b=h;i=f+i|0;e=g;h=h+1|0;f=b}a[e>>0]=0;return c[46437]|0}function rH(b){b=b|0;var c=0,d=0;d=b+1|0;c=a[d>>0]|0;a:do if(c<<24>>24==35){d=b+2|0;c=a[d>>0]|0;switch(c<<24>>24){case 88:case 120:break;default:{b=d;while(1){d=b+1|0;if((c+-48&255)>=10)break a;b=d;c=a[d>>0]|0}}}d=b+3|0;while(1){c=a[d>>0]|0;if((c+-48&255)>=10)switch(c<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break a}d=d+1|0}}else while(1){b=d+1|0;if(((c&-33)+-65&255)>=26)break a;d=b;c=a[b>>0]|0}while(0);return c<<24>>24==59|0}function sH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=c[46439]|0;if(!d){c[46440]=64;d=uH(64)|0;c[46439]=d;i=0}else i=0;while(1){if(!b)break;e=a[b>>0]|0;if(!(e<<24>>24))break;f=c[46440]|0;if((i|0)>(f+-8|0)){d=f<<1;c[46440]=d;d=wH(c[46439]|0,d)|0;c[46439]=d;d=d+i|0;e=a[b>>0]|0}switch(e<<24>>24){case 38:{if(!(rH(b)|0)){g=5;e=99104}else j=12;break}case 60:{g=4;e=99127;break}case 62:{g=4;e=99110;break}case 34:{g=6;e=99090;break}case 39:{g=5;e=99115;break}default:j=12}if((j|0)==12){j=0;g=1;e=b}h=d+g|0;f=g;while(1){if(!f)break;a[d>>0]=a[e>>0]|0;f=f+-1|0;e=e+1|0;d=d+1|0}i=g+i|0;d=h;b=b+1|0}a[d>>0]=0;return c[46439]|0}function tH(a){a=a|0;var b=0;if(!a)a=0;else{b=uH(a)|0;G3(b|0,0,a|0)|0;a=b}return a|0}function uH(a){a=a|0;if(a){a=B_(a)|0;if(!a){D1(108658,14,1,c[15686]|0)|0;a=0}}else a=0;return a|0}function vH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=E_(a,O(d,b)|0)|0;if(!((b|0)!=0&(a|0)==0)){if(b>>>0>e>>>0)G3(a+(O(e,d)|0)|0,0,O(b-e|0,d)|0)|0}else D1(108658,14,1,c[15686]|0)|0;return a|0}function wH(a,b){a=a|0;b=b|0;a=E_(a,b)|0;if((b|0)!=0&(a|0)==0)D1(108658,14,1,c[15686]|0)|0;return a|0} +function nl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=l;l=l+320|0;H=M+296|0;G=M+280|0;x=M+136|0;w=M+120|0;n=M+104|0;i=M+88|0;f=M+80|0;E=M+16|0;z=M;j=M+264|0;k=M+248|0;m=M+232|0;o=M+216|0;A=M+200|0;B=M+184|0;y=M+168|0;D=M+152|0;g=ol(wx(a,87703)|0,b)|0;q=ol(wx(a,87709)|0,b)|0;r=(q|0)!=0;b=(g|0)!=0;do if(b|r?(L=a+16|0,e=c[(c[L>>2]|0)+8>>2]|0,e|0):0){if((c[e+4>>2]|0)>1){K=qy(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)|0;L=qy(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)|0;c[f>>2]=K;c[f+4>>2]=L;Ow(0,87715,f)|0;break}I=c[e>>2]|0;e=c[I+4>>2]|0;p=c[a>>2]&3;s=a+-48|0;t=c[((p|0)==2?a:s)+40>>2]|0;u=a+48|0;p=c[((p|0)==3?a:u)+40>>2]|0;J=uH(48)|0;v=I+12|0;c[J+12>>2]=c[v>>2];C=I+8|0;c[J+8>>2]=c[C>>2];do if(b){h=(c[g+16>>2]|0)+16|0;g=(c[t+16>>2]|0)+16|0;c[H>>2]=c[g>>2];c[H+4>>2]=c[g+4>>2];c[H+8>>2]=c[g+8>>2];c[H+12>>2]=c[g+12>>2];if(!(pl(H,h)|0)){o=qy(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;F=qy(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=wx(a,87703)|0;c[i>>2]=o;c[i+4>>2]=F;c[i+8>>2]=K;Ow(0,87756,i)|0;K=26;break}b=c[I>>2]|0;c[H>>2]=c[b>>2];c[H+4>>2]=c[b+4>>2];c[H+8>>2]=c[b+8>>2];c[H+12>>2]=c[b+12>>2];if(pl(H,h)|0){F=(c[p+16>>2]|0)+16|0;c[H>>2]=c[F>>2];c[H+4>>2]=c[F+4>>2];c[H+8>>2]=c[F+8>>2];c[H+12>>2]=c[F+12>>2];if(pl(H,h)|0){o=qy(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;F=qy(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=wx(a,87703)|0;c[n>>2]=o;c[n+4>>2]=F;c[n+8>>2]=K;Ow(0,87799,n)|0;K=26;break}if(!(c[C>>2]|0))qa(87841,87852,369,87863);o=I+16|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[o>>2];c[H+4>>2]=c[o+4>>2];c[H+8>>2]=c[o+8>>2];c[H+12>>2]=c[o+12>>2];ql(z,G,H,h);F=(c[I>>2]|0)+48|0;c[F>>2]=c[z>>2];c[F+4>>2]=c[z+4>>2];c[F+8>>2]=c[z+8>>2];c[F+12>>2]=c[z+12>>2];F=(c[I>>2]|0)+16|0;c[G>>2]=c[z>>2];c[G+4>>2]=c[z+4>>2];c[G+8>>2]=c[z+8>>2];c[G+12>>2]=c[z+12>>2];c[H>>2]=c[o>>2];c[H+4>>2]=c[o+4>>2];c[H+8>>2]=c[o+8>>2];c[H+12>>2]=c[o+12>>2];rl(j,G,H);c[F>>2]=c[j>>2];c[F+4>>2]=c[j+4>>2];c[F+8>>2]=c[j+8>>2];c[F+12>>2]=c[j+12>>2];F=c[I>>2]|0;b=F+16|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[o>>2];c[H+4>>2]=c[o+4>>2];c[H+8>>2]=c[o+8>>2];c[H+12>>2]=c[o+12>>2];rl(k,G,H);c[F>>2]=c[k>>2];c[F+4>>2]=c[k+4>>2];c[F+8>>2]=c[k+8>>2];c[F+12>>2]=c[k+12>>2];F=c[I>>2]|0;b=F+32|0;F=F+16|0;c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[H>>2]=c[z>>2];c[H+4>>2]=c[z+4>>2];c[H+8>>2]=c[z+8>>2];c[H+12>>2]=c[z+12>>2];rl(m,G,H);c[b>>2]=c[m>>2];c[b+4>>2]=c[m+4>>2];c[b+8>>2]=c[m+8>>2];c[b+12>>2]=c[m+12>>2];b=c[v>>2]|0;if(!b){F=3;break}F=(EE(a,c[I>>2]|0,0,0,J,b)|0)+3|0;break}g=e+-1|0;b=0;while(1){if((b|0)>=(g|0))break;if(sl((c[I>>2]|0)+(b<<4)|0,h)|0)break;b=b+3|0}e=c[v>>2]|0;f=(e|0)!=0;if((b|0)==(g|0))if(f){F=J+32|0;m=I+32|0;n=(c[I>>2]|0)+(g<<4)|0;c[G>>2]=c[m>>2];c[G+4>>2]=c[m+4>>2];c[G+8>>2]=c[m+8>>2];c[G+12>>2]=c[m+12>>2];c[H>>2]=c[n>>2];c[H+4>>2]=c[n+4>>2];c[H+8>>2]=c[n+8>>2];c[H+12>>2]=c[n+12>>2];ql(o,G,H,h);c[F>>2]=c[o>>2];c[F+4>>2]=c[o+4>>2];c[F+8>>2]=c[o+8>>2];c[F+12>>2]=c[o+12>>2];F=g;break}else qa(87880,87852,387,87863);else{if(f)b=EE(a,c[I>>2]|0,0,b,J,e)|0;F=b+3|0;break}}else K=26;while(0);if((K|0)==26){b=e+-1|0;if(!(c[v>>2]|0))F=b;else{F=J+32|0;o=I+32|0;c[F>>2]=c[o>>2];c[F+4>>2]=c[o+4>>2];c[F+8>>2]=c[o+8>>2];c[F+12>>2]=c[o+12>>2];F=b}}do if(r){f=(c[q+16>>2]|0)+16|0;r=(c[p+16>>2]|0)+16|0;c[H>>2]=c[r>>2];c[H+4>>2]=c[r+4>>2];c[H+8>>2]=c[r+8>>2];c[H+12>>2]=c[r+12>>2];if(!(pl(H,f)|0)){G=qy(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;H=qy(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=wx(a,87709)|0;c[w>>2]=G;c[w+4>>2]=H;c[w+8>>2]=K;Ow(0,87891,w)|0;K=52;break}b=(c[I>>2]|0)+(F<<4)|0;c[H>>2]=c[b>>2];c[H+4>>2]=c[b+4>>2];c[H+8>>2]=c[b+8>>2];c[H+12>>2]=c[b+12>>2];if(pl(H,f)|0){E=(c[t+16>>2]|0)+16|0;c[H>>2]=c[E>>2];c[H+4>>2]=c[E+4>>2];c[H+8>>2]=c[E+8>>2];c[H+12>>2]=c[E+12>>2];if(pl(H,f)|0){G=qy(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;H=qy(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=wx(a,87709)|0;c[x>>2]=G;c[x+4>>2]=H;c[x+8>>2]=K;Ow(0,87934,x)|0;K=52;break}if(!(c[v>>2]|0))qa(87880,87852,429,87863);x=J+32|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];ql(z,G,H,f);d=F+-3|0;E=(c[I>>2]|0)+(d<<4)|0;c[E>>2]=c[z>>2];c[E+4>>2]=c[z+4>>2];c[E+8>>2]=c[z+8>>2];c[E+12>>2]=c[z+12>>2];E=F+-1|0;b=(c[I>>2]|0)+(E<<4)|0;c[G>>2]=c[z>>2];c[G+4>>2]=c[z+4>>2];c[G+8>>2]=c[z+8>>2];c[G+12>>2]=c[z+12>>2];c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];rl(A,G,H);c[b>>2]=c[A>>2];c[b+4>>2]=c[A+4>>2];c[b+8>>2]=c[A+8>>2];c[b+12>>2]=c[A+12>>2];b=c[I>>2]|0;D=b+(F<<4)|0;b=b+(E<<4)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];rl(B,G,H);c[D>>2]=c[B>>2];c[D+4>>2]=c[B+4>>2];c[D+8>>2]=c[B+8>>2];c[D+12>>2]=c[B+12>>2];D=c[I>>2]|0;b=D+(F+-2<<4)|0;E=D+(E<<4)|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];c[H>>2]=c[z>>2];c[H+4>>2]=c[z+4>>2];c[H+8>>2]=c[z+8>>2];c[H+12>>2]=c[z+12>>2];rl(y,G,H);c[b>>2]=c[y>>2];c[b+4>>2]=c[y+4>>2];c[b+8>>2]=c[y+8>>2];c[b+12>>2]=c[y+12>>2];b=c[C>>2]|0;if(!b)break;d=GE(a,c[I>>2]|0,d,d,J,b)|0;break}e=F;while(1){if((e|0)>0)b=0;else break;while(1){if((b|0)==4)break;B=E+(b<<4)|0;A=(c[I>>2]|0)+(e-b<<4)|0;c[B>>2]=c[A>>2];c[B+4>>2]=c[A+4>>2];c[B+8>>2]=c[A+8>>2];c[B+12>>2]=c[A+12>>2];b=b+1|0}if(sl(E,f)|0){b=0;K=43;break}e=e+-3|0}a:do if((K|0)==43)while(1){K=0;if((b|0)==4)break a;K=(c[I>>2]|0)+(e-b<<4)|0;B=E+(b<<4)|0;c[K>>2]=c[B>>2];c[K+4>>2]=c[B+4>>2];c[K+8>>2]=c[B+8>>2];c[K+12>>2]=c[B+12>>2];b=b+1|0;K=43}while(0);if(e|0){d=e+-3|0;b=c[C>>2]|0;if(!b)break;d=GE(a,c[I>>2]|0,d,F+-3|0,J,b)|0;break}if(!(c[C>>2]|0))qa(87841,87852,452,87863);else{d=J+16|0;E=I+16|0;a=c[I>>2]|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];c[H>>2]=c[a>>2];c[H+4>>2]=c[a+4>>2];c[H+8>>2]=c[a+8>>2];c[H+12>>2]=c[a+12>>2];ql(D,G,H,f);c[d>>2]=c[D>>2];c[d+4>>2]=c[D+4>>2];c[d+8>>2]=c[D+8>>2];c[d+12>>2]=c[D+12>>2];d=0;break}}else K=52;while(0);if((K|0)==52)if(!(c[C>>2]|0))d=0;else{d=J+16|0;K=I+16|0;c[d>>2]=c[K>>2];c[d+4>>2]=c[K+4>>2];c[d+8>>2]=c[K+8>>2];c[d+12>>2]=c[K+12>>2];d=0}b=F-d+1|0;e=J+4|0;c[e>>2]=b;c[J>>2]=uH(b<<4)|0;b=0;while(1){if((b|0)>=(c[e>>2]|0))break;K=(c[J>>2]|0)+(b<<4)|0;a=(c[I>>2]|0)+(d<<4)|0;c[K>>2]=c[a>>2];c[K+4>>2]=c[a+4>>2];c[K+8>>2]=c[a+8>>2];c[K+12>>2]=c[a+12>>2];d=d+1|0;b=b+1|0}C_(c[I>>2]|0);C_(I);c[c[(c[L>>2]|0)+8>>2]>>2]=J}while(0);l=M;return}function ol(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if((b|0)!=0?(a[b>>0]|0)!=0:0){d=uM(d,b)|0;if(!d){c[e>>2]=b;Ow(0,88054,e)|0;d=0}}else d=0;l=f;return d|0}function pl(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[a>>3];if((+h[b>>3]<=d?d<=+h[b+16>>3]:0)?(c=+h[a+8>>3],+h[b+8>>3]<=c):0)a=c<=+h[b+24>>3]&1;else a=0;return a|0}function ql(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0;C=l;l=l+464|0;n=C+48|0;B=C+32|0;u=C+16|0;v=C;w=C+364|0;x=C+264|0;z=C+164|0;A=C+64|0;q=+h[b>>3];r=+h[b+8>>3];s=+h[d>>3];t=+h[d+8>>3];c[u>>2]=c[e>>2];c[u+4>>2]=c[e+4>>2];c[u+8>>2]=c[e+8>>2];c[u+12>>2]=c[e+12>>2];e=e+16|0;c[v>>2]=c[e>>2];c[v+4>>2]=c[e+4>>2];c[v+8>>2]=c[e+8>>2];c[v+12>>2]=c[e+12>>2];k=+h[u>>3];if((s=+h[u+8>>3]):0)?f<=+h[v+8>>3]:0){o=f;p=k}else i=4;do if((i|0)==4){j=+h[v>>3];if(s>j){g=r+ +(~~((j-q)*(r-t)/(q-s))|0);f=+h[u+8>>3];if(g>=f?g<=+h[v+8>>3]:0){o=g;p=j;break}}else f=+h[u+8>>3];if(t=k)|!(m<=j))):0){o=f;p=m;break}f=+h[v+8>>3];if(t>f?(y=q+ +(~~((f-r)*(q-s)/(r-t))|0),!(!(y>=k)|!(y<=j))):0){o=f;p=y;break};c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];w=xl(n,w)|0;c[n>>2]=c[d>>2];c[n+4>>2]=c[d+4>>2];c[n+8>>2]=c[d+8>>2];c[n+12>>2]=c[d+12>>2];x=xl(n,x)|0;c[n>>2]=c[u>>2];c[n+4>>2]=c[u+4>>2];c[n+8>>2]=c[u+8>>2];c[n+12>>2]=c[u+12>>2];z=xl(n,z)|0;c[n>>2]=c[v>>2];c[n+4>>2]=c[v+4>>2];c[n+8>>2]=c[v+8>>2];c[n+12>>2]=c[v+12>>2];A=xl(n,A)|0;c[B>>2]=w;c[B+4>>2]=x;c[B+8>>2]=z;c[B+12>>2]=A;Ow(1,87976,B)|0;qa(135312,87852,78,88028)}while(0);h[a>>3]=p;h[a+8>>3]=o;l=C;return}function rl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function sl(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+80|0;j=m+16|0;k=m;e=0;while(1){if((e|0)==4)break;i=j+(e<<4)|0;g=a+(e<<4)|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];e=e+1|0}e=b+8|0;i=b+24|0;d=+tl(a,0.0,1.0,+h[b>>3],+h[e>>3],+h[i>>3]);if(d>=0.0&d<2.0)WL(k,j,3,d,a,0);else d=2.0;g=b+16|0;f=+tl(a,0.0,d>1.0?1.0:d,+h[g>>3],+h[e>>3],+h[i>>3]);if(f>=0.0&f1.0?1.0:d,+h[e>>3],+h[b>>3],+h[g>>3]);if(f>=0.0&f1.0?1.0:d,+h[i>>3],+h[b>>3],+h[g>>3]);if(f>=0.0&f>3]-d))<=.005){b=+h[a+56>>3];b=!(b>=e)|!(b<=f)?-1.0:c;break a}break}default:{}}WL(i,a,3,.5,j,k);g=(c+b)*.5;b=+tl(j,b,g,d,e,f);if(!(b>=0.0))b=+tl(k,g,c,d,e,f)}while(0);l=m;return +b}function ul(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0.0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m+80|0;k=m+16|0;i=m;a:do if(!(b==c)){switch(vl(a,d)|0){case 0:{b=-1.0;break a}case 1:{if(+B(+(+h[a+56>>3]-d))<=.005){b=+h[a+48>>3];b=!(b>=e)|!(b<=f)?-1.0:c;break a}break}default:{}}WL(i,a,3,.5,j,k);g=(c+b)*.5;b=+ul(j,b,g,d,e,f);if(!(b>=0.0))b=+ul(k,g,c,d,e,f)}while(0);l=m;return +b}function vl(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0,g=0,i=0;f=+h[a+8>>3];e=fb&1;c=1;d=e;e=(e|0)==0&1;while(1){if((c|0)==4)break;f=+h[a+(c<<4)+8>>3];i=fb&1;g=e+((d|0)!=0&(i|0)!=(d|0)&1)|0;c=c+1|0;d=i;e=g}return e|0}function wl(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0,g=0,i=0;f=+h[a>>3];e=fb&1;c=1;d=e;e=(e|0)==0&1;while(1){if((c|0)==4)break;f=+h[a+(c<<4)>>3];i=fb&1;g=e+((d|0)!=0&(i|0)!=(d|0)&1)|0;c=c+1|0;d=i;e=g}return e|0}function xl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=l;l=l+16|0;d=c;e=+h[a+8>>3];h[d>>3]=+h[a>>3];h[d+8>>3]=e;X0(b,88042,d)|0;l=c;return b|0}function yl(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;s=v;u=4;t=B_(40)|0;c[t>>2]=0;r=a+16|0;e=c[r>>2]|0;a:do if(((b[e+238>>1]|0)-(b[e+236>>1]|0)|0)>=2){m=1;d=e;e=c[e+196>>2]|0;b:while(1){n=m+1|0;if(!(c[e+(n<<6)>>2]|0)){q=15;break}else k=0;while(1){h=c[e+(m<<6)>>2]|0;if((k|0)>=(h|0)){m=n;continue b}j=c[(c[e+(m<<6)+4>>2]|0)+(k<<2)>>2]|0;o=0;d=$(20,j|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,u|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;break b}if(d<<24>>24){i=k;d=h;while(1){g=i+1|0;if((g|0)>=(d|0))break;o=0;d=aa(65,j|0,c[(c[e+(m<<6)+4>>2]|0)+(g<<2)>>2]|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,t|0,u|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){d=z;break b}if(!(d<<24>>24))break;d=c[(c[r>>2]|0)+196>>2]|0;i=g;e=d;d=c[d+(m<<6)>>2]|0}if((g-k|0)>1){o=0;na(6,a|0,m|0,k|0,i|0,1);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=D3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;break b}}}e=c[r>>2]|0;k=k+1|0;d=e;e=c[e+196>>2]|0}}c:do if((q|0)==15){while(1){if((m|0)>0)k=0;else break;while(1){e=c[d+196>>2]|0;h=c[e+(m<<6)>>2]|0;if((k|0)>=(h|0))break;j=c[(c[e+(m<<6)+4>>2]|0)+(k<<2)>>2]|0;o=0;d=$(21,j|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,u|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;break c}if(d<<24>>24){i=k;d=h;while(1){g=i+1|0;if((g|0)>=(d|0))break;o=0;d=aa(66,j|0,c[(c[e+(m<<6)+4>>2]|0)+(g<<2)>>2]|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,t|0,u|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){d=z;break c}if(!(d<<24>>24))break;d=c[(c[r>>2]|0)+196>>2]|0;i=g;e=d;d=c[d+(m<<6)>>2]|0}if((g-k|0)>1){o=0;na(6,a|0,m|0,k|0,i|0,0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=D3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;break c}}}k=k+1|0;d=c[r>>2]|0}m=m+-1|0;q=15}t=C3(183936,1,t|0,u|0)|0;u=z;o=0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=D3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1)d=z;else d=0}while(0);d:while(1){if(d){o=0;ca(20,3,88082,s|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=D3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue}else break}else f=1;while(1){d=c[r>>2]|0;if((f|0)>(c[d+180>>2]|0))break a;o=0;ia(99,c[(c[d+184>>2]|0)+(f<<2)>>2]|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=D3(c[d>>2]|0,t|0,u|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue d}f=f+1|0}}}while(0);C_(t|0);l=v;return}function zl(b){b=b|0;b=c[b+16>>2]|0;if(((a[b+156>>0]|0)==1?(c[b+176>>2]|0)==1:0)?(c[b+184>>2]|0)==1:0)b=(c[b+104>>2]|0)==0&1;else b=0;return b|0}function Al(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;h=i+40|0;g=i;e=c[c[(c[a+16>>2]|0)+172>>2]>>2]|0;a=c[c[(c[b+16>>2]|0)+172>>2]>>2]|0;if(((zl(b)|0)<<24>>24!=0?(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)==(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0):0)?(Gl(e,a)|0)<<24>>24!=0:0){d=(c[a+16>>2]|0)+16|0;f=g;a=(c[e+16>>2]|0)+16|0;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));f=h;a=d;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));a=(ig(g,h)|0)==0&1}else a=0;l=i;return a|0}function Bl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=a+16|0;q=c[(c[(c[(c[t>>2]|0)+196>>2]|0)+(b<<6)+4>>2]|0)+(d<<2)>>2]|0;p=d+1|0;m=(f|0)==1;n=q+16|0;l=p;while(1){if((l|0)>(e|0)){g=e;s=p;break}o=c[(c[(c[(c[t>>2]|0)+196>>2]|0)+(b<<6)+4>>2]|0)+(l<<2)>>2]|0;k=o+16|0;a:do if(m)while(1){d=c[k>>2]|0;j=c[c[d+180>>2]>>2]|0;if(!j)break a;h=c[(c[n>>2]|0)+180>>2]|0;i=j+-48|0;f=0;while(1){d=c[h+(f<<2)>>2]|0;if(!d){r=8;break}if((c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)==(c[((c[j>>2]&3|0)==2?j:i)+40>>2]|0))break;else f=f+1|0}if((r|0)==8){r=0;d=oh(q,c[((c[j>>2]&3|0)==2?j:i)+40>>2]|0,j)|0}while(1){f=c[c[(c[k>>2]|0)+172>>2]>>2]|0;if(!f)break;wh(f,d);jh(f)}jh(j)}else while(1){d=c[k>>2]|0;j=c[c[d+172>>2]>>2]|0;if(!j)break a;h=c[(c[n>>2]|0)+172>>2]|0;i=j+48|0;f=0;while(1){d=c[h+(f<<2)>>2]|0;if(!d){r=17;break}if((c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)==(c[((c[j>>2]&3|0)==3?j:i)+40>>2]|0))break;else f=f+1|0}if((r|0)==17){r=0;d=oh(c[((c[j>>2]&3|0)==3?j:i)+40>>2]|0,q,j)|0}while(1){f=c[c[(c[k>>2]|0)+180>>2]>>2]|0;if(!f)break;wh(f,d);jh(f)}jh(j)}while(0);if((c[d+176>>2]|0)!=(0-(c[d+184>>2]|0)|0)){r=23;break}rh(a,o);l=l+1|0}if((r|0)==23)qa(88218,88262,115,88269);while(1){g=g+1|0;d=c[(c[t>>2]|0)+196>>2]|0;f=d+(b<<6)|0;if((g|0)>=(c[f>>2]|0))break;e=c[d+(b<<6)+4>>2]|0;r=c[e+(g<<2)>>2]|0;c[e+(s<<2)>>2]=r;c[(c[r+16>>2]|0)+236>>2]=s;s=s+1|0}c[f>>2]=s;c[(c[d+(b<<6)+4>>2]|0)+(s<<2)>>2]=0;return}function Cl(b){b=b|0;b=c[b+16>>2]|0;if(((a[b+156>>0]|0)==1?(c[b+184>>2]|0)==1:0)?(c[b+176>>2]|0)==1:0)b=(c[b+104>>2]|0)==0&1;else b=0;return b|0}function Dl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;h=i+40|0;g=i;e=c[c[(c[a+16>>2]|0)+180>>2]>>2]|0;a=c[c[(c[b+16>>2]|0)+180>>2]>>2]|0;if(((Cl(b)|0)<<24>>24!=0?(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)==(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0):0)?(Gl(e,a)|0)<<24>>24!=0:0){d=(c[a+16>>2]|0)+56|0;f=g;a=(c[e+16>>2]|0)+56|0;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));f=h;a=d;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));a=(ig(g,h)|0)==0&1}else a=0;l=i;return a|0}function El(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+32|0;p=r+16|0;o=r;m=d+16|0;f=c[m>>2]|0;e=b[f+236>>1]|0;while(1){if((e|0)>(b[f+238>>1]|0))break;c[(c[f+268>>2]|0)+(e<<2)>>2]=0;e=e+1|0;f=c[m>>2]|0}wj(d);j=Ry(d)|0;while(1){if(!j)break;Fl(d,j);i=Dx(d,j)|0;while(1){if(!i)break;else f=i;while(1){e=c[(c[f+16>>2]|0)+172>>2]|0;if(!e)break;else f=e}h=i+-48|0;while(1){e=f+-48|0;g=c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0;if((c[(c[g+16>>2]|0)+232>>2]|0)>=(c[(c[(c[((c[i>>2]&3|0)==2?i:h)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;Fl(d,g);f=c[c[(c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}i=Fx(d,i)|0}j=Sy(d,j)|0}e=c[m>>2]|0;i=b[e+236>>1]|0;while(1){if((i|0)>(b[e+238>>1]|0)){k=1;n=e;break}e=c[(c[e+268>>2]|0)+(i<<2)>>2]|0;j=c[(c[(c[(hg(d)|0)+16>>2]|0)+196>>2]|0)+(i<<6)+4>>2]|0;f=e+16|0;if((c[j+(c[(c[f>>2]|0)+236>>2]<<2)>>2]|0)!=(e|0)){q=17;break}h=c[(c[(c[(hg(d)|0)+16>>2]|0)+196>>2]|0)+(i<<6)+4>>2]|0;e=c[m>>2]|0;f=c[e+196>>2]|0;c[f+(i<<6)+4>>2]=h+(c[(c[(c[(c[e+268>>2]|0)+(i<<2)>>2]|0)+16>>2]|0)+236>>2]<<2);e=-1;h=0;a:while(1){if((h|0)>=(c[f+(i<<6)>>2]|0))break;f=c[(c[f+(i<<6)+4>>2]|0)+(h<<2)>>2]|0;if(!f)break;g=c[f+16>>2]|0;b:do if(!(a[g+156>>0]|0))if(!(nz(d,f)|0))break a;else e=h;else{f=c[c[g+172>>2]>>2]|0;while(1){if(!f)break b;g=c[(c[f+16>>2]|0)+116>>2]|0;if(!g)break;else f=g}if(nz(d,c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0)|0){j=(nz(d,c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)|0)==0;e=j?e:h}}while(0);h=h+1|0;f=c[(c[m>>2]|0)+196>>2]|0}if((e|0)==-1){c[p>>2]=qy(d)|0;c[p+4>>2]=i;Ow(0,88182,p)|0}j=c[m>>2]|0;c[(c[j+196>>2]|0)+(i<<6)>>2]=e+1;i=i+1|0;e=j}if((q|0)==17){p=qy(e)|0;q=c[(c[f>>2]|0)+236>>2]|0;c[o>>2]=p;c[o+4>>2]=q;c[o+8>>2]=i;Ow(1,88124,o)|0;bb(183936,1)}while(1){if((k|0)>(c[n+180>>2]|0))break;El(c[(c[n+184>>2]|0)+(k<<2)>>2]|0);k=k+1|0;n=c[m>>2]|0}l=r;return}function Fl(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[b+16>>2]|0;a=(c[(c[a+16>>2]|0)+268>>2]|0)+(c[d+232>>2]<<2)|0;e=c[a>>2]|0;if(!((e|0)!=0?(c[(c[e+16>>2]|0)+236>>2]|0)<=(c[d+236>>2]|0):0))c[a>>2]=b;return}function Gl(b,d){b=b|0;d=d|0;var e=0,f=0;while(1){f=c[b+16>>2]|0;if(!(a[f+112>>0]|0))break;b=c[f+116>>2]|0}while(1){e=c[d+16>>2]|0;if(!(a[e+112>>0]|0))break;d=c[e+116>>2]|0}if((a[f+153>>0]|0)==0?(a[e+153>>0]|0)==0:0){f=c[d>>2]&3;e=c[b>>2]&3;b=(O((c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0,(c[(c[(c[((f|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((f|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)|0)>0&1}else b=0;return b|0}function Hl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+544|0;j=k+528|0;Il(j,k+512|0,k);e=(a[190690]|0)+1<<24>>24;a[190690]=e<<24>>24==0?1:e;e=c[b+16>>2]|0;c[e+220>>2]=0;c[e+232>>2]=0;e=(d|0)>0;d=Ry(b)|0;while(1){if(!d)break;if(e?(h=c[d+16>>2]|0,i=c[h+212>>2]|0,(i|0)!=0):0){g=c[(c[(c[i+16>>2]|0)+268>>2]|0)+(c[h+232>>2]<<2)>>2]|0;f=7}else f=6;if((f|0)==6?(f=0,(d|0)==(RL(d)|0)):0){g=d;f=7}if((f|0)==7?(0,(a[(c[g+16>>2]|0)+157>>0]|0)!=(a[190690]|0)):0){Jl(b);Kl(j,b,g);Ll(b)}d=Sy(b,d)|0}Ml(j);l=k;return}function Il(a,b,d){a=a|0;b=b|0;d=d|0;c[b>>2]=d;c[b+4>>2]=d+512;c[b+12>>2]=0;c[b+8>>2]=0;c[a>>2]=b;c[a+4>>2]=b;c[a+8>>2]=d;return}function Jl(a){a=a|0;c[(c[a+16>>2]|0)+192>>2]=0;c[46023]=0;return}function Kl(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+32|0;p=q;Nl(b,e);k=p+8|0;m=p+16|0;n=p+24|0;a:while(1){o=Ol(b)|0;if(!o)break;e=o+16|0;if((a[(c[e>>2]|0)+157>>0]|0)==(a[190690]|0))continue;Pl(d,o);h=c[e>>2]|0;g=h+180|0;j=c[g+4>>2]|0;i=p;c[i>>2]=c[g>>2];c[i+4>>2]=j;i=h+172|0;j=c[i+4>>2]|0;g=k;c[g>>2]=c[i>>2];c[g+4>>2]=j;g=h+188|0;j=c[g+4>>2]|0;i=m;c[i>>2]=c[g>>2];c[i+4>>2]=j;h=h+196|0;i=c[h+4>>2]|0;j=n;c[j>>2]=c[h>>2];c[j+4>>2]=i;j=3;while(1){if((j|0)<=-1)continue a;e=c[p+(j<<3)>>2]|0;b:do if(e|0){i=(c[p+(j<<3)+4>>2]|0)+-1|0;h=e+(i<<2)|0;while(1){if((i|0)<=-1)break b;f=c[h>>2]|0;g=c[f>>2]&3;e=c[((g|0)==2?f:f+-48|0)+40>>2]|0;if((e|0)==(o|0))e=c[((g|0)==3?f:f+48|0)+40>>2]|0;if((a[(c[e+16>>2]|0)+157>>0]|0)!=(a[190690]|0)?(e|0)==(RL(e)|0):0)Nl(b,e);h=h+-4|0;i=i+-1|0}}while(0);j=j+-1|0}}l=q;return}function Ll(a){a=a|0;var b=0,d=0,e=0,f=0;d=a+16|0;b=c[d>>2]|0;f=b+220|0;e=c[f>>2]|0;a=e+1|0;c[f>>2]=a;b=c[b+216>>2]|0;if(!b)a=uH(a<<2)|0;else a=wH(b,a<<2)|0;f=c[d>>2]|0;c[f+216>>2]=a;c[a+(e<<2)>>2]=c[f+192>>2];return}function Ml(a){a=a|0;var b=0;a=c[(c[a>>2]|0)+12>>2]|0;while(1){if(!a)break;b=c[a+12>>2]|0;C_(c[a>>2]|0);C_(a);a=b}return}function Nl(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;h=k+8|0;g=k;j=b+8|0;f=c[j>>2]|0;i=b+4|0;b=c[i>>2]|0;if((f|0)==(c[b+4>>2]|0)){f=c[b+12>>2]|0;if(!f){f=tH(16)|0;if(!f)Ow(1,95943,g)|0;c[f+8>>2]=c[i>>2];c[f+12>>2]=0;b=tH(4e6)|0;c[f>>2]=b;if(!b){Ow(1,88282,h)|0;b=c[f>>2]|0}c[f+4>>2]=b+4e6;c[(c[i>>2]|0)+12>>2]=f}c[i>>2]=f;f=c[f>>2]|0;c[j>>2]=f}a[(c[e+16>>2]|0)+157>>0]=(d[190690]|0)+1;c[j>>2]=f+4;c[f>>2]=e;l=k;return}function Ol(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+8|0;b=c[f>>2]|0;d=a+4|0;e=c[d>>2]|0;if((b|0)==(c[e>>2]|0))if((e|0)==(c[a>>2]|0))b=0;else{b=c[e+8>>2]|0;c[d>>2]=b;b=c[b+4>>2]|0;c[f>>2]=b;g=4}else g=4;if((g|0)==4){b=b+-4|0;c[f>>2]=b;b=c[b>>2]|0}return b|0}function Pl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=c[b+16>>2]|0;g=f+232|0;c[g>>2]=(c[g>>2]|0)+1;g=c[d+16>>2]|0;a[g+157>>0]=a[190690]|0;b=c[46023]|0;e=g+168|0;if(!b){c[e>>2]=0;c[f+192>>2]=d}else{c[e>>2]=b;c[(c[b+16>>2]|0)+164>>2]=d}c[46023]=d;c[g+164>>2]=0;return}function Ql(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0;m=b+16|0;d=(c[m>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;g=d+16|0;d=c[g>>2]|0;e=c[d+188>>2]|0;a:do if(!e)f=0;else{f=0;while(1){e=c[e+(f<<2)>>2]|0;if(!e){f=0;break a}Rl(e);d=c[g>>2]|0;f=f+1|0;e=c[d+188>>2]|0}}while(0);while(1){if((f|0)>=(c[d+208>>2]|0))break;e=c[(c[d+204>>2]|0)+(f<<2)>>2]|0;l=c[e>>2]&3;if((c[(c[(c[((l|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)==(c[(c[(c[((l|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)){Rl(e);d=c[g>>2]|0}f=f+1|0}d=d+164|0}l=c[m>>2]|0;d=c[l+196>>2]|0;if(!((c[d+56>>2]|0)==0?(c[l+180>>2]|0)<=0:0))i=13;b:do if((i|0)==13){i=c[d+4>>2]|0;g=0;c:while(1){d=c[i+(g<<2)>>2]|0;if(!d)break b;e=c[(c[d+16>>2]|0)+196>>2]|0;d=0;while(1){f=c[e+(d<<2)>>2]|0;if(!f)break;l=c[f+16>>2]|0;if(c[l+96>>2]|0?(a[l+113>>0]|0)==0:0)break c;d=d+1|0}g=g+1|0}Sl(b)}while(0);Ii(b);e=0;d=(c[m>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;l=d+16|0;d=c[l>>2]|0;f=c[d+188>>2]|0;d:do if(f){k=0;while(1){g=c[f+(k<<2)>>2]|0;if(!g){k=0;break}i=c[g+16>>2]|0;j=c[i+96>>2]|0;do if(j)if(!(a[i+113>>0]|0)){Tl(g);f=c[l>>2]|0;e=1;d=f;f=c[f+188>>2]|0;break}else{h[i+136>>3]=+h[((c[(c[m>>2]|0)+116>>2]&1|0)==0?j+24|0:j+32|0)>>3];break}while(0);k=k+1|0}while(1){if((k|0)>=(c[d+208>>2]|0))break d;i=c[(c[d+204>>2]|0)+(k<<2)>>2]|0;j=c[i>>2]&3;g=c[((j|0)==3?i:i+48|0)+40>>2]|0;j=c[((j|0)==2?i:i+-48|0)+40>>2]|0;do if(!((g|0)==(j|0)?1:(c[(c[g+16>>2]|0)+232>>2]|0)!=(c[(c[j+16>>2]|0)+232>>2]|0))){f=i;do{j=c[f+16>>2]|0;f=c[j+172>>2]|0}while((f|0)!=0);f=a[j+113>>0]|0;g=c[i+16>>2]|0;a[g+113>>0]=f;g=c[g+96>>2]|0;if(g)if(!(f<<24>>24)){Tl(i);e=1;d=c[l>>2]|0;break}else{o=+h[((c[(c[m>>2]|0)+116>>2]&1|0)==0?g+24|0:g+32|0)>>3];j=j+136|0;n=+h[j>>3];h[j>>3]=o>n?o:n;break}}while(0);k=k+1|0}}while(0);d=d+164|0}if(e|0){Bh(b);Ph(b)}return e|0}function Rl(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[b>>2]&3;i=c[((d|0)==3?b:b+48|0)+40>>2]|0;f=i+16|0;g=c[(c[f>>2]|0)+236>>2]|0;d=c[(c[(c[((d|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;h=(g|0)<(d|0);e=h?d:g;i=c[(c[(hg(i)|0)+16>>2]|0)+196>>2]|0;f=i+(c[(c[f>>2]|0)+232>>2]<<6)+4|0;d=h?g:d;a:while(1){d=d+1|0;if((d|0)>=(e|0))break;g=c[(c[(c[f>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;switch(a[g+156>>0]|0){case 0:break a;case 1:break;default:continue a}if(c[g+104>>2]|0)break}if((d|0)==(e|0))do{i=c[b+16>>2]|0;a[i+113>>0]=1;b=c[i+172>>2]|0}while((b|0)!=0);return}function Sl(a){a=a|0;var d=0,e=0,f=0,g=0;g=a+16|0;a=c[g>>2]|0;if(b[a+236>>1]|0)qa(88339,88322,190,88358);d=(b[a+238>>1]|0)+3|0;a=c[a+196>>2]|0;if(!a)a=uH(d<<6)|0;else a=wH(a,d<<6)|0;d=a+64|0;a=c[g>>2]|0;c[a+196>>2]=d;a=b[a+238>>1]|0;while(1){if((a|0)<=-1)break;f=a+-1|0;e=d+(a<<6)|0;a=d+(f<<6)|0;d=e+64|0;do{c[e>>2]=c[a>>2];e=e+4|0;a=a+4|0}while((e|0)<(d|0));a=f;d=c[(c[g>>2]|0)+196>>2]|0}c[d+(a<<6)+8>>2]=0;c[d+(a<<6)>>2]=0;e=tH(8)|0;g=c[g>>2]|0;f=c[g+196>>2]|0;c[f+(a<<6)+12>>2]=e;c[f+(a<<6)+4>>2]=e;c[f+(a<<6)+56>>2]=0;h[f+(a<<6)+24>>3]=1.0;h[f+(a<<6)+16>>3]=1.0;h[f+(a<<6)+40>>3]=1.0;h[f+(a<<6)+32>>3]=1.0;g=g+236|0;b[g>>1]=(b[g>>1]|0)+-1<<16>>16;return}function Tl(b){b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0;j=b+16|0;if(c[(c[j>>2]|0)+96>>2]|0){m=b+48|0;k=hg(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)|0;d=c[(c[(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)+16>>2]|0)+232>>2]|0;l=Ul(k,b)|0;n=k+16|0;e=c[n>>2]|0;g=c[e+196>>2]|0;o=d+-1|0;i=c[c[g+(o<<6)+4>>2]>>2]|0;if(!i)f=+h[g+(d<<6)+24>>3]+ +h[(c[(c[c[g+(d<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+ +(c[e+252>>2]|0);else f=+h[(c[i+16>>2]|0)+24>>3]-+h[g+(o<<6)+16>>3];d=Vl(k,o,l)|0;k=c[(c[j>>2]|0)+96>>2]|0;q=+h[k+24>>3];p=+h[k+32>>3];j=(c[(c[n>>2]|0)+116>>2]&1|0)==0;r=j?p:q;g=d+16|0;e=c[g>>2]|0;h[e+80>>3]=r;l=~~(r*.5);p=(j?q:p)*.5;h[e+96>>3]=p;h[e+88>>3]=p;c[e+104>>2]=k;h[e+24>>3]=+(l+~~f|0);e=oh(d,c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0,b)|0;e=c[e+16>>2]|0;h[e+16>>3]=-+h[(c[g>>2]|0)+88>>3];h[e+56>>3]=+h[(c[(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)+16>>2]|0)+96>>3];a[e+112>>0]=4;e=b+-48|0;d=oh(d,c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0,b)|0;g=c[g>>2]|0;d=c[d+16>>2]|0;h[d+16>>3]=+h[g+96>>3];h[d+56>>3]=+h[(c[(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)+16>>2]|0)+88>>3];a[d+112>>0]=4;d=c[(c[n>>2]|0)+196>>2]|0;e=d+(o<<6)+16|0;f=+(l|0);if(+h[e>>3]>3]=f;d=d+(o<<6)+24|0;if(+h[d>>3]>3]=f;c[g+112>>2]=b}return}function Ul(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;j=n+8|0;f=n+4|0;g=n;d=c[b>>2]&3;e=c[((d|0)==3?b:b+48|0)+40>>2]|0;k=(c[(c[e+16>>2]|0)+232>>2]|0)+-1|0;a=c[(c[a+16>>2]|0)+196>>2]|0;h=c[a+(k<<6)+4>>2]|0;a=c[a+(k<<6)>>2]|0;k=j+8|0;c[k>>2]=-1;c[j>>2]=-1;m=j+12|0;c[m>>2]=a;i=j+4|0;c[i>>2]=a;Wl(e,c[((d|0)==2?b:b+-48|0)+40>>2]|0,f,g);f=c[f>>2]|0;g=c[g>>2]|0;d=0;e=a;b=-1;while(1){if((d|0)>=(e|0))break;e=e+-1|0;Xl(c[h+(d<<2)>>2]|0,j,f,g);if((d|0)!=(e|0))Xl(c[h+(e<<2)>>2]|0,j,f,g);a=c[i>>2]|0;b=c[j>>2]|0;if((a-b|0)<2)break;else d=d+1|0}if((b|0)>(a|0))a=(c[m>>2]|0)+(c[k>>2]|0)|0;else a=a+b|0;l=n;return (a+1|0)/2|0|0}function Vl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=a+16|0;f=c[(c[g>>2]|0)+196>>2]|0;e=f+(b<<6)|0;f=c[f+(b<<6)+4>>2]|0;if(!f)f=uH((c[e>>2]<<2)+8|0)|0;else f=wH(f,(c[e>>2]<<2)+8|0)|0;e=c[(c[g>>2]|0)+196>>2]|0;c[e+(b<<6)+4>>2]=f;e=c[e+(b<<6)>>2]|0;while(1){if((e|0)<=(d|0))break;h=e+-1|0;i=c[f+(h<<2)>>2]|0;c[f+(e<<2)>>2]=i;i=(c[i+16>>2]|0)+236|0;c[i>>2]=(c[i>>2]|0)+1;e=h}h=th(a)|0;i=f+(d<<2)|0;c[i>>2]=h;h=c[h+16>>2]|0;c[h+236>>2]=d;c[h+232>>2]=b;g=(c[(c[g>>2]|0)+196>>2]|0)+(b<<6)|0;h=(c[g>>2]|0)+1|0;c[g>>2]=h;c[f+(h<<2)>>2]=0;return c[i>>2]|0}function Wl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;a=c[(c[a+16>>2]|0)+236>>2]|0;b=c[(c[b+16>>2]|0)+236>>2]|0;f=(a|0)>(b|0);c[d>>2]=f?b:a;c[e>>2]=f?a:b;return}function Xl(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;h=m+4|0;g=m;b=c[b+16>>2]|0;do if((a[b+156>>0]|0)==1){k=c[b+236>>2]|0;if(c[b+176>>2]|0){i=c[b+180>>2]|0;b=0;g=0;h=0;while(1){j=c[i+(h<<2)>>2]|0;if(!j)break;n=c[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;j=(n|0)>(e|0);b=j?((n|0)<(f|0)?b:1):b;g=j?g:1;h=h+1|0}if(g<<24>>24!=0&b<<24>>24==0){c[d>>2]=k+1;break}if(!(g<<24>>24==0&b<<24>>24!=0))break;c[d+4>>2]=k+-1;break}if((c[b+184>>2]|0)!=2)qa(88302,88322,63,88329);i=c[b+180>>2]|0;n=c[i>>2]|0;i=c[i+4>>2]|0;Wl(c[((c[n>>2]&3|0)==2?n:n+-48|0)+40>>2]|0,c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0,h,g);i=c[g>>2]|0;if((i|0)<=(e|0)){c[d>>2]=k;c[d+8>>2]=k;break}b=c[h>>2]|0;if((b|0)>=(f|0)){c[d+4>>2]=k;c[d+12>>2]=k;break}g=(b|0)<(e|0);h=(i|0)>(f|0);if(!(h&g)){if(!(!g?!((i|0)<(f|0)&(b|0)==(e|0)):0))c[d+8>>2]=k;if(!h?!((i|0)==(f|0)&(b|0)>(e|0)):0)break;c[d+12>>2]=k}}while(0);l=m;return}function Yl(a){a=a|0;c[46363]=1;qm(a);c[46363]=0;return}function Zl(a){a=a|0;c[46363]=2;qm(a);c[46363]=0;return}function _l(a){a=a|0;var b=0;zz(a,134365,304,1)|0;cM(a);b=tH((e[(c[(dz(a)|0)+16>>2]|0)+176>>1]|0)<<3)|0;c[(c[a+16>>2]|0)+132>>2]=b;aN(a,c[(c[(dz(a)|0)+16>>2]|0)+116>>2]&1);return}function $l(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0;s=l;l=l+64|0;j=s+48|0;o=s+40|0;k=s+24|0;i=s+8|0;q=s+56|0;m=s;do if((b|0)!=0?(r=e+16|0,p=c[(c[r>>2]|0)+132>>2]|0,g=xx(e,b)|0,(a[g>>0]|0)!=0):0){a[q>>0]=0;b=p+8|0;if((c[46366]|0)>2?(c[i>>2]=p,c[i+4>>2]=b,c[i+8>>2]=p+16,c[i+12>>2]=q,(M1(g,88435,i)|0)>2):0){a[(c[r>>2]|0)+119>>0]=1;g=c[46366]|0;a:do if(+h[22908]>0.0){b=0;while(1){if((b|0)>=(g|0))break a;o=p+(b<<3)|0;h[o>>3]=+h[o>>3]/+h[22908];b=b+1|0}}while(0);if((g|0)>3)Gn(e,f,3);if((a[q>>0]|0)!=33){if(!d){b=1;break}if(!((PL(xx(e,d)|0)|0)<<24>>24)){b=1;break}}a[(c[r>>2]|0)+119>>0]=3;b=1;break}c[k>>2]=p;c[k+4>>2]=b;c[k+8>>2]=q;if((M1(g,98723,k)|0)<=1){c[j>>2]=qy(e)|0;c[j+4>>2]=g;Ow(1,88449,j)|0;b=0;break}a[(c[r>>2]|0)+119>>0]=1;g=c[46366]|0;b:do if(+h[22908]>0.0){b=0;while(1){if((b|0)>=(g|0))break b;k=p+(b<<3)|0;h[k>>3]=+h[k>>3]/+h[22908];b=b+1|0}}while(0);do if((g|0)>2){b=c[46401]|0;if((b|0?(n=xx(e,b)|0,n|0):0)?(c[o>>2]=m,(M1(n,98183,o)|0)==1):0){u=+h[22908];t=+h[m>>3];h[p+16>>3]=u>0.0?t/u:t;Gn(e,f,3);break}Hn(e,f)}while(0);if((a[q>>0]|0)!=33){if(!d){b=1;break}if(!((PL(xx(e,d)|0)|0)<<24>>24)){b=1;break}}a[(c[r>>2]|0)+119>>0]=3;b=1}else b=0;while(0);l=s;return b|0}function am(a){a=a|0;var b=0,c=0;c=Ry(a)|0;while(1){if(!c)break;b=Dx(a,c)|0;while(1){if(!b)break;IM(b);b=Fx(a,b)|0}GM(c);c=Sy(a,c)|0}bm(a);return}function bm(a){a=a|0;if((c[46363]|0)!=0|(c[46025]|0)<0)En(a);if((ez(a)|0)!=(a|0))Fz(a,0,134401);return}function cm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+48|0;m=q+32|0;o=q;k=mx(b,0,99611,0)|0;e=mx(b,0,99645,0)|0;p=(QL(wx(b,88493)|0,0)|0)<<24>>24!=0;if(!e)e=mx(b,0,99645,191979)|0;Dn(b)|0;n=b+16|0;i=0;while(1){j=c[(c[(c[n>>2]|0)+152>>2]|0)+(i<<2)>>2]|0;if(!j){f=12;break}g=j+16|0;f=c[g>>2]|0;if(!(a[f+119>>0]|0)){if(y$(qy(j)|0,104980,7)|0){f=8;break}f=c[g>>2]|0}f=c[f+108>>2]|0;if(f|0)dm(j,f,99607);i=i+1|0}a:do if((f|0)==8){p=qy(j)|0;e=qy(b)|0;c[m>>2]=p;c[m+4>>2]=e;Ow(1,88505,m)|0;e=-1}else if((f|0)==12){em(b,k,e);j=fm(b)|0;e=c[(c[n>>2]|0)+8>>2]|0;if(!(c[e+88>>2]|0))e=0;else{c[e+84>>2]=0;e=1}g=(d|0)!=0;i=(e|0)!=0;if(!(i|g&(c[46363]|0)==1^1)?(sq(b)|0)!=0:0){f=c[(c[n>>2]|0)+12>>2]|0;if(!f)f=1;else{a[f+81>>0]=0;f=1}}else f=0;lM(b);if(i){d=(c[n>>2]|0)+16|0;ZE(o,b);c[d>>2]=c[o>>2];c[d+4>>2]=c[o+4>>2];c[d+8>>2]=c[o+8>>2];c[d+12>>2]=c[o+12>>2];c[d+16>>2]=c[o+16>>2];c[d+20>>2]=c[o+20>>2];c[d+24>>2]=c[o+24>>2];c[d+28>>2]=c[o+28>>2]}if(!g){c[46367]=1;f=Ry(b)|0;while(1){if(!f)break a;p=c[f+16>>2]|0;o=c[p+132>>2]|0;h[p+16>>3]=+h[o>>3]*72.0;h[p+24>>3]=+h[o+8>>3]*72.0;f=Sy(b,f)|0}}do if(!(p|i)){p=c[n>>2]|0;if(!(+h[p+16>>3]!=0.0)?!(+h[p+24>>3]!=0.0):0)break;bn(b)}while(0);if(!((j|0)!=0&(f|($m(b)|0)<<24>>24!=0))){if((j|0)==2){c[46367]=1;break}}else gm(b);_m(b,0)}while(0);l=q;return e|0}function dm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0;k=l;l=l+48|0;j=k+32|0;f=k+24|0;g=k+16|0;i=k;b=wx(b,e)|0;if(b|0?(c[j>>2]=f,c[j+4>>2]=g,(M1(b,102477,j)|0)==2):0){j=d+56|0;jm(i,+h[f>>3],+h[g>>3]);c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];c[j+12>>2]=c[i+12>>2];a[d+81>>0]=1}l=k;return}function em(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+48|0;k=m+32|0;f=m+24|0;g=m+16|0;i=m;j=b+16|0;if((d|0?(c[(c[j>>2]|0)+12>>2]|0)!=0:0)?(n=xx(b,d)|0,c[k>>2]=f,c[k+4>>2]=g,(M1(n,102477,k)|0)==2):0){n=(c[(c[j>>2]|0)+12>>2]|0)+56|0;jm(i,+h[f>>3],+h[g>>3]);c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];a[(c[(c[j>>2]|0)+12>>2]|0)+81>>0]=1}a:do if(e|0){f=vA(b)|0;while(1){if(!f)break a;km(f,b,d,e);f=wA(f)|0}}while(0);l=m;return}function fm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(ay(a)|0){f=mx(a,2,99597,0)|0;if(!((f|0)==0|(c[46363]|0)<2)){b=0;e=Ry(a)|0;while(1){if(!e)break;d=Dx(a,e)|0;while(1){if(!d)break;g=b+((hm(f,d)|0)!=0&1)|0;d=Fx(a,d)|0;b=g}e=Sy(a,e)|0}if(b){b=(b|0)==(ay(a)|0);b=b?2:1}else b=0}else b=0}else b=2;return b|0}function gm(a){a=a|0;var b=0,d=0,e=0;d=Ry(a)|0;while(1){if(!d)break;b=Dx(a,d)|0;while(1){if(!b)break;JM(b);e=b+16|0;mH(c[(c[e>>2]|0)+96>>2]|0);mH(c[(c[e>>2]|0)+108>>2]|0);mH(c[(c[e>>2]|0)+100>>2]|0);mH(c[(c[e>>2]|0)+104>>2]|0);b=Fx(a,b)|0}d=Sy(a,d)|0}return}function hm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;B=l;l=l+96|0;z=B+72|0;x=B+56|0;A=B+48|0;y=B+32|0;w=B+16|0;r=B+88|0;s=B+8|0;t=B;u=B+84|0;v=B+80|0;b=xx(d,b)|0;do if(a[b>>0]|0){rE(d,u,v);q=1;f=0;e=0;j=0.0;i=0.0;k=0.0;g=0.0;a:while(1){c[w>>2]=s;c[w+4>>2]=t;c[w+8>>2]=r;if((M1(b,88542,w)|0)==2){p=1;b=b+(c[r>>2]|0)|0;i=+h[s>>3];g=+h[t>>3]}else p=e;c[y>>2]=s;c[y+4>>2]=t;c[y+8>>2]=r;if((M1(b,88554,y)|0)==2){o=1;b=b+(c[r>>2]|0)|0;j=+h[s>>3];k=+h[t>>3]}else o=f;m=im(b)|0;if(!((m|0)>3&((m|0)%3|0|0)==1)){e=8;break}n=uH(m<<4)|0;e=n;f=m;while(1){if(!f)break;c[x>>2]=s;c[x+4>>2]=t;c[x+8>>2]=r;if((M1(b,88624,x)|0)<2){e=13;break a}C=b+(c[r>>2]|0)|0;h[e>>3]=+h[s>>3];h[e+8>>3]=+h[t>>3];e=e+16|0;f=f+-1|0;b=C}while(1){e=a[b>>0]|0;f=b+1|0;if(!(A$(e<<24>>24)|0))break;else b=f}C=e<<24>>24==0;b=C?b:f;q=C?0:q;f=OK(d,m)|0;if(p|0){c[f+8>>2]=c[u>>2];h[f+16>>3]=i;h[f+24>>3]=g}if(o|0){c[f+12>>2]=c[v>>2];h[f+32>>3]=j;h[f+40>>3]=k}e=0;while(1){if((e|0)>=(m|0))break;C=(c[f>>2]|0)+(e<<4)|0;D=n+(e<<4)|0;c[C>>2]=c[D>>2];c[C+4>>2]=c[D+4>>2];c[C+8>>2]=c[D+8>>2];c[C+12>>2]=c[D+12>>2];e=e+1|0}C_(n);if(!q){e=26;break}else{f=o;e=p}}if((e|0)==8){JM(d);if(a[190691]|0){b=0;break}a[190691]=1;D=qy(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0;b=qy(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;c[A>>2]=D;c[A+4>>2]=b;Ow(0,88567,A)|0;b=0;break}else if((e|0)==13){if(!(a[190691]|0)){a[190691]=1;C=qy(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0;D=qy(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;c[z>>2]=C;c[z+4>>2]=D;Ow(0,88634,z)|0}C_(n);JM(d);b=0;break}else if((e|0)==26){f=d+16|0;b=c[f>>2]|0;e=c[b+96>>2]|0;if(e){dm(d,e,99611);b=c[f>>2]|0}e=c[b+108>>2]|0;if(e){dm(d,e,99607);b=c[f>>2]|0}e=c[b+100>>2]|0;if(e){dm(d,e,99614);b=c[f>>2]|0}b=c[b+104>>2]|0;if(!b){b=1;break}dm(d,b,99622);b=1;break}}else b=0;while(0);l=B;return b|0}function im(b){b=b|0;var c=0,d=0;d=0;do{while(1){c=a[b>>0]|0;if(!(A$(c&255)|0))break;else b=b+1|0}a:do if(!(c<<24>>24))c=0;else{d=d+1|0;while(1){if(!(c<<24>>24)){c=0;break a}if(c<<24>>24==59|(A$(c&255)|0)!=0)break a;c=b+1|0;b=c;c=a[c>>0]|0}}while(0)}while((A$(c&255)|0)!=0);return d|0}function jm(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function km(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+32|0;f=h;if((y$(qy(a)|0,104980,7)|0)==0?(lm(a,e,f)|0)!=0:0){zz(a,134401,280,1)|0;i=(c[a+16>>2]|0)+16|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];mm(b,a);em(a,d,e)}else g=4;a:do if((g|0)==4){a=vA(a)|0;while(1){if(!a)break a;km(a,b,d,e);a=wA(a)|0}}while(0);l=h;return}function lm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0;i=l;l=l+48|0;j=i+32|0;g=i;k=xx(a,b)|0;a=g+8|0;b=g+24|0;c[j>>2]=g;c[j+4>>2]=a;c[j+8>>2]=g+16;c[j+12>>2]=b;if((M1(k,88682,j)|0)==4){e=+h[a>>3];f=+h[b>>3];if(e>f){h[a>>3]=f;h[b>>3]=e};c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];c[d+16>>2]=c[g+16>>2];c[d+20>>2]=c[g+20>>2];c[d+24>>2]=c[g+24>>2];c[d+28>>2]=c[g+28>>2];a=1}else a=0;l=i;return a|0}function mm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+16|0;d=c[e>>2]|0;g=d+180|0;a=c[g>>2]|0;f=a+1|0;c[g>>2]=f;d=c[d+184>>2]|0;if(!d)a=tH((a<<2)+8|0)|0;else a=vH(d,a+2|0,4,f)|0;c[(c[e>>2]|0)+184>>2]=a;c[a+(f<<2)>>2]=b;eH(b);return}function nm(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+48|0;m=n+8|0;k=n;i=n+16|0;j=n+12|0;h=wx(b,88698)|0;do if((h|0)!=0?(g=a[h>>0]|0,g<<24>>24!=0):0){g=g&255;if(!(M$(g)|0))if((e|0)==2|(g+-48|0)>>>0<10)e=h;else break;else{if(!(y$(h,88704,4)|0)){e=0;break}if(!(y$(h,102485,7)|0)){e=1;break}if(y$(h,88709,6)|0)if((e|0)==2)e=h;else break;else e=h+6|0}if(!(((d[e>>0]|0)+-48|0)>>>0<10?(c[k>>2]=j,(M1(e,96907,k)|0)>=1):0)){k=G1()|0;k=(db(0)|0)^k;c[j>>2]=k;c[m>>2]=k;X0(i,96907,m)|0;yx(b,88698,i)|0}c[f>>2]=c[j>>2];e=2}while(0);l=n;return e|0}function om(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f+4|0;c[e>>2]=1;d=nm(a,d,e)|0;if((d|0)!=2&(c[46026]|0)!=0)Ow(0,88716,f)|0;if((d|0)==1)pm(a,b);h2(c[e>>2]|0);l=f;return d|0}function pm(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0.0;g=+(d|0);i=6.283185307179586/g;e=Ry(b)|0;f=0.0;while(1){if(!e)break;l=+E(+f)*g;j=c[e+16>>2]|0;k=c[j+132>>2]|0;h[k>>3]=l;h[k+8>>3]=+F(+f)*g;a[j+119>>0]=1;if((c[46366]|0)>2)Hn(e,d);e=Sy(b,e)|0;f=f+i}return}function qm(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0;r=l;l=l+80|0;d=r+24|0;n=r+32|0;k=r;p=r+28|0;m=r+64|0;q=+h[22908];do if(c[46363]|0){h[22908]=72.0;rm(b);sm(b);if((cm(b,1)|0)<0){Ow(3,88764,d)|0;break}else{OI(b,0);f=32;break}}else{o=QL(wx(b,88493)|0,0)|0;h[22908]=+LL(b);rm(b);g=tm(b)|0;Rp(b,k,0)|0;i=um(b)|0;j=YD(b,0,n)|0;d=XD(b,-1,8)|0;c[46025]=d;e=(d|0)<0;do if(!j){if((g|0)!=0&e){c[46025]=8;c[n+16>>2]=2;f=11;break}c[n+16>>2]=2;if((d|0)<=-1){vm(b,g,i);Up(b,k)|0;sm(b);if(!(o<<24>>24)){gn(b);break}else{wm(b);break}}else f=11}else if(e){c[46025]=8;f=11}else f=11;while(0);if((f|0)==11){j=cD(b,p,88792,m)|0;d=c[p>>2]|0;do if((d|0)<=1){vm(b,g,i);Up(b,k)|0;if(!(o<<24>>24)){gn(b);break}else{wm(b);break}}else{f=o<<24>>24==0;e=0;while(1){if((e|0)>=(d|0))break;d=c[j+(e<<2)>>2]|0;uD(d)|0;vm(d,g,i);Up(d,k)|0;_M(d,2);if(f)gn(d);else wm(d);e=e+1|0;d=c[p>>2]|0}if(!(a[m>>0]|0))e=0;else{e=tH(d)|0;a[e>>0]=1;d=c[p>>2]|0}c[n+8>>2]=c[46025];c[n+20>>2]=e;c[n+12>>2]=1;UD(d,j,b,n)|0;C_(e)}while(0);lM(b);sm(b);d=0;while(1){if((d|0)>=(c[p>>2]|0))break;n=c[j+(d<<2)>>2]|0;En(n);Bz(n,134401)|0;cz(b,n)|0;d=d+1|0}C_(j)}OI(b,o<<24>>24==0&1);f=32}while(0);if((f|0)==32)h[22908]=q;l=r;return}function rm(a){a=a|0;var d=0,e=0,f=0,g=0;_M(a,2);f=JL(a,mx(a,0,89557,0)|0,2,2)|0;d=(JL(a,mx(a,0,90633,0)|0,f,2)|0)&65535;b[(c[(ez(a)|0)+16>>2]|0)+176>>1]=d;d=c[(c[a+60>>2]|0)+16>>2]|0;g=d+176|0;e=b[g>>1]|0;e=(e&65535)<10?e:10;b[g>>1]=e;e=e&65535;c[46366]=e;b[d+178>>1]=(f|0)<(e|0)?f:e;Gm(a);return}function sm(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+1040|0;e=f;d=f+8|0;a:do if((c[46366]|0)>2&(c[46401]|0)!=0){b=Ry(a)|0;while(1){if(!b)break a;h[e>>3]=+h[(c[(c[b+16>>2]|0)+132>>2]|0)+16>>3]*72.0;X0(d,98183,e)|0;qx(b,c[46401]|0,d)|0;b=Sy(a,b)|0}}while(0);l=f;return}function tm(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=wx(b,89477)|0;a:do if(!d)b=1;else{switch(a[d>>0]|0){case 0:{b=1;break a}case 75:{if(!(a$(d,89482)|0)){b=0;break a}break}case 109:{if(!(a$(d,89485)|0)){b=1;break a}break}case 104:{if(!(a$(d,89491)|0)){b=2;break a}break}default:{}}b=qy(b)|0;c[e>>2]=d;c[e+4>>2]=b;Ow(0,89496,e)|0;b=1}while(0);l=f;return b|0}function um(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+32|0;g=h+16|0;f=h+8|0;e=h;d=wx(b,89260)|0;a:do if(!d)b=0;else{switch(a[d>>0]|0){case 0:{b=0;break a}case 99:{if(!(a$(d,89266)|0)){b=1;break a}break}case 115:{if(!(a$(d,89274)|0)){b=2;break a}if(!(a$(d,89281)|0)){b=0;break a}break}case 109:{if(!(a$(d,89291)|0)){if(mx(b,2,90566,0)|0){b=3;break a}c[e>>2]=qy(b)|0;Ow(0,89295,e)|0;Ow(3,89358,f)|0;b=0;break a}break}default:{}}b=qy(b)|0;c[g>>2]=d;c[g+4>>2]=b;Ow(0,89415,g)|0;b=0}while(0);l=h;return b|0}function vm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=wx(a,90975)|0;if(!e)if((b|0)==1)e=200;else e=($x(a)|0)*100|0;else e=$1(e)|0;c[46365]=e;e=xn(a,b)|0;do if(!((e|0)<2|(c[46365]|0)<0))if(!b){ym(a,e,d);break}else{xm(a,e,b,d,c[46366]|0);break}while(0);return}function wm(a){a=a|0;lM(a);_m(a,1);return}function xm(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+64|0;r=u+40|0;o=u+24|0;n=u;p=u+48|0;t=u+44|0;q=(d|0)==2;i=om(a,b,q?0:2)|0;j=Fm(a)|0;k=j|4;s=uH(f<<2)|0;c[s>>2]=uH(O(b<<3,f)|0)|0;g=c[46366]|0;f=1;while(1){if((f|0)>=(g|0))break;c[s+(f<<2)>>2]=(c[s>>2]|0)+((O(f,b)|0)<<3);f=f+1|0}g=(i|0)==0;f=g?k:j;if(0){k=c[15686]|0;j=c[46365]|0;m=+h[22909];c[n>>2]=e;c[n+4>>2]=g&1;c[n+8>>2]=f&3;c[n+12>>2]=j;h[n+16>>3]=m;f1(k,89073,n)|0;D1(89130,15,1,k)|0;DL();D1(89146,13,1,k)|0}n=Bm(a,b,p,d,e,t)|0;if(0){k=c[15686]|0;m=+EL();c[o>>2]=b;h[o+8>>3]=m;f1(k,89160,o)|0}if((d|0)!=1){m=+KL(a,mx(a,0,89179,0)|0,0.0,-1797693134862315708145274.0e284);if(q){f=Fq(n,b,c[p>>2]|0,s,c[t>>2]|0,c[46366]|0,f,e,c[46365]|0,m)|0;g=12}else g=14}else{f=pn(n,b,c[p>>2]|0,s,c[t>>2]|0,c[46366]|0,f,e,c[46365]|0)|0;g=12}if((g|0)==12)if((f|0)<0)Ow(3,89189,r)|0;else g=14;a:do if((g|0)==14){g=Ry(a)|0;while(1){if(!g)break a;k=c[g+16>>2]|0;i=c[k+120>>2]|0;j=c[46366]|0;k=k+132|0;f=0;while(1){if((f|0)>=(j|0))break;h[(c[k>>2]|0)+(f<<3)>>3]=+h[(c[s+(f<<2)>>2]|0)+(i<<3)>>3];f=f+1|0}g=Sy(a,g)|0}}while(0);ar(n);C_(c[s>>2]|0);C_(s);C_(c[t>>2]|0);l=u;return}function ym(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0;g=l;l=l+48|0;f=g+32|0;e=g;switch(d|0){case 2:{zm(a,b);break}case 1:{if(!(Bq(a,b)|0)){c[e>>2]=qy(a)|0;Ow(0,88802,e)|0;Ow(3,91952,g+8|0)|0;Ow(3,88854,g+16|0)|0;Ow(3,88926,g+24|0)|0;Vn(a,b)}break}default:{Vn(a,b);if((d|0)==3)Am(a)}}Jn(a,b);Kn(a,b);if(0){e=c[15686]|0;j=c[46365]|0;i=+h[22909];c[f>>2]=d;c[f+4>>2]=j;h[f+8>>3]=i;f1(e,88964,f)|0;DL()}Ln(a,b);l=g;return}function zm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+16|0;g=Bm(a,b,j,0,2,0)|0;i=cs(g,b)|0;e=a+16|0;a=0;while(1){if((a|0)>=(b|0))break;f=i+(a<<2)|0;d=0;while(1){if((d|0)==(b|0))break;h[(c[(c[(c[e>>2]|0)+160>>2]|0)+(a<<2)>>2]|0)+(d<<3)>>3]=+(c[(c[f>>2]|0)+(d<<2)>>2]|0);d=d+1|0}a=a+1|0}C_(c[i>>2]|0);C_(i);ar(g);l=j;return}function Am(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0;f=a+16|0;d=Ry(a)|0;while(1){if(!d)break;b=Dx(a,d)|0;while(1){if(!b)break;g=c[b>>2]&3;e=(c[c[((g|0)==3?b:b+48|0)+40>>2]>>2]|0)>>>4;g=(c[c[((g|0)==2?b:b+-48|0)+40>>2]>>2]|0)>>>4;if((e|0)!=(g|0)){j=+h[(c[b+16>>2]|0)+136>>3];i=c[(c[f>>2]|0)+160>>2]|0;h[(c[i+(g<<2)>>2]|0)+(e<<3)>>3]=j;h[(c[i+(e<<2)>>2]|0)+(g<<3)>>3]=j}b=Fx(a,b)|0}d=Sy(a,d)|0}return}function Bm(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0;j=ay(a)|0;G=FI()|0;if((f|0)==2){k=0;D=0}else{D=mx(a,2,90566,0)|0;k=(c[46404]|0)!=0&1;D=(D|0)!=0}A=(e|1|0)==3;E=uH(b*20|0)|0;F=uH(b<<2)|0;l=(j<<1)+b<<2;m=uH(l)|0;z=A|D;if(z)f=uH(l)|0;else f=0;C=(k|0)!=0;if(C)j=uH(l)|0;else j=0;if(A)k=uH(l)|0;else k=0;l=0;x=Ry(a)|0;y=0;while(1){if(!x)break;II(G);if((c[(c[x+16>>2]|0)+120>>2]|0)!=(y|0)){B=12;break}c[F+(y<<2)>>2]=x;u=E+(y*20|0)+4|0;c[u>>2]=m;v=E+(y*20|0)+8|0;c[v>>2]=z?f:0;w=E+(y*20|0)+12|0;c[w>>2]=C?j:0;c[E+(y*20|0)+16>>2]=A?k:0;r=1;t=Ix(a,x)|0;s=1;q=l;m=m+4|0;f=z?f+4|0:f;j=C?j+4|0:j;k=A?k+4|0:k;while(1){if(!t)break;n=c[t>>2]&3;p=t+-48|0;l=t+48|0;do if((c[((n|0)==2?t:p)+40>>2]|0)==(c[((n|0)==3?t:l)+40>>2]|0)){n=r;p=s;l=q}else{n=Cm(G,t,r)|0;if((n|0)!=(r|0)){if(C){p=(c[w>>2]|0)+(n<<2)|0;g[p>>2]=+h[(c[t+16>>2]|0)+128>>3]+ +g[p>>2]}if(!D){n=r;p=s;l=q;break}n=(c[v>>2]|0)+(n<<2)|0;H=+h[(c[t+16>>2]|0)+136>>3];o=+(~~+g[n>>2]|0);g[n>>2]=H>o?H:o;n=r;p=s;l=q;break}I=c[t>>2]&3;l=(I|0)==3?t:l;q=q+1|0;n=r+1|0;r=m+4|0;c[m>>2]=c[(c[(c[((c[l+40>>2]|0)==(x|0)?((I|0)==2?t:p):l)+40>>2]|0)+16>>2]|0)+120>>2];if(C){g[j>>2]=+h[(c[t+16>>2]|0)+128>>3];j=j+4|0}if(D){l=f+4|0;g[f>>2]=+h[(c[t+16>>2]|0)+136>>3];if(A){f=l;B=27}else f=l}else if(A){g[f>>2]=1.0;f=f+4|0;B=27}if((B|0)==27){B=0;l=wx(t,98533)|0;if((l|0)!=0?(y$(l,132627,4)|0)==0:0)o=0.0;else o=(x|0)==(c[((c[t>>2]&3|0)==2?t:p)+40>>2]|0)?1.0:-1.0;g[k>>2]=o;k=k+4|0}p=s+1|0;l=q;m=r}while(0);r=n;t=Jx(a,t,x)|0;s=p;q=l}c[E+(y*20|0)>>2]=s;c[c[u>>2]>>2]=y;l=q;x=Sy(a,x)|0;y=y+1|0}if((B|0)==12)qa(89003,89018,819,89030);if(A)Dm(E,b,e,F);n=(l|0)/2|0;a:do if((n|0)!=(ay(a)|0)){l=(n<<1)+b<<2;k=wH(c[E+4>>2]|0,l)|0;if(D)f=wH(c[E+8>>2]|0,l)|0;if(C){m=0;j=wH(c[E+12>>2]|0,l)|0}else m=0;while(1){if((m|0)>=(b|0))break a;l=c[E+(m*20|0)>>2]|0;c[E+(m*20|0)+4>>2]=k;if(D){c[E+(m*20|0)+8>>2]=f;f=f+(l<<2)|0}if(C){c[E+(m*20|0)+12>>2]=j;j=j+(l<<2)|0}m=m+1|0;k=k+(l<<2)|0}}while(0);c[d>>2]=n;if(!i)C_(F);else c[i>>2]=F;JI(G);return E|0}function Cm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=c[b>>2]&3;e=c[(c[(c[((f|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+120>>2]|0;b=c[(c[(c[((f|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+120>>2]|0;f=(e|0)>(b|0);return KI(a,f?b:e,f?e:b,d)|0}function Dm(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=0;while(1){if((g|0)>=(d|0)){g=0;break}h=c[(c[f+(g<<2)>>2]|0)+16>>2]|0;a[h+157>>0]=0;a[h+158>>0]=0;g=g+1|0}while(1){if((g|0)>=(d|0))break;if(!(a[(c[(c[f+(g<<2)>>2]|0)+16>>2]|0)+157>>0]|0))Em(b,g,e,f);g=g+1|0}return}function Em(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0;q=(c[f+(d<<2)>>2]|0)+16|0;l=c[q>>2]|0;a[l+157>>0]=1;a[l+158>>0]=1;l=b+(d*20|0)|0;m=b+(d*20|0)+16|0;n=b+(d*20|0)+4|0;o=(e|0)==3?-1.0:1.0;k=1;a:while(1){if((k|0)>=(c[l>>2]|0)){h=14;break}h=(c[m>>2]|0)+(k<<2)|0;do if(!(+g[h>>2]==1.0)){p=c[(c[n>>2]|0)+(k<<2)>>2]|0;i=c[(c[f+(p<<2)>>2]|0)+16>>2]|0;if(!(a[i+158>>0]|0)){if(a[i+157>>0]|0)break;Em(b,p,e,f);break}g[h>>2]=o;i=b+(p*20|0)+4|0;j=c[b+(p*20|0)>>2]|0;h=1;while(1){if((h|0)>=(j|0)){h=9;break a}if((c[(c[i>>2]|0)+(h<<2)>>2]|0)==(d|0))break;h=h+1|0}g[(c[b+(p*20|0)+16>>2]|0)+(h<<2)>>2]=-1.0}while(0);k=k+1|0}if((h|0)==9)qa(89044,89018,721,89064);else if((h|0)==14){a[(c[q>>2]|0)+158>>0]=0;return}}function Fm(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;a=JL(a,mx(a,0,89205,0)|0,2,0)|0;if((a|0)==0|(a|0)>2){c[b>>2]=89205;Ow(0,89214,b)|0;a=2}l=d;return a|0}function Gm(a){a=a|0;var b=0,d=0,e=0;d=$x(a)|0;c[46026]=mx(a,1,99597,0)|0;e=mx(a,1,90570,0)|0;b=Ry(a)|0;while(1){if(!b)break;_l(b);$l(c[46026]|0,e,b,d)|0;b=Sy(a,b)|0}d=Ry(a)|0;while(1){if(!d)break;b=Dx(a,d)|0;while(1){if(!b)break;Hm(b);b=Fx(a,b)|0}d=Sy(a,d)|0}return}function Hm(a){a=a|0;var b=0.0;zz(a,134378,176,1)|0;dM(a)|0;b=+KL(a,c[46404]|0,1.0,1.0);h[(c[a+16>>2]|0)+128>>3]=b;return}function Im(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0;a=tH(64)|0;e=a+8|0;f=d+8|0;g=e+48|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));d=c[d+56>>2]|0;c[a+56>>2]=d;b[(c[d+16>>2]|0)+168>>1]=1;return a|0}function Jm(a,b,c){a=a|0;b=b|0;c=c|0;C_(b);return}function Km(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[b>>2]|0;e=c[d>>2]|0;if(a>>>0<=e>>>0)if(a>>>0>=e>>>0){e=c[b+24>>2]|0;a=c[d+24>>2]|0;if(e>>>0<=a>>>0)if(e>>>0>=a>>>0){a=~~(+h[b+8>>3]-+h[d+8>>3]);if(!a){a=~~(+h[b+16>>3]-+h[d+16>>3]);if(!a){a=~~(+h[b+32>>3]-+h[d+32>>3]);if(!a)a=~~(+h[b+40>>3]-+h[d+40>>3])}}}else a=-1;else a=1}else a=-1;else a=1;return a|0}function Lm(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0.0;k=l;l=l+16|0;g=k;h=e+16|0;i=b[(c[h>>2]|0)+168>>1]|0;j=i<<16>>16;if(i<<16>>16!=1&(a[191874]|0)==0){i=uH(j<<2)|0;g=0;while(1){if((g|0)>=(j|0))break;c[i+(g<<2)>>2]=e;e=c[(c[e+16>>2]|0)+172>>2]|0;g=g+1|0}m=+(f|0);XK(d,i,0,j,m,m,17764);e=0;while(1){if((e|0)>=(j|0))break;g=c[i+(e<<2)>>2]|0;h=g+16|0;if(c[(c[h>>2]|0)+96>>2]|0){f=dz(c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)|0;jM(f,c[(c[h>>2]|0)+96>>2]|0)}cL(g);e=e+1|0}C_(i)}else{c[g>>2]=e;m=+(f|0);XK(d,g,0,1,m,m,17764);if(c[(c[h>>2]|0)+96>>2]|0){j=dz(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0;jM(j,c[(c[h>>2]|0)+96>>2]|0)}cL(e)}l=k;return}function Mm(a){a=a|0;return 0}function Nm(a){a=a|0;return 0}function Om(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,D=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=l;l=l+384|0;O=Q+368|0;P=Q+112|0;j=Q+32|0;r=Q+336|0;K=Q+320|0;L=Q+304|0;M=Q+288|0;N=Q+272|0;i=Q+256|0;H=Q+240|0;I=Q+224|0;J=Q+208|0;t=Q+192|0;u=Q+176|0;v=Q+160|0;z=Q+144|0;A=Q+128|0;B=Q+96|0;D=Q+16|0;G=Q;a:do switch(GJ(b)|0){case 3:case 1:{f=tH(8)|0;z=b+16|0;b=c[z>>2]|0;i=c[b+12>>2]|0;do if(!(e<<24>>24)){b=c[i+8>>2]|0;if((b|0)>2){y=0.0;j=c[i+44>>2]|0;e=0;p=+g[d>>2];q=+g[d+4>>2];break}else{y=+j2()*.01;b=8;j=0;e=1;p=0.0;q=0.0;break}}else if(!(c[i+40>>2]&2048)){q=+h[b+88>>3];p=-q;y=+h[b+80>>3];x=y*-.5;h[j>>3]=p;h[j+8>>3]=x;h[j+16>>3]=q;h[j+24>>3]=x;y=y*.5;h[j+32>>3]=q;h[j+40>>3]=y;h[j+48>>3]=p;h[j+56>>3]=y;y=0.0;b=4;e=0;p=0.0;q=0.0;break}else{iM(r,i);p=+h[r>>3];x=+h[r+8>>3];q=+h[r+16>>3];y=+h[r+24>>3];h[j>>3]=p;h[j+8>>3]=x;h[j+16>>3]=q;h[j+24>>3]=x;h[j+32>>3]=q;h[j+40>>3]=y;h[j+48>>3]=p;h[j+56>>3]=y;y=0.0;b=4;e=0;p=0.0;q=0.0;break}while(0);c[f+4>>2]=b;r=tH(b<<4)|0;c[f>>2]=r;s=1.0/+(b|0);t=d+8|0;u=d+4|0;v=(b|0)==4;w=-p;x=-q;i=0;while(1){if((b|0)<=(i|0))break a;do if(e){k=+(i|0)*6.283185307179586*s+y;m=+E(+k);k=+F(+k);if(!(a[t>>0]|0)){P=c[z>>2]|0;n=k*+g[u>>2]*+h[P+80>>3];k=m*+g[d>>2]*(+h[P+96>>3]+ +h[P+88>>3])}else{P=c[z>>2]|0;n=(+h[P+80>>3]+ +g[u>>2])*k;k=(+h[P+96>>3]+ +h[P+88>>3]+ +g[d>>2])*m}o=k*.5;k=n*.5}else{if(!(a[t>>0]|0)){o=+h[j+(i<<4)>>3]*p;k=+h[j+(i<<4)+8>>3]*q;break}if(!v){o=+h[j+(i<<4)>>3];k=+h[j+(i<<4)+8>>3];n=+C(+(k*k+o*o));o=(p/n+1.0)*o;k=(q/n+1.0)*k;break}switch(i|0){case 0:{m=q;k=p;break}case 1:{m=q;k=w;break}case 2:{m=x;k=w;break}case 3:{m=x;k=p;break}default:{m=0.0;k=0.0}}o=+h[j+(i<<4)>>3]+k;k=+h[j+(i<<4)+8>>3]+m}while(0);O=c[z>>2]|0;P=b-i+-1|0;h[r+(P<<4)>>3]=+h[O+16>>3]+o;h[r+(P<<4)+8>>3]=+h[O+24>>3]+k;i=i+1|0}}case 2:{G=b+16|0;f=c[(c[G>>2]|0)+12>>2]|0;k=+h[f+16>>3];o=+h[f+24>>3];m=+h[f+32>>3];n=+h[f+40>>3];f=tH(8)|0;c[f+4>>2]=4;b=tH(64)|0;c[f>>2]=b;G=(c[G>>2]|0)+16|0;c[P>>2]=c[G>>2];c[P+4>>2]=c[G+4>>2];c[P+8>>2]=c[G+8>>2];c[P+12>>2]=c[G+12>>2];if(!(a[d+8>>0]|0)){c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(i,k,o,O,d);c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];N=(c[f>>2]|0)+16|0;c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(H,k,n,O,d);c[N>>2]=c[H>>2];c[N+4>>2]=c[H+4>>2];c[N+8>>2]=c[H+8>>2];c[N+12>>2]=c[H+12>>2];N=(c[f>>2]|0)+32|0;c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(I,m,n,O,d);c[N>>2]=c[I>>2];c[N+4>>2]=c[I+4>>2];c[N+8>>2]=c[I+8>>2];c[N+12>>2]=c[I+12>>2];N=(c[f>>2]|0)+48|0;c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(J,m,o,O,d);c[N>>2]=c[J>>2];c[N+4>>2]=c[J+4>>2];c[N+8>>2]=c[J+8>>2];c[N+12>>2]=c[J+12>>2];break a}else{y=k-+g[d>>2];J=d+4|0;x=o-+g[J>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Pm(K,y,x,O);c[b>>2]=c[K>>2];c[b+4>>2]=c[K+4>>2];c[b+8>>2]=c[K+8>>2];c[b+12>>2]=c[K+12>>2];K=(c[f>>2]|0)+16|0;x=k-+g[d>>2];y=n+ +g[J>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Pm(L,x,y,O);c[K>>2]=c[L>>2];c[K+4>>2]=c[L+4>>2];c[K+8>>2]=c[L+8>>2];c[K+12>>2]=c[L+12>>2];L=(c[f>>2]|0)+32|0;y=m+ +g[d>>2];x=n+ +g[J>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Pm(M,y,x,O);c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];M=(c[f>>2]|0)+48|0;x=m+ +g[d>>2];y=o-+g[J>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Pm(N,x,y,O);c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];break a}}case 4:{b=b+16|0;f=tH(8)|0;c[f+4>>2]=4;i=tH(64)|0;c[f>>2]=i;j=c[b>>2]|0;N=j+16|0;c[P>>2]=c[N>>2];c[P+4>>2]=c[N+4>>2];c[P+8>>2]=c[N+8>>2];c[P+12>>2]=c[N+12>>2];k=-+h[j+88>>3];if(!(a[d+8>>0]|0)){x=-+h[j+80>>3];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(A,k,x,O,d);c[i>>2]=c[A>>2];c[i+4>>2]=c[A+4>>2];c[i+8>>2]=c[A+8>>2];c[i+12>>2]=c[A+12>>2];N=(c[f>>2]|0)+16|0;M=c[b>>2]|0;x=-+h[M+88>>3];y=+h[M+80>>3];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(B,x,y,O,d);c[N>>2]=c[B>>2];c[N+4>>2]=c[B+4>>2];c[N+8>>2]=c[B+8>>2];c[N+12>>2]=c[B+12>>2];N=(c[f>>2]|0)+32|0;M=c[b>>2]|0;y=+h[M+96>>3];x=+h[M+80>>3];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(D,y,x,O,d);c[N>>2]=c[D>>2];c[N+4>>2]=c[D+4>>2];c[N+8>>2]=c[D+8>>2];c[N+12>>2]=c[D+12>>2];N=(c[f>>2]|0)+48|0;M=c[b>>2]|0;x=+h[M+96>>3];y=-+h[M+80>>3];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Qm(G,x,y,O,d);c[N>>2]=c[G>>2];c[N+4>>2]=c[G+4>>2];c[N+8>>2]=c[G+8>>2];c[N+12>>2]=c[G+12>>2];break a}else{y=k-+g[d>>2];M=d+4|0;x=-+h[j+80>>3]-+g[M>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Pm(t,y,x,O);c[i>>2]=c[t>>2];c[i+4>>2]=c[t+4>>2];c[i+8>>2]=c[t+8>>2];c[i+12>>2]=c[t+12>>2];N=(c[f>>2]|0)+16|0;L=c[b>>2]|0;x=-+h[L+88>>3]-+g[d>>2];y=+h[L+80>>3]+ +g[M>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Pm(u,x,y,O);c[N>>2]=c[u>>2];c[N+4>>2]=c[u+4>>2];c[N+8>>2]=c[u+8>>2];c[N+12>>2]=c[u+12>>2];N=(c[f>>2]|0)+32|0;L=c[b>>2]|0;y=+h[L+96>>3]+ +g[d>>2];x=+h[L+80>>3]+ +g[M>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Pm(v,y,x,O);c[N>>2]=c[v>>2];c[N+4>>2]=c[v+4>>2];c[N+8>>2]=c[v+8>>2];c[N+12>>2]=c[v+12>>2];N=(c[f>>2]|0)+48|0;L=c[b>>2]|0;x=+h[L+96>>3]+ +g[d>>2];y=-+h[L+80>>3]-+g[M>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];Pm(z,x,y,O);c[N>>2]=c[z>>2];c[N+4>>2]=c[z+4>>2];c[N+8>>2]=c[z+8>>2];c[N+12>>2]=c[z+12>>2];break a}}default:f=0}while(0);l=Q;return f|0}function Pm(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;c=+h[d+8>>3]+c;h[a>>3]=+h[d>>3]+b;h[a+8>>3]=c;return}function Qm(a,b,c,d,e){a=a|0;b=+b;c=+c;d=d|0;e=e|0;c=+g[e+4>>2]*c+ +h[d+8>>3];h[a>>3]=+g[e>>2]*b+ +h[d>>3];h[a+8>>3]=c;return}function Rm(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;o=l;l=l+112|0;j=o+88|0;i=o+72|0;k=o+32|0;m=o+16|0;n=o;f=o+56|0;g=o+40|0;h=b+48|0;r=(c[(c[((c[b>>2]&3|0)==3?b:h)+40>>2]|0)+16>>2]|0)+16|0;p=b+16|0;q=(c[p>>2]|0)+16|0;c[i>>2]=c[r>>2];c[i+4>>2]=c[r+4>>2];c[i+8>>2]=c[r+8>>2];c[i+12>>2]=c[r+12>>2];c[j>>2]=c[q>>2];c[j+4>>2]=c[q+4>>2];c[j+8>>2]=c[q+8>>2];c[j+12>>2]=c[q+12>>2];Sm(f,i,j);c[m>>2]=c[f>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];f=b+-48|0;q=(c[(c[((c[b>>2]&3|0)==2?b:f)+40>>2]|0)+16>>2]|0)+16|0;p=(c[p>>2]|0)+56|0;c[i>>2]=c[q>>2];c[i+4>>2]=c[q+4>>2];c[i+8>>2]=c[q+8>>2];c[i+12>>2]=c[q+12>>2];c[j>>2]=c[p>>2];c[j+4>>2]=c[p+4>>2];c[j+8>>2]=c[p+8>>2];c[j+12>>2]=c[p+12>>2];Sm(g,i,j);c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];if(!e){g=-1111;f=-1111}else{r=c[b>>2]&3;g=c[(c[(c[((r|0)==2?b:f)+40>>2]|0)+16>>2]|0)+288>>2]|0;f=c[(c[(c[((r|0)==3?b:h)+40>>2]|0)+16>>2]|0)+288>>2]|0};c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2];uU(d,i,f,j,g,k)|0;p=k;q=c[p+4>>2]|0;r=a;c[r>>2]=c[p>>2];c[r+4>>2]=q;l=o;return}function Sm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function Tm(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=l;l=l+144|0;p=u+104|0;q=u+88|0;o=u+80|0;n=u+72|0;j=u+64|0;s=u+128|0;k=u+32|0;m=u+124|0;t=u+16|0;r=u;i=u+120|0;h=(c[b+16>>2]|0)+144|0;g=c[h>>2]|0;h=c[h+4>>2]|0;v=j;c[v>>2]=g;c[v+4>>2]=h;v=g;c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];h=g+(h+-1<<4)|0;c[r>>2]=c[h>>2];c[r+4>>2]=c[h+4>>2];c[r+8>>2]=c[h+8>>2];c[r+12>>2]=c[h+12>>2];a:do if(!(f<<24>>24)){g=-1111;f=-1111}else{g=-1111;f=-1111;h=0;while(1){if((h|0)>=(e|0))break a;if((f|0)==-1111){f=c[d+(h<<2)>>2]|0;c[q>>2]=c[f>>2];c[q+4>>2]=c[f+4>>2];c[p>>2]=c[t>>2];c[p+4>>2]=c[t+4>>2];c[p+8>>2]=c[t+8>>2];c[p+12>>2]=c[t+12>>2];f=(vU(q,p)|0)==0;f=f?-1111:h}if((g|0)==-1111){g=c[d+(h<<2)>>2]|0;c[q>>2]=c[g>>2];c[q+4>>2]=c[g+4>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];g=(vU(q,p)|0)==0;g=g?-1111:h}h=h+1|0}}while(0);Um(d,e,f,g,i,m);c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;h=c[i>>2]|0;v=c[m>>2]|0;c[p>>2]=c[j>>2];c[p+4>>2]=c[j+4>>2];if((wU(h,v,p,k,s)|0)<0){t=qy(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;v=qy(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[n>>2]=t;c[n+4>>2]=v;Ow(1,89563,n)|0}else{if(0>1){g=c[15686]|0;n=qy(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;f=b+-48|0;v=qy(c[((c[b>>2]&3|0)==2?b:f)+40>>2]|0)|0;c[o>>2]=n;c[o+4>>2]=v;f1(g,89611,o)|0;g=b}else{f=b+-48|0;g=b}PK(b,c[((c[g>>2]&3|0)==2?b:f)+40>>2]|0,c[s>>2]|0,c[s+4>>2]|0,17764);C_(h);c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];iL(a,b,q,p)}l=u;return}function Um(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;i=0;h=0;while(1){if((i|0)>=(b|0))break;if(!((i|0)==(d|0)|(i|0)==(e|0)))h=(c[(c[a+(i<<2)>>2]|0)+4>>2]|0)+h|0;i=i+1|0}o=uH(h<<5)|0;i=0;n=0;while(1){if((n|0)>=(b|0))break;a:do if(!((n|0)==(d|0)|(n|0)==(e|0))){m=a+(n<<2)|0;l=0;while(1){j=c[m>>2]|0;k=c[j+4>>2]|0;if((l|0)>=(k|0))break a;p=l+1|0;q=o+(i<<5)|0;j=(c[j>>2]|0)+(l<<4)|0;c[q>>2]=c[j>>2];c[q+4>>2]=c[j+4>>2];c[q+8>>2]=c[j+8>>2];c[q+12>>2]=c[j+12>>2];j=o+(i<<5)+16|0;k=(c[c[m>>2]>>2]|0)+(((p|0)<(k|0)?p:0)<<4)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];l=p;i=i+1|0}}while(0);n=n+1|0}if((i|0)==(h|0)){c[f>>2]=o;c[g>>2]=h;return}else qa(89625,89632,77,89647)}function Vm(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+32|0;k=n+12|0;f=n;tq(f,a);c[k>>2]=c[f>>2];c[k+4>>2]=c[f+4>>2];c[k+8>>2]=c[f+8>>2];f=Ry(a)|0;while(1){if(!f)break;g=Dx(a,f)|0;while(1){if(!g)break;JK(g);g=Fx(a,g)|0}f=Sy(a,f)|0}h=Bw(17728,c[4555]|0)|0;f=Ry(a)|0;while(1){if(!f)break;g=Dx(a,f)|0;while(1){if(!g)break;if((c[46363]|0)>1?(i=c[g+16>>2]|0,(c[i+8>>2]|0)!=0):0){o=i+168|0;b[o>>1]=(b[o>>1]|0)+1<<16>>16}else m=14;if((m|0)==14?(m=0,j=Wm(h,g)|0,(j|0)!=(g|0)):0){o=c[j+16>>2]|0;p=o+168|0;b[p>>1]=(b[p>>1]|0)+1<<16>>16;o=o+172|0;c[(c[g+16>>2]|0)+172>>2]=c[o>>2];c[o>>2]=g}g=Fx(a,g)|0}f=Sy(a,f)|0}xw(h)|0;if(!(nb[d&63](a,k,e)|0)){c[46367]=1;f=0}else f=1;l=n;return f|0}function Wm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0,j=0.0,k=0.0,m=0.0,n=0.0,o=0,p=0,q=0;q=l;l=l+64|0;p=q;e=c[b>>2]&3;i=c[((e|0)==3?b:b+48|0)+40>>2]|0;e=c[((e|0)==2?b:b+-48|0)+40>>2]|0;do if(i>>>0>=e>>>0){d=b+16|0;if(i>>>0>e>>>0){d=c[d>>2]|0;o=e;e=i;k=+h[d+16>>3];m=+h[d+24>>3];g=+h[d+56>>3];f=+h[d+64>>3];break}o=c[d>>2]|0;j=+h[o+56>>3];n=+h[o+64>>3];g=+h[o+16>>3];f=+h[o+24>>3];if(!(gj)){d=f>n;if(f>2]|0;o=i;k=+h[d+56>>3];m=+h[d+64>>3];g=+h[d+16>>3];f=+h[d+24>>3]}while(0);c[p+8>>2]=o;h[p+16>>3]=g;h[p+24>>3]=f;c[p+32>>2]=e;h[p+40>>3]=k;h[p+48>>3]=m;c[p+56>>2]=b;p=c[(nb[c[a>>2]&63](a,p,1)|0)+56>>2]|0;l=q;return p|0}function Xm(a,b){a=a|0;b=b|0;return Vm(a,21,b)|0}function Ym(d,e,f){d=d|0;e=e|0;f=f|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0;F=l;l=l+112|0;B=F+88|0;A=F+72|0;t=F+40|0;q=F+8|0;p=F;u=F+64|0;C=F+48|0;D=F+24|0;i=(c[46363]|0)>1&1;do if((f|0)>5){s=tH(($x(d)|0)<<2)|0;o=(f|0)==8;n=o&1;m=Ry(d)|0;r=0;while(1){if(!m)break;j=Om(m,e,n)|0;k=(c[m+16>>2]|0)+288|0;if(!j){c[k>>2]=-1111;j=r}else{c[k>>2]=r;c[s+(r<<2)>>2]=j;j=r+1|0}m=Sy(d,m)|0;r=j}if(s){j=ls(s,r)|0;if(j|0){if(o){y=0;z=s;x=s;w=1;break}y=rU(s,r)|0;z=s;x=s;w=1;break}if(o){Ow(0,89661,p)|0;j=0;y=0;z=s;x=s;w=1;break}else{G=+g[e+4>>2];h[q>>3]=+g[e>>2];h[q+8>>3]=G;Ow(0,89739,q)|0;j=0;y=0;z=s;x=s;w=1;break}}else{j=0;y=0;z=0;x=0;w=0}}else{j=0;y=0;z=0;r=0;x=0;w=0}while(0);if(0){k=c[15686]|0;if((f|0)==8&(j|0)!=0)m=89845;else m=(y|0)==0?89831:(f|0)==10?107030:89821;c[t>>2]=m;f1(k,89862,t)|0}v=(y|0)!=0;a:do if(!v){if((f|0)==8&(j|0)!=0){bN(d,0);i=1}}else{k=Ry(d)|0;while(1){if(!k)break a;j=Dx(d,k)|0;while(1){if(!j)break;t=(c[j+16>>2]|0)+144|0;Rm(u,j,y,1,0,0);q=u;s=c[q+4>>2]|0;c[t>>2]=c[q>>2];c[t+4>>2]=s;j=Fx(d,j)|0}k=Sy(d,k)|0}}while(0);p=(i|0)==0;q=d+60|0;s=(f|0)==10;i=0;o=Ry(d)|0;j=0;while(1){if(!o)break;t=o+16|0;e=Dx(d,o)|0;while(1){if(!e)break;n=c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0;k=e+16|0;m=c[k>>2]|0;if(!p?(c[m+8>>2]|0)!=0:0){H=(c[t>>2]|0)+16|0;u=m+16|0;c[A>>2]=c[H>>2];c[A+4>>2]=c[H+4>>2];c[A+8>>2]=c[H+8>>2];c[A+12>>2]=c[H+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];Sm(C,A,B);n=(c[n+16>>2]|0)+16|0;u=(c[k>>2]|0)+56|0;c[A>>2]=c[n>>2];c[A+4>>2]=c[n+4>>2];c[A+8>>2]=c[n+8>>2];c[A+12>>2]=c[n+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];Sm(D,A,B);c[A>>2]=c[C>>2];c[A+4>>2]=c[C+4>>2];c[A+8>>2]=c[C+8>>2];c[A+12>>2]=c[C+12>>2];c[B>>2]=c[D>>2];c[B+4>>2]=c[D+4>>2];c[B+8>>2]=c[D+8>>2];c[B+12>>2]=c[D+12>>2];iL(d,e,A,B)}else E=35;b:do if((E|0)==35){E=0;H=b[m+168>>1]|0;k=H<<16>>16;if(H<<16>>16){if((o|0)==(n|0)){if(!i){j=tH(96)|0;c[j+84>>2]=tH((($x(d)|0)<<5)+11520|0)|0;i=j}Lm(i,e,c[(c[(c[q>>2]|0)+16>>2]|0)+248>>2]|0);break}if(!v){yJ(d,e,f,17764);break}k=a[191874]|0?1:k;m=e;n=0;while(1){if((n|0)>=(k|0))break b;if(s)Tm(d,m,z,r,1);else Zm(d,m);m=c[(c[m+16>>2]|0)+172>>2]|0;n=n+1|0}}}while(0);e=Fx(d,e)|0}o=Sy(d,o)|0}if(v)tU(y);if(i|0){C_(c[i+84>>2]|0);C_(j)}if(w){i=0;while(1){if((i|0)>=(r|0))break;C_(c[z+(i<<2)>>2]|0);i=i+1|0}C_(x)}l=F;return 0}function Zm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+96|0;g=k+64|0;f=k+48|0;d=k+40|0;h=k+80|0;e=k+32|0;i=k+16|0;j=k;m=(c[b+16>>2]|0)+144|0;n=c[m>>2]|0;m=c[m+4>>2]|0;o=e;c[o>>2]=n;c[o+4>>2]=m;o=n;c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];m=n+(m+-1<<4)|0;c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];nV(g,h);if(0>1){o=c[15686]|0;m=qy(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;e=b+-48|0;n=qy(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)|0;c[d>>2]=m;c[d+4>>2]=n;f1(o,89887,d)|0;d=e;e=b}else{d=b+-48|0;e=b}PK(b,c[((c[e>>2]&3|0)==2?b:d)+40>>2]|0,c[h>>2]|0,c[h+4>>2]|0,17764);c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];iL(a,b,f,g);l=k;return}function _m(a,d){a=a|0;d=d|0;var e=0;e=b[(c[a+16>>2]|0)+136>>1]&14;if(d<<24>>24)$m(a)|0;if(e<<16>>16)Xm(a,e&65535)|0;return}function $m(a){a=a|0;var b=0,d=0,e=0,f=0;d=an(a)|0;b=Ry(a)|0;while(1){if(!b)break;e=c[b+16>>2]|0;f=c[e+132>>2]|0;h[e+16>>3]=+h[f>>3]*72.0;h[e+24>>3]=+h[f+8>>3]*72.0;b=Sy(a,b)|0}return d|0}function an(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0.0,i=0.0,j=0,k=0;a:do if((c[a+60>>2]|0)==(a|0)?(d=a+16|0,e=c[d>>2]|0,(c[(c[e+8>>2]|0)+84>>2]|0)!=0):0){if(!(+h[e+16>>3]!=0.0)?!(+h[e+24>>3]!=0.0):0)b=0;else{bn(a);b=1;e=c[d>>2]|0}j=(c[e+116>>2]&1|0)==0;if(!j){k=e+32|0;i=+h[k>>3];d=e+40|0;h[k>>3]=+h[d>>3];h[d>>3]=i}d=c[e+8>>2]|0;b:do switch(c[d+84>>2]|0){case 2:{f=+h[d+64>>3];if(f<=0.0)break a;g=f/+h[e+32>>3];f=+h[d+72>>3]/+h[e+40>>3];if(g<1.0|f<1.0)if(g>3];if(f<=0.0)break a;g=f/+h[e+32>>3];f=+h[d+72>>3]/+h[e+40>>3];if(!(g>1.0&f>1.0))break a;f=g>3];f=+h[e+40>>3]/+h[e+32>>3];if(f1){d=Ry(a)|0;while(1){if(!d)break c;b=Dx(a,d)|0;while(1){if(!b)break;if(c[(c[b+16>>2]|0)+8>>2]|0)cn(b,f,g);b=Fx(a,b)|0}d=Sy(a,d)|0}}while(0);b=Ry(a)|0;while(1){if(!b)break;k=c[(c[b+16>>2]|0)+132>>2]|0;h[k>>3]=+h[k>>3]*f;k=k+8|0;h[k>>3]=+h[k>>3]*g;b=Sy(a,b)|0}dn(a,f,g);b=1}else b=0;while(0);return b|0}function bn(b){b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;k=n+16|0;m=n;d=(c[b+16>>2]|0)+16|0;c[m>>2]=c[d>>2];c[m+4>>2]=c[d+4>>2];c[m+8>>2]=c[d+8>>2];c[m+12>>2]=c[d+12>>2];f=+h[m>>3];g=f*.013888888888888888;i=+h[m+8>>3];j=i*.013888888888888888;d=Ry(b)|0;while(1){if(!d)break;e=c[d+16>>2]|0;o=c[e+132>>2]|0;h[o>>3]=+h[o>>3]-g;o=o+8|0;h[o>>3]=+h[o>>3]-j;e=c[e+108>>2]|0;if(e|0?a[e+81>>0]|0:0){o=e+56|0;h[o>>3]=+h[o>>3]-f;o=e+64|0;h[o>>3]=+h[o>>3]-i}d=Sy(b,d)|0}e=Ry(b)|0;while(1){if(!e)break;d=Dx(b,e)|0;while(1){if(!d)break;if(c[(c[d+16>>2]|0)+8>>2]|0){c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];en(d,k)}d=Fx(b,d)|0}e=Sy(b,e)|0}c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];fn(b,k);l=n;return}function cn(b,d,e){b=b|0;d=+d;e=+e;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0;p=c[b>>2]&3;i=c[(c[(c[((p|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;s=(d+-1.0)*72.0;q=s*+h[i>>3];t=(e+-1.0)*72.0;r=t*+h[i+8>>3];p=c[(c[(c[((p|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;s=s*+h[p>>3];t=t*+h[p+8>>3];p=c[b+16>>2]|0;i=c[p+8>>2]|0;j=c[i+4>>2]|0;k=j+-1|0;b=0;i=c[i>>2]|0;while(1){if((b|0)>=(j|0))break;l=c[i+4>>2]|0;m=l+-1|0;n=(b|0)==(k|0);f=0;g=c[i>>2]|0;while(1){if((f|0)>=(l|0))break;do if(f|b){o=+h[g>>3];if((f|0)==(m|0)&n){h[g>>3]=o+q;u=g+8|0;h[u>>3]=+h[u>>3]+r;break}else{h[g>>3]=o*d;u=g+8|0;h[u>>3]=+h[u>>3]*e;break}}else{h[g>>3]=+h[g>>3]+s;u=g+8|0;h[u>>3]=+h[u>>3]+t}while(0);f=f+1|0;g=g+16|0}if(c[i+8>>2]|0){u=i+16|0;h[u>>3]=+h[u>>3]+s;u=i+24|0;h[u>>3]=+h[u>>3]+t}if(c[i+12>>2]|0){u=i+32|0;h[u>>3]=+h[u>>3]+q;u=i+40|0;h[u>>3]=+h[u>>3]+r}b=b+1|0;i=i+48|0}b=c[p+96>>2]|0;if(b|0?a[b+81>>0]|0:0){u=b+56|0;h[u>>3]=+h[u>>3]*d;u=b+64|0;h[u>>3]=+h[u>>3]*e}b=c[p+100>>2]|0;if(b|0?a[b+81>>0]|0:0){u=b+56|0;h[u>>3]=+h[u>>3]+q;u=b+64|0;h[u>>3]=+h[u>>3]+r}b=c[p+104>>2]|0;if(b|0?a[b+81>>0]|0:0){u=b+56|0;h[u>>3]=+h[u>>3]+s;u=b+64|0;h[u>>3]=+h[u>>3]+t}return}function dn(b,d,e){b=b|0;d=+d;e=+e;var f=0,g=0,i=0;i=b+16|0;g=c[i>>2]|0;b=g+32|0;h[b>>3]=+h[b>>3]*d;b=g+40|0;h[b>>3]=+h[b>>3]*e;b=g+16|0;h[b>>3]=+h[b>>3]*d;b=g+24|0;h[b>>3]=+h[b>>3]*e;b=c[g+12>>2]|0;if((b|0)!=0?(a[b+81>>0]|0)!=0:0){f=b+56|0;h[f>>3]=+h[f>>3]*d;f=b+64|0;h[f>>3]=+h[f>>3]*e;f=1;b=g}else{f=1;b=g}while(1){if((f|0)>(c[b+180>>2]|0))break;dn(c[(c[b+184>>2]|0)+(f<<2)>>2]|0,d,e);f=f+1|0;b=c[i>>2]|0}return}function en(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0;k=c[b+16>>2]|0;b=c[k+8>>2]|0;j=c[b+4>>2]|0;l=d+8|0;b=c[b>>2]|0;g=0;while(1){if((g|0)>=(j|0))break;i=c[b+4>>2]|0;e=c[b>>2]|0;f=0;while(1){if((f|0)>=(i|0))break;h[e>>3]=+h[e>>3]-+h[d>>3];m=e+8|0;h[m>>3]=+h[m>>3]-+h[l>>3];e=e+16|0;f=f+1|0}if(c[b+8>>2]|0){m=b+16|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+24|0;h[m>>3]=+h[m>>3]-+h[l>>3]}if(c[b+12>>2]|0){m=b+32|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+40|0;h[m>>3]=+h[m>>3]-+h[l>>3]}b=b+48|0;g=g+1|0}b=c[k+96>>2]|0;if(b|0?a[b+81>>0]|0:0){m=b+56|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+64|0;h[m>>3]=+h[m>>3]-+h[l>>3]}b=c[k+108>>2]|0;if(b|0?a[b+81>>0]|0:0){m=b+56|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+64|0;h[m>>3]=+h[m>>3]-+h[l>>3]}b=c[k+100>>2]|0;if(b|0?a[b+81>>0]|0:0){m=b+56|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+64|0;h[m>>3]=+h[m>>3]-+h[l>>3]}b=c[k+104>>2]|0;if(b|0?a[b+81>>0]|0:0){m=b+56|0;h[m>>3]=+h[m>>3]-+h[d>>3];m=b+64|0;h[m>>3]=+h[m>>3]-+h[l>>3]}return}function fn(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;j=k;g=+h[d>>3];i=b+16|0;b=c[i>>2]|0;e=b+32|0;h[e>>3]=+h[e>>3]-g;f=+h[d+8>>3];e=b+40|0;h[e>>3]=+h[e>>3]-f;e=b+16|0;h[e>>3]=+h[e>>3]-g;e=b+24|0;h[e>>3]=+h[e>>3]-f;e=c[b+12>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){m=e+56|0;h[m>>3]=+h[m>>3]-g;e=e+64|0;h[e>>3]=+h[e>>3]-f;e=1}else e=1;while(1){if((e|0)>(c[b+180>>2]|0))break;m=c[(c[b+184>>2]|0)+(e<<2)>>2]|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];fn(m,j);e=e+1|0;b=c[i>>2]|0}l=k;return}function gn(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0.0,i=0,j=0;i=l;l=l+16|0;d=i;lM(a);e=a+16|0;b=c[e>>2]|0;f=+h[b+16>>3]*.013888888888888888;g=+h[b+24>>3]*.013888888888888888;b=Ry(a)|0;while(1){if(!b)break;j=c[(c[b+16>>2]|0)+132>>2]|0;h[j>>3]=+h[j>>3]-f;j=j+8|0;h[j>>3]=+h[j>>3]-g;b=Sy(a,b)|0}j=(c[e>>2]|0)+16|0;c[d>>2]=c[j>>2];c[d+4>>2]=c[j+4>>2];c[d+8>>2]=c[j+8>>2];c[d+12>>2]=c[j+12>>2];hn(a,d);_m(a,1);l=i;return}function hn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0.0,j=0.0;g=l;l=l+16|0;f=g;d=a+16|0;a=1;while(1){e=c[d>>2]|0;if((a|0)>(c[e+180>>2]|0))break;e=c[(c[e+184>>2]|0)+(a<<2)>>2]|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];hn(e,f);a=a+1|0}j=+h[b>>3];f=e+32|0;h[f>>3]=+h[f>>3]-j;i=+h[b+8>>3];b=e+40|0;h[b>>3]=+h[b>>3]-i;b=e+16|0;h[b>>3]=+h[b>>3]-j;b=e+24|0;h[b>>3]=+h[b>>3]-i;l=g;return}function jn(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0;p=(e|0)>2;n=0;o=0;j=c[f+4>>2]|0;b=c[f>>2]|0;while(1){if((o|0)>=(d|0)){b=0;break}i=c[(c[g+(o<<2)>>2]|0)+16>>2]|0;l=a[i+119>>0]|0;a:do if(!(l<<24>>24)){k=b+8|0;h[b>>3]=+j2();i=j+8|0;h[j>>3]=+j2();if(p){b=2;while(1){if((b|0)==(e|0)){j=n;b=k;break a}q=+j2();h[(c[f+(b<<2)>>2]|0)+(o<<3)>>3]=q;b=b+1|0}}else{j=n;b=k}}else{k=c[i+132>>2]|0;m=b+8|0;h[b>>3]=+h[k>>3];i=j+8|0;h[j>>3]=+h[k+8>>3];b:do if(p){j=2;b=k+16|0;while(1){if((j|0)==(e|0))break b;h[(c[f+(j<<2)>>2]|0)+(o<<3)>>3]=+h[b>>3];j=j+1|0;b=b+8|0}}while(0);j=(l&255)>1?1:n;b=m}while(0);n=j;o=o+1|0;j=i}while(1){if((b|0)>=(e|0))break;Hs(d,c[f+(b<<2)>>2]|0);b=b+1|0}return n|0}function kn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0;d=tH(((O(b+1|0,b)|0)/2|0)<<2)|0;n=vn(b,b,0.0)|0;o=vn(b,b,0.0)|0;a:do if(!(c[a+8>>2]|0)){e=0;while(1){if((e|0)>=(b|0))break a;i=c[a+(e*20|0)>>2]|0;j=a+(e*20|0)+4|0;k=n+(e<<2)|0;f=1;while(1){if((f|0)>=(i|0))break;m=c[(c[j>>2]|0)+(f<<2)>>2]|0;h[(c[n+(m<<2)>>2]|0)+(e<<3)>>3]=-1.0;h[(c[k>>2]|0)+(m<<3)>>3]=-1.0;f=f+1|0}e=e+1|0}}else{e=0;while(1){if((e|0)>=(b|0))break a;i=c[a+(e*20|0)>>2]|0;j=a+(e*20|0)+4|0;k=a+(e*20|0)+8|0;m=n+(e<<2)|0;f=1;while(1){if((f|0)>=(i|0))break;p=c[(c[j>>2]|0)+(f<<2)>>2]|0;l=-1.0/+g[(c[k>>2]|0)+(f<<2)>>2];h[(c[n+(p<<2)>>2]|0)+(e<<3)>>3]=l;h[(c[m>>2]|0)+(p<<3)>>3]=l;f=f+1|0}e=e+1|0}}while(0);b:do if(!(Aq(b,n,o)|0)){C_(d);d=0}else{f=0;j=0;m=b;while(1){if((j|0)>=(b|0))break b;k=o+(j<<2)|0;e=j;i=f;while(1){if((e|0)==(b|0))break;if((j|0)==(e|0))l=0.0;else{p=c[k>>2]|0;l=+h[(c[o+(e<<2)>>2]|0)+(e<<3)>>3]+ +h[p+(j<<3)>>3]+ +h[p+(e<<3)>>3]*-2.0}g[d+(i<<2)>>2]=l;e=e+1|0;i=i+1|0}f=f+m|0;j=j+1|0;m=m+-1|0}}while(0);wn(n);wn(o);return d|0}function ln(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=l;l=l+16|0;q=r;if(c[a+8>>2]|0){d=mn(a,b)|0;f=0.0;e=0;p=0;while(1){if((p|0)>=(b|0))break;e=e+p|0;o=c[a+(p*20|0)>>2]|0;k=a+(p*20|0)+4|0;m=(O(p,b)|0)-e|0;n=a+(p*20|0)+8|0;j=1;while(1){if((j|0)>=(o|0))break;i=c[(c[k>>2]|0)+(j<<2)>>2]|0;if((i|0)>=(p|0)){i=d+(m+i<<2)|0;s=+g[(c[n>>2]|0)+(j<<2)>>2];f=f+ +B(+(+g[i>>2]-s));g[i>>2]=s}j=j+1|0}p=p+1|0}if(0){b=c[15686]|0;h[q>>3]=f;f1(b,89903,q)|0}}else d=0;l=r;return d|0}function mn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;h=m;i=tH(((O(b+1|0,b)|0)/2|0)<<2)|0;j=tH(b<<2)|0;yq(h,b);d=0;f=0;k=b;while(1){if((d|0)>=(b|0))break;hr(d,a,b,j);e=d;g=f;while(1){if((e|0)==(b|0))break;c[i+(g<<2)>>2]=c[j+(e<<2)>>2];e=e+1|0;g=g+1|0}d=d+1|0;f=f+k|0;k=k+-1|0}C_(j);zq(h);l=m;return i|0}function nn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;i=n;j=tH(((O(b+1|0,b)|0)/2|0)<<2)|0;k=tH(b<<2)|0;yq(i,b);d=0;f=0;m=b;while(1){if((d|0)>=(b|0))break;uq(d,a,b,k,i);e=d;h=f;while(1){if((e|0)==(b|0))break;g[j+(h<<2)>>2]=+(c[k+(e<<2)>>2]|0);e=e+1|0;h=h+1|0}d=d+1|0;f=f+m|0;m=m+-1|0}C_(k);zq(i);l=n;return j|0}function on(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=a+8|0;d=c[r>>2]|0;e=0;f=0;while(1){if((f|0)>=(b|0))break;e=(c[a+(f*20|0)>>2]|0)+e|0;f=f+1|0}f=tH(e<<2)|0;q=tH(b<<2)|0;e=0;while(1){if((e|0)>=(b|0))break;c[q+(e<<2)>>2]=0;e=e+1|0}if(!(c[r>>2]|0)){h=0;while(1){if((h|0)>=(b|0))break;c[a+(h*20|0)+8>>2]=f;Zr(a,h,q);i=a+(h*20|0)|0;j=c[i>>2]|0;k=a+(h*20|0)+4|0;l=+(j+-1|0);e=1;while(1){if((e|0)>=(j|0))break;p=c[(c[k>>2]|0)+(e<<2)>>2]|0;s=+((c[a+(p*20|0)>>2]|0)+-1|0)+l;g[f+(e<<2)>>2]=s-+((Yr(a,h,p,q)|0)<<1|0);e=e+1|0}_r(a,h,q);f=f+(c[i>>2]<<2)|0;h=h+1|0}f=nn(a,b)|0}else{j=0;while(1){if((j|0)>=(b|0))break;Zr(a,j,q);k=a+(j*20|0)|0;m=c[k>>2]|0;n=a+(j*20|0)+4|0;o=m+-2|0;p=a+(j*20|0)+8|0;i=1;while(1){if((i|0)>=(m|0))break;e=c[(c[n>>2]|0)+(i<<2)>>2]|0;h=o+(c[a+(e*20|0)>>2]|0)|0;s=+(h-((Yr(a,j,e,q)|0)<<1)|0);l=+g[(c[p>>2]|0)+(i<<2)>>2];if(l>2]=l;i=i+1|0}_r(a,j,q);c[p>>2]=f;f=f+(c[k>>2]<<2)|0;j=j+1|0}f=mn(a,b)|0}C_(q);C_(c[r>>2]|0);c[r>>2]=0;a:do if(d|0){e=0;while(1){if((e|0)>=(b|0))break a;c[a+(e*20|0)+8>>2]=d;d=d+(c[a+(e*20|0)>>2]<<2)|0;e=e+1|0}}while(0);return f|0}function pn(a,b,e,f,i,j,k,m,n){a=a|0;b=b|0;e=e|0;f=f|0;i=i|0;j=j|0;k=k|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0.0,w=0,x=0.0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,P=0.0;M=l;l=l+80|0;L=M+56|0;K=M+48|0;A=M+40|0;u=M+32|0;t=M+24|0;s=M+16|0;p=M+8|0;o=M;q=k&4;J=k&3;a:do if((n|0)<0)e=0;else{if(0)DL();k=(m|0)==2;b:do if(k){if(0)D1(91878,24,1,c[15686]|0)|0;e=on(a,b)|0;w=14}else{switch(m|0){case 1:{e=kn(a,b)|0;if(e|0){I=e;break b}Ow(0,91903,o)|0;Ow(3,91952,p)|0;w=15;break b}case 3:break;default:{w=15;break b}}if(0)D1(92005,21,1,c[15686]|0)|0;e=ln(a,b)|0;w=14}while(0);if((w|0)==14)if(!e)w=15;else I=e;do if((w|0)==15){if(0)D1(92027,26,1,c[15686]|0)|0;if(!(c[a+8>>2]|0)){I=nn(a,b)|0;break}else{I=mn(a,b)|0;break}}while(0);if(0){H=c[15686]|0;h[s>>3]=+EL();f1(H,92054,s)|0;D1(92066,25,1,H)|0;DL()}c:do if((b|0)>1&(q|0)!=0)if((qn(a,b,f,j,q,J,k&1)|0)<0){u=0;t=0;e=-1;a=0;s=0;q=0;p=0;o=0;m=0;k=0}else{k=0;while(1){if((k|0)>=(j|0)){y=0;w=35;break c}m=f+(k<<2)|0;r=1.0;e=0;while(1){if((e|0)==(b|0))break;x=+B(+(+h[(c[m>>2]|0)+(e<<3)>>3]));r=x>r?x:r;e=e+1|0}r=1.0/r;e=0;while(1){if((e|0)==(b|0)){e=0;break}H=(c[m>>2]|0)+(e<<3)|0;h[H>>3]=+h[H>>3]*r;e=e+1|0}while(1){if((e|0)==(b|0))break;x=(+j2()+-.5)*1.0e-06;H=(c[m>>2]|0)+(e<<3)|0;h[H>>3]=+h[H>>3]+x;e=e+1|0}Hs(b,c[m>>2]|0);k=k+1|0}}else{y=jn(0,b,j,f,i)|0;w=35}while(0);d:do if((w|0)==35){if(0){H=c[15686]|0;h[t>>3]=+EL();f1(H,92092,t)|0}if((b|0)==1|(n|0)==0){e=0;break a}if(0){H=c[15686]|0;h[u>>3]=+EL();f1(H,92054,u)|0;D1(89925,26,1,H)|0;DL()}s=j<<2;H=tH(s)|0;t=b<<2;a=O(t,j)|0;G=tH(a)|0;e=0;while(1){if((e|0)>=(j|0))break;m=G+((O(e,b)|0)<<2)|0;c[H+(e<<2)>>2]=m;o=f+(e<<2)|0;k=0;while(1){if((k|0)>=(b|0))break;g[m+(k<<2)>>2]=+h[(c[o>>2]|0)+(k<<3)>>3];k=k+1|0}e=e+1|0}e:do if(!J){p=b+-1|0;e=0;r=0.0;o=0;while(1){if((o|0)>=(p|0))break e;q=b-o|0;m=e;k=1;while(1){e=m+1|0;if((k|0)>=(q|0))break;m=e;r=+g[I+(e<<2)>>2]+r;k=k+1|0}o=o+1|0}}else r=+(b|0)*.5*+(b+-1|0);while(0);C=(O(b+1|0,b)|0)/2|0;D=(J|0)==2;if(D)bt(C,I);ct(C,I);E=b<<3;m=tH(E)|0;G3(m|0,0,E|0)|0;F=b+-1|0;e=0;o=0;while(1){if((o|0)>=(F|0)){e=b;k=0;o=0;break}p=b-o|0;v=0.0;k=1;while(1){e=e+1|0;if((k|0)>=(p|0))break;x=+g[I+(e<<2)>>2];z=m+(k+o<<3)|0;h[z>>3]=+h[z>>3]-x;v=v+x;k=k+1|0}z=m+(o<<3)|0;h[z>>3]=+h[z>>3]-v;o=o+1|0}while(1){if((k|0)>=(b|0))break;g[I+(o<<2)>>2]=+h[m+(k<<3)>>3];z=e+o|0;e=e+-1|0;k=k+1|0;o=z}z=tH(s)|0;c[z>>2]=tH(a)|0;e=1;while(1){if((e|0)>=(j|0))break;c[z+(e<<2)>>2]=(c[z>>2]|0)+((O(e,b)|0)<<2);e=e+1|0}p=tH(t)|0;o=tH(t)|0;k=tH(C<<2)|0;if(0){w=c[15686]|0;h[A>>3]=+EL();f1(w,92054,A)|0;D1(89952,15,1,w)|0;DL()}w=(y|0)==0;y=c[15686]|0;e=0;q=0;x=1797693134862315708145274.0e284;while(1){if(!(q<<24>>24==0&(e|0)<(n|0)))break;G3(m|0,0,E|0)|0;if(D){dt(C,I,k);u=0;a=0}else{u=0;a=0}while(1){if((u|0)>=(F|0)){q=b;s=0;a=0;break}t=b-u+-1|0;$s(t,0.0,o);q=0;while(1){if((q|0)>=(j|0))break;A=H+(q<<2)|0;$s(t,+g[(c[A>>2]|0)+(u<<2)>>2],p);Ws(t,p,-1.0,(c[A>>2]|0)+(u<<2)+4|0);bt(t,p);Vs(t,p,o,o);q=q+1|0}et(t,o);q=0;while(1){if((q|0)>=(t|0))break;s=o+(q<<2)|0;v=+g[s>>2];if(v>=3402823466385288598117041.0e14|v<0.0)g[s>>2]=0.0;q=q+1|0}q=a+1|0;a=u+1|0;f:do if(D){v=0.0;s=0;while(1){if((s|0)>=(t|0))break f;A=k+(q<<2)|0;N=+g[A>>2]*+g[o+(s<<2)>>2];g[A>>2]=N;A=m+(a+s<<3)|0;h[A>>3]=+h[A>>3]-N;v=v+N;q=q+1|0;s=s+1|0}}else{v=0.0;s=0;while(1){if((s|0)>=(t|0))break f;N=+g[o+(s<<2)>>2];g[k+(q<<2)>>2]=N;A=m+(a+s<<3)|0;h[A>>3]=+h[A>>3]-N;v=v+N;q=q+1|0;s=s+1|0}}while(0);A=m+(u<<3)|0;h[A>>3]=+h[A>>3]-v;u=a;a=q}while(1){if((s|0)>=(b|0)){q=0;break}g[k+(a<<2)>>2]=+h[m+(s<<3)>>3];A=q+a|0;q=q+-1|0;s=s+1|0;a=A}while(1){if((q|0)>=(j|0)){v=0.0;q=0;break}Ts(k,b,c[H+(q<<2)>>2]|0,c[z+(q<<2)>>2]|0);q=q+1|0}while(1){if((q|0)>=(j|0))break;v=+Zs(b,c[H+(q<<2)>>2]|0,c[z+(q<<2)>>2]|0)+v;q=q+1|0}v=v*2.0+r;q=0;while(1){if((q|0)>=(j|0))break;A=H+(q<<2)|0;Ts(I,b,c[A>>2]|0,p);v=v-+Zs(b,c[A>>2]|0,p);q=q+1|0}P=x-v;N=+h[22909];q=(v=0.0?P:-P)/x=(j|0))break;t=H+(a<<2)|0;s=c[t>>2]|0;g:do if(w){if((Eq(I,s,c[z+(a<<2)>>2]|0,b,.001,b)|0)<0){u=z;t=I;e=-1;a=G;s=H;q=z;break d}}else{Ys(b,s,p);if((Eq(I,p,c[z+(a<<2)>>2]|0,b,.001,b)|0)<0){u=z;t=I;e=-1;a=G;s=H;q=z;break d}else s=0;while(1){if((s|0)>=(b|0))break g;if((d[(c[(c[i+(s<<2)>>2]|0)+16>>2]|0)+119>>0]|0)<=1)c[(c[t>>2]|0)+(s<<2)>>2]=c[p+(s<<2)>>2];s=s+1|0}}while(0);a=a+1|0}if(((e|0)%5|0|0)==0&0!=0?(h[K>>3]=v,f1(y,90277,K)|0,((e+5|0)%50|0|0)==0):0)m3(10,y)|0;e=e+1|0;x=v}if(!0)q=0;else{N=+rn(H,I,j,b,J);P=+EL();h[L>>3]=N;c[L+8>>2]=e;h[L+16>>3]=P;f1(y,89968,L)|0;q=0}while(1){if((q|0)>=(j|0)){u=z;t=I;a=G;s=H;q=z;break d}a=H+(q<<2)|0;t=f+(q<<2)|0;s=0;while(1){if((s|0)>=(b|0))break;h[(c[t>>2]|0)+(s<<3)>>3]=+g[(c[a>>2]|0)+(s<<2)>>2];s=s+1|0}q=q+1|0}}while(0);C_(a);C_(s);C_(t);if(u|0){C_(c[u>>2]|0);C_(q)}C_(p);C_(o);C_(m);C_(k)}while(0);l=M;return e|0}function qn(b,d,e,f,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0.0,q=0,r=0,s=0.0,t=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0;R=l;l=l+32|0;o=R+24|0;Q=R+8|0;H=R+4|0;N=R;M=(d|0)<50?d:50;P=uH(M<<2)|0;G=d<<3;n=uH(O(G,M)|0)|0;m=0;while(1){if((m|0)>=(M|0))break;c[P+(m<<2)>>2]=n+((O(m,d)|0)<<3);m=m+1|0}E=M<<1;E=(E|0)>50?E:50;E=(E|0)>(d|0)?d:E;c[o>>2]=0;rr(b,d,E,o,k);sr(c[o>>2]|0,d,E);lt(c[o>>2]|0,E,d,P,M);C_(c[c[o>>2]>>2]|0);C_(c[o>>2]|0);E=d<<2;L=uH(E)|0;m=0;while(1){if((m|0)>=(d|0))break;c[L+(m<<2)>>2]=-1;m=m+1|0}yq(Q,d);J=c[b+8>>2]|0;I=(k|0)!=0;if(I)ds(b,d);C=uH(E)|0;K=uH(160)|0;n=uH(d*160|0)|0;D=uH(160)|0;m=0;while(1){if((m|0)==40)break;c[D+(m<<2)>>2]=n+((O(m,d)|0)<<2);m=m+1|0}m=(f2()|0)%(d|0)|0;c[L+(m<<2)>>2]=0;c[K>>2]=m;n=c[D>>2]|0;if(I){br(m,b,d,n);n=0;o=0}else{uq(m,b,d,n,Q);n=0;o=0}while(1){if((o|0)>=(d|0)){r=1;break}F=c[(c[D>>2]|0)+(o<<2)>>2]|0;c[C+(o<<2)>>2]=F;A=(F|0)>(n|0);m=A?o:m;n=A?F:n;o=o+1|0}while(1){if((r|0)==40){m=0;break}c[L+(m<<2)>>2]=r;c[K+(r<<2)>>2]=m;t=D+(r<<2)|0;n=c[t>>2]|0;if(I){br(m,b,d,n);q=0;n=0}else{uq(m,b,d,n,Q);q=0;n=0}while(1){if((q|0)>=(d|0))break;o=C+(q<<2)|0;F=c[o>>2]|0;k=c[(c[t>>2]|0)+(q<<2)>>2]|0;k=(F|0)<(k|0)?F:k;c[o>>2]=k;if((k|0)<=(n|0)){if((k|0)==(n|0)?((f2()|0)%(q+1|0)|0|0)==0:0){n=c[o>>2]|0;m=q}}else{n=k;m=q}q=q+1|0}r=r+1|0}while(1){if((m|0)>=(d|0))break;c[C+(m<<2)>>2]=-1;m=m+1|0}w=uH(E)|0;F=uH(d<<4)|0;x=d+-1|0;y=x<<2;A=0;o=0;k=0;n=0;z=0;while(1){if((z|0)>=(d|0))break;m=L+(z<<2)|0;a:do if((c[m>>2]|0)>-1){t=F+(z<<4)+4|0;c[t>>2]=uH(y)|0;v=uH(y)|0;c[F+(z<<4)+8>>2]=v;c[F+(z<<4)>>2]=x;a[F+(z<<4)+12>>0]=1;r=D+(c[m>>2]<<2)|0;m=0;while(1){if((m|0)==(z|0)){q=z;break}c[(c[t>>2]|0)+(m<<2)>>2]=m;c[v+(m<<2)>>2]=c[(c[r>>2]|0)+(m<<2)>>2];m=m+1|0}while(1){m=q+1|0;if((q|0)==(x|0)){m=x;break a}c[(c[t>>2]|0)+(q<<2)>>2]=m;c[v+(q<<2)>>2]=c[(c[r>>2]|0)+(m<<2)>>2];q=m}}else{if((n|0)<40){k=uH(E)|0;o=uH(E)|0;n=d;m=1}else m=0;a[F+(z<<4)+12>>0]=m;c[F+(z<<4)+4>>2]=k;c[F+(z<<4)+8>>2]=o;c[F+(z<<4)>>2]=40;m=0;while(1){if((m|0)==40)break;c[k+(m<<2)>>2]=c[K+(m<<2)>>2];c[o+(m<<2)>>2]=c[(c[D+(m<<2)>>2]|0)+(z<<2)>>2];m=m+1|0}o=o+160|0;k=k+160|0;n=n+-40|0;m=40}while(0);A=m+A|0;z=z+1|0}C_(C);C_(w);if(D|0){C_(c[D>>2]|0);C_(D)}D=uH(d*20|0)|0;q=A+d<<2;r=uH(q)|0;v=(j|0)==2;q=uH(q)|0;t=0;while(1){if((t|0)>=(d|0))break;c[D+(t*20|0)+4>>2]=r;c[D+(t*20|0)+8>>2]=q;m=(c[F+(t<<4)>>2]|0)+1|0;w=D+(t*20|0)|0;c[w>>2]=m;o=(c[F+(t<<4)+8>>2]|0)+-4|0;k=F+(t<<4)+4|0;b:do if(v){p=0.0;n=1;while(1){if((n|0)>=(m|0))break b;c[r+(n<<2)>>2]=c[(c[k>>2]|0)+(n+-1<<2)>>2];u=+(c[o+(n<<2)>>2]|0);u=-1.0/(u*u);g[q+(n<<2)>>2]=u;p=p-u;n=n+1|0;m=c[w>>2]|0}}else{p=0.0;n=1;while(1){if((n|0)>=(m|0))break b;c[r+(n<<2)>>2]=c[(c[k>>2]|0)+(n+-1<<2)>>2];u=-1.0/+(c[o+(n<<2)>>2]|0);g[q+(n<<2)>>2]=u;p=p-u;n=n+1|0;m=c[w>>2]|0}}while(0);c[r>>2]=t;g[q>>2]=p;E=c[w>>2]|0;q=q+(E<<2)|0;r=r+(E<<2)|0;t=t+1|0}C=uH(f<<2)|0;c[C>>2]=uH(O(f<<3,M)|0)|0;m=1;while(1){if((m|0)>=(f|0))break;c[C+(m<<2)>>2]=(c[C>>2]|0)+((O(m,M)|0)<<3);m=m+1|0}c:do if(i){m=0;while(1){if((m|0)>=(f|0))break;o=C+(m<<2)|0;n=0;while(1){if((n|0)>=(M|0))break;h[(c[o>>2]|0)+(n<<3)>>3]=0.0;n=n+1|0}m=m+1|0}if((f|0)!=2){m=0;while(1){if((m|0)>=(f|0)){m=0;break c}h[(c[C+(m<<2)>>2]|0)+(m<<3)>>3]=1.0;m=m+1|0}}h[c[C>>2]>>3]=1.0;m=C+4|0;if(!((mt(P,M,d,c[m>>2]|0)|0)<<24>>24)){n=c[m>>2]|0;m=0;while(1){if((m|0)>=(M|0))break;h[n+(m<<3)>>3]=0.0;m=m+1|0}h[n+8>>3]=1.0;m=0}else m=0}else{n=0;while(1){if((n|0)>=(f|0)){m=0;break c}o=C+(n<<2)|0;m=0;while(1){if((m|0)>=(M|0))break;u=+(f2()|0)*4.656612875245797e-10;h[(c[o>>2]|0)+(m<<3)>>3]=u;m=m+1|0}n=n+1|0}}while(0);while(1){if((m|0)>=(f|0))break;Rs(P,d,M,c[C+(m<<2)>>2]|0,c[e+(m<<2)>>2]|0);m=m+1|0}c[H>>2]=0;c[N>>2]=0;Gs(D,P,d,M,H);Es(P,c[H>>2]|0,M,d,M,N);C_(c[c[H>>2]>>2]|0);C_(c[H>>2]|0);z=uH(G)|0;A=uH(M<<3)|0;m=0;n=0;p=+sn(e,F,f,d,j);d:while(1){if((n|0)<50&m<<24>>24==0)x=0;else break;while(1){if((x|0)>=(f|0))break;y=e+(x<<2)|0;o=0;while(1){if((o|0)>=(d|0))break;q=z+(o<<3)|0;h[q>>3]=0.0;r=(c[F+(o<<4)+8>>2]|0)+-4|0;t=c[D+(o*20|0)+4>>2]|0;v=c[D+(o*20|0)+8>>2]|0;w=D+(o*20|0)|0;s=0.0;k=1;while(1){if((k|0)>=(c[w>>2]|0))break;m=c[t+(k<<2)>>2]|0;u=+fs(e,f,o,m);if(u>1.0e-30){u=-(+g[v+(k<<2)>>2]*+(c[r+(k<<2)>>2]|0))/u;h[q>>3]=u*+h[(c[y>>2]|0)+(m<<3)>>3]+ +h[q>>3];s=s-u}k=k+1|0}h[q>>3]=+h[q>>3]+ +h[(c[y>>2]|0)+(o<<3)>>3]*s;o=o+1|0}Ds(P,M,d,z,A);m=C+(x<<2)|0;if(Dq(c[N>>2]|0,c[m>>2]|0,A,M,.001,M,0)|0){n=-1;break d}Rs(P,d,M,c[m>>2]|0,c[y>>2]|0);x=x+1|0}if(!(n&1)){u=+sn(e,F,f,d,j);p=+B(+(u-p))/(u+1.0e-10);m=p<+h[22909]&1;p=u}else m=0;n=n+1|0}C_(A);C_(z);if(I){es(b,d,J);m=0}else m=0;while(1){if((m|0)>=(d|0))break;if(a[F+(m<<4)+12>>0]|0){C_(c[F+(m<<4)+4>>2]|0);C_(c[F+(m<<4)+8>>2]|0)}m=m+1|0}C_(F);C_(c[D+4>>2]|0);C_(c[D+8>>2]|0);C_(D);C_(L);C_(K);C_(c[C>>2]|0);C_(C);m=c[N>>2]|0;if(m|0){C_(c[m>>2]|0);C_(c[N>>2]|0)}C_(c[P>>2]|0);C_(P);zq(Q);l=R;return n|0}function rn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0;q=e+-1|0;o=(f|0)==2;h=0.0;f=0;m=0;while(1){if((m|0)>=(q|0))break;p=e-m|0;n=1;while(1){f=f+1|0;if((n|0)>=(p|0))break;k=n+m|0;i=0.0;j=0;while(1){if((j|0)>=(d|0))break;r=c[a+(j<<2)>>2]|0;l=+g[r+(m<<2)>>2]-+g[r+(k<<2)>>2];i=i+l*l;j=j+1|0}i=+C(+i);l=+g[b+(f<<2)>>2];if(o){i=1.0/+C(+l)-i;i=i*i}else{i=1.0/l-i;i=i*i}n=n+1|0;h=i*l+h}m=m+1|0}return +h}function sn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0;a:do if((f|0)==2){g=0.0;l=0;while(1){if((l|0)>=(e|0))break a;n=c[b+(l<<4)>>2]|0;o=b+(l<<4)+4|0;m=b+(l<<4)+8|0;k=0;while(1){if((k|0)>=(n|0))break;j=c[(c[o>>2]|0)+(k<<2)>>2]|0;if((j|0)>(l|0)){i=0.0;f=0;while(1){if((f|0)>=(d|0))break;q=c[a+(f<<2)>>2]|0;p=+h[q+(l<<3)>>3]-+h[q+(j<<3)>>3];i=p*p+i;f=f+1|0}i=+C(+i);p=+(c[(c[m>>2]|0)+(k<<2)>>2]|0);i=p-i;g=i*i/(p*p)+g}k=k+1|0}l=l+1|0}}else{l=0;g=0.0;while(1){if((l|0)>=(e|0))break a;m=c[b+(l<<4)>>2]|0;n=b+(l<<4)+4|0;o=b+(l<<4)+8|0;k=0;while(1){if((k|0)>=(m|0))break;j=c[(c[n>>2]|0)+(k<<2)>>2]|0;if((j|0)>(l|0)){i=0.0;f=0;while(1){if((f|0)>=(d|0))break;q=c[a+(f<<2)>>2]|0;p=+h[q+(l<<3)>>3]-+h[q+(j<<3)>>3];i=p*p+i;f=f+1|0}i=+C(+i);p=+(c[(c[o>>2]|0)+(k<<2)>>2]|0);i=p-i;g=i*i/p+g}k=k+1|0}l=l+1|0}}while(0);return +g}function tn(a){a=+a;return +(+C(+a)*a)}function un(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0;g=c[46366]|0;e=0.0;f=0;while(1){if((f|0)>=(g|0))break;i=+h[a+(f<<3)>>3]-+h[b+(f<<3)>>3];h[d+(f<<3)>>3]=i;e=i*i+e;f=f+1|0}return +(+C(+e))}function vn(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0;i=tH(a<<2)|0;f=0;g=tH(O(a<<3,b)|0)|0;while(1){if((f|0)>=(a|0))break;c[i+(f<<2)>>2]=g;e=0;while(1){if((e|0)>=(b|0))break;h[g+(e<<3)>>3]=d;e=e+1|0}f=f+1|0;g=g+(b<<3)|0}return i|0}function wn(a){a=a|0;if(a|0){C_(c[a>>2]|0);C_(a)}return}function xn(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;o=l;l=l+16|0;n=$x(b)|0;m=ay(b)|0;k=mx(b,2,90566,0)|0;a:do if(!d){h[22909]=+(n|0)*.0001;$G(b,105860,183272);g=wx(c[b+60>>2]|0,90006)|0;if(!g)e=.99;else e=+a2(g);h[22911]=e;g=tH((n<<2)+4|0)|0;j=b+16|0;c[(c[j>>2]|0)+152>>2]=g;g=0;e=0.0;i=Ry(b)|0;while(1){if(!i)break a;c[(c[(c[j>>2]|0)+152>>2]|0)+(g<<2)>>2]=i;p=c[i+16>>2]|0;c[p+120>>2]=g;c[p+124>>2]=-1;f=+An(b,i,k)+e;g=g+1|0;e=f;i=Sy(b,i)|0}}else{h[22909]=.0001;$G(b,105860,183272);g=0;e=0.0;i=Ry(b)|0;while(1){if(!i)break a;c[(c[i+16>>2]|0)+120>>2]=g;f=+An(b,i,k)+e;g=g+1|0;e=f;i=Sy(b,i)|0}}while(0);g=wx(b,90014)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){e=+h[22909];f=+a2(g);if(!(e>f))e=f}else e=e/+(((m|0)>1?m:1)|0)*+C(+(+(n|0)))+1.0;h[22910]=e;if(!(c[46363]|d)){d=vn(n,n,e)|0;p=b+16|0;c[(c[p>>2]|0)+160>>2]=d;d=vn(n,n,1.0)|0;c[(c[p>>2]|0)+164>>2]=d;d=vn(n,c[46366]|0,1.0)|0;c[(c[p>>2]|0)+168>>2]=d;d=Bn(n,n,c[46366]|0)|0;c[(c[p>>2]|0)+172>>2]=d}l=o;return n|0}function yn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=0;e=0;j=Ix(a,b)|0;a:while(1){if(!j)break;h=c[j>>2]&3;g=c[((h|0)==2?j:j+-48|0)+40>>2]|0;h=c[((h|0)==3?j:j+48|0)+40>>2]|0;do if((g|0)!=(h|0)){i=(h|0)==(b|0);if((e|0)!=1){f=i?g:h;c[d>>2]=f;e=e+1|0;break}if(!((g|0)==(f|0)&i)?!((g|0)==(b|0)&(h|0)==(f|0)):0){e=2;break a}else e=1}while(0);j=Jx(a,j,b)|0}return e|0}function zn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;g=a+60|0;a:while(1){b:while(1){if(!b)break a;switch(yn(a,b,f)|0){case 0:{e=5;break b}case 1:{e=8;break b}default:b=0}}if((e|0)==5){if((d|0)==(b|0))d=Sy(a,d)|0;cz(c[g>>2]|0,b)|0;b=0;continue}else if((e|0)==8){if((d|0)==(b|0))d=Sy(a,d)|0;cz(c[g>>2]|0,b)|0;b=c[f>>2]|0;continue}}l=h;return d|0}function An(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0;k=l;l=l+32|0;i=k+8|0;g=k;b=Dx(a,b)|0;e=0.0;while(1){if(!b)break;switch(Cn(b,d,g)|0){case 0:{f=+h[g>>3];break}case 2:{c[i>>2]=qy(a)|0;h[i+8>>3]=1.0;Ow(3,90026,i)|0;j=6;break}default:j=6}if((j|0)==6){j=0;h[g>>3]=1.0;f=1.0}h[(c[b+16>>2]|0)+136>>3]=f;b=Fx(a,b)|0;e=f+e}l=k;return +e}function Bn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0;j=tH((a<<2)+4|0)|0;k=(b<<2)+4|0;l=d<<3;g=0;while(1){if((g|0)>=(a|0))break;i=j+(g<<2)|0;c[i>>2]=tH(k)|0;f=0;while(1){if((f|0)>=(b|0))break;e=tH(l)|0;c[(c[i>>2]|0)+(f<<2)>>2]=e;e=0;while(1){if((e|0)>=(d|0))break;h[(c[(c[i>>2]|0)+(f<<2)>>2]|0)+(e<<3)>>3]=0.0;e=e+1|0}f=f+1|0}c[(c[i>>2]|0)+(f<<2)>>2]=0;g=g+1|0}c[j+(g<<2)>>2]=0;return j|0}function Cn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;do if((d|0)!=0?(f=xx(b,d)|0,(a[f>>0]|0)!=0):0){c[i>>2]=e;if(((M1(f,98183,i)|0)>=1?(g=+h[e>>3],!(g<0.0)):0)?g!=0.0|(c[46363]|0)!=0:0){b=0;break}c[j>>2]=f;Ow(0,90053,j)|0;b=2}else b=1;while(0);l=k;return b|0}function Dn(a){a=a|0;return xn(a,0)|0}function En(a){a=a|0;a=a+16|0;C_(c[(c[a>>2]|0)+152>>2]|0);if(!(c[46363]|0)){wn(c[(c[a>>2]|0)+160>>2]|0);wn(c[(c[a>>2]|0)+164>>2]|0);wn(c[(c[a>>2]|0)+168>>2]|0);Fn(c[(c[a>>2]|0)+172>>2]|0);c[(c[a>>2]|0)+172>>2]=0}return}function Fn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(a|0){f=0;while(1){g=a+(f<<2)|0;b=c[g>>2]|0;if(!b)break;else e=0;while(1){d=c[b+(e<<2)>>2]|0;if(!d)break;C_(d);e=e+1|0;b=c[g>>2]|0}C_(b);f=f+1|0}C_(a)}return}function Gn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+(b|0);b=a+16|0;while(1){if((d|0)>=(c[46366]|0))break;f=+j2()*e;h[(c[(c[b>>2]|0)+132>>2]|0)+(d<<3)>>3]=f;d=d+1|0}return}function Hn(a,b){a=a|0;b=b|0;Gn(a,b,2);return}function In(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0;e=+(b|0);f=+j2()*e;d=a+16|0;h[c[(c[d>>2]|0)+132>>2]>>3]=f;e=+j2()*e;h[(c[(c[d>>2]|0)+132>>2]|0)+8>>3]=e;if((c[46366]|0)>2)Hn(a,b);return}function Jn(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(0)D1(90071,26,1,c[15686]|0)|0;d=om(b,d,2)|0;a:do if((d|0)!=1){if(!(c[46027]|d)){Ow(0,90098,e)|0;c[46027]=1}e=b+16|0;d=0;while(1){b=c[(c[(c[e>>2]|0)+152>>2]|0)+(d<<2)>>2]|0;if(!b)break a;if(!(a[(c[b+16>>2]|0)+119>>0]|0))In(b,1);d=d+1|0}}while(0);l=f;return}function Kn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+96|0;p=q+80|0;n=q;if(0){D1(90147,25,1,c[15686]|0)|0;DL()}o=a+16|0;f=c[o>>2]|0;k=c[f+164>>2]|0;f=c[f+160>>2]|0;m=0;while(1){if((m|0)>=(b|0))break;i=f+(m<<2)|0;j=k+(m<<2)|0;e=0;while(1){if((e|0)==(m|0))break;g=+h[(c[i>>2]|0)+(e<<3)>>3];g=1.0/(g*g);d=c[(c[o>>2]|0)+152>>2]|0;d=Qx(a,c[d+(m<<2)>>2]|0,c[d+(e<<2)>>2]|0,0,0)|0;if(d)g=+h[(c[d+16>>2]|0)+128>>3]*g;h[(c[k+(e<<2)>>2]|0)+(m<<3)>>3]=g;h[(c[j>>2]|0)+(e<<3)>>3]=g;e=e+1|0}m=m+1|0}a=c[46366]|0;e=0;while(1){if((e|0)<(b|0))d=0;else break;while(1){if((d|0)>=(a|0))break;h[(c[(c[(c[o>>2]|0)+168>>2]|0)+(e<<2)>>2]|0)+(d<<3)>>3]=0.0;d=d+1|0}e=e+1|0}i=0;while(1){d=c[(c[(c[o>>2]|0)+152>>2]|0)+(i<<2)>>2]|0;if(!d)break;a=d+16|0;d=0;while(1){if((d|0)>=(b|0))break;a:do if((i|0)!=(d|0)){g=+un(c[(c[a>>2]|0)+132>>2]|0,c[(c[(c[(c[(c[o>>2]|0)+152>>2]|0)+(d<<2)>>2]|0)+16>>2]|0)+132>>2]|0,n);f=c[46366]|0;g=1.0/g;e=0;while(1){if((e|0)>=(f|0))break a;m=c[o>>2]|0;r=+h[n+(e<<3)>>3];r=(r-+h[(c[(c[m+160>>2]|0)+(i<<2)>>2]|0)+(d<<3)>>3]*r*g)*+h[(c[(c[m+164>>2]|0)+(i<<2)>>2]|0)+(d<<3)>>3];h[(c[(c[(c[m+172>>2]|0)+(i<<2)>>2]|0)+(d<<2)>>2]|0)+(e<<3)>>3]=r;m=(c[(c[m+168>>2]|0)+(i<<2)>>2]|0)+(e<<3)|0;h[m>>3]=+h[m>>3]+r;e=e+1|0}}while(0);d=d+1|0}i=i+1|0}if(0){o=c[15686]|0;h[p>>3]=+EL();f1(o,90173,p)|0}l=q;return}function Ln(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0;i=l;l=l+32|0;g=i+24|0;f=i+8|0;e=i;j=+h[22909];h[22831]=j*j;while(1){d=Mn(a,b)|0;if(!d)break;Nn(a,b,d)}if(!0)b=a+16|0;else{d=c[15686]|0;h[e>>3]=+On(a,b);f1(d,90183,e)|0;b=a+16|0;k=c[(c[b>>2]|0)+156>>2]|0;e=(k|0)==(c[46365]|0)?90197:191979;j=+EL();c[f>>2]=k;c[f+4>>2]=e;h[f+8>>3]=j;f1(d,90199,f)|0}b=c[(c[b>>2]|0)+156>>2]|0;if((b|0)==(c[46365]|0)){k=qy(a)|0;c[g>>2]=b;c[g+4>>2]=k;Ow(0,90226,g)|0}l=i;return}function Mn(a,b){a=a|0;b=b|0;var e=0.0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=l;l=l+16|0;q=r;o=(c[46029]|0)+1|0;c[46029]=o;a=c[a+16>>2]|0;if((c[a+156>>2]|0)<(c[46365]|0)){m=c[46366]|0;n=a+152|0;k=a+168|0;a=0;e=0.0;j=0;while(1){if((j|0)>=(b|0))break;g=c[(c[n>>2]|0)+(j<<2)>>2]|0;if((d[(c[g+16>>2]|0)+119>>0]|0)<=1){i=0.0;f=0;while(1){if((f|0)>=(m|0))break;s=+h[(c[(c[k>>2]|0)+(j<<2)>>2]|0)+(f<<3)>>3];i=s*s+i;f=f+1|0}if(i>e){a=g;e=i}}j=j+1|0}if(!(e<+h[22831])){if(0!=0&((o|0)%100|0|0)==0?(p=c[15686]|0,h[q>>3]=+C(+e),f1(p,90277,q)|0,((c[46029]|0)%1e3|0|0)==0):0)m3(10,p)|0}else a=0}else a=0;l=r;return a|0}function Nn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;k=d+16|0;m=c[(c[k>>2]|0)+120>>2]|0;f=c[46028]|0;if(!f){g=c[46366]|0;g=uH(O(g<<3,g)|0)|0}else{g=c[46366]|0;g=wH(f,O(g<<3,g)|0)|0}c[46028]=g;Pn(a,b,m,g);i=c[46366]|0;j=a+16|0;f=0;while(1){if((f|0)>=(i|0))break;h[182656+(f<<3)>>3]=-+h[(c[(c[(c[j>>2]|0)+168>>2]|0)+(m<<2)>>2]|0)+(f<<3)>>3];f=f+1|0}Wt(g,182736,182656,i);f=0;while(1){if((f|0)>=(c[46366]|0))break;e=+h[22911];e=(1.0-e)*2.0*+j2()+e;i=182736+(f<<3)|0;e=e*+h[i>>3];h[i>>3]=e;i=(c[(c[k>>2]|0)+132>>2]|0)+(f<<3)|0;h[i>>3]=+h[i>>3]+e;f=f+1|0}k=(c[j>>2]|0)+156|0;c[k>>2]=(c[k>>2]|0)+1;Qn(a,b,m);if(bM()|0){g=c[46366]|0;e=0.0;f=0;while(1){if((f|0)>=(g|0))break;e=+B(+(+h[182736+(f<<3)>>3]))+e;f=f+1|0}e=+C(+e);m=c[15686]|0;c[n>>2]=qy(d)|0;h[n+8>>3]=e;f1(m,90268,n)|0}l=o;return}function On(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=b+-1|0;n=a+16|0;o=c[46366]|0;g=0;d=0.0;a:while(1){if((g|0)>=(q|0))break;m=c[n>>2]|0;p=c[m+152>>2]|0;j=g+1|0;k=(c[p+(g<<2)>>2]|0)+16|0;l=m+164|0;m=m+160|0;i=j;while(1){if((i|0)>=(b|0)){g=j;continue a}f=(c[p+(i<<2)>>2]|0)+16|0;a=0;e=0.0;while(1){if((a|0)>=(o|0))break;r=+h[(c[(c[k>>2]|0)+132>>2]|0)+(a<<3)>>3]-+h[(c[(c[f>>2]|0)+132>>2]|0)+(a<<3)>>3];a=a+1|0;e=r*r+e}r=+h[(c[(c[m>>2]|0)+(g<<2)>>2]|0)+(i<<3)>>3];r=((+C(+e)*-2.0+r)*r+e)*+h[(c[(c[l>>2]|0)+(g<<2)>>2]|0)+(i<<3)>>3]+d;i=i+1|0;d=r}}return +d}function Pn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+80|0;w=x;v=c[a+16>>2]|0;k=c[v+164>>2]|0;m=c[v+160>>2]|0;v=c[v+152>>2]|0;j=c[v+(d<<2)>>2]|0;g=c[46366]|0;a=0;while(1){if((a|0)>=(g|0))break;i=O(g,a)|0;f=0;while(1){if((f|0)==(g|0))break;h[e+(i+f<<3)>>3]=0.0;f=f+1|0}a=a+1|0}u=c[46366]|0;t=j+16|0;s=k+(d<<2)|0;k=m+(d<<2)|0;j=0;while(1){if((j|0)>=(b|0))break;a:do if((j|0)!=(d|0)){f=(c[v+(j<<2)>>2]|0)+16|0;r=0.0;a=0;while(1){if((a|0)>=(u|0))break;q=+h[(c[(c[t>>2]|0)+132>>2]|0)+(a<<3)>>3]-+h[(c[(c[f>>2]|0)+132>>2]|0)+(a<<3)>>3];h[w+(a<<3)>>3]=q;r=q*q+r;a=a+1|0}n=1.0/+tn(r);i=0;while(1){if((i|0)>=(u|0))break a;f=(c[s>>2]|0)+(j<<3)|0;g=(c[k>>2]|0)+(j<<3)|0;o=+h[w+(i<<3)>>3];a=0;while(1){p=+h[f>>3];q=+h[g>>3];if((a|0)==(i|0))break;m=e+((O(u,a)|0)+i<<3)|0;h[m>>3]=+h[m>>3]+p*n*q*o*+h[w+(a<<3)>>3];a=a+1|0}m=e+((O(u,i)|0)+i<<3)|0;h[m>>3]=(1.0-q*n*(r-o*o))*p+ +h[m>>3];i=i+1|0}}while(0);j=j+1|0}f=c[46366]|0;i=1;while(1){if((i|0)>=(f|0))break;g=O(f,i)|0;a=0;while(1){if((a|0)==(i|0))break;h[e+(g+a<<3)>>3]=+h[e+((O(f,a)|0)+i<<3)>>3];a=a+1|0}i=i+1|0}l=x;return}function Qn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0;m=l;l=l+80|0;k=m;j=a+16|0;f=c[j>>2]|0;g=c[(c[f+152>>2]|0)+(d<<2)>>2]|0;e=c[46366]|0;f=f+168|0;a=0;while(1){if((a|0)>=(e|0))break;h[(c[(c[f>>2]|0)+(d<<2)>>2]|0)+(a<<3)>>3]=0.0;a=a+1|0}f=g+16|0;a=0;while(1){if((a|0)>=(b|0))break;a:do if((a|0)!=(d|0)){i=+un(c[(c[f>>2]|0)+132>>2]|0,c[(c[(c[(c[(c[j>>2]|0)+152>>2]|0)+(a<<2)>>2]|0)+16>>2]|0)+132>>2]|0,k);g=c[46366]|0;i=1.0/i;e=0;while(1){if((e|0)>=(g|0))break a;n=c[j>>2]|0;q=c[n+172>>2]|0;r=(c[(c[q+(d<<2)>>2]|0)+(a<<2)>>2]|0)+(e<<3)|0;o=+h[k+(e<<3)>>3];o=(o-+h[(c[(c[n+160>>2]|0)+(d<<2)>>2]|0)+(a<<3)>>3]*o*i)*+h[(c[(c[n+164>>2]|0)+(d<<2)>>2]|0)+(a<<3)>>3];h[r>>3]=o;n=c[n+168>>2]|0;s=(c[n+(d<<2)>>2]|0)+(e<<3)|0;h[s>>3]=+h[s>>3]+o;q=(c[(c[q+(a<<2)>>2]|0)+(d<<2)>>2]|0)+(e<<3)|0;o=+h[q>>3];p=-+h[r>>3];h[q>>3]=p;n=(c[n+(a<<2)>>2]|0)+(e<<3)|0;h[n>>3]=p-o+ +h[n>>3];e=e+1|0}}while(0);a=a+1|0}l=m;return}function Rn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0;d=a+16|0;g=c[46030]|0;b=c[(c[d>>2]|0)+124>>2]|0;while(1){if((b|0)<=0)break;i=(b+-1|0)/2|0;j=g+(i<<2)|0;e=c[j>>2]|0;f=e+16|0;if(+h[(c[f>>2]|0)+136>>3]<=+h[(c[d>>2]|0)+136>>3])break;c[j>>2]=a;c[(c[d>>2]|0)+124>>2]=i;c[g+(b<<2)>>2]=e;c[(c[f>>2]|0)+124>>2]=b;b=i}return}function Sn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;i=a+16|0;j=c[46031]|0;k=c[46030]|0;g=c[(c[i>>2]|0)+124>>2]|0;while(1){e=g<<1|1;if((e|0)>=(j|0))break;d=e+1|0;if((d|0)<(j|0)){f=c[k+(d<<2)>>2]|0;b=c[k+(e<<2)>>2]|0;if(+h[(c[f+16>>2]|0)+136>>3]<+h[(c[b+16>>2]|0)+136>>3]){e=d;b=f}else l=6}else{b=c[k+(e<<2)>>2]|0;l=6}if((l|0)==6)l=0;d=b+16|0;if(+h[(c[i>>2]|0)+136>>3]<=+h[(c[d>>2]|0)+136>>3])break;c[k+(e<<2)>>2]=a;c[(c[i>>2]|0)+124>>2]=e;c[k+(g<<2)>>2]=b;c[(c[d>>2]|0)+124>>2]=g;g=e}return}function Tn(a){a=a|0;var b=0,d=0;b=(c[a+16>>2]|0)+124|0;if((c[b>>2]|0)>=0)qa(90283,90303,643,90311);d=c[46031]|0;c[46031]=d+1;c[b>>2]=d;c[(c[46030]|0)+(d<<2)>>2]=a;if((d|0)>0)Rn(a);return}function Un(){var a=0,b=0,d=0,e=0;b=c[46031]|0;if(!b)a=0;else{e=c[46030]|0;a=c[e>>2]|0;d=b+-1|0;c[46031]=d;d=c[e+(d<<2)>>2]|0;c[e>>2]=d;c[(c[d+16>>2]|0)+124>>2]=0;if((b|0)>2)Sn(d);c[(c[a+16>>2]|0)+124>>2]=-1}return a|0}function Vn(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;c[46030]=tH((b<<2)+4|0)|0;if(0){D1(90325,28,1,c[15686]|0)|0;DL()}b=Ry(a)|0;while(1){if(!b)break;Wn(a,b);b=Sy(a,b)|0}if(0){a=c[15686]|0;h[d>>3]=+EL();f1(a,90173,d)|0}C_(c[46030]|0);l=e;return}function Wn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0;e=c[(c[a+16>>2]|0)+152>>2]|0;f=+h[22910];d=0;while(1){g=c[e+(d<<2)>>2]|0;if(!g)break;h[(c[g+16>>2]|0)+136>>3]=f;d=d+1|0}c[46032]=b;k=c[b+16>>2]|0;h[k+136>>3]=0.0;c[k+128>>2]=0;Tn(b);a:while(1){k=Un()|0;if(!k)break;d=c[46032]|0;j=k+16|0;if((k|0)!=(d|0))Xn(a,d,k,+h[(c[j>>2]|0)+136>>3]);i=Ix(a,k)|0;while(1){if(!i)continue a;d=c[i>>2]&3;b=c[((d|0)==3?i:i+48|0)+40>>2]|0;if((b|0)==(k|0))b=c[((d|0)==2?i:i+-48|0)+40>>2]|0;d=c[j>>2]|0;f=+h[(c[i+16>>2]|0)+136>>3]+ +h[d+136>>3];e=c[b+16>>2]|0;g=e+136|0;do if(+h[g>>3]>f){h[g>>3]=f;if((c[e+124>>2]|0)>-1){Rn(b);break}else{c[e+128>>2]=(c[d+128>>2]|0)+1;Tn(b);break}}while(0);i=Jx(a,i,k)|0}}return}function Xn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;b=c[(c[b+16>>2]|0)+120>>2]|0;d=c[(c[d+16>>2]|0)+120>>2]|0;a=c[(c[a+16>>2]|0)+160>>2]|0;h[(c[a+(d<<2)>>2]|0)+(b<<3)>>3]=e;h[(c[a+(b<<2)>>2]|0)+(d<<3)>>3]=e;return}function Yn(a){a=a|0;_M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46366]=2;Zn(a);return}function Zn(a){a=a|0;var b=0,d=0,e=0,f=0;b=$x(a)|0;e=tH(b*56|0)|0;b=tH((b<<2)+4|0)|0;f=a+16|0;c[(c[f>>2]|0)+152>>2]=b;b=Ry(a)|0;d=0;while(1){if(!b)break;_l(b);c[(c[b+16>>2]|0)+112>>2]=e+(d*56|0);c[(c[(c[f>>2]|0)+152>>2]|0)+(d<<2)>>2]=b;b=Sy(a,b)|0;d=d+1|0}d=Ry(a)|0;while(1){if(!d)break;b=Dx(a,d)|0;while(1){if(!b)break;_n(b);b=Fx(a,b)|0}d=Sy(a,d)|0}return}function _n(a){a=a|0;var b=0.0;zz(a,134378,176,1)|0;dM(a)|0;b=+KL(a,c[46404]|0,1.0,0.0);h[(c[a+16>>2]|0)+128>>3]=b;return}function $n(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+80|0;m=u+32|0;i=u+24|0;g=u+16|0;j=u;t=u+72|0;p=u+40|0;if($x(b)|0){Yn(b);f=wx(b,93136)|0;if(f)if(a[f>>0]|0){d=$y(b,f,0)|0;if(!d){c[g>>2]=f;Ow(0,90354,g)|0;Ow(3,90394,i)|0;d=0;s=1}else s=0}else{d=0;s=1}else{d=0;s=0}n=mx(b,1,93136,0)|0;o=(n|0)!=0;f=wx(b,137660)|0;if((f|0?a[f>>0]|0:0)?(k=j+8|0,c[m>>2]=j,c[m+4>>2]=k,(M1(f,102477,m)|0)==1):0)h[k>>3]=+h[j>>3];if($x(b)|0){m=nD(b,t,0)|0;if((c[t>>2]|0)==1){g=(d|0)!=0;do if(g)e=d;else{if(o?(e=ao(b,n)|0,e|0):0)break;e=0}while(0);f=Yt(b,e)|0;if(!((e|0)!=0|o^1))qx(f,n,139381)|0;r=(Ry(b)|0)+16|0;C_(c[(c[r>>2]|0)+112>>2]|0);c[(c[r>>2]|0)+112>>2]=0;sq(b)|0;gn(b);d=(s|0)==0|g?d:f}else{WD(b,2,8,p)|0;c[p+12>>2]=0;k=(s|0)==0;j=0;while(1){if((j|0)>=(c[t>>2]|0))break;g=c[m+(j<<2)>>2]|0;e=(d|0)!=0;if(e?(nz(g,d)|0)!=0:0)f=d;else r=23;do if((r|0)==23){r=0;if(o?(q=ao(g,n)|0,q|0):0){f=q;break}f=0}while(0);uD(g)|0;i=Yt(g,f)|0;d=k|e?d:i;if(o?(f|0)==0|(f|0)==(d|0):0)qx(i,n,139381)|0;sq(g)|0;j=j+1|0}r=(Ry(b)|0)+16|0;C_(c[(c[r>>2]|0)+112>>2]|0);c[(c[r>>2]|0)+112>>2]=0;VD(c[t>>2]|0,m,b,p)|0;gn(b)}e=0;while(1){if((e|0)>=(c[t>>2]|0))break;cz(b,c[m+(e<<2)>>2]|0)|0;e=e+1|0}C_(m)}if(s|0)yx(b,93136,qy(d)|0)|0;dJ(b)}l=u;return}function ao(a,b){a=a|0;b=b|0;var c=0;c=Ry(a)|0;while(1){if(!c){c=0;break}if((PL(xx(c,b)|0)|0)<<24>>24)break;c=Sy(a,c)|0}return c|0}function bo(a){a=a|0;var b=0,c=0;b=Ry(a)|0;if(b|0){while(1){if(!b)break;c=Dx(a,b)|0;while(1){if(!c)break;IM(c);c=Fx(a,c)|0}GM(b);b=Sy(a,b)|0}co(a)}return}function co(a){a=a|0;C_(c[(c[a+16>>2]|0)+152>>2]|0);if((ez(a)|0)!=(a|0))Fz(a,0,134401);return}function eo(a){a=a|0;fo(a);if(!(($x(a)|0)==0?!(c[(c[a+16>>2]|0)+180>>2]|0):0)){mu(a);dJ(a)}return}function fo(a){a=a|0;c[46377]=mx(a,1,105204,105210)|0;_M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46366]=2;go(a,0);ho(a);return}function go(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;h=(b|0)==0;if(h){ko(g);b=g}d=vA(a)|0;while(1){if(!d)break;if(!(y$(qy(d)|0,104980,7)|0)){zz(d,134401,280,1)|0;lo(b,d);go(d,0)}else go(d,b);d=wA(d)|0}if(h?(e=c[g+8>>2]|0,f=a+16|0,c[(c[f>>2]|0)+180>>2]=e,e|0):0){h=wH(c[g>>2]|0,(e<<2)+4|0)|0;c[(c[f>>2]|0)+184>>2]=h}l=i;return}function ho(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=tH(($x(a)|0)<<2)|0;b=tH((($x(a)|0)<<2)+4|0)|0;g=a+16|0;c[(c[g>>2]|0)+152>>2]=b;b=Ry(a)|0;d=0;while(1){if(!b)break;zz(b,134365,304,1)|0;c[(c[b+16>>2]|0)+112>>2]=f+(d<<2);c[(c[(c[g>>2]|0)+152>>2]|0)+(d<<2)>>2]=b;io(b);e=Dx(a,b)|0;while(1){if(!e)break;jo(e);e=Fx(a,e)|0}b=Sy(a,b)|0;d=d+1|0}return}function io(a){a=a|0;yx(a,105204,105210)|0;return}function jo(a){a=a|0;zz(a,134378,304,1)|0;return}function ko(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function lo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=a+8|0;d=(c[g>>2]|0)+1|0;c[g>>2]=d;e=a+4|0;h=c[e>>2]|0;f=h+10|0;if((d|0)<(h|0))a=c[a>>2]|0;else{c[e>>2]=f;d=wH(c[a>>2]|0,f<<2)|0;c[a>>2]=d;a=d;d=c[g>>2]|0}c[a+(d<<2)>>2]=b;return}function mo(a){a=a|0;var b=0,d=0;b=Ry(a)|0;if(b|0){C_(c[(c[b+16>>2]|0)+112>>2]|0);while(1){if(!b)break;d=Dx(a,b)|0;while(1){if(!d)break;IM(d);d=Fx(a,d)|0}GM(b);b=Sy(a,b)|0}no(a)}return}function no(a){a=a|0;C_(c[(c[a+16>>2]|0)+152>>2]|0);if((ez(a)|0)!=(a|0))Fz(a,0,134401);return}function oo(a){a=a|0;var d=0,e=0,f=0;po(a);qo(a,0);ro(a,0);so(a,0);d=c[a+16>>2]|0;if(!(c[(c[d+8>>2]|0)+84>>2]|0)){d=b[d+136>>1]&14;if(d<<16>>16)Xm(a,d&65535)|0}else{d=Ry(a)|0;while(1){if(!d)break;f=c[d+16>>2]|0;e=c[f+132>>2]|0;h[e>>3]=+h[f+16>>3]*.013888888888888888;h[e+8>>3]=+h[f+24>>3]*.013888888888888888;d=Sy(a,d)|0}_m(a,1)}dJ(a);return}function po(a){a=a|0;var d=0,e=0;_M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46366]=2;d=Ry(a)|0;while(1){if(!d)break;_l(d);d=Sy(a,d)|0}e=Ry(a)|0;while(1){if(!e)break;d=Dx(a,e)|0;while(1){if(!d)break;zz(d,134378,176,1)|0;dM(d)|0;d=Fx(a,d)|0}e=Sy(a,e)|0}return}function qo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;h=(b|0)==0;if(h){xo(g);b=g}d=vA(a)|0;while(1){if(!d)break;if(!(y$(qy(d)|0,104980,7)|0)){zz(d,134401,280,1)|0;eH(d);yo(b,d);qo(d,0)}else qo(d,b);d=wA(d)|0}if(h?(e=c[g+8>>2]|0,f=a+16|0,c[(c[f>>2]|0)+180>>2]=e,e|0):0){h=wH(c[g>>2]|0,(e<<2)+4|0)|0;c[(c[f>>2]|0)+184>>2]=h}l=i;return}function ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=l;l=l+448|0;G=Q+400|0;F=Q+384|0;P=Q+344|0;O=Q+304|0;N=Q+248|0;D=Q+192|0;x=Q+152|0;y=Q+96|0;o=Q+72|0;d=Q+64|0;I=Q+32|0;J=Q;B=Q+416|0;u=Q+328|0;w=Q+288|0;K=Q+232|0;L=Q+176|0;M=Q+136|0;H=Q+80|0;n=c[a+60>>2]|0;if(0>1){to(b);E=c[15686]|0;c[d>>2]=qy(a)|0;f1(E,90637,d)|0}E=a+16|0;f=b+1|0;d=1;e=0;while(1){g=c[E>>2]|0;if((d|0)>(c[g+180>>2]|0))break;C=c[(c[g+184>>2]|0)+(d<<2)>>2]|0;ro(C,f);d=d+1|0;e=($x(C)|0)+e|0}p=($x(a)|0)-e|0;d=c[E>>2]|0;C=(c[d+180>>2]|0)+p|0;v=(C|0)==0;if(v?(c[d+12>>2]|0)==0:0){P=d+16|0;c[P>>2]=0;c[P+4>>2]=0;c[P+8>>2]=0;c[P+12>>2]=0;h[d+40>>3]=18.0;h[d+32>>3]=18.0}else{d=B+16|0;do if((WD(a,4,4,B)|0)>>>0>=3)if((c[d>>2]|0)==4?(c[B+28>>2]&2|0)!=0:0){e=mx(n,0,96164,0)|0;d=mx(n,1,96164,0)|0;if((e|0)!=0|(d|0)!=0){c[B+24>>2]=tH(C<<2)|0;break}else{c[o>>2]=qy(a)|0;Ow(0,90483,o)|0;d=0;e=0;break}}else{d=0;e=0}else{c[d>>2]=3;d=0;e=0}while(0);z=tH(C<<5)|0;A=tH(C<<2)|0;s=B+24|0;n=(e|0)!=0;r=0;g=1;while(1){f=c[E>>2]|0;if((g|0)>(c[f+180>>2]|0))break;f=c[(c[f+184>>2]|0)+(g<<2)>>2]|0;t=z+(r<<5)|0;q=(c[f+16>>2]|0)+16|0;c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];c[t+16>>2]=c[q+16>>2];c[t+20>>2]=c[q+20>>2];c[t+24>>2]=c[q+24>>2];c[t+28>>2]=c[q+28>>2];if(n&(c[s>>2]|0)!=0){t=JL(f,e,0,0)|0;c[(c[s>>2]|0)+(r<<2)>>2]=t}c[A+(r<<2)>>2]=f;r=r+1|0;g=g+1|0}a:do if((p|0)>0){o=I+16|0;p=I+24|0;q=(d|0)!=0;n=Ry(a)|0;e=r;while(1){if(!n)break a;f=c[n+16>>2]|0;g=f+112|0;if(!(c[g>>2]|0)){c[g>>2]=a;c[I>>2]=0;c[I+4>>2]=0;c[I+8>>2]=0;c[I+12>>2]=0;h[o>>3]=+h[f+96>>3]+ +h[f+88>>3];h[p>>3]=+h[f+80>>3];t=z+(e<<5)|0;c[t>>2]=c[I>>2];c[t+4>>2]=c[I+4>>2];c[t+8>>2]=c[I+8>>2];c[t+12>>2]=c[I+12>>2];c[t+16>>2]=c[I+16>>2];c[t+20>>2]=c[I+20>>2];c[t+24>>2]=c[I+24>>2];c[t+28>>2]=c[I+28>>2];if(q&(c[s>>2]|0)!=0){t=JL(n,d,0,0)|0;c[(c[s>>2]|0)+(e<<2)>>2]=t}c[A+(e<<2)>>2]=n;e=e+1|0}n=Sy(a,n)|0}}while(0);t=PD(C,z,B)|0;d=c[s>>2]|0;if(d|0)C_(d);uo(J,2147483647.0,2147483647.0);s=J+16|0;uo(u,-2147483647.0,-2147483647.0);c[s>>2]=c[u>>2];c[s+4>>2]=c[u+4>>2];c[s+8>>2]=c[u+8>>2];c[s+12>>2]=c[u+12>>2];g=I+16|0;n=I+8|0;o=I+24|0;p=J+8|0;q=J+24|0;r=c[15686]|0;d=0;while(1){if((d|0)>=(C|0))break;j=+(c[t+(d<<3)>>2]|0);m=+(c[t+(d<<3)+4>>2]|0);e=z+(d<<5)|0;c[I>>2]=c[e>>2];c[I+4>>2]=c[e+4>>2];c[I+8>>2]=c[e+8>>2];c[I+12>>2]=c[e+12>>2];c[I+16>>2]=c[e+16>>2];c[I+20>>2]=c[e+20>>2];c[I+24>>2]=c[e+24>>2];c[I+28>>2]=c[e+28>>2];i=+h[I>>3]+j;h[I>>3]=i;j=+h[g>>3]+j;h[g>>3]=j;k=+h[n>>3]+m;h[n>>3]=k;m=+h[o>>3]+m;h[o>>3]=m;h[J>>3]=+h[(+h[J>>3]>3];h[p>>3]=+h[(+h[p>>3]>3];h[s>>3]=+h[(+h[s>>3]>j?J:I)+16>>3];h[q>>3]=+h[(+h[q>>3]>m?J:I)+24>>3];e=c[A+(d<<2)>>2]|0;f=e+16|0;if((d|0)<(c[(c[E>>2]|0)+180>>2]|0)){u=(c[f>>2]|0)+16|0;c[u>>2]=c[I>>2];c[u+4>>2]=c[I+4>>2];c[u+8>>2]=c[I+8>>2];c[u+12>>2]=c[I+12>>2];c[u+16>>2]=c[I+16>>2];c[u+20>>2]=c[I+20>>2];c[u+24>>2]=c[I+24>>2];c[u+28>>2]=c[I+28>>2];if(0>1){to(b);c[y>>2]=qy(e)|0;h[y+8>>3]=i;h[y+16>>3]=k;h[y+24>>3]=j;h[y+32>>3]=m;f1(r,90462,y)|0}}else{u=(c[f>>2]|0)+16|0;c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];c[F+8>>2]=c[I+8>>2];c[F+12>>2]=c[I+12>>2];c[G>>2]=c[g>>2];c[G+4>>2]=c[g+4>>2];c[G+8>>2]=c[g+8>>2];c[G+12>>2]=c[g+12>>2];vo(w,F,G);c[u>>2]=c[w>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];if(0>1){to(b);u=qy(e)|0;f=c[f>>2]|0;k=+h[f+16>>3];m=+h[f+24>>3];c[x>>2]=u;h[x+8>>3]=k;h[x+16>>3]=m;f1(r,90450,x)|0}}d=d+1|0}e=c[E>>2]|0;d=c[e+12>>2]|0;if(d|0){i=+h[d+24>>3];if(v){j=+h[d+32>>3];c[J>>2]=0;c[J+4>>2]=0;c[J+8>>2]=0;c[J+12>>2]=0;h[s>>3]=i;h[q>>3]=j;j=0.0;k=i}else{j=+h[J>>3];k=+h[s>>3]}m=i-(k-j);i=m*.5;if(m>0.0){h[J>>3]=j-i;h[s>>3]=k+i}}if((b|0)>0)i=+((c[B+8>>2]|0)>>>0)*.5;else i=0.0;j=+h[J>>3]-i;h[J>>3]=j;k=+h[s>>3]+i;h[s>>3]=k;m=-i-+h[e+56>>3]+ +h[p>>3];h[p>>3]=m;i=+h[e+88>>3]+i+ +h[q>>3];h[q>>3]=i;if(0>1){to(b);c[D>>2]=qy(a)|0;h[D+8>>3]=j;h[D+16>>3]=m;h[D+24>>3]=k;h[D+32>>3]=i;f1(r,90462,D)|0}d=0;while(1){if((d|0)>=(C|0))break;e=c[A+(d<<2)>>2]|0;f=e+16|0;if((d|0)<(c[(c[E>>2]|0)+180>>2]|0)){D=(c[f>>2]|0)+16|0;c[I>>2]=c[D>>2];c[I+4>>2]=c[D+4>>2];c[I+8>>2]=c[D+8>>2];c[I+12>>2]=c[D+12>>2];c[I+16>>2]=c[D+16>>2];c[I+20>>2]=c[D+20>>2];c[I+24>>2]=c[D+24>>2];c[I+28>>2]=c[D+28>>2];c[F>>2]=c[D>>2];c[F+4>>2]=c[D+4>>2];c[F+8>>2]=c[D+8>>2];c[F+12>>2]=c[D+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];wo(I,F,G);c[F>>2]=c[g>>2];c[F+4>>2]=c[g+4>>2];c[F+8>>2]=c[g+8>>2];c[F+12>>2]=c[g+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];wo(K,F,G);c[g>>2]=c[K>>2];c[g+4>>2]=c[K+4>>2];c[g+8>>2]=c[K+8>>2];c[g+12>>2]=c[K+12>>2];D=(c[f>>2]|0)+16|0;c[D>>2]=c[I>>2];c[D+4>>2]=c[I+4>>2];c[D+8>>2]=c[I+8>>2];c[D+12>>2]=c[I+12>>2];c[D+16>>2]=c[I+16>>2];c[D+20>>2]=c[I+20>>2];c[D+24>>2]=c[I+24>>2];c[D+28>>2]=c[I+28>>2];if(0>1){to(b);D=qy(e)|0;i=+h[I>>3];j=+h[n>>3];k=+h[g>>3];m=+h[o>>3];c[N>>2]=D;h[N+8>>3]=i;h[N+16>>3]=j;h[N+24>>3]=k;h[N+32>>3]=m;f1(r,90462,N)|0}}else{D=(c[f>>2]|0)+16|0;c[F>>2]=c[D>>2];c[F+4>>2]=c[D+4>>2];c[F+8>>2]=c[D+8>>2];c[F+12>>2]=c[D+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];wo(L,F,G);c[D>>2]=c[L>>2];c[D+4>>2]=c[L+4>>2];c[D+8>>2]=c[L+8>>2];c[D+12>>2]=c[L+12>>2];if(0>1){to(b);D=qy(e)|0;B=c[f>>2]|0;k=+h[B+16>>3];m=+h[B+24>>3];c[O>>2]=D;h[O+8>>3]=k;h[O+16>>3]=m;f1(r,90450,O)|0}}d=d+1|0}c[F>>2]=c[s>>2];c[F+4>>2]=c[s+4>>2];c[F+8>>2]=c[s+8>>2];c[F+12>>2]=c[s+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];wo(M,F,G);c[s>>2]=c[M>>2];c[s+4>>2]=c[M+4>>2];c[s+8>>2]=c[M+8>>2];c[s+12>>2]=c[M+12>>2];c[F>>2]=c[J>>2];c[F+4>>2]=c[J+4>>2];c[F+8>>2]=c[J+8>>2];c[F+12>>2]=c[J+12>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];wo(H,F,G);c[J>>2]=c[H>>2];c[J+4>>2]=c[H+4>>2];c[J+8>>2]=c[H+8>>2];c[J+12>>2]=c[H+12>>2];O=(c[E>>2]|0)+16|0;c[O>>2]=c[J>>2];c[O+4>>2]=c[J+4>>2];c[O+8>>2]=c[J+8>>2];c[O+12>>2]=c[J+12>>2];c[O+16>>2]=c[J+16>>2];c[O+20>>2]=c[J+20>>2];c[O+24>>2]=c[J+24>>2];c[O+28>>2]=c[J+28>>2];if(0>1){to(b);O=qy(a)|0;i=+h[J>>3];j=+h[p>>3];k=+h[s>>3];m=+h[q>>3];c[P>>2]=O;h[P+8>>3]=i;h[P+16>>3]=j;h[P+24>>3]=k;h[P+32>>3]=m;f1(r,90462,P)|0}C_(z);C_(A);C_(t)}l=Q;return}function so(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0;t=l;l=l+80|0;s=t+32|0;i=t+8|0;d=t;r=a+16|0;o=c[r>>2]|0;p=+h[o+16>>3];q=+h[o+24>>3];if(0>1){to(b);o=c[15686]|0;c[d>>2]=qy(a)|0;f1(o,90435,d)|0}o=(b|0)!=0;a:do if(o){d=Ry(a)|0;e=c[15686]|0;while(1){if(!d)break a;f=d+16|0;g=c[f>>2]|0;if((c[g+112>>2]|0)==(a|0)?(u=g+16|0,h[u>>3]=+h[u>>3]+p,g=g+24|0,h[g>>3]=+h[g>>3]+q,0>1):0){to(b);u=qy(d)|0;g=c[f>>2]|0;m=+h[g+16>>3];n=+h[g+24>>3];c[i>>2]=u;h[i+8>>3]=m;h[i+16>>3]=n;f1(e,90450,i)|0}d=Sy(a,d)|0}}else e=c[15686]|0;while(0);i=b+1|0;a=1;while(1){d=c[r>>2]|0;if((a|0)>(c[d+180>>2]|0))break;g=c[(c[d+184>>2]|0)+(a<<2)>>2]|0;if(o){f=g+16|0;d=c[f>>2]|0;j=+h[d+16>>3]+p;k=+h[d+24>>3]+q;m=+h[d+32>>3]+p;n=+h[d+40>>3]+q;if(0>1){to(b);c[s>>2]=qy(g)|0;h[s+8>>3]=j;h[s+16>>3]=k;h[s+24>>3]=m;h[s+32>>3]=n;f1(e,90462,s)|0;d=c[f>>2]|0}h[d+16>>3]=j;h[d+24>>3]=k;h[d+32>>3]=m;h[d+40>>3]=n}so(g,i);a=a+1|0}l=t;return}function to(a){a=a|0;var b=0;b=c[15686]|0;while(1){if((a|0)<=0)break;C1(90480,b)|0;a=a+-1|0}return}function uo(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function vo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function wo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=d;return}function xo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function yo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=a+8|0;d=(c[g>>2]|0)+1|0;c[g>>2]=d;e=a+4|0;h=c[e>>2]|0;f=h+10|0;if((d|0)<(h|0))a=c[a>>2]|0;else{c[e>>2]=f;d=wH(c[a>>2]|0,f<<2)|0;c[a>>2]=d;a=d;d=c[g>>2]|0}c[a+(d<<2)>>2]=b;return}function zo(a){a=a|0;var b=0;b=Ry(a)|0;while(1){if(!b)break;GM(b);b=Sy(a,b)|0}Ao(a);return}function Ao(a){a=a|0;var b=0,d=0,e=0;b=a+16|0;a=1;while(1){e=c[b>>2]|0;d=c[e+184>>2]|0;if((a|0)>(c[e+180>>2]|0))break;e=c[d+(a<<2)>>2]|0;mH(c[(c[e+16>>2]|0)+12>>2]|0);Ao(e);a=a+1|0}C_(d);return}function Bo(a){a=a|0;var b=0,d=0,e=0;Ez(a,1,134365,304,1);rM(a)|0;b=tH((($x(a)|0)<<2)+4|0)|0;e=a+16|0;c[(c[e>>2]|0)+152>>2]=b;b=0;d=Ry(a)|0;while(1){if(!d)break;Co(d);c[(c[(c[e>>2]|0)+152>>2]|0)+(b<<2)>>2]=d;c[(c[d+16>>2]|0)+120>>2]=b;b=b+1|0;d=Sy(a,d)|0}e=mx(a,2,90566,0)|0;d=Ry(a)|0;while(1){if(!d)break;b=Dx(a,d)|0;while(1){if(!b)break;Do(b,e);b=Fx(a,b)|0}d=Sy(a,d)|0}Eo(a);return}function Co(a){a=a|0;var b=0;cM(a);b=tH((e[(c[(dz(a)|0)+16>>2]|0)+176>>1]|0)<<3)|0;c[(c[a+16>>2]|0)+132>>2]=b;aN(a,c[(c[(dz(a)|0)+16>>2]|0)+116>>2]&1);return}function Do(a,b){a=a|0;b=b|0;var d=0,e=0.0;zz(a,134378,176,1)|0;e=+KL(a,c[46404]|0,1.0,0.0);d=a+16|0;h[(c[d>>2]|0)+128>>3]=e;e=+KL(a,b,+h[1371],0.0);h[(c[d>>2]|0)+136>>3]=e;dM(a)|0;return}function Eo(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=l;l=l+32|0;q=r+16|0;p=r;m=r+24|0;n=mx(b,1,99597,0)|0;a:do if(n|0){o=mx(b,1,90570,0)|0;i=b+16|0;j=(o|0)==0;k=c[15686]|0;g=0;while(1){e=c[(c[(c[i>>2]|0)+152>>2]|0)+(g<<2)>>2]|0;if(!e)break a;b=xx(e,n)|0;do if(a[b>>0]|0){f=e+16|0;d=c[(c[f>>2]|0)+132>>2]|0;a[m>>0]=0;c[p>>2]=d;c[p+4>>2]=d+8;c[p+8>>2]=m;if((M1(b,98723,p)|0)<=1){c[q>>2]=qy(e)|0;c[q+4>>2]=b;f1(k,90574,q)|0;break}b:do if(+h[22908]>0.0){b=0;while(1){if((b|0)==2)break b;s=d+(b<<3)|0;h[s>>3]=+h[s>>3]/+h[22908];b=b+1|0}}while(0);b=c[f>>2]|0;a[b+119>>0]=1;if((a[m>>0]|0)!=33){if(j)break;if(!((PL(xx(e,o)|0)|0)<<24>>24))break;b=c[f>>2]|0}a[b+119>>0]=3}while(0);g=g+1|0}}while(0);l=r;return}function Fo(a){a=a|0;var b=0,c=0;c=Ry(a)|0;while(1){if(!c)break;b=Dx(a,c)|0;while(1){if(!b)break;IM(b);b=Fx(a,b)|0}GM(c);c=Sy(a,c)|0}Go(a);return}function Go(a){a=a|0;Ho(a);a=a+16|0;C_(c[(c[a>>2]|0)+152>>2]|0);C_(c[(c[a>>2]|0)+140>>2]|0);return}function Ho(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+16|0;f=1;while(1){e=c[g>>2]|0;b=c[e+184>>2]|0;if((f|0)>(c[e+180>>2]|0))break;e=c[b+(f<<2)>>2]|0;b=e+16|0;mH(c[(c[b>>2]|0)+12>>2]|0);d=c[(c[b>>2]|0)+140>>2]|0;if(d|0){C_(c[d>>2]|0);C_(c[(c[b>>2]|0)+140>>2]|0)}Ho(e);f=f+1|0}C_(b);if((ez(a)|0)!=(a|0))Bz(a,134401)|0;return}function Io(a,b){a=a|0;b=b|0;c[b+4>>2]=mx(a,0,90626,0)|0;c[b+8>>2]=mx(a,0,138034,0)|0;c[b+12>>2]=mx(a,0,137966,0)|0;c[b>>2]=a;c[b+16>>2]=0;c[b+36>>2]=WD(a,2,4,b+20|0)|0;return}function Jo(a){a=a|0;var d=0,e=0;_M(a,2);d=tH(56)|0;e=a+16|0;c[(c[e>>2]|0)+140>>2]=d;d=(JL(a,mx(a,0,90633,0)|0,2,2)|0)&65535;d=(d&65535)<10?d:10;b[(c[e>>2]|0)+176>>1]=d;c[46366]=d&65535;Ko(a,0,a);gp(a);Bo(a);return}function Ko(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;m=l;l=l+16|0;j=m;k=(d|0)==0;if(k){Lo(j);d=j}g=e+16|0;f=vA(a)|0;while(1){if(!f)break;if(!(y$(qy(f)|0,104980,7)|0)){zz(f,134401,280,1)|0;n=tH(56)|0;p=c[f+16>>2]|0;c[p+140>>2]=n;o=c[g>>2]|0;b[p+176>>1]=b[o+176>>1]|0;c[n+44>>2]=(c[(c[o+140>>2]|0)+44>>2]|0)+1;c[n+48>>2]=e;Mo(d,f);Ko(f,0,f)}else Ko(f,d,e);f=wA(f)|0}if(k?(h=c[j+8>>2]|0,i=a+16|0,c[(c[i>>2]|0)+180>>2]=h,h|0):0){p=wH(c[j>>2]|0,(h<<2)+4|0)|0;c[(c[i>>2]|0)+184>>2]=p}l=m;return}function Lo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}function Mo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=a+8|0;d=(c[g>>2]|0)+1|0;c[g>>2]=d;e=a+4|0;h=c[e>>2]|0;f=h+10|0;if((d|0)<(h|0))a=c[a>>2]|0;else{c[e>>2]=f;d=wH(c[a>>2]|0,f<<2)|0;c[a>>2]=d;a=d;d=c[g>>2]|0}c[a+(d<<2)>>2]=b;return}function No(a){a=a|0;var b=0,c=0;b=l;l=l+64|0;c=b;Io(a,c);Oo(a,c);Po(a);Qo(a,a);Ro(a);l=b;return}function Oo(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0,w=0.0,x=0.0;s=l;l=l+64|0;r=s+48|0;e=s+40|0;o=s+56|0;n=s+52|0;m=s;if(0){q=c[15686]|0;c[e>>2]=qy(b)|0;f1(q,90637,e)|0}e=Ry(b)|0;while(1){if(!e)break;c[(c[e+16>>2]|0)+164>>2]=0;e=Sy(b,e)|0}p=So(b,d)|0;q=Hu(p,o,n)|0;e=q;while(1){k=e+4|0;f=c[e>>2]|0;if(!f)break;hp(f,m);e=Ry(f)|0;while(1){if(!e)break;g=Sy(f,e)|0;i=e+16|0;j=c[i>>2]|0;if(c[j+212>>2]|0){v=To(e,f)|0;Oo(v,d);v=c[(c[v+16>>2]|0)+140>>2]|0;u=+h[v+24>>3];j=c[i>>2]|0;h[j+32>>3]=u;t=+h[v+32>>3];h[j+40>>3]=t;u=u*36.0;h[j+88>>3]=u;h[j+96>>3]=u;h[j+80>>3]=t*72.0;e=g;continue}if(c[(c[j+112>>2]|0)+8>>2]|0){e=g;continue}cz(f,e)|0;e=g}if(($x(f)|0)<=1){e=k;continue}if((c[d>>2]|0)==(b|0))Pp(f)|0;up(f,m);e=k}e=c[o>>2]|0;if((e|0)<=1)if((e|0)==1){lM(c[q>>2]|0);e=0}else e=0;else{if(!(c[n>>2]|0))f=0;else{f=tH(e)|0;a[f>>0]=1;e=c[o>>2]|0}c[d+40>>2]=f;e=AD(e,q,0,d+20|0)|0;C_(f)}Uo(p,c[o>>2]|0,q,e,b,d);C_(e);f=Ry(p)|0;while(1){if(!f)break;g=c[f+16>>2]|0;e=c[g+212>>2]|0;if(!e){e=c[(c[g+112>>2]|0)+8>>2]|0;if(e|0){o=c[g+132>>2]|0;v=c[(c[e+16>>2]|0)+132>>2]|0;h[v>>3]=+h[o>>3];h[v+8>>3]=+h[o+8>>3]}}else{o=c[g+132>>2]|0;x=+h[g+32>>3];w=+h[o>>3]-x*.5;v=c[(c[e+16>>2]|0)+140>>2]|0;h[v+8>>3]=w;t=+h[g+40>>3];u=+h[o+8>>3]-t*.5;h[v+16>>3]=u;h[v+24>>3]=x+w;h[v+32>>3]=t+u}f=Sy(p,f)|0}v=(c[(c[b+16>>2]|0)+140>>2]|0)+8|0;o=(c[(c[p+16>>2]|0)+140>>2]|0)+8|0;c[v>>2]=c[o>>2];c[v+4>>2]=c[o+4>>2];c[v+8>>2]=c[o+8>>2];c[v+12>>2]=c[o+12>>2];c[v+16>>2]=c[o+16>>2];c[v+20>>2]=c[o+20>>2];c[v+24>>2]=c[o+24>>2];c[v+28>>2]=c[o+28>>2];Vo(p,q);C_(q);if(0){v=c[15686]|0;c[r>>2]=qy(b)|0;f1(v,90648,r)|0}l=s;return}function Po(b){b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0;d=Ry(b)|0;while(1){if(!d)break;e=c[d+16>>2]|0;if(a[e+118>>0]|0){k=c[(c[(c[e+212>>2]|0)+16>>2]|0)+140>>2]|0;j=+h[k+24>>3]-+h[k+8>>3];i=+h[k+32>>3]-+h[k+16>>3];g=j*36.0;f=i*36.0;k=c[e+132>>2]|0;h[k>>3]=j*.5;h[k+8>>3]=i*.5;h[e+32>>3]=j;h[e+40>>3]=i;h[e+96>>3]=g;h[e+88>>3]=g;h[e+80>>3]=i*72.0;e=c[(c[e+12>>2]|0)+44>>2]|0;h[e>>3]=g;h[e+8>>3]=f;i=-g;h[e+16>>3]=i;h[e+24>>3]=f;h[e+32>>3]=i;f=-f;h[e+40>>3]=f;h[e+48>>3]=g;h[e+56>>3]=f}d=Sy(b,d)|0}return}function Qo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0,j=0,k=0.0,l=0,m=0.0,n=0,o=0.0,p=0;i=a+16|0;j=c[(c[i>>2]|0)+140>>2]|0;f=+h[j+8>>3];g=+h[j+16>>3];j=(a|0)!=(b|0);a:do if(j){d=Ry(a)|0;while(1){if(!d){a=1;break a}e=c[d+16>>2]|0;if((c[e+212>>2]|0)==(a|0)){e=c[e+132>>2]|0;h[e>>3]=+h[e>>3]+f;e=e+8|0;h[e>>3]=+h[e>>3]+g}d=Sy(a,d)|0}}else a=1;while(0);while(1){d=c[i>>2]|0;if((a|0)>(c[d+180>>2]|0))break;d=c[(c[d+184>>2]|0)+(a<<2)>>2]|0;if(j){e=c[(c[d+16>>2]|0)+140>>2]|0;p=e+8|0;n=e+16|0;l=e+24|0;e=e+32|0;o=+h[n>>3]+g;m=+h[l>>3]+f;k=+h[e>>3]+g;h[p>>3]=+h[p>>3]+f;h[n>>3]=o;h[l>>3]=m;h[e>>3]=k}Qo(d,b);a=a+1|0}return}function Ro(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0;b=a+16|0;a=c[b>>2]|0;d=c[a+140>>2]|0;g=+h[d+16>>3]*72.0;f=+h[d+24>>3]*72.0;e=+h[d+32>>3]*72.0;h[a+16>>3]=+h[d+8>>3]*72.0;h[a+24>>3]=g;h[a+32>>3]=f;h[a+40>>3]=e;a=1;while(1){d=c[b>>2]|0;if((a|0)>(c[d+180>>2]|0))break;Ro(c[(c[d+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}return}function So(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+160|0;s=y+24|0;t=y+8|0;g=y;f=y+56|0;w=e+16|0;x=c[w>>2]|0;c[w>>2]=x+1;c[s>>2]=x;X0(f,90710,s)|0;if(0>1){x=c[15686]|0;w=qy(d)|0;c[g>>2]=f;c[g+4>>2]=w;f1(x,90717,g)|0};a[s>>0]=a[18484]|0;a[s+1>>0]=a[18485]|0;a[s+2>>0]=a[18486]|0;a[s+3>>0]=a[18487]|0;x=Wx(91072,s,0)|0;zz(x,134401,280,1)|0;v=tH(56)|0;w=x+16|0;o=c[w>>2]|0;c[o+140>>2]=v;v=d+16|0;b[o+176>>1]=b[(c[v>>2]|0)+176>>1]|0;$o(d,x,91095);$o(d,x,91700);$o(d,x,90983);o=e+4|0;p=s+16|0;q=s+8|0;r=s+24|0;j=0;n=1;while(1){f=c[v>>2]|0;if((n|0)>(c[f+180>>2]|0))break;c[s>>2]=c[332];c[s+4>>2]=c[333];c[s+8>>2]=c[334];c[s+12>>2]=c[335];c[s+16>>2]=c[336];c[s+20>>2]=c[337];c[s+24>>2]=c[338];c[s+28>>2]=c[339];g=c[(c[f+184>>2]|0)+(n<<2)>>2]|0;eH(g);i=ap(x,qy(g)|0)|0;k=i+16|0;f=c[k>>2]|0;c[f+212>>2]=g;m=j+1|0;c[f+120>>2]=j;if(c[o>>2]|0)bp(g,i,e,s);f=Ry(g)|0;while(1){if(!f)break;c[(c[f+16>>2]|0)+164>>2]=i;f=Sy(g,f)|0}f=c[k>>2]|0;if(a[f+119>>0]|0){k=c[f+132>>2]|0;h[k>>3]=(+h[p>>3]+ +h[s>>3])*.5;h[k+8>>3]=(+h[r>>3]+ +h[q>>3])*.5}j=m;n=n+1|0}k=Ry(d)|0;while(1){if(!k)break;f=k+16|0;g=c[f>>2]|0;if(!(c[g+164>>2]|0)){i=g+212|0;s=c[i>>2]|0;if(s|0?(s|0)!=(c[(c[(c[v>>2]|0)+140>>2]|0)+48>>2]|0):0){u=18;break}c[i>>2]=d;if(!(a[g+118>>0]|0)){i=ap(x,qy(k)|0)|0;g=c[f>>2]|0;c[g+164>>2]=i;i=c[i+16>>2]|0;c[i+120>>2]=j;h[i+32>>3]=+h[g+32>>3];h[i+40>>3]=+h[g+40>>3];h[i+88>>3]=+h[g+88>>3];h[i+96>>3]=+h[g+96>>3];h[i+80>>3]=+h[g+80>>3];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];f=a[g+119>>0]|0;if(f<<24>>24){e=c[g+132>>2]|0;s=c[i+132>>2]|0;h[s>>3]=+h[e>>3];h[s+8>>3]=+h[e+8>>3];a[i+119>>0]=f}c[(c[i+112>>2]|0)+8>>2]=k;f=j+1|0}else f=j}else f=j;k=Sy(d,k)|0;j=f}if((u|0)==18){e=qy(k)|0;s=qy(d)|0;u=qy(c[(c[f>>2]|0)+212>>2]|0)|0;c[t>>2]=e;c[t+4>>2]=s;c[t+8>>2]=u;Ow(1,90740,t)|0;bb(184132,1)}m=Ry(d)|0;while(1){if(!m)break;n=c[(c[m+16>>2]|0)+164>>2]|0;o=n+16|0;i=Dx(d,m)|0;while(1){if(!i)break;f=c[(c[(c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+164>>2]|0;if((f|0)!=(n|0)){if(f>>>0>n>>>0)k=Qx(x,n,f,0,1)|0;else k=Qx(x,f,n,0,1)|0;zz(k,134378,176,1)|0;g=c[i+16>>2]|0;u=c[k+16>>2]|0;h[u+136>>3]=+h[g+136>>3];h[u+128>>3]=+h[g+128>>3];f=c[(c[f+16>>2]|0)+112>>2]|0;g=f+4|0;c[g>>2]=(c[g>>2]|0)+1;g=c[(c[o>>2]|0)+112>>2]|0;t=g+4|0;c[t>>2]=(c[t>>2]|0)+1;if(!(c[u+172>>2]|0)){c[f>>2]=(c[f>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+1}cp(k,i)}i=Fx(d,i)|0}m=Sy(d,m)|0}f=c[(c[v>>2]|0)+140>>2]|0;g=c[f>>2]|0;if(g|0){i=tH((c[f+4>>2]<<4)+16|0)|0;c[c[(c[w>>2]|0)+140>>2]>>2]=i;f=0;while(1){if(!(c[g>>2]|0))break;m=c[(c[(c[g+4>>2]|0)+16>>2]|0)+164>>2]|0;if(m){dp(d,g);n=ap(x,190692)|0;o=n+16|0;c[(c[o>>2]|0)+120>>2]=j;if(n>>>0>m>>>0)k=Qx(x,m,n,0,1)|0;else k=Qx(x,n,m,0,1)|0;zz(k,134378,176,1)|0;u=c[g>>2]|0;t=c[u+16>>2]|0;v=c[k+16>>2]|0;h[v+136>>3]=+h[t+136>>3];h[v+128>>3]=+h[t+128>>3];cp(k,u);u=c[(c[o>>2]|0)+112>>2]|0;v=u+4|0;c[v>>2]=(c[v>>2]|0)+1;v=c[(c[m+16>>2]|0)+112>>2]|0;t=v+4|0;c[t>>2]=(c[t>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+1;c[v>>2]=(c[v>>2]|0)+1;c[i+4>>2]=n;h[i+8>>3]=+h[g+8>>3];c[i>>2]=k;f=f+1|0;i=i+16|0;j=j+1|0}g=g+16|0}c[(c[(c[w>>2]|0)+140>>2]|0)+4>>2]=f}l=y;return x|0}function To(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;l=c[a+16>>2]|0;k=c[l+212>>2]|0;l=c[(c[l+112>>2]|0)+4>>2]|0;do if(l|0){j=tH((l<<4)+16|0)|0;f=Yo(a,b)|0;g=f+8|0;b=0;e=f;while(1){if(!(c[e>>2]|0))break;i=e+24|0;if(!(c[i>>2]|0))d=+h[g>>3]+6.283185307179586;else d=+h[e+32>>3];b=Zo(a,e,j,b,d)|0;e=i}if((b|0)==(l|0)){a=c[(c[k+16>>2]|0)+140>>2]|0;c[a>>2]=j;c[a+4>>2]=l;C_(f);break}else qa(90656,90666,766,90675)}while(0);return k|0}function Uo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0;B=l;l=l+32|0;x=B+16|0;A=B;m=c[g+8>>2]|0;j=c[g+12>>2]|0;y=(c[g>>2]|0)==(f|0);z=(b|0)!=0;a:do if(z){p=c[(c[d>>2]|0)+16>>2]|0;k=+h[p+16>>3];m=~~(k+(k>=0.0?.5:-.5));c[A>>2]=m;k=+h[p+24>>3];g=~~(k+(k>=0.0?.5:-.5));u=A+4|0;c[u>>2]=g;k=+h[p+32>>3];n=~~(k+(k>=0.0?.5:-.5));v=A+8|0;c[v>>2]=n;k=+h[p+40>>3];p=~~(k+(k>=0.0?.5:-.5));w=A+12|0;c[w>>2]=p;if((b|0)>1){q=c[e>>2]|0;t=c[e+4>>2]|0;m=q+m|0;c[A>>2]=m;b=t+g|0;c[u>>2]=b;n=q+n|0;c[v>>2]=n;q=x+4|0;r=x+8|0;s=x+12|0;o=e;g=d;t=t+p|0;p=b;while(1){g=g+4|0;j=o+8|0;c[w>>2]=t;b=c[g>>2]|0;if(!b){j=0;r=p;s=t;break a}E=c[b+16>>2]|0;G=+h[E+16>>3];i=+h[E+24>>3];k=+h[E+32>>3];H=+h[E+40>>3];E=~~(H+(H>=0.0?.5:-.5));c[s>>2]=E;b=c[j>>2]|0;F=c[o+12>>2]|0;D=b+~~(G+(G>=0.0?.5:-.5))|0;c[x>>2]=D;C=F+~~(i+(i>=0.0?.5:-.5))|0;c[q>>2]=C;b=b+~~(k+(k>=0.0?.5:-.5))|0;c[r>>2]=b;E=F+E|0;c[s>>2]=E;D=c[((m|0)<(D|0)?A:x)>>2]|0;c[A>>2]=D;C=c[((p|0)<(C|0)?A:x)+4>>2]|0;c[u>>2]=C;b=c[((n|0)>(b|0)?A:x)+8>>2]|0;c[v>>2]=b;o=j;t=c[((t|0)>(E|0)?A:x)+12>>2]|0;m=D;p=C;n=b}}else{j=0;r=g;s=p}}else{c[A>>2]=0;c[A+4>>2]=0;n=JL(f,m,54,3)|0;c[A+8>>2]=n;s=JL(f,j,36,3)|0;c[A+12>>2]=s;j=1;m=0;r=0}while(0);b=f+16|0;o=c[b>>2]|0;g=c[o+12>>2]|0;if(g){H=+h[g+24>>3];g=m-n+~~(H+(H>=0.0?.5:-.5))|0;if((g|0)>0){g=g>>>1;m=m-g|0;c[A>>2]=m;n=n+g|0;c[A+8>>2]=n;g=0}else g=0}else g=j;if(y|(g|0)!=0){j=0;g=o}else{j=JL(a,c[46374]|0,8,0)|0;g=c[b>>2]|0}q=j-m|0;p=~~(+h[g+56>>3]+ +(j-r|0));c[A>>2]=0;c[A+4>>2]=0;o=q+j+n|0;c[A+8>>2]=o;b=~~(+h[g+88>>3]+ +(j+p|0)+ +(s|0));c[A+12>>2]=b;b:do if(z){g=e;c:while(1){n=d+4|0;j=c[d>>2]|0;if(!j)break b;if(!g){m=0;d=q;g=p}else{m=g+8|0;d=(c[g>>2]|0)+q|0;g=(c[g+4>>2]|0)+p|0}k=+(d|0)*.013888888888888888;i=+(g|0)*.013888888888888888;d=Ry(j)|0;while(1){if(!d){d=n;g=m;continue c}F=c[(c[d+16>>2]|0)+132>>2]|0;h[F>>3]=+h[F>>3]+k;F=F+8|0;h[F>>3]=+h[F>>3]+i;d=Sy(j,d)|0}}}while(0);F=c[(c[a+16>>2]|0)+140>>2]|0;E=F+8|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;h[F+24>>3]=+(o|0)*.013888888888888888;h[F+32>>3]=+(b|0)*.013888888888888888;l=B;return}function Vo(a,b){a=a|0;b=b|0;var d=0,e=0;while(1){d=c[b>>2]|0;if(!d)break;Wo(d);Bz(d,134401)|0;b=b+4|0}b=c[c[(c[a+16>>2]|0)+140>>2]>>2]|0;if(b|0)C_(b);Wo(a);Bz(a,134401)|0;d=Ry(a)|0;while(1){if(!d)break;e=Sy(a,d)|0;b=Dx(a,d)|0;while(1){if(!b)break;C_(c[(c[b+16>>2]|0)+172>>2]|0);Bz(b,134378)|0;b=Fx(a,b)|0}Xo(d);d=e}_x(a)|0;return}function Wo(a){a=a|0;C_(c[(c[a+16>>2]|0)+140>>2]|0);return}function Xo(a){a=a|0;var b=0;b=a+16|0;C_(c[(c[b>>2]|0)+112>>2]|0);C_(c[(c[b>>2]|0)+132>>2]|0);Bz(a,134365)|0;return}function Yo(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0.0,i=0,j=0,k=0,l=0,m=0;k=a+16|0;l=c[c[(c[k>>2]|0)+112>>2]>>2]|0;m=tH((l*24|0)+24|0)|0;i=0;j=Ix(b,a)|0;while(1){if(!j)break;f=c[j>>2]&3;e=c[((f|0)==2?j:j+-48|0)+40>>2]|0;if((e|0)==(a|0))e=c[((f|0)==3?j:j+48|0)+40>>2]|0;e=c[(c[e+16>>2]|0)+132>>2]|0;f=c[(c[k>>2]|0)+132>>2]|0;g=+h[e>>3]-+h[f>>3];d=+h[e+8>>3]-+h[f+8>>3];c[m+(i*24|0)>>2]=j;h[m+(i*24|0)+8>>3]=+K(+d,+g);h[m+(i*24|0)+16>>3]=d*d+g*g;i=i+1|0;j=Jx(b,j,a)|0}if((i|0)!=(l|0))qa(90689,90666,642,90698);Z0(m,l,24,67);a:do if((l|0)>1){j=l+-1|0;e=0;b:while(1){if((e|0)>=(j|0))break a;g=+h[m+(e*24|0)+8>>3];f=e+1|0;i=f;while(1){if((i|0)>=(l|0))break;if(!(+h[m+(i*24|0)+8>>3]==g))break;i=i+1|0}if((i|0)==(f|0)){e=f;continue}if((i|0)==(l|0))d=3.141592653589793;else d=+h[m+(i*24|0)+8>>3];d=(d-g)/+(i-e|0);d=d>.03490658503988659?.03490658503988659:d;g=0.0;while(1){if((e|0)>=(i|0))continue b;k=m+(e*24|0)+8|0;h[k>>3]=+h[k>>3]+g;g=g+d;e=e+1|0}}}while(0);return m|0}function Zo(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=+g;var i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0.0,q=0;k=c[d>>2]|0;n=c[k+16>>2]|0;m=b[n+168>>1]|0;o=m<<16>>16;j=c[k>>2]&3;i=c[((j|0)==2?k:k+-48|0)+40>>2]|0;if((i|0)==(a|0))i=c[((j|0)==3?k:k+48|0)+40>>2]|0;p=+h[d+8>>3];g=(g-p)/+(m<<16>>16);g=g>.03490658503988659?.03490658503988659:g;m=i>>>0>a>>>0;l=m?g:-g;d=m?1:-1;k=0;i=c[n+172>>2]|0;j=m?f:f+-1+o|0;g=m?p:g*+(o+-1|0)+p;while(1){if((k|0)>=(o|0))break;n=c[i>>2]|0;c[e+(j<<4)>>2]=n;m=c[n>>2]&3;q=(m|0)==3?n:n+48|0;c[e+(j<<4)+4>>2]=c[((c[(c[(c[q+40>>2]|0)+16>>2]|0)+164>>2]|0)==(a|0)?q:(m|0)==2?n:n+-48|0)+40>>2];h[e+(j<<4)+8>>3]=g;k=k+1|0;i=i+4|0;j=j+d|0;g=g+l}return o+f|0}function _o(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];if(!(c>d))if(!(c>3];c=+h[b+16>>3];if(d>c)a=1;else a=(d>31}else a=-1;else a=1;return a|0}function $o(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=mx(a,0,c,0)|0;do if(d|0){a=xx(a,d)|0;d=mx(b,0,c,0)|0;if(!d){mx(b,0,c,a)|0;break}else{qx(b,d,a)|0;break}}while(0);return}function ap(a,b){a=a|0;b=b|0;var d=0,f=0;b=$y(a,b,1)|0;zz(b,134365,304,1)|0;f=tH(32)|0;d=b+16|0;c[(c[d>>2]|0)+112>>2]=f;a=uH((e[(c[a+16>>2]|0)+176>>1]|0)<<3)|0;c[(c[d>>2]|0)+132>>2]=a;return b|0}function bp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+80|0;n=q+56|0;m=q+32|0;p=q;o=q+64|0;i=c[e+4>>2]|0;k=xx(b,i)|0;do if(a[k>>0]|0){if((c[e>>2]|0)!=(b|0)){e=xx(xA(b)|0,i)|0;if((e|0)==(k|0))break;if(!(a$(k,e)|0))break}a[o>>0]=0;e=p+8|0;i=p+16|0;j=p+24|0;c[m>>2]=p;c[m+4>>2]=e;c[m+8>>2]=i;c[m+12>>2]=j;c[m+16>>2]=o;if((M1(k,90851,m)|0)<=3){c[n>>2]=qy(b)|0;c[n+4>>2]=k;Ow(0,90869,n)|0;break}g=+h[22908];if(g>0.0){h[p>>3]=+h[p>>3]/g;h[e>>3]=+h[e>>3]/g;h[i>>3]=+h[i>>3]/g;h[j>>3]=+h[j>>3]/g}e=a[o>>0]|0;if(e<<24>>24==33)a[(c[d+16>>2]|0)+119>>0]=3;else a[(c[d+16>>2]|0)+119>>0]=e<<24>>24==63?2:1;c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];c[f+12>>2]=c[p+12>>2];c[f+16>>2]=c[p+16>>2];c[f+20>>2]=c[p+20>>2];c[f+24>>2]=c[p+24>>2];c[f+28>>2]=c[p+28>>2]}while(0);l=q;return}function cp(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=a+16|0;f=c[g>>2]|0;a=b[f+168>>1]|0;f=c[f+172>>2]|0;if(!f){a=a<<16>>16;e=a;a=uH((a<<2)+4|0)|0}else{a=a<<16>>16;e=a;a=wH(f,(a<<2)+4|0)|0}c[a+(e<<2)>>2]=d;d=c[g>>2]|0;c[d+172>>2]=a;d=d+168|0;b[d>>1]=(b[d>>1]|0)+1<<16>>16;return}function dp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+48|0;h=i+24|0;g=i;e=c[b>>2]|0;d=c[e>>2]&3;f=c[((d|0)==2?e:e+-48|0)+40>>2]|0;d=c[((d|0)==3?e:e+48|0)+40>>2]|0;b=V_(qy(a)|0)|0;j=V_(qy(f)|0)|0;j=(b+8+j+(V_(qy(d)|0)|0)|0)>999;b=qy(a)|0;if(j){d=qy(d)|0;j=qy(f)|0;h=(c[e>>2]|0)>>>4;c[g>>2]=b;c[g+4>>2]=d;c[g+8>>2]=j;j=g+16|0;c[j>>2]=h;c[j+4>>2]=0;X0(190692,90809,g)|0}else{d=c[(c[d+16>>2]|0)+120>>2]|0;j=c[(c[f+16>>2]|0)+120>>2]|0;g=(c[e>>2]|0)>>>4;c[h>>2]=b;c[h+4>>2]=d;c[h+8>>2]=j;j=h+16|0;c[j>>2]=g;c[j+4>>2]=0;X0(190692,90828,h)|0}l=i;return}function ep(a){a=a|0;var d=0,e=0,f=0.0,g=0.0,i=0,j=0,k=0;j=4;i=B_(40)|0;c[i>>2]=0;g=+h[22908];o=0;f=+Z(1,a|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=D3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)!=1){h[22908]=f;o=0;ia(100,a|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=D3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)!=1){i=C3(184132,1,i|0,j|0)|0;j=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){d=D3(c[e>>2]|0,i|0,j|0)|0;if(!d)bb(e|0,p|0);z=p}else d=-1;if((d|0)!=1)d=0;else d=z}else d=z}else d=z;while(1){if(d|0)break;o=0;ia(101,a|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=D3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue}o=0;$(22,a|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=D3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue}if(b[(c[a+16>>2]|0)+136>>1]&14){o=0;ia(102,a|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=D3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue}}o=0;ja(22,a|0,0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=D3(c[d>>2]|0,i|0,j|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1)d=z;else{k=12;break}}if((k|0)==12)h[22908]=g;C_(i|0);return}function fp(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;e=a+16|0;f=b[(c[e>>2]|0)+136>>1]&14;d=f&65535;if((f&65535)>8){if(f<<16>>16==12){if(Vm(a,22,10)|0){c[46363]=2;h=5}}else h=5;do if((h|0)==5)if(!(b[(c[e>>2]|0)+136>>1]&1)){Xm(a,d)|0;break}else{Ow(0,90912,g)|0;d=2;break}while(0);c[46363]=0}if((c[46367]|0)<1)Xm(a,d)|0;l=i;return}function gp(a){a=a|0;var b=0.0,d=0.0,e=0;e=l;l=l+16|0;c[45704]=1;c[45705]=1;c[45707]=-1;c[45709]=50;h[22860]=0.0;h[22855]=0.0;h[22856]=1.0;c[45708]=JL(a,mx(a,0,90975,0)|0,600,0)|0;d=+KL(a,mx(a,0,90983,0)|0,.3,0.0);h[22857]=d;h[1371]=d;if(-1.0==-1.0)b=+KL(a,mx(a,0,90985,0)|0,-1.0,0.0);else b=-1.0;h[22858]=b;c[45706]=1;a=nm(a,2,182824)|0;c[45718]=a;if(!a){Ow(0,90988,e)|0;c[45706]=2}c[45734]=(O(c[45708]|0,c[45709]|0)|0)/100|0;d=+h[22857];h[22862]=d*d;if(c[45704]|0){b=+h[22860];if(b<=0.0){b=d*3.0;h[22860]=b}h[22861]=b*b}l=e;return}function hp(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0;j=l;l=l+16|0;d=j;g=c[c[(c[a+16>>2]|0)+140>>2]>>2]|0;i=ip(a,b)|0;jp(d,a,g);e=+h[d>>3];f=+h[d+8>>3];a:do if(!(c[45704]|0)){b=0;while(1){if((b|0)>=(c[45735]|0))break a;mp(a,+kp(b),g);b=b+1|0}}else{d=Ju($x(a)|0)|0;Ou(d,$x(a)|0);b=0;while(1){if((b|0)>=(c[45735]|0))break;lp(a,+kp(b),g,d);b=b+1|0}Qu(d)}while(0);b:do if(e!=0.0|f!=0.0){b=Ry(a)|0;while(1){if(!b)break b;g=c[(c[b+16>>2]|0)+132>>2]|0;h[g>>3]=+h[g>>3]+e;g=g+8|0;h[g>>3]=+h[g>>3]+f;b=Sy(a,b)|0}}while(0);if(i|0)np();l=j;return}function ip(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0;if(+h[22858]==-1.0){i=$x(a)|0;d=+h[22857];h[22858]=+h[22856]*.2*d*+C(+(+(i|0)));i=1}else{i=0;d=+h[22857]}g=c[45734]|0;h[b+8>>3]=+kp(g);h[b+16>>3]=d;h[b+24>>3]=+h[22855];e=c[45708]|0;a=e-g|0;c[b>>2]=a;f=c[45707]|0;do if((f|0)>-1){if((f|0)<=(g|0)){c[45735]=f;a=0;j=10;break}if((f|0)<=(e|0)){c[45735]=g;a=f-g|0;j=10}}else{c[45735]=g;j=10}while(0);if((j|0)==10)c[b+32>>2]=a;return i|0}function jp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0.0,t=0.0,u=0,v=0,w=0.0,x=0,y=0,z=0;v=$x(d)|0;x=c[(c[(c[d+16>>2]|0)+140>>2]|0)+4>>2]|0;u=Ry(d)|0;q=0;r=0;g=0;k=0;n=0;while(1){if(!u)break;f=c[u+16>>2]|0;if(!(a[f+119>>0]|0))f=r;else{f=c[f+132>>2]|0;i=+h[f>>3];if(!q){k=~~i;g=~~+h[f+8>>3];n=g;f=k}else{p=+(r|0);s=+h[f+8>>3];t=+(g|0);w=+(k|0);o=+(n|0);n=~~(s>o?s:o);f=~~(iw?i:w)}q=q+1|0}u=Sy(d,u)|0;r=f}i=+h[22857]*(+C(+(+(v-x|0)))+1.0);s=i*.6;h[22864]=s;h[22863]=s;if((q|0)!=1)if((q|0)>1){t=+(k+r|0)*.5;w=+(n+g|0)*.5;o=+(k-r|0);p=o*1.2;l=+(n-g|0);m=l*1.2;i=i*2.4*s;j=m*p/i;do if(!(j>=1.0)){if(j>0.0){i=+C(+j)*2.0;j=p/i;h[22863]=j;i=m/i;z=20;break}if(p>0.0){j=o*.6;h[22863]=j;i=i/p*.5;z=20;break}if(m>0.0){j=i/m*.5;h[22863]=j;i=l*.6;z=20}else{i=s;j=s}}else{j=o*.6;h[22863]=j;i=l*.6;z=20}while(0);if((z|0)==20)h[22864]=i;s=+K(+i,+j);j=j/+E(+s);h[22863]=j;i=i/+F(+s);h[22864]=i}else{t=0.0;w=0.0;j=s;i=s}else{t=+(r|0);w=+(g|0);j=s;i=s}h[22865]=j*j;h[22866]=i*i;if((c[45718]|0)==2)f=c[45706]|0;else{f=G1()|0;f=(db(0)|0)^f}h2(f);a:do if(!e){e=Ry(d)|0;if(!q)while(1){if(!e)break a;s=+h[22863];s=(+j2()*2.0+-1.0)*s;z=e+16|0;h[c[(c[z>>2]|0)+132>>2]>>3]=s;s=+h[22864];s=(+j2()*2.0+-1.0)*s;h[(c[(c[z>>2]|0)+132>>2]|0)+8>>3]=s;e=Sy(d,e)|0}while(1){if(!e)break a;f=e+16|0;g=c[f>>2]|0;if(!(a[g+119>>0]|0)){s=+h[22863];s=(+j2()*2.0+-1.0)*s;h[c[(c[f>>2]|0)+132>>2]>>3]=s;s=+h[22864];s=(+j2()*2.0+-1.0)*s;h[(c[(c[f>>2]|0)+132>>2]|0)+8>>3]=s}else{z=c[g+132>>2]|0;h[z>>3]=+h[z>>3]-t;z=z+8|0;h[z>>3]=+h[z>>3]-w}e=Sy(d,e)|0}}else{while(1){if(!(c[e>>2]|0))break;u=e+8|0;s=+E(+(+h[u>>3]))*+h[22863]+t;x=c[(c[e+4>>2]|0)+16>>2]|0;v=c[x+132>>2]|0;h[v>>3]=s;h[v+8>>3]=+F(+(+h[u>>3]))*+h[22864]+w;a[x+119>>0]=1;e=e+16|0}l=t*.1;m=w*.1;r=Ry(d)|0;while(1){if(!r)break a;q=r+16|0;e=c[q>>2]|0;if(!((c[(c[e+112>>2]|0)+8>>2]|0)==0?!(c[e+212>>2]|0):0))z=32;do if((z|0)==32){z=0;if(a[e+119>>0]|0){x=c[e+132>>2]|0;h[x>>3]=+h[x>>3]-t;x=x+8|0;h[x>>3]=+h[x>>3]-w;break}n=Ix(d,r)|0;e=0;j=0.0;i=0.0;while(1){if(!n)break;k=c[n>>2]&3;f=(k|0)==2?n:n+-48|0;g=c[f+40>>2]|0;k=(k|0)==3?n:n+48|0;do if((g|0)!=(c[k+40>>2]|0)?(y=c[(c[((g|0)==(r|0)?k:f)+40>>2]|0)+16>>2]|0,(a[y+119>>0]|0)!=0):0)if(!e){x=c[y+132>>2]|0;e=1;j=+h[x>>3];i=+h[x+8>>3];break}else{p=+(e|0);x=c[y+132>>2]|0;e=e+1|0;s=+(e|0);j=(+h[x>>3]+j*p)/s;i=(+h[x+8>>3]+i*p)/s;break}while(0);n=Jx(d,n,r)|0}do if((e|0)<=1)if((e|0)==1){f=c[q>>2]|0;e=c[f+132>>2]|0;h[e>>3]=j*.98+l;i=i*.9+m;break}else{i=+j2()*6.283185307179586;s=+j2()*.9;p=s*+h[22863]*+E(+i);f=c[q>>2]|0;e=c[f+132>>2]|0;h[e>>3]=p;i=+h[22864]*s*+F(+i);break}else{f=c[q>>2]|0;e=c[f+132>>2]|0;h[e>>3]=j}while(0);h[e+8>>3]=i;a[f+119>>0]=1}while(0);r=Sy(d,r)|0}}while(0);h[b>>3]=t;h[b+8>>3]=w;return}function kp(a){a=a|0;var b=0;b=c[45708]|0;return +(+h[22858]*+(b-a|0)/+(b|0))}function lp(a,b,d,e){a=a|0;b=+b;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0;if(!(b<=0.0)){Pu(e);f=Ry(a)|0;while(1){if(!f)break;i=c[f+16>>2]|0;g=(c[i+112>>2]|0)+16|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;i=c[i+132>>2]|0;j=+h[22860];g=~~+A(+(+h[i>>3]/j));Su(e,g,~~+A(+(+h[i+8>>3]/j)),f);f=Sy(a,f)|0}g=Ry(a)|0;while(1){if(!g)break;f=Dx(a,g)|0;while(1){if(!f)break;i=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;if((g|0)!=(i|0))pp(g,i,f);f=Fx(a,f)|0}g=Sy(a,g)|0}Uu(e,23);qp(a,b,d)}return}function mp(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,g=0;if(!(b<=0.0)){e=Ry(a)|0;while(1){if(!e)break;g=(c[(c[e+16>>2]|0)+112>>2]|0)+16|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;e=Sy(a,e)|0}g=Ry(a)|0;while(1){if(!g)break;else e=g;while(1){e=Sy(a,e)|0;if(!e)break;op(g,e)}e=Dx(a,g)|0;while(1){if(!e)break;f=c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0;if((g|0)!=(f|0))pp(g,f,e);e=Fx(a,e)|0}g=Sy(a,g)|0}qp(a,b,d)}return}function np(){h[22858]=-1.0;return}function op(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0;g=c[(c[b+16>>2]|0)+132>>2]|0;f=c[(c[a+16>>2]|0)+132>>2]|0;d=+h[g>>3]-+h[f>>3];e=+h[g+8>>3]-+h[f+8>>3];rp(a,b,d,e,e*e+d*d);return}function pp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0;j=b+16|0;k=c[(c[j>>2]|0)+132>>2]|0;a=a+16|0;b=c[(c[a>>2]|0)+132>>2]|0;e=+h[k>>3]-+h[b>>3];f=+h[k+8>>3]-+h[b+8>>3];g=e;i=f;e=e*e;f=f*f;while(1){e=e+f;if(!(e==0.0))break;e=+(5-((f2()|0)%10|0)|0);f=+(5-((f2()|0)%10|0)|0);g=e;i=f;e=e*e;f=f*f}f=+C(+e);b=c[d+16>>2]|0;e=+h[b+128>>3];if(!(c[45705]|0))e=e*f/+h[b+136>>3];else e=(f-+h[b+136>>3])*e/f;g=e*g;k=c[(c[j>>2]|0)+112>>2]|0;j=k+16|0;h[j>>3]=+h[j>>3]-g;i=e*i;k=k+24|0;h[k>>3]=+h[k>>3]-i;k=c[(c[a>>2]|0)+112>>2]|0;j=k+16|0;h[j>>3]=+h[j>>3]+g;k=k+24|0;h[k>>3]=+h[k>>3]+i;return}function qp(b,d,e){b=b|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0;o=d*d;n=(e|0)==0;m=Ry(b)|0;while(1){if(!m)break;l=c[m+16>>2]|0;if(!(a[l+119>>0]&2)){k=c[l+112>>2]|0;f=+h[k+16>>3];i=+h[k+24>>3];g=i*i+f*f;if(g>2]|0;j=+h[e>>3]+f;f=+h[e+8>>3]+i}else{g=d/+C(+g);e=c[l+132>>2]|0;j=+h[e>>3]+g*f;f=+h[e+8>>3]+g*i}do if(!n){g=+C(+(f*f/+h[22866]+j*j/+h[22865]));if((c[k+8>>2]|0)==0?(c[l+212>>2]|0)==0:0){h[e>>3]=j/g;f=f/g;break}if(!(g>=1.0)){h[e>>3]=j;break}else{h[e>>3]=j*.95/g;f=f*.95/g;break}}else h[e>>3]=j;while(0);h[e+8>>3]=f}m=Sy(b,m)|0}return}function rp(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=+f;var g=0.0,i=0,j=0;g=d;d=f;while(1){if(!(d==0.0))break;d=+(5-((f2()|0)%10|0)|0);e=+(5-((f2()|0)%10|0)|0);g=d;d=e*e+d*d}if(!(c[45705]|0))d=+h[22862]/d;else{f=+C(+d);d=+h[22862]/(f*d)}j=c[a+16>>2]|0;a=c[j+112>>2]|0;if(((c[a+8>>2]|0)==0?(c[j+212>>2]|0)==0:0)?(i=c[b+16>>2]|0,(c[(c[i+112>>2]|0)+8>>2]|0)==0):0)d=(c[i+212>>2]|0)==0?d*10.0:d;f=d*g;j=c[(c[b+16>>2]|0)+112>>2]|0;b=j+16|0;h[b>>3]=+h[b>>3]+f;g=d*e;j=j+24|0;h[j>>3]=+h[j>>3]+g;j=a+16|0;h[j>>3]=+h[j>>3]-f;j=a+24|0;h[j>>3]=+h[j>>3]-g;return}function sp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=c[b+8>>2]|0;g=c[b>>2]|0;e=c[b+4>>2]|0;b=f;while(1){if(!b)break;a=f;while(1){if(!a)break;if((b|0)!=(a|0))op(c[b>>2]|0,c[a>>2]|0);a=c[a+4>>2]|0}b=c[b+4>>2]|0}h=g+-1|0;a=e+-1|0;tp(d,h,a,f);tp(d,h,e,f);b=e+1|0;tp(d,h,b,f);tp(d,g,a,f);tp(d,g,b,f);g=g+1|0;tp(d,g,a,f);tp(d,g,e,f);tp(d,g,b,f);return 0}function tp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m=0;a=Vu(a,b,d)|0;if((e|0)!=0&(a|0)!=0){k=a+8|0;do{d=c[e>>2]|0;j=d+16|0;a=k;while(1){a=c[a>>2]|0;if(!a)break;b=c[a>>2]|0;m=c[(c[b+16>>2]|0)+132>>2]|0;l=c[(c[j>>2]|0)+132>>2]|0;f=+h[m>>3]-+h[l>>3];g=+h[m+8>>3]-+h[l+8>>3];i=g*g+f*f;if(i<+h[22861])rp(d,b,f,g,i);a=a+4|0}e=c[e+4>>2]|0}while((e|0)!=0)}return}function up(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+16|0;g=h;e=wx(b,91095)|0;if(0)D1(91032,8,1,c[15686]|0)|0;if(!((e|0)!=0?(a[e>>0]|0)!=0:0))e=91041;f=z$(e,58)|0;do if(!f)f=0;else{if((f|0)!=(e|0)?((a[e>>0]|0)+-48|0)>>>0>=10:0){f=0;break}i=$1(e)|0;e=f+1|0;f=(i|0)>0?i:0}while(0);if(0){i=c[15686]|0;c[g>>2]=f;c[g+4>>2]=e;f1(i,91049,g)|0}if(!((f|0)!=0?!(vp(b,d,f)|0):0))rq(b,e)|0;l=h;return}function vp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0;t=l;l=l+64|0;r=t;j=t+40|0;s=$x(b)|0;k=ay(b)|0;pq(j,b);c[46072]=c[j>>2];c[46073]=c[j+4>>2];c[46074]=c[j+8>>2];if(a[184296]|0){g[46072]=+g[46072]*.013888888888888888;g[46073]=+g[46073]*.013888888888888888}f=wp(b)|0;a:do if(!f)f=0;else{j=r;i=j+40|0;do{c[j>>2]=c[d>>2];j=j+4|0;d=d+4|0}while((j|0)<(i|0));j=r+16|0;q=+h[j>>3];o=+(k|0)*2.0;p=1.0/+(O(s+-1|0,s)|0);i=0;n=q;while(1){if(!((f|0)!=0&(i|0)<(e|0)))break a;xp(s,r);m=+h[22868]*+h[170];h[22869]=m;h[22870]=o*m*p;d=0;while(1){if((d|0)>=(c[45742]|0))break;m=+yp(d);if(m<=0.0)break;f=zp(b,m)|0;if(!f){f=0;break}else d=d+1|0}m=n+q;h[j>>3]=m;i=i+1|0;n=m}}while(0);l=t;return f|0}function wp(a){a=a|0;var b=0,c=0,d=0,e=0;b=0;e=Ry(a)|0;while(1){if(!e)break;else d=e;while(1){c=Sy(a,d)|0;if(!c)break;d=c;b=(Cp(e,c)|0)+b|0}e=Sy(a,e)|0}return b|0}function xp(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0;e=+h[b+16>>3];h[171]=e;c[344]=c[b>>2];f=+h[b+8>>3];h[22872]=f;c[45742]=c[b+32>>2];d=+h[b+24>>3];if(d>0.0)h[170]=d;h[22868]=e*e;if(f==0.0)h[22872]=+C(+(+(a|0)))*.2*e;return}function yp(a){a=a|0;var b=0;b=c[344]|0;return +(+h[22872]*+(b-a|0)/+(b|0))}function zp(b,d){b=b|0;d=+d;var e=0,f=0,g=0,i=0.0,j=0,k=0.0,l=0.0,m=0.0;e=Ry(b)|0;while(1){if(!e)break;j=(c[(c[e+16>>2]|0)+112>>2]|0)+16|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;e=Sy(b,e)|0}e=0;j=Ry(b)|0;while(1){if(!j)break;else g=j;while(1){f=Sy(b,g)|0;if(!f)break;g=f;e=(Ap(j,f)|0)+e|0}f=Dx(b,j)|0;while(1){if(!f)break;Bp(j,c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0);f=Fx(b,f)|0}j=Sy(b,j)|0}a:do if(!e)e=0;else{m=d*d;g=Ry(b)|0;while(1){if(!g)break a;f=c[g+16>>2]|0;if((a[f+119>>0]|0)!=3){j=c[f+112>>2]|0;k=+h[j+16>>3];i=+h[j+24>>3];l=i*i+k*k;if(l>2]|0;h[f>>3]=+h[f>>3]+k}else{l=+C(+l);f=c[f+132>>2]|0;h[f>>3]=+h[f>>3]+k*d/l;i=i*d/l}j=f+8|0;h[j>>3]=+h[j>>3]+i}g=Sy(b,g)|0}}while(0);return e|0}function Ap(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0;g=c[(c[b+16>>2]|0)+132>>2]|0;f=c[(c[a+16>>2]|0)+132>>2]|0;d=+h[g>>3]-+h[f>>3];e=+h[g+8>>3]-+h[f+8>>3];return Ep(a,b,d,e,e*e+d*d)|0}function Bp(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0.0,k=0.0,l=0,m=0;if(!(Cp(a,b)|0)){i=c[b+16>>2]|0;m=c[i+132>>2]|0;f=c[a+16>>2]|0;l=c[f+132>>2]|0;e=+h[m>>3]-+h[l>>3];d=+h[m+8>>3]-+h[l+8>>3];g=+C(+(d*d+e*e));j=+Dp(a);j=+Dp(b)+j;k=g-j;g=k*k/((+h[171]+j)*g);e=g*e;b=c[i+112>>2]|0;a=b+16|0;h[a>>3]=+h[a>>3]-e;d=g*d;b=b+24|0;h[b>>3]=+h[b>>3]-d;b=c[f+112>>2]|0;a=b+16|0;h[a>>3]=+h[a>>3]+e;b=b+24|0;h[b>>3]=+h[b>>3]+d}return}function Cp(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,i=0.0,j=0.0,k=0,l=0;k=c[d+16>>2]|0;l=c[k+132>>2]|0;d=c[b+16>>2]|0;b=c[d+132>>2]|0;i=+h[l>>3]-+h[b>>3];j=+h[l+8>>3]-+h[b+8>>3];j=j<0.0?-j:j;b=(a[184296]|0)==0;e=+h[d+32>>3];if(b){f=+g[46072];e=e*.5*f;f=+h[k+32>>3]*.5*f}else{f=+g[46072];e=e*.5+f;f=+h[k+32>>3]*.5+f}if(!((i<0.0?-i:i)<=f+e))d=0;else{e=+h[d+40>>3];if(b){i=+g[46073];f=e*.5*i;e=+h[k+40>>3]*.5*i}else{i=+g[46073];f=e*.5+i;e=+h[k+40>>3]*.5+i}d=j<=e+f&1}return d|0}function Dp(b){b=b|0;var d=0.0,e=0.0;b=c[b+16>>2]|0;d=+h[b+32>>3];if(!(a[184296]|0)){e=d*.5*+g[46072];d=+h[b+40>>3]*.5*+g[46073]}else{e=d*.5+ +g[46072];d=+h[b+40>>3]*.5+ +g[46073]}return +(+C(+(d*d+e*e)))}function Ep(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=+f;var g=0,i=0;while(1){if(!(f==0.0))break;f=+(5-((f2()|0)%10|0)|0);e=+(5-((f2()|0)%10|0)|0);d=f;f=e*e+f*f}g=Cp(a,b)|0;f=((g|0)==0?+h[22870]:+h[22869])/f;d=f*d;b=c[(c[b+16>>2]|0)+112>>2]|0;i=b+16|0;h[i>>3]=+h[i>>3]+d;f=f*e;b=b+24|0;h[b>>3]=+h[b>>3]+f;b=c[(c[a+16>>2]|0)+112>>2]|0;a=b+16|0;h[a>>3]=+h[a>>3]-d;b=b+24|0;h[b>>3]=+h[b>>3]-f;return g|0}function Fp(a){a=a|0;_M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46366]=2;Gp(a);return}function Gp(a){a=a|0;var b=0,d=0,e=0,f=0;e=tH(($x(a)|0)<<2)|0;b=tH((($x(a)|0)<<2)+4|0)|0;f=a+16|0;c[(c[f>>2]|0)+152>>2]=b;b=Ry(a)|0;d=0;while(1){if(!b)break;_l(b);c[(c[b+16>>2]|0)+112>>2]=e+(d<<2);c[(c[(c[f>>2]|0)+152>>2]|0)+(d<<2)>>2]=b;b=Sy(a,b)|0;d=d+1|0}d=Ry(a)|0;while(1){if(!d)break;b=Dx(a,d)|0;while(1){if(!b)break;Hp(b);b=Fx(a,b)|0}d=Sy(a,d)|0}return}function Hp(a){a=a|0;var b=0.0;zz(a,134378,176,1)|0;dM(a)|0;b=+KL(a,c[46404]|0,1.0,0.0);h[(c[a+16>>2]|0)+128>>3]=b;return}function Ip(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n+4|0;k=n;a[m>>0]=a[18492]|0;a[m+1>>0]=a[18493]|0;a[m+2>>0]=a[18494]|0;a[m+3>>0]=a[18495]|0;m=Wx(91072,m,0)|0;zz(m,91080,280,1)|0;c[(c[b+16>>2]|0)+140>>2]=m;e=Ry(b)|0;while(1){if(!e)break;f=e+16|0;if(!(c[c[(c[f>>2]|0)+112>>2]>>2]|0)){j=Jp(m,qy(e)|0,e)|0;c[c[(c[f>>2]|0)+112>>2]>>2]=j}e=Sy(b,e)|0}f=Ry(b)|0;while(1){if(!f)break;e=Dx(b,f)|0;while(1){if(!e)break;h=c[e>>2]&3;g=c[c[(c[(c[((h|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+112>>2]>>2]|0;h=c[c[(c[(c[((h|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]>>2]|0;if((g|0)!=(h|0))zz(Qx(m,g,h,0,1)|0,134378,176,1)|0;e=Fx(b,e)|0}f=Sy(b,f)|0}j=nD(m,k,0)|0;f=0;while(1){if((f|0)>=(c[k>>2]|0))break;h=c[j+(f<<2)>>2]|0;e=Ry(h)|0;while(1){if(!e)break;g=Dx(b,c[c[(c[e+16>>2]|0)+112>>2]>>2]|0)|0;while(1){if(!g)break;i=c[c[(c[(c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]>>2]|0;if((e|0)!=(i|0)){i=Qx(m,e,i,0,1)|0;zz(i,134378,176,1)|0;Ux(h,i,1)|0}g=Fx(b,g)|0}e=Sy(h,e)|0}f=f+1|0}e=Ry(m)|0;while(1){if(!e)break;f=Dx(m,e)|0;while(1){if(!f)break;b=tH(8)|0;c[(c[f+16>>2]|0)+120>>2]=b;f=Fx(m,f)|0}e=Sy(m,e)|0}c[d>>2]=c[k>>2];l=n;return j|0}function Jp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;b=$y(a,b,1)|0;zz(b,134365,304,1)|0;e=tH(40)|0;a=b+16|0;c[(c[a>>2]|0)+112>>2]=e;e=tH(c[46366]<<3)|0;a=c[a>>2]|0;c[a+132>>2]=e;e=c[d+16>>2]|0;h[a+88>>3]=+h[e+88>>3];h[a+96>>3]=+h[e+96>>3];h[a+80>>3]=+h[e+80>>3];c[c[a+112>>2]>>2]=d;return b|0}function Kp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+48|0;b=h+32|0;e=h;if($x(a)|0){g=Ip(a,b)|0;f=c[b>>2]|0;b=c[g>>2]|0;if((f|0)==1){Wu(b,a);Lp(c[g>>2]|0);sq(a)|0}else{d=c[b+60>>2]|0;WD(a,2,8,e)|0;b=0;while(1){if((b|0)>=(f|0))break;i=c[g+(b<<2)>>2]|0;Wu(i,a);sq(i)|0;b=b+1|0}VD(f,g,d,e)|0;b=0;while(1){if((b|0)>=(f|0))break;Lp(c[g+(b<<2)>>2]|0);b=b+1|0}}C_(g)}l=h;return}function Lp(a){a=a|0;var b=0,d=0,e=0;b=Ry(a)|0;while(1){if(!b)break;d=c[b+16>>2]|0;e=c[d+132>>2]|0;d=c[(c[(c[c[d+112>>2]>>2]|0)+16>>2]|0)+132>>2]|0;h[d>>3]=+h[e>>3];h[d+8>>3]=+h[e+8>>3];b=Sy(a,b)|0}return}function Mp(a){a=a|0;if($x(a)|0){Fp(a);Kp(a);C_(c[(c[(Ry(a)|0)+16>>2]|0)+112>>2]|0);gn(a);dJ(a)}return}function Np(a){a=a|0;var b=0,d=0,e=0;b=Ry(a)|0;if(b|0){e=a+16|0;Op(c[(c[e>>2]|0)+140>>2]|0);while(1){if(!b)break;d=Dx(a,b)|0;while(1){if(!d)break;IM(d);d=Fx(a,d)|0}GM(b);b=Sy(a,b)|0}C_(c[(c[e>>2]|0)+152>>2]|0);if((ez(a)|0)!=(a|0))Fz(a,0,134401)}return}function Op(a){a=a|0;var b=0,d=0;d=Ry(a)|0;while(1){if(!d)break;b=Dx(a,d)|0;while(1){if(!b)break;C_(c[(c[b+16>>2]|0)+120>>2]|0);b=Fx(a,b)|0}b=d+16|0;C_(c[(c[b>>2]|0)+112>>2]|0);C_(c[(c[b>>2]|0)+132>>2]|0);d=Sy(a,d)|0}_x(a)|0;return}function Pp(a){a=a|0;var b=0,d=0,e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0.0,p=0.0;m=l;l=l+16|0;k=m;a:do if(Qp(a,k)|0){b=c[(c[(Ry(a)|0)+16>>2]|0)+132>>2]|0;g=+h[b>>3];e=+h[b+8>>3];b=Ry(a)|0;while(1){if(!b)break;f=c[(c[b+16>>2]|0)+132>>2]|0;h[f>>3]=+h[f>>3]-g;f=f+8|0;h[f>>3]=+h[f>>3]-e;b=Sy(a,b)|0}b=(g!=0.0|e!=0.0)&1;d=Ry(a)|0;while(1){if(!d)break a;f=Dx(a,d)|0;if(f|0)break;d=Sy(a,d)|0}n=c[f>>2]&3;d=c[(c[(c[((n|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;f=c[(c[(c[((n|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0;i=+h[f+8>>3];j=+h[f>>3];e=+K(+(+h[d+8>>3]-i),+(+h[d>>3]-j));e=+h[k>>3]-e;h[k>>3]=e;if(e!=0.0){g=+E(+e);e=+F(+e);b=Ry(a)|0;while(1){if(!b){b=1;break a}k=c[(c[b+16>>2]|0)+132>>2]|0;p=+h[k>>3]-j;n=k+8|0;o=+h[n>>3]-i;h[k>>3]=p*g+j-o*e;h[n>>3]=p*e+i+o*g;b=Sy(a,b)|0}}}else b=0;while(0);l=m;return b|0}function Qp(b,d){b=b|0;d=d|0;var e=0.0,f=0,g=0;g=l;l=l+16|0;f=g;b=wx(b,91085)|0;do if((b|0)!=0?(a[b>>0]|0)!=0:0){e=+b2(b,f);if((c[f>>2]|0)==(b|0))if(!((PL(b)|0)<<24>>24)){b=0;break}else e=0.0;while(1){if(!(e>180.0))break;e=e+-360.0}while(1){if(!(e<=-180.0))break;e=e+360.0}h[d>>3]=e*.017453292519943295;b=1}else b=0;while(0);l=g;return b|0}function Rp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=wx(a,91095)|0;return Sp(a,(d|0)==0?(c|0?c:191979):d,b)|0}function Sp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0;n=l;l=l+32|0;m=n+16|0;j=n+8|0;i=n;if((d|0)!=0?(a[d>>0]|0)!=0:0){f=17792;while(1){g=c[f+4>>2]|0;if(!g)break;if(!(U$(d,g,c[f+8>>2]|0)|0)){k=6;break}f=f+16|0}if((k|0)==6){if(!(c[f+12>>2]|0)){c[i>>2]=g;Ow(0,91103,i)|0;f=17792}i=c[f>>2]|0;c[e>>2]=i;c[e+4>>2]=c[f+12>>2];if((i|0)==18)Tp(b,d+(c[f+8>>2]|0)|0,e)}if(!(c[f+4>>2]|0)){f=QL(d,63)|0;if(f<<24>>24==63){c[j>>2]=d;Ow(0,91145,j)|0;f=0}else f=f&255;f=(f|0)==0;c[e>>2]=f&1;f=f?91192:132627;k=15}}else{c[e>>2]=0;f=132627;k=15}if((k|0)==15)c[e+4>>2]=f;if(0){k=c[15686]|0;j=c[e+8>>2]|0;o=+h[e+16>>3];c[m>>2]=c[e+4>>2];c[m+4>>2]=j;h[m+8>>3]=o;f1(k,91200,m)|0}l=n;return e|0}function Tp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=e+4|0;c[f>>2]=g;f=(M1(b,134313,f)|0)>0;b=c[g>>2]|0;c[d+8>>2]=f&(b|0)>-1?b:1e3;h[d+16>>3]=+KL(a,mx(a,0,91236,0)|0,-4.0,-1.0e10);l=e;return}function Up(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+16|0;g=h+8|0;f=h;do if(($x(a)|0)>=2){d=Pp(a)|0;d=(Vp(a)|0)+d|0;e=c[b>>2]|0;if(e){if(0){e=c[15686]|0;j=qy(a)|0;i=c[b+4>>2]|0;c[f>>2]=j;c[f+4>>2]=i;f1(e,91565,f)|0;e=c[b>>2]|0}if(e>>>0>2){switch(e|0){case 3:{e=Wq(a,1)|0;break}case 4:{e=Wq(a,0)|0;break}case 6:case 5:{e=0;break}case 10:case 9:case 7:case 8:case 14:case 13:case 11:case 12:{Gq(a,e)|0;e=0;break}case 15:{e=Wq(a,-1)|0;break}default:{c[g>>2]=c[b+4>>2];Ow(0,91588,g)|0;e=0}}d=e+d|0;break}if(Wp(a)|0){Xp();C_(c[46075]|0);c[46075]=0;break}Yp(a);if((c[b>>2]|0)==2)e=Zp()|0;else e=_p()|0;if(e|0)$p();Xp();C_(c[46075]|0);c[46075]=0;d=e+d|0}}else d=0;while(0);l=h;return d|0}function Vp(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0;m=l;l=l+48|0;i=m+24|0;f=m+16|0;j=m;b=wx(a,137660)|0;a:do if(((b|0)!=0?(k=j+8|0,c[f>>2]=j,c[f+4>>2]=k,e=M1(b,102477,f)|0,(e|0)!=0):0)?(g=+h[j>>3],!(+B(+g)<1.0e-09)):0){if((e|0)!=1){d=+h[k>>3];if(+B(+d)<1.0e-09){b=0;break}}else{h[k>>3]=g;d=g}if(!(d==1.0&g==1.0)){if(0){f=c[15686]|0;h[i>>3]=g;h[i+8>>3]=d;f1(f,91748,i)|0}b=Ry(a)|0;while(1){if(!b){b=1;break a}i=c[(c[b+16>>2]|0)+132>>2]|0;h[i>>3]=+h[i>>3]*+h[j>>3];i=i+8|0;h[i>>3]=+h[i>>3]*+h[k>>3];b=Sy(a,b)|0}}else b=0}else b=0;while(0);l=m;return b|0}function Wp(b){b=b|0;var d=0,e=0,f=0,i=0.0,j=0.0,k=0,m=0,n=0,o=0;n=l;l=l+16|0;k=n;c[46084]=$x(b)|0;tr();c[46099]=uH((c[46084]|0)*96|0)|0;f=Ry(b)|0;d=c[46099]|0;pq(k,b);i=+g[k>>2];j=+g[k+4>>2];k=(a[k+8>>0]|0)==0;j=k?j:j*.013888888888888888;i=k?i:i*.013888888888888888;k=k?2:1;e=0;while(1){if((e|0)>=(c[46084]|0)){d=0;break}o=c[(c[f+16>>2]|0)+132>>2]|0;h[d+8>>3]=+h[o>>3];h[d+16>>3]=+h[o+8>>3];if(mb[k&3](d+40|0,f,i,j)|0){m=4;break}c[d+24>>2]=e;c[d+28>>2]=1;c[d>>2]=f;c[d+88>>2]=0;d=d+96|0;e=e+1|0;f=Sy(b,f)|0}if((m|0)==4){C_(c[46099]|0);c[46099]=0;d=1}l=n;return d|0}function Xp(){var a=0,b=0;a=c[46099]|0;b=0;while(1){if((b|0)>=(c[46084]|0))break;ot(a+40|0);a=a+96|0;b=b+1|0}nt();Vr();C_(c[46099]|0);return}function Yp(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0;o=l;l=l+32|0;m=o+16|0;n=o;p=c[46099]|0;i=+h[p+8>>3];k=+h[p+16>>3];f=c[46084]|0;d=p;e=1;g=+h[p+40>>3]+i;i=+h[p+56>>3]+i;j=+h[p+48>>3]+k;k=+h[p+64>>3]+k;while(1){if((e|0)>=(f|0))break;s=+h[d+104>>3];q=+h[d+112>>3];t=+h[d+136>>3]+s;r=+h[d+144>>3]+q;s=+h[d+152>>3]+s;q=+h[d+160>>3]+q;d=d+96|0;e=e+1|0;g=ti?s:i;j=rk?q:k}d=wx(b,91688)|0;if(d|0?a[d>>0]|0:0)h[173]=+a2(d);s=+h[173];t=s*(k-j);s=s*(i-g);h[m>>3]=g-s;h[m+8>>3]=j-t;h[n>>3]=s+i;h[n+8>>3]=t+k;hq(m,n);l=o;return}function Zp(){var a=0,b=0,d=0,e=0;d=l;l=l+16|0;b=d;if(aq(0)|0){bq();a=0;do{oq();a=a+1|0}while((aq(a)|0)!=0);if(!0)a=1;else{e=c[15686]|0;c[b>>2]=a;f1(e,91616,b)|0;a=1}}else a=0;l=d;return a|0}function _p(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i+8|0;g=i;b=aq(0)|0;if(!b)a=0;else{bq();cq(0);Xt(0,1);a=0;e=0;d=0;while(1){eq();d=d+1|0;f=aq(d)|0;if(!f)break;b=(f|0)<(b|0)?0:e+1|0;c[46076]=1;if(b){fq();a=a+1|0}cq(1);Xt(0,1);e=b;b=f}if(0){f=c[15686]|0;c[g>>2]=d;f1(f,91616,g)|0;c[h>>2]=a;f1(f,91643,h)|0}gq();a=1}l=i;return a|0}function $p(){var a=0,b=0,d=0,e=0;d=c[46084]|0;a=c[46099]|0;b=0;while(1){if((b|0)>=(d|0))break;e=c[(c[(c[a>>2]|0)+16>>2]|0)+132>>2]|0;h[e>>3]=+h[a+8>>3];h[e+8>>3]=+h[a+16>>3];a=a+96|0;b=b+1|0}return}function aq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+48|0;o=q+24|0;n=q+8|0;p=q;d=c[46099]|0;e=c[46084]|0;b=0;while(1){if((b|0)>=(e|0)){f=0;b=0;break}c[d+(b*96|0)+32>>2]=0;b=b+1|0}a:while(1){if((b|0)>=(e+-1|0))break;m=d+96|0;b=b+1|0;j=d+8|0;k=d+40|0;i=d+32|0;g=m;h=b;while(1){if((h|0)>=(e|0)){d=m;continue a}e=g+8|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];if(!(xt(n,k,o,g+40|0)|0))d=f;else{c[i>>2]=1;c[g+32>>2]=1;d=f+1|0}g=g+96|0;h=h+1|0;f=d;e=c[46084]|0}}if(0>1){o=c[15686]|0;c[p>>2]=a;c[p+4>>2]=f;f1(o,91669,p)|0}l=q;return f|0}function bq(){var a=0,b=0,d=0,e=0.0,f=0,g=0.0,i=0,j=0,k=0,l=0,m=0,n=0;mq();k=c[46078]|0;l=c[46099]|0;a=c[46075]|0;a:while(1){i=a;if(a>>>0>=k>>>0)break;b=a+4|0;if(b>>>0>=k>>>0){a=b;continue}f=c[b>>2]|0;d=c[a>>2]|0;g=+h[d>>3];if(+h[f>>3]!=g){a=b;continue}e=+h[d+8>>3];if(+h[f+8>>3]!=e){a=b;continue}j=a+8|0;f=2;while(1){if(j>>>0>=k>>>0)break;d=c[j>>2]|0;if(!(+h[d>>3]==g)){m=11;break}if(!(+h[d+8>>3]==e)){m=11;break}j=j+4|0;f=f+1|0}if((m|0)==11){m=0;d=c[j>>2]|0;if(+h[d+8>>3]==e){e=(+h[d>>3]-g)/+(f|0);d=(((j>>>0>b>>>0?j:b)+-1+(0-i)|0)>>>2)+1|0;a=1;while(1){if((a|0)==(d|0)){a=j;continue a}i=c[b>>2]|0;h[i>>3]=+h[i>>3]+e*+(a|0);a=a+1|0;b=b+4|0}}}while(1){if(b>>>0>=j>>>0){a=j;continue a}f=c[a>>2]|0;n=c[f+16>>2]|0;i=c[b>>2]|0;d=c[i+16>>2]|0;h[i>>3]=(+h[l+(n*96|0)+56>>3]-+h[l+(n*96|0)+40>>3]+ +h[l+(d*96|0)+56>>3]-+h[l+(d*96|0)+40>>3])*.5+ +h[f>>3];b=b+4|0;a=a+4|0}}return}function cq(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0;if(a|0)mq();i=c[46075]|0;j=c[i>>2]|0;d=+h[j>>3];h[22887]=d;k=c[46084]|0;f=1;g=+h[j>>3];while(1){if((f|0)>=(k|0))break;a=c[i+(f<<2)>>2]|0;b=+h[a>>3];if(b>3]}else{e=b;b=d}f=f+1|0;d=b;g=e>g?e:g}e=+h[j+8>>3];h[22888]=e;h[22890]=+h[(c[i+(k+-1<<2)>>2]|0)+8>>3]-e;h[22889]=g-d;return}function dq(){var a=0;a=c[46077]|0;if(a>>>0<(c[46078]|0)>>>0){c[46077]=a+4;a=c[a>>2]|0}else a=0;return a|0}function eq(){var a=0,b=0,d=0;a=c[46099]|0;iq();d=(c[46076]|0)==0;b=0;while(1){if((b|0)>=(c[46084]|0))break;if(!(d?!(c[a+32>>2]|0):0))jq(a);a=a+96|0;b=b+1|0}return}function fq(){var a=0,b=0,c=0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0;a=l;l=l+32|0;c=a+16|0;b=a;j=+h[22883];i=+h[22881];g=+h[22884];e=+h[22882];d=(i-e)*.05;f=(j-g)*.05;h[b>>3]=f+j;h[b+8>>3]=i+d;h[c>>3]=g-f;h[c+8>>3]=e-d;hq(c,b);l=a;return}function gq(){Gr();Ir();Jt();mr();return}function hq(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0;f=+h[a>>3];h[22884]=f;e=+h[b>>3];h[22883]=e;c=+h[a+8>>3];h[22882]=c;d=+h[b+8>>3];h[22881]=d;h[22873]=f;h[22875]=f;h[22877]=e;h[22879]=e;h[22880]=d;h[22876]=d;h[22878]=c;h[22874]=c;return}function iq(){var a=0,b=0.0,d=0.0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0;m=c[46099]|0;g=m+8|0;f=+ur(g,182984);e=+ur(g,183e3);d=+ur(g,183016);a=1;b=+ur(g,183032);g=m;i=m;j=m;k=m;while(1){l=m+96|0;if((a|0)>=(c[46084]|0))break;q=m+104|0;r=+ur(q,182984);n=r>2]|0;o=k+8|0;b=0.0;d=0.0;e=0.0;k=c[k>>2]|0;while(1){f=c[k>>2]|0;if(!f)break;s=k+8|0;r=f+8|0;c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];c[j>>2]=c[r>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[j+12>>2]=c[r+12>>2];q=+kq(g,i,j);c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];c[j>>2]=c[r>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[j+12>>2]=c[r+12>>2];lq(g,i,j,m,n);b=+h[n>>3]*q+b;d=+h[m>>3]*q+d;e=q+e;k=f}h[a+8>>3]=d/e;h[a+16>>3]=b/e;l=p;return}function kq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;d=+h[b+8>>3];f=+h[c+8>>3];e=+h[a+8>>3];return +(+B(+((f-e)*+h[b>>3]+(d-f)*+h[a>>3]+ +h[c>>3]*(e-d)))*.5)}function lq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;h[d>>3]=(+h[b>>3]+ +h[a>>3]+ +h[c>>3])*.3333333333333333;h[e>>3]=(+h[b+8>>3]+ +h[a+8>>3]+ +h[c+8>>3])*.3333333333333333;return}function mq(){var a=0,b=0,d=0,e=0;a=c[46075]|0;if(!a){a=uH(c[46084]<<2)|0;c[46075]=a;c[46078]=a+(c[46084]<<2)}d=c[46099]|0;Vr();e=c[46084]|0;b=0;while(1){if((b|0)>=(e|0))break;c[a>>2]=d+8;c[d+88>>2]=0;c[d+28>>2]=1;d=d+96|0;a=a+4|0;b=b+1|0}Z0(c[46075]|0,e,4,68);c[46077]=c[46075];return}function nq(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a>>2]|0;b=c[b>>2]|0;d=+h[a+8>>3];e=+h[b+8>>3];if(!(de)){e=+h[a>>3];d=+h[b>>3];if(ed&1}else a=1;else a=-1;return a|0}function oq(){var a=0,b=0,d=0,e=0;d=c[46084]|0;a=0;b=c[46099]|0;while(1){if((a|0)>=(d|0))break;e=b+8|0;h[e>>3]=+h[e>>3]*1.05;e=b+16|0;h[e>>3]=+h[e>>3]*1.05;a=a+1|0;b=b+96|0}return}function pq(b,e){b=b|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;m=l;l=l+48|0;k=m;j=m+24|0;f=wx(e,91700)|0;if(!((f|0)!=0?(qq(f,j,1.0,0.0)|0)!=0:0))i=3;do if((i|0)==3){e=wx(e,91704)|0;if(e|0?qq(e,j,.800000011920929,4.0)|0:0)break;g[j+4>>2]=4.0;g[j>>2]=4.0;a[j+8>>0]=1}while(0);if(0){i=c[15686]|0;o=+g[j>>2];n=+g[j+4>>2];c[k>>2]=d[j+8>>0];h[k+8>>3]=o;h[k+16>>3]=n;f1(i,91709,k)|0};c[b>>2]=c[j>>2];c[b+4>>2]=c[j+4>>2];c[b+8>>2]=c[j+8>>2];l=m;return}function qq(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0;o=l;l=l+16|0;m=o;j=o+12|0;k=o+8|0;while(1){h=a[b>>0]|0;i=b+1|0;if(!(A$(h<<24>>24)|0))break;else b=i}p=h<<24>>24==43;h=d+8|0;a[h>>0]=p&1;c[m>>2]=j;c[m+4>>2]=k;switch(M1(p?i:b,91742,m)|0){case 0:{b=0;break}case 1:{c[k>>2]=c[j>>2];n=5;break}default:n=5}if((n|0)==5){do if(a[h>>0]|0){if(e>1.0){q=+g[j>>2]/e;g[d>>2]=q>f?f:q;e=+g[k>>2]/e;e=e>f?f:e;break}if(e<1.0){q=+g[j>>2]/e;g[d>>2]=q>2]/e;e=e>2]=c[j>>2];e=+g[k>>2];break}}else{g[d>>2]=+g[j>>2]/e+1.0;e=+g[k>>2]/e+1.0}while(0);g[d+4>>2]=e;b=1}l=o;return b|0}function rq(a,b){a=a|0;b=b|0;var c=0,d=0;d=l;l=l+32|0;c=d;if(($x(a)|0)<2)a=0;else{Sp(a,b,c)|0;a=Up(a,c)|0}l=d;return a|0}function sq(a){a=a|0;return rq(a,wx(a,91095)|0)|0}function tq(b,e){b=b|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;m=l;l=l+48|0;k=m;j=m+24|0;f=wx(e,91704)|0;if(!((f|0)!=0?(qq(f,j,1.0,0.0)|0)!=0:0))i=3;do if((i|0)==3){e=wx(e,91700)|0;if(e|0?qq(e,j,1.25,3.200000047683716)|0:0)break;g[j+4>>2]=3.200000047683716;g[j>>2]=3.200000047683716;a[j+8>>0]=1}while(0);if(0){i=c[15686]|0;o=+g[j>>2];n=+g[j+4>>2];c[k>>2]=d[j+8>>0];h[k+8>>3]=o;h[k+16>>3]=n;f1(i,91771,k)|0};c[b>>2]=c[j>>2];c[b+4>>2]=c[j+4>>2];c[b+8>>2]=c[j+8>>2];l=m;return}function uq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;o=p;h=0;while(1){if((h|0)>=(d|0))break;c[e+(h<<2)>>2]=-1;h=h+1|0}c[e+(a<<2)>>2]=0;vq(f,a);a:do if(!(c[b+8>>2]|0)){h=2147483647;b:while(1){if(!((wq(f,o)|0)<<24>>24))break a;j=c[o>>2]|0;h=c[e+(j<<2)>>2]|0;i=b+(j*20|0)|0;j=b+(j*20|0)+4|0;k=h+1|0;a=1;while(1){if((a|0)>=(c[i>>2]|0))continue b;m=c[(c[j>>2]|0)+(a<<2)>>2]|0;n=e+(m<<2)|0;if((c[n>>2]|0)<0){c[n>>2]=k;xq(f,m)|0}a=a+1|0}}}else{h=2147483647;c:while(1){if(!((wq(f,o)|0)<<24>>24))break a;k=c[o>>2]|0;h=c[e+(k<<2)>>2]|0;i=b+(k*20|0)|0;j=b+(k*20|0)+4|0;k=b+(k*20|0)+8|0;a=1;while(1){if((a|0)>=(c[i>>2]|0))continue c;m=c[(c[j>>2]|0)+(a<<2)>>2]|0;n=e+(m<<2)|0;if((c[n>>2]|0)<0){c[n>>2]=h+~~+g[(c[k>>2]|0)+(a<<2)>>2];xq(f,m)|0}a=a+1|0}}}while(0);a=h+10|0;h=0;while(1){if((h|0)>=(d|0))break;i=e+(h<<2)|0;if((c[i>>2]|0)<0)c[i>>2]=a;h=h+1|0}l=p;return}function vq(a,b){a=a|0;b=b|0;c[c[a>>2]>>2]=b;c[a+12>>2]=0;c[a+8>>2]=1;return}function wq(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+12|0;e=c[d>>2]|0;if((e|0)<(c[a+8>>2]|0)){a=c[a>>2]|0;c[d>>2]=e+1;c[b>>2]=c[a+(e<<2)>>2];a=1}else a=0;return a|0}function xq(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+8|0;e=c[d>>2]|0;if((e|0)<(c[a+4>>2]|0)){a=c[a>>2]|0;c[d>>2]=e+1;c[a+(e<<2)>>2]=b;a=1}else a=0;return a|0}function yq(a,b){a=a|0;b=b|0;c[a>>2]=uH(b<<2)|0;c[a+4>>2]=b;c[a+8>>2]=0;c[a+12>>2]=0;return}function zq(a){a=a|0;C_(c[a>>2]|0);return}function Aq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0;if(!0)g=0;else{D1(91804,25,1,c[15686]|0)|0;g=0}while(1){if((g|0)>=(a|0))break;i=b+(g<<2)|0;f=0;e=0.0;while(1){if((f|0)==(a|0))break;if((g|0)!=(f|0))e=+h[(c[i>>2]|0)+(f<<3)>>3]+e;f=f+1|0}h[(c[i>>2]|0)+(g<<3)>>3]=-e;g=g+1|0}return ws(b,d,a+-1|0)|0}function Bq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0.0;j=vn(b,b,0.0)|0;k=vn(b,b,0.0)|0;e=Ry(a)|0;while(1){if(!e)break;d=Ix(a,e)|0;while(1){if(!d)break;g=c[d>>2]&3;f=(c[c[((g|0)==3?d:d+48|0)+40>>2]>>2]|0)>>>4;g=(c[c[((g|0)==2?d:d+-48|0)+40>>2]>>2]|0)>>>4;if((f|0)!=(g|0)){l=-1.0/+h[(c[d+16>>2]|0)+136>>3];h[(c[j+(g<<2)>>2]|0)+(f<<3)>>3]=l;h[(c[j+(f<<2)>>2]|0)+(g<<3)>>3]=l}d=Jx(a,d,e)|0}e=Sy(a,e)|0}i=Aq(b,j,k)|0;a:do if(i|0){f=a+16|0;e=0;while(1){if((e|0)>=(b|0))break a;g=k+(e<<2)|0;d=0;while(1){if((d|0)==(b|0))break;a=c[g>>2]|0;h[(c[(c[(c[f>>2]|0)+160>>2]|0)+(e<<2)>>2]|0)+(d<<3)>>3]=+h[(c[k+(d<<2)>>2]|0)+(d<<3)>>3]+ +h[a+(e<<3)>>3]+ +h[a+(d<<3)>>3]*-2.0;d=d+1|0}e=e+1|0}}while(0);wn(j);wn(k);return i|0}function Cq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+16|0;j=s;n=d<<3;o=uH(n)|0;p=uH(n)|0;q=uH(n)|0;k=uH(n)|0;m=uH(n)|0;n=uH(n)|0;Os(d,c,n);Hs(d,n);Hs(d,b);Js(a,d,b,k);Ls(d,n,k,o);Os(d,o,p);i=f+-1|0;c=0;g=+Ps(d,o,o);while(1){if((c|0)>=(f|0)){c=0;break}if(!(+Qs(d,o)>e)){c=0;break}Js(a,d,p,q);h=+Ps(d,p,q);if(h==0.0){c=0;break}h=g/h;Ns(d,p,h,m);Ms(d,b,m,b);if((c|0)<(i|0)){Ns(d,q,h,q);Ls(d,o,q,o);h=+Ps(d,o,o);if(g==0.0){r=7;break}Ns(d,p,h/g,p);Ms(d,o,p,p);g=h}c=c+1|0}if((r|0)==7){Ow(1,91830,j)|0;c=1}C_(o);C_(p);C_(q);C_(k);C_(m);C_(n);l=s;return c|0}function Dq(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;var h=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+16|0;j=s;o=d<<3;p=uH(o)|0;q=uH(o)|0;k=uH(o)|0;m=uH(o)|0;n=uH(o)|0;o=uH(o)|0;Os(d,c,o);if(g<<24>>24){Hs(d,o);Hs(d,b)}Ks(a,d,b,m);Ls(d,o,m,p);Os(d,p,q);g=f+-1|0;c=0;h=+Ps(d,p,p);while(1){if((c|0)>=(f|0)){c=0;break}if(!(+Qs(d,p)>e)){c=0;break}Ks(a,d,q,k);i=+Ps(d,q,k);if(i==0.0){c=0;break}i=h/i;Ns(d,q,i,n);Ms(d,b,n,b);if((c|0)<(g|0)){Ns(d,k,i,k);Ls(d,p,k,p);i=+Ps(d,p,p);if(h==0.0){r=9;break}Ns(d,q,i/h,q);Ms(d,p,q,q);h=i}c=c+1|0}if((r|0)==9){Ow(1,91830,j)|0;c=1}C_(p);C_(q);C_(k);C_(m);C_(n);C_(o);l=s;return c|0}function Eq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;j=q;k=d<<2;m=tH(k)|0;n=tH(k)|0;o=tH(k)|0;k=tH(k)|0;Ss(d,b);Ss(d,c);Ts(a,d,b,k);Ss(d,k);Us(d,c,k,m);Ys(d,m,n);i=f+-1|0;c=0;g=+Zs(d,m,m);while(1){if((c|0)>=(f|0)){c=0;break}if(!(+at(d,m)>e)){c=0;break}Ss(d,n);Ss(d,b);Ss(d,m);Ts(a,d,n,o);Ss(d,o);h=+Zs(d,n,o);if(h==0.0){c=0;break}h=g/h;Ws(d,b,h,n);if((c|0)<(i|0)){Ws(d,m,-h,o);h=+Zs(d,m,m);if(g==0.0){p=7;break}Xs(d,n,h/g,n);Vs(d,m,n,n);g=h}c=c+1|0}if((p|0)==7){Ow(1,91830,j)|0;c=1}C_(m);C_(n);C_(o);C_(k);l=q;return c|0}function Fq(a,b,d,e,f,i,j,k,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;j=j|0;k=k|0;m=m|0;n=+n;var o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0;M=l;l=l+48|0;F=M+24|0;E=M+16|0;D=M+8|0;C=M;J=M+40|0;K=M+36|0;H=M+32|0;s=j&4;c[J>>2]=0;c[K>>2]=0;a:do if(c[a+16>>2]|0){p=0;o=0;while(1){if((p|0)>=(b|0))break;t=c[a+(p*20|0)>>2]|0;u=a+(p*20|0)+16|0;r=1;while(1){if((r|0)>=(t|0))break;if(!(o<<24>>24))o=+g[(c[u>>2]|0)+(r<<2)>>2]!=0.0;else o=1;r=r+1|0;o=o&1}p=p+1|0}if(o<<24>>24){z=(s|0)!=0;if(z){r=e+4|0;b:do if((i|0)>2){o=i+-1|0;if((pn(a,b,d,r,f,o,j,k,15)|0)<0){o=-1;break a}p=e+(o<<2)|0;o=0;while(1){if((o|0)>=(b|0))break b;h[(c[p>>2]|0)+(o<<3)>>3]=+h[(c[r>>2]|0)+(o<<3)>>3];o=o+1|0}}while(0);y=c[e>>2]|0;w=c[r>>2]|0;if((jt(a,b,w,b)|0)==0?(jv(a,b,.01,.1,w,J,K,H)|0)==0:0){x=c[H>>2]|0;if((x|0)<1){o=pn(a,b,d,e,f,i,j,k,m)|0;break}c:do if(n>0.0){s=c[J>>2]|0;t=c[K>>2]|0;u=x+-1|0;q=0.0;r=0;while(1){if((r|0)>=(x|0))break c;o=c[t+(r<<2)>>2]|0;A=n-q-+h[w+(c[s+(o<<2)>>2]<<3)>>3]+ +h[w+(c[s+(o+-1<<2)>>2]<<3)>>3];q=(A<0.0?0.0:A)+q;if((r|0)<(u|0))p=c[t+(r+1<<2)>>2]|0;else p=b;while(1){if((o|0)>=(p|0))break;I=w+(c[s+(o<<2)>>2]<<3)|0;h[I>>3]=+h[I>>3]+q;o=o+1|0}r=r+1|0}}while(0);if((i|0)==2?(Pt(a,b,w,y,+h[22909])|0)!=0:0){p=0;o=-1}else L=33}else{p=0;o=-1}}else{jn(a,b,i,e,f)|0;if(!(jv(a,b,.01,.1,0,J,K,H)|0))L=33;else{p=0;o=-1}}d:do if((L|0)==33){if((b|0)==1){o=0;break a}I=uH(c[H>>2]<<2)|0;if(!m){o=0;break a}if(0)DL();switch(k|0){case 2:{if(0)D1(91878,24,1,c[15686]|0)|0;o=on(a,b)|0;L=46;break}case 1:{o=kn(a,b)|0;if(!o){Ow(0,91903,C)|0;Ow(3,91952,D)|0;L=47}else G=o;break}case 3:{if(0)D1(92005,21,1,c[15686]|0)|0;o=ln(a,b)|0;L=46;break}default:L=47}if((L|0)==46)if(!o)L=47;else G=o;if((L|0)==47){if(0)D1(92027,26,1,c[15686]|0)|0;G=nn(a,b)|0}if(0){a=c[15686]|0;h[E>>3]=+EL();f1(a,92054,E)|0;D1(92066,25,1,a)|0;DL()}a=b+-1|0;y=(O(a,b)|0)/2|0;E=y+b|0;e:do if(!z){q=1.0;p=0;while(1){if((p|0)>=(i|0))break;r=e+(p<<2)|0;o=0;while(1){if((o|0)>=(b|0))break;A=+B(+(+h[(c[r>>2]|0)+(o<<3)>>3]));q=A>q?A:q;o=o+1|0}p=p+1|0}q=1.0/q;p=0;while(1){if((p|0)>=(i|0))break e;r=e+(p<<2)|0;o=0;while(1){if((o|0)>=(b|0))break;D=(c[r>>2]|0)+(o<<3)|0;h[D>>3]=+h[D>>3]*(10.0*q);o=o+1|0}p=p+1|0}}while(0);f:do if(n>0.0){v=+(y|0);o=0;q=0.0;s=0;g:while(1){if((s|0)>=(a|0))break;t=s+1|0;r=o;p=t;while(1){o=r+1|0;if((p|0)>=(b|0)){s=t;continue g}A=+fs(e,i,s,p);r=o;q=A/+g[G+(o<<2)>>2]+q;p=p+1|0}}q=q/v;o=0;while(1){if((o|0)>=(E|0)){o=0;break f}D=G+(o<<2)|0;g[D>>2]=+g[D>>2]*q;o=o+1|0}}else o=0;while(0);while(1){if((o|0)>=(i|0))break;Hs(b,c[e+(o<<2)>>2]|0);o=o+1|0}p=c[e+4>>2]|0;q=+h[p>>3];o=0;while(1){if((o|0)>=(b|0))break;D=p+(o<<3)|0;h[D>>3]=+h[D>>3]-q;o=o+1|0}u=i<<2;D=uH(u)|0;x=b<<2;w=O(x,i)|0;r=uH(w)|0;o=0;while(1){if((o|0)>=(i|0))break;s=r+((O(o,b)|0)<<2)|0;c[D+(o<<2)>>2]=s;t=e+(o<<2)|0;p=0;while(1){if((p|0)>=(b|0))break;g[s+(p<<2)>>2]=+h[(c[t>>2]|0)+(p<<3)>>3];p=p+1|0}o=o+1|0}v=+(y|0);if(0){C=c[15686]|0;h[F>>3]=+EL();f1(C,92092,F)|0}bt(E,G);ct(E,G);C=uH(b<<3)|0;_s(b,0.0,C);o=0;r=0;while(1){if((r|0)>=(a|0)){o=b;p=0;r=0;break}s=b-r|0;q=0.0;p=1;while(1){o=o+1|0;if((p|0)>=(s|0))break;A=+g[G+(o<<2)>>2];F=C+(p+r<<3)|0;h[F>>3]=+h[F>>3]-A;q=q+A;p=p+1|0}F=C+(r<<3)|0;h[F>>3]=+h[F>>3]-q;r=r+1|0}while(1){if((p|0)>=(b|0))break;g[G+(r<<2)>>2]=+h[C+(p<<3)>>3];F=o+r|0;o=o+-1|0;p=p+1|0;r=F}k=uH(u)|0;c[k>>2]=uH(w)|0;o=1;while(1){if((o|0)>=(i|0))break;c[k+(o<<2)>>2]=(c[k>>2]|0)+((O(o,b)|0)<<2);o=o+1|0}z=uH(x)|0;f=uH(x)|0;j=uH(E<<2)|0;p=Dt(G,b)|0;d=It(G,b,c[J>>2]|0,c[K>>2]|0,c[H>>2]|0)|0;y=k+4|0;r=0;A=1797693134862315708145274.0e284;o=0;while(1){if(!(r<<24>>24==0&(o|0)<(m|0)))break;_s(b,0.0,C);dt(E,G,j);w=0;t=0;while(1){if((w|0)>=(a|0)){r=0;s=b;t=0;break}x=b-w+-1|0;$s(b,0.0,f);r=0;while(1){if((r|0)>=(i|0))break;H=D+(r<<2)|0;$s(x,+g[(c[H>>2]|0)+(w<<2)>>2],z);Ws(x,z,-1.0,(c[H>>2]|0)+(w<<2)+4|0);bt(x,z);Vs(x,z,f,f);r=r+1|0}et(x,f);r=0;while(1){if((r|0)>=(x|0))break;s=f+(r<<2)|0;q=+g[s>>2];if(q>=3402823466385288598117041.0e14|q<0.0)g[s>>2]=0.0;r=r+1|0}u=w+1|0;q=0.0;r=t;s=0;while(1){r=r+1|0;if((s|0)>=(x|0))break;H=j+(r<<2)|0;N=+g[H>>2]*+g[f+(s<<2)>>2];g[H>>2]=N;H=C+(u+s<<3)|0;h[H>>3]=+h[H>>3]-N;q=q+N;s=s+1|0}t=C+(w<<3)|0;h[t>>3]=+h[t>>3]-q;w=u;t=r}while(1){if((r|0)>=(b|0)){r=0;break}g[j+(t<<2)>>2]=+h[C+(r<<3)>>3];H=s+t|0;r=r+1|0;s=s+-1|0;t=H}while(1){if((r|0)>=(i|0)){q=0.0;r=0;break}Ts(j,b,c[D+(r<<2)>>2]|0,c[k+(r<<2)>>2]|0);r=r+1|0}while(1){if((r|0)>=(i|0))break;q=+Zs(b,c[D+(r<<2)>>2]|0,c[k+(r<<2)>>2]|0)+q;r=r+1|0}q=q*2.0+v;r=0;while(1){if((r|0)>=(i|0))break;H=D+(r<<2)|0;Ts(G,b,c[H>>2]|0,z);q=q-+Zs(b,c[H>>2]|0,z);r=r+1|0}N=+B(+(q-A))/+B(+(A+1.0e-10));r=((o|0)>1&q>A|N<+h[22909])&1;s=0;while(1){if((s|0)>=(i|0))break;if((s|0)!=1){if(Eq(G,c[D+(s<<2)>>2]|0,c[k+(s<<2)>>2]|0,b,.001,b)|0){o=-1;break d}}else Et(d,c[y>>2]|0,D,i,1,15,I,n)|0;s=s+1|0}A=q;o=o+1|0}C_(I);Ht(d);if(D|0){r=0;while(1){if((r|0)>=(i|0))break;t=D+(r<<2)|0;u=e+(r<<2)|0;s=0;while(1){if((s|0)>=(b|0))break;h[(c[u>>2]|0)+(s<<3)>>3]=+g[(c[t>>2]|0)+(s<<2)>>2];s=s+1|0}r=r+1|0}C_(c[D>>2]|0);C_(D)}if(k|0){C_(c[k>>2]|0);C_(k)}C_(z);C_(f);C_(C);C_(G);C_(j)}while(0);C_(c[J>>2]|0);C_(c[K>>2]|0);if(p){C_(c[p>>2]|0);C_(p)}}else L=10}else L=10;while(0);if((L|0)==10)o=pn(a,b,d,e,f,i,j,k,m)|0;l=M;return o|0}function Gq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+48|0;f=m+24|0;g=m+12|0;d=m;i=$x(a)|0;k=uH(i*48|0)|0;pq(d,a);c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];d=Ry(a)|0;e=k;while(1){if(!d)break;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];Hq(d,e,f);d=Sy(a,d)|0;e=e+48|0}a:do if(!(Iq(k,i)|0))d=0;else{switch(b|0){case 9:{Kq(a,k,i,69,1);Mq(a,k,i,70,1);d=0;e=k;break}case 10:{Mq(a,k,i,70,1);Kq(a,k,i,69,1);d=0;e=k;break}case 7:{Kq(a,k,i,71,1);Mq(a,k,i,70,1);j=9;break}case 8:{j=9;break}case 13:{j=10;break}case 14:{Mq(a,k,i,70,0);Kq(a,k,i,69,0);d=0;e=k;break}case 12:{Mq(a,k,i,72,0);Kq(a,k,i,69,0);d=0;e=k;break}default:{Kq(a,k,i,71,0);Mq(a,k,i,70,0);d=0;e=k}}if((j|0)==9){Mq(a,k,i,72,1);Kq(a,k,i,69,1);j=10}if((j|0)==10){Kq(a,k,i,69,0);Mq(a,k,i,70,0);d=0;e=k}while(1){if((d|0)>=(i|0)){d=1;break a}g=c[e+16>>2]|0;j=c[(c[(c[e+20>>2]|0)+16>>2]|0)+132>>2]|0;h[j>>3]=+(c[e+12>>2]|0)*1.3888888888888887e-03;h[j+8>>3]=+(g|0)*1.3888888888888887e-03;d=d+1|0;e=e+48|0}}while(0);C_(k);l=m;return d|0}function Hq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,l=0.0,m=0.0;f=c[b+16>>2]|0;k=c[f+132>>2]|0;l=+h[k>>3]*720.0;j=~~(l+(l>=0.0?.5:-.5));l=+h[k+8>>3]*720.0;k=~~(l+(l>=0.0?.5:-.5));if(!(a[e+8>>0]|0)){m=+h[f+32>>3]*72.0*(+g[e>>2]*5.0);l=+h[f+40>>3]*72.0*(+g[e+4>>2]*5.0);i=~~(m+(m>=0.0?.5:-.5));f=~~(l+(l>=0.0?.5:-.5))}else{l=+h[f+32>>3]*36.0;m=+h[f+40>>3]*36.0;i=~~((+g[e>>2]+ +(~~(l+(l>=0.0?.5:-.5))|0))*10.0);f=~~((+g[e+4>>2]+ +(~~(m+(m>=0.0?.5:-.5))|0))*10.0)}c[d+12>>2]=j;c[d+16>>2]=k;c[d+20>>2]=b;c[d+32>>2]=j-i;c[d+36>>2]=k-f;c[d+40>>2]=i+j;c[d+44>>2]=f+k;return}function Iq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=b+-1|0;d=0;a:while(1){if((d|0)>=(k|0)){a=0;break}j=a+48|0;d=d+1|0;g=a+32|0;h=a+40|0;i=a+36|0;f=a+44|0;a=j;e=d;while(1){if((e|0)>=(b|0)){a=j;continue a}if((((c[g>>2]|0)<=(c[a+40>>2]|0)?(c[a+32>>2]|0)<=(c[h>>2]|0):0)?(c[i>>2]|0)<=(c[a+44>>2]|0):0)?(c[a+36>>2]|0)<=(c[f>>2]|0):0){a=1;break a}a=a+48|0;e=e+1|0}}return a|0}function Jq(a,b){a=a|0;b=b|0;if((c[a+36>>2]|0)>(c[b+44>>2]|0))a=0;else a=(c[b+36>>2]|0)<=(c[a+44>>2]|0)&1;return a|0}function Kq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=Bw(18064,c[4558]|0)|0;g=b;h=0;while(1){if((h|0)>=(d|0))break;c[g+8>>2]=c[g+12>>2];nb[c[i>>2]&63](i,g,1)|0;g=g+48|0;h=h+1|0}if(!f)h=Sq(a,i,e,73)|0;else h=Rq(i,e,73)|0;eI(h,2,2147483647)|0;g=0;while(1){if((g|0)>=(d|0))break;f=b+12|0;a=c[(c[(c[b+24>>2]|0)+16>>2]|0)+232>>2]|0;e=a-(c[f>>2]|0)|0;c[f>>2]=a;f=b+32|0;c[f>>2]=(c[f>>2]|0)+e;f=b+40|0;c[f>>2]=(c[f>>2]|0)+e;b=b+48|0;g=g+1|0}Tq(h);xw(i)|0;return}function Lq(a,b){a=a|0;b=b|0;if((c[a+32>>2]|0)>(c[b+40>>2]|0))a=0;else a=(c[b+32>>2]|0)<=(c[a+40>>2]|0)&1;return a|0}function Mq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=Bw(18064,c[4558]|0)|0;g=b;h=0;while(1){if((h|0)>=(d|0))break;c[g+8>>2]=c[g+16>>2];nb[c[i>>2]&63](i,g,1)|0;g=g+48|0;h=h+1|0}if(!f)h=Sq(a,i,e,74)|0;else h=Rq(i,e,74)|0;eI(h,2,2147483647)|0;g=0;while(1){if((g|0)>=(d|0))break;f=b+16|0;a=c[(c[(c[b+24>>2]|0)+16>>2]|0)+232>>2]|0;e=a-(c[f>>2]|0)|0;c[f>>2]=a;f=b+36|0;c[f>>2]=(c[f>>2]|0)+e;f=b+44|0;c[f>>2]=(c[f>>2]|0)+e;b=b+48|0;g=g+1|0}Tq(h);xw(i)|0;return}function Nq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+32|0;e=b+32|0;if((c[a+36>>2]|0)<=(c[b+44>>2]|0)?(c[b+36>>2]|0)<=(c[a+44>>2]|0):0)if((c[a+40>>2]|0)<(c[e>>2]|0))a=1;else{g=Qq(d,e)|0;g=g-(c[b+12>>2]|0)+(c[a+12>>2]|0)|0;b=c[b+16>>2]|0;a=c[a+16>>2]|0;f=(b|0)<(a|0);e=Pq(d,e)|0;a=(g|0)<=(e-(f?a:b)+(f?b:a)|0)&1}else a=0;return a|0}function Oq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+32|0;e=b+32|0;if((c[d>>2]|0)<=(c[b+40>>2]|0)?(c[e>>2]|0)<=(c[a+40>>2]|0):0)if((c[a+44>>2]|0)<(c[b+36>>2]|0))a=1;else{g=Pq(d,e)|0;g=g-(c[b+16>>2]|0)+(c[a+16>>2]|0)|0;b=c[b+12>>2]|0;a=c[a+12>>2]|0;f=(b|0)<(a|0);e=Qq(d,e)|0;a=(g|0)<=(e-(f?a:b)+(f?b:a)|0)&1}else a=0;return a|0}function Pq(a,b){a=a|0;b=b|0;return ((c[a+12>>2]|0)-(c[a+4>>2]|0)+(c[b+12>>2]|0)-(c[b+4>>2]|0)|0)/2|0|0}function Qq(a,b){a=a|0;b=b|0;return ((c[a+8>>2]|0)-(c[a>>2]|0)+(c[b+8>>2]|0)-(c[b>>2]|0)|0)/2|0|0}function Rq(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+16|0;v=x;a[v>>0]=a[18484]|0;a[v+1>>0]=a[18485]|0;a[v+2>>0]=a[18486]|0;a[v+3>>0]=a[18487]|0;w=Wx(92103,v,0)|0;zz(w,134401,280,1)|0;g=zw(d)|0;h=-2147483647;u=0;while(1){if(!g)break;s=c[g+8>>2]|0;t=u+((h|0)!=(s|0)&1)|0;g=c[g>>2]|0;h=s;u=t}s=w+16|0;t=(u<<3)+-4|0;n=0;j=0;g=0;h=0;m=0;r=zw(d)|0;i=-2147483647;while(1){if(!r)break;q=c[r+8>>2]|0;if((i|0)!=(q|0)){p=$y(w,qy(c[r+20>>2]|0)|0,1)|0;zz(p,134365,304,1)|0;o=p+16|0;g=c[o>>2]|0;c[g+112>>2]=r;if(!h){c[(c[s>>2]|0)+192>>2]=p;n=p}else{c[(c[n+16>>2]|0)+164>>2]=p;n=h}c[g+176>>2]=0;k=j+1|0;i=tH(k<<2)|0;c[(c[o>>2]|0)+172>>2]=i;if(!m){j=k;k=p;m=p;g=p;h=n;i=q}else{i=m+16|0;c[(c[i>>2]|0)+184>>2]=0;j=tH((m|0)==(n|0)?t:u-j<<2)|0;c[(c[i>>2]|0)+180>>2]=j;j=Qx(w,m,p,0,1)|0;zz(j,134378,176,1)|0;g=c[j+16>>2]|0;b[g+170>>1]=10;c[g+156>>2]=1;g=c[i>>2]|0;h=c[g+180>>2]|0;if(!h)g=uH((c[g+184>>2]<<2)+8|0)|0;else g=wH(h,(c[g+184>>2]<<2)+8|0)|0;m=c[i>>2]|0;c[m+180>>2]=g;m=m+184|0;h=c[m>>2]|0;c[m>>2]=h+1;c[g+(h<<2)>>2]=j;g=c[i>>2]|0;c[(c[g+180>>2]|0)+(c[g+184>>2]<<2)>>2]=0;g=c[o>>2]|0;h=c[g+172>>2]|0;if(!h)g=uH((c[g+176>>2]<<2)+8|0)|0;else g=wH(h,(c[g+176>>2]<<2)+8|0)|0;h=c[o>>2]|0;c[h+172>>2]=g;h=h+176|0;m=c[h>>2]|0;c[h>>2]=m+1;c[g+(m<<2)>>2]=j;j=c[o>>2]|0;c[(c[j+172>>2]|0)+(c[j+176>>2]<<2)>>2]=0;j=k;k=p;m=p;g=p;h=n;i=q}}else{k=g;g=n}c[r+24>>2]=k;n=g;g=k;r=c[r>>2]|0}m=m+16|0;c[(c[m>>2]|0)+184>>2]=0;g=tH(4)|0;c[(c[m>>2]|0)+180>>2]=g;a[v>>0]=a[18484]|0;a[v+1>>0]=a[18485]|0;a[v+2>>0]=a[18486]|0;a[v+3>>0]=a[18487]|0;m=Wx(92150,v,0)|0;g=zw(d)|0;while(1){if(!g)break;v=$y(m,qy(c[g+20>>2]|0)|0,1)|0;zz(v,134365,304,1)|0;c[g+28>>2]=v;c[(c[v+16>>2]|0)+112>>2]=g;g=c[g>>2]|0}g=0;k=zw(d)|0;h=-2147483647;a:while(1){if(!k)break;j=c[k+8>>2]|0;b:do if((h|0)==(j|0))j=h;else{g=k;while(1){g=c[g>>2]|0;if(!g)break a;if((c[g+8>>2]|0)!=(j|0))break b}}while(0);i=k+28|0;h=g;while(1){if(!h)break;if(lb[e&127](k,h)|0)Qx(m,c[i>>2]|0,c[h+28>>2]|0,0,1)|0;h=c[h>>2]|0}k=c[k>>2]|0;h=j}Uq(m,w,f);_x(m)|0;l=x;return w|0}function Sq(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=l;l=l+16|0;r=s;a[r>>0]=a[18484]|0;a[r+1>>0]=a[18485]|0;a[r+2>>0]=a[18486]|0;a[r+3>>0]=a[18487]|0;r=Wx(92103,r,0)|0;zz(r,134401,280,1)|0;k=r+16|0;h=zw(e)|0;i=0;while(1){if(!h)break;j=$y(r,qy(c[h+20>>2]|0)|0,1)|0;zz(j,134365,304,1)|0;p=j+16|0;n=c[p>>2]|0;c[n+112>>2]=h;c[h+24>>2]=j;c[n+176>>2]=0;n=tH(4)|0;o=c[p>>2]|0;c[o+172>>2]=n;c[o+184>>2]=0;o=tH(4)|0;c[(c[p>>2]|0)+180>>2]=o;if(!i)c[(c[k>>2]|0)+192>>2]=j;else c[(c[i+16>>2]|0)+164>>2]=j;h=c[h>>2]|0;i=j}m=zw(e)|0;a:while(1){if(!m)break;n=m+32|0;o=m+24|0;p=m+20|0;h=m;while(1){h=c[h>>2]|0;if(!h)break;if(lb[f&127](m,h)|0){i=lb[g&127](n,h+32|0)|0;j=Qx(r,c[o>>2]|0,c[h+24>>2]|0,0,1)|0;zz(j,134378,176,1)|0;if((i|0)>=65536){q=13;break a}k=j+16|0;t=c[k>>2]|0;b[t+170>>1]=i;c[t+156>>2]=1;if(j|0?Qx(d,c[p>>2]|0,c[h+20>>2]|0,0,0)|0:0)c[(c[k>>2]|0)+156>>2]=100}}m=c[m>>2]|0}if((q|0)==13)qa(92106,92122,254,92135);m=zw(e)|0;while(1){if(!m)break;k=c[m+24>>2]|0;n=k+16|0;k=Dx(r,k)|0;while(1){if(!k)break;h=c[n>>2]|0;i=c[h+180>>2]|0;if(!i)h=uH((c[h+184>>2]<<2)+8|0)|0;else h=wH(i,(c[h+184>>2]<<2)+8|0)|0;i=c[n>>2]|0;c[i+180>>2]=h;i=i+184|0;j=c[i>>2]|0;c[i>>2]=j+1;c[h+(j<<2)>>2]=k;j=c[n>>2]|0;c[(c[j+180>>2]|0)+(c[j+184>>2]<<2)>>2]=0;j=k+-48|0;h=c[(c[((c[k>>2]&3|0)==2?k:j)+40>>2]|0)+16>>2]|0;i=c[h+172>>2]|0;if(!i)h=uH((c[h+176>>2]<<2)+8|0)|0;else h=wH(i,(c[h+176>>2]<<2)+8|0)|0;c[(c[(c[((c[k>>2]&3|0)==2?k:j)+40>>2]|0)+16>>2]|0)+172>>2]=h;g=c[(c[((c[k>>2]&3|0)==2?k:j)+40>>2]|0)+16>>2]|0;q=c[g+172>>2]|0;g=g+176|0;t=c[g>>2]|0;c[g>>2]=t+1;c[q+(t<<2)>>2]=k;t=c[(c[((c[k>>2]&3|0)==2?k:j)+40>>2]|0)+16>>2]|0;c[(c[t+172>>2]|0)+(c[t+176>>2]<<2)>>2]=0;k=Fx(r,k)|0}m=c[m>>2]|0}l=s;return r|0}function Tq(a){a=a|0;var b=0,d=0,e=0,f=0;f=Ry(a)|0;while(1){if(!f)break;d=f+16|0;b=c[d>>2]|0;e=c[b+172>>2]|0;if(e){C_(e);b=c[d>>2]|0}b=c[b+180>>2]|0;if(b|0)C_(b);f=Sy(a,f)|0}_x(a)|0;return}function Uq(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;k=Ry(a)|0;while(1){if(!k)break;n=c[(c[k+16>>2]|0)+112>>2]|0;m=c[n+24>>2]|0;n=n+32|0;o=m+16|0;l=Dx(a,k)|0;while(1){if(!l)break;h=c[(c[(c[((c[l>>2]&3|0)==2?l:l+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;p=lb[e&127](n,h+32|0)|0;h=c[h+24>>2]|0;i=Qx(d,m,h,0,1)|0;zz(i,134378,176,1)|0;j=i+16|0;f=c[j>>2]|0;c[f+156>>2]=1;g=b[f+170>>1]|0;if((p|0)>(g&65535|0)){if(!(g<<16>>16)){f=c[o>>2]|0;g=c[f+180>>2]|0;if(!g)f=uH((c[f+184>>2]<<2)+8|0)|0;else f=wH(g,(c[f+184>>2]<<2)+8|0)|0;q=c[o>>2]|0;c[q+180>>2]=f;q=q+184|0;g=c[q>>2]|0;c[q>>2]=g+1;c[f+(g<<2)>>2]=i;f=c[o>>2]|0;c[(c[f+180>>2]|0)+(c[f+184>>2]<<2)>>2]=0;h=h+16|0;f=c[h>>2]|0;g=c[f+172>>2]|0;if(!g)f=uH((c[f+176>>2]<<2)+8|0)|0;else f=wH(g,(c[f+176>>2]<<2)+8|0)|0;g=c[h>>2]|0;c[g+172>>2]=f;g=g+176|0;q=c[g>>2]|0;c[g>>2]=q+1;c[f+(q<<2)>>2]=i;f=c[h>>2]|0;c[(c[f+172>>2]|0)+(c[f+176>>2]<<2)>>2]=0;f=c[j>>2]|0}b[f+170>>1]=p}l=Fx(a,l)|0}k=Sy(a,k)|0}return}function Vq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return (c[b>>2]|0)-(c[d>>2]|0)|0}function Wq(b,d){b=b|0;d=d|0;var e=0,f=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;y=l;l=l+64|0;u=y+24|0;s=y+16|0;r=y+52|0;q=y+40|0;t=y;w=$x(b)|0;x=uH(w*72|0)|0;pq(q,b);k=+g[q>>2];m=+g[q+4>>2];q=(a[q+8>>0]|0)!=0;k=q?k*.013888888888888888:k;m=q?m*.013888888888888888:m;n=k*.5;o=m*.5;e=x;f=Ry(b)|0;while(1){if(!f)break;p=c[f+16>>2]|0;i=+h[p+32>>3];if(q){j=+h[p+40>>3]*.5+m;i=i*.5+k}else{j=o*+h[p+40>>3];i=n*i}p=c[p+132>>2]|0;A=+h[p>>3];h[e>>3]=A;z=+h[p+8>>3];h[e+8>>3]=z;h[e+16>>3]=A-i;h[e+24>>3]=z-j;h[e+32>>3]=A+i;h[e+40>>3]=z+j;h[e+48>>3]=i;h[e+56>>3]=j;c[e+64>>2]=f;e=e+72|0;f=Sy(b,f)|0}do if((d|0)<0){i=+Xq(x,w);if(i==0.0){C_(x);e=0;break}if(!0){k=i;j=i;v=19}else{v=c[15686]|0;h[s>>3]=i;f1(v,92153,s)|0;k=i;j=i;v=19}}else{f=Yq(x,w,r)|0;e=c[r>>2]|0;if(!e){C_(f);C_(x);e=0;break}if(!d){_q(t,f,e);i=+h[t>>3];j=+h[t+8>>3]}else{j=+Zq(f,e);i=j}C_(f);if(!0){k=i;v=19}else{v=c[15686]|0;h[u>>3]=i;h[u+8>>3]=j;f1(v,92167,u)|0;k=i;v=19}}while(0);if((v|0)==19){e=0;f=x;while(1){if((e|0)>=(w|0))break;v=c[(c[(c[f+64>>2]|0)+16>>2]|0)+132>>2]|0;h[v>>3]=+h[f>>3]*k;h[v+8>>3]=+h[f+8>>3]*j;e=e+1|0;f=f+72|0}C_(x);e=1}l=y;return e|0}function Xq(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;c=0.0;d=0;a:while(1){if((d|0)>=(b|0))break;r=a+72|0;d=d+1|0;m=a+16|0;n=a+8|0;o=a+56|0;p=a+48|0;q=a+32|0;k=a+24|0;l=a+40|0;i=d;j=r;while(1){if((i|0)>=(b|0)){a=r;continue a}if(((+h[m>>3]<=+h[j+32>>3]?+h[j+16>>3]<=+h[q>>3]:0)?+h[k>>3]<=+h[j+40>>3]:0)?+h[j+24>>3]<=+h[l>>3]:0){c=0.0;break a}e=+h[a>>3];f=+h[j>>3];if(e==f)g=t;else{g=+B(+(e-f));g=(+h[j+48>>3]+ +h[p>>3])/g}e=+h[n>>3];f=+h[j+8>>3];if(e==f)e=t;else{e=+B(+(e-f));e=(+h[j+56>>3]+ +h[o>>3])/e}g=ec?g:c}}return +c}function Yq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;k=uH((b<<4)+16|0)|0;m=0;e=0;n=k;o=b;i=k;a:while(1){if((e|0)>=(b|0))break;z=a+72|0;e=e+1|0;y=a+16|0;r=a+32|0;s=a+24|0;u=a+40|0;v=a+8|0;w=a+56|0;x=a+48|0;p=e;q=z;l=i;while(1){if((p|0)==(b|0)){a=z;i=l;continue a}if(((+h[y>>3]<=+h[q+32>>3]?+h[q+16>>3]<=+h[r>>3]:0)?+h[s>>3]<=+h[q+40>>3]:0)?+h[q+24>>3]<=+h[u>>3]:0){i=o+b|0;if((m|0)==(o|0)){k=wH(k,(i<<4)+16|0)|0;n=k;l=k}else i=o;f=+h[a>>3];g=+h[q>>3];if(!(f==g)){f=(+h[q+48>>3]+ +h[x>>3])/+B(+(f-g));if(f<1.0){f=1.0;A=13}}else{f=t;A=13}if((A|0)==13)A=0;g=+h[v>>3];j=+h[q+8>>3];if(!(g==j)){g=(+h[q+56>>3]+ +h[w>>3])/+B(+(g-j));if(g<1.0){g=1.0;A=16}}else{g=t;A=16}if((A|0)==16)A=0;m=m+1|0;h[n+(m<<4)>>3]=f;h[n+(m<<4)+8>>3]=g}else i=o;p=p+1|0;q=q+72|0;o=i}}A=wH(i,(m<<4)+16|0)|0;c[d>>2]=m;return A|0}function Zq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0,f=0.0,g=0.0;d=1;e=0.0;while(1){c=a+16|0;if((d|0)>(b|0))break;g=+h[c>>3];f=+h[a+24>>3];f=ge?f:e;a=c}return +e}function _q(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,g=0,i=0.0;h[b>>3]=1.0;h[b+8>>3]=t;Z0(b+16|0,c,16,75);g=uH((c<<4)+16|0)|0;h[g+(c<<4)>>3]=+h[b+(c<<4)>>3];f=c;d=1.0;while(1){h[g+(f<<4)+8>>3]=d;e=f+-1|0;if((f|0)<=0){d=t;e=0;f=0;break}h[g+(e<<4)>>3]=+h[b+(e<<4)>>3];i=+h[(+h[b+(f<<4)+8>>3]>d?b:g)+(f<<4)+8>>3];f=e;d=i}while(1){if((f|0)>(c|0))break;i=+h[g+(f<<4)+8>>3]*+h[g+(f<<4)>>3];b=i>3];h[a>>3]=+h[g+(e<<4)>>3];h[a+8>>3]=i;return}else qa(92184,92122,832,92204)}function $q(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3];d=+h[b>>3];if(!(cd)){d=+h[a+8>>3];c=+h[b+8>>3];if(dc&1}else a=1;else a=-1;return a|0}function ar(a){a=a|0;var b=0;if(a|0){b=c[a+4>>2]|0;if(b|0)C_(b);b=c[a+8>>2]|0;if(b|0)C_(b);b=c[a+16>>2]|0;if(b|0)C_(b);C_(a)}return}function br(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o+8|0;m=o;k=E_(c[46079]|0,d<<2)|0;c[46079]=k;f=0;while(1){if((f|0)>=(d|0))break;c[e+(f<<2)>>2]=2147483647;f=f+1|0}c[e+(a<<2)>>2]=0;h=b+(a*20|0)|0;i=b+(a*20|0)+8|0;j=b+(a*20|0)+4|0;f=1;while(1){if((f|0)>=(c[h>>2]|0))break;c[e+(c[(c[j>>2]|0)+(f<<2)>>2]<<2)>>2]=~~+g[(c[i>>2]|0)+(f<<2)>>2];f=f+1|0}cr(n,a,k,e,d);i=-2147483639;while(1){if(!((dr(n,m,c[46079]|0,e)|0)<<24>>24)){f=0;break}f=c[m>>2]|0;a=c[e+(f<<2)>>2]|0;if((a|0)==2147483647){f=0;break}i=b+(f*20|0)|0;j=b+(f*20|0)+4|0;h=b+(f*20|0)+8|0;f=1;while(1){if((f|0)>=(c[i>>2]|0))break;er(n,c[(c[j>>2]|0)+(f<<2)>>2]|0,a+~~+g[(c[h>>2]|0)+(f<<2)>>2]|0,c[46079]|0,e);f=f+1|0}i=a+10|0}while(1){if((f|0)>=(d|0))break;h=e+(f<<2)|0;if((c[h>>2]|0)==2147483647)c[h>>2]=i;f=f+1|0}fr(n);l=o;return}function cr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;if((f|0)==1)i=0;else i=uH((f<<2)+-4|0)|0;c[a>>2]=i;j=f+-1|0;c[a+4>>2]=j;g=0;h=0;while(1){if((h|0)>=(f|0))break;if((h|0)!=(b|0)){c[i+(g<<2)>>2]=h;c[d+(h<<2)>>2]=g;g=g+1|0}h=h+1|0}g=(j|0)/2|0;while(1){if((g|0)<=-1)break;gr(a,g,d,e);g=g+-1|0}return}function dr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=a+4|0;if(!(c[f>>2]|0))a=0;else{g=c[a>>2]|0;c[b>>2]=c[g>>2];b=c[g+((c[f>>2]|0)+-1<<2)>>2]|0;c[g>>2]=b;c[d+(b<<2)>>2]=0;c[f>>2]=(c[f>>2]|0)+-1;gr(a,0,d,e);a=1}return a|0}function er(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=f+(b<<2)|0;if((c[g>>2]|0)>(d|0)){j=e+(b<<2)|0;i=c[j>>2]|0;c[g>>2]=d;g=c[a>>2]|0;a=i;while(1){if((a|0)<=0)break;h=a>>>1;i=c[g+(h<<2)>>2]|0;if((c[f+(i<<2)>>2]|0)<=(d|0))break;c[g+(a<<2)>>2]=i;c[e+(i<<2)>>2]=a;a=h}c[g+(a<<2)>>2]=b;c[j>>2]=a}return}function fr(a){a=a|0;a=c[a>>2]|0;if(a|0)C_(a);return}function gr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=a+4|0;while(1){f=b<<1;g=f|1;h=c[i>>2]|0;if(!((f|0)<(h|0)?(j=c[a>>2]|0,(c[e+(c[j+(f<<2)>>2]<<2)>>2]|0)<(c[e+(c[j+(b<<2)>>2]<<2)>>2]|0)):0))f=b;if((g|0)<(h|0)){j=c[a>>2]|0;f=(c[e+(c[j+(g<<2)>>2]<<2)>>2]|0)<(c[e+(c[j+(f<<2)>>2]<<2)>>2]|0)?g:f}if((f|0)==(b|0))break;j=c[a>>2]|0;h=j+(f<<2)|0;g=c[h>>2]|0;j=j+(b<<2)|0;c[h>>2]=c[j>>2];c[j>>2]=g;c[d+(c[h>>2]<<2)>>2]=f;c[d+(c[j>>2]<<2)>>2]=b;b=f}return}function hr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0.0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;m=p+8|0;n=p;c[n>>2]=0;o=uH(d<<2)|0;f=0;while(1){if((f|0)>=(d|0))break;g[e+(f<<2)>>2]=3402823466385288598117041.0e14;f=f+1|0}g[e+(a<<2)>>2]=0.0;h=c[b+(a*20|0)>>2]|0;i=b+(a*20|0)+8|0;j=b+(a*20|0)+4|0;f=1;while(1){if((f|0)>=(h|0))break;c[e+(c[(c[j>>2]|0)+(f<<2)>>2]<<2)>>2]=c[(c[i>>2]|0)+(f<<2)>>2];f=f+1|0}ir(m,a,o,e,d);a:while(1){if(!((jr(m,n,o,e)|0)<<24>>24))break;f=c[n>>2]|0;k=+g[e+(f<<2)>>2];if(k==3402823466385288598117041.0e14)break;i=b+(f*20|0)|0;j=b+(f*20|0)+4|0;h=b+(f*20|0)+8|0;f=1;while(1){if((f|0)>=(c[i>>2]|0))continue a;kr(m,c[(c[j>>2]|0)+(f<<2)>>2]|0,+g[(c[h>>2]|0)+(f<<2)>>2]+k,o,e);f=f+1|0}}fr(m);C_(o);l=p;return}function ir(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=f+-1|0;j=uH(i<<2)|0;c[a>>2]=j;c[a+4>>2]=i;g=0;h=0;while(1){if((h|0)>=(f|0))break;if((h|0)!=(b|0)){c[j+(g<<2)>>2]=h;c[d+(h<<2)>>2]=g;g=g+1|0}h=h+1|0}g=(i|0)/2|0;while(1){if((g|0)<=-1)break;lr(a,g,d,e);g=g+-1|0}return}function jr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=a+4|0;if(!(c[f>>2]|0))a=0;else{g=c[a>>2]|0;c[b>>2]=c[g>>2];b=c[g+((c[f>>2]|0)+-1<<2)>>2]|0;c[g>>2]=b;c[d+(b<<2)>>2]=0;c[f>>2]=(c[f>>2]|0)+-1;lr(a,0,d,e);a=1}return a|0}function kr(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;var h=0,i=0,j=0,k=0;h=f+(b<<2)|0;if(!(+g[h>>2]<=d)){k=e+(b<<2)|0;j=c[k>>2]|0;g[h>>2]=d;h=c[a>>2]|0;a=j;while(1){if((a|0)<=0)break;i=a>>>1;j=c[h+(i<<2)>>2]|0;if(!(+g[f+(j<<2)>>2]>d))break;c[h+(a<<2)>>2]=j;c[e+(j<<2)>>2]=a;a=i}c[h+(a<<2)>>2]=b;c[k>>2]=a}return}function lr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0;j=a+4|0;while(1){f=b<<1;h=f|1;i=c[j>>2]|0;if(!((f|0)<(i|0)?(k=c[a>>2]|0,+g[e+(c[k+(f<<2)>>2]<<2)>>2]<+g[e+(c[k+(b<<2)>>2]<<2)>>2]):0))f=b;if((h|0)<(i|0)?(k=c[a>>2]|0,+g[e+(c[k+(h<<2)>>2]<<2)>>2]<+g[e+(c[k+(f<<2)>>2]<<2)>>2]):0)f=h;if((f|0)==(b|0))break;k=c[a>>2]|0;i=k+(f<<2)|0;h=c[i>>2]|0;k=k+(b<<2)|0;c[i>>2]=c[k>>2];c[k>>2]=h;c[d+(c[i>>2]<<2)>>2]=f;c[d+(c[k>>2]<<2)>>2]=b;b=f}return}function mr(){ft(184320,48);c[46083]=0;return}function nr(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0;i=ht(184320)|0;c[i+32>>2]=a;c[i+36>>2]=b;Ot(a);Ot(b);c[i+24>>2]=0;c[i+28>>2]=0;f=+h[a>>3];g=+h[b>>3]-f;e=+h[a+8>>3];d=+h[b+8>>3]-e;f=d*e+g*f+(d*d+g*g)*.5;b=i+16|0;h[b>>3]=f;if((g>0.0?g:-g)>(d>0.0?d:-d)){h[i>>3]=1.0;e=d/g;d=g;a=i+8|0}else{h[i+8>>3]=1.0;e=g/d;a=i}h[a>>3]=e;h[b>>3]=f/d;b=c[46083]|0;c[i+40>>2]=b;c[46083]=b+1;return i|0}function or(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0;l=+h[a>>3];a:do if(l==1.0){if(!(+h[a+8>>3]>=0.0)){b=c[a+28>>2]|0;d=c[a+24>>2]|0;if(!d)m=9;else m=5}else{b=c[a+24>>2]|0;d=c[a+28>>2]|0;if(!d)m=9;else m=5}do if((m|0)==5){e=+h[d+8>>3];if(e>+h[22881])break a;f=+h[22882];if(!(e>=f)){i=f;e=+h[a+16>>3]-+h[a+8>>3]*f;break}else{i=e;e=+h[d>>3];break}}else if((m|0)==9){f=+h[22882];i=f;e=+h[a+16>>3]-+h[a+8>>3]*f}while(0);do if(b){g=+h[b+8>>3];if(g>3]-+h[a+8>>3]*f;break}else{f=+h[b>>3];break}}else{f=+h[22881];g=f;f=+h[a+16>>3]-+h[a+8>>3]*f}while(0);j=+h[22883];b=e>j;d=f>j;k=+h[22884];if(!(b&d|e>3]-j)/+h[a+8>>3];e=j}if(e>3]-k)/+h[a+8>>3];e=k}if(d){g=(+h[a+16>>3]-j)/+h[a+8>>3];f=j}if(f>3]-k)/+h[a+8>>3];f=k;m=46}else m=46}}else{d=c[a+28>>2]|0;b=c[a+24>>2]|0;do if(b){e=+h[b>>3];if(e>+h[22883])break a;g=+h[22884];if(!(e>=g)){i=+h[a+16>>3]-g*l;e=g;break}else{i=+h[b+8>>3];break}}else{g=+h[22884];i=+h[a+16>>3]-g*l;e=g}while(0);do if(d){f=+h[d>>3];if(f>3]-l*j;f=j;break}else{g=+h[d+8>>3];break}}else{f=+h[22883];g=+h[a+16>>3]-l*f}while(0);j=+h[22881];b=i>j;d=g>j;k=+h[22882];if(!(b&d|i>3]-j)/l}if(i>3]-k)/l}if(d){g=j;f=(+h[a+16>>3]-j)/l}if(g>3]-k)/l;m=46}else m=46}}while(0);if((m|0)==46)pr(a,e,i,f,g);return}function pr(a,b,d,e,f){a=a|0;b=+b;d=+d;e=+e;f=+f;var g=0;g=a+32|0;Wr(c[g>>2]|0,b,d);Wr(c[g>>2]|0,e,f);a=a+36|0;Wr(c[a>>2]|0,b,d);Wr(c[a>>2]|0,e,f);return}function qr(a,b,d){a=a|0;b=b|0;d=d|0;c[a+24+(b<<2)>>2]=d;Ot(d);if(c[a+24+(1-b<<2)>>2]|0){or(a);Nt(c[a+32>>2]|0);Nt(c[a+36>>2]|0);it(a,184320)}return}function rr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=l;l=l+16|0;o=p;m=b<<2;h=uH(O(m,d)|0)|0;g=c[e>>2]|0;m=uH(m)|0;n=c[a+8>>2]|0;if(g|0){C_(c[g>>2]|0);C_(g)}k=uH(d<<2)|0;c[e>>2]=k;g=0;while(1){if((g|0)>=(d|0))break;c[k+(g<<2)>>2]=h+((O(g,b)|0)<<2);g=g+1|0}j=(f|0)!=0;if(j)ds(a,b);e=(f2()|0)%(b|0)|0;yq(o,b);g=c[k>>2]|0;if(j){br(e,a,b,g);f=0;g=0}else{uq(e,a,b,g,o);f=0;g=0}while(1){if((g|0)>=(b|0)){i=1;break}h=c[(c[k>>2]|0)+(g<<2)>>2]|0;c[m+(g<<2)>>2]=h;i=(h|0)>(f|0);f=i?h:f;e=i?g:e;g=g+1|0}while(1){if((i|0)>=(d|0))break;h=k+(i<<2)|0;g=c[h>>2]|0;if(j){br(e,a,b,g);g=0;f=0}else{uq(e,a,b,g,o);g=0;f=0}while(1){if((g|0)>=(b|0))break;s=m+(g<<2)|0;q=c[s>>2]|0;r=c[(c[h>>2]|0)+(g<<2)>>2]|0;r=(q|0)<(r|0)?q:r;c[s>>2]=r;s=(r|0)>(f|0);q=s?g:e;g=g+1|0;f=s?r:f;e=q}i=i+1|0}C_(m);if(j)es(a,b,n);l=p;return}function sr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0.0,j=0,k=0;i=1.0/+(b|0);h=0;while(1){if((h|0)>=(d|0))break;j=a+(h<<2)|0;e=0.0;f=0;while(1){if((f|0)>=(b|0))break;e=e+ +(c[(c[j>>2]|0)+(f<<2)>>2]|0);f=f+1|0}g=~~(e*i);f=0;while(1){if((f|0)>=(b|0))break;k=(c[j>>2]|0)+(f<<2)|0;c[k>>2]=(c[k>>2]|0)-g;f=f+1|0}h=h+1|0}return}function tr(){c[46085]=~~+C(+(+((c[46084]|0)+4|0)));return}function ur(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+8>>3]-+h[b+8>>3];return +(d*d+c*c)}function vr(a,b,c){a=a|0;b=b|0;c=c|0;h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=+h[b+8>>3]-+h[c+8>>3];return}function wr(a,b,c){a=a|0;b=b|0;c=c|0;h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=+h[c+8>>3]+ +h[b+8>>3];return}function xr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];return +((+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d))}function yr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+48|0;f=e+32|0;g=e+16|0;h=e;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];d=+xr(h,g,f)>0.0&1;l=e;return d|0}function zr(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;o=+h[a>>3];p=+h[d+8>>3];q=+h[c+8>>3];m=(p-q)*o;n=+h[b>>3];l=+h[d>>3];k=+h[b+8>>3];i=+h[a+8>>3];j=k-i;f=+h[c>>3];g=m+n*(q-p)+j*l+f*(i-k);if(g==0.0)d=0;else{p=(f*(i-p)+m+(q-i)*l)/g;q=-(f*j+((q-k)*o+(i-q)*n))/g;h[e>>3]=p*(n-o)+o;h[e+8>>3]=j*p+i;d=q<=1.0&(q>=0.0&(p>=0.0&p<=1.0))&1}return d|0}function Ar(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0.0,i=0;c[a+20>>2]=b;Ot(b);i=a+24|0;h[i>>3]=+h[b+8>>3]+d;e=c[46086]|0;e=e+((Br(a)|0)*40|0)|0;while(1){f=e+32|0;e=c[f>>2]|0;if(!e)break;d=+h[i>>3];g=+h[e+24>>3];if(d>g)continue;if(!(d==g))break;if(!(+h[b>>3]>+h[c[e+20>>2]>>3]))break}c[a+32>>2]=e;c[f>>2]=a;c[46087]=(c[46087]|0)+1;return}function Br(a){a=a|0;var b=0.0,d=0,e=0.0;d=c[46088]|0;e=+(d|0);b=(+h[a+24>>3]-+h[22888])/+h[22890]*e;do if(!(b<0.0))if(!(b>=e)){a=~~b;break}else{a=d+-1|0;break}else a=0;while(0);if((a|0)<(c[46089]|0))c[46089]=a;return a|0}function Cr(a){a=a|0;var b=0,d=0,e=0;d=a+20|0;if(c[d>>2]|0){b=c[46086]|0;b=b+((Br(a)|0)*40|0)|0;do{e=b+32|0;b=c[e>>2]|0}while((b|0)!=(a|0));c[e>>2]=c[a+32>>2];c[46087]=(c[46087]|0)+-1;Nt(c[d>>2]|0);c[d>>2]=0}return}function Dr(){return (c[46087]|0)==0|0}function Er(a){a=a|0;var b=0,d=0,e=0,f=0.0;b=c[46086]|0;d=c[46089]|0;while(1){e=c[b+(d*40|0)+32>>2]|0;if(e|0)break;e=d+1|0;c[46089]=e;d=e}f=+h[e+24>>3];h[a>>3]=+h[c[e+20>>2]>>3];h[a+8>>3]=f;return}function Fr(){var a=0,b=0;b=(c[46086]|0)+((c[46089]|0)*40|0)+32|0;a=c[b>>2]|0;c[b>>2]=c[a+32>>2];c[46087]=(c[46087]|0)+-1;return a|0}function Gr(){C_(c[46086]|0);c[46086]=0;return}function Hr(){var a=0,b=0,d=0;c[46087]=0;c[46089]=0;a=c[46085]|0;b=a<<2;c[46088]=b;d=c[46086]|0;if(!d){d=uH(a*160|0)|0;c[46086]=d;b=c[46088]|0}a=0;while(1){if((a|0)>=(b|0))break;c[d+(a*40|0)+32>>2]=0;a=a+1|0}return}function Ir(){ft(184368,40);C_(c[46095]|0);c[46095]=0;return}function Jr(){var a=0,b=0,d=0;ft(184368,40);a=c[46085]|0;b=a<<1;c[46096]=b;d=c[46095]|0;if(!d){d=uH(a<<3)|0;c[46095]=d;b=c[46096]|0}a=0;while(1){if((a|0)>=(b|0))break;c[d+(a<<2)>>2]=0;a=a+1|0}c[46090]=Kr(0,0)|0;c[46091]=Kr(0,0)|0;c[c[46090]>>2]=0;d=c[46091]|0;b=c[46090]|0;c[b+4>>2]=d;c[d>>2]=b;c[(c[46091]|0)+4>>2]=0;d=c[46095]|0;c[d>>2]=c[46090];c[d+((c[46096]|0)+-1<<2)>>2]=c[46091];return}function Kr(b,d){b=b|0;d=d|0;var e=0;e=ht(184368)|0;c[e+8>>2]=b;a[e+16>>0]=d;c[e+32>>2]=0;c[e+20>>2]=0;c[e+12>>2]=0;return e|0}function Lr(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0;i=c[b+8>>2]|0;k=c[d+8>>2]|0;do if((!((i|0)==0|(k|0)==0)?(o=c[i+36>>2]|0,e=c[k+36>>2]|0,(o|0)!=(e|0)):0)?(j=+h[i>>3],f=+h[k+8>>3],g=+h[i+8>>3],l=+h[k>>3],m=f*j-l*g,!(m>-1.0e-10&m<1.0e-10)):0){p=+h[i+16>>3];q=+h[k+16>>3];n=(p*f-q*g)/m;j=(q*j-p*l)/m;f=+h[o+8>>3];g=+h[e+8>>3];do if(f>3]<+h[e>>3]:0){e=o;break}b=d}while(0);b=a[b+16>>0]|0;if(!(n>=+h[e>>3])){if(b<<24>>24==1){b=0;break}}else if(!(b<<24>>24)){b=0;break}b=Kt()|0;c[b+20>>2]=0;h[b>>3]=n;h[b+8>>3]=j}else b=0;while(0);return b|0}function Mr(b,d){b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0,l=0.0,m=0,n=0,o=0.0,p=0;n=c[b+8>>2]|0;k=c[n+36>>2]|0;l=+h[d>>3];o=+h[k>>3];m=l>o;p=a[b+16>>0]|0;if(m)if(!(p<<24>>24))b=1;else f=4;else if(p<<24>>24==1)b=0;else f=4;if((f|0)==4){e=+h[n>>3];a:do if(e==1.0){e=+h[d+8>>3];g=e-+h[k+8>>3];i=l-o;j=+h[n+8>>3];d=j<0.0;do if(m?j>=0.0:d){if(g>=j*i){b=1;break a}}else{b=j*e+l>+h[n+16>>3];if(d)if(b){b=0;break a}else break;else if(b)break;else{b=0;break a}}while(0);o=o-+h[c[n+32>>2]>>3];b=j*(i*i-g*g)>3]-l*e;j=+h[d+8>>3]-i;o=l-o;l=i-+h[k+8>>3];b=j*j>l*l+o*o}while(0);b=(b^p<<24>>24!=0)&1}return b|0}function Nr(a,b){a=a|0;b=b|0;c[b>>2]=a;a=a+4|0;c[b+4>>2]=c[a>>2];c[c[a>>2]>>2]=b;c[a>>2]=b;return}function Or(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[46096]|0;b=~~((+h[a>>3]-+h[22887])/+h[22889]*+(f|0));b=(b|0)>0?b:0;f=(b|0)<(f|0)?b:f+-1|0;b=Pr(f)|0;if(!b){d=1;while(1){b=Pr(f-d|0)|0;if(b|0)break;b=Pr(d+f|0)|0;if(b|0)break;d=d+1|0}c[46097]=(c[46097]|0)+d}c[46098]=(c[46098]|0)+1;e=c[46090]|0;d=c[46091]|0;a:do if((b|0)==(e|0))g=9;else{if((b|0)!=(d|0)?(Mr(b,a)|0)!=0:0){g=9;break}while(1){b=c[b>>2]|0;if((b|0)==(e|0))break a;if(Mr(b,a)|0){e=b;break}}}while(0);if((g|0)==9){while(1){b=c[b+4>>2]|0;if((b|0)==(d|0))break;if(!(Mr(b,a)|0))break;else g=9}e=c[b>>2]|0}if((f|0)>0?(f|0)<((c[46096]|0)+-1|0):0){b=(c[46095]|0)+(f<<2)|0;d=c[b>>2]|0;if(d|0){g=d+12|0;c[g>>2]=(c[g>>2]|0)+-1}c[b>>2]=e;g=e+12|0;c[g>>2]=(c[g>>2]|0)+1}return e|0}function Pr(a){a=a|0;var b=0,d=0;if((a|0)>-1&(c[46096]|0)>(a|0)?(d=(c[46095]|0)+(a<<2)|0,b=c[d>>2]|0,(b|0)!=0):0){if((c[b+8>>2]|0)==(-2|0)){c[d>>2]=0;a=b+12|0;d=(c[a>>2]|0)+-1|0;c[a>>2]=d;if(!d){it(b,184368);b=0}else b=0}}else b=0;return b|0}function Qr(a){a=a|0;var b=0,d=0;b=a+4|0;d=c[a>>2]|0;c[d+4>>2]=c[b>>2];c[c[b>>2]>>2]=d;c[a+8>>2]=-2;return}function Rr(a){a=a|0;return c[a+4>>2]|0}function Sr(a){a=a|0;return c[a>>2]|0}function Tr(b){b=b|0;var d=0;d=c[b+8>>2]|0;if(!d)b=184588;else b=(a[b+16>>0]|0)==0?d+32|0:d+36|0;return c[b>>2]|0}function Ur(b){b=b|0;var d=0;d=c[b+8>>2]|0;if(!d)b=184588;else b=(a[b+16>>0]|0)==0?d+36|0:d+32|0;return c[b>>2]|0}function Vr(){ft(184400,24);return}function Wr(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;i=j;g=(c[46099]|0)+((c[a+16>>2]|0)*96|0)+88|0;f=c[g>>2]|0;h[i+8>>3]=b;h[i+16>>3]=d;e=Xr(a,i,f)|0;do if(e|0){if((e|0)<0){i=ht(184400)|0;h[i+8>>3]=b;h[i+16>>3]=d;c[i>>2]=f;c[g>>2]=i;break}while(1){e=c[f>>2]|0;g=Xr(a,i,e)|0;if((g|0)>0)f=e;else break}if(g|0){i=ht(184400)|0;h[i+8>>3]=b;h[i+16>>3]=d;c[f>>2]=i;c[i>>2]=e}}while(0);l=j;return}function Xr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0;do if(c){e=+h[b+8>>3];i=+h[c+8>>3];d=+h[b+16>>3];f=+h[c+16>>3];if(!(e==i&d==f)){k=+h[a>>3];j=e-k;e=+h[a+8>>3];g=d-e;i=i-k;d=f-e;if(!(j>=0.0)){if(i>=0.0){b=1;break}e=d/i;d=g/j;if(de){b=1;break}b=j>i?-1:1;break}if(!(i<0.0)){b=i>0.0;if(!(j>0.0)){if(b){b=!(g<=0.0)?1:-1;break}if(g0.0?-1:1;break}e=d/i;d=g/j;if(de){b=1;break}b=j>2]|0;d=a+(d*20|0)+4|0;b=1;a=0;while(1){if((b|0)>=(f|0))break;g=a+((c[e+(c[(c[d>>2]|0)+(b<<2)>>2]<<2)>>2]|0)>0&1)|0;b=b+1|0;a=g}return a|0}function Zr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=a+(b*20|0)|0;b=a+(b*20|0)+4|0;a=1;while(1){if((a|0)>=(c[e>>2]|0))break;c[d+(c[(c[b>>2]|0)+(a<<2)>>2]<<2)>>2]=1;a=a+1|0}return}function _r(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=a+(b*20|0)|0;b=a+(b*20|0)+4|0;a=1;while(1){if((a|0)>=(c[e>>2]|0))break;c[d+(c[(c[b>>2]|0)+(a<<2)>>2]<<2)>>2]=0;a=a+1|0}return}function $r(a,b){a=a|0;b=b|0;if(!(c[a+8>>2]|0))a=bs(a,b)|0;else a=as(a,b)|0;return a|0}function as(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=b<<2;e=uH(O(f,b)|0)|0;f=uH(f)|0;d=0;while(1){if((d|0)>=(b|0)){d=0;break}c[f+(d<<2)>>2]=e+((O(d,b)|0)<<2);d=d+1|0}while(1){if((d|0)>=(b|0))break;br(d,a,b,c[f+(d<<2)>>2]|0);d=d+1|0}return f|0}function bs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;g=b<<2;e=uH(O(g,b)|0)|0;g=uH(g)|0;d=0;while(1){if((d|0)>=(b|0))break;c[g+(d<<2)>>2]=e+((O(d,b)|0)<<2);d=d+1|0}yq(f,b);d=0;while(1){if((d|0)>=(b|0))break;uq(d,a,b,c[g+(d<<2)>>2]|0,f);d=d+1|0}zq(f);l=h;return g|0}function cs(a,b){a=a|0;b=b|0;var d=0,e=0;e=c[a+8>>2]|0;ds(a,b);d=as(a,b)|0;es(a,b,e);return d|0}function ds(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=uH(b<<2)|0;d=0;e=0;while(1){if((d|0)>=(b|0))break;k=(c[a+(d*20|0)>>2]|0)+e|0;d=d+1|0;e=k}e=uH(e<<2)|0;d=0;while(1){if((d|0)>=(b|0))break;c[l+(d<<2)>>2]=0;d=d+1|0}f=0;while(1){if((f|0)>=(b|0))break;c[a+(f*20|0)+8>>2]=e;Zr(a,f,l);h=a+(f*20|0)|0;i=c[h>>2]|0;j=a+(f*20|0)+4|0;k=i+-2|0;d=1;while(1){if((d|0)>=(i|0))break;m=c[(c[j>>2]|0)+(d<<2)>>2]|0;n=c[a+(m*20|0)>>2]|0;g[e+(d<<2)>>2]=+(k+n-((Yr(a,0,m,l)|0)<<1)|0);d=d+1|0}_r(a,f,l);e=e+(c[h>>2]<<2)|0;f=f+1|0}C_(l);return}function es(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+8|0;C_(c[e>>2]|0);c[e>>2]=0;a:do if(d|0){e=0;while(1){if((e|0)>=(b|0))break a;c[a+(e*20|0)+8>>2]=d;f=d+(c[a+(e*20|0)>>2]<<2)|0;e=e+1|0;d=f}}while(0);return}function fs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0;f=0;g=0.0;while(1){if((f|0)>=(b|0))break;j=c[a+(f<<2)>>2]|0;i=+h[j+(d<<3)>>3]-+h[j+(e<<3)>>3];f=f+1|0;g=i*i+g}return +(+C(+g))}function gs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((e|0)>(d|0)){c[46103]=a;Z0(b+(d<<2)|0,1-d+e|0,4,76)}return}function hs(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[46103]|0;e=+g[f+(c[a>>2]<<2)>>2];d=+g[f+(c[b>>2]<<2)>>2];return (ed&1)|0}function is(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;if((d|0)<(e|0)){js(a,b,d,e,f);g=c[f>>2]|0;f=g+-1|0;is(a,b,d,f);g=g+1|0;is(a,b,g,e);if(!(ks(a,b,d,f)|0))is(a,b,d,f);if(!(ks(a,b,g,e)|0))is(a,b,g,e)}l=h;return}function js(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0.0,m=0,n=0;g=f2()|0;g=b+(((((f2()|0)<<16|g)>>>0)%((1-d+e|0)>>>0)|0)+d<<2)|0;j=c[g>>2]|0;k=b+(d<<2)|0;c[g>>2]=c[k>>2];c[k>>2]=j;l=+h[a+(j<<3)>>3];g=d+1|0;d=e;a:while(1){if((g|0)>=(d|0))break;while(1){if((g|0)>=(d|0))break;if(!(+h[a+(c[b+(g<<2)>>2]<<3)>>3]<=l))break;g=g+1|0}while(1){if((g|0)>=(d|0))continue a;e=b+(d<<2)|0;i=c[e>>2]|0;if(!(+h[a+(i<<3)>>3]>l))break;d=d+-1|0}n=b+(g<<2)|0;m=c[n>>2]|0;c[n>>2]=i;c[e>>2]=m;g=g+1|0;d=d+-1|0}n=g+((+h[a+(c[b+(g<<2)>>2]<<3)>>3]>l)<<31>>31)|0;c[f>>2]=n;n=b+(n<<2)|0;c[k>>2]=c[n>>2];c[n>>2]=j;return}function ks(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=1;while(1){f=d+1|0;if(!((d|0)<(e|0)&(g|0)!=0))break;g=+h[a+(c[b+(d<<2)>>2]<<3)>>3]>+h[a+(c[b+(f<<2)>>2]<<3)>>3]?0:g;d=f}return g|0}function ls(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,A=0.0;x=l;l=l+16|0;v=4;w=B_(40)|0;c[w>>2]=0;t=x;o=0;u=$(23,b*40|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=D3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)!=1){d=0;r=0;while(1){if((d|0)>=(b|0))break;s=(c[(c[a+(d<<2)>>2]|0)+4>>2]|0)+r|0;d=d+1|0;r=s}o=0;s=$(23,r*24|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=D3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)!=1){d=0;m=0;while(1){if((m|0)>=(b|0))break;n=u+(m*40|0)|0;c[n>>2]=s+(d*24|0);q=a+(m<<2)|0;f=0;g=1797693134862315708145274.0e284;i=-1797693134862315708145274.0e284;j=-1797693134862315708145274.0e284;k=1797693134862315708145274.0e284;while(1){e=c[q>>2]|0;if((f|0)>=(c[e+4>>2]|0))break;e=c[e>>2]|0;A=+h[e+(f<<4)>>3];y=+h[e+(f<<4)+8>>3];h[s+(d*24|0)>>3]=A;h[s+(d*24|0)+8>>3]=y;c[s+(d*24|0)+16>>2]=n;c[s+(d*24|0)+20>>2]=0;f=f+1|0;d=d+1|0;g=gA?i:A;j=j>y?j:y;k=k>2]=s+((d+-1|0)*24|0);h[u+(m*40|0)+8>>3]=g;h[u+(m*40|0)+16>>3]=k;h[u+(m*40|0)+24>>3]=i;h[u+(m*40|0)+32>>3]=j;m=m+1|0}c[t>>2]=r;c[t+4>>2]=b;w=C3(184416,1,w|0,v|0)|0;v=z;o=0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=D3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;q=s;m=s;n=u}else{d=0;q=s;m=s;n=u}}else{d=z;q=0;m=s;n=u}}else{d=z;q=0;m=0;n=0}while(1){if(d|0){o=0;ia(103,u|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=D3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}o=0;ia(103,m|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=D3(c[d>>2]|0,w|0,v|0)|0;if(!e)bb(d|0,p|0);z=p}else e=-1;if((e|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}else{e=17;break}}o=0;d=aa(77,q|0,t|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,v|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}if(!d){o=0;d=ca(24,a|0,b|0,n|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,v|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}}o=0;ia(103,u|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,v|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s;continue}o=0;ia(103,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,v|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=n;r=m;s=q;d=z;n=f;m=r;q=s}else{e=24;break}}if((e|0)==17)d=0;else if((e|0)==24)d=(d|0)==0&1;C_(w|0);l=x;return d|0}function ms(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;q=v;o=v+8|0;p=v+4|0;c[b+8>>2]=0;u=uH(c[b>>2]<<2)|0;f=c[b>>2]|0;e=0;while(1){if((e|0)>=(f|0))break;c[u+(e<<2)>>2]=a+(e*24|0);e=e+1|0}Z0(u,f,4,78);m=0;g=0;f=0;h=0;a:while(1){if((m|0)>=(c[b>>2]|0)){s=0;d=g;t=h;break}n=u+(m<<2)|0;e=c[n>>2]|0;c[o>>2]=e;a=c[e+16>>2]|0;if((c[a>>2]|0)==(e|0))e=c[a+4>>2]|0;else e=e+-24|0;c[p>>2]=e;k=0;a=g;j=h;while(1){if((k|0)>=2)break;switch(os(o,p)|0){case -1:{g=0;h=a;while(1){if((g|0)>=(j|0))break;i=ps(c[h>>2]|0,e)|0;if(i|0){s=i;d=a;t=j;break a}g=g+1|0;h=c[h+4>>2]|0}g=uH(12)|0;if(!j){f=0;a=g}else c[f+4>>2]=g;c[g+8>>2]=f;c[g>>2]=e;c[g+4>>2]=0;c[e+20>>2]=g;h=j+1|0;break}case 1:{e=e+20|0;g=c[e>>2]|0;if(!g){r=19;break a}do if((j|0)!=1){if((g|0)==(a|0)){a=c[a+4>>2]|0;c[a+8>>2]=0;break}if((g|0)==(f|0)){f=c[f+8>>2]|0;c[f+4>>2]=0;break}else{i=g+4|0;h=c[g+8>>2]|0;c[h+4>>2]=c[i>>2];c[(c[i>>2]|0)+8>>2]=h;break}}else{a=0;f=0}while(0);C_(g);c[e>>2]=0;g=f;h=j+-1|0;break}default:{g=f;h=j}}e=c[n>>2]|0;f=c[e+16>>2]|0;if((e|0)==(c[f+4>>2]|0))f=c[f>>2]|0;else f=e+24|0;c[p>>2]=f;k=k+1|0;f=g;j=h}m=m+1|0;g=a;h=j}if((r|0)==19){Ow(1,92219,q)|0;bb(184416,1)}e=0;while(1){if((e|0)>=(t|0))break;r=c[d+4>>2]|0;C_(d);e=e+1|0;d=r}C_(u);l=v;return s|0}function ns(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0.0;D=l;l=l+48|0;o=D+24|0;n=D+16|0;u=D;e=0;a:while(1){if((e|0)>=(b|0)){e=0;break}z=c[a+(e<<2)>>2]|0;A=c[z>>2]|0;c[u>>2]=c[A>>2];c[u+4>>2]=c[A+4>>2];c[u+8>>2]=c[A+8>>2];c[u+12>>2]=c[A+12>>2];A=e+1|0;B=d+(e*40|0)+8|0;p=d+(e*40|0)+24|0;q=d+(e*40|0)+32|0;g=d+(e*40|0)+16|0;e=A;while(1){if((e|0)>=(b|0)){e=A;continue a}i=c[a+(e<<2)>>2]|0;j=+h[B>>3];k=+h[d+(e*40|0)+24>>3];m=!(j<=k);f=+h[d+(e*40|0)+8>>3];if((((!(m|!(j>=f))?(r=+h[g>>3],s=+h[d+(e*40|0)+32>>3],r<=s):0)?(t=+h[d+(e*40|0)+16>>3],r>=t):0)?(E=+h[p>>3],!(!(E<=k)|!(E>=f))):0)?(E=+h[q>>3],!(!(E<=s)|!(E>=t))):0){c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[o>>2]=c[u>>2];c[o+4>>2]=c[u+4>>2];c[o+8>>2]=c[u+8>>2];c[o+12>>2]=c[u+12>>2];if(vU(n,o)|0){e=1;break a}}else C=11;if((((((C|0)==11?(C=0,v=+h[p>>3],!(!(f<=v)|!(f>=j))):0)?(w=+h[d+(e*40|0)+16>>3],x=+h[q>>3],w<=x):0)?(y=+h[g>>3],!(!(w>=y)|(!(k<=v)|m))):0)?(E=+h[d+(e*40|0)+32>>3],!(!(E<=x)|!(E>=y))):0)?(m=c[i>>2]|0,c[n>>2]=c[z>>2],c[n+4>>2]=c[z+4>>2],c[o>>2]=c[m>>2],c[o+4>>2]=c[m+4>>2],c[o+8>>2]=c[m+8>>2],c[o+12>>2]=c[m+12>>2],vU(n,o)|0):0){e=1;break a}e=e+1|0}}l=D;return e|0}function os(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=c[a>>2]|0;a=c[b>>2]|0;d=+h[e>>3]-+h[a>>3];if(!(d!=0.0)){d=+h[e+8>>3]-+h[a+8>>3];if(d==0.0)a=0;else a=d>0.0?1:-1}else a=d>0.0?1:-1;return a|0}function ps(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+64|0;g=m+32|0;i=m+24|0;j=m+16|0;k=m;f=m+48|0;qs(a,b,f);d=f+8|0;e=c[d>>2]|0;do if((e|0)>0)d=0;else{if((e|0)<0){qs(b,a,f);d=c[d>>2]|0;if((d|0)>0){d=0;break}if((d|0)<0)d=3;else{d=c[f>>2]|0;d=rs(b,a,(d|0)>-1?d:0-d|0)|0}if(!(ss(a,b,i,j,d)|0)){d=0;break}}else{d=c[f>>2]|0;if((d|0)==(c[f+4>>2]|0)){d=rs(a,b,0)|0;d=(rs(a,b,(d|0)<=(rs(a,b,1)|0)&1)|0)<<1}else d=rs(a,b,(d|0)>-1?d:0-d|0)|0;if(!(ss(a,b,i,j,d)|0)){d=0;break}}h[k>>3]=+h[i>>3];h[k+8>>3]=+h[j>>3];c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];d=ts(a,b,g)|0}while(0);l=m;return d|0}function qs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0;i=+h[a>>3];j=+h[a+8>>3];e=c[a+16>>2]|0;if((c[e+4>>2]|0)==(a|0)){a=c[e>>2]|0;e=a}else{e=a+24|0;a=a+24|0}g=+h[e>>3]-i;f=+h[a+8>>3]-j;e=c[b+16>>2]|0;if((c[e+4>>2]|0)==(b|0)){a=c[e>>2]|0;e=a}else{e=b+24|0;a=b+24|0}k=+h[e>>3]-i;l=+h[a+8>>3]-j;j=(+h[b+8>>3]-j)*g-(+h[b>>3]-i)*f;b=j==0.0?0:j>0.0?1:-1;c[d>>2]=b;j=l*g-k*f;a=j==0.0?0:j>0.0?1:-1;c[d+4>>2]=a;c[d+8>>2]=O(a,b)|0;return}function rs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0;k=+h[a>>3];l=+h[a+8>>3];f=c[a+16>>2]|0;if((c[f+4>>2]|0)==(a|0))a=c[f>>2]|0;else a=a+24|0;j=+h[a>>3];i=+h[a+8>>3];do if(d){a=c[b+16>>2]|0;if((c[a+4>>2]|0)==(b|0)){b=c[a>>2]|0;break}else{b=b+24|0;break}}while(0);g=+h[b>>3];e=+h[b+8>>3];if(k==j)if(k==g)b=(vs(l,e,i)|0)!=-1&1;else b=0;else b=vs(k,g,j)|0;return b|0}function ss(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0;a:do if((f|0)<1)g=0;else{n=+h[a>>3];p=+h[a+8>>3];g=c[a+16>>2]|0;if((c[g+4>>2]|0)==(a|0))g=c[g>>2]|0;else g=a+24|0;l=+h[g>>3];j=+h[g+8>>3];m=+h[b>>3];o=+h[b+8>>3];g=c[b+16>>2]|0;if((c[g+4>>2]|0)==(b|0))g=c[g>>2]|0;else g=b+24|0;k=+h[g>>3];i=+h[g+8>>3];b:do switch(f|0){case 3:{if(n==l){h[d>>3]=n;i=(o-i)/(m-k)*(n-k)+i;break b}if(m==k){h[d>>3]=m;i=(p-j)/(n-l)*(m-l)+j;break b}else{k=(o-i)/(m-k);l=(p-j)/(n-l);o=o-k*m;p=p-l*n;i=k-l;h[d>>3]=(p-o)/i;i=(k*p-o*l)/i;break b}}case 2:{if((rs(a,b,0)|0)==-1)if((rs(b,a,1)|0)==-1){f=(rs(b,a,0)|0)==-1;l=f?l:n;k=m;j=f?j:p;i=o}else{l=k;k=m;j=i;i=o}else if((rs(a,b,1)|0)!=-1)if((rs(b,a,0)|0)==-1){k=n;i=p}else{g=0;break a}else{l=m;j=o}h[d>>3]=(k+l)*.5;i=(i+j)*.5;break}case 1:if((o-p)*(n-l)==(m-n)*(p-j)){h[d>>3]=m;i=o;break b}else{h[d>>3]=k;break b}default:{g=1;break a}}while(0);h[e>>3]=i;g=1}while(0);return g|0}function ts(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0;s=l;l=l+16|0;q=s;o=+h[a>>3];p=+h[a+8>>3];e=c[a+16>>2]|0;if((c[e+4>>2]|0)==(a|0))e=c[e>>2]|0;else e=a+24|0;m=+h[e>>3];j=+h[e+8>>3];k=+h[b>>3];n=+h[b+8>>3];e=c[b+16>>2]|0;if((c[e+4>>2]|0)==(b|0))e=c[e>>2]|0;else e=b+24|0;i=+h[e>>3];g=+h[e+8>>3];a:do if(!(o!=m&k!=i)){do if(o==m){f=+h[d>>3];if(o==f?p==+h[d+8>>3]:0)break;if(!(m==f)){r=18;break a}if(!(j==+h[d+8>>3])){r=18;break a}}while(0);if(k==i){f=+h[d>>3];if(k==f?n==+h[d+8>>3]:0){e=0;break}if(i==f?g==+h[d+8>>3]:0)e=0;else r=18}else e=0}else r=18;while(0);if((r|0)==18)if(0>1){e=c[15686]|0;p=+h[d+8>>3];h[q>>3]=+h[d>>3];h[q+8>>3]=p;f1(e,92248,q)|0;us(1,a);us(2,b);e=1}else e=1;l=s;return e|0}function us(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0.0;k=l;l=l+48|0;j=k;f=c[15686]|0;g=+h[b>>3];i=+h[b+8>>3];d=c[b+16>>2]|0;if((c[d+4>>2]|0)==(b|0)){d=c[d>>2]|0;e=d}else{e=b+24|0;d=b+24|0}n=+h[e>>3];m=+h[d+8>>3];c[j>>2]=a;h[j+8>>3]=g;h[j+16>>3]=i;h[j+24>>3]=n;h[j+32>>3]=m;f1(f,92276,j)|0;l=k;return}function vs(a,b,c){a=+a;b=+b;c=+c;return (a==b|b==c?0:(a>3]=0.0;e=e+1|0}h[f+(a<<3)>>3]=1.0;lv(c[b+(a<<2)>>2]|0,f,d);a=a+1|0}C_(f);f=0;while(1){if((f|0)>=(d|0)){a=1;break a}e=b+(f<<2)|0;a=0;while(1){if((a|0)==(f|0))break;j=(c[e>>2]|0)+(a<<3)|0;i=+h[j>>3];g=(c[b+(a<<2)>>2]|0)+(f<<3)|0;h[j>>3]=+h[g>>3];h[g>>3]=i;a=a+1|0}f=f+1|0}}while(0);return a|0}function xs(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=b<<3;p=uH(q)|0;q=uH(q)|0;r=b*30|0;n=(d|0)<(b|0)?d:b;o=b+-1|0;m=(g|0)==0;d=0;i=0;a:while(1){if((i|0)>=(n|0))break;k=c[e+(i<<2)>>2]|0;do{b:do if(m)d=0;else{d=0;while(1){if((d|0)==(b|0)){d=0;break b}h[k+(d<<3)>>3]=+((f2()|0)%100|0|0);d=d+1|0}}while(0);while(1){if((d|0)==(i|0))break;g=c[e+(d<<2)>>2]|0;zs(k,0,o,-+ys(g,0,o,k),g);d=d+1|0}j=+As(k,0,o)}while(j<1.0e-10);Bs(k,0,o,1.0/j,k);d=0;do{Cs(q,0,o,k);Ds(a,b,b,k,p);Cs(k,0,o,p);g=0;while(1){if((g|0)==(i|0))break;s=c[e+(g<<2)>>2]|0;zs(k,0,o,-+ys(s,0,o,k),s);g=g+1|0}s=d;d=d+1|0;j=+As(k,0,o);if(!((s|0)<(r|0)&!(j<1.0e-10)))break a;Bs(k,0,o,1.0/j,k);l=+ys(k,0,o,q)}while(+B(+l)<.999);h[f+(i<<3)>>3]=l*j;i=i+1|0}while(1){if((i|0)>=(n|0))break;k=c[e+(i<<2)>>2]|0;g=0;while(1){if((g|0)>=(b|0)){g=0;break}h[k+(g<<3)>>3]=+((f2()|0)%100|0|0);g=g+1|0}while(1){if((g|0)>=(i|0))break;s=c[e+(g<<2)>>2]|0;zs(k,0,o,-+ys(s,0,o,k),s);g=g+1|0}Bs(k,0,o,1.0/+As(k,0,o),k);h[f+(i<<3)>>3]=0.0;i=i+1|0}m=n+-1|0;i=0;while(1){if((i|0)>=(m|0))break;a=f+(i<<3)|0;b=i+1|0;j=+h[a>>3];g=i;k=b;while(1){if((k|0)>=(n|0))break;l=+h[f+(k<<3)>>3];s=j>2]|0);s=e+(g<<2)|0;Cs(c[k>>2]|0,0,o,c[s>>2]|0);Cs(c[s>>2]|0,0,o,p);h[f+(g<<3)>>3]=+h[a>>3];h[a>>3]=j;i=b}C_(p);C_(q);return (d|0)<=(r|0)|0}function ys(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0;f=0.0;e=1-b+c|0;d=d+(b<<3)|0;c=a+(b<<3)|0;while(1){if(!e)break;f=+h[d>>3]*+h[c>>3]+f;e=e+-1|0;d=d+8|0;c=c+8|0}return +f}function zs(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0;f=1-b+c|0;e=e+(b<<3)|0;c=a+(b<<3)|0;while(1){if(!f)break;h[c>>3]=+h[c>>3]+ +h[e>>3]*d;f=f+-1|0;e=e+8|0;c=c+8|0}return}function As(a,b,c){a=a|0;b=b|0;c=c|0;return +(+C(+(+ys(a,b,c,a))))}function Bs(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0;f=1-b+c|0;e=e+(b<<3)|0;c=a+(b<<3)|0;while(1){if(!f)break;h[c>>3]=+h[e>>3]*d;f=f+-1|0;e=e+8|0;c=c+8|0}return}function Cs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=1-b+c|0;d=d+(b<<3)|0;c=a+(b<<3)|0;while(1){if(!e)break;h[c>>3]=+h[d>>3];e=e+-1|0;d=d+8|0;c=c+8|0}return}function Ds(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k=0;j=0;while(1){if((j|0)>=(b|0))break;k=a+(j<<2)|0;g=0.0;i=0;while(1){if((i|0)>=(d|0))break;g=+h[e+(i<<3)>>3]*+h[(c[k>>2]|0)+(i<<3)>>3]+g;i=i+1|0}h[f+(j<<3)>>3]=g;j=j+1|0}return}function Es(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,l=0.0,m=0,n=0,o=0,p=0.0;k=c[i>>2]|0;if(!k){o=d<<2;j=B_(O(o,f)|0)|0;o=B_(o)|0}else{o=d<<2;j=E_(c[k>>2]|0,O(o,f)|0)|0;o=E_(k,o)|0}c[i>>2]=o;k=0;while(1){if((k|0)>=(d|0)){i=0;break}c[o+(k<<2)>>2]=j;k=k+1|0;j=j+(f<<2)|0}while(1){if((i|0)>=(d|0))break;m=a+(i<<2)|0;n=o+(i<<2)|0;k=0;while(1){if((k|0)<(f|0)){j=0;l=0.0}else break;while(1){if((j|0)>=(e|0))break;p=+h[(c[m>>2]|0)+(j<<3)>>3]*+g[(c[b+(j<<2)>>2]|0)+(k<<2)>>2]+l;j=j+1|0;l=p}g[(c[n>>2]|0)+(k<<2)>>2]=l;k=k+1|0}i=i+1|0}return}function Fs(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,l=0.0,m=0,n=0,o=0;k=c[i>>2]|0;if(!k){j=B_(O(d<<3,f)|0)|0;o=B_(d<<2)|0}else{j=E_(c[k>>2]|0,O(d<<3,f)|0)|0;o=E_(k,d<<2)|0}c[i>>2]=o;k=0;while(1){if((k|0)>=(d|0)){i=0;break}c[o+(k<<2)>>2]=j;k=k+1|0;j=j+(f<<3)|0}while(1){if((i|0)>=(d|0))break;m=a+(i<<2)|0;n=o+(i<<2)|0;k=0;while(1){if((k|0)<(f|0)){l=0.0;j=0}else break;while(1){if((j|0)>=(e|0))break;l=+h[(c[m>>2]|0)+(j<<3)>>3]*+g[(c[b+(j<<2)>>2]|0)+(k<<2)>>2]+l;j=j+1|0}h[(c[n>>2]|0)+(k<<3)>>3]=l;k=k+1|0}i=i+1|0}return}function Gs(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0;j=c[f>>2]|0;if(!j){i=B_(O(d*20|0,e)|0)|0;q=B_(d<<2)|0}else{i=E_(c[j>>2]|0,O(d*20|0,e)|0)|0;q=E_(j,d<<2)|0}c[f>>2]=q;j=0;while(1){if((j|0)>=(d|0)){f=0;break}c[q+(j<<2)>>2]=i;j=j+1|0;i=i+(e<<2)|0}while(1){if((f|0)>=(d|0))break;l=c[a+(f*20|0)+4>>2]|0;m=c[a+(f*20|0)+8>>2]|0;n=c[a+(f*20|0)>>2]|0;o=q+(f<<2)|0;i=0;while(1){if((i|0)>=(e|0))break;p=b+(i<<2)|0;k=0.0;j=0;while(1){if((j|0)>=(n|0))break;k=+h[(c[p>>2]|0)+(c[l+(j<<2)>>2]<<3)>>3]*+g[m+(j<<2)>>2]+k;j=j+1|0}g[(c[o>>2]|0)+(i<<2)>>2]=k;i=i+1|0}f=f+1|0}return}function Hs(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0;c=0.0;d=b;e=a;while(1){if(!e)break;c=+h[d>>3]+c;d=d+8|0;e=e+-1|0}c=c/+(a|0);while(1){if(!a)break;h[b>>3]=+h[b>>3]-c;b=b+8|0;a=a+-1|0}return}function Is(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=(a|0))break;h[b+(c<<3)>>3]=+((f2()|0)%500|0|0);c=c+1|0}Hs(a,b);return}function Js(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,l=0,m=0;j=0;while(1){if((j|0)>=(b|0))break;k=c[a+(j*20|0)>>2]|0;l=a+(j*20|0)+8|0;m=a+(j*20|0)+4|0;f=0.0;i=0;while(1){if((i|0)>=(k|0))break;f=+h[d+(c[(c[m>>2]|0)+(i<<2)>>2]<<3)>>3]*+g[(c[l>>2]|0)+(i<<2)>>2]+f;i=i+1|0}h[e+(j<<3)>>3]=f;j=j+1|0}return}function Ks(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0;j=0;while(1){if((j|0)>=(b|0))break;k=a+(j<<2)|0;f=0.0;i=0;while(1){if((i|0)==(b|0))break;f=+h[d+(i<<3)>>3]*+g[(c[k>>2]|0)+(i<<2)>>2]+f;i=i+1|0}h[e+(j<<3)>>3]=f;j=j+1|0}return}function Ls(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;h[d+(e<<3)>>3]=+h[b+(e<<3)>>3]-+h[c+(e<<3)>>3];e=e+1|0}return}function Ms(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;h[d+(e<<3)>>3]=+h[c+(e<<3)>>3]+ +h[b+(e<<3)>>3];e=e+1|0}return}function Ns(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;h[d+(e<<3)>>3]=+h[b+(e<<3)>>3]*c;e=e+1|0}return}function Os(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=0;while(1){if((d|0)>=(a|0))break;h[c+(d<<3)>>3]=+h[b+(d<<3)>>3];d=d+1|0}return}function Ps(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0;d=0.0;e=0;while(1){if((e|0)>=(a|0))break;d=+h[c+(e<<3)>>3]*+h[b+(e<<3)>>3]+d;e=e+1|0}return +d}function Qs(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=0;d=-1.e+50;while(1){if((c|0)>=(a|0))break;e=+B(+(+h[b+(c<<3)>>3]));c=c+1|0;d=e>d?e:d}return +d}function Rs(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0;j=0;while(1){if((j|0)<(b|0)){g=0.0;i=0}else break;while(1){if((i|0)>=(d|0))break;g=+h[e+(i<<3)>>3]*+h[(c[a+(i<<2)>>2]|0)+(j<<3)>>3]+g;i=i+1|0}h[f+(j<<3)>>3]=g;j=j+1|0}return}function Ss(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0;c=0.0;d=b;e=a;while(1){if(!e)break;c=+g[d>>2]+c;d=d+4|0;e=e+-1|0}c=c/+(a|0);while(1){if(!a)break;g[b>>2]=+g[b>>2]-c;b=b+4|0;a=a+-1|0}return}function Ts(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0,l=0.0,m=0,n=0.0,o=0,p=0.0;e=0;while(1){if((e|0)>=(b|0)){h=0;j=0;m=b;break}g[d+(e<<2)>>2]=0.0;e=e+1|0}while(1){if((j|0)>=(b|0))break;l=+g[c+(j<<2)>>2];k=j+1|0;f=+g[a+(h<<2)>>2]*l;i=k;e=h;while(1){e=e+1|0;if((i|0)==(b|0))break;p=+g[a+(e<<2)>>2];n=+g[c+(i<<2)>>2]*p+f;o=d+(i<<2)|0;g[o>>2]=+g[o>>2]+p*l;f=n;i=i+1|0}o=d+(j<<2)|0;g[o>>2]=+g[o>>2]+f;h=h+m|0;j=k;m=m+-1|0}return}function Us(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;g[d+(e<<2)>>2]=+g[b+(e<<2)>>2]-+g[c+(e<<2)>>2];e=e+1|0}return}function Vs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;g[d+(e<<2)>>2]=+g[c+(e<<2)>>2]+ +g[b+(e<<2)>>2];e=e+1|0}return}function Ws(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0,f=0;e=0;while(1){if((e|0)>=(a|0))break;f=b+(e<<2)|0;g[f>>2]=+g[d+(e<<2)>>2]*c+ +g[f>>2];e=e+1|0}return}function Xs(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;g[d+(e<<2)>>2]=+g[b+(e<<2)>>2]*c;e=e+1|0}return}function Ys(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0))break;c[d+(e<<2)>>2]=c[b+(e<<2)>>2];e=e+1|0}return}function Zs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0;d=0.0;e=0;while(1){if((e|0)>=(a|0))break;d=d+ +g[c+(e<<2)>>2]*+g[b+(e<<2)>>2];e=e+1|0}return +d}function _s(a,b,c){a=a|0;b=+b;c=c|0;var d=0;d=0;while(1){if((d|0)>=(a|0))break;h[c+(d<<3)>>3]=b;d=d+1|0}return}function $s(a,b,c){a=a|0;b=+b;c=c|0;var d=0;d=0;while(1){if((d|0)>=(a|0))break;g[c+(d<<2)>>2]=b;d=d+1|0}return}function at(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0;c=-1000000015047466219876688.0e6;d=0;while(1){if((d|0)>=(a|0))break;e=+B(+(+g[b+(d<<2)>>2]));c=e>c?e:c;d=d+1|0}return +c}function bt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=0;while(1){if((c|0)>=(a|0))break;d=b+(c<<2)|0;e=+g[d>>2];g[d>>2]=e*e;c=c+1|0}return}function ct(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=0;while(1){if((c|0)>=(a|0))break;d=b+(c<<2)|0;e=+g[d>>2];if(e!=0.0)g[d>>2]=1.0/e;c=c+1|0}return}function dt(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0;d=0;while(1){if((d|0)>=(a|0))break;e=+g[b+(d<<2)>>2];if(e>=0.0)g[c+(d<<2)>>2]=+C(+e);d=d+1|0}return}function et(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=0;while(1){if((c|0)>=(a|0))break;d=b+(c<<2)|0;e=+g[d>>2];if(e>0.0)g[d>>2]=1.0/+C(+e);c=c+1|0}return}function ft(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=0;if(b&3)if(!(4%(b>>>0)|0))b=4;else b=O(4/((gt(b)|0)>>>0)|0,b)|0;c[a+8>>2]=b;a=a+4|0;b=c[a>>2]|0;a:do if(b|0)while(1){if(!b)break a;d=c[b>>2]|0;C_(c[b+4>>2]|0);C_(b);b=d}while(0);c[a>>2]=0;return}function gt(a){a=a|0;var b=0,c=0;c=4;a:while(1){b=c;while(1){if((b|0)==(a|0))break a;if((b|0)<=(a|0))break;b=b-a|0}c=b;a=a-b|0}return a|0}function ht(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;if(!b){d=c[a+8>>2]|0;e=uH(8)|0;f=uH(O(c[46085]|0,d)|0)|0;c[e+4>>2]=f;b=0;while(1){if((b|0)>=(c[46085]|0))break;it(f+(O(b,d)|0)|0,a);b=b+1|0}b=a+4|0;c[e>>2]=c[b>>2];c[b>>2]=e;b=c[a>>2]|0}c[a>>2]=c[b>>2];return b|0}function it(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];c[b>>2]=a;return}function jt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0;m=tH(b<<3)|0;l=a+8|0;f=c[l>>2]|0;kt(a,b,m);Is(b,d);h=0;i=0;while(1){if((i|0)>=(b|0))break;h=(c[a+(i*20|0)>>2]|0)+h|0;i=i+1|0}h=uH(h<<2)|0;j=0;while(1){if((j|0)>=(b|0))break;c[a+(j*20|0)+8>>2]=h;k=c[a+(j*20|0)>>2]|0;g[h>>2]=+(1-k|0);i=1;while(1){if((i|0)>=(k|0))break;g[h+(i<<2)>>2]=1.0;i=i+1|0}h=h+(k<<2)|0;j=j+1|0}i=Cq(a,d,m,b,.001,e)|0;C_(c[l>>2]|0);h=0;while(1){if((h|0)>=(b|0))break;c[a+(h*20|0)+8>>2]=f;f=f+(c[a+(h*20|0)>>2]<<2)|0;h=h+1|0}C_(m);return i>>>31|0}function kt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,i=0,j=0,k=0,l=0,m=0;k=a+16|0;i=0;while(1){if((i|0)>=(b|0))break;if(c[k>>2]|0){l=c[a+(i*20|0)>>2]|0;m=a+(i*20|0)+8|0;j=a+(i*20|0)+16|0;e=0.0;f=1;while(1){if((f|0)>=(l|0))break;e=e+ +g[(c[j>>2]|0)+(f<<2)>>2]*+g[(c[m>>2]|0)+(f<<2)>>2];f=f+1|0}h[d+(i<<3)>>3]=e}i=i+1|0}return}function lt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=uH(f<<2)|0;i=b<<3;g=0;while(1){if((g|0)>=(f|0))break;c[r+(g<<2)>>2]=uH(i)|0;g=g+1|0}p=uH(f<<3)|0;q=uH(b<<2)|0;g=uH(O(i,b)|0)|0;i=0;while(1){if((i|0)>=(b|0))break;c[q+(i<<2)>>2]=g;g=g+(b<<3)|0;i=i+1|0}k=0;o=1;while(1){if((k|0)>=(b|0))break;l=a+(k<<2)|0;m=q+(k<<2)|0;i=0;while(1){if((i|0)==(o|0))break;n=a+(i<<2)|0;g=0;j=0.0;while(1){if((g|0)>=(d|0))break;s=j+ +(O(c[(c[n>>2]|0)+(g<<2)>>2]|0,c[(c[l>>2]|0)+(g<<2)>>2]|0)|0);g=g+1|0;j=s}h[(c[q+(i<<2)>>2]|0)+(k<<3)>>3]=j;h[(c[m>>2]|0)+(i<<3)>>3]=j;i=i+1|0}k=k+1|0;o=o+1|0}xs(q,b,f,r,p,1)|0;i=0;while(1){if((i|0)>=(f|0)){g=0;break}l=r+(i<<2)|0;m=e+(i<<2)|0;k=0;while(1){if((k|0)<(d|0)){g=0;j=0.0}else break;while(1){if((g|0)>=(b|0))break;s=+h[(c[l>>2]|0)+(g<<3)>>3]*+(c[(c[a+(g<<2)>>2]|0)+(k<<2)>>2]|0)+j;g=g+1|0;j=s}h[(c[m>>2]|0)+(k<<3)>>3]=j;k=k+1|0}i=i+1|0}while(1){if((g|0)>=(f|0))break;C_(c[r+(g<<2)>>2]|0);g=g+1|0}C_(r);C_(p);C_(c[q>>2]|0);C_(q);return}function mt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=l;l=l+32|0;g=f+16|0;j=f+20|0;i=f+12|0;h=f+8|0;c[g>>2]=e;c[i>>2]=0;c[h>>2]=0;_u(c[a>>2]|0,d,d<<2,j);Gs(c[j>>2]|0,a,d,b,i);Fs(a,c[i>>2]|0,b,d,b,h);C_(c[c[i>>2]>>2]|0);C_(c[i>>2]|0);e=(xs(c[h>>2]|0,b,1,g,f,1)|0)&255;l=f;return e|0}function nt(){c[46143]=0;C_(c[46144]|0);C_(c[46145]|0);C_(c[46146]|0);c[46144]=0;c[46145]=0;c[46146]=0;return}function ot(a){a=a|0;C_(c[a+36>>2]|0);return}function pt(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0;r=l;l=l+80|0;o=r+64|0;q=r+68|0;i=r+48|0;j=r+32|0;k=r+16|0;m=r;n=d+16|0;g=c[n>>2]|0;a:do if(!(c[g+212>>2]|0))switch(GJ(d)|0){case 1:{g=c[n>>2]|0;j=c[g+12>>2]|0;k=c[j+8>>2]|0;c[q>>2]=k;g=c[c[g+8>>2]>>2]|0;switch(a[g>>0]|0){case 98:{if(!(a$(g,105210)|0))p=11;else p=8;break}case 112:{if((a$(g,102695)|0)==0?(qt(c[j+44>>2]|0,k)|0)!=0:0)p=11;else p=8;break}default:p=8}do if((p|0)==8)if((k|0)<3){c[b+40>>2]=(c[j>>2]|0)==0?0:2;p=17;break}else{g=b+40|0;c[g>>2]=0;break}else if((p|0)==11){g=b+40|0;c[g>>2]=1;if((k|0)<=2)p=17}while(0);if((p|0)==17){i=rt(d,q,e,f)|0;p=21;break a}i=uH(k<<4)|0;j=j+44|0;if((c[g>>2]|0)==1){p=c[j>>2]|0;s=e;h[i>>3]=+h[p>>3]*.013888888888888888+s;e=f;h[i+8>>3]=+h[p+8>>3]*.013888888888888888+e;h[i+16>>3]=+h[p+16>>3]*.013888888888888888-s;h[i+24>>3]=+h[p+24>>3]*.013888888888888888+e;h[i+32>>3]=+h[p+32>>3]*.013888888888888888-s;h[i+40>>3]=+h[p+40>>3]*.013888888888888888-e;h[i+48>>3]=+h[p+48>>3]*.013888888888888888+s;h[i+56>>3]=+h[p+56>>3]*.013888888888888888-e;p=21;break a}g=0;while(1){if((g|0)>=(k|0)){p=21;break a}p=c[j>>2]|0;u=+h[p+(g<<4)>>3];s=+h[p+(g<<4)+8>>3];t=+C(+(s*s+u*u));h[i+(g<<4)>>3]=(e/t+1.0)*u*.013888888888888888;h[i+(g<<4)+8>>3]=(f/t+1.0)*s*.013888888888888888;g=g+1|0}}case 2:{c[q>>2]=4;p=uH(64)|0;d=c[(c[n>>2]|0)+12>>2]|0;v=+h[d+32>>3];t=+h[d+40>>3];o=~~+h[d+16>>3];d=~~+h[d+24>>3];u=-e;s=-f;st(i,o,d,u,s);c[p>>2]=c[i>>2];c[p+4>>2]=c[i+4>>2];c[p+8>>2]=c[i+8>>2];c[p+12>>2]=c[i+12>>2];i=p+16|0;n=~~v;st(j,n,d,e,s);c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];i=p+32|0;d=~~t;st(k,n,d,e,f);c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];i=p+48|0;st(m,o,d,u,f);c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];c[b+40>>2]=1;i=p;p=21;break a}case 3:{c[b+40>>2]=2;i=rt(d,q,e,f)|0;p=21;break a}default:{c[o>>2]=c[c[(c[n>>2]|0)+8>>2]>>2];Ow(1,92312,o)|0;g=1;break a}}else{c[q>>2]=4;u=+h[g+32>>3]*.5+e;v=+h[g+40>>3]*.5+f;c[b+40>>2]=1;i=uH(64)|0;h[i>>3]=u;h[i+8>>3]=v;t=-u;h[i+16>>3]=t;h[i+24>>3]=v;h[i+32>>3]=t;v=-v;h[i+40>>3]=v;h[i+48>>3]=u;h[i+56>>3]=v;p=21}while(0);if((p|0)==21){c[b+36>>2]=i;g=c[q>>2]|0;c[b+32>>2]=g;tt(i,g,b,b+16|0);if((g|0)>(c[46143]|0)){c[46143]=g;g=0}else g=0}l=r;return g|0}function qt(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;do if((b|0)==4){c=+h[a+8>>3];b=a+16|0;d=+h[a+24>>3];if(c==d){if(!(+h[a+40>>3]==+h[a+56>>3])){b=0;break}if(!(+h[a>>3]==+h[a+48>>3])){b=0;break}b=+h[b>>3]==+h[a+32>>3];break}if((+h[a>>3]==+h[b>>3]?+h[a+32>>3]==+h[a+48>>3]:0)?c==+h[a+56>>3]:0)b=d==+h[a+40>>3];else b=0}else b=0;while(0);return b&1|0}function rt(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0.0,i=0,j=0,k=0.0,l=0;f=wx(a,99679)|0;if(!f)f=0;else f=$1(f)|0;i=(f|0)<3?20:f;j=uH(i<<4)|0;a=a+16|0;g=1.0/+(i|0);f=0;while(1){if((f|0)>=(i|0))break;l=c[a>>2]|0;k=g*+(f|0)*6.283185307179586;h[j+(f<<4)>>3]=(+h[l+32>>3]*.5+d)*+E(+k);h[j+(f<<4)+8>>3]=(+h[l+40>>3]*.5+e)*+F(+k);f=f+1|0}c[b>>2]=i;return j|0}function st(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;h[a>>3]=+(b|0)*.013888888888888888+d;h[a+8>>3]=+(c|0)*.013888888888888888+e;return}function tt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0.0,m=0.0;j=+h[a>>3];i=+h[a+8>>3];e=1;f=i;g=j;while(1){if((e|0)>=(b|0))break;k=a+16|0;l=+h[k>>3];m=+h[a+24>>3];e=e+1|0;f=m>f?m:f;g=l>g?l:g;i=m>3]=j;h[c+8>>3]=i;h[d>>3]=g;h[d+8>>3]=f;return}function ut(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0;r=l;l=l+80|0;n=r+64|0;p=r+68|0;i=r+48|0;j=r+32|0;k=r+16|0;m=r;o=d+16|0;g=c[o>>2]|0;a:do if(!(c[g+212>>2]|0))switch(GJ(d)|0){case 1:{m=c[(c[o>>2]|0)+12>>2]|0;n=m+8|0;k=c[n>>2]|0;c[p>>2]=k;b:do if((k|0)>2){i=uH(k<<4)|0;j=m+44|0;g=0;while(1){if((g|0)>=(k|0))break b;d=c[j>>2]|0;h[i+(g<<4)>>3]=+h[d+(g<<4)>>3]*.013888888888888888;h[i+(g<<4)+8>>3]=+h[d+(g<<4)+8>>3]*.013888888888888888;g=g+1|0}}else i=rt(d,p,0.0,0.0)|0;while(0);g=c[c[(c[o>>2]|0)+8>>2]>>2]|0;switch(a[g>>0]|0){case 98:{if(!(a$(g,105210)|0))g=1;else q=13;break}case 112:{if((a$(g,102695)|0)==0?(qt(i,c[p>>2]|0)|0)!=0:0)g=1;else q=13;break}default:q=13}do if((q|0)==13){if((c[n>>2]|0)<3?c[m>>2]|0:0){g=2;break}g=0}while(0);c[b+40>>2]=g;q=20;break a}case 2:{c[p>>2]=4;q=uH(64)|0;o=c[(c[o>>2]|0)+12>>2]|0;t=+h[o+16>>3];v=+h[o+24>>3];u=+h[o+32>>3];s=+h[o+40>>3];vt(i,t,v);c[q>>2]=c[i>>2];c[q+4>>2]=c[i+4>>2];c[q+8>>2]=c[i+8>>2];c[q+12>>2]=c[i+12>>2];i=q+16|0;vt(j,u,v);c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];i=q+32|0;vt(k,u,s);c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];i=q+48|0;vt(m,t,s);c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];c[b+40>>2]=1;i=q;q=20;break a}case 3:{c[b+40>>2]=2;i=rt(d,p,0.0,0.0)|0;q=20;break a}default:{c[n>>2]=c[c[(c[o>>2]|0)+8>>2]>>2];Ow(1,92348,n)|0;g=1;break a}}else{c[p>>2]=4;u=+h[g+32>>3]*.5;v=+h[g+40>>3]*.5;c[b+40>>2]=1;i=uH(64)|0;h[i>>3]=u;h[i+8>>3]=v;t=-u;h[i+16>>3]=t;h[i+24>>3]=v;h[i+32>>3]=t;v=-v;h[i+40>>3]=v;h[i+48>>3]=u;h[i+56>>3]=v;q=20}while(0);if((q|0)==20){g=c[p>>2]|0;if(e!=1.0|f!=1.0)wt(i,g,e,f);c[b+36>>2]=i;c[b+32>>2]=g;tt(i,g,b,b+16|0);if((g|0)>(c[46143]|0)){c[46143]=g;g=0}else g=0}l=r;return g|0}function vt(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b*.013888888888888888;h[a+8>>3]=c*.013888888888888888;return}function wt(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;var e=0,f=0;e=0;while(1){if((e|0)>=(b|0))break;h[a>>3]=+h[a>>3]*c;f=a+8|0;h[f>>3]=+h[f>>3]*d;a=a+16|0;e=e+1|0}return}function xt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0;r=l;l=l+128|0;o=r+112|0;n=r+96|0;m=r+80|0;f=r+64|0;p=r+48|0;q=r+32|0;j=r+16|0;k=r;c[n>>2]=c[a>>2];c[n+4>>2]=c[a+4>>2];c[n+8>>2]=c[a+8>>2];c[n+12>>2]=c[a+12>>2];c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];wr(p,n,o);g=b+16|0;c[n>>2]=c[a>>2];c[n+4>>2]=c[a+4>>2];c[n+8>>2]=c[a+8>>2];c[n+12>>2]=c[a+12>>2];c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];wr(q,n,o);c[n>>2]=c[d>>2];c[n+4>>2]=c[d+4>>2];c[n+8>>2]=c[d+8>>2];c[n+12>>2]=c[d+12>>2];c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];wr(j,n,o);i=e+16|0;c[n>>2]=c[d>>2];c[n+4>>2]=c[d+4>>2];c[n+8>>2]=c[d+8>>2];c[n+12>>2]=c[d+12>>2];c[o>>2]=c[i>>2];c[o+4>>2]=c[i+4>>2];c[o+8>>2]=c[i+8>>2];c[o+12>>2]=c[i+12>>2];wr(k,n,o);c[f>>2]=c[p>>2];c[f+4>>2]=c[p+4>>2];c[f+8>>2]=c[p+8>>2];c[f+12>>2]=c[p+12>>2];c[m>>2]=c[q>>2];c[m+4>>2]=c[q+4>>2];c[m+8>>2]=c[q+8>>2];c[m+12>>2]=c[q+12>>2];c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];do if(yt(f,m,n,o)|0){f=c[b+40>>2]|0;if(f&1|0?c[e+40>>2]&1|0:0){f=1;break}if(f&2|0?c[e+40>>2]&2|0:0){s=+h[g>>3]-+h[b>>3]+ +h[i>>3]-+h[e>>3];t=+h[a>>3]-+h[d>>3];u=+h[a+8>>3]-+h[d+8>>3];f=!(u*u+t*t>s*s*.25);break}f=c[46144]|0;if(!f){c[46144]=uH(c[46143]<<4)|0;i=uH(c[46143]<<4)|0;c[46145]=i;f=c[46144]|0}else i=c[46145]|0;v=c[b+36>>2]|0;b=b+32|0;g=c[b>>2]|0;c[o>>2]=c[a>>2];c[o+4>>2]=c[a+4>>2];c[o+8>>2]=c[a+8>>2];c[o+12>>2]=c[a+12>>2];zt(v,g,o,f);a=c[e+36>>2]|0;g=e+32|0;e=c[g>>2]|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];zt(a,e,o,i);if(!(At(f,i,c[b>>2]|0,c[g>>2]|0)|0)){f=c[46144]|0;c[m>>2]=c[f>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];if(Bt(m,n,o)|0?(k=c[46145]|0,v=c[g>>2]|0,c[o>>2]=c[f>>2],c[o+4>>2]=c[f+4>>2],c[o+8>>2]=c[f+8>>2],c[o+12>>2]=c[f+12>>2],Ct(k,v,o)|0):0){f=1;break}f=c[46145]|0;c[m>>2]=c[f>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];c[n>>2]=c[p>>2];c[n+4>>2]=c[p+4>>2];c[n+8>>2]=c[p+8>>2];c[n+12>>2]=c[p+12>>2];c[o>>2]=c[q>>2];c[o+4>>2]=c[q+4>>2];c[o+8>>2]=c[q+8>>2];c[o+12>>2]=c[q+12>>2];if(!(Bt(m,n,o)|0))f=0;else{q=c[46144]|0;v=c[b>>2]|0;c[o>>2]=c[f>>2];c[o+4>>2]=c[f+4>>2];c[o+8>>2]=c[f+8>>2];c[o+12>>2]=c[f+12>>2];f=(Ct(q,v,o)|0)!=0}}else f=1}else f=0;while(0);l=r;return f&1|0}function yt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((+h[a>>3]<=+h[d>>3]?+h[c>>3]<=+h[b>>3]:0)?+h[a+8>>3]<=+h[d+8>>3]:0)a=+h[c+8>>3]<=+h[b+8>>3]&1;else a=0;return a|0}function zt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=c+8|0;e=0;while(1){if((e|0)>=(b|0))break;h[d>>3]=+h[c>>3]+ +h[a>>3];h[d+8>>3]=+h[f>>3]+ +h[a+8>>3];e=e+1|0;a=a+16|0;d=d+16|0}return}function At(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;A=l;l=l+112|0;s=A+96|0;r=A+80|0;q=A+64|0;p=A+48|0;u=A+32|0;v=A+16|0;w=A;x=d+-1|0;y=e+-1|0;z=d<<1;t=e<<1;f=0;g=0;h=0;i=0;while(1){B=a+(f<<4)|0;C=a+(((x+f|0)%(d|0)|0)<<4)|0;c[r>>2]=c[B>>2];c[r+4>>2]=c[B+4>>2];c[r+8>>2]=c[B+8>>2];c[r+12>>2]=c[B+12>>2];c[s>>2]=c[C>>2];c[s+4>>2]=c[C+4>>2];c[s+8>>2]=c[C+8>>2];c[s+12>>2]=c[C+12>>2];vr(u,r,s);o=b+(g<<4)|0;n=b+(((y+g|0)%(e|0)|0)<<4)|0;c[r>>2]=c[o>>2];c[r+4>>2]=c[o+4>>2];c[r+8>>2]=c[o+8>>2];c[r+12>>2]=c[o+12>>2];c[s>>2]=c[n>>2];c[s+4>>2]=c[n+4>>2];c[s+8>>2]=c[n+8>>2];c[s+12>>2]=c[n+12>>2];vr(v,r,s);c[q>>2]=c[45770];c[q+4>>2]=c[45771];c[q+8>>2]=c[45772];c[q+12>>2]=c[45773];c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];c[s>>2]=c[v>>2];c[s+4>>2]=c[v+4>>2];c[s+8>>2]=c[v+8>>2];c[s+12>>2]=c[v+12>>2];j=+xr(q,r,s);c[q>>2]=c[C>>2];c[q+4>>2]=c[C+4>>2];c[q+8>>2]=c[C+8>>2];c[q+12>>2]=c[C+12>>2];c[r>>2]=c[B>>2];c[r+4>>2]=c[B+4>>2];c[r+8>>2]=c[B+8>>2];c[r+12>>2]=c[B+12>>2];c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];c[s+8>>2]=c[o+8>>2];c[s+12>>2]=c[o+12>>2];k=yr(q,r,s)|0;c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];c[r>>2]=c[o>>2];c[r+4>>2]=c[o+4>>2];c[r+8>>2]=c[o+8>>2];c[r+12>>2]=c[o+12>>2];c[s>>2]=c[B>>2];c[s+4>>2]=c[B+4>>2];c[s+8>>2]=c[B+8>>2];c[s+12>>2]=c[B+12>>2];m=yr(q,r,s)|0;c[p>>2]=c[C>>2];c[p+4>>2]=c[C+4>>2];c[p+8>>2]=c[C+8>>2];c[p+12>>2]=c[C+12>>2];c[q>>2]=c[B>>2];c[q+4>>2]=c[B+4>>2];c[q+8>>2]=c[B+8>>2];c[q+12>>2]=c[B+12>>2];c[r>>2]=c[n>>2];c[r+4>>2]=c[n+4>>2];c[r+8>>2]=c[n+8>>2];c[r+12>>2]=c[n+12>>2];c[s>>2]=c[o>>2];c[s+4>>2]=c[o+4>>2];c[s+8>>2]=c[o+8>>2];c[s+12>>2]=c[o+12>>2];if(zr(p,q,r,s,w)|0){f=1;break}n=(k|0)==0;o=(m|0)==0;do if(j!=0.0|(m|k|0)!=0)if(!(j>=0.0))if(o){f=(f+1|0)%(d|0)|0;h=h+1|0;break}else{g=(g+1|0)%(e|0)|0;i=i+1|0;break}else if(n){g=(g+1|0)%(e|0)|0;i=i+1|0;break}else{f=(f+1|0)%(d|0)|0;h=h+1|0;break}else{f=(f+1|0)%(d|0)|0;h=h+1|0}while(0);if(!((i|0)<(t|0)&((h|0)<(z|0)&((i|0)<(e|0)|(h|0)<(d|0))))){f=0;break}}l=A;return f|0}function Bt(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;e=+h[a>>3];if((e<=+h[c>>3]?e>=+h[b>>3]:0)?(d=+h[a+8>>3],d<=+h[c+8>>3]):0)a=d>=+h[b+8>>3]&1;else a=0;return a|0}function Ct(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0,k=0.0,l=0;e=c[46146]|0;if(!e){e=uH(c[46143]<<4)|0;c[46146]=e}i=d+8|0;g=0;while(1){if((g|0)>=(b|0))break;h[e+(g<<4)>>3]=+h[a+(g<<4)>>3]-+h[d>>3];h[e+(g<<4)+8>>3]=+h[a+(g<<4)+8>>3]-+h[i>>3];g=g+1|0}d=b+-1|0;f=0.0;a=0;a:while(1){if((a|0)>=(b|0)){l=19;break}g=(d+a|0)%(b|0)|0;j=+h[e+(a<<4)+8>>3];i=j==0.0;if(i?+h[e+(g<<4)+8>>3]==0.0:0){if(+h[e+(g<<4)>>3]*+h[e+(a<<4)>>3]<0.0){e=1;break}}else l=11;do if((l|0)==11){l=0;k=+h[e+(g<<4)+8>>3];if(!(j>=0.0)|!(k<=0.0)?!(k>=0.0)|!(j<=0.0):0)break;j=(k*+h[e+(a<<4)>>3]-j*+h[e+(g<<4)>>3])/(k-j);if(j==0.0){e=1;break a}if(j>0.0)if(k==0.0|i){f=f+.5;break}else{f=f+1.0;break}}while(0);a=a+1|0}if((l|0)==19)e=((~~f|0)%2|0|0)==1&1;return e|0}function Dt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=uH(b<<2)|0;i=O(b,b)|0;d=uH(i<<2)|0;c[j>>2]=d;$s(i,0.0,d);d=1;while(1){if((d|0)>=(b|0)){d=0;g=0;i=b;break}c[j+(d<<2)>>2]=(c[j>>2]|0)+((O(d,b)|0)<<2);d=d+1|0}while(1){if((g|0)>=(b|0))break;h=j+(g<<2)|0;e=g;f=d;while(1){if((e|0)==(b|0))break;k=c[a+(f<<2)>>2]|0;c[(c[h>>2]|0)+(e<<2)>>2]=k;c[(c[j+(e<<2)>>2]|0)+(g<<2)>>2]=k;e=e+1|0;f=f+1|0}d=d+i|0;g=g+1|0;i=i+-1|0}return j|0}function Et(a,b,d,e,f,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=+j;var k=0.0,l=0.0,m=0.0,n=0,o=0,p=0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0;M=c[d+(f<<2)>>2]|0;C=c[a+4>>2]|0;D=c[a>>2]|0;E=c[a+48>>2]|0;F=c[a+52>>2]|0;G=c[a+56>>2]|0;a:do if((h|0)<1)d=0;else{Gt(M,C,E,F,G,j);H=c[a+28>>2]|0;I=c[a+32>>2]|0;J=c[a+36>>2]|0;K=c[a+12>>2]|0;L=c[a+16>>2]|0;f=0;e=0;d=-1;while(1){if((f|0)>=(C|0))break;if((f|0)>=(e|0)){d=d+1|0;if((d|0)==(G|0)){e=C;d=G}else e=c[F+(d<<2)>>2]|0}c[L+(c[E+(f<<2)>>2]<<2)>>2]=d;f=f+1|0}z=c[a+40>>2]|0;A=I+(C+-1<<2)|0;d=0;e=0;while(1){if(e<<24>>24==0&(d|0)<(h|0)){k=-1.0e9;f=0;e=1}else break a;b:while(1){x=f;while(1){if((x|0)>=(C|0))break b;f=c[E+(x<<2)>>2]|0;y=+g[M+(f<<2)>>2];l=y;w=x;m=0.0;while(1){g[z+(f<<2)>>2]=m;f=w+1|0;if((f|0)>=(C|0)){v=0;break}l=(c[L+(f<<2)>>2]|0)>(c[L+(w<<2)>>2]|0)?l+j:l;a=c[E+(f<<2)>>2]|0;m=+g[M+(a<<2)>>2];if(+B(+(m-l))>1.0e-09){v=1;break}w=f;m=m-y;f=a}n=x;while(1){if((n|0)>(w|0)){a=0;o=x;break}o=c[E+(n<<2)>>2]|0;p=c[D+(o<<2)>>2]|0;a=0;l=-+g[b+(o<<2)>>2];while(1){if((a|0)>=(C|0))break;if((a|0)!=(o|0))l=+g[M+(a<<2)>>2]*+g[p+(a<<2)>>2]+l;a=a+1|0}g[H+(o<<2)>>2]=l/-+g[p+(o<<2)>>2]-+g[z+(o<<2)>>2];n=n+1|0}c:while(1){if((o|0)>(w|0)){m=0.0;q=0.0;r=0;break}n=c[L+(c[E+(o<<2)>>2]<<2)>>2]|0;if((n|0)==(G|0))r=f;else{r=c[F+(n<<2)>>2]|0;r=(f|0)<(r|0)?f:r}p=o;while(1){if((p|0)>=(r|0)){p=o;break}n=c[E+(p<<2)>>2]|0;if(+g[H+(n<<2)>>2]>2]=n;a=a+1|0}p=p+1|0}while(1){if((p|0)>=(r|0))break;n=c[E+(p<<2)>>2]|0;if(+g[H+(n<<2)>>2]==y){c[K+(a<<2)>>2]=n;a=a+1|0}p=p+1|0}while(1){if((o|0)>=(r|0)){o=r;continue c}n=c[E+(o<<2)>>2]|0;if(+g[H+(n<<2)>>2]>y){c[K+(a<<2)>>2]=n;a=a+1|0}o=o+1|0}}while(1){if((r|0)>=(a|0))break;o=c[K+(r<<2)>>2]|0;p=c[D+(o<<2)>>2]|0;l=0.0;n=0;while(1){if((n|0)==(r|0))break;l=l-+g[p+(c[K+(n<<2)>>2]<<2)>>2];n=n+1|0}N=l*2.0;u=p+(o<<2)|0;s=+g[u>>2];l=N+m;s=(N*y+m*q-+g[H+(o<<2)>>2]*s)/(l-s);g[I+(r<<2)>>2]=s;m=l-+g[u>>2];q=s;r=r+1|0}p=(a|0)==(C|0);if(p)g[A>>2]=y;u=a+-1|0;m=0.0;q=0.0;o=u;while(1){if((o|0)<=-1)break;r=c[K+(o<<2)>>2]|0;t=c[D+(r<<2)>>2]|0;l=0.0;n=o;while(1){n=n+1|0;if((n|0)>=(a|0))break;l=l-+g[t+(c[K+(n<<2)>>2]<<2)>>2]}l=l*2.0;t=t+(r<<2)|0;N=+g[t>>2];s=l+m;N=(l*y+m*q-+g[H+(r<<2)>>2]*N)/(s-N);g[J+(o<<2)>>2]=N;m=s-+g[t>>2];q=N;o=o+-1|0}if(p){g[J>>2]=y;s=0.0;n=-1;p=0}else{s=0.0;n=-1;p=0}while(1){if((a|0)<=(p|0))break;q=+g[J+(p<<2)>>2];if((p|0)>0)l=+g[I+(p+-1<<2)>>2];else l=q;do if(qy;if(qs;s=t?N:s;n=t?p:n;p=p+1|0}if((n|0)>-1)break;if(v?(c[L+(c[E+(f<<2)>>2]<<2)>>2]|0)>(c[L+(c[E+(w<<2)>>2]<<2)>>2]|0):0){k=+g[M+(c[K+(u<<2)>>2]<<2)>>2]+j;x=f;continue}k=+g[M+(c[K+(u<<2)>>2]<<2)>>2];x=f}m=+g[J+(n<<2)>>2];if(!n)q=m;else q=+g[I+(n+-1<<2)>>2];if(v){t=c[E+(f<<2)>>2]|0;l=+g[M+(t<<2)>>2];l=((c[L+(t<<2)>>2]|0)>(c[L+(c[E+(w<<2)>>2]<<2)>>2]|0)?l-j:l)-+g[z+(c[K+(u<<2)>>2]<<2)>>2]}else l=1.0e9;l=mk?q:k;do if(ly;if(l=(n|0))break;t=c[K+(o<<2)>>2]|0;g[M+(t<<2)>>2]=+g[z+(t<<2)>>2]+l;o=o+1|0}while(1){if((n|0)>=(a|0))break;t=c[K+(n<<2)>>2]|0;g[M+(t<<2)>>2]=+g[z+(t<<2)>>2]+m;n=n+1|0}if(v?(c[L+(c[E+(f<<2)>>2]<<2)>>2]|0)>(c[L+(c[E+(w<<2)>>2]<<2)>>2]|0):0)k=+g[M+(c[K+(u<<2)>>2]<<2)>>2]+j;else k=+g[M+(c[K+(u<<2)>>2]<<2)>>2];a=x;while(1){if((a|0)>(w|0))break;c[E+(a<<2)>>2]=c[K+(a-x<<2)>>2];a=a+1|0}if(e<<24>>24!=0?+B(+(l-y))<.01:0)e=+B(+(m-y))<.01;else e=0;e=e&1}Ss(C,M);Ft(M,E,F,G,i);d=d+1|0}}while(0);return d|0}function Ft(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=0;while(1){if((g|0)>=(e|0))break;c[f+(g<<2)>>2]=c[a+(c[b+((c[d+(g<<2)>>2]|0)+-1<<2)>>2]<<2)>>2];g=g+1|0}return}function Gt(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;var i=0.0,j=0,k=0,l=0,m=0;i=-1.0e9;k=0;j=-1;m=0;while(1){if((m|0)>=(b|0))break;if((m|0)<(k|0))l=k;else{j=j+1|0;if((j|0)==(f|0))k=b;else k=c[e+(j<<2)>>2]|0;if((m|0)>0)i=+g[a+(c[d+(m+-1<<2)>>2]<<2)>>2]+h;else i=-1.0e9;gs(a,d,m,k+-1|0);l=k}k=a+(c[d+(m<<2)>>2]<<2)|0;if(+g[k>>2]>2]=i;k=l;m=m+1|0}return}function Ht(a){a=a|0;C_(c[c[a>>2]>>2]|0);C_(c[a>>2]|0);C_(c[a+8>>2]|0);C_(c[a+28>>2]|0);C_(c[a+32>>2]|0);C_(c[a+36>>2]|0);C_(c[a+40>>2]|0);C_(c[a+12>>2]|0);C_(c[a+16>>2]|0);C_(c[a+20>>2]|0);C_(c[a+24>>2]|0);C_(a);return}function It(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=uH(60)|0;c[k>>2]=0;l=k+4|0;c[l>>2]=b;c[k+48>>2]=d;c[k+52>>2]=e;c[k+56>>2]=f;c[k>>2]=Dt(a,b)|0;i=b<<2;j=uH(i)|0;c[k+8>>2]=j;h=0;b=0;a=-1;while(1){if((h|0)>=(c[l>>2]|0))break;g=a+1|0;if((h|0)>=(b|0)){b=c[((g|0)==(f|0)?l:e+(g<<2)|0)>>2]|0;a=g}c[j+(c[d+(h<<2)>>2]<<2)>>2]=a;h=h+1|0}c[k+28>>2]=uH(i)|0;c[k+32>>2]=uH(i)|0;c[k+36>>2]=uH(i)|0;c[k+40>>2]=uH(i)|0;c[k+12>>2]=uH(i)|0;c[k+16>>2]=uH(i)|0;c[k+20>>2]=uH(i)|0;c[k+24>>2]=uH(i)|0;return k|0}function Jt(){ft(184592,24);c[46151]=0;return}function Kt(){return ht(184592)|0}function Lt(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+8>>3]-+h[b+8>>3];return +(+C(+(d*d+c*c)))}function Mt(a){a=a|0;var b=0;b=c[46151]|0;c[a+16>>2]=b;c[46151]=b+1;return}function Nt(a){a=a|0;var b=0,d=0;d=a+20|0;b=(c[d>>2]|0)+-1|0;c[d>>2]=b;if(!b)it(a,184592);return}function Ot(a){a=a|0;a=a+20|0;c[a>>2]=(c[a>>2]|0)+1;return}function Pt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var i=0.0,j=0,k=0,m=0,n=0.0,o=0,p=0.0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=l;l=l+16|0;o=x;c[o>>2]=e;q=b<<2;v=uH(q)|0;m=b<<3;w=uH(m)|0;u=$r(a,b)|0;a=0;while(1){if((a|0)>=(b|0))break;k=u+(a<<2)|0;j=0;while(1){if((j|0)==(b|0))break;s=(c[k>>2]|0)+(j<<2)|0;c[s>>2]=c[s>>2]<<8;j=j+1|0}a=a+1|0}if(!d)qa(92381,92389,283,92403);s=uH(m)|0;a=0;while(1){if((a|0)>=(b|0))break;h[s+(a<<3)>>3]=+h[d+(a<<3)>>3];a=a+1|0}Qt(s,b);i=0.0;n=0.0;m=1;while(1){if((m|0)>=(b|0))break;j=u+(m<<2)|0;k=d+(m<<3)|0;a=0;while(1){if((a|0)==(m|0))break;y=c[(c[j>>2]|0)+(a<<2)>>2]|0;r=+h[k>>3]-+h[d+(a<<3)>>3];i=r*r*(1.0/+(O(y,y)|0))+i;n=+B(+r)*(1.0/+(y|0))+n;a=a+1|0}m=m+1|0}r=n/i;a=0;while(1){if((a|0)>=(b|0))break;y=d+(a<<3)|0;h[y>>3]=+h[y>>3]*r;a=a+1|0}Rt(b,o,f,d,u);k=uH(O(q,b)|0)|0;j=0;while(1){if((j|0)>=(b|0)){k=1;break}m=k+((O(j,b)|0)<<2)|0;c[v+(j<<2)>>2]=m;o=u+(j<<2)|0;i=0.0;a=0;while(1){if((a|0)==(b|0))break;if((a|0)!=(j|0)){p=+(c[(c[o>>2]|0)+(a<<2)>>2]|0);p=-1.0/(p*p);g[m+(a<<2)>>2]=p;i=i-p}a=a+1|0}g[m+(j<<2)>>2]=i;j=j+1|0}while(1){if((k|0)>=(b|0)){j=0;break}i=+h[d+(k<<3)>>3];j=u+(k<<2)|0;a=0;while(1){if((a|0)==(k|0))break;y=(c[j>>2]|0)+(a<<2)|0;n=+(c[y>>2]|0);p=i-+h[d+(a<<3)>>3];p=n*n-p*p;q=~~+C(+p);q=p>0.0?q:0;c[(c[u+(a<<2)>>2]|0)+(k<<2)>>2]=q;c[y>>2]=q;a=a+1|0}k=k+1|0}while(1){if((j|0)>=(b|0)){q=0;a=0;break}n=+h[e+(j<<3)>>3];m=w+(j<<3)|0;h[m>>3]=0.0;o=u+(j<<2)|0;k=v+(j<<2)|0;a=0;i=0.0;while(1){if((a|0)==(b|0))break;if((a|0)!=(j|0)){p=+g[(c[k>>2]|0)+(a<<2)>>2]*+(c[(c[o>>2]|0)+(a<<2)>>2]|0);i=i+(n>=+h[e+(a<<3)>>3]?-p:p);h[m>>3]=i}a=a+1|0}j=j+1|0}while(1){if(!(a<<24>>24==0&(q|0)<200)){t=42;break}if((Dq(v,e,w,b,f,b,1)|0)<0){a=1;break}else{a=1;o=0}while(1){if((o|0)>=(b|0))break;p=+h[e+(o<<3)>>3];k=u+(o<<2)|0;m=v+(o<<2)|0;i=0.0;j=0;while(1){if((j|0)==(b|0))break;do if((j|0)!=(o|0)){n=+g[(c[m>>2]|0)+(j<<2)>>2]*+(c[(c[k>>2]|0)+(j<<2)>>2]|0);if(!(p>=+h[e+(j<<3)>>3])){i=i+n;break}else{i=i+-n;break}}while(0);j=j+1|0}j=w+(o<<3)|0;p=+h[j>>3];if(i!=p?+B(+(1.0-i/p))>1.0e-05:0){h[j>>3]=i;a=0}o=o+1|0}q=q+1|0}a:do if((t|0)==42){i=1.0/r;a=0;while(1){if((a|0)>=(b|0)){a=0;break a}y=d+(a<<3)|0;h[y>>3]=+h[y>>3]*i;y=e+(a<<3)|0;h[y>>3]=+h[y>>3]*i;a=a+1|0}}while(0);C_(c[u>>2]|0);C_(u);C_(c[v>>2]|0);C_(v);C_(s);C_(w);l=x;return a|0}function Qt(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0;c=0;d=0.0;while(1){if((c|0)>=(b|0))break;e=+h[a+(c<<3)>>3]+d;c=c+1|0;d=e}d=d/+(b|0);c=0;while(1){if((c|0)>=(b|0))break;f=a+(c<<3)|0;h[f>>3]=+h[f>>3]-d;c=c+1|0}f=b+-1|0;Bs(a,0,f,1.0/+As(a,0,f),a);return}function Rt(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0;k=St(f,a)|0;l=uH(8)|0;if(!e){f=0;j=0}else{g=uH(a<<3)|0;f=0;while(1){if((f|0)>=(a|0))break;h[g+(f<<3)>>3]=+h[e+(f<<3)>>3];f=f+1|0}Qt(g,a);f=g;j=g}Tt(k,a,b,l,f,d);e=0;while(1){if((e|0)==1)break;g=l+(e<<3)|0;i=b+(e<<2)|0;f=0;while(1){if((f|0)>=(a|0))break;d=+C(+(+B(+(+h[g>>3]))));m=(c[i>>2]|0)+(f<<3)|0;h[m>>3]=+h[m>>3]*d;f=f+1|0}e=e+1|0}C_(c[k>>2]|0);C_(k);C_(l);C_(j);return}function St(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+16|0;f=o;n=b<<2;e=uH(O(n,b)|0)|0;n=uH(n)|0;d=0;while(1){if((d|0)>=(b|0))break;c[n+(d<<2)>>2]=e+((O(d,b)|0)<<2);d=d+1|0}m=Vt(a,b,f)|0;h=+g[f>>2];e=0;k=1;while(1){if((e|0)>=(b|0))break;f=a+(e<<2)|0;i=m+(e<<2)|0;j=n+(e<<2)|0;d=0;while(1){if((d|0)==(k|0))break;p=+(c[(c[f>>2]|0)+(d<<2)>>2]|0);p=+g[m+(d<<2)>>2]+ +g[i>>2]-p*p-h;g[(c[j>>2]|0)+(d<<2)>>2]=p;g[(c[n+(d<<2)>>2]|0)+(e<<2)>>2]=p;d=d+1|0}e=e+1|0;k=k+1|0}C_(m);l=o;return n|0}function Tt(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0;r=b<<3;q=uH(r)|0;r=uH(r)|0;n=1.0-g;o=(b|0)<1?b:1;p=b+-1|0;k=(f|0)==0;j=0;a:while(1){if((j|0)>=(o|0))break;l=c[d+(j<<2)>>2]|0;do{i=0;while(1){if((i|0)==(b|0))break;h[l+(i<<3)>>3]=+((f2()|0)%100|0|0);i=i+1|0}if(k)i=0;else{zs(l,0,p,-+ys(f,0,p,l),f);i=0}while(1){if((i|0)==(j|0))break;s=d+(i<<2)|0;m=-+ys(c[s>>2]|0,0,p,l);zs(l,0,p,m,c[s>>2]|0);i=i+1|0}g=+As(l,0,p)}while(g<1.0e-10);Bs(l,0,p,1.0/g,l);do{Cs(r,0,p,l);Ut(a,b,b,l,q,f);Cs(l,0,p,q);i=0;while(1){if((i|0)==(j|0))break;s=d+(i<<2)|0;m=-+ys(c[s>>2]|0,0,p,l);zs(l,0,p,m,c[s>>2]|0);i=i+1|0}g=+As(l,0,p);if(g<1.0e-10)break a;Bs(l,0,p,1.0/g,l);m=+ys(l,0,p,r)}while(+B(+m)>3]=m*g;j=j+1|0}while(1){if((j|0)>=(o|0))break;k=c[d+(j<<2)>>2]|0;i=0;while(1){if((i|0)>=(b|0)){i=0;break}h[k+(i<<3)>>3]=+((f2()|0)%100|0|0);i=i+1|0}while(1){if((i|0)>=(j|0))break;s=d+(i<<2)|0;n=-+ys(c[s>>2]|0,0,p,k);zs(k,0,p,n,c[s>>2]|0);i=i+1|0}Bs(k,0,p,1.0/+As(k,0,p),k);h[e+(j<<3)>>3]=0.0;j=j+1|0}l=o+-1|0;j=0;while(1){if((j|0)>=(l|0))break;a=e+(j<<3)|0;f=j+1|0;g=+h[a>>3];i=j;k=f;while(1){if((k|0)>=(o|0))break;n=+h[e+(k<<3)>>3];s=g>2]|0);s=d+(i<<2)|0;Cs(c[b>>2]|0,0,p,c[s>>2]|0);Cs(c[s>>2]|0,0,p,q);h[e+(i<<3)>>3]=+h[a>>3];h[a>>3]=g;j=f}C_(q);C_(r);return}function Ut(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0.0,l=0,m=0;j=0;while(1){if((j|0)>=(b|0))break;m=a+(j<<2)|0;k=0.0;l=0;while(1){if((l|0)>=(d|0))break;k=+h[e+(l<<3)>>3]*+g[(c[m>>2]|0)+(l<<2)>>2]+k;l=l+1|0}h[f+(j<<3)>>3]=k;j=j+1|0}j=b+-1|0;if(i|0)zs(f,0,j,-+ys(f,0,j,i),i);return}function Vt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0,i=0,j=0,k=0.0,l=0,m=0.0;j=uH(b<<2)|0;k=1.0/+(b|0);e=0.0;i=0;while(1){if((i|0)>=(b|0))break;l=a+(i<<2)|0;f=0.0;h=0;while(1){if((h|0)==(b|0))break;m=+(c[(c[l>>2]|0)+(h<<2)>>2]|0);m=m*m;f=m+f;h=h+1|0;e=m+e}g[j+(i<<2)>>2]=k*f;i=i+1|0}g[d>>2]=e/+(O(b,b)|0);return j|0}function Wt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0;q=O(d,d)|0;r=uH(q<<3)|0;s=uH(d<<3)|0;e=0;while(1){if((e|0)>=(d|0))break;h[s+(e<<3)>>3]=+h[c+(e<<3)>>3];e=e+1|0}e=0;while(1){if((e|0)>=(q|0))break;h[r+(e<<3)>>3]=+h[a+(e<<3)>>3];e=e+1|0}p=d+-1|0;g=0;o=0;a:while(1){if((o|0)<(p|0)){f=0.0;e=o}else{l=21;break}while(1){if((e|0)>=(d|0))break;t=+B(+(+h[a+((O(e,d)|0)+o<<3)>>3]));m=t=(d|0))break;l=a+(e+i<<3)|0;t=+h[l>>3];m=a+(e+n<<3)|0;h[l>>3]=+h[m>>3];h[m>>3]=t;e=e+1|0}m=c+(g<<3)|0;t=+h[m>>3];j=c+(o<<3)|0;h[m>>3]=+h[j>>3];h[j>>3]=t;m=o+1|0;k=a+(n+o<<3)|0;e=m;while(1){if((e|0)>=(d|0)){o=m;continue a}l=O(e,d)|0;f=+h[a+(l+o<<3)>>3]/+h[k>>3];i=c+(e<<3)|0;h[i>>3]=+h[i>>3]-+h[j>>3]*f;i=0;while(1){if((i|0)>=(d|0))break;u=a+(i+l<<3)|0;h[u>>3]=+h[u>>3]-+h[a+(i+n<<3)>>3]*f;i=i+1|0}e=e+1|0}}if((l|0)==21){f=+h[a+(q+-1<<3)>>3];if(+B(+f)<1.0e-10)l=33;else{h[b+(p<<3)>>3]=+h[c+(p<<3)>>3]/f;e=0;while(1){if((e|0)>=(p|0)){e=0;break}g=d-e|0;i=g+-2|0;f=+h[c+(i<<3)>>3];j=b+(i<<3)|0;h[j>>3]=f;k=O(i,d)|0;g=g+-1|0;while(1){if((g|0)>=(d|0))break;t=f-+h[b+(g<<3)>>3]*+h[a+(g+k<<3)>>3];h[j>>3]=t;g=g+1|0;f=t}h[j>>3]=f/+h[a+(k+i<<3)>>3];e=e+1|0}while(1){if((e|0)>=(d|0)){e=0;break}h[c+(e<<3)>>3]=+h[s+(e<<3)>>3];e=e+1|0}while(1){if((e|0)>=(q|0))break;h[a+(e<<3)>>3]=+h[r+(e<<3)>>3];e=e+1|0}C_(r);C_(s)}}if((l|0)==33){j3(92418)|0;C_(r);C_(s)}return}function Xt(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=l;l=l+16|0;r=s;mr();Jt();Hr();c[46147]=jb[d&3]()|0;Jr();q=r+8|0;p=jb[d&3]()|0;e=0.0;f=0.0;a:while(1){n=(p|0)==0;o=p+8|0;while(1){if(!(Dr()|0)){Er(r);e=+h[r>>3];f=+h[q>>3]}if(!n){if(Dr()|0)break;g=+h[o>>3];if(g>3]>2]|0;Mt(j);qr(c[t+8>>2]|0,a[t+16>>0]|0,j);qr(c[v+8>>2]|0,a[v+16>>0]|0,j);Qr(t);Cr(v);Qr(v);v=+h[m+8>>3]>+h[u+8>>3];t=v&1;k=v?u:m;u=nr(k,v?m:u)|0;m=Kr(u,t)|0;Nr(b,m);qr(u,(t^1)&255,j);Nt(j);j=Lr(b,m)|0;if(j|0){Cr(b);Ar(b,j,+Lt(j,k))}b=Lr(m,i)|0;if(!b)continue;Ar(m,b,+Lt(b,k))}b=Or(p)|0;k=Rr(b)|0;i=nr(Ur(b)|0,p)|0;m=Kr(i,0)|0;Nr(b,m);j=Lr(b,m)|0;if(j|0){Cr(b);Ar(b,j,+Lt(j,p))}i=Kr(i,1)|0;Nr(m,i);b=Lr(i,k)|0;if(b|0)Ar(i,b,+Lt(b,p));p=jb[d&3]()|0}b=c[46090]|0;while(1){b=Rr(b)|0;if((b|0)==(c[46091]|0))break;or(c[b+8>>2]|0)}l=s;return}function Yt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g+8|0;e=g;do if(($x(a)|0)!=1){Zt(a);if(!b)b=_t(a)|0;d=$t(a,b)|0;if(0){h=c[15686]|0;c[e>>2]=qy(b)|0;c[e+4>>2]=d;f1(h,92434,e)|0}if((d|0)<0){Ow(1,92468,f)|0;break}else{au(a);bu(a,b);cu(a,b);du(a,d);break}}else{h=c[(c[(Ry(a)|0)+16>>2]|0)+132>>2]|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0}while(0);l=g;return b|0}function Zt(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=$x(a)|0;d=O(d,d)|0;b=Ry(a)|0;while(1){if(!b)break;e=b+16|0;f=c[(c[e>>2]|0)+112>>2]|0;g=f+24|0;c[g>>2]=d;c[g+4>>2]=0;h[f+48>>3]=10.0;f=(lu(a,b)|0)==0;e=c[(c[e>>2]|0)+112>>2]|0;c[e>>2]=f?d:0;c[e+4>>2]=f?0:0;b=Sy(a,b)|0}return}function _t(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=($x(a)|0)<3;b=Ry(a)|0;a:do if(!e){while(1){if(!b)break;e=c[(c[b+16>>2]|0)+112>>2]|0;if((c[e>>2]|0)==0&(c[e+4>>2]|0)==0)ku(a,b,0);b=Sy(a,b)|0}d=0;b=0;e=Ry(a)|0;while(1){if(!e)break a;h=c[(c[e+16>>2]|0)+112>>2]|0;g=c[h>>2]|0;h=c[h+4>>2]|0;f=((d|0)<0)<<31>>31;f=h>>>0>f>>>0|(h|0)==(f|0)&g>>>0>d>>>0;d=f?g:d;b=f?e:b;e=Sy(a,e)|0}}while(0);return b|0}function $t(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[(c[b+16>>2]|0)+112>>2]|0;f=d+24|0;e=c[f>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[d+32>>2]=0;hu(a,b);d=Ry(a)|0;e=x3(0,e|0,32)|0;f=z;b=0;while(1){if(!d)break;h=(c[(c[d+16>>2]|0)+112>>2]|0)+24|0;g=c[h>>2]|0;h=c[h+4>>2]|0;if((g|0)==(e|0)&(h|0)==(f|0)){b=-1;break}i=((b|0)<0)<<31>>31;b=h>>>0>i>>>0|(h|0)==(i|0)&g>>>0>b>>>0?g:b;d=Sy(a,d)|0}return b|0}function au(a){a=a|0;var b=0,d=0,e=0,f=0;d=Ry(a)|0;while(1){if(!d)break;b=c[(c[d+16>>2]|0)+112>>2]|0;e=b+16|0;a:do if((c[e>>2]|0)==0&(c[e+4>>2]|0)==0)while(1){e=b+8|0;f=e;f=r3(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;c[e>>2]=f;c[e+4>>2]=z;b=c[b+32>>2]|0;if(!b)break a;b=c[(c[b+16>>2]|0)+112>>2]|0}while(0);d=Sy(a,d)|0}return}function bu(a,b){a=a|0;b=b|0;h[(c[(c[b+16>>2]|0)+112>>2]|0)+40>>3]=6.283185307179586;gu(a,b);return}function cu(a,b){a=a|0;b=b|0;h[(c[(c[b+16>>2]|0)+112>>2]|0)+48>>3]=0.0;fu(a,b);return}function du(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0;i=l;l=l+16|0;f=i;g=eu(a,b)|0;if(0){e=c[15686]|0;C1(92524,e)|0;d=0;while(1){if((d|0)>(b|0))break;h[f>>3]=+h[g+(d<<3)>>3];f1(e,92543,f)|0;d=d+1|0}C1(150517,e)|0}d=Ry(a)|0;while(1){if(!d)break;f=c[d+16>>2]|0;e=c[f+112>>2]|0;j=+h[g+(c[e+24>>2]<<3)>>3];e=e+48|0;k=+E(+(+h[e>>3]))*j;f=c[f+132>>2]|0;h[f>>3]=k;h[f+8>>3]=+F(+(+h[e>>3]))*j;d=Sy(a,d)|0}C_(g);l=i;return}function eu(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;m=tH((d<<3)+8|0)|0;b=ML(b,mx(c[b+60>>2]|0,0,98262,0)|0,0)|0;a:do if(!b){f=1.0;e=0.0;b=1}else{i=0.0;e=0.0;g=1;b:while(1){if((g|0)>(d|0)){f=i;b=g;break a}f=+b2(b,k);if(!(f>0.0)){f=i;b=g;break a}i=f>.02?f:.02;e=i+e;j=g+1|0;h[m+(g<<3)>>3]=e;b=c[k>>2]|0;while(1){g=a[b>>0]|0;if(!(g<<24>>24)){g=j;continue b}if(!(g<<24>>24==58|(A$(g<<24>>24)|0)!=0)){g=j;continue b}b=b+1|0}}}while(0);while(1){if((b|0)>(d|0))break;i=e+f;h[m+(b<<3)>>3]=i;b=b+1|0;e=i}l=n;return m|0}function fu(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0.0;d=c[(c[b+16>>2]|0)+112>>2]|0;if(!(c[d+32>>2]|0))e=0.0;else e=+h[d+48>>3]-+h[d+40>>3]*.5;g=Ix(a,b)|0;while(1){if(!g)break;d=c[g>>2]&3;f=c[((d|0)==3?g:g+48|0)+40>>2]|0;if((f|0)==(b|0))f=c[((d|0)==2?g:g+-48|0)+40>>2]|0;d=c[(c[f+16>>2]|0)+112>>2]|0;if((c[d+32>>2]|0)==(b|0)?(i=d+48|0,!(+h[i>>3]!=10.0)):0){j=+h[d+40>>3];h[i>>3]=j*.5+e;e=j+e;d=d+16|0;if(!((c[d>>2]|0)==0&(c[d+4>>2]|0)==0))fu(a,f)}g=Jx(a,g,b)|0}return}function gu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0,j=0;e=c[(c[b+16>>2]|0)+112>>2]|0;f=e+8|0;g=+h[e+40>>3]/(+((c[f>>2]|0)>>>0)+4294967296.0*+((c[f+4>>2]|0)>>>0));f=Ix(a,b)|0;while(1){if(!f)break;e=c[f>>2]&3;d=c[((e|0)==3?f:f+48|0)+40>>2]|0;if((d|0)==(b|0))d=c[((e|0)==2?f:f+-48|0)+40>>2]|0;e=c[(c[d+16>>2]|0)+112>>2]|0;if(((c[e+32>>2]|0)==(b|0)?(i=e+40|0,!(+h[i>>3]!=0.0)):0)?(j=e+8|0,h[i>>3]=g*(+((c[j>>2]|0)>>>0)+4294967296.0*+((c[j+4>>2]|0)>>>0)),e=e+16|0,!((c[e>>2]|0)==0&(c[e+4>>2]|0)==0)):0)gu(a,d);f=Jx(a,f,b)|0}return}function hu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;p=l;l=l+16|0;n=p;o=mx(b,2,98515,0)|0;c[n+4>>2]=0;c[n>>2]=0;iu(n,d);j=(o|0)==0;a:while(1){k=ju(n)|0;if(!k)break;m=k+16|0;h=c[(c[(c[m>>2]|0)+112>>2]|0)+24>>2]|0;g=Ix(b,k)|0;h=r3(0,h|0,0,1)|0;h=x3(h|0,z|0,32)|0;i=z;while(1){if(!g)continue a;if(!((!j?(a[(xx(g,o)|0)>>0]|0)==48:0)?!(a$(xx(g,o)|0,135312)|0):0)){d=c[g>>2]&3;e=c[((d|0)==3?g:g+48|0)+40>>2]|0;if((e|0)==(k|0))e=c[((d|0)==2?g:g+-48|0)+40>>2]|0;d=c[(c[e+16>>2]|0)+112>>2]|0;f=d+24|0;q=f;r=c[q+4>>2]|0;if(i>>>0>>0|((i|0)==(r|0)?h>>>0<(c[q>>2]|0)>>>0:0)){r=f;c[r>>2]=h;c[r+4>>2]=i;c[d+32>>2]=k;r=(c[(c[m>>2]|0)+112>>2]|0)+16|0;q=r;q=r3(c[q>>2]|0,c[q+4>>2]|0,1,0)|0;c[r>>2]=q;c[r+4>>2]=z;iu(n,e)}}g=Jx(b,g,k)|0}}l=p;return}function iu(a,b){a=a|0;b=b|0;var d=0,e=0;d=tH(8)|0;c[d>>2]=b;b=a+4|0;e=c[b>>2]|0;c[((e|0)==0?a:e+4|0)>>2]=d;c[b>>2]=d;return}function ju(a){a=a|0;var b=0,d=0;d=c[a>>2]|0;if(d){b=c[d>>2]|0;c[a>>2]=c[d+4>>2];C_(d);if(!(c[a>>2]|0))c[a+4>>2]=0}else b=0;return b|0}function ku(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=c[c[(c[b+16>>2]|0)+112>>2]>>2]|0;g=Ix(a,b)|0;h=r3(0,h|0,0,1)|0;h=x3(h|0,z|0,32)|0;i=z;while(1){if(!g)break;f=c[g>>2]&3;e=c[((f|0)==3?g:g+48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((f|0)==2?g:g+-48|0)+40>>2]|0;if((e|0)!=(d|0)?(j=c[(c[e+16>>2]|0)+112>>2]|0,f=j,k=c[f+4>>2]|0,i>>>0>>0|((i|0)==(k|0)?h>>>0<(c[f>>2]|0)>>>0:0)):0){k=j;c[k>>2]=h;c[k+4>>2]=i;ku(a,e,b)}g=Jx(a,g,b)|0}return}function lu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=0;g=Ix(a,b)|0;while(1){if(!g){d=1;break}e=c[g>>2]&3;d=c[((e|0)==3?g:g+48|0)+40>>2]|0;if((d|0)==(b|0))d=c[((e|0)==2?g:g+-48|0)+40>>2]|0;if((d|0)!=(b|0)){if(f)if((f|0)==(d|0))d=f;else{d=0;break}}else d=f;f=d;g=Jx(a,g,b)|0}return d|0}function mu(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0;b=l;l=l+32|0;e=b;d=mx(a,1,92551,0)|0;g=mx(a,0,92551,0)|0;a=nu(a,g,d,mx(a,0,92556,0)|0)|0;d=a+16|0;f=+C(+(+h[a>>3]+.1));yu(e,0.0,0.0,f,f);c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];c[d+16>>2]=c[e+16>>2];c[d+20>>2]=c[e+20>>2];c[d+24>>2]=c[e+24>>2];c[d+28>>2]=c[e+28>>2];ou(a);pu(a);qu(a);l=b;return}function nu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=tH(72)|0;c[o+60>>2]=0;c[o+56>>2]=a;k=a+16|0;f=0.0;l=0;i=1;j=0;m=0;while(1){g=c[k>>2]|0;if((i|0)>(c[g+180>>2]|0))break;g=nu(c[(c[g+184>>2]|0)+(i<<2)>>2]|0,b,d,e)|0;f=+h[g>>3]+f;if(j|0)c[j+52>>2]=g;l=l+1|0;i=i+1|0;j=g;m=(m|0)==0?g:m}n=Ry(a)|0;g=m;while(1){if(!n)break;i=n+16|0;if(!(c[c[(c[i>>2]|0)+112>>2]>>2]|0)){k=tu(n,d)|0;f=+h[k>>3]+f;if(j|0)c[j+52>>2]=k;c[c[(c[i>>2]|0)+112>>2]>>2]=a;i=l+1|0;j=k;g=(g|0)==0?k:g}else i=l;n=Sy(a,n)|0;l=i}c[o+64>>2]=l;if(!l)f=+vu(a,b);else{h[o+8>>3]=f;f=+uu(o,e)}h[o>>3]=f;c[o+48>>2]=g;return o|0}function ou(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;p=l;l=l+176|0;f=p+144|0;n=p+64|0;k=p+32|0;i=p;o=c[a+64>>2]|0;a:do if(o|0){m=tH(o<<2)|0;b=a+48|0;e=0;d=b;while(1){d=c[d>>2]|0;if((e|0)>=(o|0))break;c[m+(e<<2)>>2]=d;e=e+1|0;d=d+52|0}Z0(m,o,4,79);j=tH(o<<3)|0;d=0;while(1){if((d|0)>=(o|0))break;h[j+(d<<3)>>3]=+h[c[m+(d<<2)>>2]>>3];d=d+1|0}g=+h[a+8>>3];if(+h[a>>3]==g){i=a+16|0;c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];c[f+16>>2]=c[i+16>>2];c[f+20>>2]=c[i+20>>2];c[f+24>>2]=c[i+24>>2];c[f+28>>2]=c[i+28>>2];i=wu(o,j,f)|0}else{q=+h[a+40>>3];r=+h[a+32>>3];h[i>>3]=+h[a+16>>3];h[i+8>>3]=+h[a+24>>3];s=q-r;g=(r+q-+C(+(g*4.0+s*s)))*.5;h[i+16>>3]=r-g;h[i+24>>3]=q-g;c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];c[f+16>>2]=c[i+16>>2];c[f+20>>2]=c[i+20>>2];c[f+24>>2]=c[i+24>>2];c[f+28>>2]=c[i+28>>2];i=wu(o,j,f)|0}if(0){f=c[15686]|0;q=+h[a+24>>3];r=+h[a+32>>3];s=+h[a+40>>3];h[k>>3]=+h[a+16>>3];h[k+8>>3]=q;h[k+16>>3]=r;h[k+24>>3]=s;f1(f,92603,k)|0}e=c[15686]|0;d=0;while(1){if((d|0)>=(o|0))break;k=(c[m+(d<<2)>>2]|0)+16|0;f=i+(d<<5)|0;c[k>>2]=c[f>>2];c[k+4>>2]=c[f+4>>2];c[k+8>>2]=c[f+8>>2];c[k+12>>2]=c[f+12>>2];c[k+16>>2]=c[f+16>>2];c[k+20>>2]=c[f+20>>2];c[k+24>>2]=c[f+24>>2];c[k+28>>2]=c[f+28>>2];if(0){g=+h[f>>3];r=+h[i+(d<<5)+16>>3];u=r*.5;q=+h[i+(d<<5)+8>>3];s=+h[i+(d<<5)+24>>3];t=s*.5;h[n>>3]=+h[j+(d<<3)>>3];h[n+8>>3]=g-u;h[n+16>>3]=q-t;h[n+24>>3]=u+g;h[n+32>>3]=t+q;h[n+40>>3]=s*r;h[n+48>>3]=g;h[n+56>>3]=q;h[n+64>>3]=r;h[n+72>>3]=s;f1(e,92620,n)|0}d=d+1|0}C_(m);C_(j);C_(i);d=0;while(1){b=c[b>>2]|0;if((d|0)>=(o|0))break a;if(!(c[b+60>>2]|0))ou(b);b=b+52|0;d=d+1|0}}while(0);l=p;return}function pu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0;f=l;l=l+48|0;e=f;if(c[a+60>>2]|0){k=+h[a+24>>3];i=+h[a+32>>3];g=+h[a+40>>3];b=c[a+56>>2]|0;d=b+16|0;j=c[d>>2]|0;h[j+16>>3]=+h[a+16>>3];h[j+24>>3]=k;a=c[d>>2]|0;h[a+32>>3]=i*.013888888888888888;h[a+40>>3]=g*.013888888888888888;aN(b,c[(c[(dz(b)|0)+16>>2]|0)+116>>2]&1);ru(b);if(0){j=c[15686]|0;a=qy(b)|0;d=c[d>>2]|0;m=+h[d+16>>3];g=+h[d+24>>3];i=+h[d+80>>3];k=+h[d+96>>3]+ +h[d+88>>3];c[e>>2]=a;h[e+8>>3]=m;h[e+16>>3]=g;h[e+24>>3]=i;h[e+32>>3]=k;f1(j,92562,e)|0}}else{b=a+48|0;while(1){b=c[b>>2]|0;if(!b)break;pu(b);b=b+52|0}i=+h[a+32>>3];m=+h[a+40>>3];g=+h[a+16>>3]-i*.5;k=+h[a+24>>3]-m*.5;j=c[(c[a+56>>2]|0)+16>>2]|0;h[j+16>>3]=g;h[j+24>>3]=k;h[j+32>>3]=g+i;h[j+40>>3]=k+m}l=f;return}function qu(a){a=a|0;var b=0,d=0,e=0;e=c[a+64>>2]|0;b=a+48|0;d=0;while(1){b=c[b>>2]|0;if((d|0)>=(e|0))break;qu(b);b=b+52|0;d=d+1|0}C_(a);return}function ru(b){b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g;d=g+8|0;e=c[46380]|0;if(e|0?(a[(xx(b,e)|0)>>0]|0)==0:0){h[f>>3]=+h[(c[b+16>>2]|0)+80>>3]*.7;X0(d,92597,f)|0;qx(b,c[46380]|0,d)|0}cM(b);l=g;return}function su(a,b){a=a|0;b=b|0;var d=0.0;d=+h[c[a>>2]>>3]-+h[c[b>>2]>>3];return (d<0.0?1:(d>0.0)<<31>>31)|0}function tu(a,b){a=a|0;b=b|0;var d=0;d=tH(72)|0;h[d>>3]=+vu(a,b);c[d+60>>2]=1;c[d+56>>2]=a;return d|0}function uu(a,b){a=a|0;b=b|0;var d=0.0;d=+KL(c[a+56>>2]|0,b,0.0,0.0);if(d==0.0)d=+h[a+8>>3];else{d=+C(+(+h[a+8>>3]))+d*2.0;d=d*d}return +d}function vu(a,b){a=a|0;b=b|0;var c=0.0;c=+KL(a,b,1.0,0.0);return +(c==0.0?1.0e3:c*1.0e3)}function wu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0;i=l;l=l+32|0;g=i;e=0;f=0.0;while(1){if((e|0)>=(a|0))break;j=+h[b+(e<<3)>>3]+f;e=e+1|0;f=j}if(f>+h[d+24>>3]*+h[d+16>>3]+.001)e=0;else{e=tH(a<<5)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];c[g+16>>2]=c[d+16>>2];c[g+20>>2]=c[d+20>>2];c[g+24>>2]=c[d+24>>2];c[g+28>>2]=c[d+28>>2];xu(a,b,e,0,0.0,1.0,0.0,1.0,g)}l=i;return e|0}function xu(a,b,d,e,f,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=+i;j=+j;k=k|0;var m=0,n=0.0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0.0;z=l;l=l+112|0;y=z+72|0;u=z+40|0;p=z+32|0;m=z;w=k+16|0;q=+h[w>>3];x=k+24|0;r=+h[x>>3];v=+h[k+16+((!(q>3];do if((a|0)>=1){if(0){A=c[15686]|0;B=+h[k+8>>3];h[m>>3]=+h[k>>3];h[m+8>>3]=q;h[m+16>>3]=B;h[m+24>>3]=r;f1(A,92657,m)|0;c[p>>2]=e;f1(A,92703,p)|0}if(!e){i=+h[b>>3];B=v*v;v=i/B;B=B/i;c[y>>2]=c[k>>2];c[y+4>>2]=c[k+4>>2];c[y+8>>2]=c[k+8>>2];c[y+12>>2]=c[k+12>>2];c[y+16>>2]=c[k+16>>2];c[y+20>>2]=c[k+20>>2];c[y+24>>2]=c[k+24>>2];c[y+28>>2]=c[k+28>>2];xu(a,b,d,1,i,i,i,v>B?v:B,y);break}if((a|0)>(e|0)?(t=+h[b+(e<<3)>>3],n=tg?g:t,t=t+i,o=t/v,o=o*o,B=o/s,o=n/o,o=B>o?B:o,o<=j):0){c[y>>2]=c[k>>2];c[y+4>>2]=c[k+4>>2];c[y+8>>2]=c[k+8>>2];c[y+12>>2]=c[k+12>>2];c[y+16>>2]=c[k+16>>2];c[y+20>>2]=c[k+20>>2];c[y+24>>2]=c[k+24>>2];c[y+28>>2]=c[k+28>>2];xu(a,b,d,e+1|0,n,s,t,o,y);break}q=i/v;if(0){A=c[15686]|0;c[u>>2]=e;h[u+8>>3]=i;h[u+16>>3]=v;h[u+24>>3]=q;f1(A,92728,u)|0}n=+h[w>>3];if(v==n){o=1.0/q;p=k+8|0;n=+h[k>>3]-n*.5;m=0;while(1){if((m|0)>=(e|0))break;h[d+(m<<5)+24>>3]=q;B=+h[b+(m<<3)>>3]*o;h[d+(m<<5)+16>>3]=B;h[d+(m<<5)+8>>3]=(+h[x>>3]-q)*.5+ +h[p>>3];h[d+(m<<5)>>3]=B*.5+n;n=B+n;m=m+1|0}h[p>>3]=+h[p>>3]-q*.5;m=1}else{o=1.0/q;n=+h[x>>3]*.5+ +h[k+8>>3];m=0;while(1){if((m|0)>=(e|0))break;h[d+(m<<5)+16>>3]=q;B=+h[b+(m<<3)>>3]*o;h[d+(m<<5)+24>>3]=B;h[d+(m<<5)>>3]=(q-+h[w>>3])*.5+ +h[k>>3];h[d+(m<<5)+8>>3]=n-B*.5;n=n-B;m=m+1|0}h[k>>3]=+h[k>>3]+q*.5;m=0}A=k+16+(m<<3)|0;h[A>>3]=+h[A>>3]-q;c[y>>2]=c[k>>2];c[y+4>>2]=c[k+4>>2];c[y+8>>2]=c[k+8>>2];c[y+12>>2]=c[k+12>>2];c[y+16>>2]=c[k+16>>2];c[y+20>>2]=c[k+20>>2];c[y+24>>2]=c[k+24>>2];c[y+28>>2]=c[k+28>>2];xu(a-e|0,b+(e<<3)|0,d+(e<<5)|0,0,0.0,0.0,0.0,1.0,y)}while(0);l=z;return}function yu(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h[a+16>>3]=d;h[a+24>>3]=e;return}function zu(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;D=l;l=l+96|0;C=D+48|0;B=D+24|0;A=D+16|0;z=D+8|0;u=D+80|0;v=D;w=a+16|0;x=d+4|0;y=u+4|0;s=Ry(a)|0;e=0;f=0;i=0;j=0;while(1){if(!s)break;t=Dx(a,s)|0;q=e;r=j;while(1){if(!t)break;e=(b[(c[t+16>>2]|0)+168>>1]|0)==0;do if((s|0)==(c[((c[t>>2]&3|0)==2?t:t+-48|0)+40>>2]|0))if(e){j=q;e=r}else{if(!f){e=tH(96)|0;c[e+84>>2]=tH((($x(a)|0)<<5)+11520|0)|0;f=e}else e=r;Lm(f,t,c[(c[w>>2]|0)+248>>2]|0);j=q}else if(!e){i=Au(t,d)|0;j=i+8|0;if(ls(c[j>>2]|0,c[i>>2]|0)|0){k=rU(c[j>>2]|0,c[i>>2]|0)|0;if(!k){Ow(0,92781,z)|0;j=1;e=r;break}else e=t;while(1){if(!e)break;E=e+16|0;F=(c[E>>2]|0)+144|0;Rm(v,e,k,0,c[j>>2]|0,c[i>>2]|0);H=v;G=c[H+4>>2]|0;c[F>>2]=c[H>>2];c[F+4>>2]=G;Tm(a,e,c[j>>2]|0,c[i>>2]|0,0);e=c[(c[E>>2]|0)+172>>2]|0}Bu(i);j=q;e=r;break}if(!q){pq(u,a);e=XD(a,8,8)|0;Ow(0,92865,A)|0;n=+(e|0);o=+g[d>>2];p=+g[x>>2];if(!(o>=n)&!(p>=n)){m=+g[u>>2];n=+g[y>>2];if(!(!(m<=o)&!(n<=p))){h[C>>3]=m;h[C+8>>3]=n;h[C+16>>3]=o;h[C+24>>3]=p;Ow(3,92981,C)|0}}else{c[B>>2]=e;h[B+8>>3]=o;h[B+16>>3]=p;Ow(3,92931,B)|0}j=1;e=r}else{j=q;e=r}}else{j=q;e=r}while(0);t=Fx(a,t)|0;q=j;r=e}s=Sy(a,s)|0;e=q;j=r}Cu(i);if(f|0){C_(c[f+84>>2]|0);C_(j)}l=D;return e|0}function Au(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+16|0;m=p+4|0;n=p;e=c[b>>2]&3;f=c[((e|0)==2?b:b+-48|0)+40>>2]|0;e=c[((e|0)==3?b:b+48|0)+40>>2]|0;q=f+16|0;h=c[(c[q>>2]|0)+212>>2]|0;c[m>>2]=h;i=e+16|0;g=c[(c[i>>2]|0)+212>>2]|0;c[n>>2]=g;k=tH(12)|0;b=h;j=g;if(a[(c[q>>2]|0)+118>>0]|0){b=c[(c[(c[b+16>>2]|0)+140>>2]|0)+48>>2]|0;c[m>>2]=b;f=h;h=b}if(!(a[(c[i>>2]|0)+118>>0]|0))i=j;else{i=c[(c[(c[j+16>>2]|0)+140>>2]|0)+48>>2]|0;c[n>>2]=i;e=g;g=i}h=c[(c[(c[h+16>>2]|0)+140>>2]|0)+44>>2]|0;g=c[(c[(c[g+16>>2]|0)+140>>2]|0)+44>>2]|0;if((h|0)<=(g|0))if((g|0)>(h|0)){Du(k,g,e,h,n,d);b=c[n>>2]|0;g=b;e=n;o=11}else h=i;else{Du(k,h,f,g,m,d);b=c[m>>2]|0;f=b;g=e;e=m;o=11}while(1){if((o|0)==11){c[e>>2]=c[(c[(c[b+16>>2]|0)+140>>2]|0)+48>>2];e=g;b=c[m>>2]|0;h=c[n>>2]|0}if((b|0)==(h|0))break;Eu(k,b,0,f,d);Eu(k,h,e,0,d);c[m>>2]=c[(c[(c[b+16>>2]|0)+140>>2]|0)+48>>2];f=b;g=h;e=n;b=h;o=11}Eu(k,h,e,f,d);l=p;return k|0}function Bu(a){a=a|0;c[a>>2]=0;return}function Cu(a){a=a|0;if(a|0){C_(c[a+8>>2]|0);C_(a)}return}function Du(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=f;while(1){h=c[i>>2]|0;if((b|0)<=(e|0))break;Eu(a,h,d,0,g);b=b+-1|0;i=(c[(c[h+16>>2]|0)+140>>2]|0)+48|0;d=h}c[f>>2]=d;return}function Eu(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=Ry(d)|0;while(1){if(!h)break;i=c[h+16>>2]|0;if(!((h|0)==(f|0)|((h|0)==(e|0)?1:(c[i+212>>2]|0)!=(d|0)))?(a[i+118>>0]|0)==0:0)Fu(b,Om(h,g,0)|0);h=Sy(d,h)|0}i=d+16|0;d=1;while(1){h=c[i>>2]|0;if((d|0)>(c[h+180>>2]|0))break;h=c[(c[h+184>>2]|0)+(d<<2)>>2]|0;if(!((h|0)==(e|0)|(h|0)==(f|0)))Fu(b,Gu(h,g)|0);d=d+1|0}return}function Fu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+4|0;f=c[e>>2]|0;g=a+8|0;d=c[g>>2]|0;do if((f|0)==(c[a>>2]|0))if(!d){d=uH(400)|0;c[g>>2]=d;c[e>>2]=100;break}else{c[e>>2]=f<<1;d=wH(d,f<<3)|0;c[g>>2]=d;break}while(0);g=c[a>>2]|0;c[a>>2]=g+1;c[d+(g<<2)>>2]=b;return}function Gu(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0,o=0.0,p=0.0;m=tH(8)|0;b=c[b+16>>2]|0;e=+h[b+16>>3];l=+h[b+24>>3];f=+h[b+32>>3];k=+h[b+40>>3];c[m+4>>2]=4;b=tH(64)|0;c[m>>2]=b;if(!(a[d+8>>0]|0)){p=+g[d>>2];o=+g[d+4>>2];i=(f+e)*.5*(p+-1.0);n=(k+l)*.5*(o+-1.0);j=e*p-i;i=f*p-i;f=k*o-n;e=l*o-n}else{i=+g[d>>2];p=+g[d+4>>2];j=e-i;i=f+i;f=k+p;e=l-p}h[b>>3]=j;h[b+8>>3]=e;h[b+16>>3]=j;h[b+24>>3]=f;h[b+32>>3]=i;h[b+40>>3]=f;h[b+48>>3]=i;h[b+56>>3]=e;return m|0}function Hu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;o=l;l=l+160|0;n=o+16|0;j=o+8|0;g=o;k=o+24|0;m=tH($x(b)|0)|0;h=b+16|0;f=c[c[(c[h>>2]|0)+140>>2]>>2]|0;a:do if(!f){g=0;f=0}else{p=qy(b)|0;i=c[46152]|0;c[g>>2]=p;c[g+4>>2]=i;X0(k,93041,g)|0;i=uA(b,k,1)|0;zz(i,134401,280,1)|0;g=tH(56)|0;c[(c[i+16>>2]|0)+140>>2]=g;c[g>>2]=f;c[g+4>>2]=c[(c[(c[h>>2]|0)+140>>2]|0)+4>>2];while(1){g=c[f+4>>2]|0;if(!g){g=i;f=1;break a}if(!(a[m+(c[(c[g+16>>2]|0)+120>>2]|0)>>0]|0))Iu(b,g,i,m);f=f+16|0}}while(0);h=0;i=Ry(b)|0;while(1){if(!i)break;p=c[i+16>>2]|0;if((a[m+(c[p+120>>2]|0)>>0]|0)==0?(a[p+119>>0]|0)==3:0){if(!g){p=qy(b)|0;g=(c[46152]|0)+f|0;c[j>>2]=p;c[j+4>>2]=g;X0(k,93041,j)|0;g=uA(b,k,1)|0;zz(g,134401,280,1)|0;p=tH(56)|0;c[(c[g+16>>2]|0)+140>>2]=p;f=f+1|0}Iu(b,i,g,m);h=1}i=Sy(b,i)|0}if(g|0)uD(g)|0;g=Ry(b)|0;while(1){if(!g)break;if(!(a[m+(c[(c[g+16>>2]|0)+120>>2]|0)>>0]|0)){j=qy(b)|0;p=(c[46152]|0)+f|0;c[n>>2]=j;c[n+4>>2]=p;X0(k,93049,n)|0;p=uA(b,k,1)|0;zz(p,134401,280,1)|0;j=tH(56)|0;c[(c[p+16>>2]|0)+140>>2]=j;Iu(b,g,p,m);uD(p)|0;f=f+1|0}g=Sy(b,g)|0}C_(m);c[46152]=(c[46152]|0)+f;if(d|0)c[d>>2]=f;if(e|0)c[e>>2]=h;i=tH((f<<2)+4|0)|0;h=i;g=vA(b)|0;while(1){if(!g)break;c[h>>2]=g;h=h+4|0;g=wA(g)|0;f=f+-1|0}if(!f){c[h>>2]=0;l=o;return i|0}else qa(93057,93068,134,93075);return 0}function Iu(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a[f+(c[(c[d+16>>2]|0)+120>>2]|0)>>0]=1;Wy(e,d,1)|0;i=Ix(b,d)|0;while(1){if(!i)break;h=c[i>>2]&3;g=c[((h|0)==3?i:i+48|0)+40>>2]|0;if((g|0)==(d|0))g=c[((h|0)==2?i:i+-48|0)+40>>2]|0;if(!(a[f+(c[(c[g+16>>2]|0)+120>>2]|0)>>0]|0))Iu(b,g,e,f);i=Jx(b,i,d)|0}return}function Ju(a){a=a|0;var b=0;b=uH(24)|0;c[46153]=b;c[b>>2]=Bw(18100,c[4555]|0)|0;c[b+16>>2]=0;c[b+12>>2]=0;c[b+4>>2]=Ku(a)|0;return b|0}function Ku(a){a=a|0;var b=0,d=0;b=uH(16)|0;c[b+12>>2]=0;d=uH(a*20|0)|0;c[b>>2]=d;c[b+8>>2]=d+(a*20|0);c[b+4>>2]=d;return b|0}function Lu(a,b,d){a=a|0;b=b|0;d=d|0;d=Nu(c[46153]|0)|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=0;return d|0}function Mu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=(c[b>>2]|0)-(c[d>>2]|0)|0;if(!a)a=(c[b+4>>2]|0)-(c[d+4>>2]|0)|0;return a|0}function Nu(a){a=a|0;var b=0,d=0,e=0,f=0;f=a+8|0;a=c[f>>2]|0;b=c[a+4>>2]|0;if((b|0)==(c[a+8>>2]|0)){d=a+12|0;e=c[d>>2]|0;if(!e){a=Ku(((b-(c[a>>2]|0)|0)/20|0)<<1)|0;c[d>>2]=a}else a=e;c[f>>2]=a;b=c[a>>2]|0;c[a+4>>2]=b}c[a+4>>2]=b+20;return b|0}function Ou(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+12|0;d=c[f>>2]|0;if((d|0)<(b|0)){e=d<<1;e=(e|0)<(b|0)?b:e;b=a+16|0;d=c[b>>2]|0;if(d|0)C_(d);c[b>>2]=uH(e<<3)|0;c[f>>2]=e}return}function Pu(a){a=a|0;var b=0;b=c[a>>2]|0;nb[c[b>>2]&63](b,0,64)|0;c[a+20>>2]=c[a+16>>2];b=c[a+4>>2]|0;c[a+8>>2]=b;c[b+4>>2]=c[b>>2];return}function Qu(a){a=a|0;xw(c[a>>2]|0)|0;Ru(c[a+4>>2]|0);C_(c[a+16>>2]|0);C_(a);return}function Ru(a){a=a|0;var b=0;while(1){if(!a)break;b=c[a+12>>2]|0;C_(c[a>>2]|0);C_(a);a=b}return}function Su(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g;h=g+12|0;c[h>>2]=b;c[h+4>>2]=d;i=c[a>>2]|0;h=(nb[c[i>>2]&63](i,h,1)|0)+8|0;c[h>>2]=Tu(a,e,c[h>>2]|0)|0;if(0>2){i=c[15686]|0;h=qy(e)|0;c[f>>2]=b;c[f+4>>2]=d;c[f+8>>2]=h;f1(i,93085,f)|0}l=g;return}function Tu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=a+20|0;a=c[e>>2]|0;c[e>>2]=a+8;c[a>>2]=b;c[a+4>>2]=d;return a|0}function Uu(a,b){a=a|0;b=b|0;Iw(c[a>>2]|0,b,a)|0;return}function Vu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+32|0;f=e;c[f>>2]=b;c[f+4>>2]=d;d=c[a>>2]|0;d=nb[c[d>>2]&63](d,f,4)|0;l=e;return d|0}function Wu(a,b){a=a|0;b=b|0;if(($x(a)|0)==1){a=c[(c[(Ry(a)|0)+16>>2]|0)+132>>2]|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}else{Xu(a);if(!((PL(wx(b,93102)|0)|0)<<24>>24))b=sv(a,183128)|0;else b=Yu(a)|0;Bv(a,b,183128);Zu(b)}return}function Xu(a){a=a|0;var b=0;b=dz(c[c[(c[(Ry(a)|0)+16>>2]|0)+112>>2]>>2]|0)|0;a=c[46154]|0;if((b|0)!=(a|0)){c[45785]=0;c[46154]=b;c[46155]=mx(b,0,93111,0)|0;c[46156]=mx(c[46154]|0,1,93119,0)|0;c[46157]=mx(c[46154]|0,1,93136,0)|0;a=c[46154]|0}c[46158]=wx(a,93136)|0;mv(183128);c[45784]=1;h[22895]=+KL(c[46154]|0,c[46155]|0,1.0,0.0);c[45786]=c[46156];c[45787]=c[46157];c[45788]=c[46158];return}function Yu(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+144|0;e=f;d=f+8|0;b=c[45785]|0;c[45785]=b+1;c[e>>2]=b;X0(d,93152,e)|0;d=nv(uA(a,d,1)|0)|0;e=d+8|0;b=Ry(a)|0;while(1){if(!b)break;Wy(c[e>>2]|0,b,1)|0;c[(c[(c[b+16>>2]|0)+112>>2]|0)+12>>2]=d;b=Sy(a,b)|0}l=f;return d|0}function Zu(a){a=a|0;Av(a);return}function _u(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;$u(f,c);av(a,b,c,f);bv(b,f,d);cv(f);l=e;return}function $u(a,b){a=a|0;b=b|0;c[a>>2]=uH(b<<4)|0;c[a+4>>2]=b;c[a+8>>2]=0;return}function av(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=l;l=l+64|0;r=D+32|0;u=D+48|0;v=D+16|0;w=D;t=b<<2;A=uH(t)|0;C=uH(t)|0;c[v>>2]=0;c[v+4>>2]=0;c[v+8>>2]=0;c[v+12>>2]=0;s=uH(t)|0;t=uH(t)|0;f=0;while(1){if((f|0)>=(b|0))break;c[s+(f<<2)>>2]=f;f=f+1|0}q=b+-1|0;is(a,s,0,q);f=0;while(1){if((f|0)>=(b|0))break;c[t+(c[s+(f<<2)>>2]<<2)>>2]=f;f=f+1|0}ev(u,a,s,b);f=1;while(1){if((f|0)>=(b|0)){f=0;break}c[A+(c[s+(f<<2)>>2]<<2)>>2]=c[s+(f+-1<<2)>>2];f=f+1|0}while(1){if((f|0)>=(q|0))break;p=f+1|0;c[C+(c[s+(f<<2)>>2]<<2)>>2]=c[s+(p<<2)>>2];f=p}k=e+8|0;m=e+4|0;n=v+4|0;o=w+4|0;p=w+8|0;j=0;while(1){if((j|0)>=(d|0))break;if(!((fv(u,v)|0)<<24>>24))break;f=c[k>>2]|0;b=c[m>>2]|0;if((f|0)<(b|0))b=c[e>>2]|0;else{c[m>>2]=b<<1;b=E_(c[e>>2]|0,b<<5)|0;c[e>>2]=b;f=c[k>>2]|0}c[k>>2]=f+1;f=b+(f<<4)|0;c[f>>2]=c[v>>2];c[f+4>>2]=c[v+4>>2];c[f+8>>2]=c[v+8>>2];c[f+12>>2]=c[v+12>>2];f=c[v>>2]|0;b=c[t+(f<<2)>>2]|0;g=c[n>>2]|0;i=c[t+(g<<2)>>2]|0;if((b|0)>0?(x=c[s+(b+-1<<2)>>2]|0,y=C+(x<<2)|0,(c[t+(c[y>>2]<<2)>>2]|0)<(i|0)):0){c[w>>2]=x;c[o>>2]=g;h[p>>3]=+h[a+(g<<3)>>3]-+h[a+(x<<3)>>3];c[r>>2]=c[w>>2];c[r+4>>2]=c[w+4>>2];c[r+8>>2]=c[w+8>>2];c[r+12>>2]=c[w+12>>2];gv(u,r);c[y>>2]=g;c[A+(g<<2)>>2]=x}if((i|0)<(q|0)?(z=c[s+(i+1<<2)>>2]|0,B=A+(z<<2)|0,(c[t+(c[B>>2]<<2)>>2]|0)>(b|0)):0){c[w>>2]=f;c[o>>2]=z;h[p>>3]=+h[a+(z<<3)>>3]-+h[a+(f<<3)>>3];c[r>>2]=c[w>>2];c[r+4>>2]=c[w+4>>2];c[r+8>>2]=c[w+8>>2];c[r+12>>2]=c[w+12>>2];gv(u,r);c[B>>2]=f;c[C+(f<<2)>>2]=z}j=j+1|0}C_(A);C_(C);C_(s);C_(t);hv(u);l=D;return}function bv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=uH(a<<2)|0;l=b+8|0;i=c[l>>2]|0;j=(i<<1)+a|0;h=j<<2;e=uH(h)|0;h=uH(h)|0;f=0;while(1){if((f|0)>=(a|0))break;c[k+(f<<2)>>2]=1;f=f+1|0}f=0;while(1){if((f|0)>=(i|0)){f=0;break}n=c[b>>2]|0;m=c[n+(f<<4)+4>>2]|0;n=k+(c[n+(f<<4)>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+1;m=k+(m<<2)|0;c[m>>2]=(c[m>>2]|0)+1;f=f+1|0}while(1){if((f|0)>=(j|0))break;g[h+(f<<2)>>2]=1.0;f=f+1|0}i=uH(a*20|0)|0;c[d>>2]=i;f=0;while(1){if((f|0)>=(a|0))break;c[i+(f*20|0)>>2]=1;c[i+(f*20|0)+8>>2]=h;c[i+(f*20|0)+4>>2]=e;c[e>>2]=f;g[h>>2]=0.0;n=c[k+(f<<2)>>2]|0;h=h+(n<<2)|0;e=e+(n<<2)|0;f=f+1|0}C_(k);while(1){e=c[l>>2]|0;if(!e)break;n=e+-1|0;c[l>>2]=n;m=c[b>>2]|0;dv(i,c[m+(n<<4)>>2]|0,c[m+(n<<4)+4>>2]|0)}return}function cv(a){a=a|0;C_(c[a>>2]|0);return}function dv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0;f=a+(b*20|0)|0;h=c[f>>2]|0;i=c[a+(b*20|0)+4>>2]|0;e=0;while(1){if((e|0)>=(h|0)){j=4;break}if((c[i+(e<<2)>>2]|0)==(d|0))break;else e=e+1|0}if((j|0)==4?(c[f>>2]=h+1,c[i+(h<<2)>>2]=d,i=c[a+(d*20|0)+4>>2]|0,h=a+(d*20|0)|0,j=c[h>>2]|0,c[h>>2]=j+1,c[i+(j<<2)>>2]=b,c[a+8>>2]|0):0){j=c[a+(b*20|0)+8>>2]|0;g[j>>2]=+g[j>>2]+-1.0;j=c[a+(d*20|0)+8>>2]|0;g[j>>2]=+g[j>>2]+-1.0}return}function ev(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0,k=0,l=0;f=e+-1|0;c[a+4>>2]=f;c[a+8>>2]=f;c[a>>2]=uH(f<<4)|0;e=0;while(1){if((e|0)>=(f|0))break;l=c[d+(e<<2)>>2]|0;g=e+1|0;k=c[d+(g<<2)>>2]|0;j=+h[b+(k<<3)>>3]-+h[b+(l<<3)>>3];i=c[a>>2]|0;c[i+(e<<4)>>2]=l;c[i+(e<<4)+4>>2]=k;h[i+(e<<4)+8>>3]=j;e=g}e=(f|0)/2|0;while(1){if((e|0)<=-1)break;iv(a,e);e=e+-1|0}return}function fv(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;if(!(c[d>>2]|0))a=0;else{e=c[a>>2]|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];b=c[a>>2]|0;e=b+((c[d>>2]|0)+-1<<4)|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];c[d>>2]=(c[d>>2]|0)+-1;iv(a,0);a=1}return a|0}function gv(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n;j=a+4|0;g=c[j>>2]|0;d=a+8|0;if((g|0)==(c[d>>2]|0)){c[d>>2]=g<<1;d=E_(c[a>>2]|0,g<<5)|0;c[a>>2]=d;k=a;i=c[j>>2]|0}else{k=a;i=g;d=c[a>>2]|0}c[j>>2]=i+1;j=d+(g<<4)|0;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];while(1){if((g|0)<=0)break;d=c[k>>2]|0;e=+h[d+(g<<4)+8>>3];a=g>>>1;f=+h[d+(a<<4)+8>>3];if(!(e>2]|0}j=d+(g<<4)|0;c[m>>2]=c[j>>2];c[m+4>>2]=c[j+4>>2];c[m+8>>2]=c[j+8>>2];c[m+12>>2]=c[j+12>>2];b=d+(a<<4)|0;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];j=(c[k>>2]|0)+(a<<4)|0;c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];g=a}l=n;return}function hv(a){a=a|0;C_(c[a>>2]|0);return}function iv(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;i=m;j=a+4|0;while(1){d=b<<1;g=d|1;if((d|0)<(c[j>>2]|0)){n=c[a>>2]|0;e=+h[n+(d<<4)+8>>3];f=+h[n+(b<<4)+8>>3];if(!(e>2]|0)){n=c[a>>2]|0;e=+h[n+(g<<4)+8>>3];f=+h[n+(d<<4)+8>>3];if(!(e>2]|0;n=g+(d<<4)|0;c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];c[i+12>>2]=c[n+12>>2];g=g+(b<<4)|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];n=(c[a>>2]|0)+(b<<4)|0;c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];b=d}l=m;return}function jv(a,b,d,e,f,g,i,j){a=a|0;b=b|0;d=+d;e=+e;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0.0;l=(f|0)!=0;if(!l){f=uH(b<<3)|0;if(!(jt(a,b,f,b)|0))m=3;else{a=1;m=17}}else m=3;if((m|0)==3){k=tH(b<<2)|0;c[g>>2]=k;a=0;while(1){if((a|0)>=(b|0))break;c[k+(a<<2)>>2]=a;a=a+1|0}a=b+-1|0;is(f,k,0,a);n=+h[f+(c[k>>2]<<3)>>3];e=(+h[f+(c[k+(a<<2)>>2]<<3)>>3]-n)*e/+(a|0);e=e=(b|0))break;n=+h[f+(c[k+(g<<2)>>2]<<3)>>3];a=a+(n-d>e&1)|0;g=g+1|0;d=n}c[j>>2]=a;a:do if(!a){k=uH(4)|0;c[i>>2]=k;c[k>>2]=b}else{j=uH(a<<2)|0;c[i>>2]=j;a=0;g=1;while(1){if((g|0)>=(b|0))break a;if(+h[f+(c[k+(g<<2)>>2]<<3)>>3]-+h[f+(c[k+(g+-1<<2)>>2]<<3)>>3]>e){c[j+(a<<2)>>2]=g;a=a+1|0}g=g+1|0}}while(0);if(l)a=0;else{a=0;m=17}}if((m|0)==17)C_(f);return a|0}function kv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=c[46159]|0;if(d|0)wn(d);c[46159]=vn(b,b,0.0)|0;d=c[46160]|0;if(d|0)C_(d);c[46160]=tH(b<<2)|0;d=c[46161]|0;if(d|0)C_(d);n=tH(b<<3)|0;c[46161]=n;o=c[46159]|0;p=c[46160]|0;i=0;while(1){if((i|0)>=(b|0)){e=10;break}e=a+(i<<2)|0;g=o+(i<<2)|0;f=0.0;d=0;while(1){if((d|0)==(b|0))break;j=+h[(c[e>>2]|0)+(d<<3)>>3];h[(c[g>>2]|0)+(d<<3)>>3]=j;j=+B(+j);f=f>3]=1.0/f;c[p+(i<<2)>>2]=i;i=i+1|0}a:do if((e|0)==10){m=b+-1|0;d=0;l=0;b:while(1){if((l|0)<(m|0)){e=l;k=d;f=0.0}else break;while(1){if((e|0)>=(b|0))break;a=c[p+(e<<2)>>2]|0;j=+B(+(+h[(c[o+(a<<2)>>2]|0)+(l<<3)>>3]));j=+h[n+(a<<3)>>3]*j;a=f>2]|0;a=p+(k<<2)|0;c[d>>2]=c[a>>2];c[a>>2]=i}g=c[o+(c[d>>2]<<2)>>2]|0;a=l+1|0;f=1.0/+h[g+(l<<3)>>3];e=a;while(1){if((e|0)>=(b|0)){d=k;l=a;continue b}i=c[o+(c[p+(e<<2)>>2]<<2)>>2]|0;d=i+(l<<3)|0;j=+h[d>>3]*f;h[d>>3]=j;c:do if(j!=0.0){d=a;while(1){if((d|0)>=(b|0))break c;q=i+(d<<3)|0;h[q>>3]=+h[q>>3]-+h[g+(d<<3)>>3]*j;d=d+1|0}}while(0);e=e+1|0}}d=+h[(c[o+(c[p+(m<<2)>>2]<<2)>>2]|0)+(m<<3)>>3]!=0.0&1}else if((e|0)==15){h[n+(i<<3)>>3]=0.0;d=0}while(0);return d|0}function lv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0,k=0,l=0;k=c[46159]|0;l=c[46160]|0;j=0;while(1){if((j|0)>=(d|0)){e=d;break}g=c[l+(j<<2)>>2]|0;i=k+(g<<2)|0;f=0.0;e=0;while(1){if((e|0)==(j|0))break;f=+h[a+(e<<3)>>3]*+h[(c[i>>2]|0)+(e<<3)>>3]+f;e=e+1|0}h[a+(j<<3)>>3]=+h[b+(g<<3)>>3]-f;j=j+1|0}while(1){b=e+-1|0;if((e|0)<=0)break;g=l+(b<<2)|0;f=0.0;while(1){if((e|0)>=(d|0))break;f=+h[a+(e<<3)>>3]*+h[(c[k+(c[g>>2]<<2)>>2]|0)+(e<<3)>>3]+f;e=e+1|0}e=a+(b<<3)|0;h[e>>3]=(+h[e>>3]-f)/+h[(c[k+(c[g>>2]<<2)>>2]|0)+(b<<3)>>3];e=b}return}function mv(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;return}function nv(a){a=a|0;var b=0;b=tH(64)|0;mv(b+36|0);c[b+8>>2]=a;return b|0}function ov(a){a=a|0;if(a|0){Kv(c[a+32>>2]|0);C_(a)}return}function pv(a){a=a|0;return $x(c[a+8>>2]|0)|0}function qv(a,b){a=a|0;b=b|0;var d=0,e=0;c[b+4>>2]=0;d=a+4|0;e=c[d>>2]|0;c[((e|0)==0?a:e+4|0)>>2]=b;c[d>>2]=b;return}function rv(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;if(!d){c[a>>2]=b;a=a+4|0}else c[b+4>>2]=d;c[a>>2]=b;return}function sv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;tv(a,b);j=c[b>>2]|0;h=c[j+4>>2]|0;while(1){if(!h)break;k=c[h+8>>2]|0;i=Ry(k)|0;d=c[(c[i+16>>2]|0)+112>>2]|0;a=c[d+16+4>>2]|0;d=c[d+8>>2]|0;f=i;i=Sy(k,i)|0;while(1){if(!i)break;e=c[(c[i+16>>2]|0)+112>>2]|0;g=c[e+16+4>>2]|0;if((g|0)<(a|0)){f=i;d=c[e+8>>2]|0;a=g}i=Sy(k,i)|0}i=c[(c[d+16>>2]|0)+112>>2]|0;k=i+4|0;c[k>>2]=c[k>>2]|8;c[h>>2]=f;k=c[h+4>>2]|0;qv((c[i+12>>2]|0)+36|0,h);h=k}mv(b);return j|0}function tv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;g=i+8|0;e=c[b+24>>2]|0;if(!((e|0)!=0?(d=$y(a,e,0)|0,(d|0)!=0):0))f=3;a:do if((f|0)==3){e=b+20|0;b:do if(c[e>>2]|0){d=Ry(a)|0;while(1){if(!d)break b;if((OL(c[c[(c[d+16>>2]|0)+112>>2]>>2]|0,c[e>>2]|0,0)|0)<<24>>24)break a;d=Sy(a,d)|0}}while(0);d=Ry(a)|0}while(0);if(0){f=c[15686]|0;c[h>>2]=qy(d)|0;f1(f,93141,h)|0}c[g+4>>2]=0;c[g>>2]=0;uv(a,d,b,1,g);l=i;return}function uv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=d+8|0;k=c[l>>2]|0;c[l>>2]=k+1;l=b+16|0;c[(c[(c[l>>2]|0)+112>>2]|0)+16+4>>2]=k;c[(c[(c[l>>2]|0)+112>>2]|0)+24>>2]=k;k=(e|0)==0;j=Ix(a,b)|0;while(1){if(!j)break;e=c[j>>2]&3;g=c[((e|0)==2?j:j+-48|0)+40>>2]|0;if((g|0)==(b|0)){e=c[((e|0)==3?j:j+48|0)+40>>2]|0;g=c[(c[j+16>>2]|0)+120>>2]|0;if(!(c[g>>2]|0))c[g>>2]=-1}else{e=c[(c[j+16>>2]|0)+120>>2]|0;if(!(c[e>>2]|0)){c[e>>2]=1;e=g}else e=g}g=e+16|0;h=c[(c[g>>2]|0)+112>>2]|0;i=c[h+16+4>>2]|0;do if(!i){c[h+8>>2]=b;vv(f,j);uv(a,e,d,0,f);i=(c[(c[l>>2]|0)+112>>2]|0)+24|0;c[i>>2]=c[(c[(c[((c[i>>2]|0)<(c[(c[(c[g>>2]|0)+112>>2]|0)+24>>2]|0)?b:e)+16>>2]|0)+112>>2]|0)+24>>2];if((c[(c[(c[g>>2]|0)+112>>2]|0)+24>>2]|0)>=(c[(c[(c[l>>2]|0)+112>>2]|0)+16+4>>2]|0)){e=0;do{h=wv(f)|0;g=(c[c[(c[h+16>>2]|0)+120>>2]>>2]|0)==1;g=c[((c[h>>2]&3|0)==((g?2:3)|0)?h:h+((g?-1:1)*48|0)|0)+40>>2]|0;if(!(c[(c[(c[g+16>>2]|0)+112>>2]|0)+12>>2]|0)){if(!e)e=xv(a,d)|0;yv(e,g)}}while((h|0)!=(j|0));if(e|0){if((c[(c[(c[l>>2]|0)+112>>2]|0)+12>>2]|0)==0?(pv(e)|0)>1:0)yv(e,b);if(!k?(c[(c[(c[l>>2]|0)+112>>2]|0)+12>>2]|0)==(e|0):0){rv(d,e);break}qv(d,e)}}}else{g=c[(c[l>>2]|0)+112>>2]|0;if((c[g+8>>2]|0)!=(e|0)){h=g+24|0;g=c[h>>2]|0;c[h>>2]=(g|0)<(i|0)?g:i}}while(0);j=Jx(a,j,b)|0}if(!k?(c[(c[(c[l>>2]|0)+112>>2]|0)+12>>2]|0)==0:0){l=xv(a,d)|0;yv(l,b);rv(d,l)}return}function vv(a,b){a=a|0;b=b|0;c[(c[(c[b+16>>2]|0)+120>>2]|0)+4>>2]=c[a>>2];c[a>>2]=b;b=a+4|0;c[b>>2]=(c[b>>2]|0)+1;return}function wv(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;if(!b)qa(135312,93172,65,93184);d=a+4|0;e=c[d>>2]|0;if((e|0)>0){c[a>>2]=c[(c[(c[b+16>>2]|0)+120>>2]|0)+4>>2];c[d>>2]=e+-1;return b|0}else qa(93162,93172,61,93184);return 0}function xv(a,b){a=a|0;b=b|0;return nv(zv(a,b)|0)|0}function yv(a,b){a=a|0;b=b|0;Wy(c[a+8>>2]|0,b,1)|0;c[(c[(c[b+16>>2]|0)+112>>2]|0)+12>>2]=a;return}function zv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+144|0;f=d;e=d+8|0;g=b+12|0;b=c[g>>2]|0;c[g>>2]=b+1;c[f>>2]=b;X0(e,93152,f)|0;b=uA(a,e,1)|0;zz(b,134401,280,1)|0;l=d;return b|0}function Av(a){a=a|0;var b=0,d=0;b=c[a+36>>2]|0;while(1){if(!b)break;d=c[b+4>>2]|0;Av(b);b=d}ov(a);return}function Bv(a,b,c){a=a|0;b=b|0;c=c|0;Cv(a,b,+h[c+32>>3]);return}function Cv(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0;e=b+36|0;f=0;while(1){e=c[e>>2]|0;if(!e)break;Cv(a,e,d);e=e+4|0;f=f+1|0}e=Uv(a,b,d)|0;c[b+32>>2]=e;a=Rv(e)|0;if((f|0)>0)d=+Dv(f,a,e,b,d);else d=3.141592653589793;if((((a|0)==1?(g=c[b>>2]|0,g|0):0)?c[(c[(c[g+16>>2]|0)+112>>2]|0)+8>>2]|0:0)?(i=b+48|0,h[i>>3]=d,d<0.0):0)h[i>>3]=d+6.283185307179586;return}function Dv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+48|0;t=v;u=tH(a*56|0)|0;c[t+40>>2]=c[e+36>>2];p=e+16|0;j=+h[p>>3];q=t+8|0;h[q>>3]=j;h[t>>3]=j;c[t+44>>2]=c[e>>2];j=6.283185307179586/+(b|0);h[t+16>>3]=j;r=t+24|0;h[r>>3]=-1.0;s=t+32|0;h[s>>3]=-1.0;k=0;o=0;g=0.0;while(1){i=c[d>>2]|0;if(!i)break;d=c[i>>2]|0;if(!(c[(c[(c[d+16>>2]|0)+112>>2]|0)+4>>2]&8))d=o;else{n=u+(o*56|0)|0;c[n>>2]=d;h[u+(o*56|0)+8>>3]=j*+(k|0);d=o+1|0;g=+Ev(n,t,f)}k=k+1|0;o=d;d=i+4|0}a:do switch(o|0){case 1:{h[u+40>>3]=1.0;d=0;break}case 2:{j=+h[u+64>>3]-+h[u+8>>3];Fv(u,u+56|0,j>3.141592653589793?6.283185307179586-j:j);d=0;break}default:{n=u+8|0;m=u;d=0;while(1){if((d|0)>=(o|0)){d=0;break a}d=d+1|0;if((d|0)==(o|0)){i=u;j=+h[n>>3]+6.283185307179586-+h[m+8>>3];k=m+56|0}else{k=m+56|0;i=k;j=+h[m+64>>3]-+h[m+8>>3]}Fv(m,i,j);m=k}}}while(0);while(1){if((d|0)>=(o|0))break;Gv(u+(d*56|0)|0,t,b,f);d=d+1|0}C_(u);if((a|0)==1){f=g+f*.5;Hv(e,-f,0.0,0.0);h[p>>3]=+h[p>>3]+f;u=e+56|0;c[u>>2]=c[u>>2]|1}else h[p>>3]=+h[q>>3];l=v;return +((+h[s>>3]+ +h[r>>3])*.5+-3.141592653589793)}function Ev(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0.0,g=0.0,i=0,j=0,k=0.0;i=0;f=0.0;g=0.0;e=b+40|0;while(1){j=c[e>>2]|0;if(!j)break;e=c[j>>2]|0;if(!e)e=0;else e=c[(c[(c[e+16>>2]|0)+112>>2]|0)+8>>2]|0;if((e|0)==(c[a>>2]|0)){k=+h[j+16>>3];e=i+1|0;f=f+d+k*2.0;g=g>3]=f;c[a+48>>2]=i;h[a+16>>3]=g+d+ +h[b>>3];h[a+24>>3]=g;return +g}function Fv(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0;e=+h[b+16>>3];d=+h[a+16>>3];c=(d*+h[b+32>>3]+e*+h[a+32>>3])/(c*2.0*e*d);c=c<1.0?1.0:c;a=a+40|0;if(c>+h[a>>3])h[a>>3]=c;a=b+40|0;if(c>+h[a>>3])h[a>>3]=c;return}function Gv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0.0,g=0.0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0.0,v=0.0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0.0,G=0.0;z=b+8|0;y=+h[z>>3];A=b+24|0;k=+h[A>>3];B=b+32|0;j=+h[B>>3];f=+h[a+16>>3]*+h[a+40>>3];x=(d|0)==1;if(x){v=+h[a+32>>3];g=v*.15915494309189535;g=f>g?f:g;f=g*6.283185307179586-v;if(f>0.0){e=f/+(c[a+48>>2]|0)+e;l=0.0;f=g}else{l=0.0;f=g}}else l=+h[a+8>>3]-+h[a+32>>3]/(f*2.0);q=+h[a+24>>3]+f;r=q>y;s=a+48|0;t=((c[s>>2]|0)+1|0)/2|0;u=1.0/f;v=e/f*.5;w=a+8|0;n=b+40|0;o=0;p=0.0;g=l;while(1){n=c[n>>2]|0;if(!n)break;i=c[n>>2]|0;if(!i)i=0;else i=c[(c[(c[i+16>>2]|0)+112>>2]|0)+8>>2]|0;if((i|0)==(c[a>>2]|0)?(Rv(c[n+32>>2]|0)|0)>=1:0){l=+h[n+16>>3];m=l*u;do if(!x)if((c[s>>2]|0)==1){g=+h[w>>3];break}else{g=g+v+m;break}else{if(g!=0.0)g=(c[s>>2]|0)==2?3.141592653589793:m+g;j=g;k=k<0.0?g:k}while(0);G=+E(+g)*f;D=+F(+g)*f;Hv(n,G,D,+Iv(n,G,D,g));g=(x?(l+e)*u:m+v)+g;o=o+1|0;i=o;l=(o|0)==(t|0)?g:p}else{i=o;l=p}n=n+4|0;o=i;p=l}f=r?q:y;if((d|0)>1?(C=c[a>>2]|0,(C|0)==(c[b+44>>2]|0)):0)h[(c[(c[C+16>>2]|0)+112>>2]|0)+24>>3]=p;h[z>>3]=f;h[A>>3]=k;h[B>>3]=j;return}function Hv(a,b,d,e){a=a|0;b=+b;d=+d;e=+e;var f=0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0.0;m=c[a+8>>2]|0;n=e!=0.0;f=Ry(m)|0;while(1){if(!f)break;k=c[(c[f+16>>2]|0)+132>>2]|0;i=+h[k>>3];l=k+8|0;g=+h[l>>3];if(n){o=+E(+e);p=+F(+e);j=o*i-p*g;g=p*i+o*g}else j=i;h[k>>3]=j+b;h[l>>3]=g+d;f=Sy(m,f)|0}f=a+36|0;while(1){f=c[f>>2]|0;if(!f)break;Hv(f,b,d,e);f=f+4|0}return}function Iv(a,b,d,e){a=a|0;b=+b;d=+d;e=+e;var f=0.0,g=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0;m=c[a+8>>2]|0;f=+h[a+48>>3];do if(!(f>=0.0)){if((Rv(c[a+32>>2]|0)|0)==2){f=e+-1.5707963267948966;break}l=c[a>>2]|0;n=l+16|0;i=c[(c[n>>2]|0)+132>>2]|0;f=+h[i>>3]+b;k=+h[i+8>>3]+d;f=k*k+f*f;i=Ry(m)|0;g=l;while(1){if(!i)break;if((i|0)!=(l|0)?(o=c[(c[i+16>>2]|0)+132>>2]|0,j=+h[o>>3]+b,k=+h[o+8>>3]+d,j=k*k+j*j,j>3];k=+h[a+16>>3]-j;g=c[n>>2]|0;i=c[g+132>>2]|0;f=+h[i>>3];if(f>-k?(c[a+56>>2]&1|0)!=0:0){d=+C(+(d*d+b*b));b=+K(+(+h[i+8>>3]),+(f+k));f=+E(+b);f=e+1.5707963267948966-b-+I(+((k-j/f)/d*f));break}else{f=+K(+(+h[i+8>>3]),+f);f=e+3.141592653589793-f-+h[(c[g+112>>2]|0)+24>>3];f=f>6.283185307179586?f+-6.283185307179586:f;break}}else f=0.0}else{f=3.141592653589793-f+e;f=f<0.0?f+6.283185307179586:f}while(0);return +f}function Jv(){return tH(12)|0}function Kv(a){a=a|0;var b=0,d=0;if(a|0){b=c[a>>2]|0;while(1){if(!b)break;d=c[b+4>>2]|0;C_(b);b=d}C_(a)}return}function Lv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=Mv(d)|0;d=a+8|0;c[d>>2]=(c[d>>2]|0)+1;d=a+4|0;e=c[d>>2]|0;if((b|0)==0|(e|0)==(b|0)){c[(e|0?e+4|0:a)>>2]=f;c[f+8>>2]=e;e=0}else{e=b+4|0;d=c[e>>2]|0;c[e>>2]=f;c[f+8>>2]=b;e=d;d=d+8|0}c[d>>2]=f;c[f+4>>2]=e;return}function Mv(a){a=a|0;var b=0;b=tH(12)|0;c[b>>2]=a;return b|0}function Nv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=c[a>>2]|0;d=b;while(1){if(!b)break;g=b+4|0;e=c[g>>2]|0;f=b+8|0;c[g>>2]=c[f>>2];c[f>>2]=e;b=e}f=a+4|0;g=c[f>>2]|0;c[f>>2]=d;c[a>>2]=g;return a|0}function Ov(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a>>2]|0;if((d|0)!=(b|0)){f=b+8|0;e=c[f>>2]|0;c[a>>2]=b;c[f>>2]=0;b=a+4|0;a=c[b>>2]|0;c[a+4>>2]=d;c[d+8>>2]=a;c[b>>2]=e;c[e+4>>2]=0}return}function Pv(a){a=a|0;var b=0,d=0,e=0;d=Jv()|0;e=d+4|0;b=0;while(1){a=c[a>>2]|0;if(!a)break;Lv(d,b,c[a>>2]|0);b=c[e>>2]|0;a=a+4|0}return d|0} +function Bb(a){a=a|0;var b=0;b=l;l=l+a|0;l=l+15&-16;return b|0}function Cb(){return l|0}function Db(a){a=a|0;l=a}function Eb(a,b){a=a|0;b=b|0;l=a;m=b}function Fb(a,b){a=a|0;b=b|0;if(!o){o=a;p=b}}function Gb(a){a=a|0;z=a}function Hb(){return z|0}function Ib(a){a=a|0;c[45884]=a;return 0}function Jb(){return c[45884]|0}function Kb(a,b){a=a|0;b=b|0;Oa(0,a|0,b|0)|0;return}function Lb(a){a=a|0;c[46369]=a;return}function Mb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i+4|0;g=i;c[f>>2]=0;h=YC()|0;bD(h,10976);bD(h,17220);bD(h,17440);Nw(1)|0;Mw(18)|0;Sz(1);while(1){a=Fy(a)|0;e=c[f>>2]|0;if(!a)break;if(!e){ZC(h,a,d)|0;aD(h,a,b,f,g)|0;VB(h,a)|0}_x(a)|0;a=191979}l=i;return e|0}function Nb(a){a=a|0;var d=0,e=0,f=0,g=0;g=l;l=l+16|0;d=g+4|0;e=g;f=c[(c[a+16>>2]|0)+8>>2]|0;a=a+64|0;switch(c[a>>2]|0){case 0:{tI(f);break}case 1:{if(b[(c[f+16>>2]|0)+136>>1]&1)EM(f);break}case 4:case 5:case 6:{qI(f,e,d);Qb(f,c[e>>2]|0,c[d>>2]|0,c[a>>2]|0);break}default:{}}l=g;return}function Ob(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[(c[a+16>>2]|0)+8>>2]|0;if(!(c[45885]|0)){c[45885]=c[4652];c[45886]=57;c[45887]=19}e=d+64|0;f=(c[e>>2]|0)+8|0;b=c[f>>2]|0;c[f>>2]=183540;switch(c[a+64>>2]|0){case 2:{gI(a,d,a,0);break}case 3:{gI(a,d,a,1);break}case 1:case 0:{if(!(c[a+152>>2]&134217728))MA(d,a)|0;break}case 6:case 5:case 4:{Pb(d);if(!(c[a+152>>2]&134217728))MA(d,a)|0;break}default:{}}c[(c[e>>2]|0)+8>>2]=b;return}function Pb(b){b=b|0;var d=0,e=0;d=c[45889]|0;if((d|0)!=(c[45888]|0)){e=c[c[45920]>>2]|0;if(!e){e=KM(b,0,96782,191979)|0;c[c[45920]>>2]=e;d=c[45889]|0}if(d>>>0>=(c[45890]|0)>>>0){Tw(183552,1)|0;d=c[45889]|0}a[d>>0]=0;d=c[45888]|0;c[45889]=d;qx(b,e,d)|0}if(c[(c[b+16>>2]|0)+12>>2]|0){e=c[(c[45920]|0)+4>>2]|0;d=c[45905]|0;if(d>>>0>=(c[45906]|0)>>>0){Tw(183616,1)|0;d=c[45905]|0}a[d>>0]=0;d=c[45904]|0;c[45905]=d;qx(b,e,d)|0}zx(b,66649,c[(c[45920]|0)+8236>>2]|0,191979)|0;d=0;while(1){if((d|0)==8)break;Ww(183552+(d<<4)|0);d=d+1|0}C_(c[45920]|0);h[1]=1.0;h[5]=1.0;c[45921]=0;c[45925]=0;return}function Qb(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=B_(8240)|0;c[45920]=i;a:do switch(g|0){case 6:{b[i+8232>>1]=14;g=66665;break}case 5:{b[i+8232>>1]=12;g=66669;break}default:{g=wx(d,66649)|0;if((g|0?a[g>>0]|0:0)?(h=Rb(g)|0,(h&65535)>10):0){i=c[45920]|0;b[i+8232>>1]=h;break a}g=Rb(66661)|0;i=c[45920]|0;b[i+8232>>1]=g;g=66661}}while(0);c[i+8236>>2]=g;j=d+16|0;g=c[j>>2]|0;if(!(c[g+180>>2]|0))h=0;else{h=KM(d,0,96782,191979)|0;i=c[45920]|0;g=c[j>>2]|0}c[i>>2]=h;if(!(a[g+113>>0]&8))g=0;else g=KM(d,0,66673,191979)|0;c[(c[45920]|0)+4>>2]=g;i=KM(d,1,96782,191979)|0;c[(c[45920]|0)+8>>2]=i;i=KM(d,1,66673,191979)|0;c[(c[45920]|0)+12>>2]=i;i=KM(d,2,96782,191979)|0;g=c[45920]|0;c[g+16>>2]=i;if(!f)h=0;else{h=KM(d,2,66681,191979)|0;g=c[45920]|0}c[g+20>>2]=h;if(!e)h=0;else{h=KM(d,2,66689,191979)|0;g=c[45920]|0}c[g+24>>2]=h;h=a[(c[j>>2]|0)+113>>0]|0;if(!(h&33))i=0;else{i=KM(d,2,66673,191979)|0;g=c[45920]|0;h=a[(c[j>>2]|0)+113>>0]|0}c[g+28>>2]=i;if(!(h&2))i=0;else{i=KM(d,2,66697,191979)|0;g=c[45920]|0;h=a[(c[j>>2]|0)+113>>0]|0}c[g+32>>2]=i;if(!(h&4))h=0;else{h=KM(d,2,66706,191979)|0;g=c[45920]|0}c[g+36>>2]=h;g=0;while(1){if((g|0)==8)break;Sw(183552+(g<<4)|0,1024,(c[45920]|0)+40+(g<<10)|0);g=g+1|0}return}function Rb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+1040|0;h=j;g=j+8|0;f=0;d=b;a:while(1){do{e=d;d=d+1|0;e=a[e>>0]|0;if(!(e<<24>>24))break a}while(((e<<24>>24)+-48|0)>>>0>=10);if((f|0)>=1023){i=7;break}a[g+f>>0]=e;f=f+1|0}if((i|0)==7){c[h>>2]=b;Ow(0,66715,h)|0}a[g+f>>0]=0;i=($1(g)|0)&65535;l=j;return i|0}function Sb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;d=c[c[45920]>>2]|0;b=c[45893]|0;if(b>>>0>=(c[45894]|0)>>>0){Tw(183568,1)|0;b=c[45893]|0}a[b>>0]=0;b=c[45892]|0;c[45893]=b;qx(e,d,b)|0;if(c[(c[e+16>>2]|0)+12>>2]|0){d=c[(c[45920]|0)+4>>2]|0;b=c[45909]|0;if(b>>>0>=(c[45910]|0)>>>0){Tw(183632,1)|0;b=c[45909]|0}a[b>>0]=0;b=c[45908]|0;c[45909]=b;qx(e,d,b)|0}h[2]=1.0;h[6]=1.0;c[45922]=0;c[45926]=0;return}function Tb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;b=c[45893]|0;if((c[45892]|0)!=(b|0)){d=c[(c[45920]|0)+8>>2]|0;if(b>>>0>=(c[45894]|0)>>>0){Tw(183568,1)|0;b=c[45893]|0}a[b>>0]=0;b=c[45892]|0;c[45893]=b;qx(e,d,b)|0}b=c[45909]|0;if((c[45908]|0)!=(b|0)){d=c[(c[45920]|0)+12>>2]|0;if(b>>>0>=(c[45910]|0)>>>0){Tw(183632,1)|0;b=c[45909]|0}a[b>>0]=0;b=c[45908]|0;c[45909]=b;qx(e,d,b)|0}h[9]=1.0;h[11]=1.0;c[45929]=0;c[45931]=0;return}function Ub(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;b=c[45893]|0;if((c[45892]|0)!=(b|0)){d=c[(c[45920]|0)+16>>2]|0;if(b>>>0>=(c[45894]|0)>>>0){Tw(183568,1)|0;b=c[45893]|0}a[b>>0]=0;b=c[45892]|0;c[45893]=b;qx(e,d,b)|0}b=c[45897]|0;if((c[45896]|0)!=(b|0)){d=c[(c[45920]|0)+24>>2]|0;if(b>>>0>=(c[45898]|0)>>>0){Tw(183584,1)|0;b=c[45897]|0}a[b>>0]=0;b=c[45896]|0;c[45897]=b;qx(e,d,b)|0}b=c[45901]|0;if((c[45900]|0)!=(b|0)){d=c[(c[45920]|0)+20>>2]|0;if(b>>>0>=(c[45902]|0)>>>0){Tw(183600,1)|0;b=c[45901]|0}a[b>>0]=0;b=c[45900]|0;c[45901]=b;qx(e,d,b)|0}b=c[45909]|0;if((c[45908]|0)!=(b|0)){d=c[(c[45920]|0)+28>>2]|0;if(b>>>0>=(c[45910]|0)>>>0){Tw(183632,1)|0;b=c[45909]|0}a[b>>0]=0;b=c[45908]|0;c[45909]=b;qx(e,d,b)|0}b=c[45913]|0;if((c[45912]|0)!=(b|0)){d=c[(c[45920]|0)+36>>2]|0;if(b>>>0>=(c[45914]|0)>>>0){Tw(183648,1)|0;b=c[45913]|0}a[b>>0]=0;b=c[45912]|0;c[45913]=b;qx(e,d,b)|0}b=c[45917]|0;if((c[45916]|0)!=(b|0)){d=c[(c[45920]|0)+32>>2]|0;if(b>>>0>=(c[45918]|0)>>>0){Tw(183664,1)|0;b=c[45917]|0}a[b>>0]=0;b=c[45916]|0;c[45917]=b;qx(e,d,b)|0}h[10]=1.0;h[12]=1.0;h[3]=1.0;h[4]=1.0;h[7]=1.0;h[8]=1.0;c[45930]=0;c[45932]=0;c[45923]=0;c[45924]=0;c[45927]=0;c[45928]=0;return}function Vb(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1056|0;j=t+16|0;s=t+8|0;r=t;k=t+32|0;o=c[(c[d+16>>2]|0)+12>>2]|0;p=c[11416+(o<<2)>>2]|0;Vw(p,66812)|0;g=f+4|0;cc(k,+h[(c[g>>2]|0)+16>>3]);Vw(p,k)|0;fc(d,191979,c[c[g>>2]>>2]|0);$b(d);q=a[f+48>>0]|0;q=q<<24>>24==108?-1:q<<24>>24==114&1;g=c[g>>2]|0;if(!g)g=0;else g=c[g+24>>2]&127;i=b[(c[45920]|0)+8232>>1]|0;if((i&65535)>14?(m=c[11464+((i&65535)+-15<<2)>>2]&g,n=183684+(o<<2)|0,(c[n>>2]|0)!=(m|0)):0){c[r>>2]=m;X0(k,66815,r)|0;Vw(p,k)|0;c[n>>2]=m}r=e+8|0;h[r>>3]=+h[r>>3]+ +h[f+24>>3];Vw(p,66821)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];bc(p,j);c[s>>2]=q;X0(k,99194,s)|0;Vw(p,k)|0;cc(k,+h[f+32>>3]);Vw(p,k)|0;fc(d,191979,c[f>>2]|0);l=t;return}function Wb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;i=l;l=l+1040|0;f=i;g=i+16|0;e=c[(c[a+16>>2]|0)+12>>2]|0;_b(a);$b(a);if(!d){a=c[11416+(e<<2)>>2]|0;Vw(a,66809)|0}else{if((d|1|0)==3)hc(a,d,b,2);else ic(a);a=c[11416+(e<<2)>>2]|0;Vw(a,66806)|0};c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];bc(a,f);cc(g,+h[b+16>>3]-+h[b>>3]);Vw(a,g)|0;cc(g,+h[b+24>>3]-+h[b+8>>3]);Vw(a,g)|0;l=i;return}function Xb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;_b(a);$b(a);if(!d)ac(a,112,b,c);else{if((d|1|0)==3)hc(a,d,b,c);else ic(a);ac(a,80,b,c)}return}function Yb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;_b(a);$b(a);if(!f)ac(a,66,b,c);else{if((f|1|0)==3)hc(a,f,b,c);else ic(a);ac(a,98,b,c)}return}function Zb(a,b,c){a=a|0;b=b|0;c=c|0;_b(a);$b(a);ac(a,76,b,c);return}function _b(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+1184|0;i=n;f=n+24|0;m=n+8|0;Sw(m,1024,n+152|0);j=b+16|0;d=c[j>>2]|0;g=+h[d+152>>3];e=8+(c[d+12>>2]<<3)|0;if(g!=+h[e>>3]){h[e>>3]=g;Vw(m,66778)|0;h[i>>3]=+h[(c[j>>2]|0)+152>>3];X0(f,66792,i)|0;dc(f,0);Vw(m,f)|0;f=m+4|0;d=c[f>>2]|0;e=m+8|0;if(d>>>0>=(c[e>>2]|0)>>>0){Tw(m,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=41;d=c[f>>2]|0;if(d>>>0>=(c[e>>2]|0)>>>0){Tw(m,1)|0;d=c[f>>2]|0}a[d>>0]=0;d=c[m>>2]|0;c[f>>2]=d;fc(b,66797,d);d=c[j>>2]|0}d=c[d+160>>2]|0;if(d|0){j=m+4|0;k=m+8|0;a:while(1){i=d+4|0;d=c[d>>2]|0;if(!d)break;switch(a[d>>0]|0){case 102:{if(!(a$(d,108075)|0)){d=i;continue a}break}case 98:{if(!(a$(d,108057)|0)){d=i;continue a}break}case 115:{if(!(a$(d,108062)|0)){d=i;continue a}break}default:{}}Vw(m,d)|0;do{f=d;d=d+1|0}while((a[f>>0]|0)!=0);if(a[d>>0]|0){e=c[j>>2]|0;if(e>>>0>=(c[k>>2]|0)>>>0){Tw(m,1)|0;e=c[j>>2]|0}c[j>>2]=e+1;a[e>>0]=40;f=0;while(1){if(!(a[d>>0]|0))break;if(f|0){e=c[j>>2]|0;if(e>>>0>=(c[k>>2]|0)>>>0){Tw(m,1)|0;e=c[j>>2]|0}c[j>>2]=e+1;a[e>>0]=44}Vw(m,d)|0;do{e=d;d=d+1|0}while((a[e>>0]|0)!=0);f=f+1|0}d=c[j>>2]|0;if(d>>>0>=(c[k>>2]|0)>>>0){Tw(m,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=41}d=c[j>>2]|0;if(d>>>0>=(c[k>>2]|0)>>>0){Tw(m,1)|0;d=c[j>>2]|0}a[d>>0]=0;d=c[m>>2]|0;c[j>>2]=d;fc(b,66797,d);d=i}Ww(m)}l=n;return}function $b(a){a=a|0;ec((c[a+16>>2]|0)+16|0);fc(a,75730,190678);return}function ac(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=l;l=l+1040|0;j=k;i=k+16|0;h=c[11416+(c[(c[b+16>>2]|0)+12>>2]<<2)>>2]|0;g=h+4|0;b=c[g>>2]|0;if(b>>>0>=(c[h+8>>2]|0)>>>0){Tw(h,1)|0;b=c[g>>2]|0}c[g>>2]=b+1;a[b>>0]=d;c[j>>2]=f;X0(i,66742,j)|0;Vw(h,i)|0;b=0;while(1){if((b|0)>=(f|0))break;i=e+(b<<4)|0;c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];c[j+12>>2]=c[i+12>>2];bc(h,j);b=b+1|0}l=k;return}function bc(a,b){a=a|0;b=b|0;var c=0,d=0;c=l;l=l+1024|0;d=c;cc(d,+h[b>>3]);Vw(a,d)|0;cc(d,+fI(+h[b+8>>3]));Vw(a,d)|0;l=c;return}function cc(a,b){a=a|0;b=+b;var c=0,d=0;c=l;l=l+16|0;d=c;h[d>>3]=b>-1.0e-08&b<1.0e-08?0.0:b;X0(a,66747,d)|0;dc(a,1);l=c;return}function dc(b,c){b=b|0;c=c|0;var d=0,e=0;d=z$(b,46)|0;if(!d){if(c|0){d=b+(V_(b)|0)|0;e=10}}else{while(1){b=d+1|0;if(!(a[b>>0]|0))break;else d=b}a:while(1){switch(a[d>>0]|0){case 46:{e=5;break a}case 48:break;default:{e=6;break a}}a[d>>0]=0;d=d+-1|0}if((e|0)==5)a[d>>0]=0;else if((e|0)==6)d=d+1|0;if(c|0)e=10}if((e|0)==10){a[d>>0]=32;a[d+1>>0]=0}return}function ec(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+32|0;i=j+16|0;h=j;e=a[b+3>>0]|0;f=d[b>>0]|0;g=d[b+1>>0]|0;b=d[b+2>>0]|0;if(e<<24>>24==-1){c[h>>2]=f;c[h+4>>2]=g;c[h+8>>2]=b;X0(190678,75610,h)|0}else{c[i>>2]=f;c[i+4>>2]=g;c[i+8>>2]=b;c[i+12>>2]=e&255;X0(190678,66760,i)|0}l=j;return}function fc(a,b,d){a=a|0;b=b|0;d=d|0;gc(c[11416+(c[(c[a+16>>2]|0)+12>>2]<<2)>>2]|0,b,d);return}function gc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l+1040|0;h=f;g=f+8|0;i=V_(e)|0;c[h>>2]=d;c[h+4>>2]=i;X0(g,66753,h)|0;Vw(b,g)|0;Vw(b,e)|0;e=b+4|0;d=c[e>>2]|0;if(d>>>0>=(c[b+8>>2]|0)>>>0){Tw(b,1)|0;d=c[e>>2]|0}c[e>>2]=d+1;a[d>>0]=32;l=f;return}function hc(b,d,f,i){b=b|0;d=d|0;f=f|0;i=i|0;var j=0.0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=l;l=l+1120|0;t=x+64|0;w=x+80|0;k=x+32|0;r=x+16|0;s=x;u=c[b+16>>2]|0;j=+(c[u+136>>2]|0)*.017453292519943295;if((e[(c[45920]|0)+8232>>1]|0)<14)ic(b);else{Sw(w,1024,x+96|0);v=(d|0)==2;if(v){$M(f,k,i,j,2);f=w+4|0;d=c[f>>2]|0;if(d>>>0>=(c[w+8>>2]|0)>>>0){Tw(w,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=91;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];bc(w,t);s=k+16|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];bc(w,t)}else{$M(f,k,i,0.0,3);q=+h[k+24>>3];o=+h[k>>3];if(j==0.0){n=+h[k+8>>3];p=q*.25;j=n;m=o}else{p=q*.25;y=p;m=+E(+j)*y+o;n=+h[k+8>>3];j=+F(+j)*y+n}h[r>>3]=m;h[r+8>>3]=j;h[s>>3]=o;h[s+8>>3]=n;f=w+4|0;d=c[f>>2]|0;if(d>>>0>=(c[w+8>>2]|0)>>>0){Tw(w,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=40;c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];bc(w,t);jc(w,p);c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];bc(w,t);jc(w,q)}Vw(w,66803)|0;d=u+140|0;j=+g[d>>2];f=u+56|0;if(j>0.0){kc(w,j,f);kc(w,+g[d>>2],u+96|0)}else{kc(w,0.0,f);kc(w,1.0,u+96|0)}Xw(w)|0;k=w+4|0;d=c[k>>2]|0;i=w+8|0;f=d>>>0>=(c[i>>2]|0)>>>0;if(v){if(f){Tw(w,1)|0;d=c[k>>2]|0}c[k>>2]=d+1;a[d>>0]=93}else{if(f){Tw(w,1)|0;d=c[k>>2]|0}c[k>>2]=d+1;a[d>>0]=41}d=c[k>>2]|0;if(d>>>0>=(c[i>>2]|0)>>>0){Tw(w,1)|0;d=c[k>>2]|0}a[d>>0]=0;v=c[w>>2]|0;c[k>>2]=v;fc(b,66800,v);Ww(w)}l=x;return}function ic(a){a=a|0;ec((c[a+16>>2]|0)+56|0);fc(a,66800,190678);return}function jc(a,b){a=a|0;b=+b;var c=0,d=0;c=l;l=l+1024|0;d=c;cc(d,b);Vw(a,d)|0;l=c;return}function kc(a,b,c){a=a|0;b=+b;c=c|0;var d=0,e=0,f=0;d=l;l=l+1040|0;f=d;e=d+8|0;h[f>>3]=b;X0(e,92597,f)|0;dc(e,1);ec(c);gc(a,e,190678);l=d;return}function lc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0;e=l;l=l+1040|0;i=e;f=e+16|0;g=c[11416+(c[(c[a+16>>2]|0)+12>>2]<<2)>>2]|0;Vw(g,66909)|0;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];bc(g,i);cc(f,+h[d+16>>3]-+h[d>>3]);Vw(g,f)|0;cc(f,+h[d+24>>3]-+h[d+8>>3]);Vw(g,f)|0;fc(a,191979,c[b+8>>2]|0);l=e;return}function mc(a){a=a|0;var b=0;switch(c[a+64>>2]|0){case 0:{b=kC(c[a>>2]|0)|0;_C(b,c[(c[a+16>>2]|0)+8>>2]|0,67693,0)|0;lC(b);break}case 1:{tI(c[(c[a>>2]|0)+168>>2]|0);break}default:{}}return}function nc(b){b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;d=f;e=c[(c[b+16>>2]|0)+8>>2]|0;if(!(c[45933]|0)){c[45933]=c[4652];c[45934]=57;c[45935]=19}c[(c[e+64>>2]|0)+8>>2]=183732;oc(e,1);c[d>>2]=0;a[d+4>>0]=(a[(c[e+16>>2]|0)+115>>0]|0)==1&1;g=c[b+64>>2]|0;a[d+5>>0]=((g|0)==0|(g|0)==3)&1;a[d+6>>0]=0;pc(e,b,1,d);l=f;return}function oc(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[a>>2]&-9;d=vA(a)|0;while(1){if(!d)break;oc(d,0);d=wA(d)|0}a:do if(b|0){b=Ry(a)|0;while(1){if(!b)break a;c[b>>2]=c[b>>2]&-9;d=Dx(a,b)|0;while(1){if(!d)break;c[d>>2]=c[d>>2]&-9;d=Fx(a,d)|0}b=Sy(a,b)|0}}while(0);return}function pc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q+8|0;o=q;n=(d|0)!=0;if(n){m=Bw(11836,c[4555]|0)|0;Ez(a,1,137978,12,0);Ez(a,2,137978,12,0);Ez(a,0,137978,-12,0);f=qc(a,0,m)|0;j=Ry(a)|0;i=0;g=0;while(1){if(!j)break;if(!(y$(qy(j)|0,104980,7)|0)){k=g;g=rc(m,qy(j)|0)|0}else{k=g+1|0;g=g+f|0}c[(xz(j,137978,0)|0)+8>>2]=g;h=Dx(a,j)|0;g=i;while(1){if(!h)break;c[(xz(h,137978,0)|0)+8>>2]=g;h=Fx(a,h)|0;g=g+1|0}j=Sy(a,j)|0;i=g;g=k}xw(m)|0}else f=0;m=c[e>>2]|0;c[e>>2]=m+1;sc(b,m);_B(b,94292)|0;tc(a,b,d,e);uc(a,b,e);_B(b,94263)|0;sc(b,c[e>>2]|0);if(n){c[o>>2]=f;eC(b,66912,o)}else{c[p>>2]=c[(xz(a,137978,0)|0)+8>>2];eC(b,66932,p)}wc(a,b,d,vc(a,b,d,e)|0,e);xc(a,b,d,e);_B(b,150517)|0;p=(c[e>>2]|0)+-1|0;c[e>>2]=p;sc(b,p);if(n)_B(b,107982)|0;else _B(b,75253)|0;l=q;return}function qc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((ez(a)|0)!=(a|0)){e=b+1|0;c[(xz(a,137978,0)|0)+8>>2]=b;if(!(y$(qy(a)|0,104980,7)|0)){b=qy(a)|0;Jc(d,b,c[(xz(a,137978,0)|0)+8>>2]|0);b=e}else b=e}e=vA(a)|0;while(1){if(!e)break;a=qc(e,b,d)|0;e=wA(e)|0;b=a}return b|0}function rc(a,b){a=a|0;b=b|0;a=nb[c[a>>2]&63](a,b,512)|0;if(!a)a=-1;else a=c[a+12>>2]|0;return a|0}function sc(a,b){a=a|0;b=b|0;while(1){if((b|0)<=0)break;_B(a,90480)|0;b=b+-1|0}return}function tc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=l;l=l+32|0;g=h+16|0;f=h+8|0;i=h;j=qy(a)|0;sc(b,c[e>>2]|0);c[i>>2]=Ac(j,e)|0;eC(b,67020,i);if(d|0){_B(b,94263)|0;sc(b,c[e>>2]|0);j=(dy(a)|0)!=0;c[f>>2]=j?104626:134226;eC(b,67634,f);sc(b,c[e>>2]|0);j=(fy(a)|0)!=0;c[g>>2]=j?104626:134226;eC(b,67651,g)}l=h;return}function uc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o+8|0;m=o;i=ez(b)|0;j=c[b>>2]&3;f=rx(i,j,0)|0;a:do if(f|0){k=e+5|0;while(1){if(!f)break a;g=xx(b,f)|0;do if(g|0){h=f+8|0;if(!(a[g>>0]|0)){g=c[h>>2]|0;if((a[g>>0]|0)!=108)break;if(a$(g,105198)|0)break}_B(d,94263)|0;sc(d,c[e>>2]|0);c[m>>2]=Ac(c[h>>2]|0,e)|0;eC(d,67070,m);if(a[k>>0]|0?Cc(c[h>>2]|0)|0:0){Dc(xx(b,f)|0,d,e);break}c[n>>2]=Ac(xx(b,f)|0,e)|0;eC(d,67077,n)}while(0);f=rx(i,j,f)|0}}while(0);l=o;return}function vc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;f=vA(a)|0;if(f){_B(b,94263)|0;g=c[e>>2]|0;c[e>>2]=g+1;sc(b,g);g=(d|0)!=0;if(g){_B(b,66994)|0;a=0;d=f}else{_B(b,67054)|0;sc(b,c[e>>2]|0);a=0;d=f}while(1){if(!d)break;if(!a)a=1;else _B(b,94263)|0;if(g)Bc(d,b,e);else{c[h>>2]=c[(xz(d,137978,0)|0)+8>>2];eC(b,134313,h)}d=wA(d)|0}if(g)a=1;else{c[e>>2]=(c[e>>2]|0)+-1;_B(b,150517)|0;sc(b,c[e>>2]|0);_B(b,94258)|0;a=1}}else a=0;l=i;return a|0}function wc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=Ry(a)|0;if(!g){if((d|0)!=0&(e|0)!=0){c[f>>2]=(c[f>>2]|0)+-1;_B(b,150517)|0;sc(b,c[f>>2]|0);_B(b,94258)|0}}else{_B(b,94263)|0;h=(d|0)!=0;if(h)if(!e){e=c[f>>2]|0;c[f>>2]=e+1;sc(b,e);_B(b,66994)|0;e=0}else e=0;else{e=c[f>>2]|0;c[f>>2]=e+1;sc(b,e);_B(b,67008)|0;sc(b,c[f>>2]|0);e=0}while(1){if(!g)break;if(y$(qy(g)|0,104980,7)|0){do if(e)if(h){_B(b,94263)|0;break}else{_B(b,97973)|0;break}else e=1;while(0);zc(g,b,d,f)}g=Sy(a,g)|0}c[f>>2]=(c[f>>2]|0)+-1;_B(b,150517)|0;sc(b,c[f>>2]|0);_B(b,94258)|0}return}function xc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=Ry(a)|0;a:do if(f|0){while(1){if(!f)break a;if(Dx(a,f)|0)break;f=Sy(a,f)|0}_B(b,94263)|0;i=c[e>>2]|0;c[e>>2]=i+1;sc(b,i);_B(b,66944)|0;i=(d|0)!=0;if(i)g=0;else{sc(b,c[e>>2]|0);g=0}while(1){if(!f)break;h=Dx(a,f)|0;while(1){if(!h)break;do if(g)if(i){_B(b,94263)|0;break}else{_B(b,97973)|0;break}else g=1;while(0);yc(h,b,d,e);h=Fx(a,h)|0}f=Sy(a,f)|0}c[e>>2]=(c[e>>2]|0)+-1;_B(b,150517)|0;sc(b,c[e>>2]|0);_B(b,94258)|0}while(0);return}function yc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+32|0;i=j+24|0;h=j+16|0;g=j+8|0;f=j;if(!d){c[i>>2]=c[(xz(a,137978,0)|0)+8>>2];eC(b,134313,i)}else{i=c[e>>2]|0;c[e>>2]=i+1;sc(b,i);_B(b,94292)|0;sc(b,c[e>>2]|0);c[f>>2]=c[(xz(a,137978,0)|0)+8>>2];eC(b,66956,f);sc(b,c[e>>2]|0);c[g>>2]=c[(xz(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0,137978,0)|0)+8>>2];eC(b,66970,g);sc(b,c[e>>2]|0);c[h>>2]=c[(xz(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0,137978,0)|0)+8>>2];eC(b,66983,h);uc(a,b,e);_B(b,150517)|0;i=(c[e>>2]|0)+-1|0;c[e>>2]=i;sc(b,i);_B(b,75253)|0}l=j;return}function zc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i+16|0;g=i+8|0;f=i;if(!d){c[h>>2]=c[(xz(a,137978,0)|0)+8>>2];eC(b,134313,h)}else{h=c[e>>2]|0;c[e>>2]=h+1;sc(b,h);_B(b,94292)|0;sc(b,c[e>>2]|0);c[f>>2]=c[(xz(a,137978,0)|0)+8>>2];eC(b,66956,f);sc(b,c[e>>2]|0);c[g>>2]=Ac(qy(a)|0,e)|0;eC(b,67020,g);uc(a,b,e);_B(b,150517)|0;h=(c[e>>2]|0)+-1|0;c[e>>2]=h;sc(b,h);_B(b,75253)|0}l=i;return}function Ac(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=d+4|0;if(a[g>>0]|0)b=QM(b)|0;if(!(c[45936]|0)){Sw(183744,1024,0);e=b}else e=b;a:while(1){f=a[e>>0]|0;switch(f<<24>>24){case 0:break a;case 34:{Vw(183744,67033)|0;break}case 92:{Vw(183744,93534)|0;break}case 47:{Vw(183744,67036)|0;break}case 8:{Vw(183744,67039)|0;break}case 12:{Vw(183744,67042)|0;break}case 10:{Vw(183744,67045)|0;break}case 13:{Vw(183744,67048)|0;break}case 9:{Vw(183744,67051)|0;break}default:{d=c[45937]|0;if(d>>>0>=(c[45938]|0)>>>0){Tw(183744,1)|0;d=c[45937]|0}c[45937]=d+1;a[d>>0]=f}}e=e+1|0}d=c[45937]|0;if(d>>>0>=(c[45938]|0)>>>0){Tw(183744,1)|0;d=c[45937]|0}a[d>>0]=0;d=c[45936]|0;c[45937]=d;if(a[g>>0]|0)C_(b);return d|0}function Bc(a,b,c){a=a|0;b=b|0;c=c|0;pc(a,b,0,c);a=vA(a)|0;while(1){if(!a)break;_B(b,94263)|0;Bc(a,b,c);a=wA(a)|0}return}function Cc(b){b=b|0;var c=0;c=b+1|0;a:do if((a[b>>0]|0)==95){b=(a[c>>0]|0)+-100<<24>>24;switch(((b&255)>>>2|b<<6&255)<<24>>24){case 0:{if(!(a$(c,67591)|0)){b=1;break a}break}case 2:{if(!(a$(c,67597)|0)){b=1;break a}break}case 1:{if(!(a$(c,67604)|0)){b=1;break a}return (a$(c,67618)|0)==0|0}case 4:{if(!(a$(c,67611)|0)){b=1;break a}b=(a$(c,67626)|0)==0&1;break a}default:{b=0;break a}}b=0}else b=0;while(0);return b|0}function Dc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i;do if(b|0?a[b>>0]|0:0){h=nE(b)|0;if(!h){c[f>>2]=b;Ow(0,67082,f)|0;break}_B(d,150517)|0;g=c[e>>2]|0;c[e>>2]=g+1;sc(d,g);_B(d,67109)|0;g=h+8|0;b=0;f=0;while(1){if((f|0)>=(c[h>>2]|0))break;if(!b)b=1;else _B(d,94263)|0;Ec((c[g>>2]|0)+(f*80|0)|0,d,e);f=f+1|0}c[e>>2]=(c[e>>2]|0)+-1;_B(d,150517)|0;sc(d,c[e>>2]|0);_B(d,94258)|0;oE(h)}while(0);l=i;return}function Ec(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0;A=l;l=l+240|0;y=A+224|0;x=A+216|0;w=A+208|0;v=A+200|0;u=A+192|0;t=A+184|0;s=A+176|0;r=A+152|0;q=A+136|0;p=A+128|0;o=A+112|0;n=A+104|0;m=A+96|0;k=A+88|0;j=A+72|0;i=A+48|0;z=A+40|0;g=A+8|0;f=A;e=c[d>>2]|0;c[d>>2]=e+1;sc(b,e);_B(b,94292)|0;sc(b,c[d>>2]|0);e=c[a>>2]|0;a:do switch(e|0){case 1:case 0:{c[f>>2]=(e|0)==0?69:101;eC(b,67112,f);sc(b,c[d>>2]|0);D=+h[a+16>>3];C=+h[a+24>>3];B=+h[a+32>>3];h[g>>3]=+h[a+8>>3];h[g+8>>3]=D;h[g+16>>3]=C;h[g+24>>3]=B;eC(b,67125,g);break}case 3:case 2:{c[z>>2]=(e|0)==2?80:112;eC(b,67112,z);sc(b,c[d>>2]|0);Fc(b,a+8|0);break}case 5:case 4:{c[i>>2]=(e|0)==4?66:98;eC(b,67112,i);sc(b,c[d>>2]|0);Fc(b,a+8|0);break}case 6:{eC(b,67160,A+56|0);sc(b,c[d>>2]|0);Fc(b,a+8|0);break}case 7:{eC(b,67172,A+64|0);sc(b,c[d>>2]|0);D=+h[a+16>>3];h[j>>3]=+h[a+8>>3];h[j+8>>3]=D;eC(b,67184,j);sc(b,c[d>>2]|0);z=c[a+24>>2]|0;c[k>>2]=(z|0)==0?108:(z|0)==1?99:114;eC(b,67206,k);sc(b,c[d>>2]|0);h[m>>3]=+h[a+32>>3];eC(b,67222,m);sc(b,c[d>>2]|0);c[n>>2]=Ac(c[a+40>>2]|0,d)|0;eC(b,67239,n);break}case 9:case 8:{c[o>>2]=(e|0)==8?67:99;eC(b,67112,o);sc(b,c[d>>2]|0);eC(b,67253,A+120|0);sc(b,c[d>>2]|0);c[p>>2]=Ac(c[a+8>>2]|0,d)|0;eC(b,67270,p);break}case 13:case 14:{c[q>>2]=(e|0)==13?67:99;eC(b,67112,q);sc(b,c[d>>2]|0);switch(c[a+8>>2]|0){case 0:{eC(b,67253,A+144|0);sc(b,c[d>>2]|0);c[r>>2]=Ac(c[a+16>>2]|0,d)|0;eC(b,67270,r);break a}case 1:{eC(b,67285,A+160|0);sc(b,c[d>>2]|0);Gc(b,a+16|0,d);break a}default:{eC(b,67304,A+168|0);sc(b,c[d>>2]|0);Hc(b,a+16|0,d);break a}}}case 10:{eC(b,67323,s);sc(b,c[d>>2]|0);h[t>>3]=+h[a+8>>3];eC(b,67335,t);sc(b,c[d>>2]|0);c[u>>2]=Ac(c[a+16>>2]|0,d)|0;eC(b,67351,u);break}case 11:{eC(b,67365,v);sc(b,c[d>>2]|0);c[w>>2]=Ac(c[a+8>>2]|0,d)|0;eC(b,67377,w);break}case 15:{eC(b,67392,x);sc(b,c[d>>2]|0);c[y>>2]=c[a+8>>2];eC(b,67404,y);break}default:{}}while(0);z=(c[d>>2]|0)+-1|0;c[d>>2]=z;sc(b,z);_B(b,75253)|0;l=A;return}function Fc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0.0;j=l;l=l+48|0;i=j+32|0;g=j+16|0;f=j+8|0;e=c[b>>2]|0;d=c[b+4>>2]|0;eC(a,67565,j);b=0;while(1){if((b|0)>=(e|0))break;if((b|0)>0)eC(a,97973,f);k=+h[d+(b*24|0)+8>>3];h[g>>3]=+h[d+(b*24|0)>>3];h[g+8>>3]=k;eC(a,67577,g);b=b+1|0}eC(a,67518,i);l=j;return}function Gc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0;e=l;l=l+32|0;f=e+16|0;i=e;sc(a,c[d>>2]|0);g=+h[b+8>>3];h[i>>3]=+h[b>>3];h[i+8>>3]=g;eC(a,67521,i);sc(a,c[d>>2]|0);g=+h[b+24>>3];h[f>>3]=+h[b+16>>3];h[f+8>>3]=g;eC(a,67543,f);sc(a,c[d>>2]|0);Ic(a,c[b+32>>2]|0,c[b+36>>2]|0,d);l=e;return}function Hc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0;e=l;l=l+48|0;f=e+24|0;j=e;sc(a,c[d>>2]|0);g=+h[b+8>>3];i=+h[b+16>>3];h[j>>3]=+h[b>>3];h[j+8>>3]=g;h[j+16>>3]=i;eC(a,67420,j);sc(a,c[d>>2]|0);i=+h[b+32>>3];g=+h[b+40>>3];h[f>>3]=+h[b+24>>3];h[f+8>>3]=i;h[f+16>>3]=g;eC(a,67448,f);sc(a,c[d>>2]|0);Ic(a,c[b+48>>2]|0,c[b+52>>2]|0,d);l=e;return}function Ic(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0.0;m=l;l=l+48|0;k=m+32|0;j=m+16|0;i=m+8|0;eC(a,67476,m);f=0;while(1){if((f|0)>=(b|0))break;if((f|0)>0)eC(a,97973,i);o=+g[d+(f<<3)>>2];n=Ac(c[d+(f<<3)+4>>2]|0,e)|0;h[j>>3]=o;c[j+8>>2]=n;eC(a,67487,j);f=f+1|0}eC(a,67518,k);l=m;return}function Jc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=nb[c[a>>2]&63](a,b,512)|0;if(e){if((c[e+12>>2]|0)!=(d|0)){c[f>>2]=b;Ow(0,67664,f)|0}}else{f=D_(1,16)|0;c[f+8>>2]=m1(b)|0;c[f+12>>2]=d;nb[c[a>>2]&63](a,f,1)|0}l=g;return}function Kc(a,b,d){a=a|0;b=b|0;d=d|0;C_(c[b+8>>2]|0);C_(b);return}function Lc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;_B(a,68519)|0;j=c[c[a+12>>2]>>2]|0;i=c[j+4>>2]|0;h=c[j+8>>2]|0;c[g>>2]=c[j>>2];c[g+4>>2]=i;c[g+8>>2]=h;eC(a,68529,g);c[e>>2]=qy(c[f+8>>2]|0)|0;eC(a,68564,e);c[d>>2]=O(c[a+168>>2]|0,c[a+164>>2]|0)|0;eC(a,68577,d);_B(a,68590)|0;_B(a,68600)|0;_B(a,68608)|0;_B(a,68616)|0;_B(a,68624)|0;_B(a,68632)|0;_B(a,68640)|0;_B(a,68644)|0;_B(a,68649)|0;l=b;return}function Mc(a){a=a|0;_B(a,68500)|0;return}function Nc(a){a=a|0;c[45940]=2;return}function Oc(a){a=a|0;c[45940]=1;return}function Pc(a){a=a|0;c[45940]=2;return}function Qc(a){a=a|0;c[45940]=0;return}function Rc(a){a=a|0;c[45940]=2;return}function Sc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0;p=l;l=l+80|0;o=p;m=c[(c[b+16>>2]|0)+16>>2]|0;n=c[45940]|0;f=c[e+4>>2]|0;g=+h[b+352>>3]*+h[f+16>>3];i=c[b+360>>2]|0?1.5707963267948966:0.0;j=c[e>>2]|0;k=g*.3333333333333333*+((V_(j)|0)>>>0);f=c[f+8>>2]|0;if(!f)f=-1;else f=c[f+20>>2]|0;s=a[e+48>>0]|0;r=+h[d>>3];q=+h[d+8>>3];e=ad(j)|0;c[o>>2]=4;c[o+4>>2]=s<<24>>24==108?0:s<<24>>24==114?2:1;c[o+8>>2]=m;c[o+12>>2]=n;c[o+16>>2]=0;c[o+20>>2]=f;h[o+24>>3]=g;h[o+32>>3]=i;c[o+40>>2]=6;h[o+48>>3]=g;h[o+56>>3]=k;c[o+64>>2]=~~(r+(r>=0.0?.5:-.5));c[o+68>>2]=~~(q+(q+-72.0>=0.0?-71.5:-72.5));c[o+72>>2]=e;eC(b,68445,o);l=p;return}function Tc(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;j=n;i=n+20|0;m=e+32|0;a:do switch(c[m>>2]|0){case 5:{f=0;while(1){g=c[12724+(f<<2)>>2]|0;if((f|0)==8)break a;h=c[e>>2]|0;if((a[g>>0]|0)==(a[h>>0]|0)?(a$(g,h)|0)==0:0){k=10;break a}f=f+1|0}}case 1:{g=e+1|0;h=e+2|0;f=($c(i,d[e>>0]|0,d[g>>0]|0,d[h>>0]|0)|0)+32|0;if(!(c[i>>2]|0))k=10;else{o=d[e>>0]|0;i=d[g>>0]|0;k=d[h>>0]|0;c[j>>2]=0;c[j+4>>2]=f;c[j+8>>2]=o;c[j+12>>2]=i;c[j+16>>2]=k;eC(b,68388,j);k=10}break}default:qa(135312,67785,163,67816)}while(0);if((k|0)==10)c[e>>2]=f;c[m>>2]=6;l=n;return}function Uc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0;e=l;l=l+112|0;f=e+8|0;u=e+104|0;t=e;k=c[a+16>>2]|0;s=~~+h[k+152>>3];r=c[k+16>>2]|0;q=c[k+56>>2]|0;p=c[45940]|0;Zc(k,u,t);n=+h[b>>3];k=~~(n+(n>=0.0?.5:-.5));m=+h[b+8>>3];j=~~(m+(m>=0.0?.5:-.5));i=+h[b+16>>3];n=i-n;g=+h[b+24>>3];m=g-m;b=c[u>>2]|0;o=+h[t>>3];c[f>>2]=1;c[f+4>>2]=1;c[f+8>>2]=b;c[f+12>>2]=s;c[f+16>>2]=r;c[f+20>>2]=q;c[f+24>>2]=p;c[f+28>>2]=0;c[f+32>>2]=d|0?20:-1;h[f+40>>3]=o;c[f+48>>2]=0;h[f+56>>3]=0.0;c[f+64>>2]=k;c[f+68>>2]=j;c[f+72>>2]=~~(n+(n>=0.0?.5:-.5));c[f+76>>2]=~~(m+(m>=0.0?.5:-.5));c[f+80>>2]=k;c[f+84>>2]=j;c[f+88>>2]=~~(i+(i>=0.0?.5:-.5));c[f+92>>2]=~~(g+(g>=0.0?.5:-.5));eC(a,68323,f);l=e;return}function Vc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;f=l;l=l+96|0;g=f+8|0;o=f+80|0;p=f;q=c[a+16>>2]|0;n=~~+h[q+152>>3];m=c[q+16>>2]|0;k=c[q+56>>2]|0;j=c[45940]|0;Zc(q,o,p);o=c[o>>2]|0;i=+h[p>>3];c[g>>2]=2;c[g+4>>2]=3;c[g+8>>2]=o;c[g+12>>2]=n;c[g+16>>2]=m;c[g+20>>2]=k;c[g+24>>2]=j;c[g+28>>2]=0;c[g+32>>2]=e|0?20:-1;h[g+40>>3]=i;c[g+48>>2]=0;c[g+52>>2]=0;c[g+56>>2]=0;c[g+60>>2]=0;c[g+64>>2]=0;c[g+68>>2]=d+1;eC(a,68227,g);_c(a,b,d,1);l=f;return}function Wc(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0;C=l;l=l+192|0;B=C+176|0;z=C+168|0;A=C+104|0;y=C+96|0;i=C+88|0;u=C+180|0;v=C+80|0;w=C+16|0;x=C;f=a+16|0;e=c[f>>2]|0;q=~~+h[e+152>>3];r=c[e+16>>2]|0;s=c[45940]|0;if((d|0)<=3)qa(67778,67785,360,67805);t=B_((d*140|0)+140|0)|0;Zc(e,u,v);if(!g){o=4;j=0;k=-1}else{o=5;j=c[(c[f>>2]|0)+56>>2]|0;k=20}E=+h[b>>3];n=w+48|0;h[n>>3]=E;D=+h[b+8>>3];h[w+56>>3]=D;c[i>>2]=~~(E+(E>=0.0?.5:-.5));c[i+4>>2]=~~(D+(D>=0.0?.5:-.5));m=x+8|0;e=t+(X0(t,80995,i)|0)|0;p=1;g=0;while(1){i=g+3|0;if((i|0)>=(d|0))break;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];f=1;while(1){if((f|0)==4){f=1;break}F=f+g|0;h[w+(f<<4)>>3]=+h[b+(F<<4)>>3];h[w+(f<<4)+8>>3]=+h[b+(F<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;WL(x,w,3,+(f|0)*.16666666666666666,0,0);D=+h[x>>3];E=+h[m>>3];c[y>>2]=~~(D+(D>=0.0?.5:-.5));c[y+4>>2]=~~(E+(E>=0.0?.5:-.5));f=f+1|0;e=e+(X0(e,80995,y)|0)|0}p=p+6|0;g=i}f=c[u>>2]|0;E=+h[v>>3];c[A>>2]=3;c[A+4>>2]=o;c[A+8>>2]=f;c[A+12>>2]=q;c[A+16>>2]=r;c[A+20>>2]=j;c[A+24>>2]=s;c[A+28>>2]=0;c[A+32>>2]=k;h[A+40>>3]=E;c[A+48>>2]=0;c[A+52>>2]=0;c[A+56>>2]=0;c[A+60>>2]=p;eC(a,68278,A);c[z>>2]=t;eC(a,81002,z);C_(t);f=p+-1|0;e=0;while(1){if((e|0)>=(p|0))break;c[B>>2]=((e|0)%(f|0)|0|0)!=0&1;eC(a,81007,B);e=e+1|0}_B(a,150517)|0;l=C;return}function Xc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;e=l;l=l+96|0;f=e+8|0;m=e+80|0;n=e;o=c[a+16>>2]|0;k=~~+h[o+152>>3];j=c[o+16>>2]|0;i=c[45940]|0;Zc(o,m,n);m=c[m>>2]|0;g=+h[n>>3];c[f>>2]=2;c[f+4>>2]=1;c[f+8>>2]=m;c[f+12>>2]=k;c[f+16>>2]=j;c[f+20>>2]=0;c[f+24>>2]=i;c[f+28>>2]=0;c[f+32>>2]=0;h[f+40>>3]=g;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=d;eC(a,68227,f);_c(a,b,d,0);l=e;return}function Yc(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;eC(a,68221,e);l=d;return}function Zc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function _c(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));eC(a,80995,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));eC(a,80995,i)}_B(a,150517)|0;l=j;return}function $c(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c[a>>2]=0;k=c[45941]|0;h=195075;g=0;i=-1;while(1){if((g|0)>=(k|0)){l=6;break}m=(b[187600+(g<<1)>>1]|0)-d|0;n=(b[188112+(g<<1)>>1]|0)-e|0;j=(b[188624+(g<<1)>>1]|0)-f|0;j=(O(n,n)|0)+(O(m,m)|0)+(O(j,j)|0)|0;if((j|0)<(h|0))if(!j)break;else{h=j;i=g}g=g+1|0}if((l|0)==6){c[45941]=k+1;if((k|0)==256)g=i;else{b[187600+(g<<1)>>1]=d;b[188112+(g<<1)>>1]=e;b[188624+(g<<1)>>1]=f;c[a>>2]=1}}return g|0}function ad(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[45942]|0;if(!d){c[45943]=64;d=B_(64)|0;c[45942]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[45943]|0;if((e|0)>(b+-8|0)){d=b<<1;c[45943]=d;d=E_(c[45942]|0,d)|0;c[45942]=d;d=d+e|0}if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;X0(d+1|0,81120,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=d+1|0}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[45942]|0}function bd(b){b=b|0;var d=0,e=0,f=0;e=c[b+16>>2]|0;switch(c[b+64>>2]|0){case 0:{_B(b,68116)|0;d=e+208|0;e=c[d>>2]|0;if(e|0?a[e>>0]|0:0){_B(b,68130)|0;_B(b,pH(c[d>>2]|0)|0)|0;_B(b,150517)|0}break}case 1:{d=e+208|0;f=c[d>>2]|0;if(f|0?a[f>>0]|0:0){_B(b,68130)|0;_B(b,pH(c[d>>2]|0)|0)|0;_B(b,99578)|0;_B(b,pH(qy(c[e+8>>2]|0)|0)|0)|0;_B(b,150517)|0}break}case 3:{f=pH(qy(c[e+8>>2]|0)|0)|0;_B(b,68139)|0;_B(b,f)|0;_B(b,68149)|0;_B(b,f)|0;_B(b,68104)|0;break}default:{}}return}function cd(a){a=a|0;var b=0;b=c[a+16>>2]|0;switch(c[a+64>>2]|0){case 2:{ed(a,c[b+264>>2]|0,c[b+272>>2]|0,c[b+268>>2]|0,c[b+208>>2]|0,c[b+228>>2]|0,c[b+244>>2]|0,c[b+212>>2]|0);break}case 3:{ed(a,c[b+264>>2]|0,c[b+272>>2]|0,c[b+268>>2]|0,c[b+208>>2]|0,c[b+228>>2]|0,c[b+244>>2]|0,c[b+212>>2]|0);_B(a,68108)|0;break}default:{}}return}function dd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=c[a+16>>2]|0;ed(a,c[g+264>>2]|0,c[g+272>>2]|0,c[g+268>>2]|0,b,d,e,f);return}function ed(b,d,e,f,g,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;y=l;l=l+128|0;x=y+120|0;u=y+112|0;t=y+96|0;s=y+80|0;r=y+56|0;w=y+48|0;q=y+40|0;v=y+24|0;p=y;a:do if((e|0)!=0&(f|0)!=0){m=f+10|0;if((c[45944]|0)<(f|0)){c[45944]=m;o=E_(c[45945]|0,m<<3)|0;c[45945]=o}else o=c[45945]|0;m=0;while(1){if((m|0)>=(f|0))break;z=+h[e+(m<<4)>>3];c[o+(m<<3)>>2]=~~(z+(z>=0.0?.5:-.5));z=+h[e+(m<<4)+8>>3];c[o+(m<<3)+4>>2]=~~(z+(z>=0.0?.5:-.5));m=m+1|0}n=b+64|0;m=c[n>>2]|0;e=(g|0)!=0;if(e&(m|0)==0){if(!(a[g>>0]|0))break;switch(d|0){case 0:{v=c[o>>2]|0;w=c[o+12>>2]|0;x=c[o+8>>2]|0;f=c[o+4>>2]|0;c[p>>2]=g;c[p+4>>2]=v;c[p+8>>2]=w;c[p+12>>2]=x;c[p+16>>2]=f;eC(b,67850,p);break a}case 1:{w=c[o>>2]|0;x=c[o+4>>2]|0;f=(c[o+8>>2]|0)-w|0;c[v>>2]=g;c[v+4>>2]=w;c[v+8>>2]=x;c[v+12>>2]=f;eC(b,67871,v);break a}case 2:{c[q>>2]=g;eC(b,67891,q);m=0;while(1){if((m|0)>=(f|0))break;v=c[45945]|0;x=c[v+(m<<3)+4>>2]|0;c[w>>2]=c[v+(m<<3)>>2];c[w+4>>2]=x;eC(b,67899,w);m=m+1|0}_B(b,150517)|0;break a}default:qa(135312,67906,63,67926)}}if(e&(m|0)==1){if(!(a[g>>0]|0))break;if(!d){w=c[o+12>>2]|0;x=c[o+8>>2]|0;f=c[o+4>>2]|0;c[r>>2]=c[o>>2];c[r+4>>2]=w;c[r+8>>2]=x;c[r+12>>2]=f;c[r+16>>2]=g;c[r+20>>2]=i;eC(b,67943,r);break}else qa(135312,67906,75,67926)}if((m&-2|0)==2){switch(d|0){case 1:{_B(b,67976)|0;break}case 0:{_B(b,67997)|0;break}case 2:{_B(b,68016)|0;break}default:qa(135312,67906,91,67926)}if(k|0?a[k>>0]|0:0){_B(b,73496)|0;_B(b,sH(k)|0)|0;_B(b,95669)|0}if(e?a[g>>0]|0:0){_B(b,68035)|0;_B(b,sH(g)|0)|0;_B(b,95669)|0}if(j|0?a[j>>0]|0:0){_B(b,74455)|0;_B(b,pH(j)|0)|0;_B(b,95669)|0}if(i|0?a[i>>0]|0:0){_B(b,68043)|0;_B(b,pH(i)|0)|0;_B(b,95669)|0}_B(b,68052)|0;_B(b,68060)|0;b:do switch(d|0){case 1:{f=c[45945]|0;w=c[f>>2]|0;x=c[f+4>>2]|0;f=(c[f+8>>2]|0)-w|0;c[s>>2]=w;c[s+4>>2]=x;c[s+8>>2]=f;eC(b,68070,s);break}case 0:{v=c[45945]|0;w=c[v+12>>2]|0;x=c[v+8>>2]|0;f=c[v+4>>2]|0;c[t>>2]=c[v>>2];c[t+4>>2]=w;c[t+8>>2]=x;c[t+12>>2]=f;eC(b,68079,t);break}case 2:{w=c[45945]|0;m=c[w+4>>2]|0;c[u>>2]=c[w>>2];c[u+4>>2]=m;eC(b,68091,u);m=1;while(1){if((m|0)>=(f|0))break b;v=c[45945]|0;w=c[v+(m<<3)+4>>2]|0;c[x>>2]=c[v+(m<<3)>>2];c[x+4>>2]=w;eC(b,68097,x);m=m+1|0}}default:{}}while(0);if((c[n>>2]|0)==3){_B(b,73320)|0;break}else{_B(b,68104)|0;break}}}while(0);l=y;return}function fd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;_B(a,68519)|0;j=c[c[a+12>>2]>>2]|0;i=c[j+4>>2]|0;h=c[j+8>>2]|0;c[g>>2]=c[j>>2];c[g+4>>2]=i;c[g+8>>2]=h;eC(a,68529,g);c[e>>2]=qy(c[f+8>>2]|0)|0;eC(a,68564,e);c[d>>2]=O(c[a+168>>2]|0,c[a+164>>2]|0)|0;eC(a,68577,d);_B(a,68590)|0;_B(a,68600)|0;_B(a,68608)|0;_B(a,68616)|0;_B(a,68624)|0;_B(a,68632)|0;_B(a,68640)|0;_B(a,68644)|0;_B(a,68649)|0;l=b;return}function gd(a){a=a|0;_B(a,68500)|0;return}function hd(a){a=a|0;c[45946]=2;return}function id(a){a=a|0;c[45946]=1;return}function jd(a){a=a|0;c[45946]=2;return}function kd(a){a=a|0;c[45946]=0;return}function ld(a){a=a|0;c[45946]=2;return}function md(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0;n=l;l=l+80|0;m=n;j=c[(c[b+16>>2]|0)+16>>2]|0;k=c[45946]|0;f=c[e+4>>2]|0;g=+h[b+352>>3]*+h[f+16>>3];i=c[b+360>>2]|0?1.5707963267948966:0.0;f=c[f+8>>2]|0;if(!f)f=-1;else f=c[f+20>>2]|0;q=a[e+48>>0]|0;p=+h[d>>3];o=+h[d+8>>3];e=wd(c[e>>2]|0)|0;c[m>>2]=4;c[m+4>>2]=q<<24>>24==108?0:q<<24>>24==114?2:1;c[m+8>>2]=j;c[m+12>>2]=k;c[m+16>>2]=0;c[m+20>>2]=f;h[m+24>>3]=g;h[m+32>>3]=i;c[m+40>>2]=4;h[m+48>>3]=0.0;h[m+56>>3]=0.0;c[m+64>>2]=~~(p+(p>=0.0?.5:-.5));c[m+68>>2]=~~(o+(o>=0.0?.5:-.5));c[m+72>>2]=e;eC(b,68445,m);l=n;return}function nd(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;j=n;i=n+20|0;m=e+32|0;a:do switch(c[m>>2]|0){case 5:{f=0;while(1){g=c[12724+(f<<2)>>2]|0;if((f|0)==8)break a;h=c[e>>2]|0;if((a[g>>0]|0)==(a[h>>0]|0)?(a$(g,h)|0)==0:0){k=10;break a}f=f+1|0}}case 1:{g=e+1|0;h=e+2|0;f=(vd(i,d[e>>0]|0,d[g>>0]|0,d[h>>0]|0)|0)+32|0;if(!(c[i>>2]|0))k=10;else{o=d[e>>0]|0;i=d[g>>0]|0;k=d[h>>0]|0;c[j>>2]=0;c[j+4>>2]=f;c[j+8>>2]=o;c[j+12>>2]=i;c[j+16>>2]=k;eC(b,68388,j);k=10}break}case 0:{f=0;k=10;break}default:qa(135312,68409,168,68428)}while(0);if((k|0)==10)c[e>>2]=f;c[m>>2]=6;l=n;return}function od(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0;e=l;l=l+112|0;f=e+8|0;u=e+104|0;t=e;k=c[a+16>>2]|0;s=~~+h[k+152>>3];r=c[k+16>>2]|0;q=c[k+56>>2]|0;p=c[45946]|0;td(k,u,t);n=+h[b>>3];k=~~(n+(n>=0.0?.5:-.5));m=+h[b+8>>3];j=~~(m+(m>=0.0?.5:-.5));i=+h[b+16>>3];n=i-n;g=+h[b+24>>3];m=g-m;b=c[u>>2]|0;o=+h[t>>3];c[f>>2]=1;c[f+4>>2]=1;c[f+8>>2]=b;c[f+12>>2]=s;c[f+16>>2]=r;c[f+20>>2]=q;c[f+24>>2]=p;c[f+28>>2]=0;c[f+32>>2]=d|0?20:-1;h[f+40>>3]=o;c[f+48>>2]=0;h[f+56>>3]=0.0;c[f+64>>2]=k;c[f+68>>2]=j;c[f+72>>2]=~~(n+(n>=0.0?.5:-.5));c[f+76>>2]=~~(m+(m>=0.0?.5:-.5));c[f+80>>2]=k;c[f+84>>2]=j;c[f+88>>2]=~~(i+(i>=0.0?.5:-.5));c[f+92>>2]=~~(g+(g>=0.0?.5:-.5));eC(a,68323,f);l=e;return}function pd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;f=l;l=l+96|0;g=f+8|0;o=f+80|0;p=f;q=c[a+16>>2]|0;n=~~+h[q+152>>3];m=c[q+16>>2]|0;k=c[q+56>>2]|0;j=c[45946]|0;td(q,o,p);o=c[o>>2]|0;i=+h[p>>3];c[g>>2]=2;c[g+4>>2]=3;c[g+8>>2]=o;c[g+12>>2]=n;c[g+16>>2]=m;c[g+20>>2]=k;c[g+24>>2]=j;c[g+28>>2]=0;c[g+32>>2]=e|0?20:-1;h[g+40>>3]=i;c[g+48>>2]=0;c[g+52>>2]=0;c[g+56>>2]=0;c[g+60>>2]=0;c[g+64>>2]=0;c[g+68>>2]=d+1;eC(a,68227,g);ud(a,b,d,1);l=f;return}function qd(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0;C=l;l=l+192|0;B=C+176|0;z=C+168|0;A=C+104|0;y=C+96|0;f=C+88|0;u=C+180|0;v=C+80|0;w=C+16|0;x=C;e=a+16|0;p=c[e>>2]|0;q=~~+h[p+152>>3];r=c[p+16>>2]|0;s=c[45946]|0;t=B_((d*140|0)+140|0)|0;td(p,u,v);if(!g){o=4;j=0;k=-1}else{o=5;j=c[(c[e>>2]|0)+56>>2]|0;k=20}E=+h[b>>3];n=w+48|0;h[n>>3]=E;D=+h[b+8>>3];h[w+56>>3]=D;c[f>>2]=~~(E+(E>=0.0?.5:-.5));c[f+4>>2]=~~(D+(D>=0.0?.5:-.5));m=x+8|0;e=t+(X0(t,80995,f)|0)|0;p=1;g=0;while(1){i=g+3|0;if((i|0)>=(d|0))break;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];f=1;while(1){if((f|0)==4){f=1;break}F=f+g|0;h[w+(f<<4)>>3]=+h[b+(F<<4)>>3];h[w+(f<<4)+8>>3]=+h[b+(F<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;WL(x,w,3,+(f|0)*.16666666666666666,0,0);D=+h[x>>3];E=+h[m>>3];c[y>>2]=~~(D+(D>=0.0?.5:-.5));c[y+4>>2]=~~(E+(E>=0.0?.5:-.5));f=f+1|0;e=e+(X0(e,80995,y)|0)|0}p=p+6|0;g=i}f=c[u>>2]|0;E=+h[v>>3];c[A>>2]=3;c[A+4>>2]=o;c[A+8>>2]=f;c[A+12>>2]=q;c[A+16>>2]=r;c[A+20>>2]=j;c[A+24>>2]=s;c[A+28>>2]=0;c[A+32>>2]=k;h[A+40>>3]=E;c[A+48>>2]=0;c[A+52>>2]=0;c[A+56>>2]=0;c[A+60>>2]=p;eC(a,68278,A);c[z>>2]=t;eC(a,81002,z);C_(t);f=p+-1|0;e=0;while(1){if((e|0)>=(p|0))break;c[B>>2]=((e|0)%(f|0)|0|0)!=0&1;eC(a,81007,B);e=e+1|0}_B(a,150517)|0;l=C;return}function rd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;e=l;l=l+96|0;f=e+8|0;m=e+80|0;n=e;o=c[a+16>>2]|0;k=~~+h[o+152>>3];j=c[o+16>>2]|0;i=c[45946]|0;td(o,m,n);m=c[m>>2]|0;g=+h[n>>3];c[f>>2]=2;c[f+4>>2]=1;c[f+8>>2]=m;c[f+12>>2]=k;c[f+16>>2]=j;c[f+20>>2]=0;c[f+24>>2]=i;c[f+28>>2]=0;c[f+32>>2]=0;h[f+40>>3]=g;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=d;eC(a,68227,f);ud(a,b,d,0);l=e;return}function sd(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;eC(a,68221,e);l=d;return}function td(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function ud(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));eC(a,80995,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));eC(a,80995,i)}_B(a,150517)|0;l=j;return}function vd(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c[a>>2]=0;k=c[45947]|0;h=195075;g=0;i=-1;while(1){if((g|0)>=(k|0)){l=6;break}m=(b[189136+(g<<1)>>1]|0)-d|0;n=(b[189648+(g<<1)>>1]|0)-e|0;j=(b[190160+(g<<1)>>1]|0)-f|0;j=(O(n,n)|0)+(O(m,m)|0)+(O(j,j)|0)|0;if((j|0)<(h|0))if(!j)break;else{h=j;i=g}g=g+1|0}if((l|0)==6){c[45947]=k+1;if((k|0)==256)g=i;else{b[189136+(g<<1)>>1]=d;b[189648+(g<<1)>>1]=e;b[190160+(g<<1)>>1]=f;c[a>>2]=1}}return g|0}function wd(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[45948]|0;if(!d){c[45949]=64;d=B_(64)|0;c[45948]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[45949]|0;if((e|0)>(b+-8|0)){d=b<<1;c[45949]=d;d=E_(c[45948]|0,d)|0;c[45948]=d;d=d+e|0}if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;X0(d+1|0,81120,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=d+1|0}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[45948]|0}function xd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=l;l=l+16|0;b=d;_B(a,73228)|0;if((c[a+64>>2]|0)==2)_B(a,73243)|0;else _B(a,150517)|0;g=c[c[a+12>>2]>>2]|0;f=c[g+4>>2]|0;e=c[g+8>>2]|0;c[b>>2]=c[g>>2];c[b+4>>2]=f;c[b+8>>2]=e;eC(a,73254,b);l=d;return}function yd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+8|0;e=g;_B(a,73182)|0;d=a+64|0;b=a+12|0;if((c[d>>2]|0)!=2){c[e>>2]=c[(c[b>>2]|0)+28>>2];eC(a,73193,e)}if((c[(c[b>>2]|0)+20>>2]|0)==0?(c[d>>2]|0)!=2:0){b=c[a+476>>2]|0;d=c[a+480>>2]|0;e=c[a+484>>2]|0;c[f>>2]=c[a+472>>2];c[f+4>>2]=b;c[f+8>>2]=d;c[f+12>>2]=e;eC(a,69562,f)}_B(a,73208)|0;_B(a,73221)|0;l=g;return}function zd(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;k=l;l=l+32|0;j=k+24|0;f=k+8|0;i=k;g=c[b+16>>2]|0;a[190688]=0;e=b+12|0;h=g+8|0;if(!(c[(c[e>>2]|0)+28>>2]|0)){c[i>>2]=qy(c[h>>2]|0)|0;eC(b,69493,i);d=b+64|0;if((c[d>>2]|0)==2)_B(b,69526)|0;else _B(b,69508)|0;do if(!(c[(c[e>>2]|0)+20>>2]|0))if((c[d>>2]|0)==2){n=c[b+460>>2]|0;m=c[b+464>>2]|0;d=c[b+468>>2]|0;c[f>>2]=c[b+456>>2];c[f+4>>2]=n;c[f+8>>2]=m;c[f+12>>2]=d;eC(b,69562,f);break}else{_B(b,69538)|0;break}while(0);_B(b,69592)|0;iJ(b,c[(c[e>>2]|0)+24>>2]|0,13e3);kJ(b);d=c[(c[e>>2]|0)+20>>2]|0;if(d|0){c[i>>2]=c[d>>2];c[i+4>>2]=0;iJ(b,0,i)}}c[45950]=(a[(c[(c[h>>2]|0)+16>>2]|0)+115>>0]|0)==1?1:-1;if(!(a[190688]|0)){_B(b,69612)|0;a[190688]=1}d=c[g+208>>2]|0;if(d|0){c[j>>2]=lJ(d,c[45950]|0)|0;eC(b,69625,j)}l=k;return}function Ad(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;b=l;l=l+16|0;f=b;c[f>>2]=d;c[f+4>>2]=e;eC(a,69477,f);l=b;return}function Bd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0;s=l;l=l+144|0;r=s+128|0;q=s+112|0;p=s+72|0;o=s+56|0;n=s+40|0;m=s+32|0;e=s+24|0;b=s+8|0;d=s;f=c[a+456>>2]|0;j=c[a+460>>2]|0;g=c[a+464>>2]|0;i=c[a+468>>2]|0;k=a+12|0;t=(c[(c[k>>2]|0)+28>>2]|0)+1|0;c[d>>2]=t;c[d+4>>2]=t;eC(a,69104,d);if(!(c[(c[k>>2]|0)+20>>2]|0)){c[b>>2]=f;c[b+4>>2]=j;c[b+8>>2]=g;c[b+12>>2]=i;eC(a,69121,b)}d=a+360|0;c[e>>2]=c[d>>2]|0?69155:69165;eC(a,69174,e);b=a+64|0;if((c[b>>2]|0)==1){c[m>>2]=g;c[m+4>>2]=i;eC(a,69199,m)}m=c[a+200>>2]|0;t=c[a+204>>2]|0;c[n>>2]=c[a+196>>2];c[n+4>>2]=m;c[n+8>>2]=t;eC(a,69238,n);if(!(c[(c[k>>2]|0)+20>>2]|0)){c[o>>2]=f;c[o+4>>2]=j;c[o+8>>2]=g-f;c[o+12>>2]=i-j;eC(a,69258,o)}w=+h[a+496>>3];t=c[d>>2]|0;v=+h[a+504>>3];u=+h[a+512>>3];h[p>>3]=+h[a+488>>3];h[p+8>>3]=w;c[p+16>>2]=t;h[p+24>>3]=v;h[p+32>>3]=u;eC(a,69298,p);if((c[b>>2]|0)==1){if((g|0)>14399|(i|0)>14399){t=c[(c[k>>2]|0)+16>>2]|0;c[q>>2]=g;c[q+4>>2]=i;c[q+8>>2]=14400;ub[t&63](69341,q)}c[r>>2]=f;c[r+4>>2]=j;c[r+8>>2]=g;c[r+12>>2]=i;eC(a,69436,r)}l=s;return}function Cd(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=a+12|0;if(c[(c[b>>2]|0)+20>>2]|0){_B(a,69028)|0;iJ(a,0,(c[(c[b>>2]|0)+20>>2]|0)+4|0)}_B(a,69045)|0;_B(a,69072)|0;c[d>>2]=c[(c[b>>2]|0)+28>>2];eC(a,69087,d);l=e;return}function Dd(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=qy(c[(c[a+16>>2]|0)+8>>2]|0)|0;eC(a,69021,d);_B(a,69014)|0;l=b;return}function Ed(a){a=a|0;_B(a,84457)|0;return}function Fd(a){a=a|0;_B(a,69014)|0;return}function Gd(a){a=a|0;_B(a,84457)|0;return}function Hd(a){a=a|0;_B(a,69014)|0;return}function Id(a){a=a|0;_B(a,84457)|0;return}function Jd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;e=l;l=l+16|0;d=e;if(b|0?(g=(c[a+16>>2]|0)+272|0,c[g>>2]|0):0){_B(a,68910)|0;iC(a,c[g>>2]|0,2);_B(a,68921)|0;c[d>>2]=lJ(b,c[45950]|0)|0;eC(a,68925,d)}l=e;return}function Kd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;j=m+8|0;k=m;f=c[b+16>>2]|0;if(!(+h[f+40>>3]<.5)){Rd(b,f+16|0);i=e+4|0;fC(b,+h[(c[i>>2]|0)+16>>3]);c[j>>2]=c[c[i>>2]>>2];eC(b,68869,j);i=lJ(c[e>>2]|0,c[45950]|0)|0;switch(a[e+48>>0]|0){case 114:{n=e+32|0;f=n;g=+h[n>>3];break}case 108:{f=e+32|0;g=0.0;break}default:{n=e+32|0;f=n;g=+h[n>>3]*.5}}h[d>>3]=+h[d>>3]-g;n=d+8|0;h[n>>3]=+h[n>>3]+ +h[e+24>>3];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];hC(b,j);_B(b,68884)|0;fC(b,+h[f>>3]);c[k>>2]=i;eC(b,68893,k)}l=m;return}function Ld(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+32|0;f=g;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];h[f+16>>3]=+h[b+16>>3]-+h[b>>3];h[f+24>>3]=+h[b+24>>3]-+h[b+8>>3];b=a+16|0;if(d|0?(e=c[b>>2]|0,+h[e+80>>3]>.5):0){Rd(a,e+56|0);iC(a,f,2);_B(a,68827)|0}if(+h[(c[b>>2]|0)+40>>3]>.5){Sd(a);Rd(a,(c[b>>2]|0)+16|0);iC(a,f,2);_B(a,68847)|0}l=g;return}function Md(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+16|0;i=j;g=a+16|0;if(e|0?(f=c[g>>2]|0,+h[f+80>>3]>.5):0){Rd(a,f+56|0);_B(a,68748)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];hC(a,i);_B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;f=b+(e<<4)|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];hC(a,i);_B(a,68766)|0;e=e+1|0}_B(a,68793)|0}if(+h[(c[g>>2]|0)+40>>3]>.5){Sd(a);Rd(a,(c[g>>2]|0)+16|0);_B(a,68748)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];hC(a,i);_B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;g=b+(e<<4)|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];hC(a,i);_B(a,68766)|0;e=e+1|0}_B(a,68809)|0}l=j;return}function Nd(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0;k=l;l=l+16|0;f=k;i=a+16|0;if(g|0?(j=c[i>>2]|0,+h[j+80>>3]>.5):0){Rd(a,j+56|0);_B(a,68748)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];hC(a,f);_B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;iC(a,b+(e<<4)|0,3);_B(a,68783)|0;e=e+3|0}_B(a,68793)|0}if(+h[(c[i>>2]|0)+40>>3]>.5){Sd(a);Rd(a,(c[i>>2]|0)+16|0);_B(a,68748)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];hC(a,f);_B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;iC(a,b+(e<<4)|0,3);_B(a,68783)|0;e=e+3|0}_B(a,68775)|0}l=k;return}function Od(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;g=l;l=l+16|0;f=g;e=a+16|0;if(+h[(c[e>>2]|0)+40>>3]>.5){Sd(a);Rd(a,(c[e>>2]|0)+16|0);_B(a,68748)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];hC(a,f);_B(a,68757)|0;e=1;while(1){if((e|0)>=(d|0))break;i=b+(e<<4)|0;c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];hC(a,f);_B(a,68766)|0;e=e+1|0}_B(a,68775)|0}l=g;return}function Pd(a,b){a=a|0;b=b|0;_B(a,68745)|0;_B(a,b)|0;_B(a,150517)|0;return}function Qd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;g=n+16|0;m=n+8|0;k=n;i=a+16|0;if(f|0?(j=c[i>>2]|0,+h[j+80>>3]>.5):0){Rd(a,j+56|0);_B(a,84352)|0;iC(a,d,e);_B(a,99578)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];hC(a,g);c[k>>2]=e;c[k+4>>2]=b;eC(a,68662,k)}if(+h[(c[i>>2]|0)+40>>3]>.5){Sd(a);Rd(a,(c[i>>2]|0)+16|0);_B(a,84352)|0;iC(a,d,e);_B(a,99578)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];hC(a,g);c[m>>2]=e;c[m+4>>2]=b;eC(a,68678,m)}l=n;return}function Rd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;f=l;l=l+32|0;e=f;if(b|0){switch(c[(c[a+16>>2]|0)+4>>2]|0){case 1:case 0:{d=108412;break}case 2:{d=108399;break}case 3:{d=108368;break}default:d=68714}i=+h[b+8>>3];g=+h[b+16>>3];h[e>>3]=+h[b>>3];h[e+8>>3]=i;h[e+16>>3]=g;c[e+24>>2]=d;eC(a,68721,e)}l=f;return}function Sd(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;k=m+8|0;j=m;g=b+16|0;i=c[g>>2]|0;d=c[i+160>>2]|0;fC(b,+h[i+152>>3]);_B(b,68695)|0;while(1){if(!d)break;i=d+4|0;f=c[d>>2]|0;if(!f)break;if(!(a$(f,108062)|0)){d=i;continue}else e=f;while(1){d=e+1|0;if(!(a[e>>0]|0))break;else e=d}a:while(1){if(!(a[d>>0]|0))break;c[j>>2]=d;eC(b,68710,j);while(1){e=d+1|0;if(!(a[d>>0]|0)){d=e;continue a}else d=e}}if(!(a$(f,131253)|0))h[(c[g>>2]|0)+152>>3]=0.0;c[k>>2]=f;eC(b,93588,k);d=i}l=m;return}function Td(b){b=b|0;var d=0;_B(b,74734)|0;d=wx(c[(c[b>>2]|0)+168>>2]|0,74790)|0;if(d|0?a[d>>0]|0:0){_B(b,74801)|0;_B(b,d)|0;_B(b,74825)|0}_B(b,74846)|0;_B(b,74894)|0;_B(b,74948)|0;d=b+12|0;_B(b,pH(c[c[c[d>>2]>>2]>>2]|0)|0)|0;_B(b,78077)|0;_B(b,pH(c[(c[c[d>>2]>>2]|0)+4>>2]|0)|0)|0;_B(b,78087)|0;_B(b,pH(c[(c[c[d>>2]>>2]|0)+8>>2]|0)|0)|0;_B(b,75330)|0;_B(b,75354)|0;return}function Ud(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0;i=l;l=l+48|0;g=i+16|0;f=i+8|0;e=i;d=c[b+16>>2]|0;_B(b,74569)|0;d=d+8|0;if(a[(qy(c[d>>2]|0)|0)>>0]|0){_B(b,75293)|0;_B(b,pH(qy(c[d>>2]|0)|0)|0)|0}c[e>>2]=O(c[b+168>>2]|0,c[b+164>>2]|0)|0;eC(b,74574,e);e=c[b+452>>2]|0;c[f>>2]=c[b+448>>2];c[f+4>>2]=e;eC(b,74590,f);m=+h[b+392>>3];k=+h[b+400>>3];j=+h[b+408>>3];h[g>>3]=+h[b+384>>3];h[g+8>>3]=m;h[g+16>>3]=k;h[g+24>>3]=j;eC(b,74623,g);_B(b,74654)|0;_B(b,74690)|0;_B(b,76284)|0;l=i;return}function Vd(a){a=a|0;_B(a,74561)|0;return}function Wd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;re(a,b,0,98484,c[(c[a+16>>2]|0)+8>>2]|0);_B(a,76284)|0;return}function Xd(a){a=a|0;_B(a,74409)|0;return}function Yd(b){b=b|0;var d=0,e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=c[b+16>>2]|0;d=g+8|0;re(b,c[g+212>>2]|0,0,108412,c[d>>2]|0);_B(b,74513)|0;fC(b,+h[b+488>>3]);_B(b,99578)|0;fC(b,+h[b+496>>3]);c[f>>2]=0-(c[b+360>>2]|0);eC(b,74532,f);fC(b,+h[b+504>>3]);_B(b,99578)|0;fC(b,-+h[b+512>>3]);_B(b,74556)|0;if(a[(qy(c[d>>2]|0)|0)>>0]|0){_B(b,74465)|0;_B(b,pH(qy(c[d>>2]|0)|0)|0)|0;_B(b,74473)|0}l=e;return}function Zd(a){a=a|0;_B(a,74409)|0;return}function _d(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=d+8|0;re(a,c[d+212>>2]|0,0,104980,c[b>>2]|0);_B(a,76284)|0;_B(a,74465)|0;_B(a,pH(qy(c[b>>2]|0)|0)|0)|0;_B(a,74473)|0;return}function $d(a){a=a|0;_B(a,74409)|0;return}function ae(a){a=a|0;var b=0,d=0,e=0;d=c[a+16>>2]|0;b=c[a+160>>2]|0;if((b|0)>1)b=c[(c[(c[a>>2]|0)+308>>2]|0)+(b<<2)>>2]|0;else b=0;e=d+8|0;re(a,c[d+212>>2]|0,b,108399,c[e>>2]|0);_B(a,76284)|0;_B(a,74465)|0;_B(a,pH(qy(c[e>>2]|0)|0)|0)|0;_B(a,74473)|0;return}function be(a){a=a|0;_B(a,74409)|0;return}function ce(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=d+8|0;re(a,c[d+212>>2]|0,0,108368,c[b>>2]|0);_B(a,76284)|0;_B(a,74465)|0;b=oH(99069,c[b>>2]|0)|0;_B(a,pH(b)|0)|0;C_(b);_B(a,74473)|0;return}function de(a){a=a|0;_B(a,74409)|0;return}function ee(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;_B(b,74415)|0;if(f|0){_B(b,74418)|0;_B(b,pH(f)|0)|0;_B(b,95669)|0}_B(b,74308)|0;_B(b,76245)|0;if(c|0?a[c>>0]|0:0){_B(b,74426)|0;_B(b,c)|0;_B(b,95669)|0}if(d|0?a[d>>0]|0:0){_B(b,74440)|0;_B(b,qH(d,1)|0)|0;_B(b,95669)|0}if(e|0?a[e>>0]|0:0){_B(b,74455)|0;_B(b,pH(e)|0)|0;_B(b,95669)|0}_B(b,76284)|0;return}function fe(a){a=a|0;_B(a,76239)|0;_B(a,74409)|0;return}function ge(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0,I=0,J=0,K=0,L=0,M=0;M=l;l=l+176|0;L=M+160|0;K=M+152|0;F=M+136|0;J=M+128|0;E=M+120|0;D=M+112|0;C=M+104|0;B=M+96|0;A=M+88|0;y=M+80|0;w=M+72|0;v=M+64|0;u=M+56|0;t=M+48|0;i=M+40|0;q=M+32|0;s=M+24|0;r=M+16|0;p=M+8|0;o=M;I=c[e+16>>2]|0;_B(e,73940)|0;switch(a[g+48>>0]|0){case 108:{_B(e,73946)|0;break}case 114:{_B(e,73967)|0;break}default:_B(e,73986)|0}H=f+8|0;G=+h[H>>3]+ +h[g+24>>3];h[H>>3]=G;H=I+260|0;if(!(b[H>>1]&512)){_B(e,74008)|0;fC(e,+h[f>>3]);_B(e,74013)|0;fC(e,-G);_B(e,95669)|0}x=g+4|0;f=c[x>>2]|0;n=c[f+8>>2]|0;if(n){switch(c[(c[(c[(c[e>>2]|0)+168>>2]|0)+16>>2]|0)+244>>2]|0){case 1:{m=n;f=n+16|0;i=n+8|0;break}case 2:{m=n+24|0;f=n+32|0;i=n+28|0;break}default:{m=n+4|0;f=n+16|0;i=n+8|0}}j=c[f>>2]|0;f=c[i>>2]|0;k=c[n+12>>2]|0;c[o>>2]=c[m>>2];eC(e,74019,o);i=c[n+24>>2]|0;if(i|0){c[p>>2]=i;eC(e,74036,p)}_B(e,95669)|0;if(f|0){c[r>>2]=f;eC(e,74040,r)}if(k|0){c[s>>2]=k;eC(e,74058,s)}if(!j)j=0;else{c[q>>2]=j;eC(e,74077,q)}}else{c[i>>2]=c[f>>2];eC(e,74094,i);j=0;f=0}i=c[x>>2]|0;if(i|0?(z=c[i+24>>2]|0,z&127|0):0){if(!((f|0)!=0|(z&1|0)==0))eC(e,74112,t);if(!((j|0)!=0|(z&2|0)==0))eC(e,74132,u);if(z&100|0){eC(e,74153,v);if(!(z&4))f=0;else{eC(e,102960,w);f=1}if(z&64){c[y>>2]=f|0?97973:191979;eC(e,74172,y);f=1}if(z&32|0){c[A>>2]=f|0?97973:191979;eC(e,74183,A)}eC(e,95669,B)}if(z&8|0)eC(e,74198,C);if(z&16|0)eC(e,74222,D)}h[E>>3]=+h[(c[x>>2]|0)+16>>3];eC(e,74244,E);f=I+16|0;switch(c[I+48>>2]|0){case 5:{f=c[f>>2]|0;if(N$(f,134232)|0){c[J>>2]=f;eC(e,74262,J)}break}case 1:{E=d[f+1>>0]|0;J=d[f+2>>0]|0;c[F>>2]=d[f>>0];c[F+4>>2]=E;c[F+8>>2]=J;eC(e,74273,F);break}default:qa(135312,73454,486,74295)}_B(e,74308)|0;if(b[H>>1]&512){c[K>>2]=pH(c[I+212>>2]|0)|0;eC(e,74310,K);_B(e,74359)|0;fC(e,-G);_B(e,74377)|0}_B(e,qH(c[g>>2]|0,1)|0)|0;if(b[H>>1]&512)eC(e,74380,L);_B(e,74400)|0;l=M;return}function he(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;switch(c|0){case 2:{d=oe(a,b,2)|0;break}case 3:{d=pe(a)|0;break}default:d=0}_B(a,73904)|0;me(a,c,d);_B(a,73913)|0;fC(a,+h[b>>3]);_B(a,73919)|0;c=b+8|0;fC(a,-+h[c>>3]);_B(a,73926)|0;fC(a,+h[b+16>>3]-+h[b>>3]);_B(a,73933)|0;fC(a,+h[b+24>>3]-+h[c>>3]);_B(a,73320)|0;return}function ie(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;switch(d|0){case 2:{e=oe(a,b,c)|0;break}case 3:{e=pe(a)|0;break}default:e=0}_B(a,73895)|0;me(a,d,e);_B(a,73310)|0;e=0;while(1){if((e|0)>=(c|0))break;fC(a,+h[b+(e<<4)>>3]);_B(a,97973)|0;fC(a,-+h[b+(e<<4)+8>>3]);_B(a,99578)|0;e=e+1|0}fC(a,+h[b>>3]);_B(a,97973)|0;fC(a,-+h[b+8>>3]);_B(a,73320)|0;return}function je(a,d,e,f,g,h){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;g=c[a+16>>2]|0;switch(h|0){case 2:{f=oe(a,d,e)|0;break}case 3:{f=pe(a)|0;break}default:f=0}_B(a,73490)|0;if(b[g+260>>1]&512){_B(a,73496)|0;_B(a,pH(c[g+212>>2]|0)|0)|0;_B(a,73502)|0}me(a,h,f);_B(a,73507)|0;qe(a,d,e);_B(a,73320)|0;return}function ke(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;_B(a,73300)|0;me(a,0,0);_B(a,73310)|0;d=0;while(1){if((d|0)>=(c|0))break;fC(a,+h[b+(d<<4)>>3]);_B(a,97973)|0;fC(a,-+h[b+(d<<4)+8>>3]);_B(a,99578)|0;d=d+1|0}_B(a,73320)|0;return}function le(a,b){a=a|0;b=b|0;_B(a,73294)|0;_B(a,pH(b)|0)|0;_B(a,75354)|0;return}function me(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+96|0;k=q+48|0;p=q+40|0;n=q+32|0;o=q+24|0;j=q+16|0;g=q+8|0;f=q;m=c[b+16>>2]|0;_B(b,73325)|0;a:do switch(d|0){case 2:{c[f>>2]=e;eC(b,73333,f);break}case 3:{c[g>>2]=e;eC(b,73344,g);break}case 0:{_B(b,132627)|0;break}default:{d=m+56|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));ne(b,k);if((c[m+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:break a;default:{}}h[j>>3]=+(d&255)*.00392156862745098;eC(b,73355,j)}}}while(0);_B(b,73374)|0;e=m+16|0;f=k;g=e;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));ne(b,k);d=m+152|0;if(+h[d>>3]!=1.0){_B(b,73385)|0;fC(b,+h[d>>3])}switch(c[m+144>>2]|0){case 1:{c[o>>2]=73425;eC(b,73402,o);break}case 2:{c[n>>2]=73429;eC(b,73402,n);break}default:{}}b:do if((c[m+48>>2]|0)==1){d=a[e+3>>0]|0;switch(d<<24>>24){case -1:case 0:break b;default:{}}h[p>>3]=+(d&255)*.00392156862745098;eC(b,73433,p)}while(0);_B(b,95669)|0;l=q;return}function ne(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{_B(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){_B(b,134297)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;eC(b,75610,f);break a}default:qa(135312,73454,117,73474)}while(0);l=g;return}function oe(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+112|0;o=t+64|0;r=t+56|0;n=t+48|0;m=t+40|0;i=t+32|0;k=t;q=c[45952]|0;c[45952]=q+1;p=c[b+16>>2]|0;f=+(c[p+136>>2]|0)*.017453292519943295;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;$M(d,k,e,f,0);c[o>>2]=q;eC(b,73727,o);_B(b,73792)|0;fC(b,+h[k>>3]);_B(b,73797)|0;fC(b,+h[k+8>>3]);_B(b,73804)|0;fC(b,+h[k+16>>3]);_B(b,73811)|0;fC(b,+h[k+24>>3]);_B(b,73818)|0;k=p+140|0;f=+g[k>>2];if(f>0.0){h[i>>3]=f+-.001;eC(b,73823,i)}else _B(b,73599)|0;d=p+56|0;e=o;i=d;j=e+40|0;do{c[e>>2]=c[i>>2];e=e+4|0;i=i+4|0}while((e|0)<(j|0));ne(b,o);_B(b,73635)|0;a:do if((c[p+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{s=7;break a}default:{}}h[m>>3]=+(d&255)*.00392156862745098;eC(b,96586,m)}else s=7;while(0);if((s|0)==7)_B(b,73650)|0;_B(b,73653)|0;f=+g[k>>2];if(f>0.0){h[n>>3]=f;eC(b,73823,n)}else _B(b,73659)|0;d=p+96|0;e=o;i=d;j=e+40|0;do{c[e>>2]=c[i>>2];e=e+4|0;i=i+4|0}while((e|0)<(j|0));ne(b,o);_B(b,73635)|0;b:do if((c[p+128>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{s=14;break b}default:{}}h[r>>3]=+(d&255)*.00392156862745098;eC(b,96586,r)}else s=14;while(0);if((s|0)==14)_B(b,73650)|0;_B(b,73863)|0;l=t;return q|0}function pe(b){b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+64|0;k=q+16|0;o=q+8|0;j=q;n=c[45951]|0;c[45951]=n+1;m=c[b+16>>2]|0;r=+(c[m+136>>2]|0)*.017453292519943295;e=r;if(r==0.0){f=50;d=50}else{f=~~((+E(+e)+1.0)*50.0);d=~~((1.0-+F(+e))*50.0)}c[k>>2]=n;c[k+4>>2]=f;c[k+8>>2]=d;eC(b,73515,k);_B(b,73599)|0;d=m+56|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));ne(b,k);_B(b,73635)|0;a:do if((c[m+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{p=6;break a}default:{}}h[j>>3]=+(d&255)*.00392156862745098;eC(b,96586,j)}else p=6;while(0);if((p|0)==6)_B(b,73650)|0;_B(b,73653)|0;_B(b,73659)|0;d=m+96|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));ne(b,k);_B(b,73635)|0;b:do if((c[m+128>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{p=10;break b}default:{}}h[o>>3]=+(d&255)*.00392156862745098;eC(b,96586,o)}else p=10;while(0);if((p|0)==10)_B(b,73650)|0;_B(b,73695)|0;l=q;return n|0}function qe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;i=l;l=l+16|0;g=i;e=77;f=0;while(1){if((f|0)>=(d|0))break;c[g>>2]=e;eC(a,73512,g);fC(a,+h[b+(f<<4)>>3]);_B(a,97973)|0;fC(a,-+h[b+(f<<4)+8>>3]);e=(f|0)==0?67:32;f=f+1|0}l=i;return}function re(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+16|0;i=j+8|0;h=j;_B(b,74483)|0;_B(b,pH(d)|0)|0;if(e|0){c[h>>2]=pH(e)|0;eC(b,74491,h)}c[i>>2]=f;eC(b,74495,i);d=wx(g,74507)|0;if(d|0?a[d>>0]|0:0){_B(b,99578)|0;_B(b,pH(d)|0)|0}_B(b,95669)|0;l=j;return}function se(a){a=a|0;var b=0;_B(a,75314)|0;b=a+12|0;_B(a,Ce(c[c[c[b>>2]>>2]>>2]|0)|0)|0;_B(a,78077)|0;_B(a,Ce(c[(c[c[b>>2]>>2]|0)+4>>2]|0)|0)|0;_B(a,78087)|0;_B(a,Ce(c[(c[c[b>>2]>>2]|0)+8>>2]|0)|0)|0;_B(a,75330)|0;return}function te(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=c[b+16>>2]|0;_B(b,75291)|0;d=d+8|0;if(a[(qy(c[d>>2]|0)|0)>>0]|0){_B(b,75293)|0;_B(b,Ce(qy(c[d>>2]|0)|0)|0)|0}c[e>>2]=O(c[b+168>>2]|0,c[b+164>>2]|0)|0;eC(b,75302,e);c[45953]=0;l=f;return}function ue(a){a=a|0;c[45953]=1;return}function ve(a){a=a|0;c[45953]=-1;return}function we(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+48|0;i=n+8|0;m=n;f=c[b+16>>2]|0;if(c[f+144>>2]|0?(k=e+4|0,j=~~(+h[b+352>>3]*+h[(c[k>>2]|0)+16>>3]),j|0):0){De(b);_B(b,75230)|0;g=d+8|0;h[g>>3]=+h[g>>3]-+(j|0)*.55;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];hC(b,i);_B(b,75244)|0;_B(b,c[e>>2]|0)|0;_B(b,75253)|0;_B(b,75051)|0;g=i;d=f+16|0;f=g+40|0;do{c[g>>2]=c[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(f|0));Ee(b,i);_B(b,75255)|0;i=c[k>>2]|0;k=c[i+8>>2]|0;k=c[((k|0)==0?i:k+4|0)>>2]|0;_B(b,95669)|0;_B(b,k)|0;_B(b,95669)|0;c[m>>2]=j;eC(b,75264,m);switch(a[e+48>>0]|0){case 108:{_B(b,75269)|0;break}case 114:{_B(b,75280)|0;break}default:{}}Fe(b);_B(b,150517)|0}l=n;return}function xe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0.0,m=0.0,n=0.0;j=l;l=l+48|0;f=j;g=c[a+16>>2]|0;i=g+144|0;if(c[i>>2]|0){n=+h[b>>3];m=+h[b+24>>3];e=b+8|0;k=+h[e>>3];h[b>>3]=n-+h[b+16>>3]+n;h[e>>3]=k-m+k;De(a);_B(a,75216)|0;iC(a,b,2);_B(a,75051)|0;do if(!d)if(!(c[45953]|0)){_B(a,94227)|0;break}else{_B(a,134116)|0;break}else{b=f;d=g+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Ee(a,f)}while(0);if((c[45953]|0)==1)c[45953]=0;_B(a,75162)|0;fC(a,+h[g+152>>3]);_B(a,75205)|0;b=f;d=g+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Ee(a,f);b=c[i>>2]|0;if((b|0)==1){_B(a,75059)|0;b=c[i>>2]|0}if((b|0)==2)_B(a,75068)|0;Fe(a);_B(a,150517)|0}l=j;return}function ye(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+48|0;f=j;g=c[a+16>>2]|0;i=g+144|0;if(c[i>>2]|0){De(a);_B(a,75188)|0;iC(a,b,d);_B(a,75051)|0;do if(!e)if(!(c[45953]|0)){_B(a,94227)|0;break}else{_B(a,134116)|0;break}else{b=f;d=g+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Ee(a,f)}while(0);if((c[45953]|0)==1)c[45953]=0;_B(a,75162)|0;fC(a,+h[g+152>>3]);_B(a,75205)|0;b=f;d=g+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Ee(a,f);b=c[i>>2]|0;if((b|0)==1){_B(a,75059)|0;b=c[i>>2]|0}if((b|0)==2)_B(a,75068)|0;Fe(a);_B(a,150517)|0}l=j;return}function ze(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0;m=l;l=l+48|0;i=m;j=c[a+16>>2]|0;k=j+144|0;if(c[k>>2]|0){De(a);_B(a,75037)|0;iC(a,b,d);_B(a,75051)|0;e=i;f=j+16|0;g=e+40|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));Ee(a,i);_B(a,75162)|0;fC(a,+h[j+152>>3]);e=c[k>>2]|0;if((e|0)==1){_B(a,75059)|0;e=c[k>>2]|0}if((e|0)==2)_B(a,75068)|0;_B(a,75171)|0;Fe(a);_B(a,150517)|0}l=m;return}function Ae(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+48|0;g=i;e=c[a+16>>2]|0;h=e+144|0;if(c[h>>2]|0){De(a);_B(a,75037)|0;iC(a,b,d);_B(a,75051)|0;f=g;b=e+16|0;d=f+40|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0}while((f|0)<(d|0));Ee(a,g);b=c[h>>2]|0;if((b|0)==1){_B(a,75059)|0;b=c[h>>2]|0}if((b|0)==2)_B(a,75068)|0;Fe(a);_B(a,150517)|0}l=i;return}function Be(a,b){a=a|0;b=b|0;_B(a,75034)|0;_B(a,Ce(b)|0)|0;_B(a,150517)|0;return}function Ce(a){a=a|0;return a|0}function De(b){b=b|0;if(!(a[b+144>>0]|0))_B(b,75159)|0;else _B(b,c[b+148>>2]|0)|0;return}function Ee(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{_B(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){_B(b,94227)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;eC(b,75610,f);break a}default:qa(135312,75077,49,75141)}while(0);l=g;return}function Fe(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=c[a+16>>2]|0;switch(c[f+12>>2]|0){case 8:{b=1;d=108399;e=f+8|0;break}case 10:{b=0;d=108399;e=f+8|0;break}case 3:case 2:case 9:{b=1;d=108368;e=f+8|0;break}case 7:case 6:case 11:{b=0;d=108368;e=f+8|0;break}case 0:{b=1;d=108412;e=f+8|0;break}case 4:{b=0;d=75113;e=f+8|0;break}case 1:{b=1;d=108412;e=f+8|0;break}case 5:{b=0;d=108412;e=f+8|0;break}default:qa(135312,75077,106,75096)}f=c[(c[e>>2]|0)+8>>2]|0;c[g>>2]=b;c[g+4>>2]=d;c[g+8>>2]=f;eC(a,75125,g);l=h;return}function Ge(a){a=a|0;var b=0;_B(a,78049)|0;_B(a,78057)|0;b=a+12|0;_B(a,Re(c[c[c[b>>2]>>2]>>2]|0)|0)|0;_B(a,78077)|0;_B(a,Re(c[(c[c[b>>2]>>2]|0)+4>>2]|0)|0)|0;_B(a,78087)|0;_B(a,Re(c[(c[c[b>>2]>>2]|0)+8>>2]|0)|0)|0;_B(a,78090)|0;return}function He(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;i=j+24|0;g=j+16|0;f=j+8|0;e=j;d=c[b+16>>2]|0;c[45957]=~~(+h[b+232>>3]-+h[b+216>>3]);c[45956]=~~(+h[b+224>>3]-+h[b+208>>3]);_B(b,76736)|0;_B(b,76743)|0;d=qy(c[d+8>>2]|0)|0;if(a[d>>0]|0){_B(b,76812)|0;_B(b,Re(d)|0)|0;_B(b,76820)|0}c[e>>2]=O(c[b+168>>2]|0,c[b+164>>2]|0)|0;eC(b,76829,e);_B(b,76849)|0;_B(b,76884)|0;_B(b,76912)|0;_B(b,76918)|0;_B(b,76961)|0;_B(b,77002)|0;_B(b,77021)|0;_B(b,77038)|0;_B(b,77086)|0;_B(b,77139)|0;_B(b,77215)|0;_B(b,77291)|0;_B(b,77300)|0;_B(b,77323)|0;_B(b,77350)|0;_B(b,77403)|0;_B(b,77425)|0;_B(b,77470)|0;_B(b,77482)|0;_B(b,77492)|0;_B(b,77518)|0;_B(b,77403)|0;_B(b,77570)|0;_B(b,77470)|0;_B(b,77482)|0;_B(b,77614)|0;_B(b,77323)|0;_B(b,77350)|0;_B(b,77403)|0;_B(b,77570)|0;_B(b,77470)|0;_B(b,77482)|0;_B(b,77492)|0;_B(b,77518)|0;_B(b,77403)|0;_B(b,77425)|0;_B(b,77470)|0;_B(b,77482)|0;_B(b,77627)|0;_B(b,77635)|0;_B(b,77641)|0;_B(b,77655)|0;_B(b,77663)|0;_B(b,77696)|0;e=(c[45957]|0)+10|0;c[f>>2]=c[45956];c[f+4>>2]=e;eC(b,77773,f);_B(b,77803)|0;_B(b,77812)|0;_B(b,77870)|0;_B(b,77880)|0;_B(b,77945)|0;f=c[45957]|0;c[g>>2]=c[45956];c[g+4>>2]=f;eC(b,77982,g);g=c[45957]|0;c[i>>2]=c[45956];c[i+4>>2]=g;eC(b,78010,i);l=j;return}function Ie(a){a=a|0;_B(a,76287)|0;_B(a,76299)|0;_B(a,76307)|0;_B(a,76370)|0;_B(a,76299)|0;_B(a,76415)|0;_B(a,76464)|0;_B(a,76518)|0;_B(a,76299)|0;_B(a,76618)|0;_B(a,76667)|0;_B(a,76299)|0;_B(a,76719)|0;return}function Je(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+32|0;i=j+16|0;h=j+8|0;g=j;_B(b,76245)|0;if(d|0?a[d>>0]|0:0){c[g>>2]=Re(d)|0;eC(b,76248,g)}if(e|0?a[e>>0]|0:0){c[h>>2]=Re(e)|0;eC(b,76259,h)}if(f|0?a[f>>0]|0:0){c[i>>2]=Re(f)|0;eC(b,76271,i)}_B(b,76284)|0;l=j;return}function Ke(a){a=a|0;_B(a,76239)|0;return}function Le(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0;A=l;l=l+112|0;y=A+96|0;z=A+88|0;w=A+80|0;q=A+72|0;v=A+64|0;t=A+56|0;s=A+48|0;r=A+40|0;p=A+24|0;o=A+8|0;n=A;x=c[b+16>>2]|0;switch(a[f+48>>0]|0){case 108:{j=+h[e>>3];m=+h[f+32>>3];break}case 114:{m=+h[f+32>>3];j=+h[e>>3]-m;break}default:{m=+h[f+32>>3];j=+h[e>>3]-m*.5}}g=f+40|0;i=+h[g>>3];u=f+4|0;k=+h[(c[u>>2]|0)+16>>3];if(i>3]=i}B=j+-8.0;k=+((c[45957]|0)>>>0)-+h[e+8>>3]-i+k*.2+(k<12.0?1.4:2.0);eC(b,75901,n);h[o>>3]=B;h[o+8>>3]=k;eC(b,75838,o);h[p>>3]=j+8.0+m-B;h[p+8>>3]=i;eC(b,75862,p);_B(b,75936)|0;_B(b,75970)|0;g=c[u>>2]|0;e=c[g+8>>2]|0;if(e){c[r>>2]=c[e+4>>2];eC(b,76060,r);g=c[e+8>>2]|0;if(g|0){c[s>>2]=g;eC(b,76079,s)}g=c[e+12>>2]|0;if(g|0){c[t>>2]=g;eC(b,76096,t)}g=c[e+16>>2]|0;if(g|0){c[v>>2]=g;eC(b,76114,v)}}else{c[q>>2]=c[g>>2];eC(b,76060,q)}h[w>>3]=+h[(c[u>>2]|0)+16>>3];eC(b,76130,w);g=x+16|0;switch(c[x+48>>2]|0){case 5:{g=c[g>>2]|0;if(N$(g,134232)|0){c[z>>2]=g;eC(b,76150,z)}break}case 1:{x=d[g+1>>0]|0;z=d[g+2>>0]|0;c[y>>2]=d[g>>0];c[y+4>>2]=x;c[y+8>>2]=z;eC(b,76160,y);break}default:qa(135312,75624,438,76181)}_B(b,76194)|0;_B(b,Re(c[f>>2]|0)|0)|0;_B(b,76205)|0;_B(b,76228)|0;l=A;return}function Me(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0;e=l;l=l+32|0;f=e+16|0;j=e;_B(a,75802)|0;m=+h[b>>3];i=+h[b+16>>3]-m;k=+h[b+24>>3];g=k-+h[b+8>>3];k=+((c[45957]|0)>>>0)-k;h[j>>3]=m-i;h[j+8>>3]=k;eC(a,75838,j);h[f>>3]=i*2.0;h[f+8>>3]=g*2.0;eC(a,75862,f);Ve(a,d);_B(a,75684)|0;Te(a);_B(a,75890)|0;l=e;return}function Ne(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;m=l;l=l+48|0;k=m+24|0;j=m+8|0;g=m;_B(a,75407)|0;n=c[45957]|0;c[g>>2]=c[45956];c[g+4>>2]=n;eC(a,75660,g);Ve(a,e);_B(a,75684)|0;Te(a);_B(a,75687)|0;g=d+-1|0;e=0;while(1){if((e|0)>=(d|0))break;i=+h[b+(e<<4)>>3];f=+((c[45957]|0)>>>0)-+h[b+(e<<4)+8>>3];if(!e){_B(a,75714)|0;h[j>>3]=i;h[j+8>>3]=f;eC(a,75780,j);_B(a,75791)|0}else{h[k>>3]=i;h[k+8>>3]=f;eC(a,75780,k)}if((e|0)==(g|0))_B(a,75794)|0;e=e+1|0}_B(a,75523)|0;l=m;return}function Oe(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;f=l;l=l+16|0;e=f;_B(a,75407)|0;h=c[45957]|0;c[e>>2]=c[45956];c[e+4>>2]=h;eC(a,75660,e);Ve(a,g);_B(a,75684)|0;Te(a);_B(a,75687)|0;We(a,b,d);_B(a,75700)|0;l=f;return}function Pe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0.0;k=l;l=l+48|0;j=k+24|0;i=k+8|0;f=k;_B(a,75407)|0;g=c[45957]|0;c[f>>2]=c[45956];c[f+4>>2]=g;eC(a,75444,f);_B(a,75484)|0;f=d+-1|0;g=b+8|0;e=0;while(1){if((e|0)>=(d|0))break;if(!e){_B(a,75496)|0;m=+((c[45957]|0)>>>0)-+h[g>>3];h[i>>3]=+h[b>>3];h[i+8>>3]=m;eC(a,75500,i);_B(a,75511)|0}else{m=+((c[45957]|0)>>>0)-+h[b+(e<<4)+8>>3];h[j>>3]=+h[b+(e<<4)>>3];h[j+8>>3]=m;eC(a,75500,j)}if((e|0)==(f|0))_B(a,75515)|0;e=e+1|0}_B(a,75519)|0;Te(a);_B(a,75523)|0;l=k;return}function Qe(a,b){a=a|0;b=b|0;_B(a,75342)|0;_B(a,Re(b)|0)|0;_B(a,75354)|0;return}function Re(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+16|0;e=u;d=c[45954]|0;if(!d){c[45955]=64;d=uH(64)|0;c[45954]=d}s=e+15|0;r=e+14|0;g=0;q=0;o=0;e=0;f=0;a:while(1){n=(o|0)!=0;k=g;p=b;j=e;b:while(1){if(!p){t=32;break a}e=a[p>>0]|0;if(!(e<<24>>24)){t=32;break a}b=c[45955]|0;if((q|0)>(b+-8|0)){d=b<<1;c[45955]=d;d=wH(c[45954]|0,d)|0;c[45954]=d;d=d+q|0;e=a[p>>0]|0}switch(e<<24>>24){case 60:{e=4;b=99127;t=26;break b}case 62:{e=4;b=99110;t=27;break b}case 38:{t=10;break b}case 45:{e=5;b=99121;i=j;break b}default:{}}if(n&e<<24>>24==32){t=12;break}switch(e<<24>>24){case 34:{e=6;b=99090;t=26;break b}case 39:{e=5;b=99115;t=27;break b}default:{}}if(e<<24>>24<0){i=127;b=0}else{e=1;b=p;t=26;break}while(1){g=i&255;h=e&255;if(g>>>0>=h>>>0)break;e=i&h&255;i=g>>>1;b=b+1|0}if((b|0)<=1){g=z3(j|0,f|0,6)|0;g=r3(g|0,z|0,e&255|0,0)|0;f=z;m=k+-1|0;if((k|0)>1){b=m;e=g}else{t=21;break}}else{b=b+-1|0;e=e&255;f=0}k=b;p=p+1|0;j=e}if((t|0)==10){t=0;b=(Se(p)|0)==0;e=b?5:1;b=b?99104:p;i=j}else if((t|0)==12){t=0;b=(a[o>>0]|0)==32;e=b?6:1;b=b?99097:p;i=j}else if((t|0)==21){t=0;a[s>>0]=59;e=3;h=r;i=g;j=f;while(1){b=w3(i|0,j|0,10,0)|0;g=h+-1|0;a[h>>0]=b|48;b=i;i=v3(i|0,j|0,10,0)|0;f=j;j=z;o=e;e=e+1|0;if((o|0)>11){t=23;break a}if(!(f>>>0>0|(f|0)==0&b>>>0>9))break;else h=g}b=h+-2|0;a[g>>0]=35;a[b>>0]=38;k=m;f=j}else if((t|0)==26){t=0;i=j}else if((t|0)==27){t=0;i=j}h=d+e|0;g=e;while(1){if(!g)break;a[d>>0]=a[b>>0]|0;g=g+-1|0;b=b+1|0;d=d+1|0}g=k;b=p+1|0;q=e+q|0;o=p;d=h;e=i}if((t|0)==23){D1(75360,46,1,c[15686]|0)|0;Sa(1)}else if((t|0)==32){a[d>>0]=0;l=u;return c[45954]|0}return 0}function Se(b){b=b|0;var c=0,d=0;d=b+1|0;c=a[d>>0]|0;a:do if(c<<24>>24==35){d=b+2|0;c=a[d>>0]|0;switch(c<<24>>24){case 88:case 120:break;default:{b=d;while(1){d=b+1|0;if((c+-48&255)>=10)break a;b=d;c=a[d>>0]|0}}}d=b+3|0;while(1){c=a[d>>0]|0;if((c+-48&255)>=10)switch(c<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break a}d=d+1|0}}else while(1){b=d+1|0;if(((c&-33)+-65&255)>=26)break a;d=b;c=a[b>>0]|0}while(0);return c<<24>>24==59|0}function Te(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;k=l;l=l+48|0;d=k+8|0;j=k;i=c[a+16>>2]|0;_B(a,75535)|0;e=d;f=i+16|0;g=e+40|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));Ue(a,d);b=+h[i+152>>3];if(b!=1.0){h[j>>3]=b;eC(a,75553,j)}switch(c[i+144>>2]|0){case 1:{_B(a,75570)|0;break}case 2:{_B(a,75588)|0;break}default:{}}_B(a,75605)|0;l=k;return}function Ue(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{_B(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){_B(b,132627)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;eC(b,75610,f);break a}default:qa(135312,75624,94,75644)}while(0);l=g;return}function Ve(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g;if(!b)_B(a,75763)|0;else{d=c[a+16>>2]|0;_B(a,75733)|0;b=f;d=d+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Ue(a,f);_B(a,75760)|0}l=g;return}function We(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0;i=l;l=l+32|0;g=i;e=75714;f=0;while(1){if((f|0)>=(d|0))break;k=+h[b+(f<<4)>>3];j=+((c[45957]|0)>>>0)-+h[b+(f<<4)+8>>3];c[g>>2]=e;h[g+8>>3]=k;h[g+16>>3]=j;eC(a,75717,g);e=(f|0)==0?75730:191979;f=f+1|0}_B(a,95669)|0;l=i;return}function Xe(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+8|0;e=b;_B(a,80347)|0;_B(a,80362)|0;_B(a,80401)|0;_B(a,80450)|0;c[e>>2]=134232;c[e+4>>2]=80538;eC(a,80519,e);c[d>>2]=134116;c[d+4>>2]=80544;eC(a,80519,d);l=b;return}function Ye(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0;b=l;l=l+64|0;d=b+8|0;j=b;c[j>>2]=qy(c[(c[a+16>>2]|0)+8>>2]|0)|0;eC(a,79300,j);i=+h[a+368>>3]*.5*+h[a+488>>3];g=+h[a+376>>3]*.5*+h[a+496>>3];f=+J(+(i*2.0000000949949026e-03))*180.0*.6366197723675814;e=+J(+(g*2.0000000949949026e-03))*180.0*.6366197723675814;h[d>>3]=i;h[d+8>>3]=g;h[d+16>>3]=-500.0;h[d+24>>3]=i;h[d+32>>3]=g;h[d+40>>3]=0.0;h[d+48>>3]=(f>e?f:e)*1.2;eC(a,79322,d);_B(a,79469)|0;_B(a,80299)|0;l=b;return}function Ze(a){a=a|0;_B(a,79283)|0;return}function _e(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0;f=l;l=l+16|0;h=f;c[h>>2]=b;c[h+4>>2]=d;c[h+8>>2]=e;eC(a,79253,h);g[45958]=+(O(d,-10)|0);l=f;return}function $e(a){a=a|0;_B(a,79236)|0;return}function af(a){a=a|0;_B(a,79218)|0;return}function bf(a){a=a|0;_B(a,79202)|0;return}function cf(a){a=a|0;_B(a,79181)|0;g[45958]=+g[45958]+-2.0;return}function df(a){a=a|0;_B(a,79162)|0;return}function ef(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=qy(c[(c[a+16>>2]|0)+8>>2]|0)|0;eC(a,79140,d);l=b;return}function ff(a){a=a|0;_B(a,79124)|0;return}function gf(a){a=a|0;_B(a,79106)|0;g[45958]=+g[45958]+-5.0;return}function hf(a){a=a|0;_B(a,79090)|0;g[45958]=+g[45958]+5.0;return}function jf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0;r=l;l=l+144|0;o=r+104|0;q=r+56|0;m=r+32|0;j=r+24|0;n=r;p=e+4|0;i=c[p>>2]|0;f=+h[i+16>>3];i=c[i>>2]|0;c[n>>2]=c[e>>2];h[n+8>>3]=f;c[n+16>>2]=i;eC(b,78936,n);g[45959]=+g[45958]+-9.0;switch(a[e+48>>0]|0){case 108:{f=+h[d>>3];break}case 114:{i=d;f=+h[d>>3]-+h[e+32>>3];k=5;break}default:{i=d;f=+h[d>>3]-+h[e+32>>3]*.5;k=5}}if((k|0)==5)h[i>>3]=f;u=+h[b+488>>3];t=(+h[b+504>>3]+f)*u;s=(+h[b+512>>3]+ +h[d+8>>3])*+h[b+496>>3];h[j>>3]=+h[(c[p>>2]|0)+16>>3]*u;n=pf(b,78988,j)|0;f=+(c[b+360>>2]|0);h[m>>3]=0.0;h[m+8>>3]=0.0;h[m+16>>3]=f;i=pf(b,78205,m)|0;f=+g[45959];h[o>>3]=t;h[o+8>>3]=s;h[o+16>>3]=f;d=pf(b,78237,o)|0;j=o;k=(c[b+16>>2]|0)+16|0;m=j+40|0;do{c[j>>2]=c[k>>2];j=j+4|0;k=k+4|0}while((j|0)<(m|0));o=qf(b,o,0.0)|0;e=c[e>>2]|0;c[q>>2]=c[c[p>>2]>>2];h[q+8>>3]=.25;h[q+16>>3]=0.0;c[q+24>>2]=e;c[q+28>>2]=79075;c[q+32>>2]=n;c[q+36>>2]=i;c[q+40>>2]=d;c[q+44>>2]=o;q=pf(b,79e3,q)|0;_B(b,q)|0;C_(q);C_(i);C_(o);C_(d);C_(n);l=r;return}function kf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=l;l=l+240|0;x=z+192|0;y=z+152|0;t=z+128|0;r=z+104|0;o=z+80|0;n=z+48|0;e=z+24|0;m=z;_B(a,78813)|0;g[45959]=+g[45958]+-6.0;i=+h[b>>3];j=+h[a+488>>3];p=(+h[a+504>>3]+i)*j;A=+h[b+8>>3];k=+h[a+496>>3];q=(+h[a+512>>3]+A)*k;j=(+h[b+16>>3]-i)*j;k=(+h[b+24>>3]-A)*k;s=a+16|0;A=k+j;i=+h[(c[s>>2]|0)+152>>3]/A*2.5;h[m>>3]=j;h[m+8>>3]=A*.25;h[m+16>>3]=k;b=pf(a,78173,m)|0;m=a+360|0;A=+(c[m>>2]|0);h[e>>3]=90.0;h[e+8>>3]=0.0;h[e+16>>3]=A;e=pf(a,78205,e)|0;A=+g[45959];h[x>>3]=p;h[x+8>>3]=q;h[x+16>>3]=A;f=pf(a,78237,x)|0;u=x;v=(c[s>>2]|0)+16|0;w=u+40|0;do{c[u>>2]=c[v>>2];u=u+4|0;v=v+4|0}while((u|0)<(w|0));v=qf(a,x,0.0)|0;h[n>>3]=1.0;h[n+8>>3]=i;c[n+16>>2]=b;c[n+20>>2]=e;c[n+24>>2]=f;c[n+28>>2]=v;w=pf(a,78828,n)|0;_B(a,w)|0;C_(b);C_(e);C_(f);C_(v);C_(w);if(d|0){h[o>>3]=j;h[o+8>>3]=k;h[o+16>>3]=1.0;f=pf(a,78173,o)|0;A=+(c[m>>2]|0);h[r>>3]=0.0;h[r+8>>3]=0.0;h[r+16>>3]=A;e=pf(a,78205,r)|0;A=+g[45959];h[t>>3]=p;h[t+8>>3]=q;h[t+16>>3]=A;b=pf(a,78237,t)|0;u=x;v=(c[s>>2]|0)+56|0;w=u+40|0;do{c[u>>2]=c[v>>2];u=u+4|0;v=v+4|0}while((u|0)<(w|0));x=qf(a,x,0.0)|0;h[y>>3]=0.0;h[y+8>>3]=0.0;h[y+16>>3]=0.0;c[y+24>>2]=f;c[y+28>>2]=e;c[y+32>>2]=b;c[y+36>>2]=x;y=pf(a,78874,y)|0;_B(a,y)|0;C_(f);C_(e);C_(b);C_(x);C_(y)}l=z;return}function lf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0,N=0.0;K=l;l=l+336|0;B=K+296|0;J=K+288|0;I=K+272|0;H=K+264|0;G=K+240|0;D=K+232|0;A=K+208|0;z=K+184|0;w=K+160|0;v=K+152|0;u=K+136|0;t=K+128|0;s=K+96|0;r=K+88|0;q=K+56|0;f=K+48|0;m=K+24|0;k=K;_B(a,78678)|0;g[45959]=+g[45958]+-2.0;o=a+488|0;p=a+496|0;L=+h[p>>3];h[k>>3]=+h[o>>3];h[k+8>>3]=L;h[k+16>>3]=1.0;k=pf(a,78173,k)|0;y=a+360|0;L=+(c[y>>2]|0);h[m>>3]=0.0;h[m+8>>3]=0.0;h[m+16>>3]=L;m=pf(a,78205,m)|0;L=+g[45959]+-2.0;h[B>>3]=0.0;h[B+8>>3]=0.0;h[B+16>>3]=L;n=pf(a,78237,B)|0;C=a+16|0;i=B;j=(c[C>>2]|0)+16|0;x=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(x|0));j=qf(a,B,0.0)|0;c[f>>2]=78300;c[f+4>>2]=d+1;E=a+504|0;F=a+512|0;i=0;f=pf(a,78269,f)|0;while(1){if((i|0)>=(d|0))break;N=+h[F>>3]+ +h[b+(i<<4)+8>>3];L=+h[(c[C>>2]|0)+152>>3];h[q>>3]=+h[E>>3]+ +h[b+(i<<4)>>3];h[q+8>>3]=N;h[q+16>>3]=0.0;h[q+24>>3]=L;M=pf(a,78314,q)|0;c[r>>2]=f;c[r+4>>2]=M;x=pf(a,78343,r)|0;C_(M);C_(f);i=i+1|0;f=x}L=+h[F>>3]+ +h[b+8>>3];N=+h[(c[C>>2]|0)+152>>3];h[s>>3]=+h[E>>3]+ +h[b>>3];h[s+8>>3]=L;h[s+16>>3]=0.0;h[s+24>>3]=N;x=pf(a,78314,s)|0;c[t>>2]=f;c[t+4>>2]=x;M=pf(a,78343,t)|0;C_(x);C_(f);c[u>>2]=k;c[u+4>>2]=m;c[u+8>>2]=n;c[u+12>>2]=j;x=pf(a,78693,u)|0;c[v>>2]=M;c[v+4>>2]=x;M=pf(a,78398,v)|0;C_(x);_B(a,M)|0;C_(k);C_(m);C_(n);C_(j);C_(M);if(e|0){N=+h[p>>3];h[w>>3]=+h[o>>3];h[w+8>>3]=N;h[w+16>>3]=1.0;n=pf(a,78173,w)|0;N=+(c[y>>2]|0);h[z>>3]=0.0;h[z+8>>3]=0.0;h[z+16>>3]=N;m=pf(a,78205,z)|0;N=+g[45959]+-2.0;h[A>>3]=0.0;h[A+8>>3]=0.0;h[A+16>>3]=N;k=pf(a,78237,A)|0;i=B;j=(c[C>>2]|0)+56|0;x=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(x|0));j=qf(a,B,.25)|0;c[D>>2]=d;i=0;f=pf(a,78738,D)|0;while(1){if((i|0)>=(d|0))break;N=+h[F>>3]+ +h[b+(i<<4)+8>>3];h[G>>3]=+h[E>>3]+ +h[b+(i<<4)>>3];h[G+8>>3]=N;h[G+16>>3]=0.0;D=pf(a,78753,G)|0;c[H>>2]=f;c[H+4>>2]=D;M=pf(a,78775,H)|0;C_(D);C_(f);i=i+1|0;f=M}c[I>>2]=n;c[I+4>>2]=m;c[I+8>>2]=k;c[I+12>>2]=j;I=pf(a,78785,I)|0;c[J>>2]=f;c[J+4>>2]=I;M=pf(a,78398,J)|0;C_(I);_B(a,M)|0;C_(n);C_(m);C_(k);C_(j);C_(M)}l=K;return}function mf(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0;B=l;l=l+208|0;e=B+160|0;A=B+152|0;z=B+136|0;y=B+128|0;x=B+96|0;w=B+88|0;v=B+56|0;k=B+48|0;s=B+24|0;r=B;_B(a,78605)|0;g[45959]=+g[45958]+-4.0;C=+h[a+496>>3];h[r>>3]=+h[a+488>>3];h[r+8>>3]=C;h[r+16>>3]=1.0;r=pf(a,78173,r)|0;C=+(c[a+360>>2]|0);h[s>>3]=0.0;h[s+8>>3]=0.0;h[s+16>>3]=C;s=pf(a,78205,s)|0;C=+g[45959]+-2.0;h[e>>3]=0.0;h[e+8>>3]=0.0;h[e+16>>3]=C;t=pf(a,78237,e)|0;u=a+16|0;f=e;i=(c[u>>2]|0)+56|0;j=f+40|0;do{c[f>>2]=c[i>>2];f=f+4|0;i=i+4|0}while((f|0)<(j|0));n=qf(a,e,0.0)|0;c[k>>2]=78619;c[k+4>>2]=d+2;o=a+504|0;p=a+512|0;q=d+-1|0;m=0;e=pf(a,78269,k)|0;while(1){if((m|0)>=(d|0))break;f=b+(m<<4)|0;i=b+(m<<4)+8|0;D=+h[p>>3]+ +h[i>>3];C=+h[(c[u>>2]|0)+152>>3];h[v>>3]=+h[o>>3]+ +h[f>>3];h[v+8>>3]=D;h[v+16>>3]=0.0;h[v+24>>3]=C;k=pf(a,78314,v)|0;c[w>>2]=e;c[w+4>>2]=k;j=pf(a,78343,w)|0;C_(k);C_(e);if((m|0)==0|(m|0)==(q|0)){C=+h[p>>3]+ +h[i>>3];D=+h[(c[u>>2]|0)+152>>3];h[x>>3]=+h[o>>3]+ +h[f>>3];h[x+8>>3]=C;h[x+16>>3]=0.0;h[x+24>>3]=D;k=pf(a,78314,x)|0;c[y>>2]=j;c[y+4>>2]=k;e=pf(a,78343,y)|0;C_(k);C_(j)}else e=j;m=m+1|0}c[z>>2]=r;c[z+4>>2]=s;c[z+8>>2]=t;c[z+12>>2]=n;b=pf(a,78628,z)|0;c[A>>2]=e;c[A+4>>2]=b;d=pf(a,78398,A)|0;C_(b);_B(a,d)|0;C_(r);C_(s);C_(t);C_(n);C_(d);l=B;return}function nf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0.0;v=l;l=l+160|0;e=v+120|0;u=v+112|0;t=v+96|0;s=v+88|0;r=v+56|0;m=v+48|0;n=v+24|0;q=v;_B(a,78157)|0;g[45959]=+g[45958]+-6.0;w=+h[a+496>>3];h[q>>3]=+h[a+488>>3];h[q+8>>3]=w;h[q+16>>3]=1.0;q=pf(a,78173,q)|0;w=+(c[a+360>>2]|0);h[n>>3]=0.0;h[n+8>>3]=0.0;h[n+16>>3]=w;n=pf(a,78205,n)|0;w=+g[45959];h[e>>3]=0.0;h[e+8>>3]=0.0;h[e+16>>3]=w;o=pf(a,78237,e)|0;p=a+16|0;f=e;i=(c[p>>2]|0)+16|0;j=f+40|0;do{c[f>>2]=c[i>>2];f=f+4|0;i=i+4|0}while((f|0)<(j|0));i=qf(a,e,0.0)|0;c[m>>2]=78300;c[m+4>>2]=d;j=a+504|0;k=a+512|0;f=0;e=pf(a,78269,m)|0;while(1){if((f|0)>=(d|0))break;y=+h[k>>3]+ +h[b+(f<<4)+8>>3];w=+h[(c[p>>2]|0)+152>>3];h[r>>3]=+h[j>>3]+ +h[b+(f<<4)>>3];h[r+8>>3]=y;h[r+16>>3]=0.0;h[r+24>>3]=w;x=pf(a,78314,r)|0;c[s>>2]=e;c[s+4>>2]=x;m=pf(a,78343,s)|0;C_(x);C_(e);f=f+1|0;e=m}c[t>>2]=q;c[t+4>>2]=n;c[t+8>>2]=o;c[t+12>>2]=i;t=pf(a,78352,t)|0;c[u>>2]=e;c[u+4>>2]=t;x=pf(a,78398,u)|0;C_(t);_B(a,x)|0;C_(q);C_(n);C_(o);C_(i);C_(x);l=v;return}function of(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;eC(a,78138,e);l=d;return}function pf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+1056|0;h=i;e=i+24|0;f=i+8|0;c[f>>2]=d;g=p0(e,1024,b,f)|0;do if((g|0)>=0)if((g|0)>1023){a=B_(g+1|0)|0;c[f>>2]=d;Y0(a,b,f)|0;break}else{a=m1(e)|0;break}else{a=c[(c[a+12>>2]|0)+16>>2]|0;c[h>>2]=b$(c[(N_()|0)>>2]|0)|0;ub[a&63](78583,h);a=m1(191979)|0}while(0);l=i;return a|0}function qf(a,b,e){a=a|0;b=b|0;e=+e;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0;q=l;l=l+112|0;o=q+104|0;j=q+96|0;i=q+64|0;n=q+48|0;p=q+32|0;m=q+16|0;k=q;g=c[b+32>>2]|0;a:do switch(g|0){case 5:{f=c[b>>2]|0;if(!(a$(f,133220)|0)){c[k>>2]=78420;h[k+8>>3]=e;f=pf(a,78403,k)|0;break a}if(!(a$(f,130350)|0)){c[m>>2]=78424;h[m+8>>3]=e;f=pf(a,78403,m)|0;break a}if(!(a$(f,128349)|0)){c[p>>2]=78430;h[p+8>>3]=e;f=pf(a,78403,p)|0;break a}else{c[n>>2]=f;h[n+8>>3]=e;f=pf(a,78403,n)|0;break a}}case 1:{s=+(d[b+1>>0]|0)*.00390625;r=+(d[b+2>>0]|0)*.00390625;h[i>>3]=+(d[b>>0]|0)*.00390625;h[i+8>>3]=s;h[i+16>>3]=r;h[i+24>>3]=e;f=pf(a,78435,i)|0;break}default:{p=c[15686]|0;n=c[b>>2]|0;c[j>>2]=g;c[j+4>>2]=n;f1(p,78474,j)|0;qa(135312,78524,436,78544)}}while(0);c[o>>2]=f;p=pf(a,78561,o)|0;C_(f);l=q;return p|0}function rf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;h=c[c[a+12>>2]>>2]|0;j=c[h>>2]|0;i=c[h+4>>2]|0;h=c[h+8>>2]|0;c[g>>2]=80990;c[g+4>>2]=j;c[g+8>>2]=i;c[g+12>>2]=h;eC(a,83609,g);f=qy(c[f+8>>2]|0)|0;c[e>>2]=80990;c[e+4>>2]=f;eC(a,83641,e);c[d>>2]=80990;eC(a,83655,d);l=b;return}function sf(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=80990;eC(a,83557,d);l=b;return}function tf(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=l;l=l+304|0;V=W+296|0;U=W+288|0;T=W+272|0;R=W+264|0;Q=W+256|0;P=W+248|0;O=W+240|0;N=W+232|0;M=W+224|0;L=W+216|0;K=W+208|0;J=W+200|0;I=W+192|0;H=W+184|0;G=W+176|0;F=W+168|0;E=W+160|0;C=W+152|0;A=W+144|0;z=W+136|0;y=W+128|0;x=W+120|0;w=W+112|0;v=W+104|0;u=W+96|0;t=W+88|0;s=W+80|0;r=W+72|0;q=W+64|0;p=W+56|0;o=W+48|0;S=W+40|0;B=W+24|0;n=W+16|0;m=W;g=c[a+456>>2]|0;i=c[a+460>>2]|0;j=c[a+464>>2]|0;k=c[a+468>>2]|0;f=a+360|0;a:do if(c[4025]|0){switch(c[f>>2]|0){case 90:case 0:break a;default:{}}Ff();c[4025]=0}while(0);e=(+(k|0)-+(i|0))*.013888888888888888;b=(+(j|0)-+(g|0))*.013888888888888888;k=(c[f>>2]|0)==90;d=k?e:b;e=k?b:e;h[m>>3]=d;h[m+8>>3]=e;eC(a,81177,m);c[n>>2]=80990;eC(a,81192,n);if(d>0.0){b=+i$(d);h[18829]=b;b=b+3.0-+(~~b|0)}else b=3.0;b=+D(10.0,+b);h[18829]=b;h[B>>3]=b;h[B+8>>3]=b;eC(a,81361,B);c[S>>2]=80990;eC(a,81396,S);c[o>>2]=80990;eC(a,81454,o);c[p>>2]=80990;eC(a,81514,p);c[q>>2]=80990;eC(a,81563,q);c[r>>2]=80990;eC(a,81602,r);c[s>>2]=80990;eC(a,81653,s);c[t>>2]=80990;eC(a,81715,t);c[u>>2]=80990;eC(a,81825,u);c[v>>2]=80990;eC(a,81916,v);c[w>>2]=80990;eC(a,81970,w);c[x>>2]=80990;eC(a,82039,x);eC(a,82075,y);c[z>>2]=80990;eC(a,82200,z);c[A>>2]=80990;eC(a,82229,A);eC(a,82269,C);c[E>>2]=80990;eC(a,82362,E);c[F>>2]=80990;eC(a,82421,F);c[G>>2]=80990;eC(a,82502,G);eC(a,82572,H);c[I>>2]=80990;eC(a,82661,I);c[J>>2]=80990;eC(a,82766,J);c[K>>2]=80990;eC(a,82842,K);c[L>>2]=80990;eC(a,82881,L);c[M>>2]=80990;eC(a,82980,M);c[N>>2]=80990;eC(a,83026,N);eC(a,83115,O);c[P>>2]=80990;eC(a,83156,P);c[Q>>2]=80990;eC(a,83239,Q);c[R>>2]=80990;eC(a,83340,R);h[T>>3]=e;h[T+8>>3]=d;eC(a,83404,T);eC(a,83432,U);eC(a,83440,V);l=W;return}function uf(a){a=a|0;var b=0;b=l;l=l+16|0;eC(a,81170,b);l=b;return}function vf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0.0,o=0,p=0,q=0,r=0;r=l;l=l+48|0;q=r+24|0;p=r+8|0;o=r;switch(a[e+48>>0]|0){case 108:{k=d;i=+h[e+32>>3];j=+h[d>>3];break}case 114:{i=+h[e+32>>3];g=i;f=5;break}default:{i=+h[e+32>>3];g=i*.5;f=5}}if((f|0)==5){j=+h[d>>3]-g;h[d>>3]=j;k=d}m=e+4|0;f=c[m>>2]|0;g=+h[f+16>>3];d=d+8|0;n=+h[d>>3]+g*.004629629629629629;h[d>>3]=n;i=j+i*.006944444444444444;h[k>>3]=i;f=c[f>>2]|0;do if(f){d=c[45960]|0;if(d|0?(a$(d,f)|0)==0:0)break;c[o>>2]=Df(f)|0;eC(b,81069,o);o=c[m>>2]|0;c[45960]=c[o>>2];g=+h[o+16>>3]}while(0);f=~~g;f=(f|0)>1?f:1;if((f|0)!=(c[45961]|0)){j=+h[18829];c[p>>2]=f;h[p+8>>3]=j;eC(b,81077,p);c[45961]=f}c[q>>2]=Ef(c[e>>2]|0)|0;h[q+8>>3]=i;h[q+16>>3]=n;eC(b,81098,q);l=r;return}function wf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=l;l=l+48|0;f=e;i=+h[b>>3];k=(+h[b+16>>3]-i)*.027777777777777776;g=+h[b+8>>3];j=(+h[b+24>>3]-g)*.027777777777777776;c[f>>2]=1;c[f+4>>2]=d|0?81011:191979;h[f+8>>3]=k;h[f+16>>3]=j;h[f+24>>3]=i*.013888888888888888;h[f+32>>3]=g*.013888888888888888;eC(a,81017,f);l=e;return}function xf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=l;l=l+16|0;Bf(c[a+16>>2]|0,e+8|0,e);Cf(a,b,d,1);l=e;return}function yf(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0;t=l;l=l+128|0;s=t+112|0;q=t+104|0;p=t+96|0;e=t+88|0;n=t+16|0;o=t;k=c[a+16>>2]|0;j=B_((d*140|0)+140|0)|0;Bf(k,t+116|0,t+80|0);v=+h[b>>3];k=n+48|0;h[k>>3]=v;u=+h[b+8>>3];h[n+56>>3]=u;c[e>>2]=~~(v+(v>=0.0?.5:-.5));c[e+4>>2]=~~(u+(u>=0.0?.5:-.5));i=o+8|0;e=j+(X0(j,80995,e)|0)|0;r=1;g=0;while(1){m=g+3|0;if((m|0)>=(d|0))break;c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];f=1;while(1){if((f|0)==4){f=1;break}w=f+g|0;h[n+(f<<4)>>3]=+h[b+(w<<4)>>3];h[n+(f<<4)+8>>3]=+h[b+(w<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;WL(o,n,3,+(f|0)*.16666666666666666,0,0);u=+h[o>>3];v=+h[i>>3];c[p>>2]=~~(u+(u>=0.0?.5:-.5));c[p+4>>2]=~~(v+(v>=0.0?.5:-.5));f=f+1|0;e=e+(X0(e,80995,p)|0)|0}r=r+6|0;g=m}c[q>>2]=j;eC(a,81002,q);C_(j);f=r+-1|0;e=0;while(1){if((e|0)>=(r|0))break;c[s>>2]=((e|0)%(f|0)|0|0)!=0&1;eC(a,81007,s);e=e+1|0}_B(a,150517)|0;l=t;return}function zf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=l;l=l+16|0;Bf(c[a+16>>2]|0,e+8|0,e);Cf(a,b,d,0);l=e;return}function Af(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=80990;c[e+4>>2]=b;eC(a,80983,e);l=d;return}function Bf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function Cf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));eC(a,80995,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));eC(a,80995,i)}_B(a,150517)|0;l=j;return}function Df(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;a:while(1){d=15828;while(1){e=c[d+4>>2]|0;if(!e)break;if(!(a$(e,b)|0)){g=6;break a}d=d+8|0}c[f>>2]=81151;c[f+4>>2]=b;Ow(1,81125,f)|0;d=n1(b,45)|0;if(!d){d=81168;break}a[d>>0]=0}l=h;return d|0}function Ef(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[45962]|0;if(!d){c[45963]=64;d=B_(64)|0;c[45962]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[45963]|0;if((e|0)>(b+-8|0)){d=b<<1;c[45963]=d;d=E_(c[45962]|0,d)|0;c[45962]=d;d=d+e|0}if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;X0(d+1|0,81120,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=d+1|0}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[45962]|0}function Ff(){var a=0,b=0;a=l;l=l+16|0;b=a;c[b>>2]=81151;c[b+4>>2]=83548;Ow(0,83530,b)|0;l=a;return}function Gf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0;e=l;l=l+32|0;f=e+8|0;j=e;b=b+8|0;k=c[b>>2]|0;c[j>>2]=k;c[j+4>>2]=k;eC(a,84128,j);i=(+h[d>>3]+ +h[d+16>>3])*.5;g=(+h[d+8>>3]+ +h[d+24>>3])*.5;c[f>>2]=c[b>>2];h[f+8>>3]=i;h[f+16>>3]=g;eC(a,84170,f);l=e;return}function Hf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=l;l=l+48|0;f=e;i=+h[d>>3];k=+h[d+16>>3]-i;g=+h[d+24>>3];j=g-+h[d+8>>3];g=+(~~(+h[a+232>>3]-+h[a+216>>3])>>>0)-g;c[f>>2]=c[b+8>>2];h[f+8>>3]=k;h[f+16>>3]=j;h[f+24>>3]=i;h[f+32>>3]=g;eC(a,84215,f);_B(a,84307)|0;l=e;return}function If(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function Jf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0;t=l;l=l+160|0;s=t+152|0;r=t+136|0;q=t+120|0;k=t+112|0;n=t+104|0;m=t+88|0;j=t+72|0;i=t+64|0;o=t;if(!a)qa(108200,84312,212,84331);if(!b)qa(108230,84312,213,84331);p=b+8|0;if(!(c[p>>2]|0))qa(108233,84312,214,84331);if(c[b+52>>2]|0){c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];b=o+32|0;d=d+16|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];f=+h[o>>3];h[o+16>>3]=f;h[o+24>>3]=+h[o+40>>3];h[o+48>>3]=+h[b>>3];g=+h[o+8>>3];h[o+56>>3]=g;if(e<<24>>24){eC(a,84352,i);b=0;while(1){if((b|0)==4)break;u=+h[o+(b<<4)+8>>3];h[j>>3]=+h[o+(b<<4)>>3];h[j+8>>3]=u;eC(a,84355,j);b=b+1|0}h[m>>3]=f;h[m+8>>3]=g;eC(a,84355,m);m=c[p>>2]|0;c[n>>2]=4;c[n+4>>2]=m;eC(a,84362,n)}eC(a,84352,k);b=0;while(1){if((b|0)==4)break;u=+h[o+(b<<4)+8>>3];h[q>>3]=+h[o+(b<<4)>>3];h[q+8>>3]=u;eC(a,84355,q);b=b+1|0}h[r>>3]=f;h[r+8>>3]=g;eC(a,84355,r);r=c[p>>2]|0;c[s>>2]=4;c[s+4>>2]=r;eC(a,84377,s)}l=t;return}function Kf(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+112|0;n=o+24|0;m=o+16|0;k=o;i=o+28|0;if(!b)qa(108200,84312,153,84393);if(!d)qa(108230,84312,154,84393);if(!(c[d+8>>2]|0))qa(108233,84312,155,84393);j=d+52|0;if(c[j>>2]|0){f=d+60|0;g=c[f>>2]|0;if((g|0)==98)g=18;else{tb[g&127](d);c[j>>2]=0;c[f>>2]=0;c[d+56>>2]=0;g=10}}else g=10;do if((g|0)==10){if(!((yC(d)|0)<<24>>24))break;f=i3(c[d+20>>2]|0)|0;if((c[d+24>>2]&-2|0)==6){I1(f,i)|0;i=c[i+36>>2]|0;c[d+56>>2]=i;f=T_(0,i,1,1,f,0)|0;c[j>>2]=f;a[d+16>>0]=1}else f=c[j>>2]|0;if(f|0)c[d+60>>2]=98;zC(d);if(c[j>>2]|0)g=18}while(0);if((g|0)==18){p=+h[e+8>>3]-+(c[d+36>>2]|0);h[k>>3]=+h[e>>3]-+(c[d+32>>2]|0);h[k+8>>3]=p;eC(b,84411,k);if(!(a[d+16>>0]|0)){c[m>>2]=c[d+12>>2];eC(b,84442,m)}else jJ(b,d);eC(b,84457,n)}l=o;return}function Lf(a){a=a|0;R_(c[a+52>>2]|0,c[a+56>>2]|0)|0;return}function Mf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+80|0;f=g+48|0;if(!a)qa(108200,84312,121,84467);e=c[a+16>>2]|0;if(!e)qa(96876,84312,123,84467);if(!b)qa(108230,84312,124,84467);d=b+8|0;if(!(c[d>>2]|0))qa(108233,84312,125,84467);if(!(c[e+8>>2]|0))qa(135797,84312,128,84467);else{eC(a,84487,g);eC(a,84496,g+8|0);eC(a,84523,g+16|0);eC(a,84548,g+24|0);eC(a,84577,g+32|0);eC(a,84605,g+40|0);c[f>>2]=c[d>>2];eC(a,84612,f);eC(a,84651,g+56|0);eC(a,107982,g+64|0);l=g;return}}function Nf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0.0;i=l;l=l+128|0;g=i+80|0;f=i;if(!a)qa(108200,84312,97,84656);if(!b)qa(108230,84312,98,84656);e=c[b+8>>2]|0;if(!e)qa(108233,84312,99,84656);else{m=+h[d>>3];j=~~(m+(m>=0.0?.5:-.5));m=+h[d+8>>3];b=~~(m+(m>=0.0?.5:-.5));m=+h[d+16>>3];k=~~(m+(m>=0.0?.5:-.5));m=+h[d+24>>3];d=~~(m+(m>=0.0?.5:-.5));c[f>>2]=2;c[f+4>>2]=5;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=-1;c[f+24>>2]=1;c[f+28>>2]=-1;c[f+32>>2]=0;h[f+40>>3]=0.0;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=5;c[f+72>>2]=0;c[f+76>>2]=e;eC(a,84675,f);c[g>>2]=j;c[g+4>>2]=b;c[g+8>>2]=j;c[g+12>>2]=d;c[g+16>>2]=k;c[g+20>>2]=d;c[g+24>>2]=k;c[g+28>>2]=b;c[g+32>>2]=j;c[g+36>>2]=b;eC(a,84733,g);l=i;return}}function Of(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0;o=l;l=l+96|0;n=o+56|0;m=o+32|0;k=o;i=+h[d>>3];j=+h[d+16>>3]-i;f=+h[d+24>>3];g=f-+h[d+8>>3];if(!a)qa(108200,84312,53,84765);if(!b)qa(108230,84312,54,84765);e=b+8|0;if(!(c[e>>2]|0))qa(108233,84312,55,84765);_B(a,84784)|0;_B(a,c[e>>2]|0)|0;e=a+360|0;f=-f;if(!(c[e>>2]|0)){h[n>>3]=j;h[n+8>>3]=g;h[n+16>>3]=i;h[n+24>>3]=f;eC(a,84913,n)}else{h[k>>3]=g;h[k+8>>3]=j;h[k+16>>3]=i;h[k+24>>3]=f;eC(a,84804,k);c[m>>2]=c[e>>2];h[m+8>>3]=i;h[m+16>>3]=f;eC(a,84883,m)}_B(a,84992)|0;l=o;return}function Pf(a){a=a|0;var b=0,c=0;b=Ry(a)|0;while(1){if(!b)break;Qf(b);b=Sy(a,b)|0}c=Ry(a)|0;while(1){if(!c)break;b=Dx(a,c)|0;while(1){if(!b)break;Rf(b);b=Fx(a,b)|0}c=Sy(a,c)|0}return}function Qf(a){a=a|0;var b=0,d=0;zz(a,134365,304,1)|0;cM(a);aN(a,c[(c[(dz(a)|0)+16>>2]|0)+116>>2]&1);a=a+16|0;c[(c[a>>2]|0)+176>>2]=0;b=tH(20)|0;d=c[a>>2]|0;c[d+172>>2]=b;c[d+184>>2]=0;d=tH(20)|0;b=c[a>>2]|0;c[b+180>>2]=d;c[b+200>>2]=0;b=tH(12)|0;d=c[a>>2]|0;c[d+196>>2]=b;c[d+192>>2]=0;d=tH(12)|0;b=c[a>>2]|0;c[b+188>>2]=d;c[b+208>>2]=0;b=tH(12)|0;a=c[a>>2]|0;c[a+204>>2]=b;c[a+216>>2]=1;return}function Rf(d){d=d|0;var e=0,f=0,g=0,h=0,i=0;zz(d,134378,176,1)|0;dM(d)|0;h=JL(d,c[46404]|0,1,0)|0;g=d+16|0;c[(c[g>>2]|0)+156>>2]=h;h=ML(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,c[46398]|0,191979)|0;i=ML(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,c[46398]|0,191979)|0;e=c[g>>2]|0;f=e+154|0;b[f>>1]=1;b[e+168>>1]=1;if((h|0)==(i|0)&(a[h>>0]|0)!=0){b[f>>1]=1e3;i=e+156|0;c[i>>2]=(c[i>>2]|0)*100}if(Nk(d)|0){i=c[g>>2]|0;b[i+154>>1]=0;c[i+156>>2]=0}i=(JL(d,c[46417]|0,0,0)|0)&255;a[(c[g>>2]|0)+152>>0]=i;i=(JL(d,c[46405]|0,1,0)|0)&65535;b[(c[g>>2]|0)+170>>1]=i;return}function Sf(a){a=a|0;var b=0,d=0;Tf(c[(c[a+16>>2]|0)+192>>2]|0);d=Ry(a)|0;while(1){if(!d)break;b=Dx(a,d)|0;while(1){if(!b)break;IM(b);b=Fx(a,b)|0}Uf(d);d=Sy(a,d)|0}Vf(a);return}function Tf(b){b=b|0;var d=0,e=0,f=0,g=0;while(1){if(!b)break;f=b+16|0;g=c[(c[f>>2]|0)+164>>2]|0;Wf(b);d=c[f>>2]|0;if((a[d+156>>0]|0)!=1){b=g;continue}e=c[d+180>>2]|0;if(e){C_(e);d=c[f>>2]|0}e=c[d+172>>2]|0;if(e){C_(e);d=c[f>>2]|0}C_(d);C_(b);b=g}return}function Uf(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;b=c[e>>2]|0;d=c[b+172>>2]|0;if(d){C_(d);b=c[e>>2]|0}d=c[b+180>>2]|0;if(d){C_(d);b=c[e>>2]|0}d=c[b+188>>2]|0;if(d){C_(d);b=c[e>>2]|0}d=c[b+196>>2]|0;if(d){C_(d);b=c[e>>2]|0}d=c[b+204>>2]|0;if(d){C_(d);b=c[e>>2]|0}mH(c[b+104>>2]|0);mH(c[(c[e>>2]|0)+108>>2]|0);b=c[(c[e>>2]|0)+8>>2]|0;if(b|0)tb[c[(c[b+4>>2]|0)+4>>2]&127](a);Bz(a,134365)|0;return}function Vf(a){a=a|0;var d=0,e=0,f=0;d=vA(a)|0;while(1){if(!d)break;Vf(d);d=wA(d)|0}if(zz(a,134401,0,1)|0){f=a+16|0;d=c[f>>2]|0;e=c[d+184>>2]|0;if(e){C_(e);d=c[f>>2]|0}e=c[d+268>>2]|0;if(e){C_(e);d=c[f>>2]|0}e=c[d+216>>2]|0;if(e){C_(e);d=c[f>>2]|0}do if(c[d+196>>2]|0){e=b[d+236>>1]|0;while(1){if((e|0)>(b[d+238>>1]|0))break;C_(c[(c[d+196>>2]|0)+(e<<6)+12>>2]|0);e=e+1|0;d=c[f>>2]|0}e=c[d+196>>2]|0;if((b[d+236>>1]|0)==-1){C_(e+-64|0);break}else{C_(e);break}}while(0);if((ez(a)|0)!=(a|0)){mH(c[(c[f>>2]|0)+12>>2]|0);Bz(a,134401)|0}}return}function Wf(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;d=c[e>>2]|0;b=c[d+176>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;b=c[(c[d+172>>2]|0)+(a<<2)>>2]|0;jh(b);C_(c[b+16>>2]|0);C_(b);b=a;d=c[e>>2]|0}b=c[d+184>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;b=c[(c[(c[e>>2]|0)+180>>2]|0)+(a<<2)>>2]|0;jh(b);C_(c[b+16>>2]|0);C_(b);b=a}return}function Xf(a){a=a|0;if($x(a)|0)Yf(a);dJ(a);return}function Yf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+48|0;g=h+32|0;f=h;b=XD(a,-1,8)|0;d=YD(a,0,f)|0;WD(a,2,8,f)|0;d=(d|0)==0;e=(b|0)<0;if(e&d)Zf(a);else{if(d)c[f+16>>2]=3;else b=e?8:b;c[f+8>>2]=b;c[f+20>>2]=0;e=qD(a,g,0)|0;b=c[g>>2]|0;do if((b|0)==1){Zf(a);b=0}else{if(c[(c[(c[a+16>>2]|0)+8>>2]|0)+84>>2]|0){Zf(a);b=0;break}c[f+12>>2]=1;d=0;while(1){if((d|0)>=(b|0))break;b=c[e+(d<<2)>>2]|0;_f(b,a);Zf(b);d=d+1|0;b=c[g>>2]|0}$f(a);VD(c[g>>2]|0,e,a,f)|0;ag(a);bg(c[g>>2]|0,e,a);b=0}while(0);while(1){if((b|0)>=(c[g>>2]|0))break;f=e+(b<<2)|0;C_(c[(c[(c[f>>2]|0)+16>>2]|0)+8>>2]|0);Vf(c[f>>2]|0);cz(a,c[f>>2]|0)|0;b=b+1|0}C_(e)}l=h;return}function Zf(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+48|0;k=m+40|0;e=m;i=JL(a,mx(a,0,85007,0)|0,-1,1)|0;_M(a,10);d=Mk(a,e)|0;dg(a,a);Pf(a);f=(i|0)==1;g=e+32|0;h=(i|0)==2;i=(i|0)==3;j=e+28|0;e=e+24|0;while(1){yj(a,d);if(f){d=3;break}if(c[g>>2]|0){Ow(0,85013,k)|0;c[e>>2]=0;d=0}Ih(a,(d|0)!=0&1);if(h){d=7;break}Li(a,d);if(i){d=9;break}n=(c[j>>2]|0)+-1|0;c[j>>2]=n;if(!((n|0)!=0&(c[e>>2]|0)!=0)){d=11;break}}if((d|0)==3)eg(a,1);else if((d|0)==7)eg(a,2);else if((d|0)==9)eg(a,2);else if((d|0)==11){if(b[(c[a+16>>2]|0)+136>>1]&16)fg(a);sk(a);jg(a);if((PL(wx(a,85104)|0)|0)<<24>>24)ml(a)}l=m;return}function _f(b,d){b=b|0;d=d|0;var e=0,f=0;zz(b,134401,280,1)|0;e=tH(96)|0;b=c[b+16>>2]|0;c[b+8>>2]=e;d=c[d+16>>2]|0;f=c[d+8>>2]|0;h[e>>3]=+h[f>>3];h[e+24>>3]=+h[f+24>>3];c[b+144>>2]=c[d+144>>2];a[b+115>>0]=a[d+115>>0]|0;c[b+116>>2]=c[d+116>>2];c[b+248>>2]=c[d+248>>2];c[b+252>>2]=c[d+252>>2];c[b+244>>2]=c[d+244>>2];return}function $f(a){a=a|0;var b=0,d=0,e=0;b=tH(($x(a)|0)<<4)|0;d=Ry(a)|0;while(1){if(!d)break;e=c[d+16>>2]|0;c[e+132>>2]=b;h[b>>3]=+h[e+16>>3]*.013888888888888888;h[b+8>>3]=+h[e+24>>3]*.013888888888888888;b=b+16|0;d=Sy(a,d)|0}return}function ag(a){a=a|0;var b=0,d=0,e=0,f=0;e=c[(c[(Ry(a)|0)+16>>2]|0)+132>>2]|0;b=e;d=Ry(a)|0;while(1){if(!d)break;f=c[d+16>>2]|0;c[f+132>>2]=0;h[f+16>>3]=+h[b>>3]*72.0;h[f+24>>3]=+h[b+8>>3]*72.0;b=b+16|0;d=Sy(a,d)|0}C_(e);return}function bg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=0;f=0;while(1){if((e|0)>=(a|0))break;i=(c[(c[(c[b+(e<<2)>>2]|0)+16>>2]|0)+180>>2]|0)+f|0;e=e+1|0;f=i}i=d+16|0;c[(c[i>>2]|0)+180>>2]=f;g=tH((f<<2)+4|0)|0;c[(c[i>>2]|0)+184>>2]=g;g=0;e=1;while(1){if((g|0)>=(a|0))break;h=(c[b+(g<<2)>>2]|0)+16|0;f=1;while(1){d=c[h>>2]|0;if((f|0)>(c[d+180>>2]|0))break;d=pD(c[(c[d+184>>2]|0)+(f<<2)>>2]|0)|0;c[(c[(c[i>>2]|0)+184>>2]|0)+(e<<2)>>2]=d;cg(c[(c[(c[h>>2]|0)+184>>2]|0)+(f<<2)>>2]|0,d);f=f+1|0;e=e+1|0}g=g+1|0}return}function cg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;zz(d,134401,280,1)|0;g=d+16|0;d=(c[g>>2]|0)+16|0;f=b+16|0;b=(c[f>>2]|0)+16|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[d+16>>2]=c[b+16>>2];c[d+20>>2]=c[b+20>>2];c[d+24>>2]=c[b+24>>2];c[d+28>>2]=c[b+28>>2];b=c[f>>2]|0;d=c[g>>2]|0;a[d+275>>0]=a[b+275>>0]|0;d=d+48|0;b=b+48|0;e=d+64|0;do{c[d>>2]=c[b>>2];d=d+4|0;b=b+4|0}while((d|0)<(e|0));b=c[(c[f>>2]|0)+180>>2]|0;c[(c[g>>2]|0)+180>>2]=b;d=tH((b<<2)+4|0)|0;c[(c[g>>2]|0)+184>>2]=d;d=1;while(1){e=c[f>>2]|0;if((d|0)>(b|0))break;e=pD(c[(c[e+184>>2]|0)+(d<<2)>>2]|0)|0;c[(c[(c[g>>2]|0)+184>>2]|0)+(d<<2)>>2]=e;cg(c[(c[(c[f>>2]|0)+184>>2]|0)+(d<<2)>>2]|0,e);d=d+1|0}f=e+12|0;c[(c[g>>2]|0)+12>>2]=c[f>>2];c[f>>2]=0;return}function dg(a,b){a=a|0;b=b|0;if((ez(a)|0)!=(a|0))zz(a,134401,280,1)|0;if((a|0)==(b|0))c[(c[(ez(a)|0)+16>>2]|0)+188>>2]=a;a=vA(a)|0;while(1){if(!a)break;dg(a,b);a=wA(a)|0}return}function eg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+1040|0;k=m+8|0;j=m;e=m+16|0;f=mx(a,1,87076,191979)|0;g=mx(a,1,85147,191979)|0;h=(b|0)>0;d=(b|0)==1;b=Ry(a)|0;while(1){if(!b)break;if(h?(i=b+16|0,c[j>>2]=c[(c[i>>2]|0)+232>>2],X0(e,134313,j)|0,qx(b,f,e)|0,!d):0){c[k>>2]=c[(c[i>>2]|0)+236>>2];X0(e,134313,k)|0;qx(b,g,e)|0}b=Sy(a,b)|0}l=m;return}function fg(a){a=a|0;var b=0,c=0,d=0;c=uA(a,86580,0)|0;if(c|0){b=Ry(c)|0;while(1){if(!b)break;d=Sy(c,b)|0;rh(a,b);gg(a,b);Uf(b);bz(a,b)|0;b=d}yA(a,c)|0}return}function gg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=c[(c[b+16>>2]|0)+232>>2]|0;i=a+16|0;a=c[(c[i>>2]|0)+196>>2]|0;d=c[a+(j<<6)>>2]|0;h=a+(j<<6)+4|0;g=0;e=0;while(1){if((e|0)>=(d|0)){f=7;break}f=c[(c[h>>2]|0)+(e<<2)>>2]|0;e=e+1|0;if((f|0)==(b|0)){f=4;break}else g=f}if((f|0)==4){while(1){if((e|0)>=(d|0))break;f=c[a+(j<<6)+4>>2]|0;c[f+(e+-1<<2)>>2]=c[f+(e<<2)>>2];f=c[(c[i>>2]|0)+196>>2]|0;e=e+1|0;d=c[f+(j<<6)>>2]|0;a=f;f=4}c[a+(j<<6)>>2]=d+-1}else if((f|0)==7?(g|0)!=(b|0):0)qa(85113,85120,248,85130);return}function hg(a){a=a|0;return c[(c[(ez(a)|0)+16>>2]|0)+188>>2]|0}function ig(b,c){b=b|0;c=c|0;var d=0;d=a[b+28>>0]|0;if(a[c+28>>0]|0)if(d<<24>>24){d=~~(+h[b>>3]-+h[c>>3]);if(!d)d=~~(+h[b+8>>3]-+h[c+8>>3])}else d=-1;else d=d<<24>>24!=0&1;return d|0}function jg(a){a=a|0;kg(a,1);return}function kg(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0.0;Z=l;l=l+656|0;O=Z+592|0;N=Z+552|0;f=Z+544|0;T=Z+96|0;U=Z;Y=Z+632|0;V=d+16|0;X=b[(c[V>>2]|0)+136>>1]&14;P=X&65535;Q=T+16|0;c[Q>>2]=Z+368;R=U+16|0;c[R>>2]=Z+192;do if(X<<16>>16){S=X<<16>>16==4;do if(S){lg(d);if(!(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1))A=9;else{Ow(0,85153,f)|0;A=9}}else if(X<<16>>16==8){lg(d);if(!(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1)){bN(d,0);n=0;m=0;k=0;break}else{mg(d);bN(d,1);n=0;m=0;k=0;break}}else A=9;while(0);if((A|0)==9){kl(d);if(pJ()|0)break;W=tH(96)|0;K=c[(c[V>>2]|0)+248>>2]|0;c[Y+8>>2]=(K|0)/4|0;c[Y+12>>2]=K;k=tH(512)|0;F=Y+4|0;c[F>>2]=0;c[Y>>2]=0;j=c[V>>2]|0;C=b[j+236>>1]|0;D=0;L=0;M=k;E=k;m=k;n=k;o=k;H=0;I=0;a:while(1){if((C|0)>(b[j+238>>1]|0))break;p=c[j+196>>2]|0;i=c[p+(C<<6)>>2]|0;G=i+D|0;g=c[p+(C<<6)+4>>2]|0;f=c[g>>2]|0;if(!f)f=H;else{_=+(H|0);f=c[f+16>>2]|0;y=+h[f+16>>3]-+h[f+88>>3];f=~~(y>_?_:y)}if((i|0)!=0?(J=c[g+(i+-1<<2)>>2]|0,(J|0)!=0):0){y=+(I|0);g=c[J+16>>2]|0;_=+h[g+96>>3]+ +h[g+16>>3];g=~~(_=(i|0))break;k=c[(c[f+(C<<6)+4>>2]|0)+(x<<2)>>2]|0;w=k+16|0;f=c[w>>2]|0;i=c[f+112>>2]|0;if(i){i=i+16|0;j=c[(c[i>>2]|0)+96>>2]|0;if(!j){A=21;break a}s=j+56|0;f=f+16|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];a[(c[(c[i>>2]|0)+96>>2]|0)+81>>0]=1;f=c[w>>2]|0}if((a[f+156>>0]|0)!=0?(kb[c[17300>>2]&63](k)|0)<<24>>24==0:0){q=t;f=r;j=u;k=v;i=o}else{s=0;q=t;j=u;k=v;A=25}b:do if((A|0)==25){while(1){A=0;p=c[w>>2]|0;i=c[(c[p+180>>2]|0)+(s<<2)>>2]|0;if(!i)break;switch(a[(c[i+16>>2]|0)+112>>0]|0){case 6:case 4:{f=q;i=r;break}default:{ng(i,1,16,64);f=q+1|0;c[r+(q<<2)>>2]=i;if(!(f&127)){g=wH(g,(q<<2)+516|0)|0;i=g;j=g;k=g;n=g;o=g}else i=r}}s=s+1|0;q=f;r=i;A=25}f=c[p+188>>2]|0;c:do if(!f)i=o;else{s=0;i=o;while(1){f=c[f+(s<<2)>>2]|0;if(!f)break c;ng(f,2,0,128);o=q+1|0;c[r+(q<<2)>>2]=f;if(!(o&127)){g=wH(i,(q<<2)+516|0)|0;f=g;j=g;k=g;n=g;i=g}else f=r;p=c[w>>2]|0;s=s+1|0;q=o;r=f;f=c[p+188>>2]|0}}while(0);f=c[p+204>>2]|0;if(!f)f=r;else{if(!(a[p+156>>0]|0)){v=p+96|0;_=+h[v>>3];s=p+240|0;h[v>>3]=+h[s>>3];h[s>>3]=_;s=0;p=r}else{s=0;p=r}while(1){f=c[f+(s<<2)>>2]|0;if(!f){f=p;break b}ng(f,0,0,128);o=q+1|0;c[p+(q<<2)>>2]=f;if(!(o&127)){g=wH(n,(q<<2)+516|0)|0;f=g;j=g;k=g;n=g;i=g}else f=p;s=s+1|0;q=o;p=f;f=c[(c[w>>2]|0)+204>>2]|0}}}while(0);u=c[V>>2]|0;w=c[u+196>>2]|0;x=x+1|0;t=q;r=f;q=u;u=j;v=k;o=i;i=c[w+(C<<6)>>2]|0;f=w}C=C+1|0;D=G;L=t;M=r;E=u;j=q;m=v;k=g;H=B;I=z}if((A|0)==21)qa(85221,85234,313,85247);c[Y>>2]=H;c[F>>2]=I;Z0(E,L,4,58);c[W+84>>2]=tH((D<<5)+11520|0)|0;c[Y+16>>2]=tH(C<<5)|0;d:do if(X<<16>>16==2){f=(c[V>>2]|0)+192|0;while(1){g=c[f>>2]|0;if(!g)break d;i=g+16|0;f=c[i>>2]|0;if((a[f+156>>0]|0)==1?(c[f+104>>2]|0)!=0:0){pg(g);f=c[i>>2]|0}f=f+164|0}}while(0);z=U+48|0;A=U+-48|0;B=T+48|0;C=T+-48|0;y=+(K|0);x=0;e:while(1){if((x|0)>=(L|0))break;v=M+(x<<2)|0;r=c[v>>2]|0;s=qg(r)|0;t=r+16|0;g=c[t>>2]|0;if(!(a[g+44>>0]|0)){g=(a[g+84>>0]|0)==0?s:r;f=g;g=c[g+16>>2]|0}else f=r;i=f+16|0;if(c[g+164>>2]&32){g=c[Q>>2]|0;E3(g|0,c[i>>2]|0,176)|0;n=T;o=f;p=n+48|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));c[Q>>2]=g;o=c[f>>2]&3;n=c[T>>2]&3;c[((n|0)==3?T:B)+40>>2]=c[((o|0)==2?f:f+-48|0)+40>>2];c[((n|0)==2?T:C)+40>>2]=c[((o|0)==3?f:f+48|0)+40>>2];n=g+16|0;o=(c[i>>2]|0)+56|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=g+56|0;o=(c[i>>2]|0)+16|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));a[g+112>>0]=1;c[g+116>>2]=f;f=T}q=f+16|0;w=1;f=x;while(1){u=f+1|0;if((u|0)>=(L|0))break;j=M+(u<<2)|0;f=c[j>>2]|0;if((s|0)!=(qg(f)|0))break;if(!(a[(c[t>>2]|0)+113>>0]|0)){k=f+16|0;g=c[k>>2]|0;if(!(a[g+44>>0]|0)){g=(a[g+84>>0]|0)==0?s:f;f=g;g=c[g+16>>2]|0}i=f+16|0;if(c[g+164>>2]&32){g=c[R>>2]|0;E3(g|0,c[i>>2]|0,176)|0;n=U;o=f;p=n+48|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));c[R>>2]=g;o=c[f>>2]&3;n=c[U>>2]&3;c[((n|0)==3?U:z)+40>>2]=c[((o|0)==2?f:f+-48|0)+40>>2];c[((n|0)==2?U:A)+40>>2]=c[((o|0)==3?f:f+48|0)+40>>2];n=g+16|0;o=(c[i>>2]|0)+56|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=g+56|0;o=(c[i>>2]|0)+16|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));a[g+112>>0]=1;c[g+116>>2]=f}i=c[q>>2]|0;f=g+16|0;n=N;o=i+16|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=O;o=f;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));if(ig(N,O)|0)break;f=g+56|0;n=N;o=i+56|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=O;o=f;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));if(ig(N,O)|0)break;K=c[t>>2]|0;if((c[K+164>>2]&15|0)==2?(c[K+96>>2]|0)!=(c[(c[k>>2]|0)+96>>2]|0):0)break;if(c[(c[(c[j>>2]|0)+16>>2]|0)+164>>2]&64|0)break}w=w+1|0;f=u}if(S){if((w|0)==1)f=O;else f=tH(w<<2)|0;c[f>>2]=qg(c[v>>2]|0)|0;g=1;while(1){if((g|0)>=(w|0))break;c[f+(g<<2)>>2]=c[v+(g<<2)>>2];g=g+1|0}zJ(d,f,w,P,17296);if((w|0)>1)C_(f);x=u;continue}f=c[r>>2]&3;K=c[((f|0)==3?r:r+48|0)+40>>2]|0;f=c[((f|0)==2?r:r+-48|0)+40>>2]|0;g=c[K+16>>2]|0;i=c[g+232>>2]|0;if((K|0)!=(f|0))if((i|0)==(c[(c[f+16>>2]|0)+232>>2]|0)){rg(d,Y,W,M,x,w,P);x=u;continue}else{sg(d,Y,W,M,x,w,P);x=u;continue}f=c[V>>2]|0;do if((i|0)==(b[f+238>>1]|0))if((i|0)>0){f=~~(+h[(c[(c[c[(c[f+196>>2]|0)+(i+-1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[g+24>>3]);break}else{f=~~+h[g+80>>3];break}else if((i|0)==(b[f+236>>1]|0)){f=~~(+h[g+24>>3]-+h[(c[(c[c[(c[f+196>>2]|0)+(i+1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]);break}else{f=c[f+196>>2]|0;_=+h[g+24>>3];K=~~(+h[(c[(c[c[f+(i+-1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-_);f=~~(_-+h[(c[(c[c[f+(i+1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]);f=(K|0)<(f|0)?K:f;break}while(0);XK(W,M,x,w,y,+((f|0)/2|0|0),17296);f=0;while(1){if((f|0)>=(w|0)){x=u;continue e}g=c[(c[(c[M+(f+x<<2)>>2]|0)+16>>2]|0)+96>>2]|0;if(g|0)jM(d,g);f=f+1|0}}f=(c[V>>2]|0)+192|0;while(1){g=c[f>>2]|0;if(!g)break;i=g+16|0;f=c[i>>2]|0;if((a[f+156>>0]|0)==1?(c[f+104>>2]|0)!=0:0){pg(g);jM(d,c[(c[i>>2]|0)+104>>2]|0);f=c[i>>2]|0}f=f+164|0}if(!e){n=W;k=W}else{tg(d);n=W;k=W}}f:do if((c[46427]|0)!=0|(c[46428]|0)!=0?(c[46433]|0)!=0|(c[46432]|0)!=0:0){j=Ry(d)|0;while(1){if(!j)break f;g:do if(c[46427]|0){f=Gx(d,j)|0;while(1){if(!f)break g;g=f+-48|0;i=(c[f>>2]&3|0)==2?f:g;if(c[(c[i+16>>2]|0)+100>>2]|0){dL(i,1)|0;jM(d,c[(c[((c[f>>2]&3|0)==2?f:g)+16>>2]|0)+100>>2]|0)}f=Hx(d,f)|0}}while(0);h:do if(c[46428]|0){f=Dx(d,j)|0;while(1){if(!f)break h;g=f+16|0;if(c[(c[g>>2]|0)+104>>2]|0?dL(f,0)|0:0)jM(d,c[(c[g>>2]|0)+104>>2]|0);f=Fx(d,f)|0}}while(0);j=Sy(d,j)|0}}while(0);switch(X&15){case 4:case 8:break;default:{C_(m);C_(c[n+84>>2]|0);C_(k);C_(c[Y+16>>2]|0);qJ()}}c[46367]=1;c[46368]=1}while(0);l=Z;return}function lg(a){a=a|0;var b=0,d=0,e=0.0,f=0;b=Ry(a)|0;while(1){if(!b)break;d=c[b+16>>2]|0;if(c[d+204>>2]|0){f=d+96|0;e=+h[f>>3];d=d+240|0;h[f>>3]=+h[d>>3];h[d>>3]=e}b=Sy(a,b)|0}return}function mg(b){b=b|0;var d=0,e=0,f=0,g=0;d=(c[b+16>>2]|0)+192|0;a:while(1){f=c[d>>2]|0;if(!f){d=12;break}g=f+16|0;d=c[g>>2]|0;do if((a[d+156>>0]|0)==1){e=c[d+112>>2]|0;if(!e){e=c[d+104>>2]|0;if(!e)break;pg(f);d=e}else{e=c[(c[e+16>>2]|0)+96>>2]|0;if(!e){d=6;break a}f=e+56|0;d=d+16|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];a[e+81>>0]=1;d=e}jM(b,d);d=c[g>>2]|0}while(0);d=d+164|0}if((d|0)==6)qa(85421,85234,234,85440);else if((d|0)==12)return}function ng(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;do if(!d){g=c[b>>2]&3;d=c[((g|0)==3?b:b+48|0)+40>>2]|0;g=c[((g|0)==2?b:b+-48|0)+40>>2]|0;if((d|0)!=(g|0)){d=(c[(c[d+16>>2]|0)+232>>2]|0)==(c[(c[g+16>>2]|0)+232>>2]|0)?2:1;break}d=c[b+16>>2]|0;if(!(a[d+44>>0]|0))d=(a[d+84>>0]|0)==0?8:4;else d=4}while(0);a:do if(!e)switch(d|0){case 1:{e=c[b>>2]&3;e=(c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)<(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)?16:32;break a}case 2:{e=c[b>>2]&3;e=(c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)<(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)?16:32;break a}default:{e=16;break a}}while(0);c[(c[b+16>>2]|0)+164>>2]=d|f|e;return}function og(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=l;l=l+624|0;z=D+584|0;y=D+544|0;s=D+368|0;e=D+192|0;t=D+96|0;v=D;u=t+16|0;c[u>>2]=s;w=v+16|0;c[w>>2]=e;C=c[b>>2]|0;B=c[d>>2]|0;x=C+16|0;q=c[x>>2]|0;d=c[q+164>>2]|0;f=d&15;A=B+16|0;b=c[A>>2]|0;g=c[b+164>>2]&15;do if((g|0)==(f|0)){p=qg(C)|0;r=qg(B)|0;n=c[p>>2]|0;g=n&3;f=c[(c[((g|0)==3?p:p+48|0)+40>>2]|0)+16>>2]|0;g=c[(c[((g|0)==2?p:p+-48|0)+40>>2]|0)+16>>2]|0;i=(c[f+232>>2]|0)-(c[g+232>>2]|0)|0;o=c[r>>2]|0;m=o&3;k=c[(c[((m|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0;m=c[(c[((m|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0;j=(c[k+232>>2]|0)-(c[m+232>>2]|0)|0;i=(i|0)>-1?i:0-i|0;j=(j|0)>-1?j:0-j|0;if((i|0)!=(j|0)){b=i-j|0;break}g=~~(+h[f+16>>3]-+h[g+16>>3]);g=(g|0)>-1?g:0-g|0;f=~~(+h[k+16>>3]-+h[m+16>>3]);f=(f|0)>-1?f:0-f|0;if((g|0)!=(f|0)){b=g-f|0;break}g=n>>>4;f=o>>>4;if((g|0)!=(f|0)){b=g-f|0;break}if(!(a[q+44>>0]|0)){d=(a[q+84>>0]|0)==0?p:C;g=d;d=c[(c[d+16>>2]|0)+164>>2]|0}else g=C;f=g+16|0;if(d&32){E3(s|0,c[f>>2]|0,176)|0;i=t;j=g;k=i+48|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));c[u>>2]=s;j=c[g>>2]&3;i=c[t>>2]&3;c[((i|0)==3?t:t+48|0)+40>>2]=c[((j|0)==2?g:g+-48|0)+40>>2];c[((i|0)==2?t:t+-48|0)+40>>2]=c[((j|0)==3?g:g+48|0)+40>>2];i=s+16|0;j=(c[f>>2]|0)+56|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=s+56|0;j=(c[f>>2]|0)+16|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));a[s+112>>0]=1;c[s+116>>2]=g;g=t;b=c[A>>2]|0}if(!(a[b+44>>0]|0)){b=(a[b+84>>0]|0)==0?r:B;f=b;b=c[b+16>>2]|0}else f=B;d=f+16|0;if(!(c[b+164>>2]&32))e=b;else{E3(e|0,c[d>>2]|0,176)|0;i=v;j=f;k=i+48|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));c[w>>2]=e;j=c[f>>2]&3;i=c[v>>2]&3;c[((i|0)==3?v:v+48|0)+40>>2]=c[((j|0)==2?f:f+-48|0)+40>>2];c[((i|0)==2?v:v+-48|0)+40>>2]=c[((j|0)==3?f:f+48|0)+40>>2];i=e+16|0;j=(c[d>>2]|0)+56|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=e+56|0;j=(c[d>>2]|0)+16|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));a[e+112>>0]=1;c[e+116>>2]=f}d=c[g+16>>2]|0;b=e+16|0;i=y;j=d+16|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=z;j=b;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));b=ig(y,z)|0;if(!b){b=e+56|0;i=y;j=d+56|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=z;j=b;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));b=ig(y,z)|0;if(!b){d=c[(c[x>>2]|0)+164>>2]&192;b=c[(c[A>>2]|0)+164>>2]&192;if((d|0)==(b|0)){b=((c[C>>2]|0)>>>4)-((c[B>>2]|0)>>>4)|0;break}else{b=d-b|0;break}}}}else b=g-f|0;while(0);l=D;return b|0}function pg(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;f=b+16|0;d=c[f>>2]|0;if(c[d+176>>2]|0){d=c[d+180>>2]|0;while(1){d=(c[d>>2]|0)+16|0;e=c[d>>2]|0;if(!(a[e+112>>0]|0))break;else d=e+116|0}e=c[e+96>>2]|0;g=+h[e+24>>3];i=+h[e+32>>3];e=(c[(c[(dz(b)|0)+16>>2]|0)+116>>2]&1|0)!=0;b=c[f>>2]|0;f=c[(c[d>>2]|0)+96>>2]|0;h[f+56>>3]=(e?i:g)*.5+ +h[b+16>>3];h[f+64>>3]=+h[b+24>>3];a[f+81>>0]=1}return}function qg(a){a=a|0;var b=0,d=0;while(1){b=c[a+16>>2]|0;d=c[b+172>>2]|0;if(!d)break;else a=d}while(1){b=c[b+116>>2]|0;if(!b)break;a=b;b=c[b+16>>2]|0}return a|0}function rg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0;B=l;l=l+1712|0;x=B+1664|0;s=B+1488|0;t=B+1392|0;A=B+1696|0;y=B+696|0;z=B;p=t+16|0;c[p>>2]=s;q=c[f+(g<<2)>>2]|0;r=q+16|0;k=c[r>>2]|0;u=a[k+113>>0]|0;if(c[k+164>>2]&32){E3(s|0,k|0,176)|0;k=t;n=q;o=k+48|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(o|0));c[p>>2]=s;k=c[t>>2]&3;c[((k|0)==3?t:t+48|0)+40>>2]=c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2];c[((k|0)==2?t:t+-48|0)+40>>2]=c[((c[q>>2]&3|0)==3?q:q+48|0)+40>>2];k=s+16|0;n=(c[r>>2]|0)+56|0;o=k+40|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(o|0));k=s+56|0;n=(c[r>>2]|0)+16|0;o=k+40|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(o|0));a[s+112>>0]=1;c[s+116>>2]=q;q=t}k=1;while(1){if((k|0)>=(i|0)){w=6;break}if(!(a[(c[(c[f+(k+g<<2)>>2]|0)+16>>2]|0)+113>>0]|0))k=k+1|0;else{w=7;break}}a:do if((w|0)==6)if(!(u<<24>>24)){k=c[q+16>>2]|0;if(c[k+96>>2]|0){Rg(b,d,e,q,j);break}if((j|0)==2){A=c[q>>2]&3;Sg(c[((A|0)==3?q:q+48|0)+40>>2]|0,c[((A|0)==2?q:q+-48|0)+40>>2]|0,f,g,i,2);break}t=a[k+49>>0]|0;u=a[k+89>>0]|0;if(!(t<<24>>24==1&u<<24>>24!=4)?!(t<<24>>24!=4&u<<24>>24==1):0){p=c[q>>2]&3;o=c[((p|0)==3?q:q+48|0)+40>>2]|0;p=c[((p|0)==2?q:q+-48|0)+40>>2]|0;k=c[o+16>>2]|0;n=c[k+232>>2]|0;if((n|0)>0){u=c[(c[b+16>>2]|0)+196>>2]|0;t=n+~(a[(c[(c[b+60>>2]|0)+16>>2]|0)+113>>0]&1)|0;m=+h[(c[(c[c[u+(t<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[u+(t<<6)+16>>3]-+h[k+24>>3]-+h[u+(n<<6)+24>>3]}else m=+(c[(c[b+16>>2]|0)+252>>2]|0);C=+(i+1|0);v=+(c[d+12>>2]|0)/C;m=m/C;Ug(b,d,e,o,q,y,1);Ug(b,d,e,p,q,z,0);s=y+52|0;t=z+52|0;p=(j|0)==10;q=e+80|0;k=0;while(1){if((k|0)>=(i|0))break a;r=c[f+(k+g<<2)>>2]|0;o=c[s>>2]|0;n=o+-1|0;G=+h[y+56+(n<<5)>>3];F=+h[y+56+(n<<5)+16>>3];E=+h[y+56+(n<<5)+24>>3];h[18830]=G;h[18831]=E;k=k+1|0;C=+(k|0);D=v*C;h[18832]=F+D;C=E+m*C;h[18833]=C;h[18834]=G;h[18835]=C;n=(c[t>>2]|0)+-1|0;G=+h[z+56+(n<<5)+16>>3];h[18836]=G;h[18837]=C+m;E=+h[z+56+(n<<5)>>3];F=+h[z+56+(n<<5)+24>>3];h[18840]=G;h[18839]=F;h[18838]=E-D;h[18841]=C;n=0;while(1){if((n|0)>=(o|0)){n=0;break}o=y+56+(n<<5)|0;c[x>>2]=c[o>>2];c[x+4>>2]=c[o+4>>2];c[x+8>>2]=c[o+8>>2];c[x+12>>2]=c[o+12>>2];c[x+16>>2]=c[o+16>>2];c[x+20>>2]=c[o+20>>2];c[x+24>>2]=c[o+24>>2];c[x+28>>2]=c[o+28>>2];RK(e,x);n=n+1|0;o=c[s>>2]|0}while(1){if((n|0)==3)break;j=150640+(n<<5)|0;c[x>>2]=c[j>>2];c[x+4>>2]=c[j+4>>2];c[x+8>>2]=c[j+8>>2];c[x+12>>2]=c[j+12>>2];c[x+16>>2]=c[j+16>>2];c[x+20>>2]=c[j+20>>2];c[x+24>>2]=c[j+24>>2];c[x+28>>2]=c[j+28>>2];RK(e,x);n=n+1|0}o=c[t>>2]|0;while(1){n=o+-1|0;if((o|0)<=0)break;o=z+56+(n<<5)|0;c[x>>2]=c[o>>2];c[x+4>>2]=c[o+4>>2];c[x+8>>2]=c[o+8>>2];c[x+12>>2]=c[o+12>>2];c[x+16>>2]=c[o+16>>2];c[x+20>>2]=c[o+20>>2];c[x+24>>2]=c[o+24>>2];c[x+28>>2]=c[o+28>>2];RK(e,x);o=n}if(p)n=rJ(e,A)|0;else n=xJ(e,A)|0;o=c[A>>2]|0;if(!o)break a;PK(r,c[((c[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0,n,o,17296);c[q>>2]=0}}Tg(b,d,e,f,g,i,q,(j|0)==10&1)}else w=7;while(0);if((w|0)==7)Qg(b,f,g,i,q,j);l=B;return}function sg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;ba=l;l=l+2576|0;S=ba+2528|0;_=ba+2568|0;k=ba+2352|0;n=ba+2176|0;t=ba+1904|0;Y=ba+1808|0;$=ba+1712|0;T=ba+1016|0;U=ba+320|0;V=ba+256|0;X=ba+2564|0;Z=ba+2560|0;z=ba+288|0;A=ba+224|0;L=ba+192|0;M=ba+160|0;N=ba+128|0;P=ba+96|0;Q=ba+64|0;R=ba+32|0;W=ba;s=t+16|0;c[s>>2]=k;o=Y+16|0;c[o>>2]=n;aa=$+16|0;c[aa>>2]=ba+2e3;if(!(c[45964]|0)){c[45964]=uH(32e3)|0;c[45965]=uH(32e3)|0;c[45966]=2e3;c[45967]=2e3}u=c[f+(g<<2)>>2]|0;K=c[u>>2]&3;p=u+48|0;q=u+-48|0;K=(c[(c[(c[((K|0)==3?u:p)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((K|0)==2?u:q)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0;r=u+16|0;if((((K|0)>-1?K:0-K|0)|0)<=1){k=c[r>>2]|0;if(!(c[k+164>>2]&32)){K=u;n=0}else{n=c[s>>2]|0;E3(n|0,k|0,176)|0;w=t;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[s>>2]=n;w=c[t>>2]&3;c[((w|0)==3?t:t+48|0)+40>>2]=c[((c[u>>2]&3|0)==2?u:q)+40>>2];c[((w|0)==2?t:t+-48|0)+40>>2]=c[((c[u>>2]&3|0)==3?u:p)+40>>2];w=n+16|0;x=(c[r>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));k=c[s>>2]|0;w=k+56|0;x=(c[r>>2]|0)+16|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));a[k+112>>0]=1;n=0;J=12}}else{E3(k|0,c[r>>2]|0,176)|0;w=t;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));w=t+48|0;x=p;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[s>>2]=k;k=c[r>>2]|0;if(!(c[k+164>>2]&32)){E3(n|0,k|0,176)|0;w=Y;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[o>>2]=n;o=c[t>>2]|0;c[((o&3|0)==3?t:t+48|0)+40>>2]=c[((c[u>>2]&3|0)==3?u:p)+40>>2];w=Y+48|0;x=p;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0))}else{n=c[o>>2]|0;E3(n|0,k|0,176)|0;w=Y;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[o>>2]=n;w=c[Y>>2]&3;c[((w|0)==3?Y:Y+48|0)+40>>2]=c[((c[u>>2]&3|0)==2?u:q)+40>>2];c[((w|0)==2?Y:Y+-48|0)+40>>2]=c[((c[u>>2]&3|0)==3?u:p)+40>>2];w=n+16|0;x=(c[r>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));k=c[o>>2]|0;w=k+56|0;x=(c[r>>2]|0)+16|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));a[k+112>>0]=1;c[k+116>>2]=u;o=c[t>>2]|0;c[((o&3|0)==3?t:t+48|0)+40>>2]=c[((c[u>>2]&3|0)==2?u:q)+40>>2];w=(c[s>>2]|0)+16|0;x=(c[r>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0))}k=qg(u)|0;while(1){n=c[(c[k+16>>2]|0)+172>>2]|0;if(!n)break;else k=n}c[((o&3|0)==2?t:t+-48|0)+40>>2]=c[((c[k>>2]&3|0)==2?k:k+-48|0)+40>>2];k=c[s>>2]|0;a[k+84>>0]=0;a[k+112>>0]=1;n=k+56|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;n=1;J=12}if((J|0)==12){c[k+116>>2]=u;K=t}H=(j|0)==2;if(H?(v=wg(b,K,c[45964]|0,_)|0,c[Z>>2]=v,(v|0)!=0):0)J=63;else J=15;a:do if((J|0)==15){G=(j|0)==10;c[Z>>2]=0;o=c[K>>2]&3;k=c[((o|0)==3?K:K+48|0)+40>>2]|0;o=c[((o|0)==2?K:K+-48|0)+40>>2]|0;c[_>>2]=o;xg(z,b,d,k,0,K);c[T>>2]=c[z>>2];c[T+4>>2]=c[z+4>>2];c[T+8>>2]=c[z+8>>2];c[T+12>>2]=c[z+12>>2];c[T+16>>2]=c[z+16>>2];c[T+20>>2]=c[z+20>>2];c[T+24>>2]=c[z+24>>2];c[T+28>>2]=c[z+28>>2];c[V>>2]=c[z>>2];c[V+4>>2]=c[z+4>>2];c[V+8>>2]=c[z+8>>2];c[V+12>>2]=c[z+12>>2];c[V+16>>2]=c[z+16>>2];c[V+20>>2]=c[z+20>>2];SK(e,K,1,T,yg(k)|0);B=T+52|0;I=(c[B>>2]|0)+-1|0;D=V+24|0;h[D>>3]=+h[T+56+(I<<5)+24>>3];E=V+8|0;h[E>>3]=+h[T+56+(I<<5)+8>>3];I=c[k+16>>2]|0;F=b+16|0;m=+h[I+24>>3]-+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[I+232>>2]<<6)+16>>3];c[S>>2]=c[V>>2];c[S+4>>2]=c[V+4>>2];c[S+8>>2]=c[V+8>>2];c[S+12>>2]=c[V+12>>2];c[S+16>>2]=c[V+16>>2];c[S+20>>2]=c[V+20>>2];c[S+24>>2]=c[V+24>>2];c[S+28>>2]=c[V+28>>2];zg(A,S,1,m);c[V>>2]=c[A>>2];c[V+4>>2]=c[A+4>>2];c[V+8>>2]=c[A+8>>2];c[V+12>>2]=c[A+12>>2];c[V+16>>2]=c[A+16>>2];c[V+20>>2]=c[A+20>>2];c[V+24>>2]=c[A+24>>2];c[V+28>>2]=c[A+28>>2];A=V+16|0;if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){I=c[B>>2]|0;c[B>>2]=I+1;I=T+56+(I<<5)|0;c[I>>2]=c[V>>2];c[I+4>>2]=c[V+4>>2];c[I+8>>2]=c[V+8>>2];c[I+12>>2]=c[V+12>>2];c[I+16>>2]=c[V+16>>2];c[I+20>>2]=c[V+20>>2];c[I+24>>2]=c[V+24>>2];c[I+28>>2]=c[V+28>>2]}w=b+60|0;C=U+52|0;x=e+56|0;y=e+69|0;j=e+16|0;z=e+29|0;I=K;q=0;r=-1;b:while(1){s=k;t=0;k=0;u=I;while(1){p=o;v=o;if((a[(c[p+16>>2]|0)+156>>0]|0)!=1)break b;if((kb[c[17300>>2]&63](p)|0)<<24>>24)break b;o=t|1;ca=150640+(t<<5)|0;Ag(L,d,b,c[(c[s+16>>2]|0)+232>>2]|0);c[ca>>2]=c[L>>2];c[ca+4>>2]=c[L+4>>2];c[ca+8>>2]=c[L+8>>2];c[ca+12>>2]=c[L+12>>2];c[ca+16>>2]=c[L+16>>2];c[ca+20>>2]=c[L+20>>2];c[ca+24>>2]=c[L+24>>2];c[ca+28>>2]=c[L+28>>2];if(!k){q=Bg(p)|0;k=(q|0)<((a[(c[(c[w>>2]|0)+16>>2]|0)+113>>0]<<1&2)+3&255|0);q=k?q:q+-2|0;r=k?r:1;k=(k^1)&1}if(!((k|0)==0|(r|0)>0))break;ca=150640+(o<<5)|0;xg(M,b,d,p,u,c[c[(c[p+16>>2]|0)+180>>2]>>2]|0);c[ca>>2]=c[M>>2];c[ca+4>>2]=c[M+4>>2];c[ca+8>>2]=c[M+8>>2];c[ca+12>>2]=c[M+12>>2];c[ca+16>>2]=c[M+16>>2];c[ca+20>>2]=c[M+20>>2];c[ca+24>>2]=c[M+24>>2];c[ca+28>>2]=c[M+28>>2];ca=c[c[(c[v+16>>2]|0)+180>>2]>>2]|0;o=c[ca>>2]&3;s=c[((o|0)==3?ca:ca+48|0)+40>>2]|0;o=c[((o|0)==2?ca:ca+-48|0)+40>>2]|0;c[_>>2]=o;t=t+2|0;r=r+-1|0;u=ca}xg(N,b,d,p,u,c[c[(c[p+16>>2]|0)+180>>2]>>2]|0);c[U>>2]=c[N>>2];c[U+4>>2]=c[N+4>>2];c[U+8>>2]=c[N+8>>2];c[U+12>>2]=c[N+12>>2];c[U+16>>2]=c[N+16>>2];c[U+20>>2]=c[N+20>>2];c[U+24>>2]=c[N+24>>2];c[U+28>>2]=c[N+28>>2];VK(e,u,1,U,yg(c[((c[u>>2]&3|0)==2?u:u+-48|0)+40>>2]|0)|0);ca=U+56+((c[C>>2]|0)+-1<<5)|0;t=c[v+16>>2]|0;m=+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[t+232>>2]<<6)+24>>3]+ +h[t+24>>3];c[S>>2]=c[ca>>2];c[S+4>>2]=c[ca+4>>2];c[S+8>>2]=c[ca+8>>2];c[S+12>>2]=c[ca+12>>2];c[S+16>>2]=c[ca+16>>2];c[S+20>>2]=c[ca+20>>2];c[S+24>>2]=c[ca+24>>2];c[S+28>>2]=c[ca+28>>2];zg(V,S,4,m);if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){ca=c[C>>2]|0;c[C>>2]=ca+1;ca=U+56+(ca<<5)|0;c[ca>>2]=c[V>>2];c[ca+4>>2]=c[V+4>>2];c[ca+8>>2]=c[V+8>>2];c[ca+12>>2]=c[V+12>>2];c[ca+16>>2]=c[V+16>>2];c[ca+20>>2]=c[V+20>>2];c[ca+24>>2]=c[V+24>>2];c[ca+28>>2]=c[V+28>>2]}h[x>>3]=1.5707963267948966;a[y>>0]=1;Cg(e,I,u,T,U,o);if(!G){k=xJ(e,X)|0;o=c[X>>2]|0;if(H&(o|0)>4){ca=k+16|0;c[ca>>2]=c[k>>2];c[ca+4>>2]=c[k+4>>2];c[ca+8>>2]=c[k+8>>2];c[ca+12>>2]=c[k+12>>2];ca=k+32|0;o=k+(o+-1<<4)|0;c[ca>>2]=c[o>>2];c[ca+4>>2]=c[o+4>>2];c[ca+8>>2]=c[o+8>>2];c[ca+12>>2]=c[o+12>>2];F3(k+48|0,o|0,16)|0;c[X>>2]=4;o=4}else J=33}else{k=rJ(e,X)|0;o=c[X>>2]|0;J=33}if((J|0)==33){J=0;if(!o)break a}u=c[Z>>2]|0;p=u+o|0;if((p|0)>(c[45966]|0)){c[45966]=p<<1;t=wH(c[45964]|0,p<<5)|0;c[45964]=t;o=c[X>>2]|0}else t=c[45964]|0;s=0;p=u;while(1){if((s|0)>=(o|0))break;ca=t+(p<<4)|0;u=k+(s<<4)|0;c[ca>>2]=c[u>>2];c[ca+4>>2]=c[u+4>>2];c[ca+8>>2]=c[u+8>>2];c[ca+12>>2]=c[u+12>>2];s=s+1|0;p=p+1|0}c[Z>>2]=p;o=Dg(c[c[(c[v+16>>2]|0)+180>>2]>>2]|0,q,t,Z)|0;Eg(I,e);p=c[o>>2]&3;k=c[((p|0)==3?o:o+48|0)+40>>2]|0;p=c[((p|0)==2?o:o+-48|0)+40>>2]|0;c[_>>2]=p;I=k+16|0;xg(P,b,d,k,c[c[(c[I>>2]|0)+172>>2]>>2]|0,o);c[T>>2]=c[P>>2];c[T+4>>2]=c[P+4>>2];c[T+8>>2]=c[P+8>>2];c[T+12>>2]=c[P+12>>2];c[T+16>>2]=c[P+16>>2];c[T+20>>2]=c[P+20>>2];c[T+24>>2]=c[P+24>>2];c[T+28>>2]=c[P+28>>2];SK(e,o,1,T,yg(k)|0);ca=T+56+((c[B>>2]|0)+-1<<5)|0;I=c[I>>2]|0;m=+h[I+24>>3]-+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[I+232>>2]<<6)+16>>3];c[S>>2]=c[ca>>2];c[S+4>>2]=c[ca+4>>2];c[S+8>>2]=c[ca+8>>2];c[S+12>>2]=c[ca+12>>2];c[S+16>>2]=c[ca+16>>2];c[S+20>>2]=c[ca+20>>2];c[S+24>>2]=c[ca+24>>2];c[S+28>>2]=c[ca+28>>2];zg(V,S,1,m);if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){ca=c[B>>2]|0;c[B>>2]=ca+1;ca=T+56+(ca<<5)|0;c[ca>>2]=c[V>>2];c[ca+4>>2]=c[V+4>>2];c[ca+8>>2]=c[V+8>>2];c[ca+12>>2]=c[V+12>>2];c[ca+16>>2]=c[V+16>>2];c[ca+20>>2]=c[V+20>>2];c[ca+24>>2]=c[V+24>>2];c[ca+28>>2]=c[V+28>>2]}h[j>>3]=-1.5707963267948966;a[z>>0]=1;I=o;o=p}k=t|1;r=150640+(t<<5)|0;Ag(Q,d,b,c[(c[s+16>>2]|0)+232>>2]|0);c[r>>2]=c[Q>>2];c[r+4>>2]=c[Q+4>>2];c[r+8>>2]=c[Q+8>>2];c[r+12>>2]=c[Q+12>>2];c[r+16>>2]=c[Q+16>>2];c[r+20>>2]=c[Q+20>>2];c[r+24>>2]=c[Q+24>>2];c[r+28>>2]=c[Q+28>>2];xg(R,b,d,p,u,0);c[U>>2]=c[R>>2];c[U+4>>2]=c[R+4>>2];c[U+8>>2]=c[R+8>>2];c[U+12>>2]=c[R+12>>2];c[U+16>>2]=c[R+16>>2];c[U+20>>2]=c[R+20>>2];c[U+24>>2]=c[R+24>>2];c[U+28>>2]=c[R+28>>2];c[V>>2]=c[R>>2];c[V+4>>2]=c[R+4>>2];c[V+8>>2]=c[R+8>>2];c[V+12>>2]=c[R+12>>2];c[V+16>>2]=c[R+16>>2];c[V+20>>2]=c[R+20>>2];c[V+24>>2]=c[R+24>>2];c[V+28>>2]=c[R+28>>2];r=(n|0)!=0;s=u+-48|0;VK(e,r?Y:u,1,U,yg(c[((c[u>>2]&3|0)==2?u:s)+40>>2]|0)|0);ca=(c[C>>2]|0)+-1|0;h[D>>3]=+h[U+56+(ca<<5)+24>>3];h[E>>3]=+h[U+56+(ca<<5)+8>>3];ca=c[v+16>>2]|0;m=+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[ca+232>>2]<<6)+24>>3]+ +h[ca+24>>3];c[S>>2]=c[V>>2];c[S+4>>2]=c[V+4>>2];c[S+8>>2]=c[V+8>>2];c[S+12>>2]=c[V+12>>2];c[S+16>>2]=c[V+16>>2];c[S+20>>2]=c[V+20>>2];c[S+24>>2]=c[V+24>>2];c[S+28>>2]=c[V+28>>2];zg(W,S,4,m);c[V>>2]=c[W>>2];c[V+4>>2]=c[W+4>>2];c[V+8>>2]=c[W+8>>2];c[V+12>>2]=c[W+12>>2];c[V+16>>2]=c[W+16>>2];c[V+20>>2]=c[W+20>>2];c[V+24>>2]=c[W+24>>2];c[V+28>>2]=c[W+28>>2];if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){ca=c[C>>2]|0;c[C>>2]=ca+1;ca=U+56+(ca<<5)|0;c[ca>>2]=c[V>>2];c[ca+4>>2]=c[V+4>>2];c[ca+8>>2]=c[V+8>>2];c[ca+12>>2]=c[V+12>>2];c[ca+16>>2]=c[V+16>>2];c[ca+20>>2]=c[V+20>>2];c[ca+24>>2]=c[V+24>>2];c[ca+28>>2]=c[V+28>>2]}Cg(e,I,u,T,U,k);if(G)q=rJ(e,X)|0;else q=xJ(e,X)|0;k=c[X>>2]|0;if(!(H&(k|0)>4)){if(!k)break}else{ca=q+16|0;c[ca>>2]=c[q>>2];c[ca+4>>2]=c[q+4>>2];c[ca+8>>2]=c[q+8>>2];c[ca+12>>2]=c[q+12>>2];ca=q+32|0;k=q+(k+-1<<4)|0;c[ca>>2]=c[k>>2];c[ca+4>>2]=c[k+4>>2];c[ca+8>>2]=c[k+8>>2];c[ca+12>>2]=c[k+12>>2];F3(q+48|0,k|0,16)|0;c[X>>2]=4;k=4}o=c[Z>>2]|0;n=o+k|0;if((n|0)>(c[45966]|0)){c[45966]=n<<1;p=wH(c[45964]|0,n<<5)|0;c[45964]=p;k=c[X>>2]|0}else p=c[45964]|0;n=0;while(1){if((n|0)>=(k|0))break;ca=p+(o<<4)|0;X=q+(n<<4)|0;c[ca>>2]=c[X>>2];c[ca+4>>2]=c[X+4>>2];c[ca+8>>2]=c[X+8>>2];c[ca+12>>2]=c[X+12>>2];n=n+1|0;o=o+1|0}c[Z>>2]=o;Eg(I,e);if(r)k=(c[Y>>2]&3|0)==2?Y:Y+-48|0;else k=(c[u>>2]&3|0)==2?u:s;c[_>>2]=c[k+40>>2];v=o;J=63}while(0);c:do if((J|0)==63){if((i|0)==1){PK(K,c[_>>2]|0,c[45964]|0,v,17296);break}t=d+12|0;u=v+-1|0;m=+((O(c[t>>2]|0,i+-1|0)|0)/2|0|0);n=c[45964]|0;k=1;while(1){if((k|0)>=(u|0))break;ca=n+(k<<4)|0;h[ca>>3]=+h[ca>>3]-m;k=k+1|0}k=c[45966]|0;if((k|0)>(c[45967]|0)){c[45967]=k;o=wH(c[45965]|0,k<<4)|0;c[45965]=o;n=c[45964]|0}else o=c[45965]|0;k=0;while(1){if((k|0)>=(v|0))break;ca=o+(k<<4)|0;d=n+(k<<4)|0;c[ca>>2]=c[d>>2];c[ca+4>>2]=c[d+4>>2];c[ca+8>>2]=c[d+8>>2];c[ca+12>>2]=c[d+12>>2];k=k+1|0}PK(K,c[_>>2]|0,o,v,17296);r=$+48|0;s=$+-48|0;q=1;while(1){if((q|0)>=(i|0))break c;o=c[f+(q+g<<2)>>2]|0;p=o+16|0;k=c[p>>2]|0;if(c[k+164>>2]&32){n=c[aa>>2]|0;E3(n|0,k|0,176)|0;w=$;x=o;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[aa>>2]=n;w=c[$>>2]&3;c[((w|0)==3?$:r)+40>>2]=c[((c[o>>2]&3|0)==2?o:o+-48|0)+40>>2];c[((w|0)==2?$:s)+40>>2]=c[((c[o>>2]&3|0)==3?o:o+48|0)+40>>2];w=n+16|0;x=(c[p>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));k=c[aa>>2]|0;w=k+56|0;x=(c[p>>2]|0)+16|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));a[k+112>>0]=1;c[k+116>>2]=o;o=$}p=c[45964]|0;k=1;while(1){if((k|0)>=(u|0))break;ca=p+(k<<4)|0;h[ca>>3]=+h[ca>>3]+ +(c[t>>2]|0);k=k+1|0}n=c[45965]|0;k=0;while(1){if((k|0)>=(v|0))break;ca=n+(k<<4)|0;_=p+(k<<4)|0;c[ca>>2]=c[_>>2];c[ca+4>>2]=c[_+4>>2];c[ca+8>>2]=c[_+8>>2];c[ca+12>>2]=c[_+12>>2];k=k+1|0}PK(o,c[((c[o>>2]&3|0)==2?o:o+-48|0)+40>>2]|0,n,v,17296);q=q+1|0}}while(0);l=ba;return}function tg(a){a=a|0;var b=0,d=0,e=0;b=Ry(a)|0;while(1){if(!b)break;d=Dx(a,b)|0;while(1){if(!d)break;if((kb[c[4324]&63](d)|0)<<24>>24?(e=c[(c[d+16>>2]|0)+8>>2]|0,e|0):0)ug(e);d=Fx(a,d)|0}b=Sy(a,b)|0}return}function ug(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[a+4>>2]|0;g=uH(f*48|0)|0;b=g;d=0;e=(c[a>>2]|0)+((f+-1|0)*48|0)|0;while(1){if((d|0)>=(f|0)){b=0;break}vg(e,b);b=b+48|0;d=d+1|0;e=e+-48|0}while(1){d=c[a>>2]|0;if((b|0)>=(f|0))break;C_(c[d+(b*48|0)>>2]|0);b=b+1|0}C_(d);c[a>>2]=g;return}function vg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;h=uH(g<<4)|0;d=h;e=0;f=(c[a>>2]|0)+(g+-1<<4)|0;while(1){if((e|0)>=(g|0))break;c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];d=d+16|0;e=e+1|0;f=f+-16|0}c[b>>2]=h;c[b+4>>2]=g;c[b+8>>2]=c[a+12>>2];c[b+12>>2]=c[a+8>>2];h=b+16|0;g=a+32|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];h=b+32|0;g=a+16|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];return}function wg(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=l;l=l+96|0;q=x+80|0;s=x+64|0;r=x+48|0;u=x+32|0;v=x+16|0;w=x;m=d;while(1){t=m+16|0;g=c[t>>2]|0;if(!(a[g+112>>0]|0))break;m=c[g+116>>2]|0}g=c[m>>2]&3;o=c[((g|0)==2?m:m+-48|0)+40>>2]|0;g=c[((g|0)==3?m:m+48|0)+40>>2]|0;m=o+16|0;n=g+16|0;y=(c[(c[m>>2]|0)+232>>2]|0)-(c[(c[n>>2]|0)+232>>2]|0)|0;switch(((y|0)>-1?y:0-y|0)|0){case 1:{g=0;break}case 2:{if(!(a[(c[(c[b+60>>2]|0)+16>>2]|0)+113>>0]&1))p=6;else g=0;break}default:p=6}do if((p|0)==6){if((c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)==(g|0)){c[f>>2]=o;y=(c[n>>2]|0)+16|0;p=(c[t>>2]|0)+16|0;c[s>>2]=c[y>>2];c[s+4>>2]=c[y+4>>2];c[s+8>>2]=c[y+8>>2];c[s+12>>2]=c[y+12>>2];c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];Og(u,s,q);p=(c[m>>2]|0)+16|0;y=(c[t>>2]|0)+56|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];Og(v,s,q)}else{c[f>>2]=g;y=(c[m>>2]|0)+16|0;p=(c[t>>2]|0)+56|0;c[s>>2]=c[y>>2];c[s+4>>2]=c[y+4>>2];c[s+8>>2]=c[y+8>>2];c[s+12>>2]=c[y+12>>2];c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];Og(u,s,q);p=(c[n>>2]|0)+16|0;y=(c[t>>2]|0)+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];Og(v,s,q)}g=c[(c[t>>2]|0)+96>>2]|0;if(!g){g=e+16|0;c[e>>2]=c[u>>2];c[e+4>>2]=c[u+4>>2];c[e+8>>2]=c[u+8>>2];c[e+12>>2]=c[u+12>>2];c[g>>2]=c[u>>2];c[g+4>>2]=c[u+4>>2];c[g+8>>2]=c[u+8>>2];c[g+12>>2]=c[u+12>>2];g=e+48|0;y=e+32|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];c[g>>2]=c[v>>2];c[g+4>>2]=c[v+4>>2];c[g+8>>2]=c[v+8>>2];c[g+12>>2]=c[v+12>>2];g=4;break}j=+h[g+24>>3];i=+h[g+32>>3];p=(c[(c[(dz(o)|0)+16>>2]|0)+116>>2]&1|0)==0;k=p?i:j;y=(c[(c[t>>2]|0)+96>>2]|0)+56|0;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[r>>2]=c[v>>2];c[r+4>>2]=c[v+4>>2];c[r+8>>2]=c[v+8>>2];c[r+12>>2]=c[v+12>>2];c[s>>2]=c[u>>2];c[s+4>>2]=c[u+4>>2];c[s+8>>2]=c[u+8>>2];c[s+12>>2]=c[u+12>>2];c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];y=(Pg(r,s,q)|0)==0;i=(p?j:i)*.5;j=+h[w>>3];if(y){h[w>>3]=j-i;y=w+8|0;h[y>>3]=+h[y>>3]+k*.5}else{h[w>>3]=j+i;y=w+8|0;h[y>>3]=+h[y>>3]-k*.5}g=e+16|0;c[e>>2]=c[u>>2];c[e+4>>2]=c[u+4>>2];c[e+8>>2]=c[u+8>>2];c[e+12>>2]=c[u+12>>2];c[g>>2]=c[u>>2];c[g+4>>2]=c[u+4>>2];c[g+8>>2]=c[u+8>>2];c[g+12>>2]=c[u+12>>2];g=e+32|0;y=e+48|0;u=e+64|0;c[u>>2]=c[w>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[g>>2]=c[w>>2];c[g+4>>2]=c[w+4>>2];c[g+8>>2]=c[w+8>>2];c[g+12>>2]=c[w+12>>2];g=e+80|0;y=e+96|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];c[g>>2]=c[v>>2];c[g+4>>2]=c[v+4>>2];c[g+8>>2]=c[v+8>>2];c[g+12>>2]=c[v+12>>2];g=7}while(0);l=x;return g|0}function xg(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0,l=0,m=0.0,n=0,o=0.0,p=0.0,q=0;q=c[f+16>>2]|0;p=+h[q+16>>3];j=p-+h[q+88>>3];m=j+-4.0;l=Kg(d,f,g,i,-1)|0;if(!l){n=~~(j+(m>=0.0?-3.5:-4.5));k=c[e>>2]|0;k=(k|0)>(n|0)?n:k}else{k=Lg(d,f,l)|0;do if(!k){n=c[l+16>>2]|0;j=+h[n+240>>3]+ +h[n+16>>3];if(!(a[n+156>>0]|0)){j=+(c[(c[d+16>>2]|0)+248>>2]|0)*.5+j;break}else{j=j+ +(c[e+8>>2]|0);break}}else j=+h[(c[k+16>>2]|0)+32>>3]+ +(c[e+8>>2]|0);while(0);o=j=0.0?.5:-.5))}o=+(k|0);n=(a[q+156>>0]|0)==1;if(n?(c[q+104>>2]|0)!=0:0)m=p+10.0;else m=p+4.0+ +h[q+96>>3];l=Kg(d,f,g,i,1)|0;if(!l){f=~~(m+(m>=0.0?.5:-.5));k=c[e+4>>2]|0;k=(k|0)<(f|0)?f:k}else{k=Lg(d,f,l)|0;do if(!k){f=c[l+16>>2]|0;j=+h[f+16>>3]-+h[f+88>>3];if(!(a[f+156>>0]|0)){j=j-+(c[(c[d+16>>2]|0)+248>>2]|0)*.5;break}else{j=j-+(c[e+8>>2]|0);break}}else j=+h[(c[k+16>>2]|0)+16>>3]-+(c[e+8>>2]|0);while(0);m=j>m?j:m;k=~~(m+(m>=0.0?.5:-.5))}j=+(k|0);if(n?(c[q+104>>2]|0)!=0:0){j=j-+h[q+96>>3];if(j>3];d=c[(c[d+16>>2]|0)+196>>2]|0;q=c[q+232>>2]|0;m=p-+h[d+(q<<6)+16>>3];p=+h[d+(q<<6)+24>>3]+p;h[b>>3]=o;h[b+8>>3]=m;h[b+16>>3]=j;h[b+24>>3]=p;return}function yg(b){b=b|0;b=c[b+16>>2]|0;if((a[b+156>>0]|0)==1)if((c[b+176>>2]|0)>1)b=1;else b=(c[b+184>>2]|0)>1&1;else b=0;return b|0}function zg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0;g=l;l=l+32|0;f=g;switch(d|0){case 1:{Jg(f,+h[b>>3],e,+h[b+16>>3],+h[b+8>>3]);break}case 4:{Jg(f,+h[b>>3],+h[b+24>>3],+h[b+16>>3],e);break}default:{}}c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];c[a+12>>2]=c[f+12>>2];c[a+16>>2]=c[f+16>>2];c[a+20>>2]=c[f+20>>2];c[a+24>>2]=c[f+24>>2];c[a+28>>2]=c[f+28>>2];l=g;return}function Ag(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0;l=c[b+16>>2]|0;k=l+(e<<5)|0;j=+h[k>>3];m=l+(e<<5)+8|0;g=+h[m>>3];n=l+(e<<5)+16|0;f=+h[n>>3];l=l+(e<<5)+24|0;i=+h[l>>3];if(j==f){d=c[(c[d+16>>2]|0)+196>>2]|0;o=e+1|0;j=+(c[b>>2]|0);g=+h[d+(o<<6)+24>>3]+ +h[(c[(c[c[d+(o<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];f=+(c[b+4>>2]|0);i=+h[(c[(c[c[d+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[d+(e<<6)+16>>3];h[k>>3]=j;h[m>>3]=g;h[n>>3]=f;h[l>>3]=i}h[a>>3]=j;h[a+8>>3]=g;h[a+16>>3]=f;h[a+24>>3]=i;return}function Bg(b){b=b|0;var d=0,e=0;b=c[b+16>>2]|0;e=b+16|0;d=0;while(1){b=c[c[b+180>>2]>>2]|0;b=c[(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0;if((a[b+156>>0]|0)!=1)break;if((c[b+184>>2]|0)!=1)break;if((c[b+176>>2]|0)!=1)break;if(+h[b+16>>3]!=+h[e>>3])break;d=d+1|0}return d|0}function Cg(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=l;l=l+32|0;j=k;h=Gg(b,-1)|0;b=Gg(b,1)|0;if(!((h|0)!=0?!(eL(h)|0):0))i=3;do if((i|0)==3){if(b|0?(eL(b)|0)==0:0)break;h=Hg(d,-1)|0;b=Hg(d,1)|0;if(h|0?(eL(h)|0)==0:0)break;if(b|0?(eL(b)|0)==0:0)break;h=e+52|0;b=0;while(1){if((b|0)>=(c[h>>2]|0))break;d=e+56+(b<<5)|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];c[j+16>>2]=c[d+16>>2];c[j+20>>2]=c[d+20>>2];c[j+24>>2]=c[d+24>>2];c[j+28>>2]=c[d+28>>2];RK(a,j);b=b+1|0}h=c[a+80>>2]|0;i=g+-3|0;b=0;while(1){if((b|0)>=(g|0))break;e=150640+(b<<5)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];c[j+16>>2]=c[e+16>>2];c[j+20>>2]=c[e+20>>2];c[j+24>>2]=c[e+24>>2];c[j+28>>2]=c[e+28>>2];RK(a,j);b=b+1|0}d=h+1|0;i=i+d|0;h=c[f+52>>2]|0;while(1){b=h+-1|0;if((h|0)<=0)break;h=f+56+(b<<5)|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[j+28>>2]=c[h+28>>2];RK(a,j);h=b}Ig(a,d,i)}while(0);l=k;return}function Dg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[e>>2]|0;while(1){if(!b)break;a=c[c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0;b=b+-1|0}c[e>>2]=f+1;g=d+(f<<4)|0;b=d+(f+-1<<4)|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];f=c[e>>2]|0;c[e>>2]=f+1;f=d+(f<<4)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];f=d+(c[e>>2]<<4)|0;e=(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];return a|0}function Eg(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,l=0,m=0;m=d+84|0;l=d+80|0;e=0;d=b;a:while(1){j=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;k=j+16|0;if((a[(c[k>>2]|0)+156>>0]|0)!=1)break;if((kb[c[17300>>2]&63](j)|0)<<24>>24)break;d=c[l>>2]|0;while(1){if((e|0)>=(d|0))break a;if(!(+h[(c[m>>2]|0)+(e<<5)+8>>3]>+h[(c[k>>2]|0)+24>>3]))break;e=e+1|0}d=c[m>>2]|0;b=c[k>>2]|0;do if(!(+h[d+(e<<5)+24>>3]<+h[b+24>>3])){g=+h[d+(e<<5)>>3];i=~~g;f=+h[d+(e<<5)+16>>3];if(!(c[b+104>>2]|0)){Fg(j,i,~~((f+g)*.5),~~f);break}else{Fg(j,i,~~f,~~(+h[b+96>>3]+f));break}}while(0);d=c[c[(c[k>>2]|0)+180>>2]>>2]|0}return}function Fg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[a+16>>2]|0;h[a+16>>3]=+(d|0);h[a+88>>3]=+(d-b|0);h[a+96>>3]=+(e-d|0);return}function Gg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=c[(c[(c[((h|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+180>>2]|0;h=((h|0)==2?a:a+-48|0)+40|0;g=0;a=0;while(1){e=c[i+(g<<2)>>2]|0;if(!e)break;f=c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;do if((O(f-(c[(c[(c[h>>2]|0)+16>>2]|0)+236>>2]|0)|0,b)|0)>=1){d=c[e+16>>2]|0;if(!(c[d+8>>2]|0)){d=c[d+116>>2]|0;if(!d)break;if(!(c[(c[d+16>>2]|0)+8>>2]|0))break}if(a|0?(O((c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-f|0,b)|0)<=0:0)break;a=e}while(0);g=g+1|0}return a|0}function Hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=c[(c[(c[((h|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+172>>2]|0;h=((h|0)==3?a:a+48|0)+40|0;g=0;a=0;while(1){e=c[i+(g<<2)>>2]|0;if(!e)break;f=c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;do if((O(f-(c[(c[(c[h>>2]|0)+16>>2]|0)+236>>2]|0)|0,b)|0)>=1){d=c[e+16>>2]|0;if(!(c[d+8>>2]|0)){d=c[d+116>>2]|0;if(!d)break;if(!(c[(c[d+16>>2]|0)+8>>2]|0))break}if(a|0?(O((c[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-f|0,b)|0)<=0:0)break;a=e}while(0);g=g+1|0}return a|0}function Ig(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0;l=a+84|0;i=b+-1|0;while(1){if((i|0)>(d|0))break;f=c[l>>2]|0;j=f+(i<<5)|0;e=+h[j>>3];if(!(i-b&1)){f=f+(i<<5)+16|0;m=+h[f>>3];g=~~((m+e)*.5);if(e>=m){h[j>>3]=+(g+-8|0);h[f>>3]=+(g+8|0)}}else{f=f+(i<<5)+16|0;m=+h[f>>3];g=~~((m+e)*.5);if(e+16.0>m){h[j>>3]=+(g+-8|0);h[f>>3]=+(g+8|0)}}i=i+1|0}k=(c[a+80>>2]|0)+-1|0;g=0;while(1){if((g|0)>=(k|0))break;i=c[l>>2]|0;f=i+(g<<5)|0;j=g+1|0;a=i+(j<<5)|0;if(!((g|0)<(b|0)|(g|0)>(d|0))?(g-b&1|0)==0:0){e=+h[f>>3]+16.0;f=i+(j<<5)+16|0;if(e>+h[f>>3])h[f>>3]=e;e=+h[i+(g<<5)+16>>3]+-16.0;if(!(e<+h[a>>3])){g=j;continue}h[a>>3]=e;g=j;continue}if(!((g|0)<(d|0)&(j|0)>=(b|0))){g=j;continue}if(j-b&1|0){g=j;continue}e=+h[i+(j<<5)+16>>3];if(+h[f>>3]+16.0>e)h[f>>3]=e+-16.0;f=i+(g<<5)+16|0;e=+h[a>>3];if(!(+h[f>>3]+-16.0>3]=e+16.0;g=j}return}function Jg(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h[a+16>>3]=d;h[a+24>>3]=e;return}function Kg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=c[(c[b+16>>2]|0)+196>>2]|0;h=c[d+16>>2]|0;j=c[h+232>>2]|0;i=k+(j<<6)|0;j=k+(j<<6)+4|0;h=c[h+236>>2]|0;a:do{h=h+g|0;if((h|0)<=-1){b=0;break}if((h|0)>=(c[i>>2]|0)){b=0;break}b=c[(c[j>>2]|0)+(h<<2)>>2]|0;k=c[b+16>>2]|0;switch(a[k+156>>0]|0){case 0:break a;case 1:{if(c[k+104>>2]|0)break a;break}default:{}}}while((Ng(b,d,e,f)|0)<<24>>24!=0);return b|0}function Lg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;d=c[d+16>>2]|0;if(!(a[d+156>>0]|0)){i=c[d+212>>2]|0;h=i}else{i=c[(c[(c[c[d+180>>2]>>2]|0)+16>>2]|0)+116>>2]|0;g=c[i>>2]&3;h=c[(c[(c[((g|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;i=c[(c[(c[((g|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0}d=c[e+16>>2]|0;if(!(a[d+156>>0]|0)){e=c[d+212>>2]|0;e=(e|0)==(b|0)?0:e;return ((e|0)==(h|0)|((e|0)==0|(e|0)==(i|0))?0:e)|0}f=c[(c[(c[c[d+180>>2]>>2]|0)+16>>2]|0)+116>>2]|0;g=c[f>>2]&3;d=c[(c[(c[((g|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;d=(d|0)==(b|0)?0:d;if(!(!((d|0)==(h|0)|((d|0)==0|(d|0)==(i|0)))?(Mg(d,e)|0)!=0:0)){d=c[(c[(c[((g|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;d=(d|0)==(b|0)?0:d;if((d|0)==(h|0)|((d|0)==0|(d|0)==(i|0)))d=0;else{e=(Mg(d,e)|0)==0;return (e?0:d)|0}}return d|0}function Mg(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0;d=c[a+16>>2]|0;a=c[b+16>>2]|0;f=+h[a+16>>3];if((+h[d+16>>3]<=f?f<=+h[d+32>>3]:0)?(e=+h[a+24>>3],+h[d+24>>3]<=e):0)a=e<=+h[d+40>>3]&1;else a=0;return a|0}function Ng(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=c[b+16>>2]|0;j=(c[i+236>>2]|0)>(c[(c[d+16>>2]|0)+236>>2]|0);a:do if((c[i+184>>2]|0)==1){b:do if(f|0){h=0;b=c[c[i+180>>2]>>2]|0;while(1){if((h|0)>=2)break b;b=c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0;d=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;if((b|0)==(d|0))break b;g=c[b+16>>2]|0;b=c[d+16>>2]|0;if(j^(c[g+236>>2]|0)>(c[b+236>>2]|0)){b=1;break a}if((c[g+184>>2]|0)!=1)break b;if(!(a[g+156>>0]|0))break b;if((c[b+184>>2]|0)!=1)break b;if(!(a[b+156>>0]|0))break b;h=h+1|0;f=c[c[b+180>>2]>>2]|0;b=c[c[g+180>>2]>>2]|0}}while(0);if(e|0?(c[i+176>>2]|0)==1:0){g=0;d=e;b=c[c[i+172>>2]>>2]|0;while(1){if((g|0)>=2){b=0;break a}b=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;d=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((b|0)==(d|0)){b=0;break a}f=c[b+16>>2]|0;b=c[d+16>>2]|0;if(j^(c[f+236>>2]|0)>(c[b+236>>2]|0)){b=1;break a}if((c[f+176>>2]|0)!=1){b=0;break a}if(!(a[f+156>>0]|0)){b=0;break a}if((c[b+176>>2]|0)!=1){b=0;break a}if(!(a[b+156>>0]|0)){b=0;break a}g=g+1|0;d=c[c[b+172>>2]>>2]|0;b=c[c[f+172>>2]>>2]|0}}else b=0}else b=0;while(0);return b|0}function Og(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function Pg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];return (~~((+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d))|0)>0|0}function Qg(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;R=l;l=l+256|0;D=R+232|0;C=R+216|0;P=R+88|0;O=R+80|0;K=R+64|0;L=R+200|0;M=R+184|0;N=R;E=R+168|0;F=R+152|0;G=R+136|0;H=R+120|0;I=R+104|0;B=c[g>>2]&3;J=c[((B|0)==3?g:g+48|0)+40>>2]|0;B=c[((B|0)==2?g:g+-48|0)+40>>2]|0;do if((GJ(J)|0)!=2?(GJ(B)|0)!=2:0){g=0;j=0;k=0;while(1){if((k|0)>=(f|0))break;A=c[(c[d+(k+e<<2)>>2]|0)+16>>2]|0;g=g+((c[A+96>>2]|0)!=0&1)|0;if(!((a[A+44>>0]|0)==0?(a[A+84>>0]|0)==0:0))j=1;k=k+1|0}if(!j)if(!g){Sg(J,B,d,e,f,i);break}else{Xg(J,B,d,e,f,i,g);break}y=tH(156)|0;z=Yg(b,y)|0;t=uA(z,85383,1)|0;zz(t,134401,280,1)|0;yx(t,87076,87090)|0;m=+h[(c[B+16>>2]|0)+16>>3];s=+h[(c[J+16>>2]|0)+16>>3];A=b+16|0;q=(c[(c[A>>2]|0)+116>>2]&1|0)==0;r=q?B:J;q=q?J:B;t=Zg(t,q)|0;u=Zg(z,r)|0;g=0;p=0;while(1){if((p|0)>=(f|0))break;j=d+(p+e<<2)|0;while(1){o=c[j>>2]|0;n=o+16|0;j=c[n>>2]|0;if(!(a[j+112>>0]|0))break;else j=j+116|0}if((c[((c[o>>2]&3|0)==3?o:o+48|0)+40>>2]|0)==(q|0))k=_g(z,t,u,o)|0;else k=_g(z,u,t,o)|0;j=c[n>>2]|0;c[j+120>>2]=k;if(!g)if((a[j+44>>0]|0)==0?(a[j+84>>0]|0)==0:0){c[(c[k+16>>2]|0)+120>>2]=o;g=k}else g=0;p=p+1|0}if(!g)x=Qx(z,t,u,0,1)|0;else x=g;qx(x,c[46404]|0,85387)|0;g=z+16|0;n=c[g>>2]|0;c[n+144>>2]=c[(c[A>>2]|0)+144>>2];c[n+188>>2]=z;_M(z,i);Pf(z);yj(z,0);Ih(z,0);Li(z,0);q=q+16|0;i=c[q>>2]|0;n=c[r+16>>2]|0;r=t+16|0;o=c[r>>2]|0;p=o+16|0;v=+(~~m|0);w=+(~~((+h[(c[u+16>>2]|0)+16>>3]+ +h[p>>3])*.5)|0);m=+(~~s|0);s=+(~~((+h[i+16>>3]-+h[i+96>>3]+ +h[n+16>>3]+ +h[n+88>>3])*.5)|0);n=o+24|0;g=(c[g>>2]|0)+192|0;while(1){j=c[g>>2]|0;if(!j)break;do if((j|0)!=(t|0)){g=c[j+16>>2]|0;k=g+24|0;if((j|0)==(u|0)){h[k>>3]=m;h[g+16>>3]=w;break}else{h[k>>3]=s;break}}else{h[n>>3]=v;h[p>>3]=w;g=o}while(0);g=g+164|0}sk(z);kg(z,0);dJ(z);k=c[q>>2]|0;g=c[r>>2]|0;if(!(c[(c[A>>2]|0)+116>>2]&1)){j=g+16|0;m=+h[k+24>>3]-+h[g+24>>3]}else{j=g+24|0;m=+h[g+16>>3]+ +h[k+24>>3]}h[K>>3]=+h[k+16>>3]-+h[j>>3];h[K+8>>3]=m;i=N+16|0;t=N+32|0;u=N+48|0;r=0;while(1){if((r|0)>=(f|0))break;g=d+(r+e<<2)|0;while(1){j=c[g>>2]|0;q=j+16|0;g=c[q>>2]|0;if(!(a[g+112>>0]|0))break;else g=g+116|0}o=c[g+120>>2]|0;p=o+16|0;g=c[p>>2]|0;if(!((o|0)==(x|0)&(c[g+120>>2]|0)==0)){n=c[c[g+8>>2]>>2]|0;o=n+4|0;j=OK(j,c[o>>2]|0)|0;c[j+8>>2]=c[n+8>>2];g=j+16|0;k=n+16|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];$g(L,C,D,S);c[g>>2]=c[L>>2];c[g+4>>2]=c[L+4>>2];c[g+8>>2]=c[L+8>>2];c[g+12>>2]=c[L+12>>2];c[j+12>>2]=c[n+12>>2];g=j+32|0;S=n+32|0;k=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[S>>2];c[C+4>>2]=c[S+4>>2];c[C+8>>2]=c[S+8>>2];c[C+12>>2]=c[S+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];$g(M,C,D,k);c[g>>2]=c[M>>2];c[g+4>>2]=c[M+4>>2];c[g+8>>2]=c[M+8>>2];c[g+12>>2]=c[M+12>>2];g=0;while(1){if((g|0)>=(c[o>>2]|0))break;k=(c[j>>2]|0)+(g<<4)|0;T=(c[n>>2]|0)+(g<<4)|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[T>>2];c[C+4>>2]=c[T+4>>2];c[C+8>>2]=c[T+8>>2];c[C+12>>2]=c[T+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];$g(E,C,D,S);c[k>>2]=c[E>>2];c[k+4>>2]=c[E+4>>2];c[k+8>>2]=c[E+8>>2];c[k+12>>2]=c[E+12>>2];c[N>>2]=c[E>>2];c[N+4>>2]=c[E+4>>2];c[N+8>>2]=c[E+8>>2];c[N+12>>2]=c[E+12>>2];k=g+1|0;if((k|0)>=(c[o>>2]|0)){Q=48;break}S=(c[j>>2]|0)+(k<<4)|0;k=(c[n>>2]|0)+(k<<4)|0;T=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];$g(F,C,D,T);c[S>>2]=c[F>>2];c[S+4>>2]=c[F+4>>2];c[S+8>>2]=c[F+8>>2];c[S+12>>2]=c[F+12>>2];c[i>>2]=c[F>>2];c[i+4>>2]=c[F+4>>2];c[i+8>>2]=c[F+8>>2];c[i+12>>2]=c[F+12>>2];S=g+2|0;T=(c[j>>2]|0)+(S<<4)|0;S=(c[n>>2]|0)+(S<<4)|0;k=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[S>>2];c[C+4>>2]=c[S+4>>2];c[C+8>>2]=c[S+8>>2];c[C+12>>2]=c[S+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];$g(G,C,D,k);c[T>>2]=c[G>>2];c[T+4>>2]=c[G+4>>2];c[T+8>>2]=c[G+8>>2];c[T+12>>2]=c[G+12>>2];c[t>>2]=c[G>>2];c[t+4>>2]=c[G+4>>2];c[t+8>>2]=c[G+8>>2];c[t+12>>2]=c[G+12>>2];T=g+3|0;k=(c[n>>2]|0)+(T<<4)|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];$g(H,C,D,S);c[u>>2]=c[H>>2];c[u+4>>2]=c[H+4>>2];c[u+8>>2]=c[H+8>>2];c[u+12>>2]=c[H+12>>2];XE((c[A>>2]|0)+16|0,N);g=T}if((Q|0)==48)Q=0;g=c[(c[q>>2]|0)+96>>2]|0;if(g|0){T=g+56|0;p=(c[(c[p>>2]|0)+96>>2]|0)+56|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[p>>2];c[C+4>>2]=c[p+4>>2];c[C+8>>2]=c[p+8>>2];c[C+12>>2]=c[p+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];$g(I,C,D,S);c[T>>2]=c[I>>2];c[T+4>>2]=c[I+4>>2];c[T+8>>2]=c[I+8>>2];c[T+12>>2]=c[I+12>>2];T=c[(c[q>>2]|0)+96>>2]|0;a[T+81>>0]=1;jM(b,T)}}r=r+1|0}ah(z,y)}else Q=3;while(0);if((Q|0)==3?(c[45968]|0)==0:0){c[45968]=1;Ow(0,85260,O)|0;Q=qy(J)|0;S=(dy(b)|0)!=0;T=qy(B)|0;c[P>>2]=Q;c[P+4>>2]=S?134656:138665;c[P+8>>2]=T;Ow(3,85366,P)|0}l=R;return}function Rg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;z=l;l=l+1600|0;u=z+1552|0;n=z+1536|0;t=z+840|0;v=z+144|0;w=z+1584|0;j=z+32|0;s=z+16|0;o=z;q=c[f>>2]&3;p=c[((q|0)==3?f:f+48|0)+40>>2]|0;x=f+-48|0;q=c[((q|0)==2?f:x)+40>>2]|0;r=f+16|0;k=c[r>>2]|0;i=c[k+172>>2]|0;while(1){m=c[(c[i+16>>2]|0)+172>>2]|0;if(!m)break;else i=m}k=(c[k+96>>2]|0)+56|0;i=(c[((c[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0)+16|0;m=(c[i>>2]|0)+16|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];k=c[r>>2]|0;a[(c[k+96>>2]|0)+81>>0]=1;if((g|0)!=2){k=c[i>>2]|0;C=+h[k+16>>3];E=C-+h[k+88>>3];C=+h[k+96>>3]+C;B=+h[k+24>>3];D=+h[k+80>>3]*.5+B;k=c[(c[b+16>>2]|0)+196>>2]|0;m=c[p+16>>2]|0;j=c[m+232>>2]|0;B=+(~~(+(~~(B-+h[k+(j<<6)+16>>3]-+h[m+24>>3]+ +h[k+(j<<6)+24>>3])|0)*.16666666666666666)|0);B=D-(B<5.0?5.0:B);Ug(b,d,e,p,f,t,1);Ug(b,d,e,q,f,v,0);j=t+52|0;k=c[j>>2]|0;m=k+-1|0;A=+h[t+56+(m<<5)>>3];h[18830]=A;h[18831]=+h[t+56+(m<<5)+24>>3];h[18832]=E;h[18833]=B;h[18834]=A;h[18835]=B;m=v+52|0;i=(c[m>>2]|0)+-1|0;A=+h[v+56+(i<<5)+16>>3];h[18836]=A;h[18837]=D;h[18838]=C;h[18841]=B;h[18839]=+h[v+56+(i<<5)+24>>3];h[18840]=A;i=0;while(1){if((i|0)>=(k|0)){i=0;break}k=t+56+(i<<5)|0;c[u>>2]=c[k>>2];c[u+4>>2]=c[k+4>>2];c[u+8>>2]=c[k+8>>2];c[u+12>>2]=c[k+12>>2];c[u+16>>2]=c[k+16>>2];c[u+20>>2]=c[k+20>>2];c[u+24>>2]=c[k+24>>2];c[u+28>>2]=c[k+28>>2];RK(e,u);i=i+1|0;k=c[j>>2]|0}while(1){if((i|0)==3)break;t=150640+(i<<5)|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[u+16>>2]=c[t+16>>2];c[u+20>>2]=c[t+20>>2];c[u+24>>2]=c[t+24>>2];c[u+28>>2]=c[t+28>>2];RK(e,u);i=i+1|0}j=c[m>>2]|0;while(1){i=j+-1|0;if((j|0)<=0)break;j=v+56+(i<<5)|0;c[u>>2]=c[j>>2];c[u+4>>2]=c[j+4>>2];c[u+8>>2]=c[j+8>>2];c[u+12>>2]=c[j+12>>2];c[u+16>>2]=c[j+16>>2];c[u+20>>2]=c[j+20>>2];c[u+24>>2]=c[j+24>>2];c[u+28>>2]=c[j+28>>2];RK(e,u);j=i}if((g|0)==10)j=rJ(e,w)|0;else j=xJ(e,w)|0;i=c[w>>2]|0;if(i|0)y=17}else{i=(c[p+16>>2]|0)+16|0;v=k+16|0;c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];Og(s,n,u);v=(c[q+16>>2]|0)+16|0;i=(c[r>>2]|0)+56|0;c[n>>2]=c[v>>2];c[n+4>>2]=c[v+4>>2];c[n+8>>2]=c[v+8>>2];c[n+12>>2]=c[v+12>>2];c[u>>2]=c[i>>2];c[u+4>>2]=c[i+4>>2];c[u+8>>2]=c[i+8>>2];c[u+12>>2]=c[i+12>>2];Og(o,n,u);i=c[(c[r>>2]|0)+96>>2]|0;D=+h[i+56>>3];E=+h[i+64>>3]-+h[i+32>>3]*.5;i=j+16|0;c[j>>2]=c[s>>2];c[j+4>>2]=c[s+4>>2];c[j+8>>2]=c[s+8>>2];c[j+12>>2]=c[s+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];i=j+32|0;v=j+48|0;y=j+64|0;h[j+64>>3]=D;h[j+72>>3]=E;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];c[i>>2]=c[y>>2];c[i+4>>2]=c[y+4>>2];c[i+8>>2]=c[y+8>>2];c[i+12>>2]=c[y+12>>2];i=j+80|0;y=j+96|0;c[y>>2]=c[o>>2];c[y+4>>2]=c[o+4>>2];c[y+8>>2]=c[o+8>>2];c[y+12>>2]=c[o+12>>2];c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];c[w>>2]=7;i=7;y=17}if((y|0)==17)PK(f,c[((c[f>>2]&3|0)==2?f:x)+40>>2]|0,j,i,17296);l=z;return}function Sg(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=l;l=l+352|0;x=N+336|0;w=N+320|0;L=N+128|0;u=N+304|0;y=N+288|0;M=N+112|0;E=N+96|0;F=N+80|0;G=N+64|0;H=N+48|0;I=N+32|0;J=N+16|0;K=N;a=a+16|0;q=(c[a>>2]|0)+16|0;v=(c[d+(e<<2)>>2]|0)+16|0;s=(c[v>>2]|0)+16|0;c[w>>2]=c[q>>2];c[w+4>>2]=c[q+4>>2];c[w+8>>2]=c[q+8>>2];c[w+12>>2]=c[q+12>>2];c[x>>2]=c[s>>2];c[x+4>>2]=c[s+4>>2];c[x+8>>2]=c[s+8>>2];c[x+12>>2]=c[s+12>>2];Og(u,w,x);C=+h[u>>3];D=+h[u+8>>3];u=(c[b+16>>2]|0)+16|0;v=(c[v>>2]|0)+56|0;c[w>>2]=c[u>>2];c[w+4>>2]=c[u+4>>2];c[w+8>>2]=c[u+8>>2];c[w+12>>2]=c[u+12>>2];c[x>>2]=c[v>>2];c[x+4>>2]=c[v+4>>2];c[x+8>>2]=c[v+8>>2];c[x+12>>2]=c[v+12>>2];Og(y,w,x);A=+h[y>>3];B=+h[y+8>>3];if((f|0)>1){z=+h[(c[a>>2]|0)+80>>3];i=z*.5;z=z/+(f+-1|0)}else{i=0.0;z=0.0}p=(g|8|0)==10;m=L+8|0;q=L+16|0;r=(A+C*2.0)*.3333333333333333;s=L+32|0;t=(A*2.0+C)*.3333333333333333;n=L+24|0;u=L+48|0;v=L+64|0;w=L+80|0;x=L+96|0;y=L+112|0;k=L+128|0;o=L+136|0;i=D-i;b=0;while(1){if((b|0)>=(f|0))break;j=c[d+(b+e<<2)>>2]|0;h[L>>3]=C;h[m>>3]=D;if(p){Wg(M,r,i);c[q>>2]=c[M>>2];c[q+4>>2]=c[M+4>>2];c[q+8>>2]=c[M+8>>2];c[q+12>>2]=c[M+12>>2];Wg(E,t,i);c[s>>2]=c[E>>2];c[s+4>>2]=c[E+4>>2];c[s+8>>2]=c[E+8>>2];c[s+12>>2]=c[E+12>>2];a=4;g=3}else{h[q>>3]=C;h[n>>3]=D;Wg(F,r,i);c[s>>2]=c[F>>2];c[s+4>>2]=c[F+4>>2];c[s+8>>2]=c[F+8>>2];c[s+12>>2]=c[F+12>>2];Wg(G,r,i);c[u>>2]=c[G>>2];c[u+4>>2]=c[G+4>>2];c[u+8>>2]=c[G+8>>2];c[u+12>>2]=c[G+12>>2];Wg(H,r,i);c[v>>2]=c[H>>2];c[v+4>>2]=c[H+4>>2];c[v+8>>2]=c[H+8>>2];c[v+12>>2]=c[H+12>>2];Wg(I,t,i);c[w>>2]=c[I>>2];c[w+4>>2]=c[I+4>>2];c[w+8>>2]=c[I+8>>2];c[w+12>>2]=c[I+12>>2];Wg(J,t,i);c[x>>2]=c[J>>2];c[x+4>>2]=c[J+4>>2];c[x+8>>2]=c[J+8>>2];c[x+12>>2]=c[J+12>>2];Wg(K,t,i);c[y>>2]=c[K>>2];c[y+4>>2]=c[K+4>>2];c[y+8>>2]=c[K+8>>2];c[y+12>>2]=c[K+12>>2];h[k>>3]=A;h[o>>3]=B;a=10;g=9}h[L+(g<<4)>>3]=A;h[L+(g<<4)+8>>3]=B;PK(j,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0,L,a,17296);i=i+z;b=b+1|0}l=N;return}function Tg(a,d,e,f,g,i,j,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0;x=l;l=l+1440|0;t=x+1392|0;v=x+1424|0;w=x+696|0;u=x;r=c[j>>2]&3;q=c[((r|0)==3?j:j+48|0)+40>>2]|0;r=c[((r|0)==2?j:j+-48|0)+40>>2]|0;m=c[q+16>>2]|0;o=c[m+232>>2]|0;p=c[a+16>>2]|0;if((o|0)<(b[p+238>>1]|0)){y=c[p+196>>2]|0;p=o+1|0;n=+h[m+24>>3]-+h[y+(o<<6)+32>>3]-+h[(c[(c[c[y+(p<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[y+(p<<6)+40>>3]}else n=+(c[p+252>>2]|0);z=+(i+1|0);s=+(c[d+12>>2]|0)/z;n=n/z;Vg(a,d,e,q,j,w,1);Vg(a,d,e,r,j,u,0);r=w+52|0;j=u+52|0;a=(k|0)==0;d=e+80|0;m=0;while(1){if((m|0)>=(i|0))break;q=c[f+(m+g<<2)>>2]|0;p=c[r>>2]|0;o=p+-1|0;D=+h[w+56+(o<<5)>>3];B=+h[w+56+(o<<5)+8>>3];C=+h[w+56+(o<<5)+16>>3];h[18830]=D;h[18833]=B;m=m+1|0;z=+(m|0);A=s*z;h[18832]=C+A;z=B-n*z;h[18831]=z;h[18834]=D;h[18837]=z;o=(c[j>>2]|0)+-1|0;D=+h[u+56+(o<<5)+16>>3];h[18836]=D;h[18835]=z-n;B=+h[u+56+(o<<5)>>3];C=+h[u+56+(o<<5)+8>>3];h[18840]=D;h[18841]=C;h[18838]=B-A;h[18839]=z;o=0;while(1){if((o|0)>=(p|0)){o=0;break}p=w+56+(o<<5)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];c[t+12>>2]=c[p+12>>2];c[t+16>>2]=c[p+16>>2];c[t+20>>2]=c[p+20>>2];c[t+24>>2]=c[p+24>>2];c[t+28>>2]=c[p+28>>2];RK(e,t);o=o+1|0;p=c[r>>2]|0}while(1){if((o|0)==3)break;y=150640+(o<<5)|0;c[t>>2]=c[y>>2];c[t+4>>2]=c[y+4>>2];c[t+8>>2]=c[y+8>>2];c[t+12>>2]=c[y+12>>2];c[t+16>>2]=c[y+16>>2];c[t+20>>2]=c[y+20>>2];c[t+24>>2]=c[y+24>>2];c[t+28>>2]=c[y+28>>2];RK(e,t);o=o+1|0}p=c[j>>2]|0;while(1){o=p+-1|0;if((p|0)<=0)break;p=u+56+(o<<5)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];c[t+12>>2]=c[p+12>>2];c[t+16>>2]=c[p+16>>2];c[t+20>>2]=c[p+20>>2];c[t+24>>2]=c[p+24>>2];c[t+28>>2]=c[p+28>>2];RK(e,t);p=o}if(a)o=xJ(e,v)|0;else o=rJ(e,v)|0;p=c[v>>2]|0;if(!p)break;PK(q,c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2]|0,o,p,17296);c[d>>2]=0}l=x;return}function Ug(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+128|0;j=n+96|0;k=n+64|0;o=n+32|0;m=n;xg(o,a,b,e,0,f);c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[g+16>>2]=c[o+16>>2];c[g+20>>2]=c[o+20>>2];c[g+24>>2]=c[o+24>>2];c[g+28>>2]=c[o+28>>2];c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];c[k+16>>2]=c[o+16>>2];c[k+20>>2]=c[o+20>>2];c[k+24>>2]=c[o+24>>2];c[k+28>>2]=c[o+28>>2];c[g+48>>2]=4;if(!(i<<24>>24))VK(d,f,2,g,0);else SK(d,f,2,g,0);b=g+52|0;f=(c[b>>2]|0)+-1|0;o=k+24|0;h[o>>3]=+h[g+56+(f<<5)+24>>3];i=k+8|0;h[i>>3]=+h[g+56+(f<<5)+8>>3];e=c[e+16>>2]|0;p=+h[(c[(c[a+16>>2]|0)+196>>2]|0)+(c[e+232>>2]<<6)+24>>3]+ +h[e+24>>3];c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[j+28>>2]=c[k+28>>2];zg(m,j,4,p);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[k+16>>2]=c[m+16>>2];c[k+20>>2]=c[m+20>>2];c[k+24>>2]=c[m+24>>2];c[k+28>>2]=c[m+28>>2];if(+h[k>>3]<+h[k+16>>3]?+h[i>>3]<+h[o>>3]:0){o=c[b>>2]|0;c[b>>2]=o+1;o=g+56+(o<<5)|0;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];c[o+16>>2]=c[k+16>>2];c[o+20>>2]=c[k+20>>2];c[o+24>>2]=c[k+24>>2];c[o+28>>2]=c[k+28>>2]}l=n;return}function Vg(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+128|0;j=n+96|0;k=n+64|0;o=n+32|0;m=n;xg(o,a,b,e,0,f);c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[g+16>>2]=c[o+16>>2];c[g+20>>2]=c[o+20>>2];c[g+24>>2]=c[o+24>>2];c[g+28>>2]=c[o+28>>2];c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];c[k+16>>2]=c[o+16>>2];c[k+20>>2]=c[o+20>>2];c[k+24>>2]=c[o+24>>2];c[k+28>>2]=c[o+28>>2];c[g+48>>2]=1;if(!(i<<24>>24))VK(d,f,2,g,0);else SK(d,f,2,g,0);b=g+52|0;f=(c[b>>2]|0)+-1|0;o=k+24|0;h[o>>3]=+h[g+56+(f<<5)+24>>3];i=k+8|0;h[i>>3]=+h[g+56+(f<<5)+8>>3];e=c[e+16>>2]|0;p=+h[e+24>>3]-+h[(c[(c[a+16>>2]|0)+196>>2]|0)+(c[e+232>>2]<<6)+24>>3];c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[j+28>>2]=c[k+28>>2];zg(m,j,1,p);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[k+16>>2]=c[m+16>>2];c[k+20>>2]=c[m+20>>2];c[k+24>>2]=c[m+24>>2];c[k+28>>2]=c[m+28>>2];if(+h[k>>3]<+h[k+16>>3]?+h[i>>3]<+h[o>>3]:0){o=c[b>>2]|0;c[b>>2]=o+1;o=g+56+(o<<5)|0;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];c[o+16>>2]=c[k+16>>2];c[o+20>>2]=c[k+20>>2];c[o+24>>2]=c[k+24>>2];c[o+28>>2]=c[k+28>>2]}l=n;return}function Wg(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Xg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0.0,B=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0.0;Y=l;l=l+288|0;R=Y+256|0;Q=Y+240|0;P=Y+224|0;V=Y+280|0;W=Y+272|0;X=Y+32|0;S=Y+16|0;T=Y;m=Y+208|0;n=Y+192|0;o=c[e+(f<<2)>>2]|0;U=tH(g<<2)|0;k=0;while(1){if((k|0)>=(g|0))break;c[U+(k<<2)>>2]=c[e+(k+f<<2)>>2];k=k+1|0}Z0(U,g,4,59);e=b+16|0;f=(c[e>>2]|0)+16|0;o=o+16|0;C=(c[o>>2]|0)+16|0;c[Q>>2]=c[f>>2];c[Q+4>>2]=c[f+4>>2];c[Q+8>>2]=c[f+8>>2];c[Q+12>>2]=c[f+12>>2];c[R>>2]=c[C>>2];c[R+4>>2]=c[C+4>>2];c[R+8>>2]=c[C+8>>2];c[R+12>>2]=c[C+12>>2];Og(m,Q,R);c[S>>2]=c[m>>2];c[S+4>>2]=c[m+4>>2];c[S+8>>2]=c[m+8>>2];c[S+12>>2]=c[m+12>>2];C=d+16|0;f=(c[C>>2]|0)+16|0;o=(c[o>>2]|0)+56|0;c[Q>>2]=c[f>>2];c[Q+4>>2]=c[f+4>>2];c[Q+8>>2]=c[f+8>>2];c[Q+12>>2]=c[f+12>>2];c[R>>2]=c[o>>2];c[R+4>>2]=c[o+4>>2];c[R+8>>2]=c[o+8>>2];c[R+12>>2]=c[o+12>>2];Og(n,Q,R);c[T>>2]=c[n>>2];c[T+4>>2]=c[n+4>>2];c[T+8>>2]=c[n+8>>2];c[T+12>>2]=c[n+12>>2];w=+h[(c[e>>2]|0)+96>>3]+ +h[S>>3];x=+h[T>>3]-+h[(c[C>>2]|0)+88>>3];u=x+w;v=u*.5;C=c[U>>2]|0;c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];o=X+16|0;c[o>>2]=c[S>>2];c[o+4>>2]=c[S+4>>2];c[o+8>>2]=c[S+8>>2];c[o+12>>2]=c[S+12>>2];e=X+32|0;c[e>>2]=c[T>>2];c[e+4>>2]=c[T+4>>2];c[e+8>>2]=c[T+8>>2];c[e+12>>2]=c[T+12>>2];f=X+48|0;c[f>>2]=c[T>>2];c[f+4>>2]=c[T+4>>2];c[f+8>>2]=c[T+8>>2];c[f+12>>2]=c[T+12>>2];PK(C,c[((c[C>>2]&3|0)==2?C:C+-48|0)+40>>2]|0,X,4,17296);C=c[(c[C+16>>2]|0)+96>>2]|0;h[C+56>>3]=v;z=S+8|0;r=+h[z>>3];s=+h[C+32>>3];h[C+64>>3]=(s+6.0)*.5+r;a[C+81>>0]=1;r=r+3.0;B=+h[C+24>>3];A=(u-B)*.5;B=(B+u)*.5;C=X+24|0;D=X+40|0;E=X+56|0;F=X+64|0;G=T+8|0;H=X+72|0;I=X+80|0;J=X+88|0;K=X+96|0;L=X+104|0;M=X+112|0;N=X+120|0;O=V+4|0;n=(i|0)==6&1;q=0.0;p=0.0;s=s+r;m=1;while(1){if((m|0)>=(j|0)){y=6;break}d=c[U+(m<<2)>>2]|0;if(!(m&1)){c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=A;h[C>>3]=+h[z>>3];h[e>>3]=A;h[D>>3]=s;h[f>>3]=B;h[E>>3]=s;h[F>>3]=B;t=+h[G>>3];h[H>>3]=t;Z=+h[T>>3];h[I>>3]=Z;h[J>>3]=t;h[K>>3]=Z;Z=s+6.0;h[L>>3]=Z;h[M>>3]=+h[S>>3];h[N>>3]=Z;s=+h[(c[(c[d+16>>2]|0)+96>>2]|0)+32>>3];t=Z+s*.5;s=Z+s}else{k=d+16|0;b=c[(c[k>>2]|0)+96>>2]|0;if((m|0)==1){p=+h[b+24>>3];q=(p+u)*.5;p=(u-p)*.5}r=r+-6.0-+h[b+32>>3];c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=+h[S>>3];t=r+-6.0;h[C>>3]=t;h[e>>3]=+h[T>>3];h[D>>3]=t;c[f>>2]=c[T>>2];c[f+4>>2]=c[T+4>>2];c[f+8>>2]=c[T+8>>2];c[f+12>>2]=c[T+12>>2];h[F>>3]=q;h[H>>3]=+h[G>>3];h[I>>3]=q;h[J>>3]=r;h[K>>3]=p;h[L>>3]=r;h[M>>3]=p;h[N>>3]=+h[z>>3];t=+h[(c[(c[k>>2]|0)+96>>2]|0)+32>>3]*.5+r}c[O>>2]=8;c[V>>2]=X;c[P>>2]=c[S>>2];c[P+4>>2]=c[S+4>>2];c[P+8>>2]=c[S+8>>2];c[P+12>>2]=c[S+12>>2];c[Q>>2]=c[T>>2];c[Q+4>>2]=c[T+4>>2];c[Q+8>>2]=c[T+8>>2];c[Q+12>>2]=c[T+12>>2];c[R>>2]=c[V>>2];c[R+4>>2]=c[V+4>>2];k=nJ(P,Q,R,W,n)|0;b=c[W>>2]|0;if(!b)break;i=c[(c[d+16>>2]|0)+96>>2]|0;h[i+56>>3]=v;h[i+64>>3]=t;a[i+81>>0]=1;PK(d,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,k,b,17296);m=m+1|0}a:do if((y|0)==6){v=(x+w*2.0)*.3333333333333333;u=(x*2.0+w)*.3333333333333333;while(1){if((m|0)>=(g|0))break;d=c[U+(m<<2)>>2]|0;if(!(m&1)){c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=A;h[C>>3]=+h[z>>3];h[e>>3]=A;h[D>>3]=s;h[f>>3]=B;h[E>>3]=s;h[F>>3]=B;t=+h[G>>3];h[H>>3]=t;Z=+h[T>>3];h[I>>3]=Z;h[J>>3]=t;h[K>>3]=Z;Z=s+6.0;h[L>>3]=Z;h[M>>3]=+h[S>>3];s=Z;t=p;p=Z}else{y=(m|0)==1;t=y?v:p;q=y?u:q;p=r+-6.0;c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=+h[S>>3];r=r+-12.0;h[C>>3]=r;h[e>>3]=+h[T>>3];h[D>>3]=r;c[f>>2]=c[T>>2];c[f+4>>2]=c[T+4>>2];c[f+8>>2]=c[T+8>>2];c[f+12>>2]=c[T+12>>2];h[F>>3]=q;h[H>>3]=+h[G>>3];h[I>>3]=q;h[J>>3]=p;h[K>>3]=t;h[L>>3]=p;h[M>>3]=t;r=p;p=+h[z>>3]}h[N>>3]=p;c[O>>2]=8;c[V>>2]=X;c[P>>2]=c[S>>2];c[P+4>>2]=c[S+4>>2];c[P+8>>2]=c[S+8>>2];c[P+12>>2]=c[S+12>>2];c[Q>>2]=c[T>>2];c[Q+4>>2]=c[T+4>>2];c[Q+8>>2]=c[T+8>>2];c[Q+12>>2]=c[T+12>>2];c[R>>2]=c[V>>2];c[R+4>>2]=c[V+4>>2];k=nJ(P,Q,R,W,n)|0;b=c[W>>2]|0;if(!b)break a;PK(d,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,k,b,17296);m=m+1|0;p=t}C_(U)}while(0);l=Y;return}function Yg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0;g=l;l=l+16|0;f=g;j=(dy(b)|0)==0;j=j?18488:18480;a[f>>0]=a[j>>0]|0;a[f+1>>0]=a[j+1>>0]|0;a[f+2>>0]=a[j+2>>0]|0;a[f+3>>0]=a[j+3>>0]|0;f=Wx(85398,f,0)|0;zz(f,134401,280,1)|0;mx(f,0,87076,191979)|0;j=tH(96)|0;e=c[f+16>>2]|0;c[e+8>>2]=j;i=c[b+16>>2]|0;k=c[i+8>>2]|0;h[j>>3]=+h[k>>3];h[j+24>>3]=+h[k+24>>3];a[e+115>>0]=a[i+115>>0]|0;c[e+116>>2]=c[i+116>>2]&1^1;c[e+248>>2]=c[i+248>>2];c[e+252>>2]=c[i+252>>2];e=rx(ez(b)|0,1,0)|0;while(1){if(!e)break;mx(f,1,c[e+8>>2]|0,c[e+12>>2]|0)|0;e=rx(ez(b)|0,1,e)|0}e=rx(ez(b)|0,2,0)|0;while(1){if(!e)break;mx(f,2,c[e+8>>2]|0,c[e+12>>2]|0)|0;e=rx(ez(b)|0,2,e)|0}if(!(mx(f,2,108382,0)|0))mx(f,2,108382,191979)|0;if(!(mx(f,2,108373,0)|0))mx(f,2,108373,191979)|0;bh(f,d);l=g;return f|0}function Zg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;a=$y(a,qy(b)|0,1)|0;zz(a,134365,304,1)|0;Ax(b,a)|0;if((GJ(b)|0)==2){f=b+16|0;b=uH((V_(c[c[(c[f>>2]|0)+104>>2]>>2]|0)|0)+3|0)|0;c[d>>2]=c[c[(c[f>>2]|0)+104>>2]>>2];X0(b,85393,d)|0;yx(a,105198,b)|0}l=e;return a|0}function _g(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=Qx(a,b,c,0,1)|0;zz(c,134378,176,1)|0;Ax(d,c)|0;return c|0}function $g(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0;i=l;l=l+32|0;g=i+16|0;f=i;if(e|0){j=+h[b>>3];e=b+8|0;h[b>>3]=+h[e>>3];h[e>>3]=-j};c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];Og(a,f,g);l=i;return}function ah(a,b){a=a|0;b=b|0;c[46419]=c[b>>2];c[46423]=c[b+4>>2];c[46424]=c[b+8>>2];c[46404]=c[b+12>>2];c[46405]=c[b+16>>2];c[46411]=c[b+20>>2];c[46410]=c[b+24>>2];c[46409]=c[b+28>>2];c[46435]=c[b+32>>2];c[46427]=c[b+36>>2];c[46412]=c[b+40>>2];c[46422]=c[b+44>>2];c[46431]=c[b+48>>2];c[46430]=c[b+52>>2];c[46429]=c[b+56>>2];c[46434]=c[b+60>>2];c[46428]=c[b+64>>2];c[46413]=c[b+68>>2];c[46375]=c[b+72>>2];c[46376]=c[b+76>>2];c[46377]=c[b+80>>2];c[46387]=c[b+84>>2];c[46380]=c[b+88>>2];c[46381]=c[b+92>>2];c[46382]=c[b+96>>2];c[46384]=c[b+100>>2];c[46385]=c[b+104>>2];c[46388]=c[b+108>>2];c[46391]=c[b+112>>2];c[46389]=c[b+116>>2];c[46390]=c[b+120>>2];c[46393]=c[b+124>>2];c[46392]=c[b+128>>2];c[46394]=c[b+132>>2];c[46395]=c[b+136>>2];c[46386]=c[b+140>>2];c[46398]=c[b+144>>2];c[46370]=c[b+148>>2];c[46367]=c[b+152>>2];C_(b);Sf(a);_x(a)|0;return}function bh(a,b){a=a|0;b=b|0;c[b>>2]=c[46419];c[b+4>>2]=c[46423];c[b+8>>2]=c[46424];c[b+12>>2]=c[46404];c[b+16>>2]=c[46405];c[b+20>>2]=c[46411];c[b+24>>2]=c[46410];c[b+28>>2]=c[46409];c[b+32>>2]=c[46435];c[b+36>>2]=c[46427];c[b+40>>2]=c[46412];c[b+44>>2]=c[46422];c[b+48>>2]=c[46431];c[b+52>>2]=c[46430];c[b+56>>2]=c[46429];c[b+60>>2]=c[46434];c[b+64>>2]=c[46428];c[b+68>>2]=c[46413];c[b+72>>2]=c[46375];c[b+76>>2]=c[46376];c[b+80>>2]=c[46377];c[b+84>>2]=c[46387];c[b+88>>2]=c[46380];c[b+92>>2]=c[46381];c[b+96>>2]=c[46382];c[b+100>>2]=c[46384];c[b+104>>2]=c[46385];c[b+108>>2]=c[46388];c[b+112>>2]=c[46391];c[b+116>>2]=c[46389];c[b+120>>2]=c[46390];c[b+124>>2]=c[46393];c[b+128>>2]=c[46392];c[b+132>>2]=c[46394];c[b+136>>2]=c[46395];c[b+140>>2]=c[46386];c[b+144>>2]=c[46398];c[b+152>>2]=c[46367];c[b+148>>2]=c[46370];c[46419]=0;c[46423]=mx(a,2,87317,0)|0;c[46424]=mx(a,2,87326,0)|0;b=mx(a,2,98515,0)|0;c[46404]=b;if(!b)c[46404]=mx(a,2,98515,191979)|0;c[46405]=0;c[46411]=0;c[46410]=mx(a,2,98411,0)|0;c[46409]=mx(a,2,98402,0)|0;c[46435]=mx(a,2,98691,0)|0;c[46427]=0;c[46412]=mx(a,2,105198,0)|0;c[46422]=mx(a,2,85403,0)|0;c[46431]=0;c[46430]=mx(a,2,98591,0)|0;c[46429]=mx(a,2,98577,0)|0;c[46434]=mx(a,2,98682,0)|0;c[46428]=0;c[46413]=0;c[46375]=mx(a,1,137966,0)|0;c[46376]=mx(a,1,138034,0)|0;c[46377]=mx(a,1,105204,0)|0;c[46387]=0;c[46380]=mx(a,1,98402,0)|0;c[46381]=mx(a,1,98411,0)|0;c[46382]=0;c[46384]=mx(a,1,105198,0)|0;c[46385]=0;c[46388]=0;c[46391]=mx(a,1,98383,0)|0;c[46389]=mx(a,1,137994,0)|0;c[46390]=mx(a,1,98446,0)|0;c[46393]=mx(a,1,98458,0)|0;c[46392]=mx(a,1,98322,0)|0;c[46394]=mx(a,1,98463,0)|0;c[46395]=mx(a,1,85415,0)|0;c[46386]=0;c[46398]=0;c[46370]=mx(a,0,98383,0)|0;return}function ch(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0;d=c[(c[(c[a>>2]|0)+16>>2]|0)+96>>2]|0;a=c[(c[(c[b>>2]|0)+16>>2]|0)+96>>2]|0;b=(a|0)!=0;if(d)if(b?(f=+h[d+24>>3],i=+h[d+32>>3],e=+h[a+24>>3],g=+h[a+32>>3],!(f>e)):0)if(!(fg)a=-1;else a=i>2]|0)+116>>2]|0;if(!b)break;else a=b}b=c[a>>2]&3;d=c[(c[((b|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0;e=c[d+232>>2]|0;a=c[(c[((b|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0;b=c[a+232>>2]|0;if((e|0)<=(b|0))if((e|0)<(b|0))a=1;else a=(c[d+236>>2]|0)<(c[a+236>>2]|0)&1;else a=0;return a|0}function eh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+8|0;f=d;h=(c[a+16>>2]|0)+180|0;g=(c[b+16>>2]|0)+172|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];b=fh(a,f,b,e)|0;l=d;return b|0}function fh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[b+4>>2]|0;a:do if((f|0)>0?(g=c[e+4>>2]|0,(g|0)>0):0)if((f|0)<(g|0)){f=c[b>>2]|0;e=0;while(1){b=c[f+(e<<2)>>2]|0;if(!b){b=0;break a}if((c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)==(d|0))break;else e=e+1|0}}else{f=c[e>>2]|0;e=0;while(1){b=c[f+(e<<2)>>2]|0;if(!b){b=0;break a}if((c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)==(a|0))break;else e=e+1|0}}else b=0;while(0);return b|0}function gh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+8|0;f=d;h=(c[a+16>>2]|0)+188|0;g=(c[b+16>>2]|0)+196|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];b=fh(a,f,b,e)|0;l=d;return b|0}function hh(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+48|0;d=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[d+180>>2]|0;if(!b)b=uH((c[d+184>>2]<<2)+8|0)|0;else b=wH(b,(c[d+184>>2]<<2)+8|0)|0;c[(c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0)+180>>2]=b;f=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;d=c[f+180>>2]|0;f=f+184|0;b=c[f>>2]|0;c[f>>2]=b+1;c[d+(b<<2)>>2]=a;e=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;c[(c[e+180>>2]|0)+(c[e+184>>2]<<2)>>2]=0;e=a+-48|0;b=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;if(!d)b=uH((c[b+176>>2]<<2)+8|0)|0;else b=wH(d,(c[b+176>>2]<<2)+8|0)|0;c[(c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0)+172>>2]=b;b=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;b=b+176|0;f=c[b>>2]|0;c[b>>2]=f+1;c[d+(f<<2)>>2]=a;f=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;c[(c[f+172>>2]|0)+(c[f+176>>2]<<2)>>2]=0;return a|0}function ih(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=a+4|0;f=c[e>>2]|0;d=0;while(1){if((d|0)>=(f|0))break;g=c[a>>2]|0;h=g+(d<<2)|0;if((c[h>>2]|0)==(b|0)){i=4;break}else d=d+1|0}if((i|0)==4){i=f+-1|0;c[e>>2]=i;c[h>>2]=c[g+(i<<2)>>2];c[(c[a>>2]|0)+(i<<2)>>2]=0}return}function jh(a){a=a|0;if(!a)qa(85456,85466,117,85475);else{ih((c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+180|0,a);ih((c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+172|0,a);return}}function kh(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+48|0;d=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[d+204>>2]|0;if(!b)b=uH((c[d+208>>2]<<2)+8|0)|0;else b=wH(b,(c[d+208>>2]<<2)+8|0)|0;c[(c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0)+204>>2]=b;f=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[f+204>>2]|0;f=f+208|0;d=c[f>>2]|0;c[f>>2]=d+1;c[b+(d<<2)>>2]=a;e=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;c[(c[e+204>>2]|0)+(c[e+208>>2]<<2)>>2]=0;return}function lh(a){a=a|0;mh(a,(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+204|0);return}function mh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=b+4|0;e=c[h>>2]|0;f=c[b>>2]|0;d=0;while(1){if((d|0)>=(e|0)){g=4;break}if((c[f+(d<<2)>>2]|0)==(a|0))break;else d=d+1|0}if((g|0)==4){if(!f)d=uH((e<<2)+8|0)|0;else d=wH(f,(e<<2)+8|0)|0;c[b>>2]=d;f=c[h>>2]|0;g=f+1|0;c[h>>2]=g;c[d+(f<<2)>>2]=a;c[(c[b>>2]|0)+(g<<2)>>2]=0}return}function nh(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=tH(96)|0;g=n+48|0;c[g>>2]=c[g>>2]|3;c[n>>2]=c[n>>2]&-4|2;h=tH(176)|0;m=n+16|0;c[m>>2]=h;c[((c[n>>2]&3|0)==3?n:g)+40>>2]=d;j=n+-48|0;c[((c[n>>2]&3|0)==2?n:j)+40>>2]=e;a[h+112>>0]=1;if(!f){c[h+156>>2]=1;b[h+154>>1]=1;b[h+168>>1]=1;b[h+170>>1]=1}else{c[n>>2]=c[n>>2]&15|c[f>>2]&-16;c[g>>2]=c[g>>2]&15|c[f>>2]&-16;l=f+16|0;i=c[l>>2]|0;b[h+168>>1]=b[i+168>>1]|0;b[h+154>>1]=b[i+154>>1]|0;c[h+156>>2]=c[i+156>>2];b[h+170>>1]=b[i+170>>1]|0;d=c[((c[n>>2]&3|0)==3?n:g)+40>>2]|0;e=c[f>>2]&3;k=f+48|0;if((d|0)!=(c[((e|0)==3?f:k)+40>>2]|0)){g=f+-48|0;if((d|0)==(c[((e|0)==2?f:g)+40>>2]|0)){h=h+16|0;d=i+56|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0))}}else{h=h+16|0;d=i+16|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0));g=f+-48|0}d=c[((c[n>>2]&3|0)==2?n:j)+40>>2]|0;e=c[f>>2]&3;if((d|0)!=(c[((e|0)==2?f:g)+40>>2]|0)){if((d|0)==(c[((e|0)==3?f:k)+40>>2]|0)){h=(c[m>>2]|0)+56|0;d=(c[l>>2]|0)+16|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0))}}else{h=(c[m>>2]|0)+56|0;d=(c[l>>2]|0)+56|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0))}d=(c[l>>2]|0)+172|0;if(!(c[d>>2]|0))c[d>>2]=n;c[(c[m>>2]|0)+116>>2]=f}return n|0}function oh(a,b,c){a=a|0;b=b|0;c=c|0;return hh(nh(a,b,c)|0)|0}function ph(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;a=(c[a+16>>2]|0)+192|0;f=c[a>>2]|0;d=c[b+16>>2]|0;c[d+164>>2]=f;e=f;if(f|0)c[(c[e+16>>2]|0)+168>>2]=b;c[a>>2]=b;c[d+168>>2]=0;if((e|0)==(b|0))qa(85492,85466,215,85508);else return}function qh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if((a|0)==(b|0))qa(85518,85466,220,85525);f=c[b+16>>2]|0;d=f+164|0;if(c[d>>2]|0)qa(85538,85466,221,85525);e=(c[a+16>>2]|0)+164|0;c[d>>2]=c[e>>2];d=c[e>>2]|0;if(d|0)c[(c[d+16>>2]|0)+168>>2]=b;c[f+168>>2]=a;c[e>>2]=b;return}function rh(a,b){a=a|0;b=b|0;var d=0,e=0;if(!(sh(a,b)|0))qa(85557,85466,231,85578);b=c[b+16>>2]|0;d=c[b+164>>2]|0;e=d;b=b+168|0;if(d|0)c[(c[d+16>>2]|0)+168>>2]=c[b>>2];b=c[b>>2]|0;if(!b)c[(c[a+16>>2]|0)+192>>2]=e;else c[(c[b+16>>2]|0)+164>>2]=e;return}function sh(a,b){a=a|0;b=b|0;a=(c[a+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if((a|0)==0|(a|0)==(b|0))break;a=(c[a+16>>2]|0)+164|0}return a|0}function th(b){b=b|0;var d=0,e=0,f=0,g=0;d=tH(64)|0;c[d>>2]=c[d>>2]&-4|1;e=d+16|0;c[e>>2]=tH(304)|0;c[d+24>>2]=ez(b)|0;g=c[e>>2]|0;a[g+156>>0]=1;h[g+96>>3]=1.0;h[g+88>>3]=1.0;h[g+80>>3]=1.0;c[g+216>>2]=1;c[g+176>>2]=0;g=tH(20)|0;f=c[e>>2]|0;c[f+172>>2]=g;c[f+184>>2]=0;f=tH(20)|0;c[(c[e>>2]|0)+180>>2]=f;ph(b,d);b=(c[b+16>>2]|0)+232|0;c[b>>2]=(c[b>>2]|0)+1;return d|0}function uh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=d+48|0;e=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;f=c[e+188>>2]|0;if(!f)e=uH((c[e+192>>2]<<2)+8|0)|0;else e=wH(f,(c[e+192>>2]<<2)+8|0)|0;c[(c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0)+188>>2]=e;h=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;f=c[h+188>>2]|0;h=h+192|0;e=c[h>>2]|0;c[h>>2]=e+1;c[f+(e<<2)>>2]=d;g=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;c[(c[g+188>>2]|0)+(c[g+192>>2]<<2)>>2]=0;g=d+-48|0;e=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;f=c[e+196>>2]|0;if(!f)e=uH((c[e+200>>2]<<2)+8|0)|0;else e=wH(f,(c[e+200>>2]<<2)+8|0)|0;c[(c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0)+196>>2]=e;e=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;f=c[e+196>>2]|0;e=e+200|0;h=c[e>>2]|0;c[e>>2]=h+1;c[f+(h<<2)>>2]=d;h=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;c[(c[h+196>>2]|0)+(c[h+200>>2]<<2)>>2]=0;a[(c[b+16>>2]|0)+240>>0]=1;a[(c[(hg(b)|0)+16>>2]|0)+240>>0]=1;return}function vh(a){a=a|0;var b=0,d=0;if(!a)qa(85456,85466,269,85595);b=c[(c[a+16>>2]|0)+116>>2]|0;if(b|0?(d=(c[b+16>>2]|0)+172|0,(c[d>>2]|0)==(a|0)):0)c[d>>2]=0;ih((c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+188|0,a);ih((c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+196|0,a);return}function wh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;d=(c[a+16>>2]|0)+172|0;e=c[d>>2]|0;do if((e|0)!=(b|0))if(!e){c[d>>2]=b;xh(a,b);break}else qa(87498,85466,340,85633);else Ow(0,85612,f)|0;while(0);l=f;return}function xh(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0;f=(c[d+16>>2]|0)+170|0;i=c[a+16>>2]|0;a=b[i+170>>1]|0;if((e[f>>1]|0)<(a&65535))b[f>>1]=a;g=i+168|0;h=i+154|0;f=i+156|0;a=d;while(1){if(!a)break;d=c[a+16>>2]|0;i=d+168|0;b[i>>1]=(e[i>>1]|0)+(e[g>>1]|0);i=d+154|0;b[i>>1]=(e[i>>1]|0)+(e[h>>1]|0);i=d+156|0;c[i>>2]=(c[i>>2]|0)+(c[f>>2]|0);a=c[d+172>>2]|0}return}function yh(d){d=d|0;var e=0,f=0,g=0,h=0;f=d+16|0;e=c[(c[f>>2]|0)+172>>2]|0;a:while(1){if(!e)break;zh(e,d);h=c[e+16>>2]|0;g=c[h+172>>2]|0;if(!(b[h+168>>1]|0))Ah(e);while(1){if((a[(c[e+16>>2]|0)+112>>0]|0)!=1){e=g;continue a}e=c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){e=g;continue a}if((c[e+184>>2]|0)!=1){e=g;continue a}e=c[c[e+180>>2]>>2]|0;zh(e,d)}}c[(c[f>>2]|0)+172>>2]=0;return}function zh(a,d){a=a|0;d=d|0;var f=0;f=c[d+16>>2]|0;d=c[a+16>>2]|0;a=d+168|0;b[a>>1]=(e[a>>1]|0)-(e[f+168>>1]|0);a=d+154|0;b[a>>1]=(e[a>>1]|0)-(e[f+154>>1]|0);d=d+156|0;c[d>>2]=(c[d>>2]|0)-(c[f+156>>2]|0);return}function Ah(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(!a)qa(85456,85466,128,85646);g=a+48|0;d=0;while(1){b=c[a>>2]|0;e=(c[(c[((b&3|0)==3?a:g)+40>>2]|0)+16>>2]|0)+180|0;f=c[(c[e>>2]|0)+(d<<2)>>2]|0;if(!f)break;if((f|0)==(a|0))ih(e,a);d=d+1|0}g=a+-48|0;f=0;while(1){d=(c[(c[((b&3|0)==2?a:g)+40>>2]|0)+16>>2]|0)+172|0;e=c[(c[d>>2]|0)+(f<<2)>>2]|0;if(!e)break;if((e|0)==(a|0)){ih(d,a);b=c[a>>2]|0}f=f+1|0}return}function Bh(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;p=l;l=l+1040|0;n=p+1032|0;o=p;m=p+8|0;k=d+16|0;d=c[k>>2]|0;j=b[d+236>>1]|0;while(1){if((j|0)>(b[d+238>>1]|0))break;i=c[d+196>>2]|0;h=i+(j<<6)|0;i=i+(j<<6)+4|0;g=0;d=0;while(1){if((g|0)>=(c[h>>2]|0))break;e=c[(c[i>>2]|0)+(g<<2)>>2]|0;f=e+16|0;if(c[(c[f>>2]|0)+112>>2]|0){if(!d){a[n>>0]=a[18484]|0;a[n+1>>0]=a[18485]|0;a[n+2>>0]=a[18486]|0;a[n+3>>0]=a[18487]|0;d=Wx(85668,n,0)|0}c[o>>2]=g;X0(m,134313,o)|0;t=$y(d,m,1)|0;zz(t,91080,24,1)|0;q=c[(c[f>>2]|0)+180>>2]|0;r=c[q>>2]|0;r=c[(c[(c[((c[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;q=c[q+4>>2]|0;q=c[(c[(c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;s=(r|0)>(q|0);f=c[t+16>>2]|0;c[f+12>>2]=s?q:r;c[f+16>>2]=s?r:q;c[f+20>>2]=e}g=g+1|0}if(d|0){if(($x(d)|0)>1)Ch(d,h);_x(d)|0}j=j+1|0;d=c[k>>2]|0}l=p;return}function Ch(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=0;h=Ry(a)|0;a:while(1){if(!h)break;i=Sy(a,h)|0;j=h+16|0;g=i;while(1){if(!g){h=i;continue a}f=c[g+16>>2]|0;e=c[j>>2]|0;if((c[f+16>>2]|0)>(c[e+12>>2]|0)){if((c[e+16>>2]|0)<=(c[f+12>>2]|0))Qx(a,h,g,0,1)|0}else{Qx(a,g,h,0,1)|0;d=1}g=Sy(a,g)|0}}do if(d|0){h=uA(a,85671,1)|0;j=tH(($x(a)|0)<<2)|0;i=tH(($x(a)|0)<<2)|0;f=b+4|0;e=Ry(a)|0;b:while(1){if(!e){d=23;break}if((c[(c[e+16>>2]|0)+8>>2]|0)==0?by(a,e,1,1)|0:0){c:do if(Dh(a,e,h,i)|0){g=$x(h)|0;if((Eh(a,h,j)|0)!=(g|0)){d=17;break b}Z0(i,g,4,60);d=0;while(1){if((d|0)>=(g|0))break c;b=i+(d<<2)|0;k=c[j+(d<<2)>>2]|0;c[(c[k+16>>2]|0)+236>>2]=c[b>>2];c[(c[f>>2]|0)+(c[b>>2]<<2)>>2]=k;d=d+1|0}}while(0);Gh(h)}e=Sy(a,e)|0}if((d|0)==17)qa(85676,85686,265,85697);else if((d|0)==23){C_(j);break}}while(0);return}function Dh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=c[b+16>>2]|0;c[h+8>>2]=1;h=c[(c[(c[h+20>>2]|0)+16>>2]|0)+236>>2]|0;c[e+(($x(d)|0)<<2)>>2]=h;Wy(d,b,1)|0;h=Dx(a,b)|0;f=0;while(1){if(!h)break;j=c[h>>2]&3;g=c[((j|0)==2?h:h+-48|0)+40>>2]|0;i=c[g+16>>2]|0;f=f+((c[(c[(c[i+20>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[(c[(c[((j|0)==3?h:h+48|0)+40>>2]|0)+16>>2]|0)+20>>2]|0)+16>>2]|0)+236>>2]|0)&1)|0;if(!(c[i+8>>2]|0))f=(Dh(a,g,d,e)|0)+f|0;h=Fx(a,h)|0}h=Gx(a,b)|0;while(1){if(!h)break;i=c[h>>2]&3;g=c[((i|0)==3?h:h+48|0)+40>>2]|0;j=c[g+16>>2]|0;f=f+((c[(c[(c[(c[(c[((i|0)==2?h:h+-48|0)+40>>2]|0)+16>>2]|0)+20>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[j+20>>2]|0)+16>>2]|0)+236>>2]|0)&1)|0;if(!(c[j+8>>2]|0))f=(Dh(a,g,d,e)|0)+f|0;h=Hx(a,h)|0}return f|0}function Eh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=0;while(1){e=Hh(a,b)|0;if(!e)break;c[d+(f<<2)>>2]=c[(c[e+16>>2]|0)+20>>2];bz(b,e)|0;e=Dx(a,e)|0;while(1){if(!e)break;g=Fx(a,e)|0;Tx(a,e)|0;e=g}f=f+1|0}return f|0}function Fh(a,b){a=a|0;b=b|0;return (c[a>>2]|0)-(c[b>>2]|0)|0}function Gh(a){a=a|0;var b=0,c=0;b=Ry(a)|0;while(1){if(!b)break;c=Sy(a,b)|0;bz(a,b)|0;b=c}return}function Hh(a,b){a=a|0;b=b|0;var c=0;c=Ry(b)|0;while(1){if(!c){c=0;break}if(!(by(a,c,1,0)|0))break;c=Sy(b,c)|0}return c|0}function Ih(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;Jh(b);i=b+16|0;f=0;e=0;while(1){if((f|0)>=(c[(c[i>>2]|0)+220>>2]|0))break;Kh(b,f);f=f+1|0;e=(Lh(b,0,d)|0)+e|0}Mh(b);h=1;while(1){f=c[i>>2]|0;g=c[f+180>>2]|0;if((h|0)>(g|0))break;g=(Nh(c[(c[f+184>>2]|0)+(h<<2)>>2]|0,d)|0)+e|0;h=h+1|0;e=g}do if((g|0)>0){f=wx(b,85711)|0;if(f|0?(PL(f)|0)<<24>>24==0:0)break;kl(b);a[190689]=1;e=Lh(b,2,d)|0}while(0);Oh(b,e);return}function Jh(d){d=d|0;var e=0;if(0)DL();a[190689]=0;c[45971]=d;e=((ay(hg(d)|0)|0)<<2)+4|0;c[45970]=tH(e)|0;c[45969]=tH(e)|0;Ei(d);e=d+16|0;if(b[(c[e>>2]|0)+136>>1]&16)Fi(d);Tk(d);Hl(d,1);Gi(d);Vh(d);e=c[e>>2]|0;c[45972]=b[e+236>>1];c[45973]=b[e+238>>1];return}function Kh(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;a=c[a+16>>2]|0;c[a+192>>2]=c[(c[a+216>>2]|0)+(d<<2)>>2];a:do if((d|0)>0){d=b[a+238>>1]|0;e=a+196|0;a=b[a+236>>1]|0;while(1){if((a|0)>(d|0))break a;f=c[e>>2]|0;g=f+(a<<6)+4|0;f=f+(a<<6)|0;c[g>>2]=(c[g>>2]|0)+(c[f>>2]<<2);c[f>>2]=0;a=a+1|0}}while(0);return}function Lh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+32|0;n=o;if((b|0)>1){e=ji(0)|0;ki(a)}else e=2147483647;m=c[15686]|0;k=b;f=0;b=e;while(1){if((k|0)>=3)break;f=c[46365]|0;if((k|0)==2)if((e|0)>(b|0)){mi(a);e=b}else e=b;else{e=(f|0)<4?f:4;if((hg(a)|0)==(a|0))li(a,k);if(!k)Wh(a);Xh(a);g=ji(0)|0;if((g|0)>(b|0)){f=e;e=g}else{ki(a);f=e;e=g;b=g}}g=0;j=0;while(1){if((j|0)>=(f|0))break;if(0){c[n>>2]=k;c[n+4>>2]=j;c[n+8>>2]=g;c[n+12>>2]=e;c[n+16>>2]=b;f1(m,86104,n)|0}i=g+1|0;if((e|0)==0|(g|0)>=(c[45974]|0))break;ni(a,j);e=ji(0)|0;if((e|0)>(b|0))g=i;else{ki(a);g=+h[22830]*+(b|0)>+(e|0)?0:i;b=e}j=j+1|0}if(!e){e=0;break}else k=k+1|0}if((e|0)>(b|0))mi(a);if((b|0)>0){oi(a,0);e=ji(0)|0}else e=b;a:do if(d|0){b=0;while(1){if((b|0)>=(f|0))break a;pi(a);b=b+1|0}}while(0);l=o;return e|0}function Mh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;n=p;ii(a);k=a+16|0;d=c[k>>2]|0;m=c[15686]|0;j=b[d+236>>1]|0;while(1){if((j|0)>(b[d+238>>1]|0))break;e=c[d+196>>2]|0;f=c[e+(j<<6)+8>>2]|0;c[e+(j<<6)>>2]=f;g=c[e+(j<<6)+12>>2]|0;c[e+(j<<6)+4>>2]=g;i=0;while(1){if((i|0)>=(f|0))break;h=c[g+(i<<2)>>2]|0;if(!h){o=6;break}c[(c[h+16>>2]|0)+236>>2]=i;i=i+1|0}if((o|0)==6){o=0;if(0){e=qy(a)|0;d=c[(c[(c[k>>2]|0)+196>>2]|0)+(j<<6)>>2]|0;c[n>>2]=e;c[n+4>>2]=j;c[n+8>>2]=i;c[n+12>>2]=d;f1(m,86054,n)|0;d=c[k>>2]|0;e=c[d+196>>2]|0}c[e+(j<<6)>>2]=i}j=j+1|0}l=p;return}function Nh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;el(a);Vh(a);Wh(a);Xh(a);f=a+16|0;d=Lh(a,2,b)|0;e=1;while(1){g=c[f>>2]|0;if((e|0)>(c[g+180>>2]|0))break;d=(Nh(c[(c[g+184>>2]|0)+(e<<2)>>2]|0,b)|0)+d|0;e=e+1|0}Yh(a);return d|0}function Oh(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+16|0;p=q;f=c[45969]|0;if(f|0){C_(f);c[45969]=0}f=c[45970]|0;if(f|0){C_(f);c[45970]=0}o=d+16|0;f=1;while(1){g=c[o>>2]|0;if((f|0)>(c[g+180>>2]|0))break;Ph(c[(c[g+184>>2]|0)+(f<<2)>>2]|0);f=f+1|0}n=b[g+236>>1]|0;f=g;while(1){if((n|0)>(b[f+238>>1]|0))break;else m=0;while(1){f=c[f+196>>2]|0;if((m|0)>=(c[f+(n<<6)>>2]|0))break;k=(c[(c[f+(n<<6)+4>>2]|0)+(m<<2)>>2]|0)+16|0;f=c[k>>2]|0;c[f+236>>2]=m;f=c[f+188>>2]|0;a:do if(f|0){g=0;while(1){i=c[f+(g<<2)>>2]|0;if(!i)break a;j=i+16|0;if((a[(c[j>>2]|0)+112>>0]|0)==4){vh(i);C_(c[j>>2]|0);C_(i);g=g+-1|0;f=c[(c[k>>2]|0)+188>>2]|0}g=g+1|0}}while(0);m=m+1|0;f=c[o>>2]|0}Qh(c[f+(n<<6)+56>>2]|0);n=n+1|0;f=c[o>>2]|0}if(0){o=c[15686]|0;d=qy(d)|0;r=+EL();c[p>>2]=d;c[p+4>>2]=e;h[p+8>>3]=r;f1(o,85722,p)|0}l=q;return}function Ph(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=a+16|0;d=1;while(1){f=c[g>>2]|0;if((d|0)>(c[f+180>>2]|0))break;Ph(c[(c[f+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}a:do if(c[f+268>>2]|0){e=b[f+236>>1]|0;d=f;while(1){if((e|0)>(b[d+238>>1]|0))break a;j=c[(c[d+268>>2]|0)+(e<<2)>>2]|0;i=Rh(a,j,-1)|0;j=Rh(a,j,1)|0;c[(c[(c[g>>2]|0)+268>>2]|0)+(e<<2)>>2]=i;k=c[(c[(c[(hg(a)|0)+16>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0;i=c[(c[i+16>>2]|0)+236>>2]|0;f=c[g>>2]|0;h=c[f+196>>2]|0;c[h+(e<<6)+4>>2]=k+(i<<2);c[h+(e<<6)>>2]=(c[(c[j+16>>2]|0)+236>>2]|0)+1-i;e=e+1|0;d=f}}while(0);return}function Qh(a){a=a|0;if(a|0){C_(c[a+8>>2]|0);C_(a)}return}function Rh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=b;while(1){b=Sh(b,c)|0;if(!b)break;if(Th(a,b)|0){d=b;continue}e=(Uh(a,b)|0)==0;d=e?d:b}return d|0}function Sh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!a)qa(85761,85686,1023,85763);if((b|0)<0){a=c[a+16>>2]|0;e=c[a+236>>2]|0;if((e|0)>0){a=(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(c[a+232>>2]<<6)+4|0;d=e+-1|0;f=7}else g=0}else{a=c[a+16>>2]|0;e=c[a+236>>2]|0;a=(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(c[a+232>>2]<<6)+4|0;d=e+1|0;f=7}if((f|0)==7){a=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(a)if((O((c[(c[a+16>>2]|0)+236>>2]|0)-e|0,b)|0)>0)g=a;else qa(85772,85686,1029,85763);else g=0}return g|0}function Th(b,d){b=b|0;d=d|0;if(!(a[(c[d+16>>2]|0)+156>>0]|0))b=(nz(b,d)|0)!=0&1;else b=0;return b|0}function Uh(b,d){b=b|0;d=d|0;var e=0,f=0;d=c[d+16>>2]|0;if(((a[d+156>>0]|0)==1?(c[d+176>>2]|0)==1:0)?(c[d+184>>2]|0)==1:0){d=c[d+180>>2]|0;while(1){d=c[d>>2]|0;e=c[d+16>>2]|0;if(!(a[e+112>>0]|0))break;else d=e+116|0}if(nz(b,d)|0)d=1;else f=7}else f=7;if((f|0)==7)d=0;return d|0}function Vh(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=c[46370]|0;a:do if((d|0)!=0|(c[46391]|0)!=0){d=ML(b,d,0)|0;if(d|0){switch(a[d>>0]|0){case 0:break a;case 111:{if(!(a$(d,85974)|0)){di(b,1);break a}break}case 105:{if(!(a$(d,95660)|0)){di(b,0);break a}break}default:{}}c[e>>2]=d;Ow(1,85978,e)|0;break}d=vA(b)|0;while(1){if(!d)break;if(!(Qj(d)|0))Vh(d);d=wA(d)|0}if(c[46391]|0)ei(b)}while(0);l=f;return}function Wh(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;e=c[k>>2]|0;j=b[e+236>>1]|0;while(1){if((j|0)>(b[e+238>>1]|0))break;else{f=0;i=0}while(1){g=c[e+196>>2]|0;h=c[g+(j<<6)>>2]|0;if((i|0)>=(h|0))break;g=c[(c[(c[g+(j<<6)+4>>2]|0)+(i<<2)>>2]|0)+16>>2]|0;a[g+158>>0]=0;a[g+157>>0]=0;c[g+284>>2]=i;if((f|0)==0&(c[g+192>>2]|0)>0){f=bi(h,h)|0;e=c[k>>2]|0;c[(c[e+196>>2]|0)+(j<<6)+56>>2]=f;f=1}i=i+1|0}a:do if(f){i=0;f=h;while(1){if((i|0)>=(f|0))break a;h=c[(c[g+(j<<6)+4>>2]|0)+(i<<2)>>2]|0;if(!(a[(c[h+16>>2]|0)+157>>0]|0)){ci(d,h);e=c[k>>2]|0;f=c[e+196>>2]|0;g=f;f=c[f+(j<<6)>>2]|0}i=i+1|0}}while(0);j=j+1|0}return}function Xh(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=d+16|0;e=c[s>>2]|0;if(a[e+240>>0]|0){h=0;r=b[e+236>>1]|0;q=0;i=0;a:while(1){if((r|0)>(b[e+238>>1]|0))break;f=c[e+196>>2]|0;g=c[f+(r<<6)>>2]|0;if(!g){g=q;f=i}else{f=c[f+(r<<6)+4>>2]|0;o=c[(c[(c[f>>2]|0)+16>>2]|0)+236>>2]|0;e=0;while(1){if((e|0)>=(g|0))break;a[(c[(c[f+(e<<2)>>2]|0)+16>>2]|0)+157>>0]=0;e=e+1|0}e=(e<<2)+4|0;if(!h)p=uH(e)|0;else p=wH(i,e)|0;m=0;n=0;while(1){e=c[s>>2]|0;f=c[e+196>>2]|0;g=c[f+(r<<6)>>2]|0;if((g|0)<=(n|0))break;j=c[(c[f+(r<<6)+4>>2]|0)+(((c[e+116>>2]&1|0)==0?g+~n|0:n)<<2)>>2]|0;l=j+16|0;e=0;k=0;while(1){i=c[l>>2]|0;if((e|0)>=(c[i+200>>2]|0)){f=0;g=0;e=i;break}i=k+((Zh(d,c[(c[i+196>>2]|0)+(e<<2)>>2]|0)|0)!=0&1)|0;e=e+1|0;k=i}while(1){if((g|0)>=(c[e+192>>2]|0))break;i=f+((Zh(d,c[(c[e+188>>2]|0)+(g<<2)>>2]|0)|0)!=0&1)|0;f=i;g=g+1|0;e=c[l>>2]|0}if(f|k)if((k|0)==0&(a[e+157>>0]|0)==0)e=(_h(d,j,p+(m<<2)|0,r)|0)+m|0;else e=m;else{c[p+(m<<2)>>2]=j;e=m+1|0}m=e;n=n+1|0}b:do if(m){c:do if(!(c[e+116>>2]&1)){f=p;e=p+(m<<2)|0;while(1){e=e+-4|0;if(f>>>0>=e>>>0){g=0;break c}n=c[f>>2]|0;c[f>>2]=c[e>>2];c[e>>2]=n;f=f+4|0}}else g=0;while(0);while(1){e=c[s>>2]|0;i=c[e+196>>2]|0;f=c[i+(r<<6)>>2]|0;if((g|0)>=(f|0)){m=0;g=i;break}n=c[p+(g<<2)>>2]|0;c[(c[i+(r<<6)+4>>2]|0)+(g<<2)>>2]=n;c[(c[n+16>>2]|0)+236>>2]=g+o;g=g+1|0}while(1){if((m|0)>=(f|0))break b;l=(c[(c[g+(r<<6)+4>>2]|0)+(m<<2)>>2]|0)+16|0;i=c[(c[l>>2]|0)+188>>2]|0;if(i){k=0;f=i;while(1){g=c[f+(k<<2)>>2]|0;e=c[s>>2]|0;if(!g)break;j=c[g>>2]&3;i=c[(c[(c[((j|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;j=c[(c[(c[((j|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;if(!(c[e+116>>2]&1))if((i|0)<(j|0))t=36;else e=k;else if((i|0)>(j|0))t=36;else e=k;if((t|0)==36){t=0;if(Zh(d,g)|0){t=37;break a}vh(g);$h(d,g);e=k+-1|0;f=c[(c[l>>2]|0)+188>>2]|0}k=e+1|0}f=c[e+196>>2]|0;g=f;f=c[f+(r<<6)>>2]|0}m=m+1|0}}while(0);a[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(r<<6)+49>>0]=0;h=p;g=p;f=p}r=r+1|0;q=g;i=f}if((t|0)==37)qa(85820,85686,1561,85859);if(h|0)C_(q)}return}function Yh(a){a=a|0;var d=0,e=0;e=a+16|0;a=c[e>>2]|0;a:do if(c[a+268>>2]|0){d=b[a+236>>1]|0;while(1){if((d|0)>(b[a+238>>1]|0))break a;c[(c[a+268>>2]|0)+(d<<2)>>2]=c[c[(c[a+196>>2]|0)+(d<<6)+4>>2]>>2];d=d+1|0;a=c[e>>2]|0}}while(0);return}function Zh(a,b){a=a|0;b=b|0;if((c[(c[b+16>>2]|0)+156>>2]|0)!=0?(ai(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)!=0:0)a=(ai(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)!=0&1;else a=0;return a|0}function _h(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=d+16|0;g=c[l>>2]|0;a[g+157>>0]=1;a:do if((c[g+192>>2]|0)>0){h=0;j=0;while(1){i=c[(c[g+188>>2]|0)+(j<<2)>>2]|0;if(!i)break a;if((Zh(b,i)|0)!=0?(k=c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0,(a[(c[k+16>>2]|0)+157>>0]|0)==0):0)h=(_h(b,k,e+(h<<2)|0,f)|0)+h|0;j=j+1|0;g=c[l>>2]|0}}else h=0;while(0);if((c[g+232>>2]|0)==(f|0)){c[e+(h<<2)>>2]=d;return h+1|0}else qa(85872,85686,1490,85888);return 0}function $h(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;i=c[d>>2]&3;j=c[((i|0)==2?d:d+-48|0)+40>>2]|0;f=c[(c[j+16>>2]|0)+188>>2]|0;a:do if(!f){e=d+48|0;m=15}else{l=d+48|0;g=((i|0)==3?d:l)+40|0;e=0;while(1){h=c[f+(e<<2)>>2]|0;if(!h){e=l;m=15;break a}if((c[((c[h>>2]&3|0)==2?h:h+-48|0)+40>>2]|0)==(c[g>>2]|0))break;else e=e+1|0}wh(d,h);e=(c[d+16>>2]|0)+172|0;if(!(c[e>>2]|0))c[e>>2]=h;e=c[h+16>>2]|0;if((a[e+112>>0]|0)==4?(k=e+116|0,(c[k>>2]|0)==0):0)c[k>>2]=d;e=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;f=c[e+204>>2]|0;if(!f)e=uH((c[e+208>>2]<<2)+8|0)|0;else e=wH(f,(c[e+208>>2]<<2)+8|0)|0;c[(c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0)+204>>2]=e;i=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;j=c[i+204>>2]|0;i=i+208|0;k=c[i>>2]|0;c[i>>2]=k+1;c[j+(k<<2)>>2]=d;d=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;c[(c[d+204>>2]|0)+(c[d+208>>2]<<2)>>2]=0}while(0);if((m|0)==15){m=nh(j,c[((i|0)==3?d:e)+40>>2]|0,d)|0;l=c[d+16>>2]|0;d=c[m+16>>2]|0;a[d+112>>0]=(a[l+112>>0]|0)==4?4:3;c[d+96>>2]=c[l+96>>2];uh(b,m)}return}function ai(a,b){a=a|0;b=b|0;var c=0;c=Th(a,b)|0;return Uh(a,b)|0|c|0}function bi(a,b){a=a|0;b=b|0;var d=0;d=tH(12)|0;c[d>>2]=a;c[d+4>>2]=b;c[d+8>>2]=tH(O(b,a)|0)|0;return d|0}function ci(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=d+16|0;l=c[o>>2]|0;k=c[(c[(c[b+16>>2]|0)+196>>2]|0)+(c[l+232>>2]<<6)+56>>2]|0;a[l+157>>0]=1;a[l+158>>0]=1;l=(c[(c[(hg(b)|0)+16>>2]|0)+180>>2]|0)>0;e=c[o>>2]|0;f=c[e+188>>2]|0;a:do if(f){m=k+4|0;n=k+8|0;d=0;b:while(1){j=c[f+(d<<2)>>2]|0;if(!j){p=e;break a}if(l){if((nz(b,c[((c[j>>2]&3|0)==3?j:j+48|0)+40>>2]|0)|0)!=0?(nz(b,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)|0)!=0:0)q=7}else q=7;do if((q|0)==7){q=0;h=j+16|0;if(c[(c[h>>2]|0)+156>>2]|0){e=c[j>>2]&3;g=j+-48|0;r=c[(c[((e|0)==2?j:g)+40>>2]|0)+16>>2]|0;i=c[r+284>>2]|0;f=(i|0)<(c[k>>2]|0);if((a[r+158>>0]|0)==1){if(!f){q=10;break b}e=c[(c[(c[((e|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+284>>2]|0;f=c[m>>2]|0;if((e|0)>=(f|0)){q=12;break b}a[(c[n>>2]|0)+((O(f,i)|0)+e)>>0]=1;vh(j);d=d+-1|0;if((a[(c[h>>2]|0)+112>>0]|0)==4)break;$h(b,j);break}else{if(!f){q=16;break b}e=c[(c[(c[((e|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+284>>2]|0;f=c[m>>2]|0;if((e|0)>=(f|0)){q=18;break b}a[(c[n>>2]|0)+((O(f,e)|0)+i)>>0]=1;e=c[((c[j>>2]&3|0)==2?j:g)+40>>2]|0;if(a[(c[e+16>>2]|0)+157>>0]|0)break;ci(b,e);break}}}while(0);f=c[o>>2]|0;d=d+1|0;e=f;f=c[f+188>>2]|0}if((q|0)==10)qa(85898,85686,1251,85930);else if((q|0)==12)qa(85942,85686,1252,85930);else if((q|0)==16)qa(85898,85686,1260,85930);else if((q|0)==18)qa(85942,85686,1261,85930)}else p=e;while(0);a[p+158>>0]=0;return}function di(a,b){a=a|0;b=b|0;var c=0;c=Ry(a)|0;while(1){if(!c)break;fi(a,c,b);c=Sy(a,c)|0}return}function ei(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;d=Ry(b)|0;while(1){if(!d)break;e=ML(d,c[46391]|0,0)|0;a:do if(e|0){switch(a[e>>0]|0){case 0:break a;case 111:{if(!(a$(e,85974)|0)){fi(b,d,1);break a}break}case 105:{if(!(a$(e,95660)|0)){fi(b,d,0);break a}break}default:{}}h=qy(d)|0;c[f>>2]=e;c[f+4>>2]=h;Ow(1,86009,f)|0}while(0);d=Sy(b,d)|0}l=g;return}function fi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[45970]|0;h=d+16|0;f=c[h>>2]|0;a:do if(!(c[f+212>>2]|0)){i=(e|0)!=0;b:do if(i){g=0;d=0;e=f;while(1){f=c[(c[e+180>>2]|0)+(g<<2)>>2]|0;if(!f)break b;if(!(gi(f)|0)){c[j+(d<<2)>>2]=f;d=d+1|0;e=c[h>>2]|0}g=g+1|0}}else{g=0;d=0;e=f;while(1){f=c[(c[e+172>>2]|0)+(g<<2)>>2]|0;if(!f)break b;if(!(gi(f)|0)){c[j+(d<<2)>>2]=f;d=d+1|0;e=c[h>>2]|0}g=g+1|0}}while(0);if((d|0)>=2){c[j+(d<<2)>>2]=0;Z0(j,d,4,61);h=i?2:3;g=i?-1:1;f=1;while(1){d=c[j+(f<<2)>>2]|0;if(!d)break a;e=c[j+(f+-1<<2)>>2]|0;e=c[((c[e>>2]&3|0)==(h|0)?e:e+(g*48|0)|0)+40>>2]|0;d=c[((c[d>>2]&3|0)==(h|0)?d:d+(g*48|0)|0)+40>>2]|0;if(gh(e,d)|0)break a;i=nh(e,d,0)|0;a[(c[i+16>>2]|0)+112>>0]=4;uh(b,i);f=f+1|0}}}while(0);return}function gi(a){a=a|0;var b=0;while(1){b=c[(c[a+16>>2]|0)+116>>2]|0;if(!b)break;else a=b}b=c[a>>2]&3;return (c[(c[(c[((b|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)!=(c[(c[(c[((b|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)|0}function hi(a,b){a=a|0;b=b|0;return ((c[c[a>>2]>>2]|0)>>>4)-((c[c[b>>2]>>2]|0)>>>4)|0}function ii(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=c[a+16>>2]|0;g=f+220|0;h=c[g>>2]|0;if((h|0)>=2){i=f+216|0;a=0;e=0;while(1){if((e|0)>=(h|0))break;d=c[(c[i>>2]|0)+(e<<2)>>2]|0;if(a|0)c[(c[a+16>>2]|0)+164>>2]=d;j=c[d+16>>2]|0;c[j+168>>2]=a;a=d;d=j;while(1){d=c[d+164>>2]|0;if(!d)break;a=d;d=c[d+16>>2]|0}e=e+1|0}c[g>>2]=1;c[f+192>>2]=c[c[f+216>>2]>>2];b[f+236>>1]=c[45972];b[f+238>>1]=c[45973]}return}function ji(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=c[45971]|0;j=i+16|0;f=c[j>>2]|0;g=0;h=b[f+236>>1]|0;while(1){if((h|0)>=(b[f+238>>1]|0))break;d=c[f+196>>2]|0;if(!(a[d+(h<<6)+49>>0]|0)){e=Ci(i,h)|0;d=c[j>>2]|0;f=c[d+196>>2]|0;c[f+(h<<6)+52>>2]=e;a[f+(h<<6)+49>>0]=1}else{e=c[d+(h<<6)+52>>2]|0;d=f}g=e+g|0;h=h+1|0;f=d}return g|0}function ki(a){a=a|0;var d=0,e=0,f=0,g=0,i=0,j=0;a=c[a+16>>2]|0;g=b[a+238>>1]|0;i=a+196|0;a=b[a+236>>1]|0;while(1){if((a|0)>(g|0))break;f=c[i>>2]|0;e=c[f+(a<<6)>>2]|0;f=f+(a<<6)+4|0;d=0;while(1){if((d|0)>=(e|0))break;j=c[(c[(c[f>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;h[j+16>>3]=+(c[j+236>>2]|0);d=d+1|0}a=a+1|0}return}function li(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;m=r;n=d+16|0;o=FL(c[(c[n>>2]|0)+232>>2]|0)|0;j=c[n>>2]|0;f=j+192|0;g=f;while(1){g=c[g>>2]|0;if(!g)break;g=c[g+16>>2]|0;a[g+157>>0]=0;g=g+164|0}h=b[j+238>>1]|0;i=j+196|0;g=b[j+236>>1]|0;while(1){if((g|0)>(h|0))break;c[(c[i>>2]|0)+(g<<6)>>2]=0;g=g+1|0}i=(e|0)==0;while(1){g=c[f>>2]|0;if(!g)break;h=g+16|0;f=c[h>>2]|0;if((c[c[(i?f+172|0:f+180|0)>>2]>>2]|0)==0?(k=f+157|0,(a[k>>0]|0)==0):0){a[k>>0]=1;HL(o,g);while(1){f=IL(o)|0;if(!f)break;if((a[(c[f+16>>2]|0)+159>>0]|0)==7){jl(d,f,e,o);continue}else{Ai(d,f);Bi(o,f,e);continue}}f=c[h>>2]|0}f=f+164|0}if(IL(o)|0)Ow(1,86217,m)|0;f=c[n>>2]|0;j=b[f+236>>1]|0;while(1){if((j|0)>(b[f+238>>1]|0))break;a[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(j<<6)+49>>0]=0;if((c[f+116>>2]&1|0)!=0?(p=c[f+196>>2]|0,q=c[p+(j<<6)>>2]|0,(q|0)>0):0){g=c[p+(j<<6)+4>>2]|0;h=q+-1|0;i=(h|0)/2|0;f=0;while(1){if((f|0)>(i|0))break;ui(c[g+(f<<2)>>2]|0,c[g+(h-f<<2)>>2]|0);f=f+1|0}f=c[n>>2]|0}j=j+1|0}if((hg(d)|0)==(d|0)?(ji(0)|0)>0:0)oi(d,0);GL(o);l=r;return}function mi(d){d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=d+16|0;d=c[n>>2]|0;f=b[d+236>>1]|0;e=b[d+238>>1]|0;l=e<<16>>16;m=d+196|0;g=f;while(1){if((g|0)>(l|0))break;k=c[m>>2]|0;j=c[k+(g<<6)>>2]|0;k=k+(g<<6)+4|0;i=0;while(1){if((i|0)>=(j|0))break;o=c[(c[(c[k>>2]|0)+(i<<2)>>2]|0)+16>>2]|0;c[o+236>>2]=~~+h[o+16>>3];i=i+1|0}g=g+1|0}while(1){if((f|0)>(e<<16>>16|0))break;a[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(f<<6)+49>>0]=0;o=c[d+196>>2]|0;Z0(c[o+(f<<6)+4>>2]|0,c[o+(f<<6)>>2]|0,4,62);o=c[n>>2]|0;f=f+1|0;e=b[o+238>>1]|0;d=o}return}function ni(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=((d|0)%4|0|0)<2&1;e=c[a+16>>2]|0;if(!(d&1)){d=b[e+236>>1]|0;f=1;e=b[e+238>>1]|0;d=(d<<16>>16<=(b[(c[(c[45971]|0)+16>>2]|0)+236>>1]|0)&1)+(d<<16>>16)|0}else{d=b[e+238>>1]|0;f=-1;e=b[e+236>>1]|0;d=((d<<16>>16>=(b[(c[(c[45971]|0)+16>>2]|0)+238>>1]|0))<<31>>31)+(d<<16>>16)|0}e=f+e|0;while(1){if((d|0)==(e|0))break;xi(a,d,g,(wi(a,d,d-f|0)|0)&255);d=d+f|0}oi(a,g^1);return}function oi(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;g=c[k>>2]|0;i=b[g+236>>1]|0;j=b[g+238>>1]|0;h=g+196|0;f=i<<16>>16;while(1){if((f|0)>(j|0)){h=i;break}a[(c[h>>2]|0)+(f<<6)+48>>0]=1;f=f+1|0}while(1){f=0;h=h<<16>>16;while(1){if((h|0)>(b[g+238>>1]|0))break;if(a[(c[g+196>>2]|0)+(h<<6)+48>>0]|0){f=(vi(d,h,e)|0)+f|0;g=c[k>>2]|0}h=h+1|0}if((f|0)<=0)break;h=b[g+236>>1]|0}return}function pi(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=d+16|0;e=c[o>>2]|0;n=b[e+238>>1]|0;a:while(1){if((n|0)<(b[e+236>>1]|0)){e=16;break}f=c[e+196>>2]|0;a[f+(n<<6)+48>>0]=0;p=(n|0)>0;q=n+1|0;g=0;b:while(1){l=(c[f+(n<<6)>>2]|0)+-1|0;m=f+(n<<6)+4|0;k=f+(q<<6)|0;while(1){if((g|0)>=(l|0))break b;j=c[m>>2]|0;i=c[j+(g<<2)>>2]|0;g=g+1|0;j=c[j+(g<<2)>>2]|0;if((c[(c[i+16>>2]|0)+236>>2]|0)>=(c[(c[j+16>>2]|0)+236>>2]|0)){e=7;break a}if(qi(d,i,j)|0)continue;if(p){f=ri(i,j)|0;h=ri(j,i)|0}else{f=0;h=0}if((c[k>>2]|0)>0){f=(si(i,j)|0)+f|0;h=(si(j,i)|0)+h|0}if((h|0)<=(f|0))break}ti(d,n,i,j);e=c[o>>2]|0;f=c[e+196>>2]|0}n=n+-1|0}if((e|0)==7)qa(86168,85686,721,86194);else if((e|0)==16)return}function qi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=c[d+16>>2]|0;i=c[j+212>>2]|0;f=c[e+16>>2]|0;g=c[f+212>>2]|0;h=(i|0)!=(g|0);do if(!(a[190689]|0))if((g|0)==0|((i|0)==0|h^1))k=9;else{if((a[j+159>>0]|0)==7?(a[j+156>>0]|0)==1:0){b=0;break}if((a[f+159>>0]|0)==7?(a[f+156>>0]|0)==1:0){b=0;break}b=1}else if(h)b=1;else k=9;while(0);if((k|0)==9){f=c[b+16>>2]|0;b=c[(c[f+196>>2]|0)+(c[j+232>>2]<<6)+56>>2]|0;if(!b)b=0;else{j=(c[f+116>>2]&1|0)==0;k=O(c[b+4>>2]|0,c[(c[(j?d:e)+16>>2]|0)+284>>2]|0)|0;b=a[(c[b+8>>2]|0)+((c[(c[(j?e:d)+16>>2]|0)+284>>2]|0)+k)>>0]|0}}return b|0}function ri(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+16|0;j=c[(c[d+16>>2]|0)+172>>2]|0;d=0;while(1){a=c[j>>2]|0;if(!a)break;i=c[a+16>>2]|0;k=b[i+154>>1]|0;g=c[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;i=i+16|0;f=c[(c[l>>2]|0)+172>>2]|0;a=d;while(1){d=c[f>>2]|0;if(!d)break;e=(c[(c[(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-g|0;if((e|0)<=0){if((e|0)==0?(m=c[d+16>>2]|0,+h[m+16>>3]>+h[i>>3]):0){d=m;n=9}}else{d=c[d+16>>2]|0;n=9}if((n|0)==9){n=0;a=(O(b[d+154>>1]|0,k)|0)+a|0}f=f+4|0}j=j+4|0;d=a}return d|0}function si(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+16|0;j=c[(c[d+16>>2]|0)+180>>2]|0;d=0;while(1){a=c[j>>2]|0;if(!a)break;i=c[a+16>>2]|0;k=b[i+154>>1]|0;g=c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;i=i+56|0;f=c[(c[l>>2]|0)+180>>2]|0;a=d;while(1){d=c[f>>2]|0;if(!d)break;e=(c[(c[(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-g|0;if((e|0)<=0){if((e|0)==0?(m=c[d+16>>2]|0,+h[m+56>>3]>+h[i>>3]):0){d=m;n=9}}else{d=c[d+16>>2]|0;n=9}if((n|0)==9){n=0;a=(O(b[d+154>>1]|0,k)|0)+a|0}f=f+4|0}j=j+4|0;d=a}return d|0}function ti(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=a[(c[e+16>>2]|0)+156>>0]|0;if(i<<24>>24!=(a[(c[f+16>>2]|0)+156>>0]|0)){j=b+16|0;l=c[(c[j>>2]|0)+196>>2]|0;k=c[l+(d<<6)>>2]|0;l=l+(d<<6)+4|0;b=0;g=0;h=0;while(1){if((b|0)>=(k|0))break;o=(a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)==0;b=b+1|0;g=g+(o&1)|0;h=h+((o^1)&1)|0}i=i<<24>>24==0;h=(g|0)<(h|0)?(i?e:f):i?f:e;i=0;b=0;while(1){if((b|0)>=(k|0))break;i=(c[(c[l>>2]|0)+(b<<2)>>2]|0)==(h|0)?b:i;b=b+1|0}o=(a[(c[h+16>>2]|0)+156>>0]|0)==0&1;n=0;g=i;while(1){b=g+-1|0;if((g|0)<=0){m=0;b=i;break}if((a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0)){m=0;b=i;break}n=n+1|0;g=b}while(1){b=b+1|0;if((b|0)>=(k|0))break;if((a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0))break;m=m+1|0}ui(e,f);j=c[(c[j>>2]|0)+196>>2]|0;k=c[j+(d<<6)>>2]|0;j=j+(d<<6)+4|0;b=0;while(1){if((b|0)>=(k|0)){h=0;g=i;break}i=(c[(c[j>>2]|0)+(b<<2)>>2]|0)==(h|0)?b:i;b=b+1|0}while(1){b=g+-1|0;if((g|0)<=0){g=0;b=i;break}if((a[(c[(c[(c[j>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0)){g=0;b=i;break}h=h+1|0;g=b}while(1){b=b+1|0;if((b|0)>=(k|0))break;if((a[(c[(c[(c[j>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0))break;g=g+1|0}d=h-g|0;o=n-m|0;if((((d|0)>-1?d:0-d|0)|0)>(((o|0)>-1?o:0-o|0)|0))ui(e,f)}return}function ui(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=c[a+16>>2]|0;e=c[f+232>>2]|0;f=f+236|0;d=c[f>>2]|0;g=b+16|0;h=c[(c[g>>2]|0)+236>>2]|0;c[f>>2]=h;f=(c[45971]|0)+16|0;c[(c[(c[(c[f>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(h<<2)>>2]=a;c[(c[g>>2]|0)+236>>2]=d;c[(c[(c[(c[f>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(d<<2)>>2]=b;return}function vi(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=d+16|0;n=c[(c[q>>2]|0)+196>>2]|0;a[n+(e<<6)+48>>0]=0;r=(e|0)>0;s=e+1|0;o=(f|0)!=0;p=e+-1|0;g=0;i=0;f=n;a:while(1){l=(c[f+(e<<6)>>2]|0)+-1|0;m=f+(e<<6)+4|0;h=f+(s<<6)|0;n=g;while(1){if((n|0)>=(l|0)){f=17;break a}k=c[m>>2]|0;j=c[k+(n<<2)>>2]|0;n=n+1|0;k=c[k+(n<<2)>>2]|0;if((c[(c[j+16>>2]|0)+236>>2]|0)>=(c[(c[k+16>>2]|0)+236>>2]|0)){f=5;break a}if(qi(d,j,k)|0)continue;if(r){f=ri(j,k)|0;g=ri(k,j)|0}else{f=0;g=0}if((c[h>>2]|0)>0){f=(si(j,k)|0)+f|0;g=(si(k,j)|0)+g|0}if((f|0)>(g|0))break;if((f|0)==(g|0)&(o&(f|0)>0)){f=g;break}}ui(j,k);i=f-g+i|0;g=c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0;a[g+(e<<6)+49>>0]=0;h=c[q>>2]|0;f=c[h+196>>2]|0;a[f+(e<<6)+48>>0]=1;if((b[h+236>>1]|0)<(e|0)){a[g+(p<<6)+49>>0]=0;a[f+(p<<6)+48>>0]=1}if((b[h+238>>1]|0)<=(e|0)){g=n;continue}a[g+(s<<6)+49>>0]=0;a[f+(s<<6)+48>>0]=1;g=n}if((f|0)==5)qa(86168,85686,770,86202);else if((f|0)==17)return i|0;return 0}function wi(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=c[45969]|0;q=a+16|0;a=c[(c[q>>2]|0)+196>>2]|0;r=c[a+(e<<6)+4>>2]|0;n=(f|0)>(e|0);o=p+4|0;m=0;while(1){f=c[a+(e<<6)>>2]|0;if((m|0)>=(f|0)){a=0;j=0;break}l=(c[r+(m<<2)>>2]|0)+16|0;a=c[l>>2]|0;a:do if(n){k=c[a+180>>2]|0;a=0;j=0;while(1){f=c[k+(j<<2)>>2]|0;if(!f)break a;g=c[f+16>>2]|0;if((b[g+154>>1]|0)>0){c[p+(a<<2)>>2]=c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]<<8|d[g+88>>0];a=a+1|0}j=j+1|0}}else{k=c[a+172>>2]|0;j=0;a=0;while(1){f=c[k+(j<<2)>>2]|0;if(!f)break a;g=c[f+16>>2]|0;if((b[g+154>>1]|0)>0){c[p+(a<<2)>>2]=c[(c[(c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+236>>2]<<8|d[g+48>>0];a=a+1|0}j=j+1|0}}while(0);b:do switch(a|0){case 0:{i=-1.0;break}case 1:{i=+(c[p>>2]|0);break}case 2:{i=+(((c[o>>2]|0)+(c[p>>2]|0)|0)/2|0|0);break}default:{Z0(p,a,4,60);f=(a|0)/2|0;if(a&1|0){i=+(c[p+(f<<2)>>2]|0);break b}j=c[p+(f<<2)>>2]|0;g=(c[p+(a+-1<<2)>>2]|0)-j|0;a=c[p+(f+-1<<2)>>2]|0;f=a-(c[p>>2]|0)|0;if((f|0)==(g|0)){i=+((a+j|0)/2|0|0);break b}else{i=+(((O(f,j)|0)+(O(a,g)|0)|0)/(f+g|0)|0|0);break b}}}while(0);h[(c[l>>2]|0)+240>>3]=i;m=m+1|0;a=c[(c[q>>2]|0)+196>>2]|0}while(1){if((j|0)>=(f|0))break;g=c[r+(j<<2)>>2]|0;p=c[g+16>>2]|0;if((c[p+184>>2]|0)==0?(c[p+176>>2]|0)==0:0){a=(yi(g)|0|a&255)&255;f=c[(c[(c[q>>2]|0)+196>>2]|0)+(e<<6)>>2]|0}j=j+1|0}return a|0}function xi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0;o=c[(c[b+16>>2]|0)+196>>2]|0;s=c[o+(d<<6)+4>>2]|0;o=c[o+(d<<6)>>2]|0;q=(e|0)!=0;p=(f|e|0)==0;f=0;e=o;o=s+(o<<2)|0;while(1){n=e+-1|0;if((e|0)>0)e=s;else break;a:while(1){b:while(1){if(e>>>0>=o>>>0)break a;while(1){if(e>>>0>=o>>>0)break a;l=c[e>>2]|0;m=+h[(c[l+16>>2]|0)+240>>3];if(!(m<0.0))break;e=e+4|0}k=0;while(1){g=k<<24>>24==0;while(1){e=e+4|0;if(e>>>0>=o>>>0)break a;if(g){g=11;break}i=c[e>>2]|0;if(!(c[(c[i+16>>2]|0)+212>>2]|0)){g=13;break}}if((g|0)==11){i=c[e>>2]|0;j=i}else if((g|0)==13)j=i;if(qi(b,l,j)|0)continue b;g=c[i+16>>2]|0;if(+h[g+240>>3]>=0.0)break;k=(c[g+212>>2]|0)==0?k:1}g=~~m;k=~~+h[(c[i+16>>2]|0)+240>>3];if((g|0)>(k|0)|q&(g|0)==(k|0))break}ui(l,j);f=f+1|0}e=n;o=p?o+-4|0:o}if(f|0?(r=c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0,a[r+(d<<6)+49>>0]=0,(d|0)>0):0)a[r+(d+-1<<6)+49>>0]=0;return}function yi(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0;g=c[a+16>>2]|0;if((c[g+200>>2]|0)>0){f=c[g+196>>2]|0;a=c[f>>2]|0;a=c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0;d=1;while(1){e=c[f+(d<<2)>>2]|0;if(!e)break;e=c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0;a=(c[(c[e+16>>2]|0)+236>>2]|0)>(c[(c[a+16>>2]|0)+236>>2]|0)?e:a;d=d+1|0}b=+h[(c[a+16>>2]|0)+240>>3];if(!(b>=0.0))a=1;else{h[g+240>>3]=b+1.0;a=0}}else if((c[g+192>>2]|0)>0){e=c[g+188>>2]|0;d=c[e>>2]|0;a=1;d=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;while(1){f=c[e+(a<<2)>>2]|0;if(!f)break;f=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;a=a+1|0;d=(c[(c[f+16>>2]|0)+236>>2]|0)<(c[(c[d+16>>2]|0)+236>>2]|0)?f:d}b=+h[(c[d+16>>2]|0)+240>>3];if(b>0.0){h[g+240>>3]=b+-1.0;a=0}else a=1}else a=1;return a|0}function zi(a,b){a=a|0;b=b|0;return (c[(c[(c[a>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[b>>2]|0)+16>>2]|0)+236>>2]|0)|0}function Ai(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+96|0;o=p+64|0;n=p+48|0;h=p+24|0;f=p;j=d+16|0;k=c[(c[j>>2]|0)+232>>2]|0;m=a+16|0;e=c[(c[m>>2]|0)+196>>2]|0;i=c[e+(k<<6)>>2]|0;do if((c[e+(k<<6)+8>>2]|0)>=1){c[(c[e+(k<<6)+4>>2]|0)+(i<<2)>>2]=d;c[(c[j>>2]|0)+236>>2]=i;a=c[m>>2]|0;f=c[a+196>>2]|0;e=f+(k<<6)|0;g=c[e>>2]|0;c[e>>2]=g+1;if((g|0)>=(c[f+(k<<6)+8>>2]|0))qa(86282,85686,1346,86318);g=c[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]|0;if((i|0)>(g|0)){m=qy(d)|0;n=c[(c[j>>2]|0)+236>>2]|0;o=c[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]|0;c[h>>2]=1359;c[h+4>>2]=m;c[h+8>>2]=n;c[h+12>>2]=k;c[h+16>>2]=o;Ow(1,86334,h)|0;break}e=b[a+236>>1]|0;a=b[a+238>>1]|0;if((k|0)<(e|0)|(k|0)>(a<<16>>16|0)){c[n>>2]=1364;c[n+4>>2]=k;c[n+8>>2]=e;c[n+12>>2]=a<<16>>16;Ow(1,86407,n)|0;break}if(((c[f+(k<<6)+4>>2]|0)+(i<<2)|0)>>>0>((c[f+(k<<6)+12>>2]|0)+(g<<2)|0)>>>0){i=qy(d)|0;n=c[(c[m>>2]|0)+196>>2]|0;m=(c[n+(k<<6)+4>>2]|0)+(c[(c[j>>2]|0)+236>>2]<<2)|0;n=(c[n+(k<<6)+12>>2]|0)+(c[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]<<2)|0;c[o>>2]=1370;c[o+4>>2]=k;c[o+8>>2]=i;c[o+12>>2]=m;c[o+16>>2]=k;c[o+20>>2]=k;c[o+24>>2]=n;Ow(1,86468,o)|0}}else{n=qy(a)|0;o=qy(d)|0;c[f>>2]=1339;c[f+4>>2]=n;c[f+8>>2]=o;c[f+12>>2]=k;c[f+16>>2]=i;Ow(1,86227,f)|0}while(0);l=p;return}function Bi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=d+16|0;a:do if(!e){g=0;while(1){d=c[h>>2]|0;if((g|0)>=(c[d+184>>2]|0))break a;d=c[(c[d+180>>2]|0)+(g<<2)>>2]|0;e=d+-48|0;f=(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;HL(b,c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)}g=g+1|0}}else{g=0;while(1){d=c[h>>2]|0;if((g|0)>=(c[d+176>>2]|0))break a;d=c[(c[d+172>>2]|0)+(g<<2)>>2]|0;e=d+48|0;f=(c[(c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)+16>>2]|0)+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;HL(b,c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)}g=g+1|0}}while(0);return}function Ci(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;u=v;g=d+16|0;f=c[(c[g>>2]|0)+196>>2]|0;s=c[f+(e<<6)+4>>2]|0;t=e+1|0;d=c[(c[(c[(c[45971]|0)+16>>2]|0)+196>>2]|0)+(t<<6)>>2]|0;if((c[45975]|0)>(d|0))q=c[45976]|0;else{d=d+1|0;c[45975]=d;f=c[45976]|0;if(!f)d=uH(d<<2)|0;else d=wH(f,d<<2)|0;c[45976]=d;f=c[(c[g>>2]|0)+196>>2]|0;q=d}r=f+(t<<6)|0;d=0;while(1){if((d|0)>=(c[r>>2]|0))break;c[q+(d<<2)>>2]=0;d=d+1|0}p=f+(e<<6)|0;o=0;h=0;d=0;j=q;while(1){k=c[p>>2]|0;if((o|0)>=(k|0))break;n=c[(c[(c[s+(o<<2)>>2]|0)+16>>2]|0)+180>>2]|0;a:do if((h|0)>0){m=0;while(1){g=c[n+(m<<2)>>2]|0;if(!g)break a;k=g+16|0;i=c[(c[(c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;while(1){g=i+1|0;if((i|0)>=(h|0))break;i=g;d=(O(c[j+(g<<2)>>2]|0,b[(c[k>>2]|0)+154>>1]|0)|0)+d|0}m=m+1|0}}while(0);i=0;while(1){g=c[n+(i<<2)>>2]|0;if(!g)break;j=c[(c[(c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;m=q+(j<<2)|0;c[m>>2]=(c[m>>2]|0)+(b[(c[g+16>>2]|0)+154>>1]|0);h=(j|0)>(h|0)?j:h;i=i+1|0;j=q}o=o+1|0}i=f+(e<<6)+4|0;h=0;while(1){if((h|0)>=(k|0))break;g=c[(c[(c[i>>2]|0)+(h<<2)>>2]|0)+16>>2]|0;if(a[g+145>>0]|0){e=g+180|0;c[u>>2]=c[e>>2];c[u+4>>2]=c[e+4>>2];d=(Di(u,1)|0)+d|0}h=h+1|0}i=c[r>>2]|0;h=f+(t<<6)+4|0;g=0;while(1){if((g|0)>=(i|0))break;f=c[(c[(c[h>>2]|0)+(g<<2)>>2]|0)+16>>2]|0;if(a[f+145>>0]|0){t=f+172|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];d=(Di(u,-1)|0)+d|0}g=g+1|0}l=v;return d|0}function Di(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;n=(d|0)<1;l=c[a>>2]|0;d=0;a=0;a:while(1){m=c[l+(d<<2)>>2]|0;if(!m)break;d=d+1|0;if(n){j=m+48|0;k=m+16|0;i=d;while(1){e=c[l+(i<<2)>>2]|0;if(!e)continue a;f=c[e+16>>2]|0;g=c[k>>2]|0;if((+h[f+56>>3]-+h[g+56>>3])*+((c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[((c[m>>2]&3|0)==3?m:j)+40>>2]|0)+16>>2]|0)+236>>2]|0)|0)<0.0)a=(O(b[f+154>>1]|0,b[g+154>>1]|0)|0)+a|0;i=i+1|0}}else{j=m+-48|0;k=m+16|0;i=d;while(1){e=c[l+(i<<2)>>2]|0;if(!e)continue a;f=c[e+16>>2]|0;g=c[k>>2]|0;if((+h[f+16>>3]-+h[g+16>>3])*+((c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[((c[m>>2]&3|0)==2?m:j)+40>>2]|0)+16>>2]|0)+236>>2]|0)|0)<0.0)a=(O(b[f+154>>1]|0,b[g+154>>1]|0)|0)+a|0;i=i+1|0}}}return a|0}function Ei(a){a=a|0;var b=0.0,d=0.0;c[45974]=8;c[46365]=24;h[22830]=.995;a=wx(a,86590)|0;if(a|0?(b=+a2(a),b>0.0):0){d=b*+(c[45974]|0);c[45974]=~~(d>1.0?d:1.0);b=b*+(c[46365]|0);c[46365]=~~(b>1.0?b:1.0)}return}function Fi(a){a=a|0;var d=0,e=0;e=(b[(c[a+16>>2]|0)+238>>1]|0)+2|0;d=tH(e<<2)|0;Hi(a,d,e,0)|0;C_(d);return}function Gi(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=a+16|0;i=tH((b[(c[h>>2]|0)+238>>1]<<2)+8|0)|0;g=Ry(a)|0;while(1){if(!g)break;f=i+(c[(c[g+16>>2]|0)+232>>2]<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=Dx(a,g)|0;while(1){if(!f)break;j=c[f>>2]&3;d=c[(c[(c[((j|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;j=c[(c[(c[((j|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;k=(d|0)>(j|0);e=k?d:j;d=k?j:d;while(1){d=d+1|0;if((d|0)>=(e|0))break;k=i+(d<<2)|0;c[k>>2]=(c[k>>2]|0)+1}f=Fx(a,f)|0}g=Sy(a,g)|0}f=tH((b[(c[h>>2]|0)+238>>1]<<6)+128|0)|0;e=c[h>>2]|0;c[e+196>>2]=f;d=b[e+236>>1]|0;while(1){if((d|0)>(b[e+238>>1]|0))break;j=i+(d<<2)|0;e=c[j>>2]|0;c[f+(d<<6)>>2]=e;c[f+(d<<6)+8>>2]=e;j=tH((c[j>>2]<<2)+4|0)|0;e=c[h>>2]|0;k=c[e+196>>2]|0;c[k+(d<<6)+4>>2]=j;c[k+(d<<6)+12>>2]=j;d=d+1|0;f=k}C_(i);return}function Hi(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0;m=a+16|0;i=1;while(1){g=c[m>>2]|0;if((i|0)>(c[g+180>>2]|0))break;l=Hi(c[(c[g+184>>2]|0)+(i<<2)>>2]|0,d,e,f)|0;i=i+1|0;f=l}a:do if((hg(a)|0)!=(a|0)){G3(d|0,0,e<<2|0)|0;g=Ry(a)|0;while(1){if(!g)break;k=g+16|0;c[d+(c[(c[k>>2]|0)+232>>2]<<2)>>2]=1;i=Dx(a,g)|0;while(1){if(!i)break;l=i+-48|0;j=c[(c[k>>2]|0)+232>>2]|0;while(1){e=j+1|0;if((j|0)>=(c[(c[(c[((c[i>>2]&3|0)==2?i:l)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;c[d+(e<<2)>>2]=1;j=e}i=Fx(a,i)|0}g=Sy(a,g)|0}g=c[m>>2]|0;i=b[g+236>>1]|0;while(1){if((i|0)>(b[g+238>>1]|0))break a;if(!(c[d+(i<<2)>>2]|0)){if(!f)f=uA(hg(a)|0,86580,1)|0;g=$y(f,0,1)|0;zz(g,134365,304,1)|0;l=g+16|0;j=c[l>>2]|0;c[j+232>>2]=i;h[j+96>>3]=.5;h[j+88>>3]=.5;h[j+80>>3]=1.0;c[j+216>>2]=1;c[j+176>>2]=0;j=tH(20)|0;k=c[l>>2]|0;c[k+172>>2]=j;c[k+184>>2]=0;k=tH(20)|0;c[(c[l>>2]|0)+180>>2]=k;Wy(a,g,1)|0;g=c[m>>2]|0}i=i+1|0}}while(0);return f|0}function Ii(a){a=a|0;var b=0,d=0;Yh(a);b=a+16|0;a=1;while(1){d=c[b>>2]|0;if((a|0)>(c[d+180>>2]|0))break;Ii(c[(c[d+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}return}function Ji(a){a=a|0;var b=0,d=0;b=c[a>>2]&3;d=Ki(c[((b|0)==3?a:a+48|0)+40>>2]|0)|0;b=c[17308+(d*12|0)+((Ki(c[((b|0)==2?a:a+-48|0)+40>>2]|0)|0)<<2)>>2]|0;a=(c[a+16>>2]|0)+156|0;c[a>>2]=O(c[a>>2]|0,b)|0;return}function Ki(b){b=b|0;b=c[b+16>>2]|0;if((a[b+156>>0]|0)==1)b=2;else b=(a[b+160>>0]|0)<2&1;return b|0}function Li(b,d){b=b|0;d=d|0;if(c[(c[b+16>>2]|0)+192>>2]|0){kl(b);Mi(b);if(a[191874]|0)yl(b);Ni(b);if(Ql(b)|0)Mi(b);Oi(b);if(eI(b,2,Pi(b)|0)|0?(Qi(b),eI(b,2,Pi(b)|0)|0):0)qa(86598,86626,134,86637);Ri(b);Si(b,d);Ti(b)}return}function Mi(d){d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;v=d+16|0;e=c[v>>2]|0;w=c[e+196>>2]|0;t=b[e+236>>1]|0;while(1){if((t|0)>(b[e+238>>1]|0))break;n=w+(t<<6)|0;o=w+(t<<6)+4|0;p=w+(t<<6)+40|0;q=w+(t<<6)+24|0;r=w+(t<<6)+32|0;s=w+(t<<6)+16|0;m=0;while(1){if((m|0)>=(c[n>>2]|0))break;l=(c[(c[o>>2]|0)+(m<<2)>>2]|0)+16|0;e=c[l>>2]|0;j=+h[e+80>>3]*.5;i=c[e+204>>2]|0;a:do if(i){g=0;while(1){f=c[i+(g<<2)>>2]|0;if(!f)break a;x=c[f>>2]&3;if((c[((x|0)==3?f:f+48|0)+40>>2]|0)==(c[((x|0)==2?f:f+-48|0)+40>>2]|0)?(u=c[(c[f+16>>2]|0)+96>>2]|0,(u|0)!=0):0){k=+h[u+32>>3]*.5;j=j>k?j:k}g=g+1|0}}while(0);if(+h[p>>3]>3]=j;h[p>>3]=j}if(+h[r>>3]>3]=j;h[r>>3]=j}f=c[e+212>>2]|0;if(f|0){if((f|0)==(d|0))g=0;else{g=JL(f,c[46374]|0,8,0)|0;e=c[l>>2]|0}i=c[e+232>>2]|0;f=c[f+16>>2]|0;e=f+128|0;j=j+ +(g|0);if((i|0)==(b[f+236>>1]|0)){k=+h[e>>3];h[e>>3]=k>j?k:j}e=f+120|0;if((i|0)==(b[f+238>>1]|0)){k=+h[e>>3];h[e>>3]=k>j?k:j}}m=m+1|0}t=t+1|0;e=c[v>>2]|0}m=sj(d)|0;g=c[v>>2]|0;e=b[g+238>>1]|0;h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[w+(e<<6)+16>>3];f=b[g+236>>1]|0;i=g+252|0;k=0.0;while(1){l=e+-1|0;if((e|0)<=(f|0))break;y=+h[w+(l<<6)+32>>3]+ +h[w+(e<<6)+40>>3]+ +(c[i>>2]|0);j=+h[w+(e<<6)+24>>3]+8.0+ +h[w+(l<<6)+16>>3];j=y>j?y:j;if((c[w+(l<<6)>>2]|0)>0)h[(c[(c[c[w+(l<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+j;k=k>j?k:j;e=l}b:do if((m|0)!=0?(c[g+116>>2]&1|0)!=0:0){tj(d,0);g=c[v>>2]|0;if(a[g+276>>0]|0){e=b[g+238>>1]|0;f=b[g+236>>1]|0;j=+h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];k=0.0;while(1){i=e+-1|0;if((e|0)<=(f|0))break b;z=+h[(c[(c[c[w+(i<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];y=z-j;j=z;k=k>y?k:y;e=i}}}while(0);c:do if(a[g+276>>0]|0){i=b[g+236>>1]|0;f=b[g+238>>1]|0;while(1){e=f+-1|0;if((f|0)<=(i|0))break c;if((c[w+(e<<6)>>2]|0)<=0){f=e;continue}h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[(c[(c[c[w+(f<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+k;f=e}}while(0);e=g+192|0;while(1){e=c[e>>2]|0;if(!e)break;e=c[e+16>>2]|0;h[e+24>>3]=+h[(c[(c[c[w+(c[e+232>>2]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];e=e+164|0}return}function Ni(a){a=a|0;var b=0,d=0,e=0;oj(a);b=(c[a+16>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;e=b+16|0;b=c[e>>2]|0;d=c[b+224>>2]|0;if(d){pj(a,d);b=c[e>>2]|0}d=c[b+228>>2]|0;if(!d)d=b;else{pj(a,d);d=c[e>>2]|0}e=c[d+204>>2]|0;if(e|0){b=0;while(1)if(!(c[e+(b<<2)>>2]|0))break;else b=b+1|0}b=d+164|0}return}function Oi(a){a=a|0;aj(a);bj(a);cj(a);dj(a);ej(a);return}function Pi(a){a=a|0;var b=0,c=0.0;b=wx(a,86826)|0;if(!b)a=2147483647;else{c=+a2(b);a=~~(c*+($x(a)|0))}return a|0}function Qi(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=d+16|0;e=c[r>>2]|0;q=b[e+236>>1]|0;while(1){p=b[e+238>>1]|0;if((q|0)>(p|0)){s=19;break}n=c[e+196>>2]|0;o=n+(q<<6)|0;m=c[o>>2]|0;n=n+(q<<6)+4|0;l=0;f=0;a:while(1){if((l|0)>=(m|0)){s=14;break}f=c[(c[n>>2]|0)+(l<<2)>>2]|0;h=c[f+16>>2]|0;i=c[h+256>>2]|0;b:do if(i|0){g=0;while(1){j=c[i+(g<<2)>>2]|0;if(!j)break b;k=c[j>>2]&3;if((c[(c[(c[((k|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;if((c[(c[(c[((k|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;else g=g+1|0}}while(0);h=c[h+248>>2]|0;c:do if(h|0){g=0;while(1){i=c[h+(g<<2)>>2]|0;if(!i)break c;j=c[i>>2]&3;if((c[(c[(c[((j|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;if((c[(c[(c[((j|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;else g=g+1|0}}while(0);l=l+1|0}if((s|0)==14){s=0;if(f){f=c[c[n>>2]>>2]|0;e=c[c[o+(((q|0)<(p|0)?1:-1)<<6)+4>>2]>>2]|0;if(!e){s=16;break}o=th(d)|0;p=o+16|0;a[(c[p>>2]|0)+156>>0]=2;_i(o,f,0.0,0)|0;_i(o,e,0.0,0)|0;c[(c[p>>2]|0)+232>>2]=c[(c[((c[(c[f+16>>2]|0)+232>>2]|0)<(c[(c[e+16>>2]|0)+232>>2]|0)?f:e)+16>>2]|0)+232>>2];e=c[r>>2]|0}}q=q+1|0}if((s|0)==16)qa(86734,86626,111,86737);else if((s|0)==19)return}function Ri(a){a=a|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;a=c[a+16>>2]|0;i=c[a+196>>2]|0;e=b[a+238>>1]|0;a=b[a+236>>1]|0;while(1){if((a|0)>(e|0))break;f=c[i+(a<<6)>>2]|0;g=i+(a<<6)+4|0;d=0;while(1){if((d|0)>=(f|0))break;k=c[(c[(c[g>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;j=k+232|0;h[k+16>>3]=+(c[j>>2]|0);c[j>>2]=a;d=d+1|0}a=a+1|0}return}function Si(a,d){a=a|0;d=d|0;var e=0,f=0.0,g=0,i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0;Ui(a,a);g=a+16|0;k=c[g>>2]|0;a:do if((b[k+238>>1]|0)>0?(j=c[k+8>>2]|0,e=c[j+84>>2]|0,e|0):0){o=~~(+h[k+32>>3]-+h[k+16>>3]);m=~~(+h[k+40>>3]-+h[k+24>>3]);p=(c[k+116>>2]&1|0)==0;n=p?m:o;m=p?o:m;if((e|0)==4){e=Vi(a)|0;k=c[g>>2]|0;j=c[k+8>>2]|0}else e=(e|0)==2&1;b:do if(!(e<<24>>24)){switch(c[j+84>>2]|0){case 5:{f=+h[j+64>>3];if(f<=0.0)break a;i=f/+h[k+32>>3];l=+h[j+72>>3]/+h[k+40>>3];f=i1.0&l>1.0){l=f;break b}else break a}case 1:break;default:break a}i=+h[j+16>>3];f=+(n|0)/+(m|0);if(f>3];if(f<=0.0)break a;i=f/+(m|0);f=+h[j+72>>3]/+(n|0);if(i<1.0|f<1.0)if(i>2]&1|0)==0;i=e?f:l;f=e?l:f;e=k+192|0;while(1){e=c[e>>2]|0;if(!e)break;e=c[e+16>>2]|0;p=e+16|0;l=+h[p>>3]*f;h[p>>3]=+(~~(l+(l>=0.0?.5:-.5))|0);p=e+24|0;l=+h[p>>3]*i;h[p>>3]=+(~~(l+(l>=0.0?.5:-.5))|0);e=e+164|0}Wi(a,f,i)}while(0);if(d|0)Xi(a,d);return}function Ti(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=b+16|0;b=(c[h>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;g=b+16|0;d=0;while(1){b=c[g>>2]|0;f=c[b+180>>2]|0;e=c[f+(d<<2)>>2]|0;if(!e)break;C_(c[e+16>>2]|0);C_(e);d=d+1|0}if(f){C_(f);b=c[g>>2]|0}d=c[b+172>>2]|0;if(d){C_(d);b=c[g>>2]|0}f=b+256|0;e=c[f+4>>2]|0;b=b+180|0;c[b>>2]=c[f>>2];c[b+4>>2]=e;b=c[g>>2]|0;e=b+248|0;f=c[e+4>>2]|0;b=b+172|0;c[b>>2]=c[e>>2];c[b+4>>2]=f;b=(c[g>>2]|0)+164|0}b=0;d=c[(c[h>>2]|0)+192>>2]|0;a:while(1){g=(b|0)==0;f=b+16|0;b=d;while(1){if(!b)break a;e=c[b+16>>2]|0;d=c[e+164>>2]|0;if((a[e+156>>0]|0)!=2)continue a;if(g)c[(c[h>>2]|0)+192>>2]=d;else c[(c[f>>2]|0)+164>>2]=d;C_(e);C_(b);b=d}}c[(c[(c[(c[h>>2]|0)+192>>2]|0)+16>>2]|0)+168>>2]=0;return}function Ui(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=a+16|0;d=1;while(1){f=c[e>>2]|0;if((d|0)>(c[f+180>>2]|0))break;Ui(c[(c[f+184>>2]|0)+(d<<2)>>2]|0,b);d=d+1|0}Zi(a,b);return}function Vi(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0;s=l;l=l+80|0;e=s+64|0;d=s+48|0;f=s+16|0;m=s;r=s+32|0;a=a+16|0;b=c[(c[a>>2]|0)+8>>2]|0;t=b+48|0;c[f>>2]=c[t>>2];c[f+4>>2]=c[t+4>>2];c[f+8>>2]=c[t+8>>2];c[f+12>>2]=c[t+12>>2];if((!(+h[f>>3]<.001)?(g=f+8|0,!(+h[g>>3]<.001)):0)?(i=b+32|0,c[m>>2]=c[i>>2],c[m+4>>2]=c[i+4>>2],c[m+8>>2]=c[i+8>>2],c[m+12>>2]=c[i+12>>2],c[d>>2]=c[f>>2],c[d+4>>2]=c[f+4>>2],c[d+8>>2]=c[f+8>>2],c[d+12>>2]=c[f+12>>2],c[e>>2]=c[i>>2],c[e+4>>2]=c[i+4>>2],c[e+8>>2]=c[i+8>>2],c[e+12>>2]=c[i+12>>2],Yi(r,d,e),c[f>>2]=c[r>>2],c[f+4>>2]=c[r+4>>2],c[f+8>>2]=c[r+8>>2],c[f+12>>2]=c[r+12>>2],c[d>>2]=c[r>>2],c[d+4>>2]=c[r+4>>2],c[d+8>>2]=c[r+8>>2],c[d+12>>2]=c[r+12>>2],c[e>>2]=c[m>>2],c[e+4>>2]=c[m+4>>2],c[e+8>>2]=c[m+8>>2],c[e+12>>2]=c[m+12>>2],Yi(f,d,e),i=c[a>>2]|0,j=+h[i+32>>3],k=+h[i+40>>3],n=+h[f>>3],o=n/j,p=+h[g>>3],q=p/k,!(o>=1.0&q>=1.0)):0){o=o.5?o:.5;q=+N(+(o*k/p))*p/k;p=+N(+(o*j/n))*n/j*j;a=c[i+8>>2]|0;h[a+64>>3]=p;h[a+72>>3]=q*k;a=1}else a=0;l=s;return a|0}function Wi(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;e=a+16|0;a=1;while(1){f=c[e>>2]|0;if((a|0)>(c[f+180>>2]|0))break;Wi(c[(c[f+184>>2]|0)+(a<<2)>>2]|0,b,d);a=a+1|0}e=f+16|0;h[e>>3]=+h[e>>3]*b;e=f+24|0;h[e>>3]=+h[e>>3]*d;e=f+32|0;h[e>>3]=+h[e>>3]*b;f=f+40|0;h[f>>3]=+h[f>>3]*d;return}function Xi(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;j=m+24|0;g=m+16|0;f=m;n=c[a+16>>2]|0;e=+h[n+32>>3]-+h[n+16>>3];d=+h[n+40>>3]-+h[n+24>>3];i=e/d;if(0){n=c[15686]|0;h[f>>3]=i;h[f+8>>3]=e*.0001*d;f1(n,86650,f)|0;c[g>>2]=yk(a)|0;f1(n,86675,g)|0}d=+h[b>>3];do if(!(i>d*1.1)){a=b+24|0;if(!(i<=d*.8)){c[a>>2]=0;k=9;break}c[a>>2]=-1;if(0){D1(86685,34,1,c[15686]|0)|0;k=9}}else{c[b+24>>2]=~~(d*+((c[b+20>>2]|0)-(c[b+16>>2]|0)|0)/i);k=9}while(0);if((k|0)==9?0:0){n=c[15686]|0;c[j>>2]=c[b+24>>2];f1(n,86720,j)|0}l=m;return}function Yi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=d;return}function Zi(d,e){d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;s=(hg(d)|0)==(d|0);v=d+16|0;w=c[v>>2]|0;a:do if(s){f=b[w+236>>1]|0;d=b[w+238>>1]|0;q=d<<16>>16;r=w+196|0;s=w+196|0;p=f<<16>>16;i=-2147483647.0;g=2147483647.0;while(1){if((p|0)>(q|0))break;j=c[r>>2]|0;o=c[j+(p<<6)>>2]|0;if((o|0)!=0?(t=c[j+(p<<6)+4>>2]|0,u=c[t>>2]|0,(u|0)!=0):0){l=1;j=u;while(1){j=c[j+16>>2]|0;k=a[j+156>>0]|0;if(!((l|0)<(o|0)&k<<24>>24!=0))break;j=c[t+(l<<2)>>2]|0;l=l+1|0}if(!(k<<24>>24)){m=+h[j+16>>3]-+h[j+88>>3];n=g>2]|0)+(p<<6)+4>>2]|0;k=o+-2|0;j=o+-1|0;while(1){j=c[(c[l+(j<<2)>>2]|0)+16>>2]|0;if(!(a[j+156>>0]|0))break;else{j=k;k=k+-1|0}}x=+h[j+96>>3]+ +h[j+16>>3];i=i>x?i:x;g=n?g:m}}p=p+1|0}k=c[w+180>>2]|0;l=w+184|0;j=1;while(1){if((j|0)>(k|0))break a;u=c[(c[(c[l>>2]|0)+(j<<2)>>2]|0)+16>>2]|0;x=+h[u+16>>3]+-8.0;m=+h[u+32>>3]+8.0;j=j+1|0;i=i>m?i:m;g=g>2]|0)+16>>2]|0)+232>>2]|0);g=+(c[(c[(c[w+256>>2]|0)+16>>2]|0)+232>>2]|0);f=b[w+236>>1]|0;d=b[w+238>>1]|0}while(0);e=c[(c[e+16>>2]|0)+196>>2]|0;m=+h[(c[(c[c[e+(d<<16>>16<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[w+120>>3];x=+h[w+128>>3]+ +h[(c[(c[c[e+(f<<16>>16<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];h[w+16>>3]=g;h[w+24>>3]=m;e=c[v>>2]|0;h[e+32>>3]=i;h[e+40>>3]=x;return}function _i(a,d,e,f){a=a|0;d=d|0;e=+e;f=f|0;var g=0,h=0,i=0,j=0;i=tH(96)|0;j=i+48|0;c[j>>2]=c[j>>2]|3;c[i>>2]=c[i>>2]&-4|2;g=tH(176)|0;h=i+16|0;c[h>>2]=g;c[((c[i>>2]&3|0)==3?i:j)+40>>2]=a;c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]=d;if(e>65535.0){$i(e);e=65535.0;g=c[h>>2]|0}b[g+170>>1]=~~(e+(e>=0.0?.5:-.5));c[g+156>>2]=f;hh(i)|0;return i|0}function $i(a){a=+a;var b=0,d=0;b=l;l=l+16|0;d=b;h[d>>3]=a;c[d+8>>2]=65535;Ow(1,86750,d)|0;l=b;return}function aj(a){a=a|0;var b=0,d=0,e=0,f=0;a=(c[a+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if(!a)break;f=a+16|0;e=c[f>>2]|0;a=e+172|0;d=c[a+4>>2]|0;e=e+248|0;c[e>>2]=c[a>>2];c[e+4>>2]=d;e=c[f>>2]|0;d=e+180|0;a=c[d+4>>2]|0;e=e+256|0;c[e>>2]=c[d>>2];c[e+4>>2]=a;e=c[f>>2]|0;a=c[e+180>>2]|0;d=0;while(1)if(!(c[a+(d<<2)>>2]|0))break;else d=d+1|0;b=c[e+172>>2]|0;a=0;while(1)if(!(c[b+(a<<2)>>2]|0))break;else a=a+1|0;c[e+176>>2]=0;a=tH((a+d<<2)+16|0)|0;e=c[f>>2]|0;c[e+172>>2]=a;c[e+184>>2]=0;e=tH(16)|0;a=c[f>>2]|0;c[a+180>>2]=e;a=a+164|0}return}function bj(d){d=d|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0;z=l;l=l+16|0;w=z;x=d+16|0;u=c[x>>2]|0;y=c[u+196>>2]|0;d=(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1)!=0;v=c[u+248>>2]|0;c[w>>2]=v;c[w+4>>2]=d?5:v;v=b[u+236>>1]|0;d=u;while(1){if((v|0)>(b[d+238>>1]|0))break;r=y+(v<<6)+4|0;c[(c[(c[c[r>>2]>>2]|0)+16>>2]|0)+232>>2]=0;s=y+(v<<6)|0;t=+(c[w+((v&1)<<2)>>2]|0);p=0.0;k=0;a:while(1){if((k|0)>=(c[s>>2]|0))break;f=c[r>>2]|0;m=c[f+(k<<2)>>2]|0;u=m+16|0;d=c[u>>2]|0;i=+h[d+96>>3];h[d+240>>3]=i;if((c[d+208>>2]|0)>0){j=0;f=0;while(1){g=c[(c[d+204>>2]|0)+(j<<2)>>2]|0;if(!g)break;q=c[g>>2]&3;if((c[((q|0)==3?g:g+48|0)+40>>2]|0)==(c[((q|0)==2?g:g+-48|0)+40>>2]|0)){f=(WK(g)|0)+f|0;d=c[u>>2]|0}j=j+1|0}q=d+96|0;i=+h[q>>3]+ +(f|0);h[q>>3]=i;f=c[r>>2]|0}q=k+1|0;f=c[f+(q<<2)>>2]|0;if(f){o=f+16|0;i=i+t+ +h[(c[o>>2]|0)+88>>3];_i(m,f,i,0)|0;d=~~(i+p);c[(c[o>>2]|0)+232>>2]=d;p=+(d|0);d=c[u>>2]|0}f=c[d+112>>2]|0;if(f){j=c[d+256>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;d=(c[(c[(c[((c[k>>2]&3|0)==2?k:k+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0);g=d?j:k;j=d?k:j;k=f+16|0;d=c[k>>2]|0;i=+((O(c[(c[x>>2]|0)+248>>2]|0,e[d+170>>1]|0)|0)/2|0|0);o=c[g>>2]&3;f=c[((o|0)==2?g:g+-48|0)+40>>2]|0;g=c[((o|0)==3?g:g+48|0)+40>>2]|0;if(!(mj(g,f)|0))_i(f,g,+(~~(+h[(c[f+16>>2]|0)+96>>3]+i+ +h[(c[g+16>>2]|0)+88>>3])|0),c[d+156>>2]|0)|0;d=c[j>>2]&3;f=c[((d|0)==3?j:j+48|0)+40>>2]|0;d=c[((d|0)==2?j:j+-48|0)+40>>2]|0;if(!(mj(d,f)|0)){_i(f,d,+(~~(+h[(c[f+16>>2]|0)+96>>3]+i+ +h[(c[d+16>>2]|0)+88>>3])|0),c[(c[k>>2]|0)+156>>2]|0)|0;o=0}else o=0}else o=0;while(1){d=c[u>>2]|0;if((o|0)>=(c[d+192>>2]|0)){k=q;continue a}m=c[(c[d+188>>2]|0)+(o<<2)>>2]|0;k=c[m>>2]&3;g=c[((k|0)==3?m:m+48|0)+40>>2]|0;k=c[((k|0)==2?m:m+-48|0)+40>>2]|0;j=(c[(c[g+16>>2]|0)+236>>2]|0)<(c[(c[k+16>>2]|0)+236>>2]|0);f=j?g:k;g=j?k:g;i=+h[(c[g+16>>2]|0)+88>>3]+ +h[(c[f+16>>2]|0)+96>>3];k=m+16|0;j=~~(i+ +(O(c[(c[x>>2]|0)+248>>2]|0,e[(c[k>>2]|0)+170>>1]|0)|0));n=eh(f,g)|0;if(!n){d=c[k>>2]|0;if(!(c[d+96>>2]|0))_i(f,g,+(j|0),c[d+156>>2]|0)|0}else{A=+(j|0);d=c[k>>2]|0;B=+h[d+136>>3];i=i+ +(c[(c[x>>2]|0)+248>>2]|0)+ +(~~(B+(B>=0.0?.5:-.5))|0);f=~~(i65535){$i(+(f|0));f=65535;d=c[k>>2]|0}k=c[n+16>>2]|0;j=k+170|0;g=e[j>>1]|0;b[j>>1]=(f|0)<(g|0)?g:f;k=k+156|0;c[k>>2]=c[(c[((c[k>>2]|0)>(c[d+156>>2]|0)?n:m)+16>>2]|0)+156>>2]}o=o+1|0}}v=v+1|0;d=c[x>>2]|0}l=z;return}function cj(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;d=(c[b+16>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;g=d+16|0;d=c[g>>2]|0;e=c[d+256>>2]|0;a:do if(e){f=0;while(1){e=c[e+(f<<2)>>2]|0;if(!e)break a;n=th(b)|0;d=n+16|0;a[(c[d>>2]|0)+156>>0]=2;l=e+16|0;k=c[l>>2]|0;i=~~(+h[k+56>>3]-+h[k+16>>3]);m=(i|0)>0;j=m?0:0-i|0;i=m?i:0;m=e+48|0;_i(n,c[((c[e>>2]&3|0)==3?e:m)+40>>2]|0,+(i+1|0),c[k+156>>2]|0)|0;k=e+-48|0;_i(n,c[((c[e>>2]&3|0)==2?e:k)+40>>2]|0,+(j+1|0),c[(c[l>>2]|0)+156>>2]|0)|0;l=c[e>>2]&3;i=(c[(c[(c[((l|0)==3?e:m)+40>>2]|0)+16>>2]|0)+232>>2]|0)-i|0;e=(c[(c[(c[((l|0)==2?e:k)+40>>2]|0)+16>>2]|0)+232>>2]|0)-j|0;c[(c[d>>2]|0)+232>>2]=((i|0)<(e|0)?i:e)+-1;d=c[g>>2]|0;f=f+1|0;e=c[d+256>>2]|0}}while(0);d=d+164|0}return}function dj(a){a=a|0;if((c[(c[a+16>>2]|0)+180>>2]|0)>0){hj(a);ij(a);jj(a);kj(a)}return}function ej(a){a=a|0;var b=0.0,d=0.0,e=0,f=0;e=a+16|0;f=c[(c[e>>2]|0)+8>>2]|0;if((c[f+84>>2]|0)==3?(b=+h[f+64>>3],d=+h[f+72>>3],!(d*b<=1.0)):0){fj(a);f=c[e>>2]|0;d=(c[f+116>>2]&1|0)==0?b:d;_i(c[f+256>>2]|0,c[f+260>>2]|0,d<65535.0?d:65535.0,1e3)|0}return}function fj(a){a=a|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n;e=JL(a,c[46374]|0,8,0)|0;gj(a);i=a+16|0;g=c[i>>2]|0;j=c[g+256>>2]|0;k=c[g+260>>2]|0;f=+(e|0);e=b[g+236>>1]|0;while(1){if((e|0)>(b[g+238>>1]|0))break;d=c[g+196>>2]|0;do if(c[d+(e<<6)>>2]|0){d=c[c[d+(e<<6)+4>>2]>>2]|0;if(!d){c[m>>2]=qy(a)|0;c[m+4>>2]=e;Ow(1,86834,m)|0;break}else{_i(j,d,+h[(c[d+16>>2]|0)+88>>3]+f+ +h[g+96>>3],0)|0;g=c[i>>2]|0;d=c[g+196>>2]|0;d=c[(c[d+(e<<6)+4>>2]|0)+((c[d+(e<<6)>>2]|0)+-1<<2)>>2]|0;_i(d,k,+h[(c[d+16>>2]|0)+96>>3]+f+ +h[g+64>>3],0)|0;break}}while(0);e=e+1|0;g=c[i>>2]|0}l=n;return}function gj(b){b=b|0;var d=0,e=0,f=0;d=b+16|0;if(!(c[(c[d>>2]|0)+256>>2]|0)){f=th(hg(b)|0)|0;a[(c[f+16>>2]|0)+156>>0]=2;e=th(hg(b)|0)|0;a[(c[e+16>>2]|0)+156>>0]=2;if((c[(c[d>>2]|0)+12>>2]|0?(hg(b)|0)!=(b|0):0)?(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1|0)==0:0){b=c[d>>2]|0;_i(f,e,+(~~+h[b+48+((+h[b+48>>3]>+h[b+80>>3]?0:2)<<4)>>3]|0),0)|0}d=c[d>>2]|0;c[d+256>>2]=f;c[d+260>>2]=e}return}function hj(a){a=a|0;var b=0,d=0;do if((hg(a)|0)!=(a|0)){fj(a);a=a+16|0;b=c[a>>2]|0;b=eh(c[b+256>>2]|0,c[b+260>>2]|0)|0;if(!b){d=c[a>>2]|0;_i(c[d+256>>2]|0,c[d+260>>2]|0,1.0,128)|0;break}else{d=(c[b+16>>2]|0)+156|0;c[d>>2]=(c[d>>2]|0)+128;break}}else a=a+16|0;while(0);b=1;while(1){d=c[a>>2]|0;if((b|0)>(c[d+180>>2]|0))break;hj(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function ij(d){d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0;k=JL(d,c[46374]|0,8,0)|0;o=d+16|0;e=c[o>>2]|0;m=+(k|0);k=b[e+236>>1]|0;while(1){if((k|0)>(b[e+238>>1]|0)){f=1;break}e=c[e+196>>2]|0;a:do if(c[e+(k<<6)>>2]|0?(l=c[c[e+(k<<6)+4>>2]>>2]|0,l|0):0){i=l+16|0;f=c[(c[i>>2]|0)+236>>2]|0;while(1){if((f|0)<=0)break;f=f+-1|0;j=c[(c[(c[(c[(hg(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)+4>>2]|0)+(f<<2)>>2]|0;g=j+16|0;e=c[g>>2]|0;if(!(a[e+156>>0]|0)){n=10;break}if(lj(d,j)|0){n=9;break}}if((n|0)==9){e=c[g>>2]|0;n=10}if((n|0)==10){n=0;_i(j,c[(c[o>>2]|0)+256>>2]|0,+h[e+96>>3]+m,0)|0}f=(c[(c[(c[o>>2]|0)+196>>2]|0)+(k<<6)>>2]|0)+(c[(c[i>>2]|0)+236>>2]|0)|0;while(1){if((f|0)>=(c[(c[(c[(hg(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)>>2]|0))break a;i=c[(c[(c[(c[(hg(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)+4>>2]|0)+(f<<2)>>2]|0;g=i+16|0;e=c[g>>2]|0;if(!(a[e+156>>0]|0))break;if(!(lj(d,i)|0))f=f+1|0;else{n=15;break}}if((n|0)==15){n=0;e=c[g>>2]|0}_i(c[(c[o>>2]|0)+260>>2]|0,i,+h[e+88>>3]+m,0)|0}while(0);k=k+1|0;e=c[o>>2]|0}while(1){if((f|0)>(c[e+180>>2]|0))break;ij(c[(c[e+184>>2]|0)+(f<<2)>>2]|0);f=f+1|0;e=c[o>>2]|0}return}function jj(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0;e=JL(a,c[46374]|0,8,0)|0;gj(a);b=a+16|0;d=+(e|0);a=1;while(1){e=c[b>>2]|0;if((a|0)>(c[e+180>>2]|0))break;e=c[(c[e+184>>2]|0)+(a<<2)>>2]|0;gj(e);f=c[b>>2]|0;g=e+16|0;_i(c[f+256>>2]|0,c[(c[g>>2]|0)+256>>2]|0,+h[f+96>>3]+d,0)|0;f=c[b>>2]|0;_i(c[(c[g>>2]|0)+260>>2]|0,c[f+260>>2]|0,+h[f+64>>3]+d,0)|0;jj(e);a=a+1|0}return}function kj(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0;d=JL(a,c[46374]|0,8,0)|0;n=a+16|0;a=1;while(1){f=c[n>>2]|0;e=c[f+180>>2]|0;if((a|0)>(e|0))break;gj(c[(c[f+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}m=+(d|0);l=1;a=e;d=f;while(1){if((l|0)>(a|0))break;k=l+1|0;j=k;while(1){e=c[d+184>>2]|0;f=c[e+(l<<2)>>2]|0;if((j|0)>(a|0))break;e=c[e+(j<<2)>>2]|0;g=(b[(c[f+16>>2]|0)+236>>1]|0)>(b[(c[e+16>>2]|0)+236>>1]|0);i=g?e:f;e=g?f:e;f=c[i+16>>2]|0;g=c[e+16>>2]|0;o=b[g+236>>1]|0;h=o<<16>>16;if((b[f+238>>1]|0)>=o<<16>>16){a=(c[(c[(c[c[(c[f+196>>2]|0)+(h<<6)+4>>2]>>2]|0)+16>>2]|0)+236>>2]|0)<(c[(c[(c[c[(c[g+196>>2]|0)+(h<<6)+4>>2]>>2]|0)+16>>2]|0)+236>>2]|0);_i(c[(c[(a?i:e)+16>>2]|0)+260>>2]|0,c[(c[(a?e:i)+16>>2]|0)+256>>2]|0,m,0)|0;a=c[n>>2]|0;d=a;a=c[a+180>>2]|0}j=j+1|0}kj(f);d=c[n>>2]|0;l=k;a=c[d+180>>2]|0}return}function lj(b,d){b=b|0;d=d|0;var e=0;d=c[d+16>>2]|0;if((a[d+156>>0]|0)==1){d=c[c[d+256>>2]>>2]|0;while(1){e=c[(c[d+16>>2]|0)+116>>2]|0;if(!e)break;else d=e}if(!(nz(b,c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0))d=(nz(b,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0)==0&1;else d=0}else d=0;return d|0}function mj(a,b){a=a|0;b=b|0;return nj(a,b)|0}function nj(a,b){a=a|0;b=b|0;var d=0,e=0;a:do if((a|0)==(b|0))a=1;else{d=c[(c[a+16>>2]|0)+180>>2]|0;a=0;while(1){e=c[d+(a<<2)>>2]|0;if(!e){a=0;break a}if(!(nj(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,b)|0))a=a+1|0;else{a=1;break}}}while(0);return a|0}function oj(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;d=c[k>>2]|0;j=b[d+236>>1]|0;while(1){if((j|0)>(b[d+238>>1]|0))break;h=c[d+196>>2]|0;g=c[h+(j<<6)>>2]|0;h=h+(j<<6)+4|0;i=0;f=0;while(1){if((f|0)>=(g|0))break;e=c[(c[(c[h>>2]|0)+(f<<2)>>2]|0)+16>>2]|0;c[e+236>>2]=i;if((a[e+159>>0]|0)==6)e=c[e+216>>2]|0;else e=1;i=e+i|0;f=f+1|0}if((i|0)>(g|0)){d=c[h>>2]|0;if(!d)d=uH((i<<2)+4|0)|0;else d=wH(d,(i<<2)+4|0)|0;f=c[(c[k>>2]|0)+196>>2]|0;c[f+(j<<6)+4>>2]=d;e=c[f+(j<<6)>>2]|0;while(1){d=e+-1|0;if((e|0)<=0)break;h=c[f+(j<<6)+4>>2]|0;e=c[h+(d<<2)>>2]|0;c[h+(c[(c[e+16>>2]|0)+236>>2]<<2)>>2]=e;e=d;f=c[(c[k>>2]|0)+196>>2]|0}c[f+(j<<6)>>2]=i;c[(c[f+(j<<6)+4>>2]|0)+(i<<2)>>2]=0;d=c[k>>2]|0}j=j+1|0}return}function pj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;o=l;l=l+48|0;n=o+32|0;m=o+8|0;d=o+24|0;k=o+16|0;j=o;e=b+16|0;f=c[e>>2]|0;a:do if((c[f+216>>2]|0)>=2){c[m>>2]=~~(+h[f+16>>3]-+h[f+88>>3]);c[m+4>>2]=~~+h[f+24>>3];c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];qj(d,b,n);g=d;i=c[g+4>>2]|0;d=m;c[d>>2]=c[g>>2];c[d+4>>2]=i;d=c[e>>2]|0;if((c[d+184>>2]|0)>0){j=c[c[d+180>>2]>>2]|0;d=(c[d+236>>2]|0)+1|0;j=Gx(a,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)|0;while(1){if(!j)break a;i=(c[j>>2]&3|0)==2?j:j+-48|0;e=i+48|0;f=c[((c[i>>2]&3|0)==3?i:e)+40>>2]|0;if((f|0)!=(b|0)?(RL(f)|0)==(b|0):0){f=c[((c[i>>2]&3|0)==3?i:e)+40>>2]|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];rj(k,a,f,n,d);f=k;e=c[f+4>>2]|0;g=m;c[g>>2]=c[f>>2];c[g+4>>2]=e;yh(i);g=i+-48|0;e=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;f=c[e+172>>2]|0;if(!f)e=uH((c[e+176>>2]<<2)+8|0)|0;else e=wH(f,(c[e+176>>2]<<2)+8|0)|0;c[(c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0)+172>>2]=e;p=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;e=c[p+172>>2]|0;p=p+176|0;f=c[p>>2]|0;c[p>>2]=f+1;c[e+(f<<2)>>2]=i;i=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;c[(c[i+172>>2]|0)+(c[i+176>>2]<<2)>>2]=0;d=d+1|0}j=Hx(a,j)|0}}else{i=c[c[d+172>>2]>>2]|0;d=(c[d+236>>2]|0)+1|0;i=Dx(a,c[((c[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0)|0;while(1){if(!i)break a;e=i+-48|0;f=c[((c[i>>2]&3|0)==2?i:e)+40>>2]|0;if((f|0)!=(b|0)?(RL(f)|0)==(b|0):0){f=c[((c[i>>2]&3|0)==2?i:e)+40>>2]|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];rj(j,a,f,n,d);f=j;e=c[f+4>>2]|0;g=m;c[g>>2]=c[f>>2];c[g+4>>2]=e;yh(i);g=i+48|0;e=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;f=c[e+180>>2]|0;if(!f)e=uH((c[e+184>>2]<<2)+8|0)|0;else e=wH(f,(c[e+184>>2]<<2)+8|0)|0;c[(c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0)+180>>2]=e;f=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;k=c[f+180>>2]|0;f=f+184|0;p=c[f>>2]|0;c[f>>2]=p+1;c[k+(p<<2)>>2]=i;p=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;c[(c[p+180>>2]|0)+(c[p+184>>2]<<2)>>2]=0;d=d+1|0}i=Fx(a,i)|0}}}while(0);l=o;return}function qj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0;aN(b,c[(c[(dz(b)|0)+16>>2]|0)+116>>2]&1);e=c[b+16>>2]|0;h[e+24>>3]=+(c[d+4>>2]|0);f=+h[e+88>>3]+ +(c[d>>2]|0);h[e+16>>3]=f;f=f+ +h[e+96>>3];c[d>>2]=~~(f+ +(c[(c[(dz(b)|0)+16>>2]|0)+248>>2]|0));e=d;b=c[e+4>>2]|0;d=a;c[d>>2]=c[e>>2];c[d+4>>2]=b;return}function rj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=l;l=l+16|0;h=i;b=hg(b)|0;g=RL(d)|0;if((g|0)!=(d|0))qh(g,d);j=c[d+16>>2]|0;c[j+236>>2]=f;g=c[(c[g+16>>2]|0)+232>>2]|0;c[j+232>>2]=g;c[(c[(c[(c[b+16>>2]|0)+196>>2]|0)+(g<<6)+4>>2]|0)+(f<<2)>>2]=d;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];qj(a,d,h);l=i;return}function sj(a){a=a|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,l=0,m=0,n=0.0;m=c[(c[(hg(a)|0)+16>>2]|0)+196>>2]|0;if((hg(a)|0)==(a|0))j=8.0;else j=+(JL(a,c[46374]|0,8,0)|0);l=a+16|0;g=c[l>>2]|0;f=0;k=1;e=+h[g+120>>3];d=+h[g+128>>3];while(1){if((k|0)>(c[g+180>>2]|0))break;i=c[(c[g+184>>2]|0)+(k<<2)>>2]|0;f=sj(i)|0|f;i=c[i+16>>2]|0;g=c[l>>2]|0;if((b[i+238>>1]|0)==(b[g+238>>1]|0)){n=+h[i+120>>3]+j;e=e>n?e:n}if((b[i+236>>1]|0)==(b[g+236>>1]|0)){n=+h[i+128>>3]+j;d=d>n?d:n}k=k+1|0}if((hg(a)|0)!=(a|0)?(c[(c[l>>2]|0)+12>>2]|0)!=0:0)if(!(c[(c[(ez(a)|0)+16>>2]|0)+116>>2]&1)){k=c[l>>2]|0;f=1;e=+h[k+56>>3]+e;d=+h[k+88>>3]+d}else f=1;k=c[l>>2]|0;h[k+120>>3]=e;h[k+128>>3]=d;if((hg(a)|0)!=(a|0)){l=c[l>>2]|0;a=m+(b[l+236>>1]<<6)+24|0;n=+h[a>>3];h[a>>3]=n>d?n:d;m=m+(b[l+238>>1]<<6)+16|0;n=+h[m>>3];h[m>>3]=n>e?n:e}return f|0}function tj(a,d){a=a|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0.0,q=0.0;o=c[(c[(hg(a)|0)+16>>2]|0)+196>>2]|0;if((hg(a)|0)==(a|0))e=0;else e=JL(a,c[46374]|0,8,0)|0;l=a+16|0;i=c[l>>2]|0;m=e+d|0;k=+(e|0);j=1;f=+h[i+128>>3];g=+h[i+120>>3];e=i;while(1){if((j|0)>(c[e+180>>2]|0))break;i=c[(c[e+184>>2]|0)+(j<<2)>>2]|0;tj(i,m);i=c[i+16>>2]|0;e=c[l>>2]|0;if((b[i+238>>1]|0)==(b[e+238>>1]|0)){q=+h[i+120>>3]+k;g=g>q?g:q}if((b[i+236>>1]|0)==(b[e+236>>1]|0)){q=+h[i+128>>3]+k;f=f>q?f:q}j=j+1|0}h[e+120>>3]=g;h[e+128>>3]=f;if(((hg(a)|0)!=(a|0)?(n=c[l>>2]|0,c[n+12>>2]|0):0)?(p=-g-f+ +h[n+48+((+h[n+104>>3]>+h[n+72>>3]?3:1)<<4)+8>>3]-+h[(c[(c[c[o+(b[n+236>>1]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+ +h[(c[(c[c[o+(b[n+238>>1]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3],p>0.0):0)uj(a,~~p,d);if((hg(a)|0)!=(a|0)){n=c[l>>2]|0;m=o+(b[n+236>>1]<<6)+24|0;q=+h[m>>3];p=+h[n+128>>3];h[m>>3]=q>p?q:p;o=o+(b[n+238>>1]<<6)+16|0;p=+h[o>>3];q=+h[n+120>>3];h[o>>3]=p>q?p:q}return}function uj(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0;k=c[(hg(a)|0)+16>>2]|0;q=c[k+196>>2]|0;p=c[a+16>>2]|0;a=b[p+238>>1]|0;f=b[p+236>>1]|0;l=(d+1|0)/2|0;m=p+120|0;n=+h[m>>3];o=+(l|0);i=+(e|0);e=~~(o+i+n-+h[q+(a<<6)+16>>3]);if((e|0)>0){g=+(e|0);while(1){if((a|0)<(f|0))break;if((c[q+(a<<6)>>2]|0)>0){r=(c[(c[c[q+(a<<6)+4>>2]>>2]|0)+16>>2]|0)+24|0;h[r>>3]=+h[r>>3]+g}a=a+-1|0}j=+h[p+128>>3];a=e;g=j+ +(d-l|0)}else{j=+h[p+128>>3];a=d-l|0;g=j}a=~~(+(a|0)+i+g-+h[q+(f<<6)+24>>3]);a:do if((a|0)>0){e=b[k+236>>1]|0;g=+(a|0);while(1){a=f+-1|0;if((f|0)<=(e|0))break a;if((c[q+(a<<6)>>2]|0)<=0){f=a;continue}f=(c[(c[c[q+(a<<6)+4>>2]>>2]|0)+16>>2]|0)+24|0;h[f>>3]=+h[f>>3]+g;f=a}}while(0);h[p+128>>3]=j+ +(d-l|0);h[m>>3]=n+o;return}function vj(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b+16>>2]|0;f=a[e+84>>0]|0;b=c[d+16>>2]|0;do if(f<<24>>24==(a[b+84>>0]|0)){if(+h[e+56>>3]==+h[b+56>>3]){if(!(f<<24>>24==0?1:+h[e+64>>3]==+h[b+64>>3])){b=0;break}}else if(f<<24>>24){b=0;break}if(+h[e+16>>3]==+h[b+16>>3]?+h[e+24>>3]==+h[b+24>>3]:0){b=1;break}b=(a[e+44>>0]|0)==0&1}else b=0;while(0);return b|0}function wj(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+16|0;d=c[i>>2]|0;b[d+236>>1]=32767;b[d+238>>1]=-1;d=0;h=Ry(a)|0;while(1){e=c[i>>2]|0;if(!h)break;f=e+238|0;g=c[(c[h+16>>2]|0)+232>>2]|0;if((g|0)>(b[f>>1]|0))b[f>>1]=g;e=e+236|0;if((g|0)<(b[e>>1]|0))b[e>>1]=g;if(!d)d=h;else d=(g|0)<(c[(c[d+16>>2]|0)+232>>2]|0)?h:d;h=Sy(a,h)|0}c[e+264>>2]=d;return}function xj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0;b=wx(a,86879)|0;if(!b)b=2147483647;else{g=+a2(b);b=~~(g*+($x(a)|0))}e=a+16|0;d=0;while(1){f=c[e>>2]|0;if((d|0)>=(c[f+220>>2]|0))break;c[f+192>>2]=c[(c[f+216>>2]|0)+(d<<2)>>2];eI(a,(c[f+180>>2]|0)==0&1,b)|0;d=d+1|0}return}function yj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+16|0;e=f;if(!(wx(a,86888)|0))Aj(a,d);else{g=(c[a+16>>2]|0)+136|0;b[g>>1]=b[g>>1]|16;zj(a,d)}if(0){g=c[15686]|0;a=c[a+16>>2]|0;d=b[a+236>>1]|0;c[e>>2]=b[a+238>>1];c[e+4>>2]=d;f1(g,86896,e)|0}l=f;return}function zj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0.0;i=l;l=l+16|0;h=i;c[45977]=0;a[h>>0]=a[18484]|0;a[h+1>>0]=a[18485]|0;a[h+2>>0]=a[18486]|0;a[h+3>>0]=a[18487]|0;h=Wx(87106,h,0)|0;zz(h,87135,280,1)|0;lz(h,17404,17344);Bj(b);e=wx(b,86879)|0;if(!e)f=2147483647;else{j=+a2(e);f=~~(j*+($x(b)|0))}Rj(b,0);Sj(b,h);Tj(b,h);Uj(b,h,0,0);Vj(h);g=Wj(h)|0;Xj(h);if(d|0){Lk(h);zk(h)}e=wx(b,99560)|0;if(!e)e=-1;else e=$1(e)|0;xH(h,1,f,e)|0;Yj(b,h,g);_x(h)|0;l=i;return}function Aj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g+16|0;e=g+8|0;d=g;Bj(a);do if(!b){Cj(a,a);Ok(a);Dj(d,a);h=d;d=c[h+4>>2]|0;b=e;c[b>>2]=c[h>>2];c[b+4>>2]=d;Hl(a,0);b=0}else{Lk(a);zk(a);Cj(a,a);Ok(a);Dj(d,a);i=d;d=c[i+4>>2]|0;h=e;c[h>>2]=c[i>>2];c[h+4>>2]=d;Hl(a,0);h=c[a+16>>2]|0;if((c[h+220>>2]|0)<=1?(c[h+180>>2]|0)<=0:0)break;c[b+32>>2]=1;b=0}while(0);wk(a);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];if(Ej(a,f)|0)Hl(a,0);if(!b)xj(a);else Ak(a,b);Fj(a,b);Gj(a);l=g;return}function Bj(d){d=d|0;var f=0,g=0,h=0;if(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1){g=Ry(d)|0;while(1){if(!g)break;f=Dx(d,g)|0;while(1){if(!f)break;h=(c[f+16>>2]|0)+170|0;b[h>>1]=(e[h>>1]|0)<<1;f=Fx(d,f)|0}g=Sy(d,g)|0}h=(c[d+16>>2]|0)+252|0;c[h>>2]=((c[h>>2]|0)+1|0)/2|0}return}function Cj(a,b){a=a|0;b=b|0;var d=0;b=vA(b)|0;while(1){if(!b)break;d=Oj(b)|0;do if(d)if((d|0)==7&(c[46364]|0)==100){Kj(a,b);break}else{Pj(a,b,d);break}else Cj(a,b);while(0);b=wA(b)|0}return}function Dj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=d+16|0;e=c[i>>2]|0;d=c[e+228>>2]|0;e=c[e+224>>2]|0;f=(e|0)==0;if(!d)if(f){j=0;k=0}else g=4;else if(f)g=5;else g=4;if((g|0)==4){d=RL(e)|0;e=c[i>>2]|0;c[e+224>>2]=d;d=c[e+228>>2]|0;if(!d){h=0;d=e;g=12}else g=5}do if((g|0)==5){d=RL(d)|0;e=c[i>>2]|0;c[e+228>>2]=d;if(d){e=d+16|0;d=c[e>>2]|0;f=(a[d+159>>0]|0)==5&1;while(1){d=c[c[d+180>>2]>>2]|0;if(!d){g=11;break}h=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;if((h|0)!=(RL(h)|0)){g=9;break}vk(d);d=c[e>>2]|0}if((g|0)==9)qa(86999,86939,346,87031);else if((g|0)==11){h=f;d=c[i>>2]|0;g=12;break}}else{h=0;d=e;g=12}}while(0);a:do if((g|0)==12){d=c[d+224>>2]|0;if(!d){j=0;k=h}else{e=d+16|0;d=c[e>>2]|0;f=(a[d+159>>0]|0)==3&1;while(1){d=c[c[d+172>>2]>>2]|0;if(!d){j=f;k=h;break a}i=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((i|0)!=(RL(i)|0))break;vk(d);d=c[e>>2]|0}qa(87044,86939,353,87031)}}while(0);c[b>>2]=j;c[b+4>>2]=k;return}function Ej(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+16|0;i=c[j>>2]|0;if((c[i+228>>2]|0)==0?(c[i+224>>2]|0)==0:0)d=0;else e=3;a:do if((e|0)==3){g=Ry(a)|0;i=d+4|0;h=c[d>>2]&65535;d=0;while(1){if(!g)break a;if((g|0)==(RL(g)|0)){f=g+16|0;e=c[f>>2]|0;if((c[e+184>>2]|0)==0?(k=c[(c[j>>2]|0)+228>>2]|0,!((k|0)==0|(g|0)==(k|0))):0){d=oh(g,k,0)|0;e=c[d+16>>2]|0;b[e+170>>1]=c[i>>2];c[e+156>>2]=0;e=c[f>>2]|0}if((c[e+176>>2]|0)==0?(l=c[(c[j>>2]|0)+224>>2]|0,!((l|0)==0|(g|0)==(l|0))):0){d=oh(l,g,0)|0;f=c[d+16>>2]|0;b[f+170>>1]=h;c[f+156>>2]=0}}g=Sy(a,g)|0}}while(0);return (d|0)!=0|0}function Fj(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;g=Ry(d)|0;k=d+16|0;f=c[k>>2]|0;a:do if(g){b[f+236>>1]=32767;b[f+238>>1]=-1;j=(e|0)==0;while(1){if(!g)break;f=RL(g)|0;i=c[g+16>>2]|0;e=c[i+232>>2]|0;do if((f|0)!=(g|0)){if(!j)if(!e)e=0;else break;e=e+(c[(c[f+16>>2]|0)+232>>2]|0)|0;c[i+232>>2]=e}while(0);f=c[k>>2]|0;h=f+238|0;if((e|0)>(b[h>>1]|0))b[h>>1]=e;f=f+236|0;if((e|0)<(b[f>>1]|0))b[f>>1]=e;switch(a[i+159>>0]|0){case 6:case 0:break;default:TL(g)}g=Sy(d,g)|0}if((hg(d)|0)==(d|0)){if((c[46364]|0)==100)e=1;else{Jj(d);break}while(1){f=c[k>>2]|0;if((e|0)>(c[f+180>>2]|0))break a;Ij(c[(c[f+184>>2]|0)+(e<<2)>>2]|0);e=e+1|0}}}else{b[f+238>>1]=0;b[f+236>>1]=0}while(0);return}function Gj(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=b+16|0;e=0;while(1){d=c[j>>2]|0;if((e|0)>=(c[d+220>>2]|0))break;i=c[(c[d+216>>2]|0)+(e<<2)>>2]|0;c[d+192>>2]=i;d=i;while(1){if(!d)break;i=d+16|0;Hj((c[i>>2]|0)+172|0);Hj((c[i>>2]|0)+180|0);i=c[i>>2]|0;a[i+157>>0]=0;d=c[i+164>>2]|0}e=e+1|0}i=Ry(b)|0;while(1){if(!i)break;h=Dx(b,i)|0;while(1){if(!h)break;f=h+16|0;d=c[f>>2]|0;g=c[d+172>>2]|0;if((g|0)!=0?(k=g+16|0,(h|0)==(c[(c[k>>2]|0)+116>>2]|0)):0){d=Ry(b)|0;while(1){if(!d)break;e=Dx(b,d)|0;while(1){if(!e)break;if((h|0)!=(e|0)?(l=(c[e+16>>2]|0)+172|0,m=c[l>>2]|0,(m|0)!=0&(g|0)==(m|0)):0)c[l>>2]=0;e=Fx(b,e)|0}d=Sy(b,d)|0}C_(c[k>>2]|0);C_(g);d=c[f>>2]|0}c[d+172>>2]=0;h=Fx(b,h)|0}i=Sy(b,i)|0}C_(c[(c[j>>2]|0)+216>>2]|0);m=c[j>>2]|0;c[m+216>>2]=0;c[m+220>>2]=0;return}function Hj(a){a=a|0;var b=0,d=0;d=a+4|0;b=c[d>>2]|0;while(1){if((b|0)<=-1)break;c[(c[a>>2]|0)+(b<<2)>>2]=0;b=b+-1|0}c[d>>2]=0;return}function Ij(a){a=a|0;var d=0,f=0,g=0;d=a+16|0;f=c[d>>2]|0;g=c[(c[(c[f+264>>2]|0)+16>>2]|0)+232>>2]|0;a=f+236|0;b[a>>1]=g+(e[a>>1]|0);a=f+238|0;b[a>>1]=g+(e[a>>1]|0);a=1;while(1){if((a|0)>(c[f+180>>2]|0))break;Ij(c[(c[f+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0;f=c[d>>2]|0}return}function Jj(b){b=b|0;var d=0;d=vA(hg(b)|0)|0;while(1){if(!d)break;if((a[(c[d+16>>2]|0)+274>>0]|0)==7)Kj(b,d);d=wA(d)|0}return}function Kj(a,b){a=a|0;b=b|0;var d=0;d=(c[b+16>>2]|0)+200|0;do if((c[d>>2]|0)==0?(c[d>>2]=a,Lj(a,b),Ry(b)|0):0){Mj(a,b);if((c[46364]|0)==100){Aj(b,0);Nj(b);break}else{wj(b);break}}while(0);return}function Lj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=b+16|0;g=Ry(d)|0;while(1){if(!g)break;i=Sy(d,g)|0;j=g+16|0;if(!(a[(c[j>>2]|0)+159>>0]|0))f=1;else{cz(d,g)|0;g=i;continue}while(1){e=c[h>>2]|0;b=c[e+180>>2]|0;if((f|0)>=(b|0))break;if(nz(c[(c[e+184>>2]|0)+(f<<2)>>2]|0,g)|0){k=7;break}f=f+1|0}if((k|0)==7){k=0;b=c[(c[h>>2]|0)+180>>2]|0}if((f|0)<(b|0))cz(d,g)|0;c[(c[j>>2]|0)+212>>2]=0;g=i}e=Ry(d)|0;while(1){if(!e)break;b=Dx(hg(d)|0,e)|0;while(1){if(!b)break;if(nz(d,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)Ux(d,b,1)|0;b=Fx(hg(d)|0,b)|0}e=Sy(d,e)|0}return}function Mj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+16|0;d=c[e>>2]|0;g=d+180|0;a=c[g>>2]|0;f=a+1|0;c[g>>2]=f;d=c[d+184>>2]|0;if(!d)a=tH((a<<2)+8|0)|0;else a=vH(d,a+2|0,4,f)|0;c[(c[e>>2]|0)+184>>2]=a;c[a+(f<<2)>>2]=b;eH(b);return}function Nj(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[b+16>>2]|0;d=g+192|0;h=0;while(1){d=c[d>>2]|0;if(!d)break;f=c[d+16>>2]|0;if(!(c[f+232>>2]|0))e=(a[f+156>>0]|0)==0?d:h;else e=h;d=f+164|0;h=e}if(!h)qa(86924,86939,238,86946);c[g+264>>2]=h;d=Ry(b)|0;while(1){if(!d){d=13;break}e=d+16|0;if(!((d|0)==(h|0)?1:(c[(c[e>>2]|0)+216>>2]|0)<2)){d=11;break}SL(d,h)|0;a[(c[e>>2]|0)+159>>0]=7;d=Sy(b,d)|0}if((d|0)==11)qa(86961,86939,242,86946);else if((d|0)==13)return}function Oj(b){b=b|0;var d=0;if(!(Qj(b)|0)){d=$L(wx(b,87076)|0,17356,17380)|0;a[(c[b+16>>2]|0)+274>>0]=d;b=d}else b=7;return b|0}function Pj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=Ry(d)|0;a:do if(g|0){j=e&255;i=g+16|0;f=g;h=j;while(1){a[(c[f+16>>2]|0)+159>>0]=h;f=Sy(d,f)|0;if(!f)break;SL(g,f)|0;h=a[(c[i>>2]|0)+159>>0]|0}switch(e|0){case 3:case 2:{b=b+16|0;f=c[b>>2]|0;h=c[f+224>>2]|0;if(h){g=SL(h,g)|0;f=c[b>>2]|0}c[f+224>>2]=g;break}case 5:case 4:{b=b+16|0;f=c[b>>2]|0;h=c[f+228>>2]|0;if(h){g=SL(h,g)|0;f=c[b>>2]|0}c[f+228>>2]=g;break}default:break a}switch(e|0){case 3:{f=f+224|0;break}case 5:{f=f+228|0;break}default:break a}a[(c[(c[f>>2]|0)+16>>2]|0)+159>>0]=j}while(0);return}function Qj(a){a=a|0;return (y$(qy(a)|0,104980,7)|0)==0|0}function Rj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;g=m;if(!(kk(b)|0)){do if(pM(b)|0)if(!d){c[(c[b+16>>2]|0)+204>>2]=0;d=b;break}else{c[(c[b+16>>2]|0)+204>>2]=(c[(c[d+16>>2]|0)+204>>2]|0)+1;lk(b,d);d=b;break}while(0);e=vA(b)|0;while(1){if(!e)break;Rj(e,d);e=wA(e)|0}a:do if(pM(b)|0){e=Ry(b)|0;while(1){if(!e)break a;f=(c[e+16>>2]|0)+212|0;if(!(c[f>>2]|0))c[f>>2]=b;e=Sy(b,e)|0}}while(0);switch(mk(b)|0){case 3:{d=d+16|0;a[(c[d>>2]|0)+241>>0]=1;k=19;break}case 2:{d=d+16|0;k=19;break}case 5:{d=d+16|0;a[(c[d>>2]|0)+242>>0]=1;k=21;break}case 4:{d=d+16|0;k=21;break}case 1:{nk(b)|0;break}case 6:break;default:{e=qy(b)|0;f=wx(b,87076)|0;c[g>>2]=e;c[g+4>>2]=f;Ow(0,87259,g)|0}}if((k|0)==19){k=nk(b)|0;k=ok(k,c[(c[d>>2]|0)+208>>2]|0)|0;c[(c[d>>2]|0)+208>>2]=k}else if((k|0)==21){k=nk(b)|0;k=ok(k,c[(c[d>>2]|0)+212>>2]|0)|0;c[(c[d>>2]|0)+212>>2]=k}if((pM(b)|0?(h=b+16|0,i=c[h>>2]|0,j=c[i+208>>2]|0,j|0):0)?(j|0)==(c[i+212>>2]|0):0){j=nk(b)|0;k=c[h>>2]|0;c[k+208>>2]=j;c[k+212>>2]=j}}l=m;return}function Sj(a,b){a=a|0;b=b|0;var d=0,e=0;c[45977]=0;d=Ry(a)|0;while(1){if(!d)break;if((Zj(d)|0)==(d|0)){e=ak(b,qy(d)|0)|0;c[(c[d+16>>2]|0)+148>>2]=e}d=Sy(a,d)|0}d=Ry(a)|0;while(1){if(!d)break;b=d+16|0;if(!(c[(c[b>>2]|0)+148>>2]|0)){e=c[(c[(Zj(d)|0)+16>>2]|0)+148>>2]|0;c[(c[b>>2]|0)+148>>2]=e}d=Sy(a,d)|0}return}function Tj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=Ry(a)|0;while(1){if(!h)break;d=c[(c[h+16>>2]|0)+148>>2]|0;i=Dx(a,h)|0;while(1){if(!i)break;do if((fk(i)|0)==0?(j=i+-48|0,k=c[(c[(Zj(c[((c[i>>2]&3|0)==2?i:j)+40>>2]|0)|0)+16>>2]|0)+148>>2]|0,(d|0)!=(k|0)):0){f=c[i>>2]&3;g=i+48|0;e=((f|0)==3?i:g)+40|0;f=c[(c[(c[((f|0)==2?i:j)+40>>2]|0)+16>>2]|0)+212>>2]|0;if(!(gk(i)|0)){if((ek(c[(c[(c[e>>2]|0)+16>>2]|0)+212>>2]|0)|0)==0?(ek(f)|0)==0:0){hk(b,d,k,i);break}ik(b,d,k,i);break}else{f=Zj(c[e>>2]|0)|0;e=c[i>>2]&3;if((f|0)!=(c[(c[(c[(c[(c[((e|0)==3?i:g)+40>>2]|0)+16>>2]|0)+212>>2]|0)+16>>2]|0)+212>>2]|0)?(g=Zj(c[((e|0)==2?i:j)+40>>2]|0)|0,(g|0)!=(c[(c[(c[(c[(c[((c[i>>2]&3|0)==2?i:j)+40>>2]|0)+16>>2]|0)+212>>2]|0)+16>>2]|0)+208>>2]|0)):0)e=k;else{e=d;d=k}hk(b,d,e,i);break}}while(0);i=Fx(a,i)|0}h=Sy(a,h)|0}return}function Uj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;if((pM(a)|0)!=0?(ek(a)|0)!=0:0){g=Ry(a)|0;while(1){if(!g)break;if(!(Gx(a,g)|0)){f=c[(c[(Zj(g)|0)+16>>2]|0)+148>>2]|0;if(!d)d=ak(b,87157)|0;Qx(b,d,f,0,1)|0}if(!(Dx(a,g)|0)){f=c[(c[(Zj(g)|0)+16>>2]|0)+148>>2]|0;if(!e)e=ak(b,87162)|0;Qx(b,f,e,0,1)|0}g=Sy(a,g)|0}if((e|0)!=0&(d|0)!=0){dk(Qx(b,d,e,0,1)|0,0,1e3);f=d}else f=d}else f=d;d=vA(a)|0;while(1){if(!d)break;Uj(d,b,f,e);d=wA(d)|0}return}function Vj(b){b=b|0;var d=0,e=0;d=Ry(b)|0;while(1){if(!d)break;e=c[d+16>>2]|0;a[e+158>>0]=0;a[e+157>>0]=0;d=Sy(b,d)|0}d=Ry(b)|0;while(1){if(!d)break;bk(b,d);d=Sy(b,d)|0}return}function Wj(a){a=a|0;var b=0,d=0,e=0,f=0;b=Ry(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+128>>2]=0;b=Sy(a,b)|0}b=0;e=Ry(a)|0;while(1){if(!e)break;d=b+1|0;if(!(c[(c[e+16>>2]|0)+128>>2]|0)){$j(a,e,d);b=d}e=Sy(a,e)|0}a:do if((b|0)>1){f=ak(a,87151)|0;d=1;e=Ry(a)|0;while(1){if(!e)break a;if((c[(c[e+16>>2]|0)+128>>2]|0)==(d|0)){Qx(a,f,e,0,1)|0;d=d+1|0}e=Sy(a,e)|0}}while(0);return b|0}function Xj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=Ry(a)|0;while(1){if(!g)break;h=g+16|0;f=Dx(a,g)|0;while(1){if(!f)break;b=c[h>>2]|0;d=c[b+180>>2]|0;if(!d)b=uH((c[b+184>>2]<<2)+8|0)|0;else b=wH(d,(c[b+184>>2]<<2)+8|0)|0;d=c[h>>2]|0;c[d+180>>2]=b;d=d+184|0;e=c[d>>2]|0;c[d>>2]=e+1;c[b+(e<<2)>>2]=f;e=c[h>>2]|0;c[(c[e+180>>2]|0)+(c[e+184>>2]<<2)>>2]=0;e=f+-48|0;b=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;if(!d)b=uH((c[b+176>>2]<<2)+8|0)|0;else b=wH(d,(c[b+176>>2]<<2)+8|0)|0;c[(c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0)+172>>2]=b;i=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;b=c[i+172>>2]|0;i=i+176|0;d=c[i>>2]|0;c[i>>2]=d+1;c[b+(d<<2)>>2]=f;e=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;c[(c[e+172>>2]|0)+(c[e+176>>2]<<2)>>2]=0;f=Fx(a,f)|0}g=Sy(a,g)|0}return}function Yj(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=a+16|0;o=c[n>>2]|0;b[o+236>>1]=32767;b[o+238>>1]=-1;a:do if((f|0)>1){h=tH((f<<2)+4|0)|0;g=f+1|0;f=1;while(1){if((f|0)==(g|0)){m=h;o=h;break a}c[h+(f<<2)>>2]=32767;f=f+1|0}}else{m=0;o=0}while(0);i=(m|0)==0;h=Ry(a)|0;while(1){if(!h)break;j=c[(c[(c[(Zj(h)|0)+16>>2]|0)+148>>2]|0)+16>>2]|0;k=c[j+232>>2]|0;l=c[h+16>>2]|0;c[l+232>>2]=k;f=c[n>>2]|0;g=f+238|0;if((k|0)>(b[g>>1]|0))b[g>>1]=k;f=f+236|0;if((k|0)<(b[f>>1]|0))b[f>>1]=k;if(!i){j=c[j+128>>2]|0;c[l+128>>2]=j;l=m+(j<<2)|0;j=c[l>>2]|0;c[l>>2]=(j|0)<(k|0)?j:k}h=Sy(a,h)|0}j=(m|0)!=0;b:do if(!j){m=b[(c[n>>2]|0)+236>>1]|0;g=m<<16>>16;if(m<<16>>16>0){f=Ry(a)|0;while(1){if(!f)break;m=(c[f+16>>2]|0)+232|0;c[m>>2]=(c[m>>2]|0)-g;f=Sy(a,f)|0}f=c[n>>2]|0;n=f+236|0;b[n>>1]=(e[n>>1]|0)-g;f=f+238|0;b[f>>1]=(e[f>>1]|0)-g;f=0}else f=0}else{f=Ry(a)|0;while(1){if(!f){f=1;break b}l=c[f+16>>2]|0;n=l+232|0;c[n>>2]=(c[n>>2]|0)-(c[m+(c[l+128>>2]<<2)>>2]|0);f=Sy(a,f)|0}}while(0);_j(a,f);i=Ry(d)|0;while(1){if(!i)break;g=i+16|0;f=c[g>>2]|0;h=c[f+172>>2]|0;if(h){C_(h);f=c[g>>2]|0}f=c[f+180>>2]|0;if(f|0)C_(f);i=Sy(d,i)|0}C_(c[(c[(Ry(a)|0)+16>>2]|0)+112>>2]|0);f=Ry(a)|0;while(1){if(!f)break;c[(c[f+16>>2]|0)+112>>2]=0;f=Sy(a,f)|0}if(j)C_(o);return}function Zj(a){a=a|0;var b=0,d=0,e=0;b=a+16|0;d=(c[b>>2]|0)+152|0;e=c[d>>2]|0;if(e){if((e|0)!=(a|0)){e=Zj(e)|0;c[(c[b>>2]|0)+152>>2]=e;return e|0}}else c[d>>2]=a;return a|0}function _j(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=a+16|0;e=1;while(1){f=c[i>>2]|0;if((e|0)>(c[f+180>>2]|0))break;_j(c[(c[f+184>>2]|0)+(e<<2)>>2]|0,0);e=e+1|0}if((d|0)!=0|(c[f+200>>2]|0)!=0){b[f+236>>1]=32767;b[f+238>>1]=-1;e=0;h=Ry(a)|0;while(1){if(!h)break;g=c[(c[h+16>>2]|0)+232>>2]|0;d=c[i>>2]|0;f=d+238|0;if((g|0)>(b[f>>1]|0))b[f>>1]=g;d=d+236|0;if((g|0)<(b[d>>1]|0)){b[d>>1]=g;e=h}h=Sy(a,h)|0}c[(c[i>>2]|0)+264>>2]=e}return}function $j(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[b+16>>2]|0)+128|0;a:do if(!(c[e>>2]|0)){c[e>>2]=d;e=Dx(a,b)|0;while(1){if(!e)break;$j(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,d);e=Fx(a,e)|0}e=Gx(a,b)|0;while(1){if(!e)break a;$j(a,c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0,d);e=Hx(a,e)|0}}while(0);return}function ak(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=$y(a,b,1)|0;b=f+16|0;c[(c[b>>2]|0)+176>>2]=0;e=tH(20)|0;d=c[b>>2]|0;c[d+172>>2]=e;c[d+184>>2]=0;d=tH(20)|0;b=c[b>>2]|0;c[b+180>>2]=d;d=c[45977]|0;e=b+168|0;if(!d){c[e>>2]=0;c[(c[a+16>>2]|0)+192>>2]=f}else{c[e>>2]=d;c[(c[d+16>>2]|0)+164>>2]=f}c[45977]=f;c[b+164>>2]=0;return f|0}function bk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=d+16|0;e=c[h>>2]|0;f=e+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;a[e+158>>0]=1;d=Dx(b,d)|0;while(1){if(!d)break;e=Fx(b,d)|0;f=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;g=c[f+16>>2]|0;if(a[g+158>>0]|0){ck(b,d);d=e;continue}if(a[g+157>>0]|0){d=e;continue}bk(b,f);d=e}a[(c[h>>2]|0)+158>>0]=0}return}function ck(a,b){a=a|0;b=b|0;var d=0,f=0,g=0;d=c[b>>2]&3;g=b+-48|0;f=b+48|0;d=Qx(a,c[((d|0)==2?b:g)+40>>2]|0,c[((d|0)==3?b:f)+40>>2]|0,0,0)|0;if(!d){d=c[b>>2]&3;d=Qx(a,c[((d|0)==2?b:g)+40>>2]|0,c[((d|0)==3?b:f)+40>>2]|0,0,1)|0}g=c[b+16>>2]|0;dk(d,e[g+170>>1]|0,c[g+156>>2]|0);cz(a,b)|0;return}function dk(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0;a=c[a+16>>2]|0;g=a+170|0;h=e[g>>1]|0;b[g>>1]=(h|0)>(d|0)?h:d;d=a+156|0;c[d>>2]=(c[d>>2]|0)+f;return}function ek(a){a=a|0;return (QL(wx(a,87167)|0,0)|0)&255|0}function fk(b){b=b|0;var d=0,e=0;d=c[46419]|0;if((((d|0)!=0?(e=xx(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0)?(PL(e)|0)<<24>>24==0:0)b=1;else b=0;return b|0}function gk(a){a=a|0;var b=0,d=0;d=c[a>>2]&3;b=c[(c[(c[((d|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;a=c[(c[(c[((d|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;if((b|0)==(a|0))return 1;else{d=jk(b,a)|0;return ((d|0)==(b|0)|(d|0)==(a|0))&1|0}return 0}function hk(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;h=j;g=Qx(a,b,d,0,0)|0;if(!g){g=Qx(a,d,b,0,0)|0;if(!g){g=Qx(a,b,d,0,1)|0;if(!g){b=qy(b)|0;f=qy(d)|0;c[h>>2]=b;c[h+4>>2]=f;Ow(1,87184,h)|0}else i=4}else i=4}else i=4;if((i|0)==4){i=c[f+16>>2]|0;dk(g,e[i+170>>1]|0,c[i+156>>2]|0)}l=j;return}function ik(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+112|0;j=m;i=m+4|0;h=Gx(a,d)|0;while(1){if(!h){k=6;break}n=Dx(a,c[((c[h>>2]&3|0)==3?h:h+48|0)+40>>2]|0)|0;if(n|0?(c[((c[n>>2]&3|0)==2?n:n+-48|0)+40>>2]|0)==(f|0):0)break;h=Hx(a,h)|0}if((k|0)==6){n=c[45978]|0;c[45978]=n+1;c[j>>2]=n;X0(i,87175,j)|0;i=ak(a,i)|0;n=Qx(a,i,d,0,1)|0;i=Qx(a,i,f,0,1)|0;f=c[g+16>>2]|0;k=f+156|0;n=(c[n+16>>2]|0)+156|0;c[n>>2]=(c[n>>2]|0)+((c[k>>2]|0)*1e3|0);n=c[i+16>>2]|0;j=n+170|0;b[j>>1]=b[(c[((e[j>>1]|0)>(e[f+170>>1]|0)?i:g)+16>>2]|0)+170>>1]|0;n=n+156|0;c[n>>2]=(c[n>>2]|0)+(c[k>>2]|0)}l=m;return}function jk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;a:while(1){e=a+16|0;while(1){if((a|0)==(b|0))break a;f=c[e>>2]|0;d=c[b+16>>2]|0;if((c[f+204>>2]|0)>=(c[d+204>>2]|0))break;b=c[d+200>>2]|0}a=c[f+200>>2]|0}return a|0}function kk(a){a=a|0;return (Ry(a)|0)==0|0}function lk(a,b){a=a|0;b=b|0;c[(c[a+16>>2]|0)+200>>2]=b;Mj(b,a);Lj(b,a);return}function mk(b){b=b|0;var c=0;b=wx(b,87076)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0)if(a$(b,87086)|0)if(a$(b,87090)|0)if(a$(b,87097)|0)if(a$(b,87101)|0)if(!(a$(b,87081)|0))b=1;else c=8;else b=5;else b=4;else b=3;else b=2;else c=8;if((c|0)==8)b=6;return b|0}function nk(a){a=a|0;var b=0,c=0;c=Ry(a)|0;a:do if(!c)b=0;else{b=Zj(c)|0;while(1){c=Sy(a,c)|0;if(!c)break a;ok(b,c)|0}}while(0);return b|0}function ok(a,b){a=a|0;b=b|0;if(b){a=Zj(a)|0;c[(c[(Zj(b)|0)+16>>2]|0)+152>>2]=a}return a|0}function pk(a,b,d){a=a|0;b=b|0;d=d|0;zz(b,87135,c[d>>2]|0,1)|0;return}function qk(a,b,d){a=a|0;b=b|0;d=d|0;zz(b,87302,c[d+4>>2]|0,1)|0;return}function rk(a,b,d){a=a|0;b=b|0;d=d|0;zz(b,87287,c[d+8>>2]|0,1)|0;return}function sk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+240|0;m=p+120|0;n=p;c[46423]=mx(b,2,87317,0)|0;k=mx(b,2,87326,0)|0;c[46424]=k;a:do if((k|0)!=0|(c[46423]|0)!=0){k=Ry(b)|0;while(1){if(!k)break a;j=0;d=0;i=Ix(b,k)|0;while(1){if(!i){f=0;break}e=c[i>>2]|0;g=e&3;f=c[((g|0)==2?i:i+-48|0)+40>>2]|0;h=i+48|0;b:do if((f|0)!=(c[((g|0)==3?i:h)+40>>2]|0)){g=c[46423]|0;do if((f|0)==(k|0)&(g|0)!=0){f=xx(i,g)|0;if(!(a[f>>0]|0)){e=c[i>>2]|0;break}else{e=j;d=tk(m,d,k,i,f)|0;break b}}while(0);f=c[46424]|0;if((f|0?(c[((e&3|0)==3?i:h)+40>>2]|0)==(k|0):0)?(o=xx(i,f)|0,(a[o>>0]|0)!=0):0)e=tk(n,j,k,i,o)|0;else e=j}else e=j;while(0);j=e;i=Jx(b,i,k)|0}while(1){if((f|0)>=(d|0)){e=0;break}e=m+(f*24|0)+4|0;if((c[m+(f*24|0)+8>>2]|0)>1)uk(k,e);e=c[e>>2]|0;if(e|0)C_(e);f=f+1|0}while(1){if((e|0)>=(j|0))break;d=n+(e*24|0)+4|0;if((c[n+(e*24|0)+8>>2]|0)>1)uk(k,d);d=c[d>>2]|0;if(d|0)C_(d);e=e+1|0}k=Sy(b,k)|0}}while(0);l=p;return}function tk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=l;l=l+16|0;k=p;m=p+12|0;n=p+8|0;o=0;while(1){if((o|0)>=(d|0)){j=10;break}j=c[b+(o*24|0)>>2]|0;if((a[j>>0]|0)==(a[g>>0]|0)?(a$(j,g)|0)==0:0){j=5;break}o=o+1|0}do if((j|0)==5){k=b+(o*24|0)+4|0;j=c[k>>2]|0;if(!j){j=b+(o*24|0)+8|0;g=j;j=uH((c[j>>2]<<2)+8|0)|0}else{q=b+(o*24|0)+8|0;g=q;j=wH(j,(c[q>>2]<<2)+8|0)|0}c[k>>2]=j;r=c[g>>2]|0;q=r+1|0;c[g>>2]=q;c[j+(r<<2)>>2]=f;c[(c[k>>2]|0)+(q<<2)>>2]=0;j=13}else if((j|0)==10)if((d|0)>4){r=qy(e)|0;c[k>>2]=5;c[k+4>>2]=r;Ow(1,87335,k)|0;break}else{s=b+(o*24|0)+8|0;c[s>>2]=0;k=tH(8)|0;r=b+(o*24|0)+4|0;c[r>>2]=k;q=c[s>>2]|0;j=q+1|0;c[s>>2]=j;c[k+(q<<2)>>2]=f;c[(c[r>>2]|0)+(j<<2)>>2]=0;c[b+(o*24|0)>>2]=g;c[b+(o*24|0)+12>>2]=0;h[b+(o*24|0)+16>>3]=0.0;d=d+1|0;j=13;break}while(0);if((j|0)==13){rE(f,m,n);j=(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)==(e|0)?c[n>>2]|0:c[m>>2]|0;if(j){r=b+(o*24|0)+12|0;s=c[r>>2]|0;c[r>>2]=s+1;if(!s)i=+vE(f,j);else i=0.0;h[b+(o*24|0)+16>>3]=i}}l=p;return d|0}function uk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=l;l=l+80|0;t=x+68|0;u=x+64|0;r=x;v=d+4|0;n=c[v>>2]|0;w=b+16|0;i=0;p=0.0;q=0.0;while(1){if((i|0)>=(n|0))break;f=c[(c[d>>2]|0)+(i<<2)>>2]|0;g=c[f>>2]&3;e=c[((g|0)==2?f:f+-48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((g|0)==3?f:f+48|0)+40>>2]|0;g=c[e+16>>2]|0;s=c[w>>2]|0;k=+h[g+16>>3]-+h[s+16>>3];m=+h[g+24>>3]-+h[s+24>>3];o=+t$(k,m);i=i+1|0;p=k/o+p;q=m/o+q}j=+t$(p,q);s=c[w>>2]|0;k=+h[s+16>>3];m=+h[s+24>>3];y=+h[s+96>>3]+ +h[s+88>>3];o=+h[s+80>>3];s=y>o+ +(c[(c[(dz(b)|0)+16>>2]|0)+252>>2]|0);e=c[w>>2]|0;if(s)o=+h[e+96>>3]+ +h[e+88>>3];else{o=+h[e+80>>3];o=o+ +(c[(c[(dz(b)|0)+16>>2]|0)+252>>2]|0);e=c[w>>2]|0}y=+h[e+16>>3]+o*(p/j);j=+h[e+24>>3]+o*(q/j);h[r>>3]=k;n=r+8|0;h[n>>3]=m;h[r+16>>3]=(y+k*2.0)*.3333333333333333;h[r+24>>3]=(j+m*2.0)*.3333333333333333;h[r+32>>3]=(y*2.0+k)*.3333333333333333;h[r+40>>3]=(j*2.0+m)*.3333333333333333;h[r+48>>3]=y;h[r+56>>3]=j;MK(b,r);s=c[w>>2]|0;j=+h[r>>3]-+h[s+16>>3];k=+h[n>>3]-+h[s+24>>3];j=+(~~(j+(j>=0.0?.5:-.5))|0);k=+(~~(k+(k>=0.0?.5:-.5))|0);y=+h[s+88>>3];s=~~((y+j)*256.0/(+h[s+96>>3]+y))&255;r=0;while(1){if((r|0)>=(c[v>>2]|0))break;n=c[(c[d>>2]|0)+(r<<2)>>2]|0;rE(n,t,u);while(1){if(!n)break;else g=n;while(1){if(!g){i=n;break}e=c[g>>2]|0;i=g+-48|0;if((c[((e&3|0)==2?g:i)+40>>2]|0)==(b|0)){e=c[g+16>>2]|0;h[e+56>>3]=j;h[e+64>>3]=k;h[e+72>>3]=0.0;c[e+80>>2]=0;a[e+84>>0]=1;a[e+85>>0]=0;a[e+86>>0]=0;a[e+87>>0]=0;a[e+88>>0]=s;a[e+89>>0]=0;c[e+92>>2]=0;e=c[g>>2]|0}f=g+16|0;if((c[((e&3|0)==3?g:g+48|0)+40>>2]|0)==(b|0)){e=c[f>>2]|0;h[e+16>>3]=j;h[e+24>>3]=k;h[e+32>>3]=0.0;c[e+40>>2]=0;a[e+44>>0]=1;a[e+45>>0]=0;a[e+46>>0]=0;a[e+47>>0]=0;a[e+48>>0]=s;a[e+49>>0]=0;c[e+52>>2]=0}if((a[(c[f>>2]|0)+112>>0]|0)!=1){g=0;continue}e=c[(c[((c[g>>2]&3|0)==2?g:i)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){g=0;continue}if((c[e+184>>2]|0)!=1){g=0;continue}g=c[c[e+180>>2]>>2]|0}while(1){if(!i)break;e=c[i>>2]|0;if((c[((e&3|0)==2?i:i+-48|0)+40>>2]|0)==(b|0)){e=c[i+16>>2]|0;h[e+56>>3]=j;h[e+64>>3]=k;h[e+72>>3]=0.0;c[e+80>>2]=0;a[e+84>>0]=1;a[e+85>>0]=0;a[e+86>>0]=0;a[e+87>>0]=0;a[e+88>>0]=s;a[e+89>>0]=0;c[e+92>>2]=0;e=c[i>>2]|0}f=i+48|0;g=i+16|0;if((c[((e&3|0)==3?i:f)+40>>2]|0)==(b|0)){e=c[g>>2]|0;h[e+16>>3]=j;h[e+24>>3]=k;h[e+32>>3]=0.0;c[e+40>>2]=0;a[e+44>>0]=1;a[e+45>>0]=0;a[e+46>>0]=0;a[e+47>>0]=0;a[e+48>>0]=s;a[e+49>>0]=0;c[e+52>>2]=0}if((a[(c[g>>2]|0)+112>>0]|0)!=1){i=0;continue}e=c[(c[((c[i>>2]&3|0)==3?i:f)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){i=0;continue}if((c[e+176>>2]|0)!=1){i=0;continue}i=c[c[e+172>>2]>>2]|0}n=c[(c[n+16>>2]|0)+172>>2]|0}r=r+1|0}a[(c[w>>2]|0)+145>>0]=1;l=x;return}function vk(a){a=a|0;var b=0,d=0,e=0;jh(a);b=c[a>>2]&3;d=a+-48|0;e=a+48|0;b=eh(c[((b|0)==2?a:d)+40>>2]|0,c[((b|0)==3?a:e)+40>>2]|0)|0;if(!b){b=c[a>>2]&3;oh(c[((b|0)==2?a:d)+40>>2]|0,c[((b|0)==3?a:e)+40>>2]|0,a)|0}else wh(a,b);return}function wk(b){b=b|0;var d=0,e=0,f=0,g=0;f=b+16|0;e=0;while(1){b=c[f>>2]|0;if((e|0)>=(c[b+220>>2]|0))break;d=c[(c[b+216>>2]|0)+(e<<2)>>2]|0;c[b+192>>2]=d;b=d;d=b;while(1){if(!d)break;g=c[d+16>>2]|0;a[g+157>>0]=0;d=c[g+164>>2]|0}while(1){if(!b)break;xk(b);b=c[(c[b+16>>2]|0)+164>>2]|0}e=e+1|0}return}function xk(b){b=b|0;var d=0,e=0,f=0,g=0;g=b+16|0;d=c[g>>2]|0;b=d+157|0;if(!(a[b>>0]|0)){a[b>>0]=1;a[d+158>>0]=1;b=0;while(1){f=c[(c[d+180>>2]|0)+(b<<2)>>2]|0;if(!f)break;d=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;e=c[d+16>>2]|0;if(!(a[e+158>>0]|0)){if(!(a[e+157>>0]|0))xk(d)}else{vk(f);b=b+-1|0}b=b+1|0;d=c[g>>2]|0}a[d+158>>0]=0}return}function yk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=Ry(a)|0;b=0;while(1){if(!e)break;d=Dx(a,e)|0;while(1){if(!d)break;g=c[d>>2]&3;h=c[(c[(c[((g|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;g=c[(c[(c[((g|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;f=h-g|0;d=Fx(a,d)|0;b=((h|0)==(g|0)?0:((f|0)>-1?f:0-f|0)+-1|0)+b|0}e=Sy(a,e)|0}return b|0}function zk(b){b=b|0;var d=0,e=0,f=0,g=0;e=Ry(b)|0;while(1){if(!e)break;g=c[e+16>>2]|0;f=c[g+176>>2]|0;g=g+172|0;d=0;while(1){if((d|0)>=(f|0))break;a[(c[(c[(c[g>>2]|0)+(d<<2)>>2]|0)+16>>2]|0)+112>>0]=0;d=d+1|0}e=Sy(b,e)|0}return}function Ak(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;o=q;j=c[b+24>>2]|0;Bk(a);k=(j|0)==-1;m=b+8|0;i=k^1;n=c[15686]|0;f=1797693134862315708145274.0e284;g=0;while(1){if(!(k|(g|0)<(j|0)))break;d=Ry(a)|0;while(1){if(!d)break;c[(c[d+16>>2]|0)+232>>2]=0;d=Sy(a,d)|0}xj(a);e=+Ck(a);h[m>>3]=e;if(0){h[o>>3]=e;f1(n,87387,o)|0;e=+h[m>>3]}if(!(!(e<=+h[b>>3])&(!(f<=e)|i))){p=9;break}Dk(a);f=e;g=g+1|0}if((p|0)==9){p=b+20|0;c[b+16>>2]=c[p>>2];c[p>>2]=g}xj(a);Ek(a);Fk();h[m>>3]=+Ck(a);l=q;return}function Bk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0.0,m=0.0,n=0;c[45982]=uH(($x(a)|0)*24|0)|0;c[45981]=0;b=Ry(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+120>>2]=-1;b=Sy(a,b)|0}i=Ry(a)|0;while(1){if(!i)break;j=i+16|0;do if(!(c[(c[j>>2]|0)+216>>2]|0)){f=tH(4)|0;g=c[45982]|0;k=c[45981]|0;c[g+(k*24|0)>>2]=f;c[f>>2]=i;c[g+(k*24|0)+4>>2]=1;j=c[j>>2]|0;h[g+(k*24|0)+8>>3]=+h[j+32>>3];h[g+(k*24|0)+16>>3]=+h[j+40>>3];c[j+120>>2]=k;c[45981]=k+1}else{g=RL(i)|0;k=g+16|0;b=c[k>>2]|0;d=c[b+120>>2]|0;if((d|0)>-1){g=c[45982]|0;f=c[g+(d*24|0)>>2]|0;e=g+(d*24|0)+4|0;k=c[e>>2]|0;c[e>>2]=k+1;c[f+(k<<2)>>2]=i;k=c[j>>2]|0;j=g+(d*24|0)+8|0;h[j>>3]=+h[j>>3]+ +h[k+32>>3];j=g+(d*24|0)+16|0;l=+h[j>>3];m=+h[k+40>>3];h[j>>3]=l>2]=d;break}d=tH(c[b+216>>2]<<2)|0;e=c[45982]|0;f=c[45981]|0;b=e+(f*24|0)|0;c[b>>2]=d;c[d>>2]=g;if((g|0)==(i|0)){h[e+(f*24|0)+8>>3]=+h[(c[k>>2]|0)+32>>3];d=1;b=i}else{c[(c[b>>2]|0)+4>>2]=i;n=c[k>>2]|0;b=c[j>>2]|0;h[e+(f*24|0)+8>>3]=+h[b+32>>3]+ +h[n+32>>3];d=2;b=+h[n+40>>3]<+h[b+40>>3]?i:g}c[e+(f*24|0)+4>>2]=d;h[e+(f*24|0)+16>>3]=+h[(c[b+16>>2]|0)+40>>3];c[(c[k>>2]|0)+120>>2]=f;c[(c[j>>2]|0)+120>>2]=f;c[45981]=f+1}while(0);i=Sy(a,i)|0}return}function Ck(a){a=a|0;var b=0.0,d=0.0,e=0,f=0,g=0,i=0.0,j=0.0;Ek(a);g=c[45979]|0;e=c[a+16>>2]|0;b=+(O(c[e+252>>2]|0,g+-1|0)|0);f=c[45980]|0;e=e+248|0;a=0;d=0.0;while(1){if((a|0)>=(g|0))break;i=+h[f+(a*40|0)+24>>3]+ +(O(c[e>>2]|0,c[f+(a*40|0)+16>>2]|0)|0);j=+h[f+(a*40|0)+32>>3]+b;a=a+1|0;b=j;d=d=($x(a)|0))break;c[(c[45983]|0)+(b<<2)>>2]=b;b=b+1|0}Ek(a);Gk(a);Hk(a);return}function Ek(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0,k=0,l=0;c[45979]=0;b=c[45980]|0;if(b|0){e=0;while(1){if((e|0)>=(c[45981]|0))break;d=c[b+(e*40|0)+4>>2]|0;if(d){C_(d);b=c[45980]|0}d=c[b+(e*40|0)+8>>2]|0;if(d){C_(d);b=c[45980]|0}e=e+1|0}C_(b)}c[45980]=tH((c[45981]|0)*40|0)|0;b=0;while(1){d=c[45981]|0;if((b|0)>=(d|0))break;k=tH(d<<2)|0;c[(c[45980]|0)+(b*40|0)+4>>2]=k;k=tH(c[45981]<<2)|0;l=c[45980]|0;c[l+(b*40|0)+8>>2]=k;c[l+(b*40|0)>>2]=b;c[l+(b*40|0)+12>>2]=0;c[l+(b*40|0)+16>>2]=0;l=l+(b*40|0)+24|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;b=b+1|0}e=Ry(a)|0;while(1){if(!e)break;d=Dx(a,e)|0;while(1){if(!d)break;i=c[d>>2]|0;f=d+-48|0;g=c[45980]|0;b=c[(c[(c[((i&3|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;while(1){b=b+1|0;if((b|0)>=(c[(c[(c[((i&3|0)==2?d:f)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;i=g+(b*40|0)+16|0;c[i>>2]=(c[i>>2]|0)+1;i=c[d>>2]|0}d=Fx(a,d)|0}e=Sy(a,e)|0}i=c[45981]|0;k=c[45982]|0;l=c[45980]|0;d=a+16|0;b=0;while(1){if((b|0)>=(i|0))break;e=(c[c[k+(b*24|0)>>2]>>2]|0)+16|0;f=c[(c[e>>2]|0)+232>>2]|0;if((f|0)>=(c[45979]|0))c[45979]=f+1;g=l+(f*40|0)+24|0;j=+h[g>>3];h[g>>3]=j+ +h[k+(b*24|0)+8>>3]*72.0+(j>0.0?+(c[(c[d>>2]|0)+248>>2]|0):0.0);g=l+(f*40|0)+32|0;j=+h[k+(b*24|0)+16>>3]*72.0;if(+h[g>>3]>3]=j;c[(c[l+(f*40|0)+4>>2]|0)+(c[l+(f*40|0)+12>>2]<<2)>>2]=k+(b*24|0);a=l+((c[(c[e>>2]|0)+232>>2]|0)*40|0)+12|0;c[a>>2]=(c[a>>2]|0)+1;b=b+1|0}return}function Fk(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=c[45979]|0;l=c[45980]|0;j=0;b=0;a=0;while(1){if((j|0)>=(k|0))break;d=l+(j*40|0)|0;i=c[l+(j*40|0)+12>>2]|0;e=(b|0)==0;a:do if(i)if(!e){if((c[d>>2]|0)>(a|0)){f=l+(j*40|0)+4|0;d=0;while(1){if((d|0)>=(i|0))break a;g=c[(c[f>>2]|0)+(d<<2)>>2]|0;h=c[g+4>>2]|0;e=0;while(1){if((e|0)>=(h|0))break;m=(c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+232|0;c[m>>2]=(c[m>>2]|0)-b;e=e+1|0}d=d+1|0}}}else b=0;else{if(e)a=c[d>>2]|0;b=b+1|0}while(0);j=j+1|0}return}function Gk(a){a=a|0;var b=0;b=c[45983]|0;Z0(b,$x(a)|0,4,63);return}function Hk(b){b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0;j=c[45979]|0;k=c[45980]|0;g=c[45983]|0;i=0;while(1){if((i|0)>=(j|0)){e=0;d=0.0;break}e=c[g+(i<<2)>>2]|0;f=i+1|0;if((c[k+(e*40|0)+12>>2]|0)<2)i=f;else{l=4;break}}if((l|0)==4)if((j|0)>(f|0))d=+h[k+((c[g+(f<<2)>>2]|0)*40|0)+24>>3];else d=0.0;a:do if((i|0)!=(j|0)){Z0(c[k+(e*40|0)+4>>2]|0,c[k+(e*40|0)+12>>2]|0,4,64);g=c[45980]|0;r=+h[g+(e*40|0)+24>>3];r=!(d<=r*.25)&!(d>=r*.75)?d:r*.5;s=c[g+(e*40|0)+12>>2]|0;q=b+16|0;n=0;o=0;d=0.0;f=0;p=0;while(1){if((p|0)>=(f+s|0))break a;do if(!(c[(c[g+(e*40|0)+8>>2]|0)+(p<<2)>>2]|0)){l=c[(c[g+(e*40|0)+4>>2]|0)+(p<<2)>>2]|0;b=l+8|0;m=+h[b>>3]*72.0+d+(d>0.0?+(c[(c[q>>2]|0)+248>>2]|0):0.0);i=(o|0)!=0;if(!(i&!(m<=r))){j=i?n:l;i=i?o:1;d=m;break}j=n+4|0;k=l+4|0;i=0;while(1){if((i|0)<(c[j>>2]|0))g=0;else break;while(1){if((g|0)>=(c[k>>2]|0))break;a[(c[(oh(c[(c[n>>2]|0)+(i<<2)>>2]|0,c[(c[l>>2]|0)+(g<<2)>>2]|0,0)|0)+16>>2]|0)+112>>0]=1;g=g+1|0}i=i+1|0}g=c[45980]|0;c[(c[g+(e*40|0)+8>>2]|0)+(p<<2)>>2]=1;j=g+(e*40|0)+12|0;c[j>>2]=(c[j>>2]|0)+-1;j=g+(e*40|0)+16|0;c[j>>2]=(c[j>>2]|0)+1;j=g+(e*40|0)+24|0;h[j>>3]=+h[b>>3]*-72.0-+(c[(c[q>>2]|0)+248>>2]|0)+ +h[j>>3];j=n;i=o}else{j=n;i=o;f=f+1|0}while(0);n=j;o=i;p=p+1|0}}while(0);return}function Ik(a,b){a=a|0;b=b|0;a=Jk(c[a>>2]|0)|0;b=Jk(c[b>>2]|0)|0;return ((b|0)<(a|0)&1)-((b|0)>(a|0)&1)|0}function Jk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+4|0;d=0;b=0;while(1){if((d|0)>=(c[f>>2]|0))break;e=c[(c[a>>2]|0)+(d<<2)>>2]|0;g=dz(e)|0;e=Dx(g,e)|0;while(1){if(!e)break;e=Fx(g,e)|0;b=b+1|0}d=d+1|0}return b|0}function Kk(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[45980]|0;e=+h[f+((c[b>>2]|0)*40|0)+24>>3];d=+h[f+((c[a>>2]|0)*40|0)+24>>3];return (e>d&1)-(e>2]|0)+216>>2]=0;b=Sy(a,b)|0}return}function Mk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+16|0;e=g+8|0;d=g+20|0;c[d>>2]=5;a=wx(a,96579)|0;if(a|0?(c[e>>2]=g,c[e+4>>2]=d,(M1(a,87402,e)|0)>=1):0)Ow(0,87409,f)|0;c[b+24>>2]=0;c[b+32>>2]=0;l=g;return 0}function Nk(b){b=b|0;var d=0,e=0;d=c[46419]|0;if((((d|0)!=0?(e=xx(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0)?(PL(e)|0)<<24>>24==0:0)b=1;else b=0;return b|0}function Ok(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;hl(a);b=Ry(a)|0;while(1){if(!b)break;d=Dx(a,b)|0;while(1){if(!d)break;do if(((c[(c[d+16>>2]|0)+172>>2]|0)==0?(Nk(d)|0)==0:0)?(e=d+48|0,f=RL(c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)|0,g=d+-48|0,h=RL(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)|0,(f|0)!=(h|0)):0){if((c[(c[f+16>>2]|0)+212>>2]|0)==0?(c[(c[h+16>>2]|0)+212>>2]|0)==0:0){i=eh(f,h)|0;if(!i){oh(f,h,d)|0;break}else{wh(d,i);break}}i=c[d>>2]&3;Pk(a,c[((i|0)==3?d:e)+40>>2]|0,c[((i|0)==2?d:g)+40>>2]|0,d)}while(0);d=Fx(a,d)|0}b=Sy(a,b)|0}return}function Pk(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=c[g>>2]&3;h=c[(c[((j|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0;i=c[h+212>>2]|0;if(!i)k=0;else k=(c[h+232>>2]|0)-(c[(c[(c[(c[i+16>>2]|0)+264>>2]|0)+16>>2]|0)+232>>2]|0)|0;h=c[(c[((j|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0;i=c[h+212>>2]|0;if(!i)h=0;else h=(c[(c[(c[(c[i+16>>2]|0)+264>>2]|0)+16>>2]|0)+232>>2]|0)-(c[h+232>>2]|0)|0;j=g+16|0;k=h+k+(e[(c[j>>2]|0)+170>>1]|0)|0;b=th(b)|0;a[(c[b+16>>2]|0)+156>>0]=2;i=RL(d)|0;d=RL(f)|0;f=_i(b,i,(k|0)>0?0.0:+(0-k|0),(c[(c[j>>2]|0)+156>>2]|0)*10|0)|0;c[(c[(_i(b,d,+(((k|0)>0?k:0)|0),c[(c[j>>2]|0)+156>>2]|0)|0)+16>>2]|0)+116>>2]=g;c[(c[f+16>>2]|0)+116>>2]=g;return}function Qk(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=c[d>>2]&3;i=(j|0)==3?d:d+48|0;j=(j|0)==2?d:d+-48|0;j=c[(c[(c[((c[(c[(c[i+40>>2]|0)+16>>2]|0)+232>>2]|0)>(c[(c[(c[j+40>>2]|0)+16>>2]|0)+232>>2]|0)?i:j)+40>>2]|0)+16>>2]|0)+232>>2]|0;i=d+16|0;d=(c[i>>2]|0)+172|0;if(c[d>>2]|0)qa(87498,87520,148,87529);c[d>>2]=f;h=(g|0)==0;do{d=c[i>>2]|0;if(h)g=c[f+16>>2]|0;else{g=c[f+16>>2]|0;k=g+168|0;b[k>>1]=(e[k>>1]|0)+(e[d+168>>1]|0)}k=g+154|0;b[k>>1]=(e[k>>1]|0)+(e[d+154>>1]|0);g=g+156|0;c[g>>2]=(c[g>>2]|0)+(c[d+156>>2]|0);d=f+-48|0;g=c[((c[f>>2]&3|0)==2?f:d)+40>>2]|0;if((c[(c[g+16>>2]|0)+232>>2]|0)==(j|0))break;Rk(a,g);f=c[c[(c[(c[((c[f>>2]&3|0)==2?f:d)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((f|0)!=0);return}function Rk(a,b){a=a|0;b=b|0;var d=0.0;d=+((c[(c[a+16>>2]|0)+248>>2]|0)/2|0|0);b=c[b+16>>2]|0;a=b+88|0;h[a>>3]=+h[a>>3]+d;b=b+96|0;h[b>>3]=+h[b>>3]+d;return}function Sk(a,b){a=a|0;b=b|0;var d=0,e=0;if(((((a|0)!=0&(b|0)!=0?(e=c[a>>2]&3,d=c[b>>2]&3,(c[((e|0)==3?a:a+48|0)+40>>2]|0)==(c[((d|0)==3?b:b+48|0)+40>>2]|0)):0)?(c[((e|0)==2?a:a+-48|0)+40>>2]|0)==(c[((d|0)==2?b:b+-48|0)+40>>2]|0):0)?(c[(c[a+16>>2]|0)+96>>2]|0)==(c[(c[b+16>>2]|0)+96>>2]|0):0)?(vj(a,b)|0)!=0:0)a=1;else a=0;return a|0}function Tk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=b+16|0;d=c[r>>2]|0;c[d+192>>2]=0;c[d+232>>2]=0;hl(b);d=1;while(1){e=c[r>>2]|0;if((d|0)>(c[e+180>>2]|0))break;il(b,c[(c[e+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}h=Ry(b)|0;while(1){if(!h)break;g=Dx(b,h)|0;while(1){if(!g)break;d=c[g>>2]|0;e=(c[(c[((d&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+160|0;f=a[e>>0]|0;if(f<<24>>24<3){a[e>>0]=f+1<<24>>24;d=c[g>>2]|0}d=(c[(c[((d&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+160|0;e=a[d>>0]|0;if(e<<24>>24<3)a[d>>0]=e+1<<24>>24;g=Fx(b,g)|0}h=Sy(b,h)|0}m=Ry(b)|0;while(1){if(!m)break;if((c[(c[m+16>>2]|0)+212>>2]|0)==0?(m|0)==(RL(m)|0):0){ph(b,m);l=(c[r>>2]|0)+232|0;c[l>>2]=(c[l>>2]|0)+1}d=0;l=Dx(b,m)|0;while(1){if(!l)break;k=l+16|0;h=c[k>>2]|0;a:do if(!(c[h+172>>2]|0)){if(Uk(l)|0){if(!(Sk(d,l)|0)){Vk(b,l);d=l;break}e=c[(c[d+16>>2]|0)+172>>2]|0;if(e|0){Qk(b,l,e,0);kh(l);break}k=c[l>>2]&3;if((c[(c[(c[((k|0)==3?l:l+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)!=(c[(c[(c[((k|0)==2?l:l+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;wh(l,d);kh(l);break}if(d){i=c[l>>2]&3;e=l+48|0;f=c[((i|0)==3?l:e)+40>>2]|0;g=c[d>>2]&3;if((f|0)==(c[((g|0)==3?d:d+48|0)+40>>2]|0)?(n=c[((i|0)==2?l:l+-48|0)+40>>2]|0,(n|0)==(c[((g|0)==2?d:d+-48|0)+40>>2]|0)):0){if((c[(c[f+16>>2]|0)+232>>2]|0)==(c[(c[n+16>>2]|0)+232>>2]|0)){wh(l,d);kh(l);break}if(((c[h+96>>2]|0)==0?(o=d+16|0,(c[(c[o>>2]|0)+96>>2]|0)==0):0)?(vj(l,d)|0)!=0:0)if(!(a[191874]|0)){Qk(b,l,c[(c[o>>2]|0)+172>>2]|0,1);kh(l);break}else{a[(c[k>>2]|0)+112>>0]=6;break}else i=e}else i=e}else i=l+48|0;h=c[l>>2]&3;e=c[((h|0)==3?l:i)+40>>2]|0;j=l+-48|0;if((e|0)==(c[((h|0)==2?l:j)+40>>2]|0)){kh(l);d=l;break}e=RL(e)|0;f=RL(c[((c[l>>2]&3|0)==2?l:j)+40>>2]|0)|0;h=c[l>>2]&3;if((c[((h|0)==3?l:i)+40>>2]|0)==(e|0)?(c[((h|0)==2?l:j)+40>>2]|0)==(f|0):0){g=c[(c[e+16>>2]|0)+232>>2]|0;h=c[(c[f+16>>2]|0)+232>>2]|0;if((g|0)==(h|0)){uh(b,l);d=l;break}if((h|0)>(g|0)){Wk(b,e,f,l);d=l;break}e=Qx(b,f,e,0,0)|0;do if(e|0?(p=c[e>>2]&3,q=c[((p|0)==2?e:e+-48|0)+40>>2]|0,(q|0)!=(c[((c[l>>2]&3|0)==2?l:j)+40>>2]|0)):0){f=e+16|0;if(!(c[(c[f>>2]|0)+172>>2]|0))Wk(b,c[((p|0)==3?e:e+48|0)+40>>2]|0,q,e);if((c[(c[k>>2]|0)+96>>2]|0)==0?(c[(c[f>>2]|0)+96>>2]|0)==0:0){if(!(vj(l,e)|0))break;if(!(a[191874]|0)){kh(l);Qk(b,l,c[(c[f>>2]|0)+172>>2]|0,1);break a}else{a[(c[k>>2]|0)+112>>0]=6;a[(c[f>>2]|0)+153>>0]=1;break a}}}while(0);d=c[l>>2]&3;Wk(b,c[((d|0)==2?l:j)+40>>2]|0,c[((d|0)==3?l:i)+40>>2]|0,l);d=l}}else d=l;while(0);l=Fx(b,l)|0}m=Sy(b,m)|0}if((hg(b)|0)!=(b|0)){d=c[(c[r>>2]|0)+216>>2]|0;if(!d)d=uH(4)|0;else d=wH(d,4)|0;r=c[r>>2]|0;c[r+216>>2]=d;c[d>>2]=c[r+192>>2]}return}function Uk(b){b=b|0;var d=0;d=c[b>>2]&3;if((a[(c[(c[((d|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+159>>0]|0)==7)b=1;else b=(a[(c[(c[((d|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+159>>0]|0)==7&1;return b|0}function Vk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=Zk(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0;g=Zk(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;i=(c[(c[f+16>>2]|0)+232>>2]|0)>(c[(c[g+16>>2]|0)+232>>2]|0);e=i?f:g;f=i?g:f;g=f+16|0;i=e+16|0;a:do if((c[(c[g>>2]|0)+212>>2]|0)!=(c[(c[i>>2]|0)+212>>2]|0)){h=eh(f,e)|0;if(h|0){Qk(b,d,h,1);break}if((c[(c[g>>2]|0)+232>>2]|0)!=(c[(c[i>>2]|0)+232>>2]|0)){Wk(b,f,e,d);e=(c[d+16>>2]|0)+172|0;while(1){e=c[e>>2]|0;if(!e)break a;f=e+-48|0;if((c[(c[(c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(c[(c[i>>2]|0)+232>>2]|0))break a;a[(c[e+16>>2]|0)+112>>0]=5;e=c[(c[(c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0)+16>>2]|0)+180>>2]|0}}}while(0);return}function Wk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=e+16|0;f=c[k>>2]|0;if(!(c[f+96>>2]|0))j=-1;else j=((c[(c[d+16>>2]|0)+232>>2]|0)+(c[(c[b+16>>2]|0)+232>>2]|0)|0)/2|0;if(c[f+172>>2]|0)qa(87541,87520,89,87566);i=d+16|0;h=c[(c[b+16>>2]|0)+232>>2]|0;while(1){g=h+1|0;f=c[(c[i>>2]|0)+232>>2]|0;if((h|0)>=(f|0))break;if((g|0)<(f|0)){if((g|0)==(j|0))f=Xk(a,e)|0;else f=Yk(a)|0;c[(c[f+16>>2]|0)+232>>2]=g}else f=d;Ji(oh(b,f,e)|0);h=g;b=f}if(!(c[(c[k>>2]|0)+172>>2]|0))qa(87577,87520,103,87566);else return}function Xk(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0.0;i=d+16|0;g=c[(c[i>>2]|0)+96>>2]|0;e=+h[g+24>>3];f=+h[g+32>>3];g=th(b)|0;d=g+16|0;c[(c[d>>2]|0)+104>>2]=c[(c[i>>2]|0)+96>>2];j=+(c[(c[(ez(g)|0)+16>>2]|0)+248>>2]|0);h[(c[d>>2]|0)+88>>3]=j;if(!(a[(c[i>>2]|0)+114>>0]|0)){b=(c[(c[(ez(b)|0)+16>>2]|0)+116>>2]&1|0)==0;i=c[d>>2]|0;h[i+80>>3]=b?f:e;h[i+96>>3]=b?e:f}return g|0}function Yk(a){a=a|0;var b=0;b=th(a)|0;Rk(a,b);return b|0}function Zk(b){b=b|0;var d=0;d=c[b+16>>2]|0;if((a[d+159>>0]|0)==7)b=c[(c[(c[(c[d+212>>2]|0)+16>>2]|0)+268>>2]|0)+(c[d+232>>2]<<2)>>2]|0;else b=RL(b)|0;return b|0}function _k(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=hg(a)|0;h=Ry(a)|0;while(1){if(!h)break;b=Ix(j,h)|0;i=0;while(1){if(!b)break;l=Jx(j,b,h)|0;if(nz(a,b)|0){k=i;b=l;i=k;continue}k=(c[b>>2]&3|0)==2?b:b+-48|0;m=(Sk(i,k)|0)==0;e=c[k>>2]&3;b=c[((e|0)==3?k:k+48|0)+40>>2]|0;d=c[(c[b+16>>2]|0)+232>>2]|0;e=c[((e|0)==2?k:k+-48|0)+40>>2]|0;f=c[(c[e+16>>2]|0)+232>>2]|0;g=(d|0)==(f|0);if(!m){c[(c[k+16>>2]|0)+172>>2]=g?i:0;b=c[(c[i+16>>2]|0)+172>>2]|0;if(!b){m=i;b=l;i=m;continue}Qk(a,k,b,0);lh(k);m=i;b=l;i=m;continue}if(!g)if((f|0)>(d|0)){$k(b,e,k);b=l;i=k;continue}else{$k(e,b,k);b=l;i=k;continue}b=gh(b,e)|0;if(!b){uh(j,k);b=l;i=k;continue}if((k|0)==(b|0)){m=i;b=l;i=m;continue}lh(k);if(c[(c[k+16>>2]|0)+172>>2]|0){m=i;b=l;i=m;continue}wh(k,b);m=i;b=l;i=m}h=Sy(a,h)|0}return}function $k(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=al(a)|0;e=al(b)|0;bl(f,e,d,c[(c[d+16>>2]|0)+172>>2]|0,(f|0)==(a|0)&(e|0)==(b|0)?1:5);return}function al(b){b=b|0;var d=0,e=0,f=0;d=c[b+16>>2]|0;e=c[d+212>>2]|0;if((e|0)!=0?(f=c[e+16>>2]|0,(a[f+272>>0]|0)==0):0)b=c[(c[f+268>>2]|0)+(c[d+232>>2]<<2)>>2]|0;return b|0}function bl(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=d+16|0;k=c[(c[n>>2]|0)+232>>2]|0;o=e+16|0;i=c[(c[o>>2]|0)+232>>2]|0;if((i|0)<=(k|0))qa(87602,87630,81,87640);m=c[g>>2]&3;if(!((c[((m|0)==3?g:g+48|0)+40>>2]|0)==(d|0)?(c[((m|0)==2?g:g+-48|0)+40>>2]|0)==(e|0):0))l=5;a:do if((l|0)==5){if((b[(c[g+16>>2]|0)+168>>1]|0)>1){c[(c[f+16>>2]|0)+172>>2]=0;if(((i-k|0)==1?(j=eh(d,e)|0,j|0):0)?vj(f,j)|0:0){wh(f,j);if(a[(c[n>>2]|0)+156>>0]|0)break;if(a[(c[o>>2]|0)+156>>0]|0)break;kh(f);break}m=h&255;h=d;l=c[(c[n>>2]|0)+232>>2]|0;while(1){i=c[(c[o>>2]|0)+232>>2]|0;if((l|0)>=(i|0))break a;if((l|0)<(i+-1|0)){i=hg(d)|0;j=g+-48|0;i=cl(i,c[((c[g>>2]&3|0)==2?g:j)+40>>2]|0)|0;k=g}else{i=e;j=g+-48|0;k=g}a[(c[(oh(h,i,f)|0)+16>>2]|0)+112>>0]=m;n=(c[g+16>>2]|0)+168|0;b[n>>1]=(b[n>>1]|0)+-1<<16>>16;h=i;l=l+1|0;g=c[c[(c[(c[((c[k>>2]&3|0)==2?g:j)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}}do if((i-k|0)==1){g=eh(d,e)|0;if(g|0?vj(f,g)|0:0){c[(c[f+16>>2]|0)+172>>2]=g;m=c[g+16>>2]|0;a[m+112>>0]=h;m=m+168|0;b[m>>1]=(b[m>>1]|0)+1<<16>>16;if(a[(c[n>>2]|0)+156>>0]|0)break;if(a[(c[o>>2]|0)+156>>0]|0)break;kh(f);break}c[(c[f+16>>2]|0)+172>>2]=0;g=oh(d,e,f)|0;a[(c[g+16>>2]|0)+112>>0]=h}while(0);i=c[(c[o>>2]|0)+232>>2]|0;if((i-(c[(c[n>>2]|0)+232>>2]|0)|0)>1){if((c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)==(d|0))l=i;else{n=f+16|0;c[(c[n>>2]|0)+172>>2]=0;l=oh(d,c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0,f)|0;c[(c[n>>2]|0)+172>>2]=l;jh(g);g=l;l=c[(c[o>>2]|0)+232>>2]|0}while(1){i=c[g>>2]&3;j=c[((i|0)==2?g:g+-48|0)+40>>2]|0;k=c[j+16>>2]|0;if((c[k+232>>2]|0)==(l|0))break;g=c[c[k+180>>2]>>2]|0}if((j|0)!=(e|0)){a[(c[(oh(c[((i|0)==3?g:g+48|0)+40>>2]|0,e,f)|0)+16>>2]|0)+112>>0]=h;jh(g)}}}while(0);return}function cl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=b+16|0;b=c[d>>2]|0;e=c[b+232>>2]|0;dl(a,e,c[b+236>>2]|0,2);b=th(a)|0;d=c[d>>2]|0;f=c[b+16>>2]|0;h[f+88>>3]=+h[d+88>>3];h[f+96>>3]=+h[d+96>>3];c[f+232>>2]=c[d+232>>2];d=(c[d+236>>2]|0)+1|0;c[f+236>>2]=d;c[(c[(c[(c[a+16>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(d<<2)>>2]=b;return b|0}function dl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=a+16|0;f=c[(c[h>>2]|0)+196>>2]|0;i=c[f+(b<<6)+4>>2]|0;a:do if((e|0)<1){d=d-e|0;while(1){g=d+1|0;a=c[f+(b<<6)>>2]|0;if((g|0)>=(a|0))break;a=c[i+(g<<2)>>2]|0;f=d+e|0;c[(c[a+16>>2]|0)+236>>2]=f;c[i+(f<<2)>>2]=a;d=g;f=c[(c[h>>2]|0)+196>>2]|0}g=e+-1|0;d=g+a|0;while(1){if((d|0)>=(a|0))break a;c[i+(d<<2)>>2]=0;f=c[(c[h>>2]|0)+196>>2]|0;d=d+1|0;a=c[f+(b<<6)>>2]|0}}else{g=e+-1|0;a=c[f+(b<<6)>>2]|0;while(1){a=a+-1|0;if((a|0)<=(d|0))break;j=c[i+(a<<2)>>2]|0;f=g+a|0;c[(c[j+16>>2]|0)+236>>2]=f;c[i+(f<<2)>>2]=j}f=e+d|0;a=d;while(1){a=a+1|0;if((a|0)>=(f|0))break;c[i+(a<<2)>>2]=0}a=c[(c[h>>2]|0)+196>>2]|0;f=a;a=c[a+(b<<6)>>2]|0}while(0);c[f+(b<<6)>>2]=g+a;return}function el(a){a=a|0;var b=0;Tk(a);b=c[a+16>>2]|0;c[b+220>>2]=1;c[c[b+216>>2]>>2]=c[b+192>>2];Gi(a);li(a,0);fl(a);_k(a);gl(a);return}function fl(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=hg(d)|0;l=d+16|0;f=c[l>>2]|0;j=b[f+236>>1]|0;e=j<<16>>16;m=k+16|0;if(j<<16>>16>0)a[(c[(c[m>>2]|0)+196>>2]|0)+(e+-1<<6)+49>>0]=0;j=e;while(1){if((j|0)>(b[f+238>>1]|0))break;i=c[(c[(c[(c[f+268>>2]|0)+(j<<2)>>2]|0)+16>>2]|0)+236>>2]|0;dl(k,j,i,c[(c[f+196>>2]|0)+(j<<6)>>2]|0);g=0;h=i;while(1){f=c[l>>2]|0;e=c[f+196>>2]|0;if((g|0)>=(c[e+(j<<6)>>2]|0))break;e=c[(c[e+(j<<6)+4>>2]|0)+(g<<2)>>2]|0;c[(c[(c[(c[m>>2]|0)+196>>2]|0)+(j<<6)+4>>2]|0)+(h<<2)>>2]=e;f=c[e+16>>2]|0;c[f+236>>2]=h;if((a[f+156>>0]|0)==1)c[e+24>>2]=ez(k)|0;rh(d,e);ph(k,e);f=(c[m>>2]|0)+232|0;c[f>>2]=(c[f>>2]|0)+1;g=g+1|0;h=h+1|0}h=c[(c[m>>2]|0)+196>>2]|0;c[e+(j<<6)+4>>2]=(c[h+(j<<6)+4>>2]|0)+(i<<2);a[h+(j<<6)+49>>0]=0;j=j+1|0}e=c[m>>2]|0;if((j|0)<(b[e+238>>1]|0))a[(c[e+196>>2]|0)+(j<<6)+49>>0]=0;a[f+272>>0]=1;return}function gl(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+16|0;d=c[i>>2]|0;h=b[d+236>>1]|0;while(1){if((h|0)>(b[d+238>>1]|0))break;f=c[(c[d+268>>2]|0)+(h<<2)>>2]|0;g=f+16|0;while(1){d=c[g>>2]|0;e=c[c[d+180>>2]>>2]|0;if(!e)break;jh(e)}while(1){d=c[c[d+172>>2]>>2]|0;if(!d)break;jh(d);d=c[g>>2]|0}rh(hg(a)|0,f);c[(c[(c[i>>2]|0)+268>>2]|0)+(h<<2)>>2]=0;h=h+1|0;d=c[i>>2]|0}return}function hl(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;f=Ry(b)|0;while(1){if(!f)break;e=f+16|0;d=c[e>>2]|0;if((a[d+159>>0]|0)==7){TL(f);d=c[e>>2]|0}c[d+212>>2]=0;f=Sy(b,f)|0}m=b+16|0;k=1;while(1){d=c[m>>2]|0;if((k|0)>(c[d+180>>2]|0))break;h=c[(c[d+184>>2]|0)+(k<<2)>>2]|0;i=h+16|0;d=Ry(h)|0;a:while(1){if(!d)break;j=Sy(h,d)|0;e=d+16|0;if(a[(c[e>>2]|0)+159>>0]|0){f=qy(d)|0;g=qy(b)|0;c[n>>2]=f;c[n+4>>2]=g;Ow(0,87649,n)|0;cz(h,d)|0;d=j;continue}UL(d,c[(c[i>>2]|0)+264>>2]|0);g=c[e>>2]|0;c[g+212>>2]=h;a[g+159>>0]=7;g=Dx(h,d)|0;while(1){if(!g){d=j;continue a}d=c[(c[g+16>>2]|0)+172>>2]|0;b:do if(d|0)do{e=d+-48|0;f=c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break b;c[f+212>>2]=h;d=c[c[(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);g=Fx(h,g)|0}}k=k+1|0}l=o;return}function il(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=e+16|0;g=tH((b[(c[k>>2]|0)+238>>1]<<2)+8|0)|0;f=c[k>>2]|0;c[f+268>>2]=g;g=0;h=b[f+236>>1]|0;while(1){if((h|0)>(b[f+238>>1]|0))break;f=th(d)|0;c[(c[(c[k>>2]|0)+268>>2]|0)+(h<<2)>>2]=f;j=c[f+16>>2]|0;c[j+232>>2]=h;a[j+159>>0]=7;c[j+212>>2]=e;if(g|0){j=(c[(oh(g,f,0)|0)+16>>2]|0)+154|0;b[j>>1]=(b[j>>1]|0)*1e3}g=f;h=h+1|0;f=c[k>>2]|0}j=Ry(e)|0;while(1){f=c[k>>2]|0;if(!j)break;h=(c[(c[f+268>>2]|0)+(c[(c[j+16>>2]|0)+232>>2]<<2)>>2]|0)+16|0;f=(c[h>>2]|0)+216|0;c[f>>2]=(c[f>>2]|0)+1;f=Dx(e,j)|0;while(1){if(!f)break;i=c[f>>2]|0;d=f+-48|0;g=c[(c[(c[((i&3|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;while(1){if((g|0)>=(c[(c[(c[((i&3|0)==2?f:d)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;i=(c[(c[c[(c[h>>2]|0)+180>>2]>>2]|0)+16>>2]|0)+168|0;b[i>>1]=(b[i>>1]|0)+1<<16>>16;g=g+1|0;i=c[f>>2]|0}f=Fx(e,f)|0}j=Sy(e,j)|0}d=b[f+238>>1]|0;i=f+268|0;f=b[f+236>>1]|0;while(1){if((f|0)>(d|0))break;g=(c[(c[(c[i>>2]|0)+(f<<2)>>2]|0)+16>>2]|0)+216|0;h=c[g>>2]|0;if((h|0)>1)c[g>>2]=h+-1;f=f+1|0}return}function jl(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=(c[(c[e+16>>2]|0)+212>>2]|0)+16|0;e=c[k>>2]|0;j=f+1|0;if((j|0)!=(a[e+273>>0]|0)){i=b[e+236>>1]|0;while(1){h=b[e+238>>1]|0;if((i|0)>(h<<16>>16|0))break;Ai(d,c[(c[e+268>>2]|0)+(i<<2)>>2]|0);i=i+1|0;e=c[k>>2]|0}i=b[e+236>>1]|0;while(1){if((i|0)>(h<<16>>16|0))break;Bi(g,c[(c[e+268>>2]|0)+(i<<2)>>2]|0,f);d=c[k>>2]|0;i=i+1|0;h=b[d+238>>1]|0;e=d}a[e+273>>0]=j}return}function kl(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=Ry(b)|0;while(1){if(!h)break;c[(c[h+16>>2]|0)+212>>2]=0;g=Dx(b,h)|0;while(1){if(!g)break;d=c[(c[g+16>>2]|0)+172>>2]|0;a:do if(d|0)do{e=d+-48|0;f=c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break a;c[f+212>>2]=0;d=c[c[(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);g=Fx(b,g)|0}h=Sy(b,h)|0}ll(b);return}function ll(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=b+16|0;d=1;while(1){f=c[e>>2]|0;if((d|0)>(c[f+180>>2]|0))break;ll(c[(c[f+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}i=Ry(b)|0;while(1){if(!i)break;d=(c[i+16>>2]|0)+212|0;if(!(c[d>>2]|0))c[d>>2]=b;h=Dx(b,i)|0;while(1){if(!h)break;d=c[(c[h+16>>2]|0)+172>>2]|0;a:do if(d|0)do{e=c[d>>2]|0;g=d+-48|0;f=c[(c[((e&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break a;f=f+212|0;if(!(c[f>>2]|0)){c[f>>2]=b;e=c[d>>2]|0}d=c[c[(c[(c[((e&3|0)==2?d:g)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);h=Fx(b,h)|0}i=Sy(b,i)|0}return}function ml(a){a=a|0;var b=0,c=0,d=0;d=sM(a)|0;c=Ry(a)|0;while(1){if(!c)break;b=Dx(a,c)|0;while(1){if(!b)break;nl(b,d);b=Fx(a,b)|0}c=Sy(a,c)|0}xw(d)|0;return} +function xH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0,n=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+80|0;r=u+40|0;q=u+32|0;n=u+24|0;m=u;s=4;t=B_(40)|0;c[t>>2]=0;f=u+68|0;g=u+64|0;if(0){o=0;ka(62,a|0,f|0,g|0);i=o;o=0;if((i|0)!=0&(p|0)!=0){j=D3(c[i>>2]|0,t|0,s|0)|0;if(!j)bb(i|0,p|0);z=p}else j=-1;if((j|0)!=1){j=c[15686]|0;i=c[f>>2]|0;f=c[g>>2]|0;o=0;c[m>>2]=99176;c[m+4>>2]=i;c[m+8>>2]=f;c[m+12>>2]=d;c[m+16>>2]=b;ca(29,j|0,99132,m|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1){o=0;ha(1);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1)j=6;else{f=z;j=15}}else{f=z;j=15}}else{f=z;j=15}}else j=6;do if((j|0)==6){o=0;f=$(27,a|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=D3(c[g>>2]|0,t|0,s|0)|0;if(!i)bb(g|0,p|0);z=p}else i=-1;if((i|0)!=1){if(!f){o=0;ha(2);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;break}}if((d|0)<1){o=0;ha(3);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;break}f=0;break}else{c[46441]=(e|0)>-1?e:30;t=C3(185768,1,t|0,s|0)|0;s=z;o=0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;break}f=0;j=15;break}}else{f=z;j=15}}while(0);a:do if((j|0)==15){b:while(1){if(f|0){f=2;break a}o=0;ha(4);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue}a=c[15686]|0;m=0;while(1){o=0;j=_(2)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}if(!j)break;o=0;f=$(28,j|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=D3(c[g>>2]|0,t|0,s|0)|0;if(!i)bb(g|0,p|0);z=p}else i=-1;if((i|0)==1){f=z;j=15;continue b}o=0;ja(25,j|0,f|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}m=m+1|0;do if(((m|0)%100|0|0)==0&0!=0){f=(m|0)%1e3|0;if((f|0)==100){o=0;aa(91,99176,a|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}o=0;c[n>>2]=m;ca(29,a|0,99194,n|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}break}o=0;c[q>>2]=m;ca(29,a|0,99194,q|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=D3(c[g>>2]|0,t|0,s|0)|0;if(!i)bb(g|0,p|0);z=p}else i=-1;if((i|0)==1){f=z;j=15;continue b}if(!f){o=0;aa(92,10,a|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}}}while(0);if((m|0)>=(d|0))break}switch(b|0){case 1:{o=0;ha(5);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}break}case 2:{o=0;ha(6);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}break}default:{o=0;ha(7);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}o=0;ha(3);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}}}if(!0){f=0;break a}if((m|0)>99){o=0;aa(92,10,a|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue}}f=c[46481]|0;g=c[46482]|0;o=0;k=+X(1);i=o;o=0;if((i|0)!=0&(p|0)!=0){j=D3(c[i>>2]|0,t|0,s|0)|0;if(!j)bb(i|0,p|0);z=p}else j=-1;if((j|0)==1){f=z;j=15;continue}o=0;c[r>>2]=99176;c[r+4>>2]=f;c[r+8>>2]=g;c[r+12>>2]=m;h[r+16>>3]=k;ca(29,a|0,99198,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,t|0,s|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15}else break}f=0}while(0);C_(t|0);l=u;return f|0}function yH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a=(c[a+16>>2]|0)+192|0;e=0;h=0;while(1){a=c[a>>2]|0;if(!a)break;g=c[a+16>>2]|0;f=c[g+180>>2]|0;a=0;while(1){if(!(c[f+(a<<2)>>2]|0))break;a=a+1|0;e=e+1|0}a=g+164|0;h=h+1|0}c[b>>2]=h;c[d>>2]=e;return}function zH(b){b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;c[46484]=b;c[46491]=0;c[46482]=0;c[46481]=0;i=b+16|0;b=(c[i>>2]|0)+192|0;h=0;f=0;while(1){b=c[b>>2]|0;if(!b)break;g=c[b+16>>2]|0;a[g+157>>0]=0;h=h+1|0;c[46481]=h;d=c[g+180>>2]|0;b=0;while(1){if(!(c[d+(b<<2)>>2]|0))break;k=f+1|0;c[46482]=k;b=b+1|0;f=k}b=g+164|0}b=c[46492]|0;if(!b)b=uH(h<<2)|0;else b=wH(b,h<<2)|0;c[46492]=b;c[46493]=0;b=c[46486]|0;if(!b)b=uH(c[46481]<<2)|0;else b=wH(b,c[46481]<<2)|0;c[46486]=b;c[46485]=0;d=1;b=(c[i>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;k=b+16|0;i=c[k>>2]|0;j=i+292|0;c[j>>2]=0;i=c[i+172>>2]|0;h=d;g=0;b=0;while(1){d=c[i+(g<<2)>>2]|0;if(!d)break;f=b+1|0;c[j>>2]=f;b=c[d+16>>2]|0;c[b+160>>2]=0;c[b+164>>2]=-1;if(!h)b=0;else{l=c[d>>2]&3;b=((c[(c[(c[((l|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((l|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)<(e[b+170>>1]|0|0)?0:h}h=b;g=g+1|0;b=f}b=tH((g<<2)+4|0)|0;d=c[k>>2]|0;c[d+264>>2]=b;c[d+268>>2]=0;d=c[d+180>>2]|0;b=0;do{l=b;b=b+1|0}while((c[d+(l<<2)>>2]|0)!=0);d=tH(b<<2)|0;b=c[k>>2]|0;c[b+272>>2]=d;c[b+276>>2]=0;d=h;b=b+164|0}return d|0}function AH(){var a=0,b=0,d=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o+8|0;k=o;m=FL(c[46481]|0)|0;a=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b){j=0;break}d=b+16|0;a=c[d>>2]|0;if(!(c[a+292>>2]|0)){HL(m,b);a=c[d>>2]|0}a=a+164|0}while(1){a=IL(m)|0;if(!a)break;i=a+16|0;a=c[i>>2]|0;f=a+232|0;c[f>>2]=0;d=c[a+172>>2]|0;b=0;h=0;while(1){g=c[d+(b<<2)>>2]|0;if(!g){f=0;break}g=(c[(c[(c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)+(e[(c[g+16>>2]|0)+170>>1]|0)|0;g=(h|0)>(g|0)?h:g;c[f>>2]=g;b=b+1|0;h=g}while(1){b=c[(c[a+180>>2]|0)+(f<<2)>>2]|0;if(!b)break;d=b+-48|0;g=(c[(c[((c[b>>2]&3|0)==2?b:d)+40>>2]|0)+16>>2]|0)+292|0;h=c[g>>2]|0;c[g>>2]=h+-1;if((h|0)<2){HL(m,c[((c[b>>2]&3|0)==2?b:d)+40>>2]|0);a=c[i>>2]|0}f=f+1|0}j=j+1|0}a:do if((j|0)!=(c[46481]|0)){Ow(1,99530,k)|0;a=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b)break a;d=b+16|0;a=c[d>>2]|0;if(c[a+292>>2]|0){k=qy(b)|0;a=c[(c[d>>2]|0)+292>>2]|0;c[n>>2]=k;c[n+4>>2]=a;Ow(3,99552,n)|0;a=c[d>>2]|0}a=a+164|0}}while(0);GL(m);l=o;return}function BH(){var b=0,d=0,e=0;b=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;e=b+16|0;b=c[e>>2]|0;d=c[b+264>>2]|0;if(d){C_(d);b=c[e>>2]|0}d=c[b+272>>2]|0;if(d){C_(d);b=c[e>>2]|0}a[b+157>>0]=0;b=b+164|0}return}function CH(){var a=0,b=0,d=0,e=0,f=0;a=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if(!a)break;a=c[a+16>>2]|0;c[a+280>>2]=0;a=a+164|0}f=tH(c[46481]<<2)|0;e=0;a=(c[(c[46484]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b)break;d=b+16|0;a=c[d>>2]|0;if(!(c[a+280>>2]|0)){c[f+(e<<2)>>2]=PH(b)|0;b=e+1|0;a=c[d>>2]|0}else b=e;e=b;a=a+164|0}a=QH(f,e)|0;while(1){if((RH(a)|0)<=1)break;VH(a,c[(UH(TH(SH(a)|0)|0)|0)+8>>2]|0)}C_(a);a=0;while(1){if((a|0)>=(e|0))break;C_(c[f+(a<<2)>>2]|0);a=a+1|0}C_(f);if((c[46485]|0)==((c[46481]|0)+-1|0)){WH();return}else qa(99275,99305,523,99310)}function DH(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=c[46491]|0;f=c[46485]|0;j=c[46486]|0;k=c[46441]|0;b=0;a=0;g=i;while(1){if((g|0)>=(f|0)){h=8;break}e=c[j+(g<<2)>>2]|0;d=c[(c[e+16>>2]|0)+160>>2]|0;if((d|0)<0){if(!a)a=e;else a=(c[(c[a+16>>2]|0)+160>>2]|0)>(d|0)?e:a;b=b+1|0;if((b|0)>=(k|0))break}e=g+1|0;c[46491]=e;g=e}if((h|0)==8)if((i|0)>0){f=0;while(1){if((f|0)>=(i|0))break;d=c[j+(f<<2)>>2]|0;e=c[(c[d+16>>2]|0)+160>>2]|0;if((e|0)<0){if(!a)a=d;else a=(c[(c[a+16>>2]|0)+160>>2]|0)>(e|0)?d:a;b=b+1|0;if((b|0)>=(k|0))break}f=f+1|0}c[46491]=f}return a|0}function EH(a){a=a|0;var b=0,d=0;b=c[a>>2]&3;d=c[((b|0)==3?a:a+48|0)+40>>2]|0;a=c[((b|0)==2?a:a+-48|0)+40>>2]|0;b=(c[(c[d+16>>2]|0)+288>>2]|0)<(c[(c[a+16>>2]|0)+288>>2]|0);a=b?d:a;c[46487]=0;c[46488]=2147483647;d=c[a+16>>2]|0;c[46489]=c[d+284>>2];c[46490]=c[d+288>>2];if(b)OH(a);else NH(a);return c[46487]|0}function FH(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;g=c[b>>2]&3;m=b+-48|0;j=b+48|0;k=b+16|0;g=(c[(c[(c[((g|0)==2?b:m)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((g|0)==3?b:j)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[k>>2]|0)+170>>1]|0)|0;do if((g|0)>0){d=c[a>>2]&3;h=c[((d|0)==3?a:a+48|0)+40>>2]|0;i=c[h+16>>2]|0;if(((c[i+276>>2]|0)+(c[i+268>>2]|0)|0)==1){JH(h,g);break}d=c[((d|0)==2?a:a+-48|0)+40>>2]|0;f=c[d+16>>2]|0;if(((c[f+276>>2]|0)+(c[f+268>>2]|0)|0)==1){JH(d,0-g|0);break}if((c[i+288>>2]|0)<(c[f+288>>2]|0)){JH(h,g);break}else{JH(d,0-g|0);break}}while(0);d=a+16|0;f=c[(c[d>>2]|0)+160>>2]|0;g=c[b>>2]&3;g=KH(c[((g|0)==3?b:j)+40>>2]|0,c[((g|0)==2?b:m)+40>>2]|0,f,1)|0;i=c[b>>2]&3;if((KH(c[((i|0)==2?b:m)+40>>2]|0,c[((i|0)==3?b:j)+40>>2]|0,f,0)|0)==(g|0)){c[(c[k>>2]|0)+160>>2]=0-f;c[(c[d>>2]|0)+160>>2]=0;LH(a,b);n=c[g+16>>2]|0;MH(g,c[n+280>>2]|0,c[n+284>>2]|0)|0;l=o;return}else{Ow(1,99236,n)|0;bb(185768,1)}}function GH(){var b=0,d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;IH();m=tH((c[46483]<<2)+4|0)|0;d=c[46483]|0;b=0;while(1){if((b|0)>(d|0))break;c[m+(b<<2)>>2]=0;b=b+1|0}b=(c[(c[46484]|0)+16>>2]|0)+192|0;d=b;while(1){d=c[d>>2]|0;if(!d)break;d=c[d+16>>2]|0;if(!(a[d+156>>0]|0)){l=m+(c[d+232>>2]<<2)|0;c[l>>2]=(c[l>>2]|0)+1}d=d+164|0}while(1){b=c[b>>2]|0;if(!b)break;l=b+16|0;b=c[l>>2]|0;if(!(a[b+156>>0]|0)){h=c[46483]|0;f=c[b+172>>2]|0;k=0;j=0;d=0;while(1){g=c[f+(d<<2)>>2]|0;if(!g)break;n=c[g+16>>2]|0;i=(c[(c[(c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)+(e[n+170>>1]|0)|0;k=(c[n+156>>2]|0)+k|0;j=(j|0)>(i|0)?j:i;d=d+1|0}g=c[b+180>>2]|0;i=0;d=0;while(1){f=c[g+(d<<2)>>2]|0;if(!f)break;o=c[f+16>>2]|0;n=(c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[o+170>>1]|0)|0;i=(c[o+156>>2]|0)+i|0;h=(h|0)<(n|0)?h:n;d=d+1|0}d=(j|0)>0?j:0;if((k|0)==(i|0)){g=d;f=d;while(1){d=f+1|0;if((f|0)>=(h|0))break;g=(c[m+(d<<2)>>2]|0)<(c[m+(g<<2)>>2]|0)?d:g;f=d}o=b+232|0;n=m+(c[o>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+-1;n=m+(g<<2)|0;c[n>>2]=(c[n>>2]|0)+1;c[o>>2]=g}d=c[b+264>>2]|0;if(d){C_(d);b=c[l>>2]|0}d=c[b+272>>2]|0;if(d){C_(d);b=c[l>>2]|0}a[b+157>>0]=0}b=b+164|0}C_(m);return}function HH(){var a=0,b=0,d=0,f=0,g=0,h=0;b=0;while(1){if((b|0)>=(c[46485]|0))break;a=c[(c[46486]|0)+(b<<2)>>2]|0;do if(((c[(c[a+16>>2]|0)+160>>2]|0)==0?(d=EH(a)|0,d|0):0)?(f=c[d>>2]&3,f=(c[(c[(c[((f|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((f|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0,(f|0)>=2):0){h=c[a>>2]&3;g=c[((h|0)==3?a:a+48|0)+40>>2]|0;a=c[((h|0)==2?a:a+-48|0)+40>>2]|0;if((c[(c[g+16>>2]|0)+288>>2]|0)<(c[(c[a+16>>2]|0)+288>>2]|0)){JH(g,f>>>1);break}else{JH(a,(f|0)/-2|0);break}}while(0);b=b+1|0}BH();return}function IH(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|0;h=i;c[h>>2]=0;c[h>>2]=2147483647;c[46483]=-2147483647;b=(c[(c[46484]|0)+16>>2]|0)+192|0;e=b;g=2147483647;f=-2147483647;while(1){d=c[e>>2]|0;if(!d)break;e=c[d+16>>2]|0;if(!(a[e+156>>0]|0)){j=c[e+232>>2]|0;d=(g|0)<(j|0)?g:j;c[h>>2]=d;f=(f|0)>(j|0)?f:j;c[46483]=f}else d=g;e=e+164|0;g=d}if(g|0){while(1){b=c[b>>2]|0;if(!b)break;b=c[b+16>>2]|0;j=b+232|0;c[j>>2]=(c[j>>2]|0)-g;b=b+164|0}c[46483]=f-g;c[h>>2]=0}l=i;return}function JH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+16|0;a=c[f>>2]|0;e=a+232|0;c[e>>2]=(c[e>>2]|0)-b;e=0;while(1){d=c[(c[a+272>>2]|0)+(e<<2)>>2]|0;if(!d){e=0;break}if((d|0)!=(c[a+280>>2]|0)){JH(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,b);a=c[f>>2]|0}e=e+1|0}while(1){d=c[(c[a+264>>2]|0)+(e<<2)>>2]|0;if(!d)break;if((d|0)!=(c[a+280>>2]|0)){JH(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,b);a=c[f>>2]|0}e=e+1|0}return}function KH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=(e|0)==0&1;h=0-d|0;f=c[(c[b+16>>2]|0)+288>>2]|0;b=a;while(1){a=c[b+16>>2]|0;if((c[a+284>>2]|0)<=(f|0)?(f|0)<=(c[a+288>>2]|0):0)break;a=c[a+280>>2]|0;i=a+48|0;j=(c[a+16>>2]|0)+160|0;c[j>>2]=(((b|0)==(c[((c[a>>2]&3|0)==3?a:i)+40>>2]|0)?e:g)|0?d:h)+(c[j>>2]|0);j=c[a>>2]&3;i=c[((j|0)==3?a:i)+40>>2]|0;a=c[((j|0)==2?a:a+-48|0)+40>>2]|0;b=(c[(c[i+16>>2]|0)+288>>2]|0)>(c[(c[a+16>>2]|0)+288>>2]|0)?i:a}return b|0}function LH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=a+16|0;e=(c[i>>2]|0)+164|0;c[(c[b+16>>2]|0)+164>>2]=c[e>>2];c[(c[46486]|0)+(c[e>>2]<<2)>>2]=b;c[(c[i>>2]|0)+164>>2]=-1;i=(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16|0;e=c[i>>2]|0;g=e+276|0;f=c[g>>2]|0;j=f+-1|0;c[g>>2]=j;g=e+272|0;h=0;while(1){if((h|0)>=(f|0)){k=3;break}d=c[g>>2]|0;if((c[d+(h<<2)>>2]|0)==(a|0))break;h=h+1|0}if((k|0)==3)d=c[e+272>>2]|0;c[d+(h<<2)>>2]=c[d+(j<<2)>>2];c[(c[(c[i>>2]|0)+272>>2]|0)+(j<<2)>>2]=0;i=(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16|0;e=c[i>>2]|0;g=e+268|0;f=c[g>>2]|0;j=f+-1|0;c[g>>2]=j;g=e+264|0;h=0;while(1){if((h|0)>=(f|0)){k=8;break}d=c[g>>2]|0;if((c[d+(h<<2)>>2]|0)==(a|0))break;h=h+1|0}if((k|0)==8)d=c[e+264>>2]|0;c[d+(h<<2)>>2]=c[d+(j<<2)>>2];c[(c[(c[i>>2]|0)+264>>2]|0)+(j<<2)>>2]=0;k=(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)+16|0;a=c[k>>2]|0;j=c[a+272>>2]|0;a=a+276|0;i=c[a>>2]|0;c[a>>2]=i+1;c[j+(i<<2)>>2]=b;k=c[k>>2]|0;c[(c[k+272>>2]|0)+(c[k+276>>2]<<2)>>2]=0;k=(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)+16|0;i=c[k>>2]|0;j=c[i+264>>2]|0;i=i+268|0;a=c[i>>2]|0;c[i>>2]=a+1;c[j+(a<<2)>>2]=b;k=c[k>>2]|0;c[(c[k+264>>2]|0)+(c[k+268>>2]<<2)>>2]=0;return}function MH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=a+16|0;a=c[g>>2]|0;c[a+280>>2]=b;c[a+284>>2]=d;f=0;while(1){e=c[(c[a+272>>2]|0)+(f<<2)>>2]|0;if(!e){f=0;break}if((e|0)!=(b|0)){d=MH(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,e,d)|0;a=c[g>>2]|0}f=f+1|0}while(1){e=c[(c[a+264>>2]|0)+(f<<2)>>2]|0;if(!e)break;if((e|0)!=(b|0)){d=MH(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0,e,d)|0;a=c[g>>2]|0}f=f+1|0}c[a+288>>2]=d;return d+1|0}function NH(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0,j=0;i=a+16|0;g=0;while(1){a=c[i>>2]|0;d=c[(c[a+180>>2]|0)+(g<<2)>>2]|0;if(!d){d=0;break}f=c[d+16>>2]|0;if((c[f+164>>2]|0)<0){a=c[d>>2]&3;b=c[(c[((a|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0;j=c[b+288>>2]|0;if((c[46489]|0)>(j|0)|(j|0)>(c[46490]|0)?(h=(c[b+232>>2]|0)-(c[(c[(c[((a|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[f+170>>1]|0)|0,(h|0)<(c[46488]|0)|(c[46487]|0)==0):0){c[46487]=d;c[46488]=h}}else{b=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0))NH(b)}g=g+1|0}while(1){b=c[(c[a+264>>2]|0)+(d<<2)>>2]|0;if(!((b|0)!=0&(c[46488]|0)>0))break;b=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0)){NH(b);a=c[i>>2]|0}d=d+1|0}return}function OH(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0,j=0;i=a+16|0;g=0;while(1){a=c[i>>2]|0;d=c[(c[a+172>>2]|0)+(g<<2)>>2]|0;if(!d){d=0;break}f=c[d+16>>2]|0;if((c[f+164>>2]|0)<0){a=c[d>>2]&3;b=c[(c[((a|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0;j=c[b+288>>2]|0;if((c[46489]|0)>(j|0)|(j|0)>(c[46490]|0)?(h=(c[(c[(c[((a|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[b+232>>2]|0)-(e[f+170>>1]|0)|0,(h|0)<(c[46488]|0)|(c[46487]|0)==0):0){c[46487]=d;c[46488]=h}}else{b=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0))OH(b)}g=g+1|0}while(1){b=c[(c[a+272>>2]|0)+(d<<2)>>2]|0;if(!((b|0)!=0&(c[46488]|0)>0))break;b=c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0)){OH(b);a=c[i>>2]|0}d=d+1|0}return}function PH(a){a=a|0;var b=0;b=tH(16)|0;c[b>>2]=a;c[b+4>>2]=dI(a,b)|0;c[b+12>>2]=b;return b|0}function QH(a,b){a=a|0;b=b|0;var d=0,e=0;e=tH(8)|0;c[e>>2]=a;c[e+4>>2]=b;d=0;while(1){if((d|0)>=(b|0))break;c[(c[a+(d<<2)>>2]|0)+8>>2]=d;d=d+1|0}d=(b|0)/2|0;while(1){if((d|0)<=-1)break;VH(e,d);d=d+-1|0}return e|0}function RH(a){a=a|0;return c[a+4>>2]|0}function SH(a){a=a|0;var b=0,d=0,e=0,f=0;f=c[a>>2]|0;b=c[f>>2]|0;c[b+8>>2]=-1;d=a+4|0;e=(c[d>>2]|0)+-1|0;c[f>>2]=c[f+(e<<2)>>2];f=c[a>>2]|0;c[(c[f>>2]|0)+8>>2]=0;c[f+(e<<2)>>2]=b;c[d>>2]=e;VH(a,0);return b|0}function TH(a){a=a|0;return cI(c[a>>2]|0,0,0)|0}function UH(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0;b=a+16|0;if((c[(c[b>>2]|0)+164>>2]|0)>-1)qa(99324,99305,463,99338);g=a+48|0;d=_H(c[((c[a>>2]&3|0)==3?a:g)+40>>2]|0)|0;i=a+-48|0;f=_H(c[((c[a>>2]&3|0)==2?a:i)+40>>2]|0)|0;h=c[a>>2]&3;b=(c[(c[(c[((h|0)==2?a:i)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((h|0)==3?a:g)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[b>>2]|0)+170>>1]|0)|0;if((c[d+8>>2]|0)==-1)$H(c[d>>2]|0,0,b);else $H(c[f>>2]|0,0,0-b|0);aI(a);return bI(d,f)|0}function VH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]|0;g=c[a+4>>2]|0;while(1){a=b<<1;f=a+2|0;a=a|1;if(!((a|0)<(g|0)?(c[(c[h+(a<<2)>>2]|0)+4>>2]|0)<(c[(c[h+(b<<2)>>2]|0)+4>>2]|0):0))a=b;if((f|0)>=(g|0))break;d=h+(f<<2)|0;e=c[d>>2]|0;if((f|0)==(b|0)?1:(c[e+4>>2]|0)>=(c[(c[h+(a<<2)>>2]|0)+4>>2]|0))break;i=h+(b<<2)|0;a=c[i>>2]|0;c[i>>2]=e;c[d>>2]=a;c[(c[i>>2]|0)+8>>2]=b;c[a+8>>2]=f;b=f}return}function WH(){MH(c[(c[(c[46484]|0)+16>>2]|0)+192>>2]|0,0,1)|0;XH(c[(c[(c[46484]|0)+16>>2]|0)+192>>2]|0,0);return}function XH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+16|0;d=0;while(1){a=c[f>>2]|0;e=c[(c[a+272>>2]|0)+(d<<2)>>2]|0;if(!e){e=0;break}if((e|0)!=(b|0))XH(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,e);d=d+1|0}while(1){d=c[(c[a+264>>2]|0)+(e<<2)>>2]|0;if(!d)break;if((d|0)!=(b|0)){XH(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,d);a=c[f>>2]|0}e=e+1|0}if(b|0)YH(b);return}function YH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=c[a>>2]&3;d=c[((b|0)==3?a:a+48|0)+40>>2]|0;e=c[d+16>>2]|0;if((c[e+280>>2]|0)==(a|0))i=1;else{e=c[((b|0)==2?a:a+-48|0)+40>>2]|0;i=-1;d=e;e=c[e+16>>2]|0}g=c[e+180>>2]|0;b=0;f=0;while(1){h=c[g+(f<<2)>>2]|0;if(!h)break;b=(ZH(h,d,i)|0)+b|0;f=f+1|0}g=c[e+172>>2]|0;e=0;while(1){f=c[g+(e<<2)>>2]|0;if(!f)break;b=(ZH(f,d,i)|0)+b|0;e=e+1|0}c[(c[a+16>>2]|0)+160>>2]=b;return}function ZH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=(h|0)==3?a:a+48|0;e=c[i+40>>2]|0;if((e|0)==(b|0))e=c[((h|0)==2?a:a+-48|0)+40>>2]|0;g=c[b+16>>2]|0;f=c[(c[e+16>>2]|0)+288>>2]|0;if((c[g+284>>2]|0)<=(f|0)?(f|0)<=(c[g+288>>2]|0):0){f=c[a+16>>2]|0;if((c[f+164>>2]|0)>-1)e=c[f+160>>2]|0;else e=0;g=1;e=e-(c[f+156>>2]|0)|0}else{g=0;e=c[(c[a+16>>2]|0)+156>>2]|0}i=(c[((d|0)>0?((h|0)==2?a:a+-48|0):i)+40>>2]|0)==(b|0)?1:-1;return (((g?i:0-i|0)|0)<0?0-e|0:e)|0}function _H(a){a=a|0;var b=0,d=0;a=c[(c[a+16>>2]|0)+280>>2]|0;while(1){b=a+12|0;d=c[b>>2]|0;if(!((d|0)!=(a|0)&(d|0)!=0))break;a=c[d+12>>2]|0;if(!a){a=d;continue}c[b>>2]=a}return a|0}function $H(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=a+16|0;e=c[h>>2]|0;g=e+232|0;c[g>>2]=(c[g>>2]|0)+d;g=0;while(1){f=c[(c[e+264>>2]|0)+(g<<2)>>2]|0;if(!f){g=0;break}f=c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0;if((f|0)!=(b|0)){$H(f,a,d);e=c[h>>2]|0}g=g+1|0}while(1){f=c[(c[e+272>>2]|0)+(g<<2)>>2]|0;if(!f)break;f=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;if((f|0)!=(b|0)){$H(f,a,d);e=c[h>>2]|0}g=g+1|0}return}function aI(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;d=(c[b+16>>2]|0)+164|0;if((c[d>>2]|0)>-1){Ow(1,99427,h)|0;bb(185768,1)}g=c[46485]|0;c[d>>2]=g;d=c[46486]|0;c[46485]=g+1;c[d+(g<<2)>>2]=b;d=c[b>>2]|0;g=b+48|0;e=c[((d&3|0)==3?b:g)+40>>2]|0;if(!(a[(c[e+16>>2]|0)+157>>0]|0)){f=c[46492]|0;d=c[46493]|0;c[46493]=d+1;c[f+(d<<2)>>2]=e;d=c[b>>2]|0}f=b+-48|0;e=c[((d&3|0)==2?b:f)+40>>2]|0;if(!(a[(c[e+16>>2]|0)+157>>0]|0)){i=c[46492]|0;d=c[46493]|0;c[46493]=d+1;c[i+(d<<2)>>2]=e;d=c[b>>2]|0}i=(c[((d&3|0)==3?b:g)+40>>2]|0)+16|0;d=c[i>>2]|0;a[d+157>>0]=1;e=c[d+272>>2]|0;d=d+276|0;g=c[d>>2]|0;c[d>>2]=g+1;c[e+(g<<2)>>2]=b;g=c[i>>2]|0;c[(c[g+272>>2]|0)+(c[g+276>>2]<<2)>>2]=0;i=c[i>>2]|0;if(!(c[(c[i+180>>2]|0)+((c[i+276>>2]|0)+-1<<2)>>2]|0)){Ow(1,99461,h+8|0)|0;bb(185768,1)}i=(c[((c[b>>2]&3|0)==2?b:f)+40>>2]|0)+16|0;e=c[i>>2]|0;a[e+157>>0]=1;f=c[e+264>>2]|0;e=e+268|0;g=c[e>>2]|0;c[e>>2]=g+1;c[f+(g<<2)>>2]=b;b=c[i>>2]|0;c[(c[b+264>>2]|0)+(c[b+268>>2]<<2)>>2]=0;i=c[i>>2]|0;if(!(c[(c[i+172>>2]|0)+((c[i+268>>2]|0)+-1<<2)>>2]|0)){Ow(1,99496,h+16|0)|0;bb(185768,1)}else{l=h;return}}function bI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;while(1){g=a+12|0;d=c[g>>2]|0;if((d|0)==0|(d|0)==(a|0))break;else a=d}while(1){f=b+12|0;d=c[f>>2]|0;if((d|0)==0|(d|0)==(b|0))break;else b=d}if((a|0)!=(b|0)){e=c[a+8>>2]|0;d=c[b+8>>2]|0;do if((e|0)>-1)if((d|0)==-1)h=a;else j=10;else if((d|0)>-1)if((e|0)==-1){h=b;break}else{j=10;break}else qa(99350,99305,327,99397);while(0);if((j|0)==10)h=(c[b+4>>2]|0)<(c[a+4>>2]|0)?a:b;c[f>>2]=h;c[g>>2]=h;c[h+4>>2]=(c[b+4>>2]|0)+(c[a+4>>2]|0);if((c[h+8>>2]|0)>-1)i=h;else qa(99408,99305,335,99397)}else i=a;return i|0}function cI(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=_H(a)|0;if(d){k=c[d>>2]&3;if(((c[(c[(c[((k|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((k|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)!=(e[(c[d+16>>2]|0)+170>>1]|0|0))f=3}else{d=0;f=3}a:do if((f|0)==3){k=a+16|0;j=0;while(1){f=c[k>>2]|0;i=c[(c[f+180>>2]|0)+(j<<2)>>2]|0;if(!i){j=0;break}f=i+16|0;g=i+-48|0;h=c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0;do if((c[(c[f>>2]|0)+164>>2]|0)>-1){if((h|0)!=(b|0))d=cI(h,a,d)|0}else if((_H(h)|0)!=(l|0)){if(d|0?(m=c[i>>2]&3,h=c[d>>2]&3,((c[(c[(c[((m|0)==2?i:g)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((m|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[f>>2]|0)+170>>1]|0)|0)>=((c[(c[(c[((h|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((h|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0)):0)break;d=i}while(0);j=j+1|0}while(1){f=c[(c[f+172>>2]|0)+(j<<2)>>2]|0;if(!f)break a;g=f+16|0;h=f+48|0;i=c[((c[f>>2]&3|0)==3?f:h)+40>>2]|0;do if((c[(c[g>>2]|0)+164>>2]|0)>-1){if((i|0)!=(b|0))d=cI(i,a,d)|0}else if((_H(i)|0)!=(l|0)){if(d|0?(i=c[f>>2]&3,m=c[d>>2]&3,((c[(c[(c[((i|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((i|0)==3?f:h)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[g>>2]|0)+170>>1]|0)|0)>=((c[(c[(c[((m|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((m|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0)):0)break;d=f}while(0);j=j+1|0;f=c[k>>2]|0}}while(0);return d|0}function dI(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=a+16|0;d=c[l>>2]|0;c[d+280>>2]=b;a=1;h=0;while(1){g=c[(c[d+172>>2]|0)+(h<<2)>>2]|0;if(!g){h=0;break}f=c[g+16>>2]|0;if(((c[f+164>>2]|0)<=-1?(i=c[g>>2]&3,j=g+48|0,k=c[(c[((i|0)==3?g:j)+40>>2]|0)+16>>2]|0,(c[k+280>>2]|0)==0):0)?((c[(c[(c[((i|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[k+232>>2]|0)|0)==(e[f+170>>1]|0|0):0){aI(g);a=(dI(c[((c[g>>2]&3|0)==3?g:j)+40>>2]|0,b)|0)+a|0;d=c[l>>2]|0}h=h+1|0}while(1){f=c[(c[d+180>>2]|0)+(h<<2)>>2]|0;if(!f)break;g=c[f+16>>2]|0;if(((c[g+164>>2]|0)<=-1?(m=c[f>>2]&3,n=f+-48|0,o=c[(c[((m|0)==2?f:n)+40>>2]|0)+16>>2]|0,(c[o+280>>2]|0)==0):0)?((c[o+232>>2]|0)-(c[(c[(c[((m|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)==(e[g+170>>1]|0|0):0){aI(f);a=(dI(c[((c[f>>2]&3|0)==2?f:n)+40>>2]|0,b)|0)+a|0;d=c[l>>2]|0}h=h+1|0}return a|0}function eI(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=wx(a,99560)|0;if(!d)d=30;else d=$1(d)|0;return xH(a,b,c,d)|0}function fI(a){a=+a;return +((c[46369]|0)==0?a:+h[22916]-a)}function gI(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0;r=l;l=l+16|0;q=r;c[46494]=c[(c[(c[d+64>>2]|0)+8>>2]|0)+4>>2];hI(d);i=c[d+16>>2]|0;t=+h[i+32>>3];s=+h[i+40>>3];iI(e,99571,+h[b+352>>3]);iI(e,99578,t*.013888888888888888);iI(e,99578,s*.013888888888888888);jI(e);i=Ry(d)|0;while(1){if(!i)break;g=i+16|0;if(!(a[(c[g>>2]|0)+118>>0]|0)){kI(e,99580,IA(qy(i)|0)|0);p=(c[g>>2]|0)+16|0;c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];lI(e,q);if(!(a[(c[(c[g>>2]|0)+104>>2]|0)+82>>0]|0)){b=dz(i)|0;b=mI(b,c[c[(c[g>>2]|0)+104>>2]>>2]|0)|0}else b=IA(xx(i,c[46384]|0)|0)|0;iI(e,99578,+h[(c[g>>2]|0)+32>>3]);iI(e,99578,+h[(c[g>>2]|0)+40>>3]);kI(e,99578,b);kI(e,99578,NL(i,c[46387]|0,108041)|0);kI(e,99578,c[c[(c[g>>2]|0)+8>>2]>>2]|0);kI(e,99578,NL(i,c[46378]|0,134232)|0);b=NL(i,c[46379]|0,191979)|0;if(!(a[b>>0]|0))b=NL(i,c[46378]|0,131718)|0;kI(e,99578,b);jI(e)}i=Sy(d,i)|0}o=f<<24>>24==0;n=Ry(d)|0;while(1){if(!n)break;m=Dx(d,n)|0;while(1){if(!m)break;if(o){f=191979;j=191979}else{j=wx(m,108373)|0;f=wx(m,108382)|0;f=f|0?f:191979;j=j|0?j:191979}p=m+16|0;b=c[p>>2]|0;k=c[b+8>>2]|0;a:do if(k){i=c[k+4>>2]|0;b=0;g=0;while(1){if((b|0)>=(i|0))break;u=(c[(c[k>>2]|0)+(b*48|0)+4>>2]|0)+g|0;b=b+1|0;g=u}kI(e,0,108368);nI(e,c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0,j);nI(e,c[((c[m>>2]&3|0)==2?m:m+-48|0)+40>>2]|0,f);oI(e,g);f=0;while(1){b=c[p>>2]|0;g=c[b+8>>2]|0;if((f|0)>=(c[g+4>>2]|0))break a;i=c[g>>2]|0;g=c[i+(f*48|0)>>2]|0;i=c[i+(f*48|0)+4>>2]|0;b=0;while(1){if((b|0)>=(i|0))break;u=g+(b<<4)|0;c[q>>2]=c[u>>2];c[q+4>>2]=c[u+4>>2];c[q+8>>2]=c[u+8>>2];c[q+12>>2]=c[u+12>>2];lI(e,q);b=b+1|0}f=f+1|0}}while(0);if(c[b+96>>2]|0){u=dz(c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0)|0;kI(e,99578,mI(u,c[c[(c[p>>2]|0)+96>>2]>>2]|0)|0);u=(c[(c[p>>2]|0)+96>>2]|0)+56|0;c[q>>2]=c[u>>2];c[q+4>>2]=c[u+4>>2];c[q+8>>2]=c[u+8>>2];c[q+12>>2]=c[u+12>>2];lI(e,q)}kI(e,99578,NL(m,c[46415]|0,108041)|0);kI(e,99578,NL(m,c[46406]|0,134232)|0);jI(e);m=Fx(d,m)|0}n=Sy(d,n)|0}pI(99586,e);l=r;return}function hI(a){a=a|0;var b=0.0;if(c[46369]|0){a=c[a+16>>2]|0;b=+h[a+24>>3]+ +h[a+40>>3];h[22916]=b;h[22917]=b*.013888888888888888}return}function iI(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0;f=l;l=l+1040|0;e=f;d=f+8|0;if(b|0)pI(b,a);h[e>>3]=c;X0(d,99592,e)|0;pI(d,a);l=f;return}function jI(b){b=b|0;a[191875]=10;lb[c[46494]&127](b,191875)|0;return}function kI(a,b,c){a=a|0;b=b|0;c=c|0;if(b|0)pI(b,a);pI(c,a);return}function lI(a,b){a=a|0;b=b|0;var d=0.0;iI(a,99578,+h[b>>3]*.013888888888888888);if(!(c[46369]|0))d=+h[b+8>>3];else d=+h[22916]-+h[b+8>>3];iI(a,99578,d*.013888888888888888);return}function mI(a,b){a=a|0;b=b|0;var c=0;c=Nz(a,b)|0;b=IA(c)|0;Pz(a,c)|0;return b|0}function nI(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!(a[(c[d+16>>2]|0)+118>>0]|0))d=IA(qy(d)|0)|0;else{f=dz(d)|0;d=mI(f,(z$(qy(d)|0,58)|0)+1|0)|0}kI(b,99578,d);if(e|0?a[e>>0]|0:0)kI(b,104958,IA(e)|0);return}function oI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+1040|0;f=d;e=d+8|0;pI(99578,a);c[f>>2]=b;X0(e,134313,f)|0;pI(e,a);l=d;return}function pI(a,b){a=a|0;b=b|0;lb[c[46494]&127](b,a)|0;return}function qI(d,f,g){d=d|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0.0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;Y=l;l=l+2288|0;W=Y+208|0;V=Y+192|0;U=Y+176|0;T=Y+160|0;S=Y+144|0;R=Y+128|0;P=Y+112|0;O=Y+96|0;N=Y+80|0;M=Y+64|0;L=Y+56|0;K=Y+48|0;X=Y+32|0;Q=Y+24|0;J=Y;G=Y+1264|0;H=Y+224|0;I=d+16|0;C=(e[(c[I>>2]|0)+178>>1]|0)>2;BG(1);hI(d);Sw(H,1024,Y+240|0);KM(d,1,99597,191979)|0;KM(d,1,99601,191979)|0;c[46376]=KM(d,1,138034,191979)|0;c[46375]=KM(d,1,137966,191979)|0;KM(d,2,99597,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0;if(i&16){KM(d,1,99607,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&1){KM(d,2,99611,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&32){KM(d,2,99607,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&2){KM(d,2,99614,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&4){KM(d,2,99622,191979)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(!(i&8)){v=0;w=0;x=0}else{x=KM(d,0,99611,191979)|0;w=KM(d,0,99630,191979)|0;v=KM(d,0,99637,191979)|0}z=KM(d,0,99645,191979)|0;A=H+4|0;B=H+8|0;u=0;i=0;y=Ry(d)|0;while(1){if(!y)break;t=y+16|0;k=c[t>>2]|0;o=+h[k+16>>3];j=(c[46369]|0)==0;if(C){if(j)m=+h[k+24>>3];else m=+h[22916]-+h[k+24>>3];q=+h[(c[k+132>>2]|0)+16>>3]*72.0;h[J>>3]=o;h[J+8>>3]=m;h[J+16>>3]=q;X0(G,99648,J)|0;Vw(H,G)|0;j=3;while(1){if((j|0)>=(e[(c[I>>2]|0)+178>>1]|0))break;h[Q>>3]=+h[(c[(c[t>>2]|0)+132>>2]|0)+(j<<3)>>3]*72.0;X0(G,99663,Q)|0;Vw(H,G)|0;j=j+1|0}j=c[A>>2]|0;if(j>>>0>=(c[B>>2]|0)>>>0){Tw(H,1)|0;j=c[A>>2]|0}a[j>>0]=0;s=c[H>>2]|0;c[A>>2]=s;yx(y,99597,s)|0;s=y}else{if(j)m=+h[k+24>>3];else m=+h[22916]-+h[k+24>>3];h[X>>3]=o;h[X+8>>3]=m;X0(G,99669,X)|0;yx(y,99597,G)|0;s=y}h[K>>3]=+h[(c[t>>2]|0)+80>>3]*.013888888888888888;X0(G,99592,K)|0;qx(s,c[46375]|0,G)|0;j=c[t>>2]|0;h[L>>3]=(+h[j+96>>3]+ +h[j+88>>3])*.013888888888888888;X0(G,99592,L)|0;qx(s,c[46376]|0,G)|0;j=c[t>>2]|0;k=c[j+108>>2]|0;if((k|0)!=0?(a[k+81>>0]|0)!=0:0){q=+h[k+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[M>>3]=+h[k+56>>3];h[M+8>>3]=q;X0(G,99669,M)|0;yx(s,99607,G)|0;j=c[t>>2]|0}if(a$(c[c[j+8>>2]>>2]|0,103194)|0){if(c[46400]|0?(TJ(y)|0)<<24>>24:0){k=c[(c[t>>2]|0)+12>>2]|0;r=k+8|0;j=c[r>>2]|0;if((j|0)<3){j=wx(s,99679)|0;if(!j)j=8;else j=$1(j)|0;j=(j|0)<3?8:j}p=k+44|0;q=1.0/+(j|0);n=0;while(1){if((n|0)>=(j|0))break;if((n|0)>0){k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){Tw(H,1)|0;k=c[A>>2]|0}c[A>>2]=k+1;a[k>>0]=32}if((c[r>>2]|0)>2){k=c[p>>2]|0;if(!(c[46369]|0))m=+h[k+(n<<4)+8>>3]*.013888888888888888;else m=+h[22917]-+h[k+(n<<4)+8>>3]*.013888888888888888;h[N>>3]=+h[k+(n<<4)>>3]*.013888888888888888;h[N+8>>3]=m;X0(G,99692,N)|0}else{k=c[t>>2]|0;m=q*+(n|0)*6.283185307179586;o=+h[k+32>>3]*.5*+E(+m);if(!(c[46369]|0))m=+h[k+40>>3]*.5*+F(+m);else m=+h[22917]-+h[k+40>>3]*.5*+F(+m);h[O>>3]=o;h[O+8>>3]=m;X0(G,99692,O)|0}Vw(H,G)|0;n=n+1|0}k=c[46400]|0;j=c[A>>2]|0;if(j>>>0>=(c[B>>2]|0)>>>0){Tw(H,1)|0;j=c[A>>2]|0}a[j>>0]=0;t=c[H>>2]|0;c[A>>2]=t;qx(s,k,t)|0}}else{rI(y,c[j+12>>2]|0,H);Xw(H)|0;j=c[A>>2]|0;if(j>>>0>=(c[B>>2]|0)>>>0){Tw(H,1)|0;j=c[A>>2]|0}a[j>>0]=0;t=c[H>>2]|0;c[A>>2]=t;yx(s,99601,t)|0}a:do if((c[46367]|0)>0){t=Dx(d,y)|0;j=u;while(1){if(!t)break a;s=t+16|0;k=c[s>>2]|0;do if((a[k+112>>0]|0)!=6?(D=c[k+8>>2]|0,(D|0)!=0):0){r=0;k=D;while(1){if((r|0)>=(c[k+4>>2]|0))break;if((r|0)>0){k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){Tw(H,1)|0;k=c[A>>2]|0}c[A>>2]=k+1;a[k>>0]=59;k=c[(c[s>>2]|0)+8>>2]|0}k=c[k>>2]|0;if(c[k+(r*48|0)+8>>2]|0){if(!(c[46369]|0))m=+h[k+(r*48|0)+24>>3];else m=+h[22916]-+h[k+(r*48|0)+24>>3];h[P>>3]=+h[k+(r*48|0)+16>>3];h[P+8>>3]=m;X0(G,99702,P)|0;Vw(H,G)|0;i=1;k=c[c[(c[s>>2]|0)+8>>2]>>2]|0}if(c[k+(r*48|0)+12>>2]|0){if(!(c[46369]|0))m=+h[k+(r*48|0)+40>>3];else m=+h[22916]-+h[k+(r*48|0)+40>>3];h[R>>3]=+h[k+(r*48|0)+32>>3];h[R+8>>3]=m;X0(G,99715,R)|0;Vw(H,G)|0;j=1}p=0;while(1){k=c[(c[s>>2]|0)+8>>2]|0;n=c[k>>2]|0;if((p|0)>=(c[n+(r*48|0)+4>>2]|0))break;if((p|0)>0){k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){Tw(H,1)|0;k=c[A>>2]|0}c[A>>2]=k+1;a[k>>0]=32;k=c[c[(c[s>>2]|0)+8>>2]>>2]|0}else k=n;u=c[k+(r*48|0)>>2]|0;q=+h[u+(p<<4)+8>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[S>>3]=+h[u+(p<<4)>>3];h[S+8>>3]=q;X0(G,99669,S)|0;Vw(H,G)|0;p=p+1|0}r=r+1|0}k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){Tw(H,1)|0;k=c[A>>2]|0}a[k>>0]=0;k=c[H>>2]|0;c[A>>2]=k;yx(t,99597,k)|0;k=c[s>>2]|0;n=c[k+96>>2]|0;if(n){q=+h[n+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[T>>3]=+h[n+56>>3];h[T+8>>3]=q;X0(G,99669,T)|0;yx(t,99611,G)|0;k=c[s>>2]|0}n=c[k+108>>2]|0;do if(n){if(!(a[n+81>>0]|0))break;q=+h[n+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[U>>3]=+h[n+56>>3];h[U+8>>3]=q;X0(G,99669,U)|0;yx(t,99607,G)|0;k=c[s>>2]|0}while(0);n=c[k+100>>2]|0;if(n){q=+h[n+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[V>>3]=+h[n+56>>3];h[V+8>>3]=q;X0(G,99669,V)|0;yx(t,99614,G)|0;k=c[s>>2]|0}k=c[k+104>>2]|0;if(!k)break;q=+h[k+64>>3];q=(c[46369]|0)==0?q:+h[22916]-q;h[W>>3]=+h[k+56>>3];h[W+8>>3]=q;X0(G,99669,W)|0;yx(t,99622,G)|0}while(0);t=Fx(d,t)|0}}else j=u;while(0);u=j;y=Sy(d,y)|0}sI(d,z,x,w,v);Ww(H);if(b[(c[I>>2]|0)+136>>1]&1)EM(d);c[f>>2]=i;c[g>>2]=u;BG(0);l=Y;return}function rI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0.0;n=l;l=l+1056|0;k=n;j=n+32|0;m=b+48|0;if(!(c[m>>2]|0)){e=c[a+16>>2]|0;i=+h[e+16>>3];if(!(c[46369]|0)){g=+h[e+24>>3];f=g+ +h[b+24>>3];g=g+ +h[b+40>>3]}else{g=+h[e+24>>3];f=+h[22916]-+h[b+24>>3]-g;g=+h[22916]-+h[b+40>>3]-g}o=i+ +h[b+32>>3];h[k>>3]=i+ +h[b+16>>3];h[k+8>>3]=f;h[k+16>>3]=o;h[k+24>>3]=g;X0(j,99753,k)|0;Vw(d,j)|0}b=b+56|0;e=0;while(1){if((e|0)>=(c[m>>2]|0))break;rI(a,c[(c[b>>2]|0)+(e<<2)>>2]|0,d);e=e+1|0}l=n;return}function sI(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=l;l=l+1088|0;o=s+56|0;q=s+48|0;p=s+32|0;j=s;n=s+64|0;r=b+16|0;i=c[r>>2]|0;if(!(c[46369]|0)){k=+h[i+24>>3];m=+h[i+40>>3]}else{m=+h[22916];k=m-+h[i+24>>3];m=m-+h[i+40>>3]}t=+h[i+32>>3];h[j>>3]=+h[i+16>>3];h[j+8>>3]=k;h[j+16>>3]=t;h[j+24>>3]=m;X0(n,99728,j)|0;qx(b,d,n)|0;i=c[(c[r>>2]|0)+12>>2]|0;if((i|0)!=0?(a[c[i>>2]>>0]|0)!=0:0){t=+h[i+64>>3];t=(c[46369]|0)==0?t:+h[22916]-t;h[p>>3]=+h[i+56>>3];h[p+8>>3]=t;X0(n,99669,p)|0;qx(b,e,n)|0;i=c[(c[r>>2]|0)+12>>2]|0;t=+h[i+32>>3];h[q>>3]=+h[i+24>>3]*.013888888888888888;X0(n,99748,q)|0;qx(b,f,n)|0;h[o>>3]=t*.013888888888888888;X0(n,99748,o)|0;qx(b,g,n)|0;i=1}else i=1;while(1){j=c[r>>2]|0;if((i|0)>(c[j+180>>2]|0))break;sI(c[(c[j+184>>2]|0)+(i<<2)>>2]|0,d,e,f,g);i=i+1|0}l=s;return}function tI(a){a=a|0;var b=0;b=l;l=l+16|0;qI(a,b,b+4|0);l=b;return}function uI(){return Bw(20636,c[4555]|0)|0}function vI(a,b,c){a=a|0;b=b|0;c=c|0;C_(b);return}function wI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[b>>2]|0;e=c[d>>2]|0;if((a|0)<=(e|0))if((a|0)<(e|0))a=-1;else{b=c[b+4>>2]|0;d=c[d+4>>2]|0;return ((b|0)>(d|0)?1:((b|0)<(d|0))<<31>>31)|0}else a=1;return a|0}function xI(a){a=a|0;xw(a)|0;return}function yI(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];b=zI(e)|0;if((nb[c[a>>2]&63](a,b,1)|0)!=(b|0))C_(b);l=d;return}function zI(a){a=a|0;var b=0,d=0,e=0;b=tH(16)|0;e=a;d=c[e+4>>2]|0;a=b+8|0;c[a>>2]=c[e>>2];c[a+4>>2]=d;return b|0}function AI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+8|0;g=e;c[g>>2]=b;c[g+4>>2]=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];b=zI(f)|0;if((nb[c[a>>2]&63](a,b,1)|0)!=(b|0))C_(b);l=e;return}function BI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d;g=b;f=c[g+4>>2]|0;b=e+8|0;c[b>>2]=c[g>>2];c[b+4>>2]=f;b=(nb[c[a>>2]&63](a,e,4)|0)!=0&1;l=d;return b|0}function CI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f+8>>2]=b;c[f+12>>2]=d;d=(nb[c[a>>2]&63](a,f,4)|0)!=0&1;l=e;return d|0}function DI(a){a=a|0;return Dw(a)|0}function EI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=tH((Dw(a)|0)<<3)|0;b=d;a=zw(a)|0;while(1){if(!a)break;g=a+8|0;f=c[g+4>>2]|0;e=b;c[e>>2]=c[g>>2];c[e+4>>2]=f;b=b+8|0;a=c[a>>2]|0}return d|0}function FI(){var a=0,b=0,d=0,e=0;a=uH(40)|0;b=a;d=20672;e=b+36|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));c[a+36>>2]=0;return Bw(a,c[4555]|0)|0}function GI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;d=d+36|0;a=c[d>>2]|0;if(!a)a=uH(20)|0;else c[d>>2]=c[a>>2];f=b+8|0;e=c[f+4>>2]|0;d=a+8|0;c[d>>2]=c[f>>2];c[d+4>>2]=e;c[a+16>>2]=c[b+16>>2];return a|0}function HI(a,b,d){a=a|0;b=b|0;d=d|0;d=d+36|0;c[b>>2]=c[d>>2];c[d>>2]=b;return}function II(a){a=a|0;nb[c[a>>2]&63](a,0,64)|0;return}function JI(a){a=a|0;var b=0,d=0;b=c[a+4>>2]|0;xw(a)|0;a=c[b+36>>2]|0;while(1){if(!a)break;d=c[a>>2]|0;C_(a);a=d}C_(b);return}function KI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=l;l=l+32|0;g=f;c[g+8>>2]=b;c[g+12>>2]=d;c[g+16>>2]=e;e=c[(nb[c[a>>2]&63](a,g,1)|0)+16>>2]|0;l=f;return e|0}function LI(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+160|0;q=t+144|0;d=t+48|0;j=t+128|0;k=t+112|0;m=t+96|0;n=t+80|0;o=t+32|0;p=t+16|0;r=t;s=a+16|0;a=c[s>>2]|0;e=+h[a+16>>3];f=+h[a+24>>3];g=+h[a+32>>3];i=+h[a+40>>3];if((b+-1|0)>>>0<2){MI(j,e,i);c[q>>2]=c[j>>2];c[q+4>>2]=c[j+4>>2];c[q+8>>2]=c[j+8>>2];c[q+12>>2]=c[j+12>>2];NI(d,q);p=d+16|0;MI(k,g,f);c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[q+8>>2]=c[k+8>>2];c[q+12>>2]=c[k+12>>2];NI(m,q);c[p>>2]=c[m>>2];c[p+4>>2]=c[m+4>>2];c[p+8>>2]=c[m+8>>2];c[p+12>>2]=c[m+12>>2]}else{MI(n,e,f);c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];NI(d,q);n=d+16|0;MI(o,g,i);c[q>>2]=c[o>>2];c[q+4>>2]=c[o+4>>2];c[q+8>>2]=c[o+8>>2];c[q+12>>2]=c[o+12>>2];NI(p,q);c[n>>2]=c[p>>2];c[n+4>>2]=c[p+4>>2];c[n+8>>2]=c[p+8>>2];c[n+12>>2]=c[p+12>>2]}a=(c[s>>2]|0)+16|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];c[a+28>>2]=c[d+28>>2];a=c[(c[s>>2]|0)+12>>2]|0;if(!a)a=1;else{a=a+56|0;c[q>>2]=c[a>>2];c[q+4>>2]=c[a+4>>2];c[q+8>>2]=c[a+8>>2];c[q+12>>2]=c[a+12>>2];NI(r,q);c[a>>2]=c[r>>2];c[a+4>>2]=c[r+4>>2];c[a+8>>2]=c[r+8>>2];c[a+12>>2]=c[r+12>>2];a=1}while(1){d=c[s>>2]|0;if((a|0)>(c[d+180>>2]|0))break;LI(c[(c[d+184>>2]|0)+(a<<2)>>2]|0,b);a=a+1|0}l=t;return}function MI(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function NI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+32|0;g=d+16|0;e=d;f=(c[46495]|0)*90|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];YG(e,g,f);c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];h[b>>3]=+h[b>>3]-+h[22918];e=b+8|0;h[e>>3]=+h[e>>3]-+h[22919];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];l=d;return}function OI(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0,k=0.0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+1168|0;s=w+144|0;v=w+96|0;u=w+64|0;t=w+48|0;o=w+32|0;p=w+16|0;q=w;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;r=b+16|0;m=c[(c[r>>2]|0)+116>>2]|0;c[46495]=m&3;m=m&1;a[191877]=m;if(!(m<<24>>24))QI(b);else PI(b);RI(b);m=c[r>>2]|0;e=c[m+12>>2]|0;do if(e|0?(a[e+81>>0]|0)==0:0){g=e+24|0;c[t>>2]=c[g>>2];c[t+4>>2]=c[g+4>>2];c[t+8>>2]=c[g+8>>2];c[t+12>>2]=c[g+12>>2];n=+h[t>>3]+16.0;h[t>>3]=n;g=t+8|0;f=+h[g>>3]+8.0;h[g>>3]=f;g=(a[m+275>>0]&1)!=0;if(a[191877]|0){if(g){i=m+32|0;h[i>>3]=+h[i>>3]+f}else{i=m+16|0;h[i>>3]=+h[i>>3]-f}g=m+40|0;f=+h[g>>3];i=m+24|0;j=+h[i>>3];k=f-j;if(!(n>k))break;n=(n-k)*.5;h[i>>3]=j-n;h[g>>3]=f+n;break}i=(c[46495]|0)==0;do if(g)if(i){i=m+40|0;h[i>>3]=+h[i>>3]+f;break}else{i=m+24|0;h[i>>3]=+h[i>>3]-f;break}else if(i){i=m+24|0;h[i>>3]=+h[i>>3]-f;break}else{i=m+40|0;h[i>>3]=+h[i>>3]+f;break}while(0);g=m+32|0;f=+h[g>>3];i=m+16|0;j=+h[i>>3];k=f-j;if(n>k){n=(n-k)*.5;h[i>>3]=j-n;h[g>>3]=f+n}}while(0);if(d){switch(c[46495]|0){case 0:{q=m+16|0;c[45836]=c[q>>2];c[45837]=c[q+4>>2];c[45838]=c[q+8>>2];c[45839]=c[q+12>>2];break}case 1:{MI(o,-+h[m+40>>3],+h[m+16>>3]);c[45836]=c[o>>2];c[45837]=c[o+4>>2];c[45838]=c[o+8>>2];c[45839]=c[o+12>>2];break}case 2:{MI(p,+h[m+16>>3],-+h[m+40>>3]);c[45836]=c[p>>2];c[45837]=c[p+4>>2];c[45838]=c[p+8>>2];c[45839]=c[p+12>>2];break}case 3:{MI(q,+h[m+24>>3],+h[m+16>>3]);c[45836]=c[q>>2];c[45837]=c[q+4>>2];c[45838]=c[q+8>>2];c[45839]=c[q+12>>2];break}default:{}}SI(b);e=c[(c[r>>2]|0)+12>>2]|0}if(e|0?(a[e+81>>0]|0)==0:0){c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];TI(b,s)}if(!0){l=w;return}if(!(a[191877]|0)){n=+h[22919];k=+h[22918];h[v>>3]=n;h[v+8>>3]=k;h[v+16>>3]=n;h[v+24>>3]=k;h[v+32>>3]=-k;h[v+40>>3]=-n;X0(s,99989,v)|0}else{k=+h[22918];n=+h[22919];h[u>>3]=k;h[u+8>>3]=n;h[u+16>>3]=k;h[u+24>>3]=n;X0(s,99774,u)|0}m1(s)|0;ab()}function PI(b){b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0;j=b+16|0;if(((ez(b)|0)!=(b|0)?(g=c[j>>2]|0,i=c[g+12>>2]|0,(i|0)!=0):0)?(a[i+81>>0]|0)==0:0){d=a[g+275>>0]|0;if(!(d&1)){f=+h[g+16>>3]+ +h[g+96>>3]*.5;b=g+104|0}else{f=+h[g+32>>3]-+h[g+64>>3]*.5;b=g+72|0}e=+h[b>>3];b=d<<24>>24;do if(!(b&4))if(!(b&2)){e=(+h[g+40>>3]+ +h[g+24>>3])*.5;break}else{e=+h[g+40>>3]-e*.5;break}else e=+h[g+24>>3]+e*.5;while(0);h[i+56>>3]=f;h[i+64>>3]=e;a[(c[(c[j>>2]|0)+12>>2]|0)+81>>0]=1;b=1}else b=1;while(1){d=c[j>>2]|0;if((b|0)>(c[d+180>>2]|0))break;PI(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function QI(b){b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0;k=b+16|0;if(((ez(b)|0)!=(b|0)?(i=c[k>>2]|0,j=c[i+12>>2]|0,(j|0)!=0):0)?(a[j+81>>0]|0)==0:0){d=a[i+275>>0]|0;if(!(d&1)){g=+h[i+24>>3]+ +h[i+56>>3]*.5;b=i+48|0}else{g=+h[i+40>>3]-+h[i+88>>3]*.5;b=i+80|0}f=+h[b>>3];b=d<<24>>24;do if(!(b&4)){e=+h[i+16>>3];if(!(b&2)){e=(+h[i+32>>3]+e)*.5;break}else{e=e+f*.5;break}}else e=+h[i+32>>3]-f*.5;while(0);h[j+56>>3]=e;h[j+64>>3]=g;a[(c[(c[k>>2]|0)+12>>2]|0)+81>>0]=1;b=1}else b=1;while(1){d=c[k>>2]|0;if((b|0)>(c[d+180>>2]|0))break;QI(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function RI(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=l;l=l+544|0;L=S+504|0;R=S+416|0;Q=S+376|0;K=S+352|0;J=S+312|0;I=S+288|0;H=S+248|0;M=S+200|0;B=S+152|0;O=S+96|0;p=S+488|0;C=S+456|0;D=S+424|0;E=S+384|0;F=S+360|0;G=S+320|0;w=S+296|0;x=S+256|0;y=S+232|0;z=S+168|0;A=S+136|0;f=S+56|0;N=S+16|0;P=S;o=e+16|0;u=c[o>>2]|0;g=b[u+136>>1]&14;u=d[u+113>>0]|0;if(!((u&54|0)==0?(u&1|0)==0|(c[46368]|0)!=0:0)){u=g<<16>>16==0;n=Ry(e)|0;h=0;j=0;i=0;while(1){if(!n)break;g=c[(c[n+16>>2]|0)+108>>2]|0;do if(g)if(!(a[g+81>>0]|0)){i=i+1|0;break}else{h=h+1|0;break}while(0);m=Dx(e,n)|0;g=j;while(1){if(!m)break;k=c[m+16>>2]|0;j=c[k+108>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);j=c[k+100>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);j=c[k+104>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);j=c[k+96>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);m=Fx(e,m)|0}n=Sy(e,n)|0;j=g}if(!(a[(c[o>>2]|0)+113>>0]&8))o=0;else o=VI(e)|0;t=j+i|0;if(t|0){q=h+j+o+($x(e)|0)|0;r=tH(q*40|0)|0;s=tH(t*40|0)|0;MI(M,2147483647.0,2147483647.0);g=M+16|0;MI(p,-2147483647.0,-2147483647.0);c[g>>2]=c[p>>2];c[g+4>>2]=c[p+4>>2];c[g+8>>2]=c[p+8>>2];c[g+12>>2]=c[p+12>>2];g=s;i=r;n=Ry(e)|0;while(1){if(!n)break;c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];WI(C,n,i,L);c[M>>2]=c[C>>2];c[M+4>>2]=c[C+4>>2];c[M+8>>2]=c[C+8>>2];c[M+12>>2]=c[C+12>>2];c[M+16>>2]=c[C+16>>2];c[M+20>>2]=c[C+20>>2];c[M+24>>2]=c[C+24>>2];c[M+28>>2]=c[C+28>>2];h=c[(c[n+16>>2]|0)+108>>2]|0;do if(h)if(!(a[h+81>>0]|0)){c[L>>2]=c[B>>2];c[L+4>>2]=c[B+4>>2];c[L+8>>2]=c[B+8>>2];c[L+12>>2]=c[B+12>>2];YI(h,i,g,0,L);g=g+40|0;break}else{i=i+40|0;c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];XI(D,h,i,L);c[M>>2]=c[D>>2];c[M+4>>2]=c[D+4>>2];c[M+8>>2]=c[D+8>>2];c[M+12>>2]=c[D+12>>2];c[M+16>>2]=c[D+16>>2];c[M+20>>2]=c[D+20>>2];c[M+24>>2]=c[D+24>>2];c[M+28>>2]=c[D+28>>2];break}while(0);m=Dx(e,n)|0;i=i+40|0;while(1){if(!m)break;k=m+16|0;h=c[k>>2]|0;j=c[h+96>>2]|0;a:do if(!j)v=52;else{do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){fL(F,e,m);c[L>>2]=c[F>>2];c[L+4>>2]=c[F+4>>2];c[L+8>>2]=c[F+8>>2];c[L+12>>2]=c[F+12>>2];YI(j,i,g,1,L);g=g+40|0;break}c[H>>2]=c[j>>2];Ow(0,100801,H)|0;break a}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];XI(E,j,i,L);c[M>>2]=c[E>>2];c[M+4>>2]=c[E+4>>2];c[M+8>>2]=c[E+8>>2];c[M+12>>2]=c[E+12>>2];c[M+16>>2]=c[E+16>>2];c[M+20>>2]=c[E+20>>2];c[M+24>>2]=c[E+24>>2];c[M+28>>2]=c[E+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0;v=52}while(0);b:do if((v|0)==52){v=0;j=c[h+104>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){ZI(w,m);c[L>>2]=c[w>>2];c[L+4>>2]=c[w+4>>2];c[L+8>>2]=c[w+8>>2];c[L+12>>2]=c[w+12>>2];YI(j,i,g,1,L);g=g+40|0;break}c[I>>2]=c[j>>2];Ow(0,100836,I)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];XI(G,j,i,L);c[M>>2]=c[G>>2];c[M+4>>2]=c[G+4>>2];c[M+8>>2]=c[G+8>>2];c[M+12>>2]=c[G+12>>2];c[M+16>>2]=c[G+16>>2];c[M+20>>2]=c[G+20>>2];c[M+24>>2]=c[G+24>>2];c[M+28>>2]=c[G+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0}j=c[h+100>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){_I(y,m);c[L>>2]=c[y>>2];c[L+4>>2]=c[y+4>>2];c[L+8>>2]=c[y+8>>2];c[L+12>>2]=c[y+12>>2];YI(j,i,g,1,L);g=g+40|0;break}c[J>>2]=c[j>>2];Ow(0,100876,J)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];XI(x,j,i,L);c[M>>2]=c[x>>2];c[M+4>>2]=c[x+4>>2];c[M+8>>2]=c[x+8>>2];c[M+12>>2]=c[x+12>>2];c[M+16>>2]=c[x+16>>2];c[M+20>>2]=c[x+20>>2];c[M+24>>2]=c[x+24>>2];c[M+28>>2]=c[x+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0}j=c[h+108>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){fL(A,e,m);c[L>>2]=c[A>>2];c[L+4>>2]=c[A+4>>2];c[L+8>>2]=c[A+8>>2];c[L+12>>2]=c[A+12>>2];YI(j,i,g,1,L);g=g+40|0;break}c[K>>2]=c[j>>2];Ow(0,100916,K)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];XI(z,j,i,L);c[M>>2]=c[z>>2];c[M+4>>2]=c[z+4>>2];c[M+8>>2]=c[z+8>>2];c[M+12>>2]=c[z+12>>2];c[M+16>>2]=c[z+16>>2];c[M+20>>2]=c[z+20>>2];c[M+24>>2]=c[z+24>>2];c[M+28>>2]=c[z+28>>2]}while(0);i=i+40|0}}while(0);m=Fx(e,m)|0}n=Sy(e,n)|0}if(o|0){c[f>>2]=c[M>>2];c[f+4>>2]=c[M+4>>2];c[f+8>>2]=c[M+8>>2];c[f+12>>2]=c[M+12>>2];c[f+16>>2]=c[M+16>>2];c[f+20>>2]=c[M+20>>2];c[f+24>>2]=c[M+24>>2];c[f+28>>2]=c[M+28>>2];c[f+32>>2]=i;h=L;g=h+40|0;do{c[h>>2]=c[f>>2];h=h+4|0;f=f+4|0}while((h|0)<(g|0));$I(N,e,L);c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];c[M+16>>2]=c[N+16>>2];c[M+20>>2]=c[N+20>>2];c[M+24>>2]=c[N+24>>2];c[M+28>>2]=c[N+28>>2]}a[O+32>>0]=OL(e,mx(e,0,100952,0)|0,1)|0;c[O>>2]=c[M>>2];c[O+4>>2]=c[M+4>>2];c[O+8>>2]=c[M+8>>2];c[O+12>>2]=c[M+12>>2];c[O+16>>2]=c[M+16>>2];c[O+20>>2]=c[M+20>>2];c[O+24>>2]=c[M+24>>2];c[O+28>>2]=c[M+28>>2];RP(r,q,s,t,O)|0;if(0)aJ(r,q,s,t,O);f=0;g=0;h=s;while(1){if((g|0)>=(t|0))break;if(a[h+36>>0]|0){O=c[h+32>>2]|0;a[O+81>>0]=1;N=O+56|0;bJ(P,h);c[N>>2]=c[P>>2];c[N+4>>2]=c[P+4>>2];c[N+8>>2]=c[P+8>>2];c[N+12>>2]=c[P+12>>2];jM(e,O);f=f+1|0}g=g+1|0;h=h+40|0}if(!0){if((f|0)!=(t|0)){c[R>>2]=f;c[R+4>>2]=t;Ow(0,100997,R)|0}}else{R=c[15686]|0;c[Q>>2]=f;c[Q+4>>2]=t;f1(R,100964,Q)|0}C_(r);C_(s)}}l=S;return}function SI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0;i=l;l=l+48|0;e=i+32|0;f=i+16|0;g=i;if(+h[22918]!=0.0|+h[22919]!=0.0|(c[46495]|0)!=0){d=Ry(a)|0;while(1){if(!d)break;if(c[46495]|0)aN(d,0);b=d+16|0;j=(c[b>>2]|0)+16|0;c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[e+12>>2]=c[j+12>>2];NI(f,e);c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];b=c[(c[b>>2]|0)+108>>2]|0;if(b|0){j=b+56|0;c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[e+12>>2]=c[j+12>>2];NI(g,e);c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];c[j+12>>2]=c[g+12>>2]}a:do if((c[46367]|0)==1){b=Dx(a,d)|0;while(1){if(!b)break a;UI(b);b=Fx(a,b)|0}}while(0);d=Sy(a,d)|0}LI(a,c[(c[a+16>>2]|0)+116>>2]&3)}l=i;return}function TI(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0;i=b+16|0;j=c[i>>2]|0;g=a[j+275>>0]|0;b=g<<24>>24;do if(!(b&4)){e=+h[j+16>>3];if(!(b&2)){f=(+h[j+32>>3]+e)*.5;break}else{f=+h[d>>3]*.5+e;break}}else f=+h[j+32>>3]-+h[d>>3]*.5;while(0);if(!(g&1))e=+h[d+8>>3]*.5+ +h[j+24>>3];else e=+h[j+40>>3]-+h[d+8>>3]*.5;j=c[j+12>>2]|0;h[j+56>>3]=f;h[j+64>>3]=e;a[(c[(c[i>>2]|0)+12>>2]|0)+81>>0]=1;return}function UI(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=l;l=l+144|0;q=s+120|0;e=s+16|0;i=s+104|0;j=s+88|0;k=s+72|0;m=s+56|0;n=s+40|0;o=s+24|0;r=s;p=b+16|0;d=c[p>>2]|0;f=c[d+8>>2]|0;if(!f){if((a[191874]|0)==0?(a[d+112>>0]|0)!=6:0){q=qy(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;r=qy(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[e>>2]=q;c[e+4>>2]=r;Ow(1,100784,e)|0}}else{h=0;b=f;while(1){if((h|0)>=(c[b+4>>2]|0))break;g=c[b>>2]|0;b=c[g+(h*48|0)>>2]|0;e=c[g+(h*48|0)+4>>2]|0;f=c[g+(h*48|0)+8>>2]|0;g=c[g+(h*48|0)+12>>2]|0;d=0;while(1){if((d|0)>=(e|0))break;t=b+(d<<4)|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];NI(i,q);c[t>>2]=c[i>>2];c[t+4>>2]=c[i+4>>2];c[t+8>>2]=c[i+8>>2];c[t+12>>2]=c[i+12>>2];d=d+1|0}if(f|0){t=(c[c[(c[p>>2]|0)+8>>2]>>2]|0)+(h*48|0)+16|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];NI(j,q);c[t>>2]=c[j>>2];c[t+4>>2]=c[j+4>>2];c[t+8>>2]=c[j+8>>2];c[t+12>>2]=c[j+12>>2]}if(g|0){t=(c[c[(c[p>>2]|0)+8>>2]>>2]|0)+(h*48|0)+32|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];NI(k,q);c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2]}d=c[p>>2]|0;h=h+1|0;b=c[d+8>>2]|0}b=c[d+96>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];NI(m,q);c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];d=c[p>>2]|0}b=c[d+108>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];NI(n,q);c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];c[d+8>>2]=c[n+8>>2];c[d+12>>2]=c[n+12>>2];d=c[p>>2]|0}b=c[d+100>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];NI(o,q);c[d>>2]=c[o>>2];c[d+4>>2]=c[o+4>>2];c[d+8>>2]=c[o+8>>2];c[d+12>>2]=c[o+12>>2];d=c[p>>2]|0}d=c[d+104>>2]|0;if(d|0){t=d+56|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];NI(r,q);c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2]}}l=s;return}function VI(b){b=b|0;var d=0,e=0,f=0;f=b+16|0;if((ez(b)|0)!=(b|0)?(d=c[(c[f>>2]|0)+12>>2]|0,(d|0)!=0):0){e=1;b=(a[d+81>>0]|0)!=0&1}else{e=1;b=0}while(1){d=c[f>>2]|0;if((e|0)>(c[d+180>>2]|0))break;d=(VI(c[(c[d+184>>2]|0)+(e<<2)>>2]|0)|0)+b|0;e=e+1|0;b=d}return b|0}function WI(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0;g=l;l=l+32|0;i=g;n=(a[191877]|0)==0;d=d+16|0;m=c[d>>2]|0;k=+h[(n?m+32|0:m+40|0)>>3];h[e+16>>3]=k*72.0;j=+h[(n?m+40|0:m+32|0)>>3];h[e+24>>3]=j*72.0;d=(c[d>>2]|0)+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];h[e>>3]=+h[e>>3]-k*36.0;d=e+8|0;h[d>>3]=+h[d>>3]-j*36.0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];cJ(b,e,i);l=g;return}function XI(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0;g=l;l=l+32|0;i=g;n=(a[191877]|0)==0;m=d+24|0;k=+h[(n?m:d+32|0)>>3];h[e+16>>3]=k;j=+h[(n?d+32|0:m)>>3];h[e+24>>3]=j;d=d+56|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];h[e>>3]=+h[e>>3]-k*.5;d=e+8|0;h[d>>3]=+h[d>>3]-j*.5;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];cJ(b,e,i);l=g;return}function YI(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(f|0){f=d+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2]}if(!(a[191877]|0)){g=b+24|0;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2]}else{h[e>>3]=+h[b+32>>3];h[e+8>>3]=+h[b+24>>3]}c[e+32>>2]=b;a[e+36>>0]=0;c[d+32>>2]=e;return}function ZI(a,b){a=a|0;b=b|0;b=eL(b)|0;do if(b){b=c[b>>2]|0;if(!(c[b+8>>2]|0)){b=c[b>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{b=b+16|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}}else{c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}while(0);return}function _I(a,b){a=a|0;b=b|0;var d=0;b=eL(b)|0;do if(b){d=c[b>>2]|0;b=(c[b+4>>2]|0)+-1|0;if(!(c[d+(b*48|0)+12>>2]|0)){d=(c[d+(b*48|0)>>2]|0)+((c[d+(b*48|0)+4>>2]|0)+-1<<4)|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}else{d=d+(b*48|0)+32|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}while(0);return}function $I(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+112|0;k=q+72|0;n=q+32|0;o=q;p=d+16|0;j=1;while(1){f=c[p>>2]|0;if((j|0)>(c[f+180>>2]|0))break;f=c[(c[f+184>>2]|0)+(j<<2)>>2]|0;g=k;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));$I(n,f,k);g=e;h=n;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));j=j+1|0}if(((ez(d)|0)!=(d|0)?(m=c[(c[p>>2]|0)+12>>2]|0,m|0):0)?a[m+81>>0]|0:0){p=e+32|0;n=c[p>>2]|0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[k+16>>2]=c[e+16>>2];c[k+20>>2]=c[e+20>>2];c[k+24>>2]=c[e+24>>2];c[k+28>>2]=c[e+28>>2];XI(o,m,n,k);c[e>>2]=c[o>>2];c[e+4>>2]=c[o+4>>2];c[e+8>>2]=c[o+8>>2];c[e+12>>2]=c[o+12>>2];c[e+16>>2]=c[o+16>>2];c[e+20>>2]=c[o+20>>2];c[e+24>>2]=c[o+24>>2];c[e+28>>2]=c[o+28>>2];c[p>>2]=(c[p>>2]|0)+40}g=b;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));l=q;return}function aJ(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+160|0;r=s+96|0;p=s+48|0;o=s;q=c[15686]|0;n=d[g+32>>0]|0;i=+h[g>>3];j=+h[g+8>>3];k=+h[g+16>>3];m=+h[g+24>>3];c[o>>2]=b;c[o+4>>2]=f;c[o+8>>2]=n;h[o+16>>3]=i;h[o+24>>3]=j;h[o+32>>3]=k;h[o+40>>3]=m;f1(q,101039,o)|0;a:do if(0>=2){D1(101099,8,1,q)|0;o=0;while(1){if((o|0)>=(b|0))break;g=c[a+32>>2]|0;i=+h[a>>3];j=+h[a+8>>3];k=+h[a+16>>3];m=+h[a+24>>3];if(!g)n=191979;else n=c[c[g+32>>2]>>2]|0;c[p>>2]=o;h[p+8>>3]=i;h[p+16>>3]=j;h[p+24>>3]=k;h[p+32>>3]=m;c[p+40>>2]=g;c[p+44>>2]=n;f1(q,101108,p)|0;o=o+1|0;a=a+40|0}D1(101151,8,1,q)|0;g=0;while(1){if((g|0)>=(f|0))break a;b=d[e+36>>0]|0;i=+h[e+16>>3];j=+h[e+24>>3];k=+h[e>>3];m=+h[e+8>>3];p=c[c[e+32>>2]>>2]|0;c[r>>2]=g;c[r+4>>2]=e;c[r+8>>2]=b;h[r+16>>3]=i;h[r+24>>3]=j;h[r+32>>3]=k;h[r+40>>3]=m;c[r+48>>2]=p;f1(q,101160,r)|0;e=e+40|0;g=g+1|0}}while(0);l=s;return}function bJ(a,b){a=a|0;b=b|0;var c=0.0;c=+h[b+8>>3]*.5+ +h[b+24>>3];h[a>>3]=+h[b>>3]*.5+ +h[b+16>>3];h[a+8>>3]=c;return}function cJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0.0;e=l;l=l+16|0;f=e;j=+h[b>>3];h[d>>3]=+h[(+h[d>>3]>3];g=d+8|0;i=+h[b+8>>3];h[g>>3]=+h[(+h[g>>3]>3];j=+h[b+16>>3]+j;h[f>>3]=j;i=+h[b+24>>3]+i;h[f+8>>3]=i;g=d+16|0;h[g>>3]=+h[(+h[g>>3]>j?g:f)>>3];b=d+24|0;h[b>>3]=+h[(+h[b>>3]>i?g:f)+8>>3];c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];c[a+28>>2]=c[d+28>>2];l=e;return}function dJ(a){a=a|0;OI(a,1);return}function eJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=l;l=l+16|0;d=e;b=YL(wx(a,102500)|0)|0;if(b){b=fJ(b)|0;if(b|0){f=c[b+40>>2]|0;d=c[b+44>>2]|0;g=a+16|0;a=c[g>>2]|0;h[a+32>>3]=+(f|0)*.013888888888888888;h[a+40>>3]=+(d|0)*.013888888888888888;a=tH(12)|0;c[(c[g>>2]|0)+12>>2]=a;c[a>>2]=c[b+12>>2];c[a+4>>2]=((f|0)/-2|0)-(c[b+32>>2]|0);c[a+8>>2]=((d|0)/-2|0)-(c[b+36>>2]|0)}}else{c[d>>2]=qy(a)|0;Ow(0,101208,d)|0}l=e;return}function fJ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+1152|0;i=p+24|0;h=p+8|0;e=p;f=p+120|0;j=p+44|0;k=p+40|0;m=p+36|0;n=p+32|0;o=p+28|0;d=c[46496]|0;if(!d){d=Bw(20708,c[4555]|0)|0;c[46496]=d}d=nb[c[d>>2]&63](d,b,512)|0;do if(!d){g=K1(b,135739)|0;if(!g){c[e>>2]=b;Ow(0,101257,e)|0;d=0;break}else{d=0;e=0}while(1){if(!(N0(f,1024,g)|0)){f=11;break}c[h>>2]=k;c[h+4>>2]=m;c[h+8>>2]=n;c[h+12>>2]=o;q=(M1(f,101285,h)|0)==4;e=q?1:e;if((a[f>>0]|0)!=37){q=(O0(f,101314)|0)==0;d=q?d:1}if((e|0)!=0&(d|0)!=0){f=12;break}}if((f|0)==11)if(!e){c[i>>2]=b;Ow(0,101319,i)|0;d=0}else f=12;if((f|0)==12){q=uH(64)|0;k=c[k>>2]|0;c[q+32>>2]=k;m=c[m>>2]|0;c[q+40>>2]=(c[n>>2]|0)-k;c[q+36>>2]=(c[o>>2]|0)-m;c[q+8>>2]=b;o=c[46497]|0;c[46497]=o+1;c[q+12>>2]=o;I1(i3(g)|0,j)|0;o=c[j+36>>2]|0;n=uH(o+1|0)|0;c[q+52>>2]=n;Y1(g,0,0)|0;f3(n,o,1,g)|0;a[n+o>>0]=0;o=c[46496]|0;nb[c[o>>2]&63](o,q,1)|0;a[q+16>>0]=d;d=q}r1(g)|0}while(0);l=p;return d|0}function gJ(a,b,d){a=a|0;b=b|0;d=d|0;C_(c[b+52>>2]|0);return}function hJ(a){a=a|0;C_(c[(c[a+16>>2]|0)+12>>2]|0);return}function iJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n+8|0;k=n;j=(d|0)!=0;a:do if(j){h=0;f=0;b:while(1)while(1){if(h)break a;g=c[d+(f<<2)>>2]|0;if(!g){i=6;break a}f=f+1|0;if(!(a[g>>0]|0)){h=1;continue b}}}else i=6;while(0);c:do if((i|0)==6)while(1){f=c[e>>2]|0;if(!f)break c;_B(b,f)|0;_B(b,150517)|0;e=e+4|0;i=6}while(0);d:do if(j){h=0;while(1){f=c[d+(h<<2)>>2]|0;if(!f)break d;do if(a[f>>0]|0){e=YL(f)|0;if(!e){c[k>>2]=f;Ow(0,101358,k)|0;break}g=K1(e,135739)|0;if(!g){c[m>>2]=e;Ow(0,101386,m)|0;break}while(1){f=XL(g)|0;if(!f)break;_B(b,f)|0}_B(b,150517)|0;r1(g)|0}while(0);h=h+1|0}}while(0);l=n;return}function jJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;d=c[d+52>>2]|0;a:while(1){e=a[d>>0]|0;b:do switch(e<<24>>24){case 0:break a;case 37:{if((a[d+1>>0]|0)==37){e=d+2|0;if((((U$(e,101414,3)|0)!=0?(U$(e,101418,5)|0)!=0:0)?(U$(e,101424,3)|0)!=0:0)?(U$(e,101428,7)|0)!=0:0){e=37;break b}else g=37;c:while(1){switch(g<<24>>24){case 13:{f=10;break c}case 10:case 0:{f=12;break c}default:{}}g=d+1|0;d=g;g=a[g>>0]|0}if((f|0)==10){e=d+1|0;if((a[e>>0]|0)==10){d=d+2|0;continue a}}else if((f|0)==12)e=d+1|0;d=g<<24>>24==0?d:e;continue a}else e=37;break}default:{}}while(0);d:while(1){switch(e<<24>>24){case 10:case 13:case 0:break d;default:{}}$B(b,e<<24>>24)|0;g=d+1|0;d=g;e=a[g>>0]|0}f=d+1|0;if(e<<24>>24==13?(a[f>>0]|0)==10:0)d=d+2|0;else d=e<<24>>24==0?d:f;$B(b,10)|0}return}function kJ(b){b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;d=c[46496]|0;a:do if(d|0){d=nb[c[d>>2]&63](d,0,128)|0;while(1){if(!d)break a;if(!(a[d+16>>0]|0)){c[e>>2]=c[d+12>>2];eC(b,101436,e);_B(b,101454)|0;jJ(b,d);_B(b,101472)|0;_B(b,101487)|0}g=c[46496]|0;d=nb[c[g>>2]&63](g,d,8)|0}}while(0);l=f;return}function lJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;e=g;a:do switch(d|0){case 0:{f=b;break}case 1:{f=RM(b)|0;break}default:{switch(mJ(b)|0){case 2:break;case 1:{f=RM(b)|0;break a}default:{f=b;break a}}if(!(c[46498]|0)){Ow(0,101499,e)|0;c[46498]=1;f=b}else f=b}}while(0);if(!(c[46499]|0))Sw(185996,0,0);d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Tw(185996,1)|0;d=c[46500]|0}c[46500]=d+1;a[d>>0]=40;e=f;b:while(1){switch(a[e>>0]|0){case 0:break b;case 92:case 41:case 40:{d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Tw(185996,1)|0;d=c[46500]|0}c[46500]=d+1;a[d>>0]=92;break}default:{}}d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Tw(185996,1)|0;d=c[46500]|0}h=a[e>>0]|0;c[46500]=d+1;a[d>>0]=h;e=e+1|0}d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Tw(185996,1)|0;d=c[46500]|0}c[46500]=d+1;a[d>>0]=41;if((f|0)!=(b|0))C_(f);d=c[46500]|0;if(d>>>0>=(c[46501]|0)>>>0){Tw(185996,1)|0;d=c[46500]|0}a[d>>0]=0;h=c[46499]|0;c[46500]=h;l=g;return h|0}function mJ(b){b=b|0;var c=0,d=0;c=0;a:while(1){while(1){d=a[b>>0]|0;if(!(d<<24>>24))break a;if((d&255)<127)b=b+1|0;else break}if((d&-4)<<24>>24==-64){c=1;b=b+2|0}else{c=2;break}}return c|0}function nJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+96|0;i=n+80|0;j=n+72|0;m=n+64|0;g=n+32|0;k=n;h[g>>3]=+h[a>>3];h[g+8>>3]=+h[a+8>>3];h[g+16>>3]=+h[b>>3];h[g+24>>3]=+h[b+8>>3];do if((SU(d,g,j)|0)>=0){if(!f){b=d+4|0;a=c[b>>2]|0;f=c[46504]|0;if((a|0)>(c[46503]|0)){if(!f)a=uH(a<<5)|0;else a=wH(f,a<<5)|0;c[46504]=a;g=c[b>>2]|0;c[46503]=g;f=a}else g=a;b=c[d>>2]|0;a=0;while(1){if((a|0)>=(g|0))break;o=f+(a<<5)|0;d=b+(a<<4)|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];o=f+(a<<5)+16|0;d=a+1|0;p=b+(((d|0)%(g|0)|0)<<4)|0;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];a=d}c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];if((wU(f,g,i,k,m)|0)<0){a=0;break}}else{c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];nV(i,m)}a=m+4|0;if(!(oJ(c[a>>2]|0)|0)){g=c[a>>2]|0;a=c[46505]|0;f=c[m>>2]|0;b=0;while(1){if((b|0)>=(g|0))break;p=a+(b<<4)|0;o=f+(b<<4)|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];b=b+1|0}c[e>>2]=g}else a=0}else a=0;while(0);l=n;return a|0}function oJ(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=c[46506]|0;do if((b|0)<(a|0)){a=a+300-((a|0)%300|0)+b|0;b=wH(c[46505]|0,a<<4)|0;c[46505]=b;if(!b){Ow(1,101589,d)|0;a=1;break}else{c[46506]=a;a=0;break}}else a=0;while(0);l=e;return a|0}function pJ(){var a=0,b=0,d=0;b=l;l=l+16|0;a=b;d=c[46507]|0;c[46507]=d+1;do if((d|0)<=0){d=uH(4800)|0;c[46505]=d;if(!d){Ow(1,101612,a)|0;a=1;break}c[46506]=300;c[46508]=0;c[46509]=0;if(0){DL();a=0}else a=0}else a=0;while(0);l=b;return a|0}function qJ(){var a=0,b=0,d=0,e=0.0,f=0,g=0;b=l;l=l+16|0;a=b;d=c[46507]|0;c[46507]=d+-1;if((d|0)<=1?(C_(c[46505]|0),0):0){d=c[15686]|0;g=c[46508]|0;f=c[46509]|0;e=+EL();c[a>>2]=g;c[a+4>>2]=f;h[a+8>>3]=e;f1(d,101650,a)|0}l=b;return}function rJ(a,b){a=a|0;b=b|0;return sJ(a,b,0)|0}function sJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;L=l;l=l+176|0;G=L+168|0;K=L+128|0;x=L+120|0;v=L+112|0;i=L+104|0;s=L+88|0;n=L+72|0;g=L+64|0;t=L+160|0;I=L+152|0;y=L+144|0;u=L+32|0;w=L;J=L+136|0;c[46508]=(c[46508]|0)+1;H=c[b+80>>2]|0;c[46509]=(c[46509]|0)+H;f=b+88|0;while(1){C=c[f>>2]|0;if(!C){D=4;break}f=c[C+16>>2]|0;if(!(a[f+112>>0]|0)){D=5;break}else f=f+116|0}do if((D|0)==4){Ow(1,101693,g)|0;f=0}else if((D|0)==5){B=c[b+84>>2]|0;if(!(tJ(H,B,b)|0)){g=H<<3;if((g|0)>(c[46510]|0)){f=c[46511]|0;if(!f)f=uH(H<<7)|0;else f=wH(f,H<<7)|0;c[46511]=f;c[46510]=g}a:do if((H|0)>1?+h[B+8>>3]>+h[B+40>>3]:0){f=0;while(1){if((f|0)==(H|0)){p=1;break a}z=B+(f<<5)+24|0;m=+h[z>>3];A=B+(f<<5)+8|0;h[z>>3]=-+h[A>>3];h[A>>3]=-m;f=f+1|0}}else p=0;while(0);r=c[C>>2]&3;z=C+48|0;f=c[((r|0)==3?C:z)+40>>2]|0;A=C+-48|0;if((f|0)==(c[((r|0)==2?C:A)+40>>2]|0)){c[i>>2]=qy(f)|0;Ow(1,101800,i)|0;f=0;break}o=H+-1|0;q=c[46511]|0;r=q;f=0;j=0;b:while(1){if((j|0)>=(H|0)){j=o;n=f;break}if((j|0)>0)g=+h[B+(j<<5)+8>>3]>+h[B+(j+-1<<5)+8>>3]?-1:1;else g=0;if((j|0)<(o|0))i=+h[B+(j+1<<5)+8>>3]>+h[B+(j<<5)+8>>3]?1:-1;else i=0;c:do if((g|0)!=(i|0))if((g|0)==1|(i|0)==-1){g=B+(j<<5)|0;h[q+(f<<4)>>3]=+h[g>>3];i=f+1|0;h[q+(f<<4)+8>>3]=+h[B+(j<<5)+24>>3];h[q+(i<<4)>>3]=+h[g>>3];g=B+(j<<5)+8|0;D=29;break}else{g=B+(j<<5)+16|0;h[q+(f<<4)>>3]=+h[g>>3];i=f+1|0;h[q+(f<<4)+8>>3]=+h[B+(j<<5)+8>>3];h[q+(i<<4)>>3]=+h[g>>3];g=B+(j<<5)+24|0;D=29;break}else{switch(g|0){case -1:break c;case 0:break;default:{D=28;break b}}g=B+(j<<5)|0;h[q+(f<<4)>>3]=+h[g>>3];i=f+1|0;h[q+(f<<4)+8>>3]=+h[B+(j<<5)+24>>3];h[q+(i<<4)>>3]=+h[g>>3];g=B+(j<<5)+8|0;D=29}while(0);if((D|0)==29){D=0;h[q+(i<<4)+8>>3]=+h[g>>3];f=f+2|0}j=j+1|0}if((D|0)==28){c[n>>2]=g;c[n+4>>2]=g;c[n+8>>2]=480;Ow(1,101735,n)|0;f=0;break}d:while(1){if((j|0)<=-1)break;if((j|0)<(o|0))f=+h[B+(j<<5)+8>>3]>+h[B+(j+1<<5)+8>>3]?-1:1;else f=0;if((j|0)>0)g=+h[B+(j+-1<<5)+8>>3]>+h[B+(j<<5)+8>>3]?1:-1;else g=0;e:do if((f|0)!=(g|0))if((f|0)==1|(g|0)==-1){f=B+(j<<5)|0;h[q+(n<<4)>>3]=+h[f>>3];g=n+1|0;h[q+(n<<4)+8>>3]=+h[B+(j<<5)+24>>3];h[q+(g<<4)>>3]=+h[f>>3];f=B+(j<<5)+8|0;i=2;break}else{f=B+(j<<5)+16|0;h[q+(n<<4)>>3]=+h[f>>3];g=n+1|0;h[q+(n<<4)+8>>3]=+h[B+(j<<5)+8>>3];h[q+(g<<4)>>3]=+h[f>>3];f=B+(j<<5)+24|0;i=2;break}else switch(f|0){case 0:{f=B+(j<<5)+16|0;h[q+(n<<4)>>3]=+h[f>>3];g=n+1|0;h[q+(n<<4)+8>>3]=+h[B+(j<<5)+8>>3];h[q+(g<<4)>>3]=+h[f>>3];f=B+(j<<5)+24|0;i=2;break e}case -1:{N=B+(j<<5)+16|0;h[q+(n<<4)>>3]=+h[N>>3];f=B+(j<<5)+8|0;i=n+1|0;h[q+(n<<4)+8>>3]=+h[f>>3];h[q+(i<<4)>>3]=+h[N>>3];N=B+(j<<5)+24|0;M=n+2|0;h[q+(i<<4)+8>>3]=+h[N>>3];i=B+(j<<5)|0;h[q+(M<<4)>>3]=+h[i>>3];g=n+3|0;h[q+(M<<4)+8>>3]=+h[N>>3];h[q+(g<<4)>>3]=+h[i>>3];i=4;break e}default:{D=42;break d}}while(0);h[q+(g<<4)+8>>3]=+h[f>>3];j=j+-1|0;n=n+i|0}if((D|0)==42){c[s>>2]=f;c[s+4>>2]=f;c[s+8>>2]=513;Ow(1,101735,s)|0;f=0;break}f:do if(!p)f=0;else{f=0;while(1){if((f|0)>=(H|0)){f=0;break}M=B+(f<<5)+24|0;m=+h[M>>3];N=B+(f<<5)+8|0;h[M>>3]=-+h[N>>3];h[N>>3]=-m;f=f+1|0}while(1){if((f|0)>=(n|0)){f=0;break f}N=q+(f<<4)+8|0;h[N>>3]=-+h[N>>3];f=f+1|0}}while(0);while(1){if((f|0)>=(H|0))break;h[B+(f<<5)>>3]=2147483647.0;h[B+(f<<5)+16>>3]=-2147483648.0;f=f+1|0}c[t>>2]=r;i=t+4|0;c[i>>2]=n;h[u>>3]=+h[b>>3];h[u+8>>3]=+h[b+8>>3];h[u+16>>3]=+h[b+40>>3];h[u+24>>3]=+h[b+48>>3];if((SU(t,u,I)|0)<0){Ow(1,101839,v)|0;f=0;break}if(!e){g=c[i>>2]|0;f=c[46504]|0;if((g|0)>(c[46503]|0)){if(!f)f=uH(g<<5)|0;else f=wH(f,g<<5)|0;c[46504]=f;g=c[i>>2]|0;c[46503]=g}j=c[46511]|0;i=0;while(1){if((i|0)>=(g|0))break;M=f+(i<<5)|0;N=j+(i<<4)|0;c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];M=f+(i<<5)+16|0;N=i+1|0;v=j+(((N|0)%(g|0)|0)<<4)|0;c[M>>2]=c[v>>2];c[M+4>>2]=c[v+4>>2];c[M+8>>2]=c[v+8>>2];c[M+12>>2]=c[v+12>>2];i=N}if(!(a[b+29>>0]|0)){k=0.0;m=0.0}else{m=+h[b+16>>3];k=+E(+m);m=+F(+m)}h[w+8>>3]=m;h[w>>3]=k;if(!(a[b+69>>0]|0)){k=0.0;m=0.0}else{m=+h[b+56>>3];k=-+E(+m);m=-+F(+m)}h[w+24>>3]=m;h[w+16>>3]=k;c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];if((wU(f,g,G,w,y)|0)<0){Ow(1,101878,x)|0;f=0;break}}else{c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];nV(G,y)}n=y+4|0;if(!(oJ(c[n>>2]|0)|0)){f=0;while(1){if((f|0)>=(H|0))break;h[B+(f<<5)>>3]=2147483647.0;h[B+(f<<5)+16>>3]=-2147483648.0;f=f+1|0}i=c[n>>2]|0;j=c[46505]|0;g=c[y>>2]|0;f=0;while(1){if((f|0)>=(i|0)){i=1;f=10;g=0;break}N=j+(f<<4)|0;M=g+(f<<4)|0;c[N>>2]=c[M>>2];c[N+4>>2]=c[M+4>>2];c[N+8>>2]=c[M+8>>2];c[N+12>>2]=c[M+12>>2];f=f+1|0}while(1){if(!((g|0)<15&i<<24>>24!=0))break;uJ(B,H,c[46505]|0,c[n>>2]|0,f);j=0;while(1){if((j|0)>=(H|0))break;if(+h[B+(j<<5)>>3]==2147483647.0){D=82;break}if(+h[B+(j<<5)+16>>3]==-2147483648.0){D=82;break}j=j+1|0}if((D|0)==82){D=0;N=f<<1;f=N;g=(N|0)>(2147483647/(H|0)|0|0)?15:g}i=(j|0)==(H|0)?0:i;g=g+1|0}if(i<<24>>24){M=qy(c[((c[C>>2]&3|0)==3?C:z)+40>>2]|0)|0;N=qy(c[((c[C>>2]&3|0)==2?C:A)+40>>2]|0)|0;c[K>>2]=M;c[K+4>>2]=N;Ow(0,101916,K)|0;c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];nV(G,J);uJ(B,H,c[J>>2]|0,c[J+4>>2]|0,10);C_(c[J>>2]|0)}c[d>>2]=c[n>>2];f=c[46505]|0}else f=0}else f=0}while(0);l=L;return f|0}function tJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0,N=0,O=0.0,P=0,Q=0,R=0;R=l;l=l+32|0;I=R+16|0;H=R+8|0;k=R;e=0;j=0;while(1){if((j|0)>=(a|0))break;i=b+(j<<5)|0;s=+h[b+(j<<5)+8>>3]-+h[b+(j<<5)+24>>3];if(!((s>=0.0?s:-s)<.01)?(s=+h[i>>3]-+h[b+(j<<5)+16>>3],!((s>=0.0?s:-s)<.01)):0){if((e|0)!=(j|0)){P=b+(e<<5)|0;c[P>>2]=c[i>>2];c[P+4>>2]=c[i+4>>2];c[P+8>>2]=c[i+8>>2];c[P+12>>2]=c[i+12>>2];c[P+16>>2]=c[i+16>>2];c[P+20>>2]=c[i+20>>2];c[P+24>>2]=c[i+24>>2];c[P+28>>2]=c[i+28>>2]}e=e+1|0}j=j+1|0}J=b+16|0;do if(!(+h[b>>3]>+h[J>>3])?(L=b+8|0,N=b+24|0,!(+h[L>>3]>+h[N>>3])):0){P=e+-1|0;M=c[15686]|0;w=0;while(1){if((w|0)>=(P|0))break;D=w+1|0;E=b+(D<<5)|0;f=+h[E>>3];F=b+(D<<5)+16|0;g=+h[F>>3];if(f>g){Q=16;break}A=b+(D<<5)+8|0;m=+h[A>>3];B=b+(D<<5)+24|0;n=+h[B>>3];if(m>n){Q=16;break}G=b+(w<<5)+16|0;v=+h[G>>3]>3]>g;a=u&1;z=b+(w<<5)+24|0;t=+h[z>>3]>3]>n;i=k&1;x=a+e+j+i|0;o=(x|0)!=0;if(!(0==0|o^1)){c[I>>2]=w;c[I+4>>2]=D;f1(M,102116,I)|0;vJ(d)}a:do if(o){if(!v)if(!u)if(!t){if(k){k=0;o=e;e=B;i=y;Q=24}}else{k=i;j=0;o=e;e=A;i=z;Q=24}else{k=i;a=0;o=e;e=F;i=C;Q=24}else{k=i;o=0;e=E;i=G;Q=24}if((Q|0)==24){Q=0;w=~~+h[i>>3];h[i>>3]=+h[e>>3];h[e>>3]=+(w|0);i=k;e=o}o=x+-1|0;k=0;while(1){if((k|0)>=(o|0))break a;do if((e|0)!=1){if((a|0)==1){s=+(~~((+h[F>>3]+ +h[C>>3])*.5+.5)|0);h[F>>3]=s;h[C>>3]=s;a=0;break}if((j|0)==1){s=+(~~((+h[A>>3]+ +h[z>>3])*.5+.5)|0);h[A>>3]=s;h[z>>3]=s;j=0;break}if((i|0)==1){s=+(~~((+h[B>>3]+ +h[y>>3])*.5+.5)|0);h[B>>3]=s;h[y>>3]=s;i=0}}else{s=+(~~((+h[E>>3]+ +h[G>>3])*.5+.5)|0);h[E>>3]=s;h[G>>3]=s;e=0}while(0);k=k+1|0}}while(0);p=+h[C>>3];q=+h[G>>3];r=+h[E>>3];s=+h[F>>3];i=wJ(~~p,~~q,~~r,~~s)|0;n=+h[y>>3];m=+h[z>>3];g=+h[A>>3];f=+h[B>>3];e=wJ(~~n,~~m,~~g,~~f)|0;if(!((i|0)!=0&(e|0)!=0)){w=D;continue}if((i|0)<(e|0)){B=q-p>s-r;w=q>3]=B?(w?r:s):w?q:p;w=D;continue}else{B=m-n>f-g;w=m>3]=B?(w?g:f):w?m:n;w=D;continue}}if((Q|0)==16){c[H>>2]=D;Ow(1,102070,H)|0;vJ(d);e=1;break}f=+h[d>>3];g=+h[b>>3];if(!(((!(f+h[J>>3]):0)?(K=+h[d+8>>3],!(K<+h[L>>3])):0)?!(K>+h[N>>3]):0)){if(0){D1(102159,42,1,M)|0;vJ(d);g=+h[b>>3];f=+h[d>>3]}if(f>3]=g;else g=f;f=+h[J>>3];if(g>f)h[d>>3]=f;e=d+8|0;g=+h[e>>3];f=+h[L>>3];if(g>3]=f;g=f}f=+h[N>>3];if(g>f)h[e>>3]=f}i=d+40|0;f=+h[i>>3];e=b+(P<<5)|0;g=+h[e>>3];if(((!(f+h[b+(P<<5)+16>>3]):0)?(O=+h[d+48>>3],!(O<+h[b+(P<<5)+8>>3])):0)?!(O>+h[b+(P<<5)+24>>3]):0){e=0;break}if(0){D1(102202,39,1,M)|0;vJ(d);g=+h[e>>3];f=+h[i>>3]}if(f>3]=g;f=g}g=+h[b+(P<<5)+16>>3];if(f>g)h[i>>3]=g;e=d+48|0;f=+h[e>>3];g=+h[b+(P<<5)+8>>3];if(f>3]=g;else g=f;f=+h[b+(P<<5)+24>>3];if(g>f){h[e>>3]=f;e=0}else e=0}else Q=12;while(0);if((Q|0)==12){Ow(1,102025,k)|0;vJ(d);e=1}l=R;return e|0}function uJ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;s=O(e,b)|0;t=1.0/+(s|0);e=0;a:while(1){u=e+3|0;if((u|0)>=(d|0))break;o=c+(e<<4)|0;p=c+(e<<4)+8|0;r=e+1|0;q=c+(r<<4)|0;r=c+(r<<4)+8|0;j=e+2|0;i=c+(j<<4)|0;j=c+(j<<4)+8|0;k=c+(u<<4)|0;l=c+(u<<4)+8|0;g=0;while(1){if((g|0)>(s|0)){e=u;continue a}v=t*+(g|0);m=+h[o>>3];n=+h[p>>3];y=+h[q>>3];w=+h[r>>3];z=+h[i>>3];x=+h[j>>3];m=(y-m)*v+m;n=(w-n)*v+n;y=(z-y)*v+y;w=(x-w)*v+w;m=(y-m)*v+m;n=(w-n)*v+n;m=((z-y+(+h[k>>3]-z)*v)*v+y-m)*v+m;n=((x-w+(+h[l>>3]-x)*v)*v+w-n)*v+n;f=0;while(1){if((f|0)>=(b|0))break;if(n<=+h[a+(f<<5)+24>>3]+.0001?n>=+h[a+(f<<5)+8>>3]+-.0001:0){e=a+(f<<5)|0;if(+h[e>>3]>m)h[e>>3]=m;e=a+(f<<5)+16|0;if(+h[e>>3]>3]=m}f=f+1|0}g=g+1|0}}return}function vJ(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0;m=l;l=l+112|0;j=m+80|0;k=m+48|0;i=m+8|0;g=m;e=c[15686]|0;f=b+80|0;c[g>>2]=c[f>>2];f1(e,102242,g)|0;g=b+84|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;r=c[g>>2]|0;q=+h[r+(d<<5)>>3];p=+h[r+(d<<5)+8>>3];o=+h[r+(d<<5)+16>>3];n=+h[r+(d<<5)+24>>3];c[i>>2]=d;h[i+8>>3]=q;h[i+16>>3]=p;h[i+24>>3]=o;h[i+32>>3]=n;f1(e,102253,i)|0;d=d+1|0}q=+h[b+8>>3];p=+h[b+16>>3];r=a[b+29>>0]|0?102284:102296;h[k>>3]=+h[b>>3];h[k+8>>3]=q;h[k+16>>3]=p;c[k+24>>2]=r;f1(e,102312,k)|0;p=+h[b+48>>3];q=+h[b+56>>3];r=a[b+69>>0]|0?102284:102296;h[j>>3]=+h[b+40>>3];h[j+8>>3]=p;h[j+16>>3]=q;c[j+24>>2]=r;f1(e,102363,j)|0;l=m;return}function wJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;do if((b|0)>(c|0)&(d|0)>(a|0)){if(!((c|0)>(a|0)|(d|0)<(a|0))){a=d-a|0;break}if((b|0)<(c|0)|(b|0)>(d|0)){b=b-a|0;a=d-c|0;a=(b|0)<(a|0)?b:a;break}else{a=b-c|0;break}}else a=0;while(0);return a|0}function xJ(a,b){a=a|0;b=b|0;return sJ(a,b,1)|0}function yJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+80|0;g=j;i=1;f=b;while(1){h=f;f=c[(c[f+16>>2]|0)+172>>2]|0;if(!((f|0)!=0&(h|0)!=(f|0)))break;else i=i+1|0}if((i|0)>=21)g=tH(i<<2)|0;h=0;f=b;while(1){if((h|0)>=(i|0))break;c[g+(h<<2)>>2]=f;h=h+1|0;f=c[(c[f+16>>2]|0)+172>>2]|0}zJ(a,g,i,d,e);if((i|0)>20)C_(g);l=j;return}function zJ(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0.0,P=0,Q=0;K=l;l=l+304|0;A=K+272|0;z=K+208|0;G=K+96|0;H=K+32|0;I=K+16|0;J=K;r=K+192|0;y=K+176|0;i=K+160|0;B=K+296|0;D=K+288|0;j=c[d>>2]|0;w=c[j>>2]&3;k=j+-48|0;E=c[((w|0)==2?j:k)+40>>2]|0;t=G+16|0;w=(c[(c[((w|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+16|0;x=j+16|0;F=(c[x>>2]|0)+16|0;c[z>>2]=c[w>>2];c[z+4>>2]=c[w+4>>2];c[z+8>>2]=c[w+8>>2];c[z+12>>2]=c[w+12>>2];c[A>>2]=c[F>>2];c[A+4>>2]=c[F+4>>2];c[A+8>>2]=c[F+8>>2];c[A+12>>2]=c[F+12>>2];AJ(r,z,A);c[G>>2]=c[r>>2];c[G+4>>2]=c[r+4>>2];c[G+8>>2]=c[r+8>>2];c[G+12>>2]=c[r+12>>2];c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];c[I>>2]=c[r>>2];c[I+4>>2]=c[r+4>>2];c[I+8>>2]=c[r+8>>2];c[I+12>>2]=c[r+12>>2];r=G+32|0;F=G+48|0;w=(c[E+16>>2]|0)+16|0;x=(c[x>>2]|0)+56|0;c[z>>2]=c[w>>2];c[z+4>>2]=c[w+4>>2];c[z+8>>2]=c[w+8>>2];c[z+12>>2]=c[w+12>>2];c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];AJ(y,z,A);c[F>>2]=c[y>>2];c[F+4>>2]=c[y+4>>2];c[F+8>>2]=c[y+8>>2];c[F+12>>2]=c[y+12>>2];c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[J>>2]=c[y>>2];c[J+4>>2]=c[y+4>>2];c[J+8>>2]=c[y+8>>2];c[J+12>>2]=c[y+12>>2];a:do if((e|0)!=1&(a[191874]|0)==0){m=+h[G>>3];n=+h[F>>3];L=m-n;o=+h[G+8>>3];p=+h[G+56>>3];s=o-p;q=s*s;if(q+L*L<1.0e-06){c[t>>2]=c[G>>2];c[t+4>>2]=c[G+4>>2];c[t+8>>2]=c[G+8>>2];c[t+12>>2]=c[G+12>>2];c[r>>2]=c[F>>2];c[r+4>>2]=c[F+4>>2];c[r+8>>2]=c[F+8>>2];c[r+12>>2]=c[F+12>>2];y=G+24|0;x=G+40|0;n=0.0;m=0.0}else{M=n-m;L=+C(+(q+M*M));w=c[(c[(c[b+60>>2]|0)+16>>2]|0)+248>>2]|0;N=+((O(w,e+-1|0)|0)/2|0|0);q=s*N/L;h[t>>3]=q+m;m=M*N/L;y=G+24|0;h[y>>3]=m+o;h[r>>3]=q+n;x=G+40|0;h[x>>3]=p+m;m=+(0-w|0);n=M*m/L;m=s*m/L}f=(f|0)==6;u=D+4|0;v=B+4|0;j=0;while(1){if((j|0)>=(e|0))break a;w=c[d+(j<<2)>>2]|0;k=w+-48|0;b:do if((c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0)==(E|0)){c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];i=0;while(1){if((i|0)==4)break b;P=H+(i<<4)|0;Q=G+(i<<4)|0;c[P>>2]=c[Q>>2];c[P+4>>2]=c[Q+4>>2];c[P+8>>2]=c[Q+8>>2];c[P+12>>2]=c[Q+12>>2];i=i+1|0}}else{c[I>>2]=c[F>>2];c[I+4>>2]=c[F+4>>2];c[I+8>>2]=c[F+8>>2];c[I+12>>2]=c[F+12>>2];c[J>>2]=c[G>>2];c[J+4>>2]=c[G+4>>2];c[J+8>>2]=c[G+8>>2];c[J+12>>2]=c[G+12>>2];i=0;while(1){if((i|0)==4)break b;Q=H+(3-i<<4)|0;P=G+(i<<4)|0;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];i=i+1|0}}while(0);if(f){c[u>>2]=4;c[D>>2]=z;i=0;while(1){if((i|0)==4)break;Q=z+(i<<4)|0;P=H+(i<<4)|0;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];i=i+1|0}c[A>>2]=c[D>>2];c[A+4>>2]=c[D+4>>2];nV(A,B);PK(w,c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0,c[B>>2]|0,c[v>>2]|0,g)}else PK(w,c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0,H,4,g);c[z>>2]=c[I>>2];c[z+4>>2]=c[I+4>>2];c[z+8>>2]=c[I+8>>2];c[z+12>>2]=c[I+12>>2];c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];iL(b,w,z,A);h[t>>3]=+h[t>>3]+m;h[y>>3]=+h[y>>3]+n;h[r>>3]=+h[r>>3]+m;h[x>>3]=+h[x>>3]+n;j=j+1|0}}else{if((f|0)==4){BJ(i,b);c[A>>2]=c[i>>2];c[A+4>>2]=c[i+4>>2];c[A+8>>2]=c[i+8>>2];c[A+12>>2]=c[i+12>>2];CJ(G,A)}PK(j,c[((c[j>>2]&3|0)==2?j:k)+40>>2]|0,G,4,g);c[z>>2]=c[I>>2];c[z+4>>2]=c[I+4>>2];c[z+8>>2]=c[I+8>>2];c[z+12>>2]=c[I+12>>2];c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];iL(b,j,z,A)}while(0);l=K;return}function AJ(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function BJ(a,b){a=a|0;b=b|0;b=c[b+16>>2]|0;h[22920]=(+h[b+32>>3]+ +h[b+16>>3])*.5;h[22921]=(+h[b+40>>3]+ +h[b+24>>3])*.5;c[a>>2]=c[45840];c[a+4>>2]=c[45841];c[a+8>>2]=c[45842];c[a+12>>2]=c[45843];return}function CJ(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;f=+h[a>>3];d=+h[a+48>>3];i=(d+f)*.5;g=+h[a+8>>3];c=+h[a+56>>3];e=(c+g)*.5;f=d-f;g=c-g;f=+C(+(g*g+f*f))*.2;g=+h[b>>3]-i;c=+h[b+8>>3]-e;d=+C(+(c*c+g*g));if(!(d==0.0)){g=i-g/d*f;i=e-c/d*f;h[a+32>>3]=g;h[a+16>>3]=g;h[a+40>>3]=i;h[a+24>>3]=i}return}function DJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0.0,G=0,H=0.0,I=0.0,J=0.0;E=l;l=l+208|0;t=E+192|0;s=E+176|0;B=E+32|0;w=E+16|0;x=E;y=E+160|0;z=E+144|0;u=E+128|0;v=E+112|0;g=e&2130706432;A=(e&8|0)==0?((g|0)==0?4:g):8;if((A|0)==436207616)EJ(a,b,d,f);else{D=tH((d<<6)+64|0)|0;p=d+-1|0;q=x+8|0;r=w+8|0;o=12.0;e=0;while(1){if((e|0)>=(d|0))break;n=b+(e<<4)|0;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];if((e|0)<(p|0)){e=e+1|0;n=b+(e<<4)|0;c[x>>2]=c[n>>2];c[x+4>>2]=c[n+4>>2];c[x+8>>2]=c[n+8>>2];c[x+12>>2]=c[n+12>>2]}else{c[x>>2]=c[b>>2];c[x+4>>2]=c[b+4>>2];c[x+8>>2]=c[b+8>>2];c[x+12>>2]=c[b+12>>2];e=e+1|0}m=+h[x>>3]-+h[w>>3];F=+h[q>>3]-+h[r>>3];m=+C(+(F*F+m*m))*.3333333333333333;o=o=(d|0))break;g=b+(i<<4)|0;c[w>>2]=c[g>>2];c[w+4>>2]=c[g+4>>2];c[w+8>>2]=c[g+8>>2];c[w+12>>2]=c[g+12>>2];if((i|0)<(p|0)){g=b+(i+1<<4)|0;c[x>>2]=c[g>>2];c[x+4>>2]=c[g+4>>2];c[x+8>>2]=c[g+8>>2];c[x+12>>2]=c[g+12>>2]}else{c[x>>2]=c[b>>2];c[x+4>>2]=c[b+4>>2];c[x+8>>2]=c[b+8>>2];c[x+12>>2]=c[b+12>>2]}m=+h[x>>3]-+h[w>>3];F=+h[q>>3]-+h[r>>3];m=o/+C(+(F*F+m*m));m=k?m*.3333333333333333:j?m*.5:m;g=D+(e<<4)|0;if(n){c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];FJ(y,m*.5,s,t);c[g>>2]=c[y>>2];c[g+4>>2]=c[y+4>>2];c[g+8>>2]=c[y+8>>2];c[g+12>>2]=c[y+12>>2]}else{c[g>>2]=c[w>>2];c[g+4>>2]=c[w+4>>2];c[g+8>>2]=c[w+8>>2];c[g+12>>2]=c[w+12>>2]}g=D+(e+1<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];FJ(z,m,s,t);c[g>>2]=c[z>>2];c[g+4>>2]=c[z+4>>2];c[g+8>>2]=c[z+8>>2];c[g+12>>2]=c[z+12>>2];g=e+3|0;G=D+(e+2<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];FJ(u,1.0-m,s,t);c[G>>2]=c[u>>2];c[G+4>>2]=c[u+4>>2];c[G+8>>2]=c[u+8>>2];c[G+12>>2]=c[u+12>>2];if(n){G=D+(g<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];FJ(v,1.0-m*.5,s,t);c[G>>2]=c[v>>2];c[G+4>>2]=c[v+4>>2];c[G+8>>2]=c[v+8>>2];c[G+12>>2]=c[v+12>>2];e=e+4|0}else e=g;i=i+1|0}k=D+(e<<4)|0;c[k>>2]=c[D>>2];c[k+4>>2]=c[D+4>>2];c[k+8>>2]=c[D+8>>2];c[k+12>>2]=c[D+12>>2];k=D+(e+1<<4)|0;j=D+16|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];e=D+(e+2<<4)|0;k=D+32|0;c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];c[e+8>>2]=c[k+8>>2];c[e+12>>2]=c[k+12>>2];e=A&2147483647;a:do if((e|0)<201326592){if((e|0)>=83886080){if((e|0)<134217728){if((e|0)<100663296){switch(e|0){case 83886080:break;default:break a}if((d|0)==4){G=tH(192)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];p=G+16|0;t=b+16|0;c[p>>2]=c[t>>2];c[p+4>>2]=c[t+4>>2];c[p+8>>2]=c[t+8>>2];c[p+12>>2]=c[t+12>>2];p=D+48|0;t=D+64|0;o=+h[t>>3];n=G+32|0;h[n>>3]=o;q=D+56|0;r=D+72|0;H=+h[r>>3];z=G+40|0;h[z>>3]=H;F=+h[p>>3]+o-+h[k>>3];u=G+48|0;h[u>>3]=F;J=+h[q>>3]+H-+h[D+40>>3];x=G+56|0;h[x>>3]=J;I=+h[t>>3]+F-+h[p>>3];p=G+64|0;h[p>>3]=I;m=+h[r>>3]+J-+h[q>>3];q=G+72|0;h[q>>3]=m;r=G+80|0;h[r>>3]=o+I-F;h[G+88>>3]=H+m-J;t=D+96|0;v=D+80|0;J=+h[v>>3];d=G+144|0;h[d>>3]=J;w=D+104|0;s=D+88|0;m=+h[s>>3];h[G+152>>3]=m;H=+h[t>>3]+J-+h[D+112>>3];y=G+128|0;h[y>>3]=H;F=+h[w>>3]+m-+h[D+120>>3];A=G+136|0;h[A>>3]=F;I=+h[v>>3]+H-+h[t>>3];t=G+112|0;h[t>>3]=I;o=+h[s>>3]+F-+h[w>>3];w=G+120|0;h[w>>3]=o;s=G+96|0;h[s>>3]=J+I-H;v=G+104|0;h[v>>3]=m+o-F;k=G+160|0;j=b+32|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];k=G+176|0;b=b+48|0;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];ZO(a,G,12,f);c[B>>2]=c[n>>2];c[B+4>>2]=c[n+4>>2];c[B+8>>2]=c[n+8>>2];c[B+12>>2]=c[n+12>>2];F=+h[n>>3];o=+h[u>>3];F=F+F-o;u=B+16|0;h[u>>3]=F;m=+h[z>>3];H=+h[x>>3];m=m+m-H;x=B+24|0;h[x>>3]=m;z=B+32|0;h[z>>3]=+h[p>>3]+F-o;b=B+40|0;h[b>>3]=+h[q>>3]+m-H;f=B+48|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=c[r+12>>2];aP(a,B,4);c[B>>2]=c[s>>2];c[B+4>>2]=c[s+4>>2];c[B+8>>2]=c[s+8>>2];c[B+12>>2]=c[s+12>>2];H=+h[s>>3];m=+h[t>>3];H=H-(m-H);h[u>>3]=H;o=+h[v>>3];F=+h[w>>3];o=o-(F-o);h[x>>3]=o;h[z>>3]=+h[y>>3]+H-m;h[b>>3]=+h[A>>3]+o-F;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];aP(a,B,4);C_(G);break}else qa(102412,102423,737,102432)}if((e|0)<117440512){switch(e|0){case 100663296:break;default:break a}y=d+5|0;G=tH(y<<4)|0;z=b+16|0;H=+h[z>>3];H=(+h[b>>3]-H)*.625+H;h[G>>3]=H;A=b+40|0;J=+h[A>>3];d=b+24|0;v=D+48|0;w=D+56|0;x=D+72|0;J=(+h[d>>3]-J)*.5+J+(+h[w>>3]-+h[x>>3])*1.5;h[G+8>>3]=J;I=+h[z>>3];I=(+h[b>>3]-I)*.25+I;h[G+16>>3]=I;h[G+24>>3]=J;h[G+32>>3]=I;F=+h[A>>3];h[G+40>>3]=(+h[d>>3]-F)*.5+F;I=(+h[k>>3]-+h[v>>3])*.5+I;h[G+48>>3]=I;F=+h[A>>3];h[G+56>>3]=(+h[d>>3]-F)*.5+F;h[G+64>>3]=I;I=+h[A>>3];I=(+h[d>>3]-I)*.5+I+(+h[w>>3]-+h[x>>3]);h[G+72>>3]=I;h[G+80>>3]=H;h[G+88>>3]=I;h[G+96>>3]=H;I=I-(+h[w>>3]-+h[x>>3])*.25;h[G+104>>3]=I;h[G+112>>3]=+h[k>>3]+H-+h[v>>3];h[G+120>>3]=(+h[w>>3]-+h[x>>3])*.5+I;h[G+128>>3]=+h[G>>3];h[G+136>>3]=(+h[w>>3]-+h[x>>3])*.25+J;ZO(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;aP(a,B,2);C_(G);break}else{switch(e|0){case 117440512:break;default:break a}d=d+1|0;G=tH(d<<4)|0;h[G>>3]=+h[j>>3];z=D+56|0;A=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[z>>3]-+h[A>>3])*.5;h[G+16>>3]=+h[D+48>>3];J=+h[z>>3];h[G+24>>3]=J-(J-+h[A>>3])*.5;h[G+32>>3]=+h[b+32>>3];B=b+40|0;h[G+40>>3]=(+h[z>>3]-+h[A>>3])*.5+ +h[B>>3];h[G+48>>3]=+h[j>>3];h[G+56>>3]=(+h[z>>3]-+h[A>>3])*.5+ +h[B>>3];J=+h[b+8>>3];h[G+72>>3]=J-(J-+h[b+56>>3])*.5;h[G+64>>3]=+h[b>>3];ZO(a,G,d,f);C_(G);break}}if((e|0)<167772160)if((e|0)<150994944){switch(e|0){case 134217728:break;default:break a}y=d+4|0;G=tH(y<<4)|0;z=b+16|0;F=+h[z>>3];x=D+48|0;F=(+h[b>>3]-F)*.5+F+(+h[k>>3]-+h[x>>3])*.25;h[G>>3]=F;A=b+40|0;J=+h[A>>3];d=b+24|0;J=(+h[d>>3]-J)*.5+J;h[G+8>>3]=J;h[G+16>>3]=F;v=D+56|0;w=D+72|0;H=(+h[v>>3]-+h[w>>3])*.5+J;h[G+24>>3]=H;F=(+h[k>>3]-+h[x>>3])*.5+F;h[G+32>>3]=F;h[G+40>>3]=H;h[G+48>>3]=F;F=(+h[v>>3]-+h[w>>3])*.5+H;h[G+56>>3]=F;I=+h[z>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*-.75;h[G+64>>3]=I;h[G+72>>3]=F;h[G+80>>3]=I;h[G+88>>3]=H;I=+h[z>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*-.25;h[G+96>>3]=I;h[G+104>>3]=H;h[G+112>>3]=I;h[G+120>>3]=J;ZO(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;aP(a,B,2);C_(G);break}else{switch(e|0){case 150994944:break;default:break a}y=d+2|0;G=tH(y<<4)|0;z=b+16|0;H=+h[z>>3];x=D+48|0;H=(+h[b>>3]-H)*.5+H+(+h[k>>3]-+h[x>>3])*.75;h[G>>3]=H;A=b+40|0;J=+h[A>>3];d=b+24|0;J=(+h[d>>3]-J)*.5+J;h[G+8>>3]=J;h[G+16>>3]=H;v=D+56|0;w=D+72|0;H=(+h[v>>3]-+h[w>>3])*.25+J;h[G+24>>3]=H;I=+h[z>>3];h[G+32>>3]=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*.25;I=(+h[v>>3]-+h[w>>3])*.5+H;h[G+40>>3]=I;F=+h[z>>3];h[G+48>>3]=(+h[b>>3]-F)*.5+F+(+h[k>>3]-+h[x>>3])*-.25;h[G+56>>3]=I;I=+h[z>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*-.75;h[G+64>>3]=I;h[G+72>>3]=H;h[G+80>>3]=I;h[G+88>>3]=J;ZO(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;aP(a,B,2);C_(G);break}else if((e|0)<184549376){switch(e|0){case 167772160:break;default:break a}y=d+1|0;G=tH(y<<4)|0;z=b+16|0;H=+h[z>>3];v=D+48|0;H=+h[k>>3]+H+(+h[b>>3]-H)*.5-+h[v>>3];h[G>>3]=H;A=b+40|0;J=+h[A>>3];d=b+24|0;w=D+56|0;x=D+72|0;J=(+h[d>>3]-J)*.5+J+(+h[w>>3]-+h[x>>3])*.25;h[G+8>>3]=J;H=H-+h[k>>3]+ +h[v>>3];h[G+16>>3]=H;h[G+24>>3]=+h[w>>3]+J-+h[x>>3];h[G+32>>3]=H;H=(+h[w>>3]-+h[x>>3])*.5+J;h[G+40>>3]=H;I=+h[z>>3];I=(+h[b>>3]-I)*.25+I;h[G+48>>3]=I;h[G+56>>3]=H;h[G+64>>3]=I;h[G+72>>3]=J;ZO(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;aP(a,B,2);C_(G);break}else{switch(e|0){case 184549376:break;default:break a}z=d+4|0;G=tH(z<<4)|0;y=b+16|0;H=+h[y>>3];I=+h[b>>3]-H;u=D+48|0;I=I*.125+H+(+h[k>>3]-+h[u>>3]+I)*.5;h[G>>3]=I;w=b+40|0;H=+h[w>>3];x=b+24|0;d=D+56|0;v=D+72|0;H=(+h[x>>3]-H)*.5+H+(+h[d>>3]-+h[v>>3])*.25;h[G+8>>3]=H;J=+h[y>>3];J=(+h[b>>3]-J)*.375+J;h[G+16>>3]=J;h[G+24>>3]=H;h[G+32>>3]=J;H=(+h[d>>3]-+h[v>>3])*.5+H;h[G+40>>3]=H;J=J-(+h[k>>3]-+h[u>>3])*.5;h[G+48>>3]=J;h[G+56>>3]=H;A=G+64|0;h[A>>3]=J;J=+h[w>>3];J=(+h[x>>3]-J)*.5+J+(+h[d>>3]-+h[v>>3])*-.25;h[G+72>>3]=J;H=I-(+h[k>>3]-+h[u>>3])*.5;h[G+80>>3]=H;h[G+88>>3]=J;h[G+96>>3]=H;J=J-(+h[d>>3]-+h[v>>3])*.5;h[G+104>>3]=J;v=G+112|0;h[v>>3]=I;h[G+120>>3]=J;ZO(a,G,z,f);h[B>>3]=+h[y>>3];J=+h[w>>3];y=B+8|0;h[y>>3]=(+h[x>>3]-J)*.5+J;z=B+16|0;h[z>>3]=+h[A>>3];A=b+8|0;d=b+56|0;f=B+24|0;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;aP(a,B,2);h[B>>3]=+h[v>>3];J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[z>>3]=+h[b>>3];h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;aP(a,B,2);C_(G);break}}if((e|0)<33554432){if((e|0)<8){switch(e|0){case 4:break;default:break a}i=uH((d*96|0)+32|0)|0;e=0;g=0;while(1){j=g|1;k=i+(g<<4)|0;if((e|0)>=(d|0))break;b=e<<2;G=D+(b<<4)|0;c[k>>2]=c[G>>2];c[k+4>>2]=c[G+4>>2];c[k+8>>2]=c[G+8>>2];c[k+12>>2]=c[G+12>>2];G=i+(j<<4)|0;B=D+((b|1)<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+2<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+3<<4)|0;B=D+((b|2)<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+4<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+5<<4)|0;b=D+((b|3)<<4)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];e=e+1|0;g=g+6|0}c[k>>2]=c[i>>2];c[k+4>>2]=c[i+4>>2];c[k+8>>2]=c[i+8>>2];c[k+12>>2]=c[i+12>>2];d=i+(j<<4)|0;G=i+16|0;c[d>>2]=c[G>>2];c[d+4>>2]=c[G+4>>2];c[d+8>>2]=c[G+8>>2];c[d+12>>2]=c[G+12>>2];$O(a,G,j,0,0,f&255);C_(i);break}if((e|0)<16777216){switch(e|0){case 8:break;default:break a}ZO(a,b,d,f);g=B+16|0;e=0;while(1){if((e|0)>=(d|0))break a;G=e*3|0;f=D+(G+2<<4)|0;c[B>>2]=c[f>>2];c[B+4>>2]=c[f+4>>2];c[B+8>>2]=c[f+8>>2];c[B+12>>2]=c[f+12>>2];G=D+(G+4<<4)|0;c[g>>2]=c[G>>2];c[g+4>>2]=c[G+4>>2];c[g+8>>2]=c[G+8>>2];c[g+12>>2]=c[G+12>>2];aP(a,B,2);e=e+1|0}}switch(e|0){case 16777216:break;default:break a}g=d+1|0;i=tH(g<<4)|0;e=1;while(1){if((e|0)>=(d|0))break;G=i+(e<<4)|0;A=b+(e<<4)|0;c[G>>2]=c[A>>2];c[G+4>>2]=c[A+4>>2];c[G+8>>2]=c[A+8>>2];c[G+12>>2]=c[A+12>>2];e=e+1|0}b=d*3|0;A=D+(b+1<<4)|0;c[i>>2]=c[A>>2];c[i+4>>2]=c[A+4>>2];c[i+8>>2]=c[A+8>>2];c[i+12>>2]=c[A+12>>2];d=i+(d<<4)|0;G=D+(b+-1<<4)|0;c[d>>2]=c[G>>2];c[d+4>>2]=c[G+4>>2];c[d+8>>2]=c[G+8>>2];c[d+12>>2]=c[G+12>>2];ZO(a,i,g,f);C_(i);c[B>>2]=c[G>>2];c[B+4>>2]=c[G+4>>2];c[B+8>>2]=c[G+8>>2];c[B+12>>2]=c[G+12>>2];G=B+16|0;c[G>>2]=c[A>>2];c[G+4>>2]=c[A+4>>2];c[G+8>>2]=c[A+8>>2];c[G+12>>2]=c[A+12>>2];f=B+32|0;h[f>>3]=+h[B>>3]+ +h[G>>3]-+h[D+(b<<4)>>3];h[B+40>>3]=+h[B+8>>3]+ +h[B+24>>3]-+h[D+(b<<4)+8>>3];aP(a,G,2);c[G>>2]=c[f>>2];c[G+4>>2]=c[f+4>>2];c[G+8>>2]=c[f+8>>2];c[G+12>>2]=c[f+12>>2];aP(a,B,2);break}else{if((e|0)<50331648){switch(e|0){case 33554432:break;default:break a}g=d+2|0;i=tH(g<<4)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];j=i+16|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];j=D+48|0;d=D+64|0;h[i+32>>3]=(+h[j>>3]-+h[d>>3])*.3333333333333333+ +h[k>>3];G=D+56|0;e=D+72|0;h[i+40>>3]=(+h[G>>3]-+h[e>>3])*.3333333333333333+ +h[D+40>>3];J=+h[j>>3];h[i+48>>3]=(J-+h[d>>3])*.3333333333333333+J;J=+h[G>>3];h[i+56>>3]=(J-+h[e>>3])*.3333333333333333+J;e=4;while(1){if((e|0)>=(g|0))break;G=i+(e<<4)|0;d=b+(e+-2<<4)|0;c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2];e=e+1|0}ZO(a,i,g,f);C_(i);c[B>>2]=c[j>>2];c[B+4>>2]=c[j+4>>2];c[B+8>>2]=c[j+8>>2];c[B+12>>2]=c[j+12>>2];G=B+16|0;c[G>>2]=c[k>>2];c[G+4>>2]=c[k+4>>2];c[G+8>>2]=c[k+8>>2];c[G+12>>2]=c[k+12>>2];aP(a,B,2);break}if((e|0)>=67108864){switch(e|0){case 67108864:break;default:break a}if((d|0)==4){G=tH(96)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];d=G+16|0;c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];c[d+8>>2]=c[k+8>>2];c[d+12>>2]=c[k+12>>2];d=G+32|0;A=D+64|0;c[d>>2]=c[A>>2];c[d+4>>2]=c[A+4>>2];c[d+8>>2]=c[A+8>>2];c[d+12>>2]=c[A+12>>2];d=G+48|0;b=b+32|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];b=G+64|0;d=D+128|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=G+80|0;z=D+160|0;c[b>>2]=c[z>>2];c[b+4>>2]=c[z+4>>2];c[b+8>>2]=c[z+8>>2];c[b+12>>2]=c[z+12>>2];ZO(a,G,6,f);C_(G);h[B>>3]=+h[D+176>>3]+ +h[j>>3]-+h[D>>3];h[B+8>>3]=+h[D+184>>3]+ +h[D+24>>3]-+h[D+8>>3];G=B+16|0;c[G>>2]=c[A>>2];c[G+4>>2]=c[A+4>>2];c[G+8>>2]=c[A+8>>2];c[G+12>>2]=c[A+12>>2];aP(a,B,2);c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2];aP(a,B,2);c[G>>2]=c[D>>2];c[G+4>>2]=c[D+4>>2];c[G+8>>2]=c[D+8>>2];c[G+12>>2]=c[D+12>>2];aP(a,B,2);break}else qa(102412,102423,714,102432)}switch(e|0){case 50331648:break;default:break a}g=d+3|0;i=tH(g<<4)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];J=+h[b>>3];h[i+16>>3]=J-(J-+h[j>>3])*.25;e=D+56|0;J=(+h[e>>3]-+h[D+72>>3])*.3333333333333333+ +h[b+8>>3];h[i+24>>3]=J;I=+h[b>>3];h[i+32>>3]=I-(I-+h[j>>3])*2.0;h[i+40>>3]=J;J=+h[b>>3];h[i+48>>3]=J-(J-+h[j>>3])*2.25;h[i+56>>3]=+h[e>>3];h[i+64>>3]=+h[D+48>>3];h[i+72>>3]=+h[e>>3];e=4;while(1){if((e|0)>=(g|0))break;G=i+(e<<4)|0;d=b+(e+-3<<4)|0;c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2];e=e+1|0}ZO(a,i,g,f);C_(i);break}}else if((e|0)<318767104){if((e|0)<251658240){if((e|0)<218103808){switch(e|0){case 201326592:break;default:break a}G=d<<4;u=tH(G)|0;v=b+16|0;J=+h[v>>3];h[u>>3]=J;z=b+40|0;I=+h[z>>3];A=b+24|0;y=D+48|0;w=D+56|0;x=D+72|0;I=(+h[A>>3]-I)*.5+I+(+h[w>>3]-+h[x>>3])*.125;h[u+8>>3]=I;H=(+h[k>>3]-+h[y>>3])*2.0+J;h[u+16>>3]=H;h[u+24>>3]=I;h[u+32>>3]=H;I=(+h[w>>3]-+h[x>>3])*.5+I;h[u+40>>3]=I;h[u+48>>3]=J;h[u+56>>3]=I;ZO(a,u,d,f);C_(u);G=tH(G)|0;I=+h[k>>3]+ +h[v>>3]-+h[y>>3];h[G>>3]=I;J=+h[z>>3];J=(+h[A>>3]-J)*.5+J+(+h[w>>3]-+h[x>>3])*-.625;h[G+8>>3]=J;H=+h[k>>3]-+h[y>>3]+I;y=G+16|0;h[y>>3]=H;h[G+24>>3]=J;h[G+32>>3]=H;J=(+h[w>>3]-+h[x>>3])*.5+J;h[G+40>>3]=J;h[G+48>>3]=I;h[G+56>>3]=J;ZO(a,G,d,f);h[B>>3]=+h[y>>3];J=+h[z>>3];h[B+8>>3]=(+h[A>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;aP(a,B,2);C_(G);break}if((e|0)<234881024){switch(e|0){case 218103808:break;default:break a}G=d<<4;w=tH(G)|0;J=+h[b>>3];h[w>>3]=J;y=b+40|0;I=+h[y>>3];z=b+24|0;x=D+56|0;A=D+72|0;I=(+h[z>>3]-I)*.5+I+(+h[x>>3]-+h[A>>3])*.125;h[w+8>>3]=I;h[w+16>>3]=J;H=(+h[x>>3]-+h[A>>3])*.5+I;h[w+24>>3]=H;J=J-(+h[x>>3]-+h[A>>3])*2.0;h[w+32>>3]=J;h[w+40>>3]=H;h[w+48>>3]=J;h[w+56>>3]=I;ZO(a,w,d,f);C_(w);G=tH(G)|0;I=+h[b>>3]-+h[k>>3]+ +h[D+48>>3];h[G>>3]=I;J=+h[y>>3];J=(+h[z>>3]-J)*.5+J+(+h[x>>3]-+h[A>>3])*-.625;h[G+8>>3]=J;h[G+16>>3]=I;H=(+h[x>>3]-+h[A>>3])*.5+J;h[G+24>>3]=H;I=I-(+h[x>>3]-+h[A>>3]);h[G+32>>3]=I;h[G+40>>3]=H;A=G+48|0;h[A>>3]=I;h[G+56>>3]=J;ZO(a,G,d,f);h[B>>3]=+h[b+16>>3];J=+h[y>>3];h[B+8>>3]=(+h[z>>3]-J)*.5+J;h[B+16>>3]=+h[A>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;aP(a,B,2);C_(G);break}else{switch(e|0){case 234881024:break;default:break a}G=d<<4;y=tH(G)|0;u=b+16|0;I=+h[u>>3];v=D+48|0;I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[v>>3])*-1.125;h[y>>3]=I;w=b+40|0;J=+h[w>>3];x=b+24|0;A=D+56|0;z=D+72|0;J=(+h[x>>3]-J)*.5+J+(+h[A>>3]-+h[z>>3])*.125;h[y+8>>3]=J;H=+h[k>>3]-+h[v>>3]+I;h[y+16>>3]=H;h[y+24>>3]=J;h[y+32>>3]=H;J=(+h[A>>3]-+h[z>>3])*.5+J;h[y+40>>3]=J;h[y+48>>3]=I;h[y+56>>3]=J;ZO(a,y,d,f);C_(y);y=tH(G)|0;J=+h[u>>3];J=(+h[b>>3]-J)*.5+J+(+h[k>>3]-+h[v>>3])*-1.125;h[y>>3]=J;I=+h[w>>3];I=(+h[x>>3]-I)*.5+I+(+h[A>>3]-+h[z>>3])*-.625;h[y+8>>3]=I;H=+h[k>>3]-+h[v>>3]+J;h[y+16>>3]=H;h[y+24>>3]=I;h[y+32>>3]=H;I=(+h[A>>3]-+h[z>>3])*.5+I;h[y+40>>3]=I;h[y+48>>3]=J;h[y+56>>3]=I;ZO(a,y,d,f);C_(y);y=tH(G)|0;I=+h[u>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[v>>3])*.125;h[y>>3]=I;J=+h[w>>3];J=(+h[x>>3]-J)*.5+J+(+h[A>>3]-+h[z>>3])*-.625;h[y+8>>3]=J;H=+h[k>>3]-+h[v>>3]+I;h[y+16>>3]=H;h[y+24>>3]=J;h[y+32>>3]=H;J=(+h[A>>3]-+h[z>>3])*.5+J;h[y+40>>3]=J;h[y+48>>3]=I;h[y+56>>3]=J;ZO(a,y,d,f);C_(y);G=tH(G)|0;J=+h[u>>3];J=(+h[b>>3]-J)*.5+J+(+h[k>>3]-+h[v>>3])*.125;h[G>>3]=J;I=+h[w>>3];I=(+h[x>>3]-I)*.5+I+(+h[A>>3]-+h[z>>3])*.125;h[G+8>>3]=I;H=+h[k>>3]-+h[v>>3]+J;y=G+16|0;h[y>>3]=H;h[G+24>>3]=I;h[G+32>>3]=H;I=(+h[A>>3]-+h[z>>3])*.5+I;h[G+40>>3]=I;h[G+48>>3]=J;h[G+56>>3]=I;ZO(a,G,d,f);h[B>>3]=+h[y>>3];I=+h[w>>3];y=B+8|0;h[y>>3]=(+h[x>>3]-I)*.5+I;z=B+16|0;h[z>>3]=+h[b>>3];A=b+8|0;d=b+56|0;f=B+24|0;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+I;aP(a,B,2);I=+h[u>>3];h[B>>3]=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[v>>3])*-1.125;J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[z>>3]=I;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;aP(a,B,2);C_(G);break}}if((e|0)<285212672)if((e|0)<268435456){switch(e|0){case 251658240:break;default:break a}G=d<<4;u=tH(G)|0;v=b+16|0;J=+h[v>>3];y=D+48|0;J=J-+h[k>>3]+(+h[b>>3]-J)*.5+ +h[y>>3];h[u>>3]=J;w=b+40|0;I=+h[w>>3];x=b+24|0;A=D+56|0;z=D+72|0;I=(+h[x>>3]-I)*.5+I+(+h[A>>3]-+h[z>>3])*.125;h[u+8>>3]=I;H=(+h[k>>3]-+h[y>>3])*2.0+J;h[u+16>>3]=H;h[u+24>>3]=I;h[u+32>>3]=H;I=(+h[A>>3]-+h[z>>3])*.5+I;h[u+40>>3]=I;h[u+48>>3]=J;h[u+56>>3]=I;ZO(a,u,d,f);C_(u);G=tH(G)|0;I=+h[v>>3];I=I-+h[k>>3]+(+h[b>>3]-I)*.5+ +h[y>>3];h[G>>3]=I;J=+h[w>>3];J=(+h[x>>3]-J)*.5+J+(+h[A>>3]-+h[z>>3])*-.625;h[G+8>>3]=J;H=(+h[k>>3]-+h[y>>3])*2.0+I;y=G+16|0;h[y>>3]=H;h[G+24>>3]=J;h[G+32>>3]=H;J=(+h[A>>3]-+h[z>>3])*.5+J;h[G+40>>3]=J;h[G+48>>3]=I;h[G+56>>3]=J;ZO(a,G,d,f);h[B>>3]=+h[y>>3];J=+h[w>>3];y=B+8|0;h[y>>3]=(+h[x>>3]-J)*.5+J;z=B+16|0;h[z>>3]=+h[b>>3];A=b+8|0;d=b+56|0;f=B+24|0;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;aP(a,B,2);h[B>>3]=+h[v>>3];J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[z>>3]=+h[G>>3];h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;aP(a,B,2);C_(G);break}else{switch(e|0){case 268435456:break;default:break a}G=tH(d<<4)|0;h[G>>3]=+h[b>>3];v=D+48|0;x=D+56|0;y=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[x>>3]-+h[y>>3])*.5;h[G+16>>3]=+h[v>>3];J=+h[x>>3];h[G+24>>3]=J-(J-+h[y>>3])*.5;h[G+32>>3]=+h[b+32>>3];z=b+40|0;h[G+40>>3]=(+h[x>>3]-+h[y>>3])*.5+ +h[z>>3];h[G+48>>3]=+h[b>>3];h[G+56>>3]=(+h[x>>3]-+h[y>>3])*.5+ +h[z>>3];ZO(a,G,d,f);w=b+16|0;J=(+h[k>>3]-+h[v>>3])*.25;I=J+ +h[w>>3];h[B>>3]=I;H=+h[z>>3];u=b+24|0;F=+h[x>>3]-+h[y>>3];H=(+h[u>>3]-H)*.5+H+F*.125;A=B+8|0;h[A>>3]=H;d=B+16|0;h[d>>3]=J+I;f=B+24|0;h[f>>3]=H-F*.25;aP(a,B,2);F=(+h[k>>3]-+h[v>>3])*.25;H=F+ +h[w>>3];h[B>>3]=H;I=+h[z>>3];J=+h[x>>3]-+h[y>>3];I=(+h[u>>3]-I)*.5+I+J*-.125;h[A>>3]=I;h[d>>3]=F+H;h[f>>3]=J*.25+I;aP(a,B,2);I=(+h[k>>3]-+h[v>>3])*.25;h[B>>3]=I+ +h[w>>3];J=(+h[x>>3]-+h[y>>3])*.75+ +h[z>>3];h[A>>3]=J;h[d>>3]=+h[b>>3]-I;h[f>>3]=J;aP(a,B,2);C_(G);break}else if((e|0)<301989888){switch(e|0){case 285212672:break;default:break a}y=tH(d<<4)|0;v=b+16|0;I=+h[v>>3];z=D+48|0;I=(+h[k>>3]-+h[z>>3]+(+h[b>>3]-I))*.5+I;h[y>>3]=I;w=b+40|0;F=+h[w>>3];x=b+24|0;F=(+h[k>>3]-+h[z>>3]+(+h[x>>3]-F))*.5+F;h[y+8>>3]=F;h[y+16>>3]=I;I=+h[w>>3];o=+h[k>>3]-+h[z>>3];I=(+h[x>>3]-I-o)*.5+I;h[y+24>>3]=I;J=+h[v>>3];J=(+h[b>>3]-J-o)*.5+J;h[y+32>>3]=J;h[y+40>>3]=I;h[y+48>>3]=J;h[y+56>>3]=F;ZO(a,y,d,f);C_(y);F=+h[v>>3];F=(+h[b>>3]-F)*.5+F;J=+h[k>>3]-+h[z>>3];I=J*.75;o=F+I;h[B>>3]=o;H=+h[w>>3];H=(+h[x>>3]-H)*.5+H;I=H+I;y=B+8|0;h[y>>3]=I;A=B+16|0;h[A>>3]=o;J=J*-.75;H=H+J;G=B+24|0;h[G>>3]=H;J=F+J;h[B+32>>3]=J;h[B+40>>3]=H;h[B+48>>3]=J;h[B+56>>3]=I;d=B+64|0;c[d>>2]=c[B>>2];c[d+4>>2]=c[B+4>>2];c[d+8>>2]=c[B+8>>2];c[d+12>>2]=c[B+12>>2];aP(a,B,5);I=+h[v>>3];J=+h[b>>3];h[B>>3]=(J-I)*.5+I+(+h[k>>3]-+h[z>>3])*.75;I=+h[w>>3];h[y>>3]=(+h[x>>3]-I)*.5+I;h[A>>3]=J;d=b+8|0;f=b+56|0;h[G>>3]=(+h[d>>3]-+h[f>>3])*.5+I;aP(a,B,2);I=+h[v>>3];h[B>>3]=I;J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[A>>3]=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[z>>3])*-.75;h[G>>3]=(+h[d>>3]-+h[f>>3])*.5+J;aP(a,B,2);break}else{switch(e|0){case 301989888:break;default:break a}A=d+12|0;G=tH(A<<4)|0;x=b+16|0;m=+h[x>>3];s=D+48|0;m=(+h[b>>3]-m)*.5+m+(+h[k>>3]-+h[s>>3])*.25;h[G>>3]=m;y=b+40|0;F=+h[y>>3];z=b+24|0;v=D+56|0;w=D+72|0;F=(+h[v>>3]-+h[w>>3]+(+h[z>>3]-F))*.5+F;u=G+8|0;h[u>>3]=F;h[G+16>>3]=m;F=(+h[v>>3]-+h[w>>3])*.125+F;t=G+24|0;h[t>>3]=F;H=m-(+h[k>>3]-+h[s>>3])*.125;d=G+32|0;h[d>>3]=H;o=(+h[v>>3]-+h[w>>3])*.125+F;h[G+40>>3]=o;h[G+48>>3]=m;I=(+h[v>>3]-+h[w>>3])*.125+o;h[G+56>>3]=I;h[G+64>>3]=m;m=(+h[v>>3]-+h[w>>3])*.125+I;h[G+72>>3]=m;h[G+80>>3]=H;h[G+88>>3]=m;H=+h[x>>3];H=(+h[b>>3]-H)*.5+H;h[G+96>>3]=H;h[G+104>>3]=I;J=H-(+h[k>>3]-+h[s>>3])*.125;h[G+112>>3]=J;h[G+120>>3]=m;J=J-(+h[k>>3]-+h[s>>3])*.125;h[G+128>>3]=J;h[G+136>>3]=m;h[G+144>>3]=J;h[G+152>>3]=I;I=(+h[k>>3]-+h[s>>3])*.125+J;h[G+160>>3]=I;h[G+168>>3]=o;h[G+176>>3]=J;h[G+184>>3]=F;h[G+192>>3]=J;J=+h[u>>3];h[G+200>>3]=J;h[G+208>>3]=I;h[G+216>>3]=J;u=G+224|0;h[u>>3]=H;h[G+232>>3]=+h[t>>3];h[G+240>>3]=+h[d>>3];h[G+248>>3]=J;ZO(a,G,A,f);J=+h[u>>3];h[B>>3]=J;H=+h[y>>3];H=(+h[z>>3]-H)*.5+H;A=B+8|0;h[A>>3]=H;d=B+16|0;h[d>>3]=J;f=B+24|0;h[f>>3]=(+h[v>>3]-+h[w>>3])*.125+H;aP(a,B,2);H=+h[u>>3];h[B>>3]=H;J=+h[y>>3];I=+h[v>>3]-+h[w>>3];J=(+h[z>>3]-J)*.5+J+I*.25;h[A>>3]=J;h[d>>3]=H;h[f>>3]=I*.125+J;aP(a,B,2);h[B>>3]=+h[x>>3];J=+h[y>>3];h[A>>3]=(+h[z>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;aP(a,B,2);C_(G);break}}else{if((e|0)<369098752){if((e|0)<335544320){switch(e|0){case 318767104:break;default:break a}A=d+4|0;G=tH(A<<4)|0;x=b+16|0;H=+h[x>>3];d=D+48|0;H=(+h[b>>3]-H)*.5+H+(+h[k>>3]-+h[d>>3])*.125;h[G>>3]=H;y=b+40|0;J=+h[y>>3];z=b+24|0;v=D+56|0;w=D+72|0;J=(+h[v>>3]-+h[w>>3]+(+h[z>>3]-J))*.5+J;h[G+8>>3]=J;o=(+h[k>>3]-+h[d>>3])*.125+H;h[G+16>>3]=o;I=(+h[v>>3]-+h[w>>3])*.125+J;h[G+24>>3]=I;h[G+32>>3]=o;o=(+h[v>>3]-+h[w>>3])*.25+I;h[G+40>>3]=o;h[G+48>>3]=H;F=(+h[v>>3]-+h[w>>3])*.125+o;h[G+56>>3]=F;H=H-(+h[k>>3]-+h[d>>3])*.25;h[G+64>>3]=H;h[G+72>>3]=F;F=H-(+h[k>>3]-+h[d>>3])*.125;h[G+80>>3]=F;h[G+88>>3]=o;h[G+96>>3]=F;h[G+104>>3]=I;h[G+112>>3]=H;h[G+120>>3]=J;ZO(a,G,A,f);J=+h[x>>3];J=(+h[b>>3]-J)*.5+J;h[B>>3]=J;H=+h[y>>3];H=(+h[z>>3]-H)*.5+H;A=B+8|0;h[A>>3]=H;d=B+16|0;h[d>>3]=J;f=B+24|0;h[f>>3]=(+h[v>>3]-+h[w>>3])*.125+H;aP(a,B,2);H=+h[x>>3];H=(+h[b>>3]-H)*.5+H;h[B>>3]=H;J=+h[y>>3];I=+h[v>>3]-+h[w>>3];J=(+h[z>>3]-J)*.5+J+I*.25;h[A>>3]=J;h[d>>3]=H;h[f>>3]=I*.125+J;aP(a,B,2);h[B>>3]=+h[x>>3];J=+h[y>>3];h[A>>3]=(+h[z>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;aP(a,B,2);C_(G);break}if((e|0)<352321536){switch(e|0){case 335544320:break;default:break a}x=d+12|0;G=tH(x<<4)|0;y=b+16|0;m=+h[y>>3];u=D+48|0;m=(+h[b>>3]-m)*.5+m+(+h[k>>3]-+h[u>>3])*.25;h[G>>3]=m;z=b+40|0;F=+h[z>>3];A=b+24|0;s=D+56|0;t=D+72|0;F=(+h[s>>3]-+h[t>>3]+(+h[A>>3]-F))*.5+F;d=G+8|0;h[d>>3]=F;h[G+16>>3]=m;F=(+h[s>>3]-+h[t>>3])*.125+F;v=G+24|0;h[v>>3]=F;I=m-(+h[k>>3]-+h[u>>3])*.125;w=G+32|0;h[w>>3]=I;o=(+h[s>>3]-+h[t>>3])*.125+F;h[G+40>>3]=o;h[G+48>>3]=m;H=(+h[s>>3]-+h[t>>3])*.125+o;h[G+56>>3]=H;h[G+64>>3]=m;m=(+h[s>>3]-+h[t>>3])*.125+H;h[G+72>>3]=m;h[G+80>>3]=I;h[G+88>>3]=m;I=+h[y>>3];I=(+h[b>>3]-I)*.5+I;h[G+96>>3]=I;h[G+104>>3]=H;J=I-(+h[k>>3]-+h[u>>3])*.125;h[G+112>>3]=J;h[G+120>>3]=m;J=J-(+h[k>>3]-+h[u>>3])*.125;h[G+128>>3]=J;h[G+136>>3]=m;h[G+144>>3]=J;h[G+152>>3]=H;H=(+h[k>>3]-+h[u>>3])*.125+J;h[G+160>>3]=H;h[G+168>>3]=o;h[G+176>>3]=J;h[G+184>>3]=F;h[G+192>>3]=J;J=+h[d>>3];h[G+200>>3]=J;h[G+208>>3]=H;h[G+216>>3]=J;d=G+224|0;h[d>>3]=I;h[G+232>>3]=+h[v>>3];h[G+240>>3]=+h[w>>3];h[G+248>>3]=J;ZO(a,G,x,f);c[B>>2]=c[d>>2];c[B+4>>2]=c[d+4>>2];c[B+8>>2]=c[d+8>>2];c[B+12>>2]=c[d+12>>2];d=B+16|0;h[d>>3]=+h[B>>3];J=+h[z>>3];f=B+24|0;h[f>>3]=(+h[A>>3]-J)*.5+J;aP(a,B,2);h[B>>3]=+h[y>>3];J=+h[z>>3];h[B+8>>3]=(+h[A>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;aP(a,B,2);C_(G);break}else{switch(e|0){case 352321536:break;default:break a}A=d+4|0;G=tH(A<<4)|0;x=b+16|0;I=+h[x>>3];w=D+48|0;I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[w>>3])*.125;h[G>>3]=I;y=b+40|0;J=+h[y>>3];z=b+24|0;u=D+56|0;v=D+72|0;J=(+h[u>>3]-+h[v>>3]+(+h[z>>3]-J))*.5+J;d=G+8|0;h[d>>3]=J;o=(+h[k>>3]-+h[w>>3])*.125+I;h[G+16>>3]=o;H=(+h[u>>3]-+h[v>>3])*.125+J;h[G+24>>3]=H;h[G+32>>3]=o;o=(+h[u>>3]-+h[v>>3])*.25+H;h[G+40>>3]=o;h[G+48>>3]=I;F=(+h[u>>3]-+h[v>>3])*.125+o;h[G+56>>3]=F;I=I-(+h[k>>3]-+h[w>>3])*.25;h[G+64>>3]=I;h[G+72>>3]=F;F=I-(+h[k>>3]-+h[w>>3])*.125;h[G+80>>3]=F;h[G+88>>3]=o;h[G+96>>3]=F;h[G+104>>3]=H;h[G+112>>3]=I;h[G+120>>3]=J;ZO(a,G,A,f);J=+h[x>>3];J=(+h[b>>3]-J)*.5+J;h[B>>3]=J;A=B+8|0;h[A>>3]=+h[d>>3];d=B+16|0;h[d>>3]=J;J=+h[y>>3];f=B+24|0;h[f>>3]=(+h[z>>3]-J)*.5+J;aP(a,B,2);h[B>>3]=+h[x>>3];J=+h[y>>3];h[A>>3]=(+h[z>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;aP(a,B,2);C_(G);break}}if((e|0)<402653184)if((e|0)<385875968){switch(e|0){case 369098752:break;default:break a}d=d+5|0;G=tH(d<<4)|0;B=D+48|0;h[G>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;y=D+56|0;A=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[y>>3]-+h[A>>3])*.5;h[G+16>>3]=+h[B>>3];J=+h[y>>3];h[G+24>>3]=J-(J-+h[A>>3])*.5;h[G+32>>3]=+h[b+32>>3];z=b+40|0;h[G+40>>3]=+h[z>>3];J=+h[k>>3];h[G+48>>3]=(J-+h[B>>3])*.5+J;h[G+56>>3]=+h[z>>3];J=+h[k>>3];h[G+64>>3]=(J-+h[B>>3])*.5+J;h[G+72>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+80>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;h[G+88>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+96>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;z=b+56|0;h[G+104>>3]=+h[z>>3];A=b+8|0;J=+h[A>>3];h[G+120>>3]=J-(J-+h[z>>3])*.5;h[G+112>>3]=+h[b>>3];h[G+136>>3]=+h[A>>3];h[G+128>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;ZO(a,G,d,f);C_(G);break}else{switch(e|0){case 385875968:break;default:break a}d=d+3|0;G=tH(d<<4)|0;B=D+48|0;h[G>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;y=D+56|0;A=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[y>>3]-+h[A>>3])*.5;h[G+16>>3]=+h[B>>3];J=+h[y>>3];h[G+24>>3]=J-(J-+h[A>>3])*.5;h[G+32>>3]=+h[b+32>>3];z=b+40|0;h[G+40>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+48>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;h[G+56>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+64>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;z=b+56|0;h[G+72>>3]=+h[z>>3];A=b+8|0;J=+h[A>>3];h[G+88>>3]=J-(J-+h[z>>3])*.5;h[G+80>>3]=+h[b>>3];h[G+104>>3]=+h[A>>3];h[G+96>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;ZO(a,G,d,f);C_(G);break}else if((e|0)<419430400){switch(e|0){case 402653184:break;default:break a}d=d+3|0;G=tH(d<<4)|0;h[G>>3]=+h[b>>3];y=b+8|0;z=D+48|0;A=D+56|0;B=D+72|0;h[G+8>>3]=+h[y>>3]-(+h[A>>3]-+h[B>>3])*.5;J=+h[k>>3];h[G+16>>3]=(J-+h[z>>3])*.5+J;h[G+24>>3]=+h[y>>3]-(+h[A>>3]-+h[B>>3])*.5;J=+h[k>>3];h[G+32>>3]=(J-+h[z>>3])*.5+J;h[G+40>>3]=+h[D+40>>3];h[G+48>>3]=+h[b+16>>3];J=+h[b+24>>3];y=b+40|0;h[G+56>>3]=J-(J-+h[y>>3])*.5;J=+h[k>>3];h[G+64>>3]=(J-+h[z>>3])*.5+J;h[G+72>>3]=+h[y>>3];h[G+88>>3]=(+h[A>>3]-+h[B>>3])*.5+ +h[y>>3];J=+h[k>>3];h[G+80>>3]=(J-+h[z>>3])*.5+J;h[G+104>>3]=(+h[A>>3]-+h[B>>3])*.5+ +h[b+56>>3];h[G+96>>3]=+h[b>>3];ZO(a,G,d,f);C_(G);break}else{switch(e|0){case 419430400:break;default:break a}d=d+5|0;G=tH(d<<4)|0;h[G>>3]=+h[b>>3];B=b+8|0;A=D+48|0;y=D+56|0;z=D+72|0;h[G+8>>3]=+h[B>>3]-(+h[y>>3]-+h[z>>3])*.5;J=+h[k>>3];h[G+16>>3]=(J-+h[A>>3])*.5+J;h[G+24>>3]=+h[B>>3]-(+h[y>>3]-+h[z>>3])*.5;J=+h[k>>3];h[G+32>>3]=(J-+h[A>>3])*.5+J;h[G+40>>3]=+h[D+40>>3];h[G+48>>3]=+h[b+16>>3];J=+h[b+24>>3];B=b+40|0;h[G+56>>3]=J-(J-+h[B>>3])*.5;J=+h[k>>3];h[G+64>>3]=(J-+h[A>>3])*.5+J;h[G+72>>3]=+h[B>>3];h[G+88>>3]=(+h[y>>3]-+h[z>>3])*.5+ +h[B>>3];J=+h[k>>3];h[G+80>>3]=(J-+h[A>>3])*.5+J;B=b+56|0;h[G+104>>3]=(+h[y>>3]-+h[z>>3])*.5+ +h[B>>3];h[G+96>>3]=+h[j>>3]-(+h[k>>3]-+h[A>>3])*.5;h[G+112>>3]=+h[j>>3]-(+h[k>>3]-+h[A>>3])*.5;h[G+120>>3]=+h[B>>3];h[G+128>>3]=+h[b+48>>3];h[G+136>>3]=+h[B>>3];ZO(a,G,d,f);C_(G);break}}while(0);C_(D)}l=E;return}function EJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0;f=l;l=l+112|0;g=f;k=+h[b+8>>3]*2.0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];h[g+16>>3]=+h[b+16>>3];h[g+24>>3]=k-+h[b+24>>3];h[g+32>>3]=+h[b+32>>3];h[g+40>>3]=k-+h[b+40>>3];h[g+48>>3]=+h[b+48>>3];h[g+56>>3]=k-+h[b+56>>3];h[g+64>>3]=+h[b+64>>3];h[g+72>>3]=k-+h[b+72>>3];h[g+80>>3]=+h[b+80>>3];h[g+88>>3]=k-+h[b+88>>3];i=g+96|0;j=b+96|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];$O(a,b,d,0,0,e&255);$O(a,g,7,0,0,0);l=f;return}function FJ(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;var e=0.0,f=0.0;f=+h[c>>3];e=+h[c+8>>3];e=(+h[d+8>>3]-e)*b+e;h[a>>3]=(+h[d>>3]-f)*b+f;h[a+8>>3]=e;return}function GJ(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(a){a=c[c[a+4>>2]>>2]|0;if((a|0)!=89)if((a|0)==92)a=2;else return ((a|0)==91?3:(a|0)==94?4:0)|0;else a=1}else a=0;return a|0}function HJ(b){b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0,D=0,G=0,H=0,I=0,J=0,L=0,M=0,N=0,P=0.0,Q=0.0,R=0,S=0,T=0.0,U=0.0,V=0.0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0.0;aa=l;l=l+144|0;J=aa+112|0;N=aa+104|0;G=aa+96|0;H=aa+88|0;i=aa+80|0;Y=aa+64|0;_=aa+48|0;R=aa+40|0;S=aa+32|0;j=aa+24|0;p=aa+16|0;D=aa+136|0;A=aa+128|0;L=aa;$=tH(48)|0;Z=b+16|0;W=c[(c[(c[Z>>2]|0)+8>>2]|0)+8>>2]|0;g=(W|0)==1616;X=c[W>>2]|0;d=c[W+4>>2]|0;e=c[W+8>>2]|0;m=+h[W+16>>3];n=+h[W+32>>3];o=+h[W+24>>3];X=X|(PL(wx(b,102485)|0)|0)&255;do if(!g){if(!X){W=c[Z>>2]|0;k=+h[W+32>>3]*72.0;f=+h[W+40>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0);k=+(~~(k+(k>=0.0?.5:-.5))|0);break}k=+RJ(b);if(k>0.0)f=k;else{W=c[Z>>2]|0;f=+h[W+32>>3];k=+h[W+40>>3];k=(f=0.0?.5:-.5))|0);f=k}}else{f=0.0;k=0.0}while(0);W=JL(b,c[46390]|0,d,0)|0;V=+KL(b,c[46392]|0,0.0,-360.0)+m;if(!e){U=+KL(b,c[46393]|0,0.0,-100.0);I=JL(b,c[46389]|0,4,0)|0;T=+KL(b,c[46394]|0,0.0,-100.0)}else{I=e;U=n;T=o}d=c[(c[Z>>2]|0)+104>>2]|0;e=d+24|0;c[Y>>2]=c[e>>2];c[Y+4>>2]=c[e+4>>2];c[Y+8>>2]=c[e+8>>2];c[Y+12>>2]=c[e+12>>2];q=+h[Y>>3];if(q>0.0){if(!g)M=11}else if(!(g|!(+h[Y+8>>3]>0.0)))M=11;if((M|0)==11){d=wx(b,102470)|0;do if(d){h[p>>3]=0.0;h[j>>3]=0.0;c[i>>2]=j;c[i+4>>2]=p;d=M1(d,102477,i)|0;m=+h[j>>3];if(m<0.0){h[j>>3]=0.0;m=0.0}n=+h[p>>3];if(n<0.0){h[p>>3]=0.0;o=0.0}else o=n;if((d|0)<=0){n=q+16.0;h[Y>>3]=n;m=8.0;break}m=m*72.0;m=+(~~(m+(m>=0.0?.5:-.5))<<1|0);n=q+m;h[Y>>3]=n;if((d|0)!=1){m=o*72.0;m=+(~~(m+(m>=0.0?.5:-.5))<<1|0)}}else{n=q+16.0;h[Y>>3]=n;m=8.0}while(0);d=Y+8|0;h[d>>3]=+h[d>>3]+m;d=c[(c[Z>>2]|0)+104>>2]|0;q=n}s=+h[d+24>>3];m=+h[c[(c[(dz(b)|0)+16>>2]|0)+8>>2]>>3];if(m>0.0){P=m*72.0;P=+(~~(P+(P>=0.0?.5:-.5))|0);Q=+SJ(q,P);h[Y>>3]=Q;p=Y+8|0;h[p>>3]=+SJ(+h[p>>3],P)}else Q=q;d=c[(c[Z>>2]|0)+8>>2]|0;do if(!(a[d+12>>0]|0)){e=wx(b,105999)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0){BC(A,dz(b)|0,e);d=c[A>>2]|0;g=c[A+4>>2]|0;if((g&d|0)==-1){d=qy(b)|0;c[G>>2]=e;c[G+4>>2]=d;Ow(0,102561,G)|0;e=0;d=0;break}else{a[(c[(dz(b)|0)+16>>2]|0)+114>>0]=1;e=d+2|0;d=g+2|0;break}}else{e=0;d=0}}else{d=c[d>>2]|0;if((a[d>>0]|0)==99?(a$(d,102493)|0)==0:0){e=wx(b,102500)|0;BC(D,dz(b)|0,e);d=c[D>>2]|0;g=c[D+4>>2]|0;if((g&d|0)==-1){d=qy(b)|0;c[H>>2]=e|0?e:102510;c[H+4>>2]=d;Ow(0,102516,H)|0;e=0;d=0;break}else{a[(c[(dz(b)|0)+16>>2]|0)+114>>0]=1;e=d+2|0;d=g+2|0;break}}else{e=0;d=0}}while(0);P=+(e|0);h[_>>3]=Q>P?Q:P;P=+h[Y+8>>3];r=+(d|0);d=_+8|0;h[d>>3]=P>r?P:r;e=(I|0)<3&(T!=0.0|U!=0.0)?120:I;g=wx(b,102602)|0;if(!g)i=99;else{i=a[g>>0]|0;i=i<<24>>24==116?116:i<<24>>24==98?98:99}g=c[Z>>2]|0;a[(c[g+104>>2]|0)+80>>0]=i;if((e|0)==4?(T==0.0?((~~(V+(V>=0.0?.5:-.5))|0)%90|0|0)==0:0)&U==0.0:0)p=1;else M=39;do if((M|0)==39){g=c[(c[(c[g+8>>2]|0)+8>>2]|0)+44>>2]|0;if(g|0){p=c[g>>2]|0;c[J>>2]=c[_>>2];c[J+4>>2]=c[_+4>>2];c[J+8>>2]=c[_+8>>2];c[J+12>>2]=c[_+12>>2];ub[p&63](L,J);c[_>>2]=c[L>>2];c[_+4>>2]=c[L+4>>2];c[_+8>>2]=c[L+8>>2];c[_+12>>2]=c[L+12>>2];p=0;break}m=+h[d>>3];n=m*1.4142135623730951;if(f>n&i<<24>>24==99){o=m/f;o=+C(+(1.0/(1.0-o*o)));o=+h[_>>3]*o;h[_>>3]=o}else{o=+h[_>>3]*1.4142135623730951;h[_>>3]=o;h[d>>3]=n;m=n}if((e|0)>2){z=+E(+(3.141592653589793/+(e|0)));h[_>>3]=o/z;h[d>>3]=m/z;p=0}else p=0}while(0);m=+h[d>>3];g=ML(b,c[46395]|0,134226)|0;if((a[g>>0]|0)==115?(a$(g,105204)|0)==0:0){h[_>>3]=k;h[d>>3]=f;N=$+40|0;c[N>>2]=c[N>>2]|2048}else{if(!((PL(g)|0)<<24>>24)){z=+h[_>>3];k=k>z?k:z;h[_>>3]=k;z=+h[d>>3];f=f>z?f:z}else{M=c[(c[Z>>2]|0)+104>>2]|0;if(!(!(k<+h[M+24>>3])?!(f<+h[M+32>>3]):0)){L=qy(b)|0;M=qy(dz(b)|0)|0;c[N>>2]=L;c[N+4>>2]=M;Ow(0,102611,N)|0}h[_>>3]=k}h[d>>3]=f}if(!X){z=f;y=k}else{y=k>f?k:f;h[d>>3]=y;h[_>>3]=y;z=y}do if(!((PL(ML(b,c[46386]|0,134226)|0)|0)<<24>>24)){if(p){f=+h[(Q>+h[_>>3]?Y:_)>>3];break}f=+h[d>>3];if(P>3]*+C(+(1.0-P*P/(f*f)));f=Q>f?Q:f}else f=Q}else f=Q;while(0);g=c[(c[Z>>2]|0)+104>>2]|0;h[g+40>>3]=s-q+f;A=$+40|0;if(!(c[A>>2]&2048)){x=+h[d>>3]-m;h[g+48>>3]=(P1;g=j?W:1;a:do if((e|0)<3){g=tH(g<<5)|0;k=+h[_>>3]*.5;f=+h[d>>3]*.5;h[g>>3]=-k;h[g+8>>3]=-f;h[g+16>>3]=k;h[g+24>>3]=f;if(j){e=1;i=2;while(1){if((e|0)==(W|0))break;y=k+4.0;z=f+4.0;h[g+(i<<4)>>3]=-y;h[g+(i<<4)+8>>3]=-z;S=i|1;h[g+(S<<4)>>3]=y;h[g+(S<<4)+8>>3]=z;e=e+1|0;i=i+2|0;k=y;f=z}h[_>>3]=k*2.0;h[d>>3]=f*2.0;e=2}else e=2}else{g=tH(O(g<<4,e)|0)|0;i=c[(c[(c[(c[Z>>2]|0)+8>>2]|0)+8>>2]|0)+44>>2]|0;b:do if(!i){q=6.283185307179586/+(e|0);t=q*.5;r=+F(+t);s=+t$(+B(+U)+ +B(+T),1.0);t=T*1.4142135623730951/+E(+t);u=U*.5;v$((q+-3.141592653589793)*.5,R,S);v=V*.017453292519943295;k=0.0;f=0.0;m=0.0;i=0;n=+h[S>>3]*.5;o=+h[R>>3]*.5;while(1){if((i|0)>=(e|0))break b;m=m+q;v$(m,R,S);n=+h[S>>3]*r+n;o=+h[R>>3]*r+o;x=(o*t+s)*n+u*o;v$(+K(+o,+x)+v,R,S);x=+t$(x,o);w=+h[S>>3]*x*+h[_>>3];x=+h[R>>3]*x*+h[d>>3];ba=+B(+w);f=ba>f?ba:f;ba=+B(+x);k=ba>k?ba:k;h[g+(i<<4)>>3]=w;h[g+(i<<4)+8>>3]=x;if(p)break;else i=i+1|0}ba=-w;h[g+16>>3]=ba;h[g+24>>3]=x;h[g+32>>3]=ba;ba=-x;h[g+40>>3]=ba;h[g+48>>3]=w;h[g+56>>3]=ba}else{ub[c[i+4>>2]&63](g,_);k=+h[d>>3]*.5;f=+h[_>>3]*.5}while(0);f=f*2.0;k=k*2.0;y=y>f?y:f;h[_>>3]=y;ba=z>k?z:k;h[d>>3]=ba;f=y/f;k=ba/k;i=0;while(1){if((i|0)>=(e|0))break;N=g+(i<<4)|0;b=g+(i<<4)+8|0;ba=+h[b>>3]*k;h[N>>3]=+h[N>>3]*f;h[b>>3]=ba;i=i+1|0}if(j){j=e+-1|0;k=+h[g>>3];m=+h[g+8>>3];f=+K(+(m-+h[g+(j<<4)+8>>3]),+(k-+h[g+(j<<4)>>3]));j=0;c:while(1){if((j|0)>=(e|0))break;p=j+1|0;i=(p|0)%(e|0)|0;n=+h[g+(i<<4)>>3];o=+h[g+(i<<4)+8>>3];q=+K(+(o-m),+(n-k));z=(f+3.141592653589793-q)*.5;ba=4.0/+F(+z);v$(f-z,R,S);h[R>>3]=+h[R>>3]*ba;h[S>>3]=+h[S>>3]*ba;i=1;f=m;while(1){if((i|0)==(W|0)){f=q;j=p;k=n;m=o;continue c}z=+h[S>>3]+k;ba=+h[R>>3]+f;b=(O(i,e)|0)+j|0;h[g+(b<<4)>>3]=z;h[g+(b<<4)+8>>3]=ba;i=i+1|0;k=z;f=ba}}j=O(e,W+-1|0)|0;i=0;while(1){if((i|0)>=(e|0))break a;S=i+j|0;z=+h[g+(S<<4)+8>>3];y=+B(+(+h[g+(S<<4)>>3]))*2.0;ba=+h[_>>3];h[_>>3]=y>ba?y:ba;z=+B(+z)*2.0;ba=+h[d>>3];h[d>>3]=z>ba?z:ba;i=i+1|0}}}while(0);c[$>>2]=X;c[$+4>>2]=W;c[$+8>>2]=e;h[$+16>>3]=V;h[$+32>>3]=U;h[$+24>>3]=T;c[$+44>>2]=g;f=+h[_>>3];if(!(c[A>>2]&2048)){e=c[Z>>2]|0;h[e+32>>3]=f*.013888888888888888}else{e=c[Z>>2]|0;h[e+32>>3]=+h[(Q>f?Y:_)>>3]*.013888888888888888;d=(P>+h[d>>3]?Y:_)+8|0}h[e+40>>3]=+h[d>>3]*.013888888888888888;c[e+12>>2]=$;l=aa;return}function IJ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+64|0;j=o+40|0;e=o+32|0;k=o+16|0;n=o;d=(c[(c[(dz(a)|0)+16>>2]|0)+116>>2]|0)>>>2&1^1;m=a+16|0;f=c[c[(c[m>>2]|0)+104>>2]>>2]|0;c[46512]=f;f=V_(f)|0;f=tH(((f|0)>1?f:1)+1|0)|0;b=KJ(a,d,1,f)|0;if(!b){c[e>>2]=c[c[(c[m>>2]|0)+104>>2]>>2];Ow(1,102446,e)|0;c[46512]=102467;b=KJ(a,d,1,f)|0}C_(f);LJ(j,a,b);d=c[m>>2]|0;i=+h[d+32>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))|0);h[n>>3]=i;g=+h[d+40>>3]*72.0;g=+(~~(g+(g>=0.0?.5:-.5))|0);d=n+8|0;h[d>>3]=g;if(!((PL(ML(a,c[46395]|0,134226)|0)|0)<<24>>24)){i=+h[(+h[b>>3]>i?b:n)>>3];h[n>>3]=i;e=b+8|0;g=+h[(+h[e>>3]>g?b:n)+8>>3];h[d>>3]=g;d=e;e=b}else{d=b+8|0;e=b}a=(PL(ML(a,c[46386]|0,134226)|0)|0)&255;c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2];MJ(b,j,a);NJ(k,i*-.5,g*.5);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];OJ(b,j,15);n=c[m>>2]|0;h[n+32>>3]=+h[e>>3]*.013888888888888888;h[n+40>>3]=(+h[d>>3]+1.0)*.013888888888888888;c[n+12>>2]=b;l=o;return}function JJ(a){a=a|0;var b=0.0,d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,l=0.0,m=0;j=tH(48)|0;k=a+16|0;g=c[(c[(c[(c[k>>2]|0)+8>>2]|0)+8>>2]|0)+4>>2]|0;f=+KL(a,c[46376]|0,1797693134862315708145274.0e284,0.0);b=+KL(a,c[46375]|0,1797693134862315708145274.0e284,0.0);f=f0.0?(f>.0003?f:.0003):f;i=c[k>>2]|0;h[i+40>>3]=f;h[i+32>>3]=f;b=f*72.0;g=JL(a,c[46390]|0,g,0)|0;i=tH((g|0)<1?32:g<<5)|0;f=f*36.0;e=-f;h[i>>3]=e;h[i+8>>3]=e;h[i+16>>3]=f;h[i+24>>3]=f;if((g|0)>1){a=1;d=2;e=f;b=f;while(1){if((a|0)==(g|0))break;l=e+4.0;f=b+4.0;h[i+(d<<4)>>3]=-l;h[i+(d<<4)+8>>3]=-f;m=d|1;h[i+(m<<4)>>3]=l;h[i+(m<<4)+8>>3]=f;a=a+1|0;d=d+2|0;e=l;b=f}b=e*2.0}c[j>>2]=1;c[j+4>>2]=g;c[j+8>>2]=2;m=j+16|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;c[j+44>>2]=i;l=b*.013888888888888888;m=c[k>>2]|0;h[m+32>>3]=l;h[m+40>>3]=l;c[m+12>>2]=j;return}function KJ(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;g=tH(72)|0;n=c[(c[b+16>>2]|0)+104>>2]|0;m=0;i=1;j=c[46512]|0;a:while(1){k=a[j>>0]|0;switch(k<<24>>24){case 0:break a;case 92:{j=j+1|0;k=a[j>>0]|0;switch(k<<24>>24){case 124:case 125:case 123:case 92:{l=m;break}default:E=4}break}default:E=4}if((E|0)==4){E=0;switch(k<<24>>24){case 123:{l=m+1|0;break}case 125:{l=m+-1|0;break}default:{l=m;i=i+((m|0)==0&k<<24>>24==124&1)|0}}if((l|0)<0)break}m=l;j=j+1|0}B=g+56|0;c[B>>2]=tH(i<<2)|0;a[g+64>>0]=d;y=(d|0)==0&1;z=n+82|0;A=f+1|0;v=(e|0)!=0;w=n+16|0;x=n+4|0;u=n+8|0;k=0;m=0;d=0;t=0;l=0;e=0;n=f;i=0;j=0;b:while(1){p=k;k=0;c:while(1){d:while(1){s=e;e:while(1){r=k;o=i;f:while(1){q=m;g:while(1){while(1){if(t){E=78;break b}m=c[46512]|0;i=a[m>>0]|0;if((i+-1&255)>=31)break;c[46512]=m+1}switch(i<<24>>24|0){case 92:{E=53;break d}case 0:case 124:case 125:break e;case 60:break f;case 62:break g;case 123:break;default:{k=d;i=m;break d}}i=m+1|0;c[46512]=i;if(l|0){E=34;break b}if(!(a[i>>0]|0)){E=34;break b}e=KJ(b,y,0,f)|0;c[(c[B>>2]|0)+(q<<2)>>2]=e;if(!e){E=36;break b}else{q=q+1|0;l=4}}if(a[z>>0]|0){k=d;i=m;break d}if(!(l&16)){E=27;break b}if(o>>>0>A>>>0?(C=o+-1|0,(C|0)!=(s|0)):0)i=(a[C>>0]|0)==32?C:o;else i=o;a[i>>0]=0;r=m1(f)|0;c[46512]=(c[46512]|0)+1;m=q;l=l&-17;o=i}if(l&6|0){E=22;break b}if(a[z>>0]|0){k=d;i=m;break d}c[46512]=m+1;m=q;l=l|18;k=r;s=f;i=f}if(!((l&16|0)==0&(v|i<<24>>24!=0))){E=38;break b}if(!(l&4)){k=tH(72)|0;c[(c[B>>2]|0)+(q<<2)>>2]=k;m=q+1|0}else{k=p;m=q}if(r|0)c[k+60>>2]=r;if(!(l&5)){a[f+j>>0]=32;l=l|1;j=j+1|0}i=f+j|0;if(l&1){if((j|0)>1?(D=i+-1|0,(D|0)!=(n|0)):0)i=(a[D>>0]|0)==32?D:i;a[i>>0]=0;n=m1(f)|0;c[k+52>>2]=jH(b,n,a[z>>0]|0?2:0,+h[w>>3],c[x>>2]|0,c[u>>2]|0)|0;a[k+64>>0]=1;n=f;j=0}i=c[46512]|0;switch(a[i>>0]|0){case 0:{t=1;e=s;i=o;continue b}case 125:{E=51;break b}default:{}}c[46512]=i+1;p=k;l=0;k=0;e=s;i=o}h:do if((E|0)==53){E=0;k=f+j|0;i=m+1|0;switch(a[i>>0]|0){case 0:{k=d;i=m;break h}case 62:case 60:case 124:case 125:case 123:{k=d;break}case 32:{if(!(a[z>>0]|0))k=1;else E=55;break}default:E=55}if((E|0)==55){E=0;a[k>>0]=92;k=d;l=l|9;j=j+1|0}c[46512]=i}while(0);d=f+j|0;if(l&4|0?(a[i>>0]|0)!=32:0){E=59;break b}if(!(l&24))l=(a[i>>0]|0)==32?l:l|9;if(!(l&8))if(!(l&16))e=s;else{m=a[i>>0]|0;d=(k|0)!=0;if(!(d|m<<24>>24!=32))if((o|0)!=(f|0))if((a[o+-1>>0]|0)==32)m=o;else E=73;else m=f;else E=73;if((E|0)==73){E=0;a[o>>0]=m;m=o+1|0;i=c[46512]|0}e=d?m+-1|0:s;o=m}else{m=a[i>>0]|0;e=(k|0)!=0;if(!((!(e|m<<24>>24!=32)?(a[d+-1>>0]|0)==32:0)?(a[z>>0]|0)==0:0)){a[d>>0]=m;j=j+1|0}if(e){e=s;n=f+j+-1|0}else e=s}i=i+1|0;c[46512]=i;while(1){if((a[i>>0]|0)>=0){m=q;d=k;k=r;i=o;continue c}s=i+1|0;c[46512]=s;a[f+j>>0]=a[i>>0]|0;j=j+1|0;i=s}}}if((E|0)==22){PJ(g,r);g=0}else if((E|0)==27){PJ(g,r);g=0}else if((E|0)==34){PJ(g,r);g=0}else if((E|0)==36){PJ(g,r);g=0}else if((E|0)==38){PJ(g,r);g=0}else if((E|0)==51){c[46512]=i+1;c[g+48>>2]=m}else if((E|0)==59){PJ(g,r);g=0}else if((E|0)==78)c[g+48>>2]=q;return g|0}function LJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+64|0;k=u+48|0;m=u+40|0;n=u+32|0;t=u+16|0;s=u;j=c[e+52>>2]|0;a:do if(!j){n=t+8|0;o=e+48|0;p=e+56|0;q=e+64|0;r=s+8|0;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;j=0;while(1){if((j|0)>=(c[o>>2]|0))break a;LJ(s,d,c[(c[p>>2]|0)+(j<<2)>>2]|0);if(!(a[q>>0]|0)){h[n>>3]=+h[n>>3]+ +h[r>>3];k=t;m=+h[t>>3]>+h[s>>3]?t:s}else{h[t>>3]=+h[t>>3]+ +h[s>>3];k=n;m=(+h[n>>3]>+h[r>>3]?t:s)+8|0}h[k>>3]=+h[m>>3];j=j+1|0}}else{g=+h[j+24>>3];f=+h[j+32>>3];if(g>0.0|f>0.0){j=wx(d,102470)|0;do if(j){c[k>>2]=m;c[k+4>>2]=n;j=M1(j,102477,k)|0;if((j|0)<=0){i=8.0;g=g+16.0;break}i=+h[m>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))<<1|0);g=g+i;if((j|0)!=1){i=+h[n>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))<<1|0)}}else{i=8.0;g=g+16.0}while(0);f=i+f}h[t>>3]=g;h[t+8>>3]=f}while(0);c[e>>2]=c[t>>2];c[e+4>>2]=c[t+4>>2];c[e+8>>2]=c[t+8>>2];c[e+12>>2]=c[t+12>>2];c[b>>2]=c[t>>2];c[b+4>>2]=c[t+4>>2];c[b+8>>2]=c[t+8>>2];c[b+12>>2]=c[t+12>>2];l=u;return}function MJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0;s=l;l=l+32|0;o=s+16|0;p=s;q=+h[d>>3];i=q-+h[b>>3];r=+h[d+8>>3];f=r-+h[b+8>>3];c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];d=c[b+52>>2]|0;if(!((e|0)!=0|(d|0)==0)){n=d+40|0;h[n>>3]=+h[n>>3]+i;n=d+48|0;h[n>>3]=+h[n>>3]+f}m=b+48|0;d=c[m>>2]|0;a:do if(d|0){n=b+64|0;f=((a[n>>0]|0)==0?f:i)/+(d|0);k=b+56|0;j=0;while(1){if((j|0)>=(d|0))break a;b=c[(c[k>>2]|0)+(j<<2)>>2]|0;g=j+1|0;d=~~(f*+(g|0))-~~(f*+(j|0))|0;if(!(a[n>>0]|0))NJ(p,q,+h[b+8>>3]+ +(d|0));else NJ(p,+h[b>>3]+ +(d|0),r);c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];MJ(b,o,e);j=g;d=c[m>>2]|0}}while(0);l=s;return}function NJ(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function OJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0;q=l;l=l+48|0;j=q+32|0;n=q+16|0;m=q;a[b+65>>0]=e;k=b+16|0;s=+h[d>>3];p=d+8|0;r=+h[p>>3];NJ(n,s,r-+h[b+8>>3]);c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];k=b+32|0;NJ(m,+h[b>>3]+s,r);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];k=c[b+48>>2]|0;m=k+-1|0;n=(e|0)==0;o=b+56|0;i=b+64|0;g=0;while(1){if((g|0)>=(k|0))break;do if(!n){b=(g|0)==0;f=(g|0)==(m|0);if(!(a[i>>0]|0))if(b){b=f?15:14;break}else{b=f?11:10;break}else if(b){b=f?15:13;break}else{b=f?7:5;break}}else b=0;while(0);f=c[(c[o>>2]|0)+(g<<2)>>2]|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];OJ(f,j,b&e);if(!(a[i>>0]|0))h[p>>3]=+h[p>>3]-+h[(c[(c[o>>2]|0)+(g<<2)>>2]|0)+8>>3];else h[d>>3]=+h[c[(c[o>>2]|0)+(g<<2)>>2]>>3]+ +h[d>>3];g=g+1|0}l=q;return}function PJ(a,b){a=a|0;b=b|0;QJ(a);C_(b);return}function QJ(a){a=a|0;var b=0,d=0,e=0;d=a+48|0;e=a+56|0;b=0;while(1){if((b|0)>=(c[d>>2]|0))break;QJ(c[(c[e>>2]|0)+(b<<2)>>2]|0);b=b+1|0}C_(c[a+60>>2]|0);mH(c[a+52>>2]|0);C_(c[e>>2]|0);C_(a);return}function RJ(a){a=a|0;var b=0.0,d=0.0;d=+KL(a,c[46376]|0,0.0,.01);b=+KL(a,c[46375]|0,0.0,.02);b=(d>b?d:b)*72.0;return +(+(~~(b+(b>=0.0?.5:-.5))|0))}function SJ(a,b){a=+a;b=+b;var c=0;c=~~(a/b);return +(+((+(c|0)*b+1.0e-05>2]|0)+8>>2]|0;if(!a)a=0;else a=(c[c[a+4>>2]>>2]|0)==89&1;return a|0}function UJ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;f=c[46513]|0;a:do if(!f)d=0;else{g=c[46514]|0;e=0;while(1){if((e|0)>=(g|0)){d=0;break a}d=c[f+(e<<2)>>2]|0;h=c[d>>2]|0;if((a[h>>0]|0)==(a[b>>0]|0)?(a$(h,b)|0)==0:0)break a;e=e+1|0}}while(0);return d|0}function VJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;if(YL(wx(d,102500)|0)|0)if((a[b>>0]|0)==101?(a$(b,102659)|0)==0:0){d=101;g=6}else{b=102493;g=4}else g=4;if((g|0)==4){d=a[b>>0]|0;if(d<<24>>24==99)if(!(a$(b,102493)|0))g=11;else{d=99;g=6}else g=6}a:do if((g|0)==6){e=20744;while(1){f=c[e>>2]|0;if(!f){g=11;break a}if((a[f>>0]|0)==d<<24>>24?(a$(f,b)|0)==0:0){b=e;break a}e=e+16|0}}while(0);if((g|0)==11)b=WJ(b)|0;return b|0}function WJ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;d=UJ(b)|0;if(!d){f=c[46514]|0;d=f+1|0;c[46514]=d;e=c[46513]|0;if(!e)d=uH(d<<2)|0;else d=wH(e,d<<2)|0;c[46513]=d;d=tH(16)|0;c[(c[46513]|0)+(f<<2)>>2]=d;c[d>>2]=c[5186];c[d+4>>2]=c[5187];c[d+8>>2]=c[5188];c[d+12>>2]=c[5189];e=m1(b)|0;c[d>>2]=e;do if(!0){if((a[b>>0]|0)==99?(a$(b,102493)|0)==0:0){e=1;break}c[g>>2]=c[5186];c[g+4>>2]=e;Ow(0,102664,g)|0;e=0}else e=1;while(0);a[d+12>>0]=e}l=h;return d|0}function XJ(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[b>>3]*.5257311121191336;c=+h[b+8>>3]*.8944271909999159;c=d>c?d:c;h[a>>3]=c*4.97979656976556;h[a+8>>3]=c*4.73606797749979;return}function YJ(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0.0;d=+h[b>>3];k=b+8|0;e=+h[k>>3];c=e/d;if(!(c>.9510565162951536))if(c<.9510565162951536){j=d;e=d*.9510565162951536}else j=d;else j=e*1.0514622242382672;d=j*.5257311121191336;g=j*.20081141588622725;i=j*.05020285397155681;c=.3141592653589793;f=0;while(1){if((f|0)>=10)break;h[a+(f<<4)>>3]=+E(+c)*d;h[a+(f<<4)+8>>3]=+F(+c)*d-i;m=c+.6283185307179586;l=f|1;h[a+(l<<4)>>3]=+E(+m)*g;h[a+(l<<4)+8>>3]=+F(+m)*g-i;c=c+1.2566370614359172;f=f+2|0}h[b>>3]=j;h[k>>3]=e;return}function ZJ(a){a=a|0;a=c[(c[a+16>>2]|0)+12>>2]|0;if(a|0){C_(c[a+44>>2]|0);C_(a)}return}function _J(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+80|0;k=o+40|0;g=o;n=o+64|0;h=o+56|0;if(!(a[e>>0]|0)){g=4208;h=b+40|0;do{c[b>>2]=c[g>>2];b=b+4|0;g=g+4|0}while((b|0)<(h|0))}else{i=(f|0)==0?103330:f;c[n>>2]=15;j=d+16|0;f=c[j>>2]|0;do if(a[(c[f+104>>2]|0)+82>>0]|0){f=ZQ(d,e,n)|0;if(!f){f=c[j>>2]|0;m=8;break}if(mK(d,f,g,i,c[n>>2]|0,0)|0){c[k>>2]=qy(d)|0;c[k+4>>2]=e;c[k+8>>2]=i;Ow(0,103332,k)|0}}else m=8;while(0);if((m|0)==8){if((c[(c[f+8>>2]|0)+8>>2]|0)==1664)h=0;else{c[h>>2]=d;c[h+4>>2]=0}if(mK(d,0,g,e,c[n>>2]|0,h)|0)nK(d,e)}c[g+36>>2]=0;h=b+40|0;do{c[b>>2]=c[g>>2];b=b+4|0;g=g+4|0}while((b|0)<(h|0))}l=o;return}function $J(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0;r=l;l=l+112|0;n=r+96|0;m=r+80|0;p=r+64|0;k=r+48|0;q=r+32|0;o=r;f=r+16|0;if(!a){c[46517]=0;a=0}else{g=c[a+4>>2]|0;a=c[a>>2]|0;i=(c[(c[(dz(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];YG(f,n,i);c[q>>2]=c[f>>2];c[q+4>>2]=c[f+4>>2];c[q+8>>2]=c[f+8>>2];c[q+12>>2]=c[f+12>>2];a:do if(g){d=+h[g+8>>3];e=+h[g+24>>3];s=+h[q>>3];if((+h[g>>3]<=s?s<=+h[g+16>>3]:0)?(j=+h[q+8>>3],d<=j):0)a=j<=e&1;else a=0}else{if((a|0)==(c[46517]|0)){f=c[46518]|0;g=c[46520]|0;i=c[46519]|0}else{g=c[(c[a+16>>2]|0)+12>>2]|0;c[46521]=g;i=c[g+44>>2]|0;c[46519]=i;f=c[g+8>>2]|0;c[46518]=f;g=O((c[g+4>>2]|0)+-1|0,f)|0;g=(g|0)>0?g:0;c[46520]=g;c[46517]=a}a=0;b=0;while(1){if((a|0)>=(f|0)){a=1;break a}t=i+(g+a<<4)|0;c[o>>2]=c[t>>2];c[o+4>>2]=c[t+4>>2];c[o+8>>2]=c[t+8>>2];c[o+12>>2]=c[t+12>>2];t=i+(g+((a+4|0)%(f|0)|0)<<4)|0;c[k>>2]=c[q>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[k+12>>2]=c[q+12>>2];c[p>>2]=c[45844];c[p+4>>2]=c[45845];c[p+8>>2]=c[45846];c[p+12>>2]=c[45847];c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];b=b+((lK(k,p,m,n)|0)==0&1)|0;if((b|0)==2){a=0;break}else a=a+2|0}}while(0)}l=r;return a|0}function aK(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;e=c[b+16>>2]|0;if((a[(c[e+104>>2]|0)+82>>0]|0)!=0?(a[e+145>>0]|0)!=0:0)b=aR(b,d,0,f,g)|0;else b=0;return b|0}function bK(e,f){e=e|0;f=f|0;var i=0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0;P=l;l=l+48|0;H=P+24|0;G=P+16|0;A=P+8|0;z=P;L=P+32|0;n=P+28|0;M=c[e+16>>2]|0;N=M+208|0;i=c[N>>2]|0;if((i|0)==0?(b[M+260>>1]&1)==0:0)J=0;else E=4;if((E|0)==4)if(!(c[e+152>>2]&4)){OO(e,i,c[M+228>>2]|0,c[M+244>>2]|0,c[M+212>>2]|0);J=1}else J=1;I=f+16|0;i=c[I>>2]|0;r=c[i+12>>2]|0;F=c[r+44>>2]|0;K=c[r+8>>2]|0;r=c[r+4>>2]|0;if((c[46515]|0)<(K|0)){i=K+5|0;c[46515]=i;j=c[46516]|0;if(!j)i=uH(i<<4)|0;else i=wH(j,i<<4)|0;c[46516]=i;i=c[I>>2]|0}D=(c[i+104>>2]|0)+56|0;i=i+16|0;c[D>>2]=c[i>>2];c[D+4>>2]=c[i+4>>2];c[D+8>>2]=c[i+8>>2];c[D+12>>2]=c[i+12>>2];D=c[I>>2]|0;B=+h[D+32>>3]*72.0;B=(+h[D+96>>3]+ +h[D+88>>3])/+(~~(B+(B>=0.0?.5:-.5))|0);C=+h[D+40>>3]*72.0;C=+h[D+80>>3]/+(~~(C+(C>=0.0?.5:-.5))|0);D=cK(e,f)|0;c[L>>2]=0;i=d[(c[I>>2]|0)+117>>0]|0;do if(!(i&1)){if(i&2|0){s=NL(f,0,103230)|0;TO(e,s);VO(e,NL(f,0,103238)|0);j=0;i=1;break}if(i&8|0){s=NL(f,0,103246)|0;TO(e,s);VO(e,NL(f,0,103254)|0);j=0;i=1;break}if(i&4|0){s=NL(f,0,103262)|0;TO(e,s);VO(e,NL(f,0,103270)|0);j=0;i=1;break}if(!(D&1))if(!(D&576)){j=0;i=0}else{j=dK(f)|0;i=1}else{j=dK(f)|0;if(!((tG(j,L,n)|0)<<24>>24)){VO(e,j);i=1}else{VO(e,c[L>>2]|0);i=c[L+4>>2]|0;m=JL(f,c[46403]|0,0,0)|0;k=+g[n>>2];if(!i)WO(e,134232,m,k);else WO(e,i,m,k);i=(D&2)>>>1|2}}s=eK(e,f)|0}else{s=NL(f,0,103214)|0;TO(e,s);VO(e,NL(f,0,103222)|0);j=0;i=1}while(0);m=c[(c[I>>2]|0)+8>>2]|0;if(a[m+12>>0]|0){m=c[m>>2]|0;if((a[m>>0]|0)==99){m=(a$(m,102493)|0)==0;E=33}else u=1}else{m=1;E=33}if((E|0)==33){m=m^1;if((r|0)!=0|i<<24>>24==0|m)u=m;else{TO(e,134297);r=1;u=0}}v=(K|0)<3;w=(D&512|0)!=0;y=(D&8|0)==0;x=(D&64|0)==0;p=(D&1024|0)==0;q=(D&2130706444|0)==0;t=0;while(1){if((t|0)>=(r|0))break;n=O(t,K)|0;o=c[46516]|0;m=0;while(1){if((m|0)>=(K|0))break;R=m+n|0;k=+h[F+(R<<4)+8>>3];Q=c[I>>2]|0;h[o+(m<<4)>>3]=+h[Q+16>>3]+ +h[F+(R<<4)>>3]*B;h[o+(m<<4)+8>>3]=+h[Q+24>>3]+k*C;m=m+1|0}do if(v){if(w&(t|0)==0?(z$(j,58)|0)!=0:0)if((RE(e,o,j)|0)>1){c[z>>2]=qy(f)|0;Ow(3,103278,z)|0;i=0}else i=0;YO(e,c[46516]|0,K,i&255);if(!y)fK(e,f)}else{if(!x){if((t|0)==0?(VE(e,o,j,1)|0)>1:0){c[A>>2]=qy(f)|0;Ow(3,103278,A)|0}ZO(e,c[46516]|0,K,0);break}if(!p){TO(e,134297);ZO(e,c[46516]|0,K,i&255);TO(e,s);aP(e,(c[46516]|0)+32|0,2);break}i=i&255;if(q){ZO(e,o,K,i);break}else{DJ(e,o,K,D,i);break}}while(0);t=t+1|0;i=0}m=c[(c[I>>2]|0)+8>>2]|0;if(!(a[m+12>>0]|0)){m=wx(f,105999)|0;if(m|0?a[m>>0]|0:0){o=m;E=65}}else{m=c[m>>2]|0;if((a[m>>0]|0)==99?(a$(m,102493)|0)==0:0){m=wx(f,102500)|0;if(m|0?a[m>>0]|0:0){o=m;E=65}}else{o=m;E=65}}if((E|0)==65){n=c[46516]|0;m=0;while(1){if((m|0)>=(K|0))break;k=+h[F+(m<<4)+8>>3];R=c[I>>2]|0;h[n+(m<<4)>>3]=+h[R+16>>3]+ +h[F+(m<<4)>>3]*B;h[n+(m<<4)+8>>3]=+h[R+24>>3]+k*C;m=m+1|0}m=i&255;do if(!(u|i<<24>>24==0)){if(v){if(w&(t|0)==0?(z$(j,58)|0)!=0:0)if((RE(e,n,j)|0)>1){c[G>>2]=qy(f)|0;Ow(3,103278,G)|0;i=0}else i=0;YO(e,c[46516]|0,K,i&255);if(y)break;fK(e,f);break}if(x)if(!(D&12)){ZO(e,n,K,m);break}else{DJ(e,n,K,D,m);break}else{if((VE(e,n,j,1)|0)>1){c[H>>2]=qy(f)|0;Ow(3,103278,H)|0}ZO(e,c[46516]|0,K,0);break}}while(0);R=c[46516]|0;cP(e,o,R,K,i,ML(f,c[46396]|0,134226)|0)}C_(c[L>>2]|0);nH(e,10,c[(c[I>>2]|0)+104>>2]|0);if(J){if(c[e+152>>2]&4|0)OO(e,c[N>>2]|0,c[M+228>>2]|0,c[M+244>>2]|0,c[M+212>>2]|0);PO(e)}l=P;return}function cK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;e=iK(d,f)|0;if(e|0)XO(b,e);e=c[46402]|0;if((e|0?(g=xx(d,e)|0,g|0):0)?a[g>>0]|0:0)eP(b,+KL(d,c[46402]|0,1.0,0.0));l=h;return c[f>>2]|0}function dK(a){a=a|0;return hK(a,131718)|0}function eK(b,d){b=b|0;d=d|0;d=NL(d,c[46378]|0,191979)|0;d=a[d>>0]|0?d:134232;TO(b,d);return d|0}function fK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0,i=0.0,j=0,k=0,m=0;d=l;l=l+96|0;j=d+80|0;k=d+64|0;e=d+32|0;m=d+16|0;g=d;b=c[b+16>>2]|0;f=+h[b+80>>3];h[m+8>>3]=f*.375;i=+h[b+96>>3];h[m>>3]=i*.6614;b=b+16|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];gK(g,k,j);c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];g=e+8|0;b=e+24|0;h[b>>3]=+h[g>>3];h[e+16>>3]=+h[e>>3]-i*1.3228;aP(a,e,2);f=+h[g>>3]-f*.75;h[g>>3]=f;h[b>>3]=f;aP(a,e,2);l=d;return}function gK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function hK(b,d){b=b|0;d=d|0;var e=0;e=NL(b,c[46379]|0,191979)|0;if(!(a[e>>0]|0)){e=NL(b,c[46378]|0,191979)|0;return ((a[e>>0]|0)==0?d:e)|0}else return e|0;return 0}function iK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=NL(b,c[46387]|0,191979)|0;a:do if(!(a[e>>0]|0)){g=0;e=0}else{g=zF(e)|0;h=g;e=0;b:while(1){f=c[h>>2]|0;if(!f)break a;switch(a[f>>0]|0){case 102:{if(!(a$(f,108075)|0)){h=h+4|0;e=e|1;continue b}break}case 114:{if(!(a$(f,103290)|0)){f=h;do{j=f;f=f+4|0;i=c[f>>2]|0;c[j>>2]=i}while((i|0)!=0);j=h;e=e|4;h=j;continue b}if(!(a$(f,103308)|0)){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|3;h=j;continue b}break}case 100:{if(!(a$(f,103298)|0)){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|8;h=j;continue b}break}case 105:{if(!(a$(f,131253)|0)){h=h+4|0;e=e|32;continue b}break}case 115:{if((a$(f,103315)|0)==0?jK(b)|0:0){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|64;h=j;continue b}break}case 119:{if((a$(f,103323)|0)==0?kK(b)|0:0){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|512;h=j;continue b}break}default:{}}h=h+4|0}}while(0);f=c[(c[(c[b+16>>2]|0)+8>>2]|0)+8>>2]|0;if(f)e=c[f+40>>2]|e;c[d>>2]=e;return g|0}function jK(a){a=a|0;var b=0.0;a=c[(c[(c[a+16>>2]|0)+8>>2]|0)+8>>2]|0;if((((a|0)!=0?(c[a+8>>2]|0)==4:0)?(b=+h[a+16>>3],((~~(b+(b>=0.0?.5:-.5))|0)%90|0|0)==0):0)?+h[a+24>>3]==0.0:0)a=+h[a+32>>3]==0.0&1;else a=0;return a|0}function kK(a){a=a|0;a=c[(c[(c[a+16>>2]|0)+8>>2]|0)+8>>2]|0;if(!a)a=0;else a=(c[a+8>>2]|0)<3&1;return a|0}function lK(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;i=+h[c+8>>3];g=-(+h[d+8>>3]-i);f=+h[c>>3];e=+h[d>>3]-f;f=e*i+f*g;return (+h[a+8>>3]*e+ +h[a>>3]*g-f>=0.0^+h[b>>3]*g-f+ +h[b+8>>3]*e>=0.0^1)&1|0}function mK(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;G=l;l=l+192|0;B=G+176|0;E=G+160|0;m=G+144|0;z=G+128|0;A=G+112|0;n=G+96|0;o=G+80|0;p=G+64|0;v=G+48|0;w=G+32|0;x=G+16|0;D=G;if(!d){c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;m=(c[(c[(dz(b)|0)+16>>2]|0)+116>>2]&1|0)==0;C=c[b+16>>2]|0;q=+h[C+80>>3]*.5;j=+h[C+88>>3];t=m?q:j;q=m?j:q;m=0;C=E;j=0.0;k=-q;r=t;F=E+8|0;s=0.0;t=-t}else{k=+h[d>>3];t=+h[d+8>>3];q=+h[d+16>>3];r=+h[d+24>>3];NJ(m,(q+k)*.5,(r+t)*.5);c[E>>2]=c[m>>2];c[E+4>>2]=c[m+4>>2];c[E+8>>2]=c[m+8>>2];c[E+12>>2]=c[m+12>>2];H=E+8|0;m=1;C=E;j=+h[E>>3];F=H;s=+h[H>>3]}u=(q>r?q:r)*4.0;a:do if((f|0)!=0?(y=a[f>>0]|0,y<<24>>24!=0):0){f=f+1|0;switch(y<<24>>24|0){case 99:{p=1;g=0;f=0;n=0;j=0.0;o=0;break a}case 101:{if(a[f>>0]|0){p=1;g=0;f=0;n=0;j=0.0;o=1;break a}if(!i)h[C>>3]=q;else{oK(z,i,s,u);c[E>>2]=c[z>>2];c[E+4>>2]=c[z+4>>2];c[E+8>>2]=c[z+8>>2];c[E+12>>2]=c[z+12>>2]}p=0;g=g&2;f=0;n=1;j=0.0;o=0;m=1;break a}case 115:{h[F>>3]=t;switch(a[f>>0]|0){case 0:{if(!i)h[C>>3]=j;else{oK(A,i,-u,j);c[E>>2]=c[A>>2];c[E+4>>2]=c[A+4>>2];c[E+8>>2]=c[A+8>>2];c[E+12>>2]=c[A+12>>2]}p=0;g=g&1;f=0;n=1;j=-1.5707963267948966;o=0;m=1;break a}case 101:{if(!i)h[C>>3]=q;else{oK(n,i,-u,u);c[E>>2]=c[n>>2];c[E+4>>2]=c[n+4>>2];c[E+8>>2]=c[n+8>>2];c[E+12>>2]=c[n+12>>2]}p=0;g=g&3;f=0;n=1;j=-.7853981633974483;o=0;m=1;break a}case 119:{if(!i)h[C>>3]=k;else{u=-u;oK(o,i,u,u);c[E>>2]=c[o>>2];c[E+4>>2]=c[o+4>>2];c[E+8>>2]=c[o+8>>2];c[E+12>>2]=c[o+12>>2]}p=0;g=g&9;f=0;n=1;j=-2.356194490192345;o=0;m=1;break a}default:{h[F>>3]=s;p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}case 119:{if(a[f>>0]|0){p=1;g=0;f=0;n=0;j=0.0;o=1;break a}if(!i)h[C>>3]=k;else{oK(p,i,s,-u);c[E>>2]=c[p>>2];c[E+4>>2]=c[p+4>>2];c[E+8>>2]=c[p+8>>2];c[E+12>>2]=c[p+12>>2]}p=0;g=g&8;f=0;n=1;j=3.141592653589793;o=0;m=1;break a}case 110:{h[F>>3]=r;switch(a[f>>0]|0){case 0:{if(!i)h[C>>3]=j;else{oK(v,i,u,j);c[E>>2]=c[v>>2];c[E+4>>2]=c[v+4>>2];c[E+8>>2]=c[v+8>>2];c[E+12>>2]=c[v+12>>2]}p=0;g=g&4;f=0;n=1;j=1.5707963267948966;o=0;m=1;break a}case 101:{if(!i)h[C>>3]=q;else{oK(w,i,u,u);c[E>>2]=c[w>>2];c[E+4>>2]=c[w+4>>2];c[E+8>>2]=c[w+8>>2];c[E+12>>2]=c[w+12>>2]}p=0;g=g&6;f=0;n=1;j=.7853981633974483;o=0;m=1;break a}case 119:{if(!i)h[C>>3]=k;else{oK(x,i,u,-u);c[E>>2]=c[x>>2];c[E+4>>2]=c[x+4>>2];c[E+8>>2]=c[x+8>>2];c[E+12>>2]=c[x+12>>2]}p=0;g=g&12;f=0;n=1;j=2.356194490192345;o=0;m=1;break a}default:{h[F>>3]=s;p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}case 95:{p=1;f=1;n=0;j=0.0;o=0;break a}default:{p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}else{p=1;g=0;f=0;n=0;j=0.0;o=0}while(0);H=(c[(c[(dz(b)|0)+16>>2]|0)+116>>2]&3)*90|0;c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];XG(D,B,H);c[E>>2]=c[D>>2];c[E+4>>2]=c[D+4>>2];c[E+8>>2]=c[D+8>>2];c[E+12>>2]=c[D+12>>2];if(!(f<<24>>24))g=pK(g,c[(c[(dz(b)|0)+16>>2]|0)+116>>2]&3)|0;a[e+33>>0]=g;c[e+24>>2]=d;k=+h[C>>3];h[e>>3]=+(~~(k+(k>=0.0?.5:-.5))|0);k=+h[F>>3];h[e+8>>3]=+(~~(k+(k>=0.0?.5:-.5))|0);h[e+16>>3]=+qK(j,c[(c[(dz(b)|0)+16>>2]|0)+116>>2]&3);k=+h[C>>3];j=+h[F>>3];if(k==0.0&j==0.0)g=-128;else{u=+K(+j,+k);t=u+4.71238898038469;g=~~((!(t>=6.283185307179586)?t:u+-1.5707963267948966)*40.74366543152521)&255}a[e+32>>0]=g;a[e+29>>0]=n;a[e+28>>0]=m;a[e+30>>0]=p;a[e+31>>0]=f;l=G;return o|0}function nK(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=qy(a)|0;c[e+4>>2]=b;Ow(0,103393,e)|0;l=d;return}function oK(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+128|0;g=p+112|0;j=p+48|0;k=p+16|0;m=p+32|0;n=p;o=c[b>>2]|0;i=c[(c[(dz(o)|0)+16>>2]|0)+116>>2]&3;h[k>>3]=e;h[k+8>>3]=d;f=(i|0)!=0;if(f){c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];XG(m,g,i*90|0);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2]}m=j+48|0;q=j+32|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;c[j+16>>2]=0;c[j+20>>2]=0;c[j+24>>2]=0;c[j+28>>2]=0;c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[q+8>>2]=c[k+8>>2];c[q+12>>2]=c[k+12>>2];c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];LK(b,c[(c[(c[(c[o+16>>2]|0)+8>>2]|0)+4>>2]|0)+12>>2]|0,j,1);if(f){c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];YG(n,g,i*90|0);c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2]};c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];l=p;return}function pK(a,b){a=a|0;b=b|0;a:do switch(b|0){case 3:switch(a|0){case 4:{a=2;break a}case 1:{a=8;break a}case 8:{a=1;break a}case 2:{a=4;break a}default:break a}case 2:switch(a|0){case 4:{a=1;break a}case 1:{a=4;break a}default:break a}case 1:switch(a|0){case 4:{a=2;break a}case 1:{a=8;break a}case 8:{a=4;break a}case 2:{a=1;break a}default:break a}default:{}}while(0);return a|0}function qK(a,b){a=+a;b=b|0;switch(b|0){case 3:{if(!(a==3.141592653589793))if(!(a==2.356194490192345))if(!(a==1.5707963267948966))if(!(a==0.0))if(!(a==-.7853981633974483)){if(a==-1.5707963267948966)a=3.141592653589793}else a=2.356194490192345;else a=1.5707963267948966;else a=0.0;else a=-.7853981633974483;else a=-1.5707963267948966;break}case 2:{a=-a;break}case 1:{a=a+-1.5707963267948966;break}default:{}}return +a}function rK(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0.0,i=0,j=0,k=0;e=l;l=l+32|0;k=e+16|0;i=e;a=c[a>>2]|0;j=(c[(c[(dz(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];YG(i,k,j);d=+h[i>>3];g=+h[i+8>>3];a=c[a+16>>2]|0;f=+h[a+80>>3]*.5;if(!(!(g>=-f)|!(g<=f))?d>=-+h[a+88>>3]:0)a=d<=+h[a+96>>3]&1;else a=0;l=e;return a|0}function sK(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+32|0;m=n;i=c[a+16>>2]|0;j=i+208|0;g=c[j>>2]|0;if(!g)k=(b[i+260>>1]&1)!=0;else k=1;e=d+16|0;d=c[e>>2]|0;f=c[d+12>>2]|0;if(f|0){if(k?(c[a+152>>2]&4|0)==0:0){OO(a,g,c[i+228>>2]|0,c[i+244>>2]|0,c[i+212>>2]|0);d=c[e>>2]|0}g=c[a+36>>2]|0;p=+h[d+24>>3]+ +(c[f+8>>2]|0);o=c[f>>2]|0;h[m>>3]=+h[d+16>>3]+ +(c[f+4>>2]|0);h[m+8>>3]=p;c[m+16>>2]=o;f1(g,103424,m)|0;g=c[e>>2]|0;m=(c[g+104>>2]|0)+56|0;g=g+16|0;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];nH(a,10,c[(c[e>>2]|0)+104>>2]|0);if(k){if(c[a+152>>2]&4|0)OO(a,c[j>>2]|0,c[i+228>>2]|0,c[i+244>>2]|0,c[i+212>>2]|0);PO(a)}}l=n;return}function tK(a){a=a|0;QJ(c[(c[a+16>>2]|0)+12>>2]|0);return}function uK(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0;m=l;l=l+64|0;k=m+40|0;h=m;if(!(a[f>>0]|0)){h=4208;g=b+40|0;do{c[b>>2]=c[h>>2];b=b+4|0;h=h+4|0}while((b|0)<(g|0))}else{g=(g|0)==0?103330:g;i=c[(c[e+16>>2]|0)+12>>2]|0;j=AK(i,f)|0;if(!j){if(mK(e,i+16|0,h,f,15,0)|0)nK(e,f)}else if(mK(e,j+16|0,h,g,d[j+65>>0]|0,0)|0){c[k>>2]=qy(e)|0;c[k+4>>2]=f;c[k+8>>2]=g;Ow(0,103332,k)|0}g=b+40|0;do{c[b>>2]=c[h>>2];b=b+4|0;h=h+4|0}while((b|0)<(g|0))}l=m;return}function vK(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,m=0,n=0.0;k=l;l=l+32|0;m=k+16|0;i=k;f=c[a+4>>2]|0;a=c[a>>2]|0;g=(c[(c[(dz(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];YG(i,m,g);c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];if(!f){f=c[(c[a+16>>2]|0)+12>>2]|0;g=f+16|0;a=f+24|0;i=f+32|0;f=f+40|0}else{g=f;a=f+8|0;i=f+16|0;f=f+24|0}e=+h[a>>3];d=+h[f>>3];n=+h[b>>3];if((+h[g>>3]<=n?n<=+h[i>>3]:0)?(j=+h[b+8>>3],e<=j):0)a=j<=d&1;else a=0;l=k;return a|0}function wK(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0.0;u=l;l=l+80|0;r=u+64|0;q=u+32|0;t=u;a:do if(!(a[d+28>>0]|0))e=0;else{i=+h[d>>3];p=b+16|0;m=c[(c[p>>2]|0)+12>>2]|0;k=m+48|0;m=m+56|0;d=0;while(1){if((d|0)>=(c[k>>2]|0))break a;n=(c[(c[(dz(b)|0)+16>>2]|0)+116>>2]&1|0)==0;o=c[(c[m>>2]|0)+(d<<2)>>2]|0;j=+(~~+h[(n?o+16|0:o+24|0)>>3]|0);if(i>=j?(s=+(~~+h[(n?o+32|0:o+40|0)>>3]|0),i<=s):0)break;d=d+1|0}if(!(c[(c[(dz(b)|0)+16>>2]|0)+116>>2]&1)){t=c[p>>2]|0;v=+h[t+16>>3];h[f>>3]=v+j;j=+h[t+24>>3];i=+h[t+80>>3];h[f+8>>3]=j-i*.5;h[f+16>>3]=v+s}else{o=(c[(c[m>>2]|0)+(d<<2)>>2]|0)+16|0;b=(c[p>>2]|0)+16|0;c[q>>2]=c[o>>2];c[q+4>>2]=c[o+4>>2];c[q+8>>2]=c[o+8>>2];c[q+12>>2]=c[o+12>>2];c[q+16>>2]=c[o+16>>2];c[q+20>>2]=c[o+20>>2];c[q+24>>2]=c[o+24>>2];c[q+28>>2]=c[o+28>>2];c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];ZG(t,q,r);c[f>>2]=c[t>>2];c[f+4>>2]=c[t+4>>2];c[f+8>>2]=c[t+8>>2];c[f+12>>2]=c[t+12>>2];c[f+16>>2]=c[t+16>>2];c[f+20>>2]=c[t+20>>2];c[f+24>>2]=c[t+24>>2];c[f+28>>2]=c[t+28>>2];t=c[p>>2]|0;i=+h[t+80>>3];j=+h[t+24>>3]}h[f+24>>3]=i*.5+j;c[g>>2]=1}while(0);l=u;return e|0}function xK(d,e){d=d|0;e=e|0;var f=0,i=0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;w=l;l=l+144|0;n=w+96|0;p=w+64|0;r=w;s=w+128|0;t=c[d+16>>2]|0;u=t+208|0;f=c[u>>2]|0;if(!f)v=(b[t+260>>1]&1)!=0;else v=1;m=e+16|0;q=c[m>>2]|0;o=c[q+12>>2]|0;j=o+16|0;c[p>>2]=c[j>>2];c[p+4>>2]=c[j+4>>2];c[p+8>>2]=c[j+8>>2];c[p+12>>2]=c[j+12>>2];c[p+16>>2]=c[j+16>>2];c[p+20>>2]=c[j+20>>2];c[p+24>>2]=c[j+24>>2];c[p+28>>2]=c[j+28>>2];x=+h[q+16>>3];h[p>>3]=+h[p>>3]+x;k=+h[q+24>>3];q=p+8|0;h[q>>3]=+h[q>>3]+k;q=p+16|0;h[q>>3]=+h[q>>3]+x;j=p+24|0;h[j>>3]=+h[j>>3]+k;if(v?(c[d+152>>2]&4|0)==0:0)OO(d,f,c[t+228>>2]|0,c[t+244>>2]|0,c[t+212>>2]|0);f=cK(d,e)|0;eK(d,e)|0;c[s>>2]=0;if(!(f&1))i=0;else{i=dK(e)|0;if(!((tG(i,s,n)|0)<<24>>24)){VO(d,i);i=1}else{VO(d,c[s>>2]|0);i=c[s+4>>2]|0;j=JL(e,c[46403]|0,0,0)|0;k=+g[n>>2];if(!i)WO(d,134232,j,k);else WO(d,i,j,k);i=f>>>1&1|2}}j=c[c[(c[m>>2]|0)+8>>2]>>2]|0;if((a[j>>0]|0)==77){m=(a$(j,103201)|0)==0;f=m?f|4:f}if(!(f&2130706444)){c[n>>2]=c[p>>2];c[n+4>>2]=c[p+4>>2];c[n+8>>2]=c[p+8>>2];c[n+12>>2]=c[p+12>>2];c[n+16>>2]=c[p+16>>2];c[n+20>>2]=c[p+20>>2];c[n+24>>2]=c[p+24>>2];c[n+28>>2]=c[p+28>>2];_O(d,n,i)}else{c[r>>2]=c[p>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];p=r+32|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];h[r+16>>3]=+h[p>>3];h[r+24>>3]=+h[r+8>>3];h[r+48>>3]=+h[r>>3];h[r+56>>3]=+h[r+40>>3];DJ(d,r,4,f,i)}yK(d,e,o);C_(c[s>>2]|0);if(v){if(c[d+152>>2]&4|0)OO(d,c[u>>2]|0,c[t+228>>2]|0,c[t+244>>2]|0,c[t+212>>2]|0);PO(d)}l=w;return}function yK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+144|0;p=u+128|0;o=u+112|0;q=u+16|0;r=u;g=u+96|0;i=u+80|0;s=u+64|0;t=u+48|0;j=e+52|0;f=c[j>>2]|0;if(!f)f=d+16|0;else{n=f+56|0;m=e+16|0;f=e+32|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];zK(g,o,p);f=d+16|0;m=(c[f>>2]|0)+16|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[p>>2]=c[m>>2];c[p+4>>2]=c[m+4>>2];c[p+8>>2]=c[m+8>>2];c[p+12>>2]=c[m+12>>2];gK(i,o,p);c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];nH(b,10,c[j>>2]|0);eK(b,d)|0}k=(c[f>>2]|0)+16|0;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];c[r+8>>2]=c[k+8>>2];c[r+12>>2]=c[k+12>>2];k=e+48|0;m=e+64|0;n=q+16|0;j=e+56|0;e=q+16|0;i=0;while(1){if((i|0)>=(c[k>>2]|0))break;if((i|0)>0){f=(c[j>>2]|0)+(i<<2)|0;g=c[f>>2]|0;if(!(a[m>>0]|0)){g=g+32|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];h[q>>3]=+h[(c[f>>2]|0)+16>>3];f=n;g=0}else{g=g+16|0;c[q>>2]=c[g>>2];c[q+4>>2]=c[g+4>>2];c[q+8>>2]=c[g+8>>2];c[q+12>>2]=c[g+12>>2];h[e>>3]=+h[q>>3];f=(c[f>>2]|0)+32|0;g=1}h[q+(g<<4)+8>>3]=+h[f+8>>3];c[o>>2]=c[q>>2];c[o+4>>2]=c[q+4>>2];c[o+8>>2]=c[q+8>>2];c[o+12>>2]=c[q+12>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];gK(s,o,p);c[q>>2]=c[s>>2];c[q+4>>2]=c[s+4>>2];c[q+8>>2]=c[s+8>>2];c[q+12>>2]=c[s+12>>2];c[o>>2]=c[n>>2];c[o+4>>2]=c[n+4>>2];c[o+8>>2]=c[n+8>>2];c[o+12>>2]=c[n+12>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];gK(t,o,p);c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];aP(b,q,2)}yK(b,d,c[(c[j>>2]|0)+(i<<2)>>2]|0);i=i+1|0}l=u;return}function zK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function AK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=c[b+60>>2]|0;if(!(((e|0)!=0?(a[e>>0]|0)==(a[d>>0]|0):0)?(a$(e,d)|0)==0:0))f=4;a:do if((f|0)==4){g=b+56|0;f=c[b+48>>2]|0;e=0;while(1){if((e|0)>=(f|0)){b=0;break a}b=AK(c[(c[g>>2]|0)+(e<<2)>>2]|0,d)|0;if(!b)e=e+1|0;else break}}while(0);return b|0}function BK(a,b){a=a|0;b=b|0;var d=0;d=b+8|0;h[d>>3]=+h[d>>3]*1.375;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function CK(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;k=+h[b>>3];f=k*.5;m=+h[b+8>>3];i=m*.5;h[a>>3]=f;e=m*.40909090909090906;h[a+8>>3]=e;h[a+16>>3]=f;g=m*.4592530909090909;h[a+24>>3]=g;j=k*.275892;h[a+32>>3]=j;h[a+40>>3]=i;h[a+48>>3]=0.0;h[a+56>>3]=i;k=k*-.275892;h[a+64>>3]=k;h[a+72>>3]=i;l=-f;h[a+80>>3]=l;h[a+88>>3]=g;d=a+96|0;h[d>>3]=l;h[a+104>>3]=e;b=a+112|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=a+128|0;h[b>>3]=l;h[a+136>>3]=m*-.40909090909090906;d=a+144|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];h[a+160>>3]=l;g=-g;h[a+168>>3]=g;h[a+176>>3]=k;i=-i;h[a+184>>3]=i;h[a+192>>3]=0.0;h[a+200>>3]=i;h[a+208>>3]=j;h[a+216>>3]=i;h[a+224>>3]=f;h[a+232>>3]=g;d=a+240|0;h[d>>3]=f;h[a+248>>3]=-e;b=a+256|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=a+288|0;d=a+272|0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];return}function DK(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+144|0;u=x+112|0;t=x+96|0;v=x+80|0;s=x+64|0;w=x+32|0;q=x+16|0;r=x;g=x+48|0;do if(a){j=c[a+4>>2]|0;k=c[a>>2]|0;o=(c[(c[(dz(k)|0)+16>>2]|0)+116>>2]&3)*90|0;c[u>>2]=c[b>>2];c[u+4>>2]=c[b+4>>2];c[u+8>>2]=c[b+8>>2];c[u+12>>2]=c[b+12>>2];YG(g,u,o);c[w>>2]=c[g>>2];c[w+4>>2]=c[g+4>>2];c[w+8>>2]=c[g+8>>2];c[w+12>>2]=c[g+12>>2];if(j|0){d=+h[w>>3];if(!(+h[j>>3]<=d)){a=0;break}if(!(d<=+h[j+16>>3])){a=0;break}d=+h[w+8>>3];if(!(+h[j+8>>3]<=d)){a=0;break}a=d<=+h[j+24>>3];break}if((k|0)==(c[46522]|0)){d=+h[22924];e=+h[22925];i=+h[22926]}else{a=k+16|0;b=c[(c[a>>2]|0)+12>>2]|0;c[46523]=b;c[46524]=c[b+44>>2];c[46525]=c[b+8>>2];if(!(c[b+40>>2]&2048)){n=(c[(c[(dz(k)|0)+16>>2]|0)+116>>2]&1|0)==0;o=c[a>>2]|0;h[(n?183416:183424)>>3]=+h[o+96>>3]+ +h[o+88>>3];h[(n?183424:183416)>>3]=+h[o+80>>3];i=+h[o+32>>3]*72.0;f=+h[o+40>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0);i=+(~~(i+(i>=0.0?.5:-.5))|0)}else{iM(u,b);i=+h[u+16>>3]-+h[u>>3];f=+h[u+24>>3]-+h[u+8>>3];o=(c[(c[(dz(k)|0)+16>>2]|0)+116>>2]&1|0)==0;h[(o?183416:183424)>>3]=i;h[(o?183424:183416)>>3]=f}d=+h[22927];if(d==0.0){h[22927]=1.0;d=1.0}e=+h[22928];if(e==0.0){h[22928]=1.0;e=1.0}d=i/d;h[22924]=d;e=f/e;h[22925]=e;i=i*.5;h[22926]=i;h[22929]=f*.5;o=O((c[(c[46523]|0)+4>>2]|0)+-1|0,c[46525]|0)|0;c[46526]=(o|0)>0?o:0;c[46522]=k}f=+h[w>>3]*d;h[w>>3]=f;o=w+8|0;d=+h[o>>3]*e;h[o>>3]=d;if(!(+B(+f)>i)?(e=+B(+d),p=+h[22929],!(e>p)):0){o=c[46525]|0;if((o|0)<3){a=+t$(f/i,d/p)<1.0;break}b=(c[46527]|0)%(o|0)|0;a=(b+1|0)%(o|0)|0;k=c[46524]|0;m=c[46526]|0;n=k+(m+b<<4)|0;c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];n=k+(m+a<<4)|0;c[r>>2]=c[n>>2];c[r+4>>2]=c[n+4>>2];c[r+8>>2]=c[n+8>>2];c[r+12>>2]=c[n+12>>2];c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[v>>2]=c[45860];c[v+4>>2]=c[45861];c[v+8>>2]=c[45862];c[v+12>>2]=c[45863];c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];c[u>>2]=c[n>>2];c[u+4>>2]=c[n+4>>2];c[u+8>>2]=c[n+8>>2];c[u+12>>2]=c[n+12>>2];if(lK(s,v,t,u)|0){c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[v>>2]=c[q>>2];c[v+4>>2]=c[q+4>>2];c[v+8>>2]=c[q+8>>2];c[v+12>>2]=c[q+12>>2];c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];c[u>>2]=c[45860];c[u+4>>2]=c[45861];c[u+8>>2]=c[45862];c[u+12>>2]=c[45863];n=(lK(s,v,t,u)|0)!=0;if(n?(c[s>>2]=c[w>>2],c[s+4>>2]=c[w+4>>2],c[s+8>>2]=c[w+8>>2],c[s+12>>2]=c[w+12>>2],c[v>>2]=c[r>>2],c[v+4>>2]=c[r+4>>2],c[v+8>>2]=c[r+8>>2],c[v+12>>2]=c[r+12>>2],c[t>>2]=c[45860],c[t+4>>2]=c[45861],c[t+8>>2]=c[45862],c[t+12>>2]=c[45863],c[u>>2]=c[q>>2],c[u+4>>2]=c[q+4>>2],c[u+8>>2]=c[q+8>>2],c[u+12>>2]=c[q+12>>2],(lK(s,v,t,u)|0)!=0):0){a=1;break}else{j=b;b=1}while(1){if((b|0)>=(o|0)){b=31;break}if(n){g=a;a=(a+1|0)%(o|0)|0}else{g=(j+-1+o|0)%(o|0)|0;a=j}q=k+(m+g<<4)|0;r=k+(m+a<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[v>>2]=c[45860];c[v+4>>2]=c[45861];c[v+8>>2]=c[45862];c[v+12>>2]=c[45863];c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];c[u>>2]=c[r>>2];c[u+4>>2]=c[r+4>>2];c[u+8>>2]=c[r+8>>2];c[u+12>>2]=c[r+12>>2];if(!(lK(s,v,t,u)|0)){b=30;break}else{j=g;b=b+1|0}}if((b|0)==30){c[46527]=g;a=0;break}else if((b|0)==31){c[46527]=j;a=1;break}}else a=0}else a=0}else{c[46522]=0;a=0}while(0);l=x;return a&1|0}function EK(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0;j=l;l=l+32|0;f=j+16|0;i=j;if(a){a=c[a>>2]|0;k=(c[(c[(dz(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];YG(i,f,k);g=+h[i>>3];e=+h[i+8>>3];if((a|0)==(c[46530]|0))d=+h[22932];else{i=c[(c[a+16>>2]|0)+12>>2]|0;k=(c[i+4>>2]<<1)+-2|0;d=+h[(c[i+44>>2]|0)+((((k|0)>0?k:0)|1)<<4)>>3];h[22932]=d;c[46530]=a}if(+B(+g)>d|+B(+e)>d)a=0;else a=+t$(g,e)<=d&1}else{c[46530]=0;a=0}l=j;return a|0}function FK(e,f){e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0,w=0;t=l;l=l+16|0;j=t;r=c[e+16>>2]|0;s=r+208|0;g=c[s>>2]|0;if((g|0)==0?(b[r+260>>1]&1)==0:0)q=0;else if(!(c[e+152>>2]&4)){OO(e,g,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0);q=1}else q=1;n=f+16|0;k=c[(c[n>>2]|0)+12>>2]|0;o=c[k+44>>2]|0;p=c[k+8>>2]|0;k=c[k+4>>2]|0;if((c[46528]|0)<(p|0)){g=p+2|0;c[46528]=g;i=c[46529]|0;if(!i)g=uH(g<<4)|0;else g=wH(i,g<<4)|0;c[46529]=g}iK(f,j)|0;if(!(c[j>>2]&32))XO(e,21916);else XO(e,21912);g=c[46402]|0;if(g|0)eP(e,+KL(f,g,1.0,0.0));g=d[(c[n>>2]|0)+117>>0]|0;do if(!(g&1)){if(g&2|0){TO(e,NL(f,0,103230)|0);g=NL(f,0,103238)|0;VO(e,g);break}if(g&8|0){TO(e,NL(f,0,103246)|0);g=NL(f,0,103254)|0;VO(e,g);break}if(!(g&4)){g=hK(f,134232)|0;VO(e,g);eK(e,f)|0;break}else{TO(e,NL(f,0,103262)|0);g=NL(f,0,103270)|0;VO(e,g);break}}else{TO(e,NL(f,0,103214)|0);g=NL(f,0,103222)|0;VO(e,g)}while(0);if(!k)if(!(a[g>>0]|0))i=1;else{TO(e,g);i=1}else i=k;j=1;f=0;while(1){if((f|0)>=(i|0))break;k=O(f,p)|0;m=c[46529]|0;g=0;while(1){if((g|0)>=(p|0))break;w=g+k|0;u=+h[o+(w<<4)+8>>3];v=c[n>>2]|0;h[m+(g<<4)>>3]=+h[v+16>>3]+ +h[o+(w<<4)>>3];h[m+(g<<4)+8>>3]=+h[v+24>>3]+u;g=g+1|0}YO(e,m,p,j);j=0;f=f+1|0}if(q){if(c[e+152>>2]&4|0)OO(e,c[s>>2]|0,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0);PO(e)}l=t;return}function GK(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;g=l;l=l+48|0;h=g;e=HK(b,e,f)|0;c[h+36>>2]=c[f+36>>2];mK(b,c[f+24>>2]|0,h,e,d[f+33>>0]|0,0)|0;b=h;e=a+40|0;do{c[a>>2]=c[b>>2];a=a+4|0;b=b+4|0}while((a|0)<(e|0));l=g;return}function HK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0;z=l;l=l+32|0;y=z;g=z+24|0;k=z+16|0;x=c[(c[(c[(dz(b)|0)+60>>2]|0)+16>>2]|0)+116>>2]&3;f=b+16|0;w=(c[f>>2]|0)+16|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];IK(g,y,x);w=(c[d+16>>2]|0)+16|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];IK(k,y,x);x=a[e+33>>0]|0;y=x&255;a:do switch(x<<24>>24){case 0:case 15:{d=0;break}default:{d=c[e+24>>2]|0;if(!d){x=(c[(c[(dz(b)|0)+16>>2]|0)+116>>2]&1|0)==0;w=c[f>>2]|0;B=+h[w+80>>3]*.5;A=-B;m=+h[w+88>>3];j=-m;n=x?j:A;i=x?m:B;m=x?B:m;j=x?A:j}else{n=+h[d>>3];i=+h[d+16>>3];m=+h[d+24>>3];j=+h[d+8>>3]}x=c[g>>2]|0;v=c[g+4>>2]|0;w=c[k>>2]|0;s=c[k+4>>2]|0;t=~~j;u=~~((i+n)*.5);r=~~i;q=~~((m+j)*.5);p=~~m;o=~~n;g=0;k=0;d=0;e=0;b=0;while(1){if((k|0)==4)break a;if(1<>2]|0;else f=g}else f=g;g=f;k=k+1|0}}}while(0);l=z;return d|0}function IK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;switch(d|0){case 0:{f=+h[b>>3];e=+h[b+8>>3];break}case 2:{f=+h[b>>3];e=-+h[b+8>>3];break}case 1:{f=-+h[b+8>>3];e=+h[b>>3];break}case 3:{f=+h[b+8>>3];e=+h[b>>3];break}default:{f=0.0;e=0.0}}c[a>>2]=~~(f+(f>=0.0?.5:-.5));c[a+4>>2]=~~(e+(e>=0.0?.5:-.5));return}function JK(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;f=i+40|0;h=i;g=b+16|0;e=c[g>>2]|0;d=e+16|0;if(a[e+47>>0]|0){e=c[b>>2]&3;GK(f,c[((e|0)==3?b:b+48|0)+40>>2]|0,c[((e|0)==2?b:b+-48|0)+40>>2]|0,d);e=f;f=d+40|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));e=c[g>>2]|0}d=e+56|0;if(a[e+87>>0]|0){e=c[b>>2]&3;GK(h,c[((e|0)==2?b:b+-48|0)+40>>2]|0,c[((e|0)==3?b:b+48|0)+40>>2]|0,d);e=h;f=d+40|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0))}l=i;return}function KK(){var a=0,b=0,d=0;a=l;l=l+32|0;b=a+16|0;d=a;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];DK(0,b)|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];EK(0,b)|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];$J(0,b)|0;l=a;return}function LK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=l;l=l+192|0;s=z+176|0;x=z+112|0;y=z+48|0;t=z+32|0;u=z+24|0;v=z+16|0;w=z;if(!(e<<24>>24)){k=d+48|0;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];k=u;m=v;n=x;o=0}else{c[t>>2]=c[d>>2];c[t+4>>2]=c[d+4>>2];c[t+8>>2]=c[d+8>>2];c[t+12>>2]=c[d+12>>2];k=v;m=u;n=0;o=x}h[u>>3]=0.0;h[v>>3]=1.0;q=t+8|0;f=0.0;g=1.0;j=0;p=+h[t>>3];while(1){r=+h[q>>3];f=(f+g)*.5;WL(w,d,3,f,n,o);c[t>>2]=c[w>>2];c[t+4>>2]=c[w+4>>2];c[t+8>>2]=c[w+8>>2];c[t+12>>2]=c[w+12>>2];c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];a:do if(!((lb[b&127](a,s)|0)<<24>>24)){e=0;while(1){if((e|0)==4){e=k;j=1;break a}j=y+(e<<4)|0;A=x+(e<<4)|0;c[j>>2]=c[A>>2];c[j+4>>2]=c[A+4>>2];c[j+8>>2]=c[A+8>>2];c[j+12>>2]=c[A+12>>2];e=e+1|0}}else e=m;while(0);h[e>>3]=f;i=+h[t>>3];p=p-i;if(!((p>=0.0?p:-p)>.5)?(r=r-+h[q>>3],!((r>=0.0?r:-r)>.5)):0)break;f=+h[u>>3];g=+h[v>>3];p=i}b:do if(!(j<<24>>24)){e=0;while(1){if((e|0)==4)break b;A=d+(e<<4)|0;y=x+(e<<4)|0;c[A>>2]=c[y>>2];c[A+4>>2]=c[y+4>>2];c[A+8>>2]=c[y+8>>2];c[A+12>>2]=c[y+12>>2];e=e+1|0}}else{e=0;while(1){if((e|0)==4)break b;A=d+(e<<4)|0;x=y+(e<<4)|0;c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];e=e+1|0}}while(0);l=z;return}function MK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0;m=l;l=l+48|0;d=m+16|0;e=m;f=m+32|0;g=a+16|0;i=c[g>>2]|0;j=c[i+8>>2]|0;if(j|0?(k=j+4|0,c[(c[k>>2]|0)+12>>2]|0):0){c[f>>2]=a;c[f+4>>2]=0;n=+h[i+96>>3];h[e>>3]=+h[b>>3]-+h[i+16>>3];h[e+8>>3]=+h[b+8>>3]-+h[i+24>>3];k=c[(c[k>>2]|0)+12>>2]|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];k=lb[k&127](f,d)|0;h[(c[g>>2]|0)+96>>3]=n;NK(f,a,b,k)}l=m;return}function NK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0,n=0;n=l;l=l+64|0;m=n;j=b+16|0;g=c[j>>2]|0;k=+h[g+96>>3];i=g+16|0;f=g+24|0;b=0;while(1){if((b|0)==4)break;h[m+(b<<4)>>3]=+h[d+(b<<4)>>3]-+h[i>>3];h[m+(b<<4)+8>>3]=+h[d+(b<<4)+8>>3]-+h[f>>3];b=b+1|0}LK(a,c[(c[(c[g+8>>2]|0)+4>>2]|0)+12>>2]|0,m,e);b=0;while(1){if((b|0)==4)break;e=c[j>>2]|0;h[d+(b<<4)>>3]=+h[e+16>>3]+ +h[m+(b<<4)>>3];h[d+(b<<4)+8>>3]=+h[e+24>>3]+ +h[m+(b<<4)+8>>3];b=b+1|0}h[(c[j>>2]|0)+96>>3]=k;l=n;return}function OK(b,d){b=b|0;d=d|0;var e=0,f=0;while(1){f=b+16|0;b=c[f>>2]|0;if(!(a[b+112>>0]|0))break;b=c[b+116>>2]|0}b=c[b+8>>2]|0;if(!b){b=tH(40)|0;c[(c[f>>2]|0)+8>>2]=b}e=c[b>>2]|0;if(!e)b=uH(((c[b+4>>2]|0)*48|0)+48|0)|0;else b=wH(e,((c[b+4>>2]|0)*48|0)+48|0)|0;f=c[(c[f>>2]|0)+8>>2]|0;c[f>>2]=b;f=f+4|0;e=c[f>>2]|0;c[f>>2]=e+1;f=b+(e*48|0)|0;c[f>>2]=tH(d<<4)|0;c[b+(e*48|0)+4>>2]=d;b=b+(e*48|0)+8|0;e=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(e|0));return f|0}function PK(b,e,f,g,i){b=b|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0;D=l;l=l+96|0;A=D+16|0;u=D;x=D+92|0;y=D+88|0;v=D+80|0;m=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;z=dz(m)|0;B=OK(b,g)|0;n=b;while(1){o=c[n+16>>2]|0;if(!(a[o+112>>0]|0))break;n=c[o+116>>2]|0}if((a[i+8>>0]|0)==0?(j=c[m+16>>2]|0,k=c[e+16>>2]|0,(c[j+232>>2]|0)==(c[k+232>>2]|0)):0){p=(c[j+236>>2]|0)>(c[k+236>>2]|0);w=p?m:e;m=p?e:m}else w=e;if((m|0)==(c[((c[n>>2]&3|0)==3?n:n+48|0)+40>>2]|0)){j=o+80|0;k=o+40|0;p=d[o+86>>0]|0;e=d[o+46>>0]|0}else{j=o+40|0;k=o+80|0;p=d[o+46>>0]|0;e=d[o+86>>0]|0}o=c[j>>2]|0;j=c[k>>2]|0;if(((e|0)!=0?(r=m+16|0,q=c[(c[r>>2]|0)+8>>2]|0,(q|0)!=0):0)?(c[(c[q+4>>2]|0)+12>>2]|0)!=0:0){c[v>>2]=m;c[v+4>>2]=j;j=g+-4|0;e=u+8|0;k=0;while(1){if((k|0)>=(j|0))break;n=k+3|0;q=c[r>>2]|0;h[u>>3]=+h[f+(n<<4)>>3]-+h[q+16>>3];h[e>>3]=+h[f+(n<<4)+8>>3]-+h[q+24>>3];q=c[(c[(c[q+8>>2]|0)+4>>2]|0)+12>>2]|0;c[A>>2]=c[u>>2];c[A+4>>2]=c[u+4>>2];c[A+8>>2]=c[u+8>>2];c[A+12>>2]=c[u+12>>2];if(!((lb[q&127](v,A)|0)<<24>>24))break;else k=n}c[x>>2]=k;NK(v,m,f+(k<<4)|0,1)}else{c[x>>2]=0;k=0}if(((p|0)!=0?(t=w+16|0,s=c[(c[t>>2]|0)+8>>2]|0,(s|0)!=0):0)?(c[(c[s+4>>2]|0)+12>>2]|0)!=0:0){c[v>>2]=w;c[v+4>>2]=o;m=g+-4|0;e=u+8|0;j=m;while(1){if((j|0)<=0)break;g=c[t>>2]|0;h[u>>3]=+h[f+(j<<4)>>3]-+h[g+16>>3];h[e>>3]=+h[f+(j<<4)+8>>3]-+h[g+24>>3];g=c[(c[(c[g+8>>2]|0)+4>>2]|0)+12>>2]|0;c[A>>2]=c[u>>2];c[A+4>>2]=c[u+4>>2];c[A+8>>2]=c[u+8>>2];c[A+12>>2]=c[u+12>>2];if(!((lb[g&127](v,A)|0)<<24>>24))break;j=j+-3|0}c[y>>2]=j;NK(v,w,f+(j<<4)|0,0)}else{m=g+-4|0;c[y>>2]=m;j=m}while(1){if((k|0)>=(m|0))break;e=k+3|0;E=+h[f+(k<<4)>>3]-+h[f+(e<<4)>>3];F=+h[f+(k<<4)+8>>3]-+h[f+(e<<4)+8>>3];if(F*F+E*E<1.0e-06)k=e;else break}c[x>>2]=k;while(1){if((j|0)<=0)break;v=j+3|0;F=+h[f+(j<<4)>>3]-+h[f+(v<<4)>>3];E=+h[f+(j<<4)+8>>3]-+h[f+(v<<4)+8>>3];if(!(E*E+F*F<1.0e-06))break;j=j+-3|0}c[y>>2]=j;QK(b,w,f,x,y,B,i);r=c[x>>2]|0;n=c[y>>2]|0;m=n+4|0;n=n+3|0;o=A+16|0;p=A+32|0;q=A+48|0;k=z+16|0;j=r;while(1){if((j|0)>=(m|0))break;z=(c[B>>2]|0)+(j-r<<4)|0;e=f+(j<<4)|0;c[z>>2]=c[e>>2];c[z+4>>2]=c[e+4>>2];c[z+8>>2]=c[e+8>>2];c[z+12>>2]=c[e+12>>2];c[A>>2]=c[e>>2];c[A+4>>2]=c[e+4>>2];c[A+8>>2]=c[e+8>>2];c[A+12>>2]=c[e+12>>2];e=j+1|0;if((j|0)>=(n|0)){C=38;break}y=(c[B>>2]|0)+(e-r<<4)|0;z=f+(e<<4)|0;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[o>>2]=c[z>>2];c[o+4>>2]=c[z+4>>2];c[o+8>>2]=c[z+8>>2];c[o+12>>2]=c[z+12>>2];z=j+2|0;y=(c[B>>2]|0)+(z-r<<4)|0;z=f+(z<<4)|0;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[p>>2]=c[z>>2];c[p+4>>2]=c[z+4>>2];c[p+8>>2]=c[z+8>>2];c[p+12>>2]=c[z+12>>2];z=j+3|0;y=f+(z<<4)|0;c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];XE((c[k>>2]|0)+16|0,A);j=z}c[B+4>>2]=m-r;l=D;return}function QK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;m=p+4|0;n=p;o=b;while(1){j=c[(c[o+16>>2]|0)+116>>2]|0;if(!j)break;else o=j}if(!(a[i+8>>0]|0))j=(kb[c[i>>2]&63](o)|0)&255;else j=0;rE(o,m,n);k=i+4|0;if((kb[c[k>>2]&63](d)|0)<<24>>24)c[n>>2]=0;if((kb[c[k>>2]&63](c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)<<24>>24)c[m>>2]=0;if(j|0){d=c[m>>2]|0;c[m>>2]=c[n>>2];c[n>>2]=d}if(!(a[i+9>>0]|0)){j=c[m>>2]|0;if(j|0)c[f>>2]=GE(o,e,c[f>>2]|0,c[g>>2]|0,h,j)|0;j=c[n>>2]|0;if(j|0)c[g>>2]=EE(o,e,c[f>>2]|0,c[g>>2]|0,h,j)|0}else{k=c[n>>2]|0;j=c[m>>2]|0;if(j|k|0)HE(o,e,c[f>>2]|0,c[g>>2]|0,h,j,k)}l=p;return}function RK(a,b){a=a|0;b=b|0;var d=0,e=0;if(+h[b>>3]<+h[b+16>>3]?+h[b+8>>3]<+h[b+24>>3]:0){d=c[a+84>>2]|0;e=a+80|0;a=c[e>>2]|0;c[e>>2]=a+1;a=d+(a<<5)|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2]}return}function SK(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;x=l;l=l+112|0;u=x+72|0;o=x+56|0;n=x+16|0;q=x;j=c[d>>2]&3;p=d+48|0;w=c[((j|0)==3?d:p)+40>>2]|0;t=d+16|0;r=c[t>>2]|0;i=r+16|0;if(a[r+47>>0]|0){GK(n,w,c[((j|0)==2?d:d+-48|0)+40>>2]|0,i);j=n;n=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(n|0))}r=w+16|0;j=c[r>>2]|0;i=c[j+8>>2]|0;if(!i)n=0;else n=c[(c[i+4>>2]|0)+16>>2]|0;i=j+16|0;j=(c[t>>2]|0)+16|0;c[o>>2]=c[i>>2];c[o+4>>2]=c[i+4>>2];c[o+8>>2]=c[i+8>>2];c[o+12>>2]=c[i+12>>2];c[u>>2]=c[j>>2];c[u+4>>2]=c[j+4>>2];c[u+8>>2]=c[j+8>>2];c[u+12>>2]=c[j+12>>2];TK(q,o,u);c[b>>2]=c[q>>2];c[b+4>>2]=c[q+4>>2];c[b+8>>2]=c[q+8>>2];c[b+12>>2]=c[q+12>>2];if(!(g<<24>>24)){i=c[t>>2]|0;if(!(a[i+45>>0]|0))i=0;else{k=+h[i+32>>3];v=9}}else{k=+UK(c[((c[d>>2]&3|0)==3?d:p)+40>>2]|0);v=9}if((v|0)==9){h[b+16>>3]=k;i=1}a[b+29>>0]=i;c[b+80>>2]=0;c[b+88>>2]=d;q=f+32|0;c[q>>2]=c[b>>2];c[q+4>>2]=c[b+4>>2];c[q+8>>2]=c[b+8>>2];c[q+12>>2]=c[b+12>>2];switch(e|0){case 1:{j=c[r>>2]|0;if((a[j+156>>0]|0)==0?(q=a[(c[t>>2]|0)+49>>0]|0,s=q&255,q<<24>>24!=0):0){c[u>>2]=c[f>>2];c[u+4>>2]=c[f+4>>2];c[u+8>>2]=c[f+8>>2];c[u+12>>2]=c[f+12>>2];c[u+16>>2]=c[f+16>>2];c[u+20>>2]=c[f+20>>2];c[u+24>>2]=c[f+24>>2];c[u+28>>2]=c[f+28>>2];do if(!(s&4)){if(s&1|0){c[f+48>>2]=1;i=u+24|0;h[i>>3]=+h[(+h[i>>3]>+h[b+8>>3]?u+16|0:b)+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}i=f+48|0;if(!(s&8)){c[i>>2]=2;h[u>>3]=+h[b>>3];h[u+8>>3]=+h[j+24>>3]-+h[j+80>>3]*.5;h[u+24>>3]=+h[b+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}else{c[i>>2]=8;h[u+16>>3]=+h[b>>3];h[u+8>>3]=+h[j+24>>3]-+h[j+80>>3]*.5;h[u+24>>3]=+h[b+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}}else{c[f+48>>2]=4;k=+h[u>>3];if(+h[b>>3]<+h[j+16>>3]){z=k+-1.0;y=+h[b+8>>3];b=u+16|0;k=+h[b>>3];m=+h[j+80>>3]*.5+ +h[j+24>>3];m=m+ +((c[(c[(dz(w)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[r>>2]|0;h[b>>3]=+h[i+16>>3]-+h[i+88>>3];h[u+24>>3]=y;h[u+8>>3]=+h[i+24>>3]-+h[i+80>>3]*.5;h[u>>3]=z;h[f+56>>3]=z;h[f+64>>3]=y;h[f+72>>3]=k;h[f+80>>3]=m;i=f+88|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=2;break}else{m=+h[b+8>>3];i=u+16|0;y=+h[i>>3]+1.0;z=+h[j+80>>3]*.5+ +h[j+24>>3];z=z+ +((c[(c[(dz(w)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[r>>2]|0;h[u>>3]=+h[b+96>>3]+ +h[b+16>>3];h[u+24>>3]=m;h[u+8>>3]=+h[b+24>>3]-+h[b+80>>3]*.5;h[i>>3]=y;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=y;h[f+80>>3]=z;i=f+88|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=2;break}}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((w|0)==(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)?i+16|0:i+56|0)+30>>0]=0}else{j=1;v=47}break}case 2:{s=a[(c[t>>2]|0)+49>>0]|0;j=s&255;if(!(s<<24>>24))v=46;else{c[u>>2]=c[f>>2];c[u+4>>2]=c[f+4>>2];c[u+8>>2]=c[f+8>>2];c[u+12>>2]=c[f+12>>2];c[u+16>>2]=c[f+16>>2];c[u+20>>2]=c[f+20>>2];c[u+24>>2]=c[f+24>>2];c[u+28>>2]=c[f+28>>2];do if(!(j&4)){if(j&1|0)if((c[f+48>>2]|0)==4){i=c[r>>2]|0;z=+h[i+24>>3]-+h[i+80>>3]*.5;i=u+16|0;y=+h[i>>3]+1.0;k=+h[b>>3];m=z-+((c[(c[(dz(w)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[r>>2]|0;h[u>>3]=+h[b+96>>3]+ +h[b+16>>3];h[u+8>>3]=z;h[u+24>>3]=+h[b+80>>3]*.5+ +h[b+24>>3];h[i>>3]=y;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=y;h[f+80>>3]=z;i=f+88|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=2;break}else{i=u+24|0;h[i>>3]=+h[(+h[i>>3]>+h[b+8>>3]?u+16|0:b)+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}k=+h[b>>3];if(!(j&8)){h[u>>3]=k;e=c[r>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[u+24>>3]=m+k;k=+h[b+8>>3];i=u}else{h[u+8>>3]=k-m;k=+h[b+8>>3]+1.0;i=u+16|0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}else{i=u+16|0;h[i>>3]=k+1.0;e=c[r>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[u+24>>3]=m+k;k=+h[b+8>>3]+-1.0;i=u}else{h[u+8>>3]=k-m;k=+h[b+8>>3]+1.0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}}else{i=u+8|0;h[i>>3]=+h[(+h[i>>3]<+h[b+8>>3]?u:b)+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((w|0)==(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)?i+16|0:i+56|0)+30>>0]=0;c[f+48>>2]=j}break}default:v=46}if((v|0)==46){j=c[f+48>>2]|0;v=47}a:do if((v|0)==47){if(n){d=f+56|0;i=f+52|0;j=pb[n&127](w,(c[t>>2]|0)+16|0,j,d,i)|0;if(j){c[f+48>>2]=j;break}}else{i=f+52|0;d=f+56|0};c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];c[d+16>>2]=c[f+16>>2];c[d+20>>2]=c[f+20>>2];c[d+24>>2]=c[f+24>>2];c[d+28>>2]=c[f+28>>2];c[i>>2]=1;switch(e|0){case 8:{qa(135312,103488,569,103498);break}case 2:{h[((c[f+48>>2]|0)==4?f+56|0:f+72|0)+8>>3]=+h[b+8>>3];break a}case 1:{h[f+80>>3]=+h[b+8>>3];c[f+48>>2]=1;break a}default:break a}}while(0);l=x;return}function TK(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function UK(a){a=a|0;var b=0.0,d=0,e=0,f=0.0,g=0,i=0,j=0,k=0.0,l=0.0;i=c[a+16>>2]|0;j=c[i+172>>2]|0;f=0.0;g=0;while(1){a=c[j+(g<<2)>>2]|0;if(!a)break;f=+h[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+16>>3]+f;g=g+1|0}e=c[i+180>>2]|0;b=0.0;a=0;while(1){d=c[e+(a<<2)>>2]|0;if(!d)break;b=+h[(c[(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+16>>3]+b;a=a+1|0}k=+h[i+16>>3];l=+h[i+24>>3];j=c[j>>2]|0;f=+K(+(l-+h[(c[(c[((c[j>>2]&3|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+24>>3]),+(k-f/+(g|0)));j=c[e>>2]|0;return +((+K(+(+h[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+24>>3]-l),+(b/+(a|0)-k))+f)*.5)}function VK(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0;z=l;l=l+112|0;w=z+72|0;p=z+56|0;n=z+16|0;t=z;j=c[d>>2]&3;r=d+-48|0;y=c[((j|0)==2?d:r)+40>>2]|0;u=d+16|0;s=c[u>>2]|0;i=s+56|0;if(a[s+87>>0]|0){GK(n,y,c[((j|0)==3?d:d+48|0)+40>>2]|0,i);j=n;n=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(n|0))}s=y+16|0;j=c[s>>2]|0;i=c[j+8>>2]|0;if(!i)o=0;else o=c[(c[i+4>>2]|0)+16>>2]|0;n=b+40|0;i=j+16|0;j=(c[u>>2]|0)+56|0;c[p>>2]=c[i>>2];c[p+4>>2]=c[i+4>>2];c[p+8>>2]=c[i+8>>2];c[p+12>>2]=c[i+12>>2];c[w>>2]=c[j>>2];c[w+4>>2]=c[j+4>>2];c[w+8>>2]=c[j+8>>2];c[w+12>>2]=c[j+12>>2];TK(t,p,w);c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];if(!(g<<24>>24)){i=c[u>>2]|0;if(!(a[i+85>>0]|0))q=0;else{h[b+56>>3]=+h[i+72>>3];q=1}}else{m=+UK(c[((c[d>>2]&3|0)==2?d:r)+40>>2]|0)+3.141592653589793;h[b+56>>3]=m;if(m<6.283185307179586)q=1;else qa(103508,103488,606,103532)}a[b+69>>0]=q;t=f+32|0;c[t>>2]=c[n>>2];c[t+4>>2]=c[n+4>>2];c[t+8>>2]=c[n+8>>2];c[t+12>>2]=c[n+12>>2];switch(e|0){case 1:{j=c[s>>2]|0;if((a[j+156>>0]|0)==0?(t=a[(c[u>>2]|0)+89>>0]|0,v=t&255,t<<24>>24!=0):0){c[w>>2]=c[f>>2];c[w+4>>2]=c[f+4>>2];c[w+8>>2]=c[f+8>>2];c[w+12>>2]=c[f+12>>2];c[w+16>>2]=c[f+16>>2];c[w+20>>2]=c[f+20>>2];c[w+24>>2]=c[f+24>>2];c[w+28>>2]=c[f+28>>2];do if(!(v&4))if(!(v&1)){i=f+48|0;if(!(v&8)){c[i>>2]=2;h[w>>3]=+h[n>>3];h[w+24>>3]=+h[j+80>>3]*.5+ +h[j+24>>3];h[w+8>>3]=+h[b+48>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}else{c[i>>2]=8;h[w+16>>3]=+h[n>>3];h[w+24>>3]=+h[j+80>>3]*.5+ +h[j+24>>3];h[w+8>>3]=+h[b+48>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}}else{c[f+48>>2]=1;k=+h[w>>3];if(+h[n>>3]<+h[j+16>>3]){B=k+-1.0;m=+h[b+48>>3];b=w+16|0;k=+h[b>>3];A=+h[j+80>>3]*-.5+ +h[j+24>>3];A=A-+((c[(c[(dz(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[s>>2]|0;h[b>>3]=+h[i+16>>3]-+h[i+88>>3];h[w+8>>3]=m;h[w+24>>3]=+h[i+80>>3]*.5+ +h[i+24>>3];h[w>>3]=B;h[f+56>>3]=B;h[f+64>>3]=A;h[f+72>>3]=k;h[f+80>>3]=m;i=f+88|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=2;break}else{B=+h[b+48>>3];i=w+16|0;A=+h[i>>3]+1.0;m=+h[j+80>>3]*-.5+ +h[j+24>>3];m=m-+((c[(c[(dz(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[s>>2]|0;h[w>>3]=+h[b+96>>3]+ +h[b+16>>3];h[w+8>>3]=B;h[w+24>>3]=+h[b+80>>3]*.5+ +h[b+24>>3];h[i>>3]=A;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=A;h[f+80>>3]=B;i=f+88|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=2;break}}else{c[f+48>>2]=4;i=w+8|0;h[i>>3]=+h[(+h[i>>3]<+h[b+48>>3]?w:n)+8>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((y|0)==(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)?i+56|0:i+16|0)+30>>0]=0;c[f+48>>2]=v}else{j=4;x=47}break}case 2:{v=a[(c[u>>2]|0)+89>>0]|0;j=v&255;if(!(v<<24>>24))x=46;else{c[w>>2]=c[f>>2];c[w+4>>2]=c[f+4>>2];c[w+8>>2]=c[f+8>>2];c[w+12>>2]=c[f+12>>2];c[w+16>>2]=c[f+16>>2];c[w+20>>2]=c[f+20>>2];c[w+24>>2]=c[f+24>>2];c[w+28>>2]=c[f+28>>2];do if(!(j&4)){if(j&1|0)if((c[f+48>>2]|0)==4){k=+h[w>>3]+-1.0;i=c[s>>2]|0;B=+h[i+24>>3]-+h[i+80>>3]*.5;A=+h[n>>3];m=B-+((c[(c[(dz(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[s>>2]|0;h[w+16>>3]=+h[i+16>>3]+-2.0-+h[i+88>>3];h[w+8>>3]=B;h[w+24>>3]=+h[i+80>>3]*.5+ +h[i+24>>3];h[w>>3]=k;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=A;h[f+80>>3]=B;i=f+88|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=2;break}else{i=w+24|0;h[i>>3]=+h[(+h[i>>3]>+h[b+8>>3]?w+16|0:b)+8>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}k=+h[n>>3];if(!(j&8)){h[w>>3]=k+-1.0;e=c[s>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[w+24>>3]=m+k;k=+h[b+48>>3]+-1.0;i=w}else{h[w+8>>3]=k-m;k=+h[b+48>>3];i=w+16|0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}else{i=w+16|0;h[i>>3]=k+1.0;e=c[s>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[w+24>>3]=m+k;k=+h[b+48>>3]+-1.0;i=w}else{h[w+8>>3]=k-m;k=+h[b+48>>3]+1.0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}}else{i=w+8|0;h[i>>3]=+h[(+h[i>>3]<+h[b+48>>3]?w:n)+8>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((y|0)==(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)?i+56|0:i+16|0)+30>>0]=0;c[f+48>>2]=j}break}default:x=46}if((x|0)==46){j=c[f+48>>2]|0;x=47}a:do if((x|0)==47){if(o){d=f+56|0;i=f+52|0;j=pb[o&127](y,(c[u>>2]|0)+56|0,j,d,i)|0;if(j){c[f+48>>2]=j;break}}else{i=f+52|0;d=f+56|0};c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];c[d+16>>2]=c[f+16>>2];c[d+20>>2]=c[f+20>>2];c[d+24>>2]=c[f+24>>2];c[d+28>>2]=c[f+28>>2];c[i>>2]=1;switch(e|0){case 8:{qa(135312,103488,765,103532);break}case 2:{h[((c[f+48>>2]|0)==4?f+56|0:f+72|0)+8>>3]=+h[b+48>>3];break a}case 1:{h[f+64>>3]=+h[b+48>>3];c[f+48>>2]=4;break a}default:break a}}while(0);l=z;return}function WK(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;g=c[b+16>>2]|0;i=c[g+96>>2]|0;if((a[g+44>>0]|0)==0?(a[g+84>>0]|0)==0:0)j=6;else{d=a[g+49>>0]|0;e=d&255;if(((e&8|0)==0?(f=a[g+89>>0]|0,(f&8)==0):0)?((e&5|0)==0?1:d<<24>>24!=f<<24>>24):0)j=6;else b=0}if((j|0)==6)if(!i)b=18;else{b=(c[(c[(dz(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)!=0;b=~~(+h[(b?i+32|0:i+24|0)>>3]+18.0)}return b|0}function XK(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;i=i|0;var j=0,k=0,l=0,m=0;b=c[(c[d+(e<<2)>>2]|0)+16>>2]|0;if((a[b+44>>0]|0)==0?(a[b+84>>0]|0)==0:0)l=6;else l=3;do if((l|0)==3){j=a[b+49>>0]|0;k=j&255;if(!(k&8)){m=a[b+89>>0]|0;if((m&8)==0?((k&5|0)==0?1:j<<24>>24!=m<<24>>24):0){l=6;break}if(!(a[b+89>>0]&8)){if(k&4|0){ZK(d,e,f,g,h,i);break}if(!(k&1))qa(135312,103488,1231,103540);else{$K(d,e,f,g,h,i);break}}}if((j&2)==0?(a[b+89>>0]&2)==0:0){_K(d,e,f,g,h,i);break}ZK(d,e,f,g,h,i)}while(0);if((l|0)==6)YK(d,e,f,g,h,i);return}function YK(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0.0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;B=c[b+(e<<2)>>2]|0;n=i*.5/+(f|0);n=n>2.0?n:2.0;D=(c[((c[B>>2]&3|0)==3?B:B+48|0)+40>>2]|0)+16|0;A=c[D>>2]|0;C=+h[A+16>>3];H=+h[A+24>>3];B=c[B+16>>2]|0;m=+h[B+16>>3];E=m+C;F=+h[B+24>>3]+H;i=+h[B+56>>3];G=i+C;H=+h[B+64>>3]+H;k=!(F>=H)?-1:1;p=+h[A+96>>3];switch(aL(d[B+49>>0]|0,d[B+89>>0]|0)|0){case 65:case 32:{if(F==H)k=0-k|0;break}default:{}}Q=(p-m)*3.0;m=(p-i)*3.0;v=n*+(k|0);u=L+8|0;w=L+16|0;x=L+32|0;y=L+48|0;z=(H+F)*.5;A=L+64|0;B=L+80|0;s=L+96|0;t=L+104|0;r=0;o=0.0;i=p;n=p=(f|0))break;q=e+1|0;e=c[b+(e<<2)>>2]|0;p=i+g;n=n+g;m=m+g;o=o+v;h[L>>3]=E;h[u>>3]=F;Q=o+F;bL(M,n*.3333333333333333+E,Q);c[w>>2]=c[M>>2];c[w+4>>2]=c[M+4>>2];c[w+8>>2]=c[M+8>>2];c[w+12>>2]=c[M+12>>2];R=p+C;bL(N,R,Q);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];bL(O,R,z);c[y>>2]=c[O>>2];c[y+4>>2]=c[O+4>>2];c[y+8>>2]=c[O+8>>2];c[y+12>>2]=c[O+12>>2];Q=H-o;bL(J,R,Q);c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];bL(K,m*.3333333333333333+G,Q);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];h[s>>3]=G;h[t>>3]=H;k=e+16|0;if((c[(c[k>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(dz(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,k=c[(c[k>>2]|0)+96>>2]|0,I=+h[(S?k+24|0:k+32|0)>>3],S=c[D>>2]|0,h[k+56>>3]=I*.5+p+ +h[S+16>>3],h[k+64>>3]=+h[S+24>>3],a[k+81>>0]=1,I>g):0)i=I+i;else i=p;PK(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,L,7,j);e=q;r=r+1|0}l=P;return}function ZK(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0.0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0.0,S=0;Q=l;l=l+16080|0;M=Q+80|0;N=Q+64|0;O=Q+48|0;P=Q+32|0;K=Q+16|0;L=Q;C=c[b+(e<<2)>>2]|0;q=g*.5/+(f|0);q=q>2.0?q:2.0;E=(c[((c[C>>2]&3|0)==3?C:C+48|0)+40>>2]|0)+16|0;m=c[E>>2]|0;H=+h[m+16>>3];D=+h[m+24>>3];C=c[C+16>>2]|0;k=+h[C+16>>3];p=+h[C+24>>3];F=k+H;G=p+D;g=+h[C+56>>3];o=+h[C+64>>3];H=g+H;I=o+D;n=!(F>=H)?-1.0:1.0;s=+h[m+80>>3]*.5;switch(aL(d[C+49>>0]|0,d[C+89>>0]|0)|0){case 15:{k=(q-g+ +h[m+96>>3])*n;break}case 38:{k=(g+q+ +h[m+88>>3])*n;break}case 41:{k=(q-k+ +h[m+96>>3])*n;break}case 48:{k=(q-k+ +h[m+96>>3])*n;break}case 58:case 57:case 51:case 47:case 37:case 14:{k=n*.3333333333333333*(k-g+ +h[m+88>>3]+ +h[m+96>>3]);break}case 73:{k=(k+q+ +h[m+88>>3])*n;break}case 83:{k=(+h[m+88>>3]+k)*n;break}case 84:{k=((k-g+ +h[m+88>>3]+ +h[m+96>>3])*.5+q)*n;break}case 85:case 75:case 74:{k=((k-g+ +h[m+88>>3]+ +h[m+96>>3])*.5+q*2.0)*n;break}default:k=0.0}p=(s-p)*3.0;o=(s-o)*3.0;q=n*q;w=M+8|0;x=M+16|0;y=M+32|0;z=M+48|0;A=(H+F)*.5;B=M+64|0;C=M+80|0;u=M+96|0;v=M+104|0;t=0;g=s;p=s=(f|0))break;r=e+1|0;e=c[b+(e<<2)>>2]|0;o=g+i;p=p+i;n=n+i;k=k+q;h[M>>3]=F;h[w>>3]=G;s=k+F;bL(N,s,p*.3333333333333333+G);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];R=o+D;bL(O,s,R);c[y>>2]=c[O>>2];c[y+4>>2]=c[O+4>>2];c[y+8>>2]=c[O+8>>2];c[y+12>>2]=c[O+12>>2];bL(P,A,R);c[z>>2]=c[P>>2];c[z+4>>2]=c[P+4>>2];c[z+8>>2]=c[P+8>>2];c[z+12>>2]=c[P+12>>2];s=H-k;bL(K,s,R);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];bL(L,s,n*.3333333333333333+I);c[C>>2]=c[L>>2];c[C+4>>2]=c[L+4>>2];c[C+8>>2]=c[L+8>>2];c[C+12>>2]=c[L+12>>2];h[u>>3]=H;h[v>>3]=I;m=e+16|0;if((c[(c[m>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(dz(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,m=c[(c[m>>2]|0)+96>>2]|0,J=+h[(S?m+32|0:m+24|0)>>3],S=c[E>>2]|0,h[m+64>>3]=J*.5+o+ +h[S+24>>3],h[m+56>>3]=+h[S+16>>3],a[m+81>>0]=1,J>i):0)g=J+g;else g=o;PK(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,M,7,j);e=r;t=t+1|0}l=Q;return}function _K(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0.0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;B=c[b+(e<<2)>>2]|0;n=i*.5/+(f|0);n=n>2.0?n:2.0;D=(c[((c[B>>2]&3|0)==3?B:B+48|0)+40>>2]|0)+16|0;A=c[D>>2]|0;C=+h[A+16>>3];H=+h[A+24>>3];B=c[B+16>>2]|0;m=+h[B+16>>3];E=m+C;F=+h[B+24>>3]+H;i=+h[B+56>>3];G=i+C;H=+h[B+64>>3]+H;k=!(F>=H)?-1:1;p=+h[A+88>>3];switch(aL(d[B+49>>0]|0,d[B+89>>0]|0)|0){case 67:case 12:{if(F==H)k=0-k|0;break}default:{}}Q=(m+p)*3.0;m=(i+p)*3.0;v=n*+(k|0);u=L+8|0;w=L+16|0;x=L+32|0;y=L+48|0;z=(H+F)*.5;A=L+64|0;B=L+80|0;s=L+96|0;t=L+104|0;r=0;o=0.0;i=p;n=p=(f|0))break;q=e+1|0;e=c[b+(e<<2)>>2]|0;p=i+g;n=n+g;m=m+g;o=o+v;h[L>>3]=E;h[u>>3]=F;Q=o+F;bL(M,E-n*.3333333333333333,Q);c[w>>2]=c[M>>2];c[w+4>>2]=c[M+4>>2];c[w+8>>2]=c[M+8>>2];c[w+12>>2]=c[M+12>>2];R=C-p;bL(N,R,Q);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];bL(O,R,z);c[y>>2]=c[O>>2];c[y+4>>2]=c[O+4>>2];c[y+8>>2]=c[O+8>>2];c[y+12>>2]=c[O+12>>2];Q=H-o;bL(J,R,Q);c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];bL(K,G-m*.3333333333333333,Q);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];h[s>>3]=G;h[t>>3]=H;k=e+16|0;if((c[(c[k>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(dz(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,k=c[(c[k>>2]|0)+96>>2]|0,I=+h[(S?k+24|0:k+32|0)>>3],S=c[D>>2]|0,h[k+56>>3]=I*-.5-p+ +h[S+16>>3],h[k+64>>3]=+h[S+24>>3],a[k+81>>0]=1,I>g):0)i=I+i;else i=p;PK(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,L,7,j);e=q;r=r+1|0}l=P;return}function $K(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0,F=0.0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;C=c[b+(e<<2)>>2]|0;B=g*.5/+(f|0);w=(c[((c[C>>2]&3|0)==3?C:C+48|0)+40>>2]|0)+16|0;D=c[w>>2]|0;z=+h[D+16>>3];v=+h[D+24>>3];C=c[C+16>>2]|0;m=+h[C+24>>3];x=+h[C+16>>3]+z;y=m+v;n=+h[C+64>>3];z=+h[C+56>>3]+z;A=n+v;u=!(x>=z)?-1:1;o=+h[D+80>>3]*.5;C=(aL(d[C+49>>0]|0,d[C+89>>0]|0)|0)==67;m=(m+o)*3.0;n=(n+o)*3.0;B=(B>2.0?B:2.0)*+((C?0-u|0:u)|0);u=L+8|0;C=L+16|0;D=L+32|0;E=L+48|0;F=(z+x)*.5;G=L+64|0;H=L+80|0;s=L+96|0;t=L+104|0;g=o;k=0.0;m=o=(f|0))break;r=e+1|0;p=c[b+(e<<2)>>2]|0;o=g+i;m=m+i;n=n+i;k=k+B;h[L>>3]=x;h[u>>3]=y;Q=k+x;bL(M,Q,y-m*.3333333333333333);c[C>>2]=c[M>>2];c[C+4>>2]=c[M+4>>2];c[C+8>>2]=c[M+8>>2];c[C+12>>2]=c[M+12>>2];R=v-o;bL(N,Q,R);c[D>>2]=c[N>>2];c[D+4>>2]=c[N+4>>2];c[D+8>>2]=c[N+8>>2];c[D+12>>2]=c[N+12>>2];bL(O,F,R);c[E>>2]=c[O>>2];c[E+4>>2]=c[O+4>>2];c[E+8>>2]=c[O+8>>2];c[E+12>>2]=c[O+12>>2];Q=z-k;bL(J,Q,R);c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];bL(K,Q,A-n*.3333333333333333);c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];h[s>>3]=z;h[t>>3]=A;e=p+16|0;if((c[(c[e>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(dz(c[((c[p>>2]&3|0)==3?p:p+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,e=c[(c[e>>2]|0)+96>>2]|0,I=+h[(S?e+32|0:e+24|0)>>3],S=c[w>>2]|0,h[e+64>>3]=I*-.5-o+ +h[S+24>>3],h[e+56>>3]=+h[S+16>>3],a[e+81>>0]=1,I>i):0)g=I+g;else g=o;PK(p,c[((c[p>>2]&3|0)==2?p:p+-48|0)+40>>2]|0,L,7,j);e=r;q=q+1|0}l=P;return}function aL(a,b){a=a|0;b=b|0;var d=0;d=0;while(1){if((d|0)>=8){b=-1;break}if((c[21940+(d<<2)>>2]|0)==(b|0)){b=d;break}d=d+1|0}d=0;while(1){if((d|0)>=8){d=-1;break}if((c[21940+(d<<2)>>2]|0)==(a|0))break;d=d+1|0}if((d|b|0)<0)d=0;else d=c[21972+(d<<5)+(b<<2)>>2]|0;return d|0}function bL(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function cL(b){b=b|0;var d=0,e=0;if((c[46433]|0)!=0|(c[46432]|0)!=0){d=b+16|0;e=c[(c[d>>2]|0)+100>>2]|0;if((e|0?(a[e+81>>0]|0)==0:0)?dL(b,1)|0:0){e=dz(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;jM(e,c[(c[d>>2]|0)+100>>2]|0)}e=c[(c[d>>2]|0)+104>>2]|0;if((e|0?(a[e+81>>0]|0)==0:0)?dL(b,0)|0:0){e=dz(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;jM(e,c[(c[d>>2]|0)+104>>2]|0)}}return}function dL(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+96|0;o=q+32|0;m=q+16|0;n=q;i=b+16|0;do if((a[(c[i>>2]|0)+112>>0]|0)!=6){e=c[46433]|0;if(!((e|0)!=0?(a[(xx(b,e)|0)>>0]|0)!=0:0)){e=c[46432]|0;if(!e){e=0;break}if(!(a[(xx(b,e)|0)>>0]|0)){e=0;break}}d=d<<24>>24==0;p=c[i>>2]|0;p=c[(d?p+104|0:p+100|0)>>2]|0;e=eL(b)|0;if(e){k=c[e>>2]|0;do if(d){if(c[k+8>>2]|0){e=c[k>>2]|0;j=+h[e>>3];g=+h[k+16>>3];e=e+8|0;f=+h[k+24>>3];break}e=c[k>>2]|0;g=+h[e>>3];f=+h[e+8>>3];e=0;while(1){if((e|0)==4)break;n=o+(e<<4)|0;i=(c[k>>2]|0)+(e<<4)|0;c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];e=e+1|0}WL(m,o,3,.1,0,0);j=+h[m>>3];e=m+8|0}else{d=(c[e+4>>2]|0)+-1|0;i=k+(d*48|0)|0;if(c[k+(d*48|0)+12>>2]|0){o=c[i>>2]|0;e=(c[k+(d*48|0)+4>>2]|0)+-1|0;j=+h[o+(e<<4)>>3];g=+h[k+(d*48|0)+32>>3];e=o+(e<<4)+8|0;f=+h[k+(d*48|0)+40>>3];break}m=c[i>>2]|0;d=k+(d*48|0)+4|0;e=(c[d>>2]|0)+-1|0;g=+h[m+(e<<4)>>3];f=+h[m+(e<<4)+8>>3];e=0;while(1){if((e|0)==4)break;m=o+(e<<4)|0;k=(c[i>>2]|0)+(e+-4+(c[d>>2]|0)<<4)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];e=e+1|0}WL(n,o,3,.9,0,0);j=+h[n>>3];e=n+8|0}while(0);r=+K(+(+h[e>>3]-f),+(j-g));r=+KL(b,c[46433]|0,-25.0,-180.0)*.017453292519943295+r;j=+KL(b,c[46432]|0,1.0,0.0)*10.0;h[p+56>>3]=j*+E(+r)+g;h[p+64>>3]=+F(+r)*j+f;a[p+81>>0]=1;e=1}else e=0}else e=0;while(0);l=q;return e|0}function eL(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;d=b;while(1){e=c[d+16>>2]|0;d=c[e+8>>2]|0;if(d|0)break;if(!(a[e+112>>0]|0)){g=5;break}d=c[e+116>>2]|0}if((g|0)==5){g=qy(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;d=qy(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[f>>2]=g;c[f+4>>2]=d;Ow(1,103553,f)|0;d=0}l=h;return d|0}function fL(a,d,e){a=a|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0;s=l;l=l+96|0;m=s+80|0;n=s+64|0;o=s+48|0;p=s+32|0;q=s+16|0;r=s;k=b[(c[d+16>>2]|0)+136>>1]|0;d=e+16|0;gL(c[(c[d>>2]|0)+8>>2]|0,p,q);f=+h[p>>3];g=+h[q>>3];t=f-g;i=+h[p+8>>3];j=+h[q+8>>3];u=i-j;a:do if(u*u+t*t<1.0e-06){c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2]}else switch(k&14){case 4:case 10:{h[n>>3]=(g+f)*.5;h[n+8>>3]=(j+i)*.5;q=c[(c[d>>2]|0)+8>>2]|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];aM(r,q,m);c[o>>2]=c[r>>2];c[o+4>>2]=c[r+4>>2];c[o+8>>2]=c[r+8>>2];c[o+12>>2]=c[r+12>>2];break a}default:{hL(o,c[(c[d>>2]|0)+8>>2]|0,p,q);break a}}while(0);c[a>>2]=c[o>>2];c[a+4>>2]=c[o+4>>2];c[a+8>>2]=c[o+8>>2];c[a+12>>2]=c[o+12>>2];l=s;return}function gL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+32|0;g=h+16|0;f=h;j=c[a>>2]|0;e=c[j>>2]|0;i=c[j+8>>2]|0;k=j+16|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];j=j+32|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];if(!i){c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2]}else{c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[b+8>>2]=c[g+8>>2];c[b+12>>2]=c[g+12>>2]}i=c[a>>2]|0;j=(c[a+4>>2]|0)+-1|0;e=c[i+(j*48|0)>>2]|0;a=c[i+(j*48|0)+4>>2]|0;k=c[i+(j*48|0)+12>>2]|0;b=i+(j*48|0)+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];j=i+(j*48|0)+32|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];if(!k){k=e+(a+-1<<4)|0;c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];c[d+8>>2]=c[k+8>>2];c[d+12>>2]=c[k+12>>2]}else{c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2]}l=h;return}function hL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0;r=c[b+4>>2]|0;g=0.0;f=0;while(1){if((f|0)>=(r|0))break;l=c[b>>2]|0;k=c[l+(f*48|0)>>2]|0;l=c[l+(f*48|0)+4>>2]|0;i=3;j=0;while(1){if((i|0)>=(l|0))break;q=+h[k+(j<<4)>>3]-+h[k+(i<<4)>>3];p=+h[k+(j<<4)+8>>3]-+h[k+(i<<4)+8>>3];i=i+3|0;j=j+3|0;g=+C(+(p*p+q*q))+g}f=f+1|0}l=0;g=g*.5;a:while(1){if((l|0)>=(r|0)){f=15;break}k=c[b>>2]|0;j=c[k+(l*48|0)>>2]|0;k=c[k+(l*48|0)+4>>2]|0;f=3;i=0;while(1){if((f|0)>=(k|0))break;m=+h[j+(i<<4)>>3];p=+h[j+(i<<4)+8>>3];n=+h[j+(f<<4)>>3];o=+h[j+(f<<4)+8>>3];q=m-n;s=p-o;q=+C(+(s*s+q*q));if(q>=g){f=12;break a}f=f+3|0;i=i+3|0;g=g-q}l=l+1|0}if((f|0)==12){h[d>>3]=m;h[d+8>>3]=p;h[e>>3]=n;h[e+8>>3]=o;s=q-g;h[a>>3]=(s*m+n*g)/q;h[a+8>>3]=(s*p+o*g)/q;return}else if((f|0)==15)qa(135630,103488,1316,103615)}function iL(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;cL(b);return}function jL(b,d,e,f,g){b=b|0;d=d|0;e=+e;f=f|0;g=g|0;var i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0,G=0,H=0,I=0,J=0,K=0,L=0;J=kL(b)|0;I=c[J+4>>2]|0;K=c[J>>2]|0;H=I+-1|0;B=+h[K+(H<<6)+16>>3];C=+(I|0);D=(g|0)==2;G=(f|0)!=0;n=0;j=0.0;i=0.0;l=0.0;m=0.0;while(1){if((n|0)>=(I|0))break;b=~~+lL(+(n+-1|0),C);A=n+1|0;L=~~+lL(+(A|0),C);o=K+(n<<6)|0;m=+h[o>>3];z=K+(n<<6)+8|0;l=+h[z>>3];s=K+(n<<6)+16|0;t=+h[s>>3];u=K+(n<<6)+24|0;v=K+(n<<6)+32|0;w=K+(n<<6)+40|0;x=K+(n<<6)+48|0;y=K+(n<<6)+56|0;k=+mL(+h[K+(L<<6)+8>>3]-l,+h[K+(L<<6)>>3]-m);q=+mL(+h[K+(b<<6)+8>>3]-l,+h[K+(b<<6)>>3]-m);r=+hb[d&7](t,B,e);b=(n|0)==0;do if(b|(n|0)==(H|0))if(b){i=k+1.5707963267948966;if(!D){b=0;p=i;j=r;break}b=0;p=i;j=r;l=l-+F(+k)*r;m=m-+E(+k)*r;break}else{i=q+-1.5707963267948966;if(!D){b=0;p=i;j=r;break}b=0;p=i;j=r;l=l-+F(+q)*r;m=m-+E(+q)*r;break}else{p=k-q;p=1.5707963267948966-(p<0.0?p+6.283185307179586:p)*.5;j=+E(+p);j=j==0.0?0.0:r/j;i=k+1.5707963267948966;k=p+i;if(G|j>r*10.0){q=+lL(q+-1.5707963267948966,6.283185307179586);b=1;p=+lL(i,6.283185307179586);j=r;i=q}else{b=0;p=k;i=k}}while(0);h[o>>3]=m;h[z>>3]=l;h[s>>3]=t;a[u>>0]=108;h[v>>3]=i;h[w>>3]=j;c[x>>2]=b;h[y>>3]=p;n=A}o=tH(12)|0;b=0;while(1){if((b|0)>=(I|0))break;m=+h[K+(b<<6)>>3];l=+h[K+(b<<6)+8>>3];i=+h[K+(b<<6)+32>>3];j=+h[K+(b<<6)+40>>3];L=c[K+(b<<6)+48>>2]|0;k=+h[K+(b<<6)+56>>3];nL(o,+E(+i)*j+m,+F(+i)*j+l);if(L|0)oL(m,l,j,1,i,k,f,o);b=b+1|0}n=(g|0)==1;k=i+3.141592653589793;if(n)pL(o,m,l,j,i,k);else{nL(o,+E(+k)*j+m,+F(+k)*j+l);i=k}b=I+-2|0;k=m;while(1){if((b|0)<=-1)break;m=+h[K+(b<<6)>>3];l=+h[K+(b<<6)+8>>3];j=+h[K+(b<<6)+40>>3];L=c[K+(b<<6)+48>>2]|0;i=+h[K+(b<<6)+32>>3]+3.141592653589793;k=+h[K+(b<<6)+56>>3]+3.141592653589793;nL(o,+E(+k)*j+m,+F(+k)*j+l);if(L|0)oL(m,l,j,0,i,k,f,o);b=b+-1|0;k=m}if(n)pL(o,k,l,j,i,i+3.141592653589793);qL(J);return o|0}function kL(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;q=l;l=l+144|0;i=q+128|0;h=q+112|0;j=q+96|0;k=q+64|0;m=q;n=q+80|0;o=rL()|0;p=c[a+4>>2]|0;f=c[a>>2]|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];sL(o,i,0.0);g=m+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];d=0;b=0.0;a:while(1){e=d+3|0;if((e|0)>=(p|0))break;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];a=1;while(1){if((a|0)==4)break;r=m+(a<<4)|0;s=f+(a+d<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];a=a+1|0}c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];a=1;while(1){if((a|0)==21){d=e;continue a}WL(n,m,3,+(a|0)*.05,0,0);c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];c[h>>2]=c[j>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];c[i+12>>2]=c[n+12>>2];t=+tL(h,i)+b;c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];sL(o,i,t);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];a=a+1|0;b=t}}uL(o);l=q;return o|0}function lL(a,b){a=+a;b=+b;var c=0.0;c=a-+A(+(a/b))*b;return +(!(a<0.0)&!(a>=b)?a:c)}function mL(a,b){a=+a;b=+b;if(!(a==0.0&b==0.0)){a=+K(+a,+b);if(!(a>=0.0))a=a+6.283185307179586}else a=0.0;return +a}function nL(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;e=c[a>>2]|0;f=a+4|0;if((e|0)<(c[f>>2]|0))f=c[a+8>>2]|0;else{c[f>>2]=2e3;e=a+8|0;f=wH(c[e>>2]|0,32e3)|0;c[e>>2]=f;e=c[a>>2]|0}c[a>>2]=e+1;h[f+(e<<4)>>3]=b;h[f+(e<<4)+8>>3]=d;return}function oL(a,b,c,d,e,f,g,h){a=+a;b=+b;c=+c;d=d|0;e=+e;f=+f;g=g|0;h=h|0;var i=0.0;d=(d|0)==0;i=d?e:f;do if((g|0)==1){e=(d?f:e)-i;e=!(e<=1.7453292519943296e-03)?e:e+6.283185307179586;if(e<3.141592653589793){pL(h,a,b,c,e+i,i);break}else{nL(h,+E(+i)*c+a,+F(+i)*c+a);break}}else nL(h,+E(+i)*c+a,+F(+i)*c+a);while(0);return}function pL(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0,h=0.0;nL(a,+E(+e)*d+b,+F(+e)*d+c);a:do if(!(d==0.0)){while(1){if(!(f>e))break;f=f+-6.283185307179586}f=e-f;while(1){if(!(f>6.283185307179586))break;f=f+-6.283185307179586}f=f*.05263157894736842;g=1;while(1){if((g|0)==20)break a;h=e-f*+(g|0);nL(a,+E(+h)*d+b,+F(+h)*d+c);g=g+1|0}}while(0);return}function qL(a){a=a|0;C_(c[a>>2]|0);C_(a);return}function rL(){var a=0;a=tH(12)|0;c[a+4>>2]=0;c[a+8>>2]=2e3;c[a>>2]=tH(128e3)|0;return a|0}function sL(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0;i=a+4|0;e=c[i>>2]|0;f=a+8|0;g=c[f>>2]|0;if((e|0)<(g|0))a=c[a>>2]|0;else{c[f>>2]=g<<1;e=wH(c[a>>2]|0,g<<7)|0;c[a>>2]=e;a=e;e=c[i>>2]|0}h[a+(e<<6)>>3]=+h[b>>3];h[a+(e<<6)+8>>3]=+h[b+8>>3];c[i>>2]=e+1;h[a+(e<<6)+16>>3]=d;return}function tL(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+8>>3]-+h[b+8>>3];return +(+C(+(d*d+c*c)))}function uL(a){a=a|0;var b=0;b=c[a+4>>2]|0;if((c[a+8>>2]|0)>(b|0))c[a>>2]=wH(c[a>>2]|0,b<<6)|0;return}function vL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;g=k+12|0;c[g>>2]=0;h=c[d+4>>2]|0;if(!h)qa(103632,103643,203,103654);e=c[h>>2]|0;if(!e)qa(103668,103643,206,103654);f=h+8|0;if(!(c[f>>2]|0))c[f>>2]=wL(e)|0;if(!0)e=0;else{e=(zG(c[h>>2]|0)|0)==0;e=e?0:g}if(!((NP(b,d,e)|0)<<24>>24))xL(d,e);do if(e|0){f=c[g>>2]|0;b=c[15686]|0;e=c[h>>2]|0;if(!f){c[j>>2]=e;f1(b,103711,j)|0;break}else{c[i>>2]=e;c[i+4>>2]=f;f1(b,103679,i)|0;break}}while(0);j=d+32|0;c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];l=k;return}function wL(a){a=a|0;var b=0;b=c[46531]|0;if((b|0)!=0?(N$(b,a)|0)==0:0)a=c[46540]|0;else{C_(b);c[46531]=m1(a)|0;a=d2(186124,22228,35,36,93)|0;c[46540]=a}return a|0}function xL(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0.0,j=0,k=0.0;j=c[b+4>>2]|0;e=c[j>>2]|0;i=+h[j+16>>3];j=b+32|0;h[j>>3]=0.0;h[b+40>>3]=i*1.2;h[b+16>>3]=0.0;h[b+24>>3]=i*.1;c[b+8>>2]=0;c[b+12>>2]=0;if(U$(e,103745,4)|0)if((U$(e,103750,5)|0)!=0?(U$(e,103756,9)|0)!=0:0){g=4248;e=103766}else{g=8344;e=103802}else{g=6296;e=103783}if(d|0)c[d>>2]=e;e=c[b>>2]|0;if(e|0){f=0.0;while(1){b=a[e>>0]|0;if(!(b<<24>>24))break;k=f+ +h[g+((b&255)<<3)>>3];h[j>>3]=k;e=e+1|0;f=k}h[j>>3]=f*i}return}function yL(a,b){a=a|0;b=b|0;return N$(c[a>>2]|0,c[b>>2]|0)|0}function zL(a){a=a|0;var b=0;b=a+108|0;c[b>>2]=0;c[a+112>>2]=32;c[a+116>>2]=-1;c[a+120>>2]=30;c[a+124>>2]=63;c[a+128>>2]=55;c[a+132>>2]=0;c[a+136>>2]=0;c[a+140>>2]=0;b=Bw(b,c[4555]|0)|0;c[a+144>>2]=b;return b|0}function AL(a,b,d){a=a|0;b=b|0;d=d|0;d=D_(1,32)|0;a=c[b>>2]|0;if(a|0)c[d>>2]=m1(a)|0;a=c[b+4>>2]|0;if(a|0)c[d+4>>2]=m1(a)|0;c[d+24>>2]=c[b+24>>2]&127;h[d+16>>3]=+h[b+16>>3];c[d+8>>2]=c[b+8>>2];return d|0}function BL(a,b,d){a=a|0;b=b|0;d=d|0;C_(c[b>>2]|0);C_(c[b+4>>2]|0);C_(b);return}function CL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0;a=c[b>>2]|0;e=c[d>>2]|0;i=(e|0)==0;if(!a)if(i)j=5;else a=-1;else if(!i){a=a$(a,e)|0;if(!a)j=5}else a=1;do if((j|0)==5){a=c[b+4>>2]|0;e=c[d+4>>2]|0;i=(e|0)==0;if(!a){if(!i){a=-1;break}}else{if(i){a=1;break}a=a$(a,e)|0;if(a|0)break}a=(c[b+24>>2]&127)-(c[d+24>>2]&127)|0;if(!a){g=+h[b+16>>3];f=+h[d+16>>3];if(gf&1}}while(0);return a|0}function DL(){eb(186164)|0;return}function EL(){var a=0,b=0;b=l;l=l+16|0;a=b;eb(a|0)|0;l=b;return +(+((c[a+4>>2]|0)+(c[a>>2]|0)-(c[46541]|0)-(c[46542]|0)|0)*.016666666666666666)}function FL(a){a=a|0;var b=0,d=0;b=tH(16)|0;a=(a|0)>2?a:2;d=tH(a<<2)|0;c[b>>2]=d;c[b+12>>2]=d;c[b+8>>2]=d;c[b+4>>2]=d+(a<<2);return b|0}function GL(a){a=a|0;C_(c[a>>2]|0);C_(a);return}function HL(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+12|0;e=c[d>>2]|0;c[d>>2]=e+4;c[e>>2]=b;if((c[d>>2]|0)>>>0>=(c[a+4>>2]|0)>>>0)c[d>>2]=c[a>>2];return}function IL(a){a=a|0;var b=0,d=0,e=0;d=a+8|0;b=c[d>>2]|0;if((b|0)!=(c[a+12>>2]|0)){e=b+4|0;c[d>>2]=e;b=c[b>>2]|0;if(e>>>0>=(c[a+4>>2]|0)>>>0)c[d>>2]=c[a>>2]}else b=0;return b|0}function JL(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=l;l=l+16|0;g=i;if(((d|0)!=0?(h=xx(b,d)|0,(h|0)!=0):0)?(a[h>>0]|0)!=0:0){d=h1(h,g,10)|0;e=(h|0)==(c[g>>2]|0)?e:(d|0)<(f|0)?f:d}l=i;return e|0}function KL(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var g=0,h=0,i=0,j=0.0;i=l;l=l+16|0;g=i;if(((b|0)!=0&(d|0)!=0?(h=xx(b,d)|0,(h|0)!=0):0)?(a[h>>0]|0)!=0:0){j=+b2(h,g);e=(h|0)==(c[g>>2]|0)?e:j0.0)){b=+KL(a,mx(a,0,104612,0)|0,-1.0,0.0);b=b==0.0?72.0:b}return +b}function ML(a,b,c){a=a|0;b=b|0;c=c|0;if((a|0)!=0&(b|0)!=0)c=xx(a,b)|0;return c|0}function NL(b,c,d){b=b|0;c=c|0;d=d|0;b=ML(b,c,d)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0)d=b;return d|0}function OL(a,b,c){a=a|0;b=b|0;c=c|0;if(!b)a=c&255;else a=PL(xx(a,b)|0)|0;return a|0}function PL(a){a=a|0;return QL(a,0)|0}function QL(b,c){b=b|0;c=c|0;var d=0;if((b|0)!=0?(d=a[b>>0]|0,d<<24>>24!=0):0)if((N$(b,134226)|0)!=0?(N$(b,104623)|0)!=0:0)if((N$(b,104626)|0)!=0?(N$(b,104631)|0)!=0:0){if(((d<<24>>24)+-48|0)>>>0<10)c=($1(b)|0)&255}else c=1;else c=0;return c|0}function RL(a){a=a|0;var b=0,d=0;while(1){b=(c[a+16>>2]|0)+220|0;d=c[b>>2]|0;if(!((d|0)!=(a|0)&(d|0)!=0))break;a=c[(c[d+16>>2]|0)+220>>2]|0;if(!a){a=d;continue}c[b>>2]=a}return a|0}function SL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if((a|0)!=(b|0)){d=c[a+16>>2]|0;e=d+220|0;if(!(c[e>>2]|0)){c[e>>2]=a;c[d+216>>2]=1}else a=RL(a)|0;d=c[b+16>>2]|0;e=d+220|0;if(!(c[e>>2]|0)){c[e>>2]=b;c[d+216>>2]=1}else{d=RL(b)|0;b=d;d=c[d+16>>2]|0}g=a+16|0;e=c[g>>2]|0;f=b+16|0;h=(c[e+120>>2]|0)>(c[d+120>>2]|0);a=h?b:a;c[(h?e:d)+220>>2]=a;e=(c[(h?f:g)>>2]|0)+216|0;c[e>>2]=(c[e>>2]|0)+(c[(c[(h?g:f)>>2]|0)+216>>2]|0)}return a|0}function TL(b){b=b|0;b=c[b+16>>2]|0;c[b+216>>2]=1;c[b+220>>2]=0;a[b+159>>0]=0;return}function UL(a,b){a=a|0;b=b|0;if((RL(a)|0)==(a|0)){a=c[a+16>>2]|0;c[a+220>>2]=b;b=(c[b+16>>2]|0)+216|0;c[b>>2]=(c[b>>2]|0)+(c[a+216>>2]|0);return}else qa(104643,104635,194,104659)}function VL(a,b){a=a|0;b=b|0;var d=0.0;b=c[(c[b+16>>2]|0)+132>>2]|0;d=+h[b+8>>3]*72.0;h[a>>3]=+h[b>>3]*72.0;h[a+8>>3]=d;return}function WL(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0,p=0;o=l;l=l+576|0;n=o;i=0;while(1){if((i|0)>(d|0))break;k=n+(i<<4)|0;j=b+(i<<4)|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];i=i+1|0}m=1.0-e;i=1;while(1){if((i|0)>(d|0))break;j=d-i|0;k=i+-1|0;b=0;while(1){if((b|0)>(j|0))break;p=b+1|0;h[n+(i*96|0)+(b<<4)>>3]=+h[n+(k*96|0)+(p<<4)>>3]*e+ +h[n+(k*96|0)+(b<<4)>>3]*m;h[n+(i*96|0)+(b<<4)+8>>3]=+h[n+(k*96|0)+(p<<4)+8>>3]*e+ +h[n+(k*96|0)+(b<<4)+8>>3]*m;b=p}i=i+1|0}a:do if(f|0){i=0;while(1){if((i|0)>(d|0))break a;p=f+(i<<4)|0;k=n+(i*96|0)|0;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];c[p+8>>2]=c[k+8>>2];c[p+12>>2]=c[k+12>>2];i=i+1|0}}while(0);b:do if(g|0){i=0;while(1){if((i|0)>(d|0))break b;p=g+(i<<4)|0;f=n+((d-i|0)*96|0)+(i<<4)|0;c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];i=i+1|0}}while(0);p=n+(d*96|0)|0;c[a>>2]=c[p>>2];c[a+4>>2]=c[p+4>>2];c[a+8>>2]=c[p+8>>2];c[a+12>>2]=c[p+12>>2];l=o;return}function XL(b){b=b|0;var d=0,e=0,f=0,g=0;e=0;do{d=c[46545]|0;f=d+1024|0;if((d-e|0)<1024){c[46545]=f;f=wH(c[46546]|0,f)|0;c[46546]=f;d=c[46545]|0}else f=c[46546]|0;d=N0(f+e|0,d-e|0,b)|0;if(!d){g=6;break}e=(V_(d)|0)+e|0;d=c[46546]|0}while((a[d+(e+-1)>>0]|0)!=10);if((g|0)==6)d=c[46546]|0;return ((e|0)>0?d:0)|0}function YL(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;do if((b|0)!=0?(a[b>>0]|0)!=0:0)if(!0){d=c[46362]|0;e=c[46548]|0;if((c[46547]|0)==(d|0))d=e;else{if(e){C_(c[e>>2]|0);C_(c[46548]|0);c[46548]=0;d=c[46362]|0}c[46547]=d;if(!d)break;if(!(a[d>>0]|0))break;d=ZL(d)|0;c[46548]=d}if(!((a[b>>0]|0)!=47&(d|0)!=0))break;b=_L(d,c[46549]|0,b)|0;break}else S();else b=0;while(0);l=f;return b|0}function ZL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=0;f=0;g=0;b=m1(a)|0;d=0;while(1){b=j1(b,104958)|0;if(!b)break;a=(g<<2)+8|0;if(!f)a=uH(a)|0;else a=wH(d,a)|0;c[a+(g<<2)>>2]=b;f=V_(b)|0;e=e>>>0>f>>>0?e:f;f=a;g=g+1|0;b=0;d=a}c[f+(g<<2)>>2]=0;c[46549]=e;return f|0}function _L(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;e=g;h=c[46550]|0;c[46550]=E_(h,b+2+(V_(d)|0)|0)|0;while(1){b=c[a>>2]|0;if(!b){a=0;break}h=c[46550]|0;c[e>>2]=b;c[e+4>>2]=104956;c[e+8>>2]=d;X0(h,104949,e)|0;if(!(J1(c[46550]|0,4)|0)){f=4;break}else a=a+4|0}if((f|0)==4)a=c[46550]|0;l=g;return a|0}function $L(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=(b|0)==0;f=0;while(1){h=c[d+(f<<2)>>2]|0;if(!h)break;if((!g?(a[b>>0]|0)==(a[h>>0]|0):0)?(a$(b,h)|0)==0:0)break;f=f+1|0}return c[e+(f<<2)>>2]|0}function aM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;z=l;l=l+80|0;x=z+16|0;y=z;u=c[b+4>>2]|0;v=c[b>>2]|0;w=d+8|0;f=0;e=-1;g=1.e+38;b=-1;while(1){if((f|0)>=(u|0))break;s=c[v+(f*48|0)>>2]|0;t=c[v+(f*48|0)+4>>2]|0;r=0;while(1){if((r|0)>=(t|0))break;q=+h[s+(r<<4)>>3]-+h[d>>3];p=+h[s+(r<<4)+8>>3]-+h[w>>3];q=p*p+q*q;A=(e|0)==-1|q>2]|0;e=e+(((e|0)==((c[v+(b*48|0)+4>>2]|0)+-1|0))<<31>>31)|0;e=e-((e|0)%3|0)|0;b=0;while(1){if((b|0)==4)break;C=b+e|0;h[x+(b<<4)>>3]=+h[f+(C<<4)>>3];h[x+(b<<4)+8>>3]=+h[f+(C<<4)+8>>3];b=b+1|0}q=+h[d>>3];k=+h[x>>3]-q;o=+h[w>>3];p=+h[x+8>>3]-o;j=+h[x+48>>3]-q;n=+h[x+56>>3]-o;b=y+8|0;g=1.0;i=0.0;j=n*n+j*j;k=p*p+k*k;while(1){p=(g+i)*.5;WL(y,x,3,p,0,0);m=+h[y>>3];n=+h[b>>3];if(+B(+(k-j))<1.0)break;if(+B(+(g-i))<1.0e-05)break;C=k>3]=m;h[a+8>>3]=n;l=z;return}function bM(){return 0}function cM(b){b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;d=+KL(b,c[46376]|0,.75,.01);g=b+16|0;h[(c[g>>2]|0)+32>>3]=d;d=+KL(b,c[46375]|0,.5,.02);h[(c[g>>2]|0)+40>>3]=d;l=VJ(NL(b,c[46377]|0,104960)|0,b)|0;c[(c[g>>2]|0)+8>>2]=l;l=xx(b,c[46384]|0)|0;d=+KL(b,c[46380]|0,14.0,1.0);e=NL(b,c[46381]|0,104968)|0;f=NL(b,c[46382]|0,134232)|0;i=(Qz(l)|0)!=0;k=(GJ(b)|0)==2;i=jH(b,l,(k?4:0)|(i?2:0),d,e,f)|0;c[(c[g>>2]|0)+104>>2]=i;i=c[46385]|0;if((i|0?(j=xx(b,i)|0,j|0):0)?a[j>>0]|0:0){l=(Qz(j)|0)!=0;l=jH(b,j,l?2:0,d,e,f)|0;c[(c[g>>2]|0)+108>>2]=l;l=(c[(dz(b)|0)+16>>2]|0)+113|0;a[l>>0]=a[l>>0]|16}k=(JL(b,c[46388]|0,0,0)|0)&255;l=c[g>>2]|0;a[l+144>>0]=k;tb[c[c[(c[l+8>>2]|0)+4>>2]>>2]&127](b);return}function dM(b){b=b|0;var d=0,e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+112|0;m=v+96|0;n=v+80|0;s=v+40|0;u=v;r=b+48|0;p=dz(c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0)|0;g=m+8|0;c[g>>2]=0;o=n+8|0;c[o>>2]=0;d=c[46412]|0;if(((d|0)!=0?(e=xx(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0){eM(b,m);t=(Qz(e)|0)!=0;i=+h[m>>3];f=c[g>>2]|0;d=c[m+12>>2]|0;e=jH(b,e,t?2:0,i,f,d)|0;t=b+16|0;c[(c[t>>2]|0)+96>>2]=e;e=(c[p+16>>2]|0)+113|0;a[e>>0]=a[e>>0]|1;e=PL(ML(b,c[46422]|0,134226)|0)|0;a[(c[t>>2]|0)+114>>0]=e;t=1;e=f}else{t=0;d=0;i=0.0;e=0}f=c[46413]|0;if((f|0?(j=xx(b,f)|0,j|0):0)?a[j>>0]|0:0){if(!e){eM(b,m);i=+h[m>>3];e=c[g>>2]|0;d=c[m+12>>2]|0}g=(Qz(j)|0)!=0;j=jH(b,j,g?2:0,i,e,d)|0;c[(c[b+16>>2]|0)+108>>2]=j;j=(c[p+16>>2]|0)+113|0;a[j>>0]=a[j>>0]|32}d=c[46427]|0;if(((d|0)!=0?(k=xx(b,d)|0,(k|0)!=0):0)?(a[k>>0]|0)!=0:0){fM(b,m,n);j=(Qz(k)|0)!=0;i=+h[n>>3];d=c[o>>2]|0;e=c[n+12>>2]|0;k=jH(b,k,j?2:0,i,d,e)|0;c[(c[b+16>>2]|0)+100>>2]=k;k=(c[p+16>>2]|0)+113|0;a[k>>0]=a[k>>0]|2}else{e=0;i=0.0;d=0}f=c[46428]|0;if((f|0?(q=xx(b,f)|0,q|0):0)?a[q>>0]|0:0){if(!d){fM(b,m,n);e=c[n+12>>2]|0;i=+h[n>>3];d=c[o>>2]|0}o=(Qz(q)|0)!=0;q=jH(b,q,o?2:0,i,d,e)|0;c[(c[b+16>>2]|0)+104>>2]=q;q=(c[p+16>>2]|0)+113|0;a[q>>0]=a[q>>0]|4}d=wx(b,108373)|0;d=d|0?d:191979;if(a[d>>0]|0)a[(c[(c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0)+16>>2]|0)+145>>0]=1;g=b+16|0;f=(c[g>>2]|0)+16|0;e=c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0;gM(s,c[(c[(c[(c[e+16>>2]|0)+8>>2]|0)+4>>2]|0)+8>>2]|0,e,d);d=s;e=f+40|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));if((hM(b,c[46434]|0)|0)<<24>>24)a[(c[g>>2]|0)+46>>0]=0;d=wx(b,108382)|0;d=d|0?d:191979;if(!(a[d>>0]|0))e=b+-48|0;else{e=b+-48|0;a[(c[(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)+16>>2]|0)+145>>0]=1}f=(c[g>>2]|0)+56|0;e=c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0;gM(u,c[(c[(c[(c[e+16>>2]|0)+8>>2]|0)+4>>2]|0)+8>>2]|0,e,d);d=u;e=f+40|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));if((hM(b,c[46435]|0)|0)<<24>>24)a[(c[g>>2]|0)+86>>0]=0;l=v;return t|0}function eM(a,b){a=a|0;b=b|0;h[b>>3]=+KL(a,c[46409]|0,14.0,1.0);c[b+8>>2]=NL(a,c[46410]|0,104968)|0;c[b+12>>2]=NL(a,c[46411]|0,134232)|0;return}function fM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b+8|0;if(!(c[e>>2]|0))eM(a,b);h[d>>3]=+KL(a,c[46429]|0,+h[b>>3],1.0);c[d+8>>2]=NL(a,c[46430]|0,c[e>>2]|0)|0;c[d+12>>2]=NL(a,c[46431]|0,c[b+12>>2]|0)|0;return}function gM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+128|0;k=m+80|0;h=m+40|0;g=m;if((f|0)!=0?(j=z$(f,58)|0,(j|0)!=0):0){a[j>>0]=0;i=j+1|0;xb[d&31](h,e,f,i);e=k;g=h;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0));a[j>>0]=58;f=i}else{xb[d&31](g,e,f,0);e=k;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0))}e=b;g=k;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0));c[b+36>>2]=f;l=m;return}function hM(b,c){b=b|0;c=c|0;var d=0;if(((c|0)!=0?(d=xx(b,c)|0,(d|0)!=0):0)?(a[d>>0]|0)!=0:0)b=(PL(d)|0)<<24>>24==0&1;else b=0;return b|0}function iM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;k=l;l=l+32|0;i=k;j=c[b+8>>2]|0;d=c[b+4>>2]|0;d=(c[b+44>>2]|0)+((O((d|0)>1?d+-1|0:0,j)|0)<<4)|0;e=i+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];f=i+8|0;g=i+24|0;b=1;while(1){if((b|0)>=(j|0))break;m=d+(b<<4)|0;o=+h[m>>3];h[i>>3]=+h[(+h[i>>3]>3];n=+h[m+8>>3];h[f>>3]=+h[(+h[f>>3]>3];h[e>>3]=+h[(+h[e>>3]>o?e:m)>>3];h[g>>3]=+h[(+h[g>>3]>n?e:m)+8>>3];b=b+1|0}c[a>>2]=c[i>>2];c[a+4>>2]=c[i+4>>2];c[a+8>>2]=c[i+8>>2];c[a+12>>2]=c[i+12>>2];c[a+16>>2]=c[i+16>>2];c[a+20>>2]=c[i+20>>2];c[a+24>>2]=c[i+24>>2];c[a+28>>2]=c[i+28>>2];l=k;return}function jM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+64|0;g=d+32|0;e=d;f=c[a+16>>2]|0;a=f+16|0;f=c[f+116>>2]&1;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[g+16>>2]=c[a+16>>2];c[g+20>>2]=c[a+20>>2];c[g+24>>2]=c[a+24>>2];c[g+28>>2]=c[a+28>>2];kM(e,g,b,f);c[a>>2]=c[e>>2];c[a+4>>2]=c[e+4>>2];c[a+8>>2]=c[e+8>>2];c[a+12>>2]=c[e+12>>2];c[a+16>>2]=c[e+16>>2];c[a+20>>2]=c[e+20>>2];c[a+24>>2]=c[e+24>>2];c[a+28>>2]=c[e+28>>2];l=d;return}function kM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0.0;g=+h[d+56>>3];l=+h[d+64>>3];j=e<<24>>24==0;k=+h[d+24>>3];i=+h[d+32>>3];m=(j?k:i)*.5;f=g-m;g=m+g;if(f<+h[b>>3])h[b>>3]=f;e=b+16|0;if(g>+h[e>>3])h[e>>3]=g;g=(j?i:k)*.5;f=l-g;g=g+l;e=b+8|0;if(f<+h[e>>3])h[e>>3]=f;e=b+24|0;if(g>+h[e>>3])h[e>>3]=g;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2];return}function lM(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0.0;L=l;l=l+448|0;H=L+416|0;t=L+384|0;u=L+304|0;K=L+256|0;G=L+192|0;B=L+144|0;C=L+96|0;d=L+400|0;e=L+368|0;f=L+352|0;g=L+336|0;v=L+288|0;w=L+224|0;x=L+160|0;y=L+112|0;z=L+64|0;A=L+32|0;I=L;J=b+16|0;if(($x(b)|0)==0?(c[(c[J>>2]|0)+180>>2]|0)==0:0){mM(d,0.0,0.0);c[K>>2]=c[d>>2];c[K+4>>2]=c[d+4>>2];c[K+8>>2]=c[d+8>>2];c[K+12>>2]=c[d+12>>2];K=K+16|0;mM(e,0.0,0.0);c[K>>2]=c[e>>2];c[K+4>>2]=c[e+4>>2];c[K+8>>2]=c[e+8>>2];c[K+12>>2]=c[e+12>>2]}else{mM(f,2147483647.0,2147483647.0);c[K>>2]=c[f>>2];c[K+4>>2]=c[f+4>>2];c[K+8>>2]=c[f+8>>2];c[K+12>>2]=c[f+12>>2];F=K+16|0;mM(g,-2147483647.0,-2147483647.0);c[F>>2]=c[g>>2];c[F+4>>2]=c[g+4>>2];c[F+8>>2]=c[g+8>>2];c[F+12>>2]=c[g+12>>2];o=C+8|0;p=u+16|0;D=K+8|0;q=u+8|0;E=K+24|0;r=u+24|0;s=B+8|0;n=Ry(b)|0;while(1){if(!n)break;VL(B,n);d=n+16|0;m=c[d>>2]|0;h[C>>3]=(+h[m+96>>3]+ +h[m+88>>3])*.5;h[o>>3]=+h[m+80>>3]*.5;c[t>>2]=c[B>>2];c[t+4>>2]=c[B+4>>2];c[t+8>>2]=c[B+8>>2];c[t+12>>2]=c[B+12>>2];c[H>>2]=c[C>>2];c[H+4>>2]=c[C+4>>2];c[H+8>>2]=c[C+8>>2];c[H+12>>2]=c[C+12>>2];nM(u,t,H);c[t>>2]=c[B>>2];c[t+4>>2]=c[B+4>>2];c[t+8>>2]=c[B+8>>2];c[t+12>>2]=c[B+12>>2];c[H>>2]=c[C>>2];c[H+4>>2]=c[C+4>>2];c[H+8>>2]=c[C+8>>2];c[H+12>>2]=c[C+12>>2];oM(v,t,H);c[p>>2]=c[v>>2];c[p+4>>2]=c[v+4>>2];c[p+8>>2]=c[v+8>>2];c[p+12>>2]=c[v+12>>2];h[K>>3]=+h[(+h[K>>3]<+h[u>>3]?K:u)>>3];h[D>>3]=+h[(+h[D>>3]<+h[q>>3]?K:u)+8>>3];h[F>>3]=+h[(+h[F>>3]>+h[p>>3]?K:u)+16>>3];h[E>>3]=+h[(+h[E>>3]>+h[r>>3]?K:u)+24>>3];d=c[(c[d>>2]|0)+108>>2]|0;if(d|0?a[d+81>>0]|0:0){m=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];kM(w,H,d,m);c[K>>2]=c[w>>2];c[K+4>>2]=c[w+4>>2];c[K+8>>2]=c[w+8>>2];c[K+12>>2]=c[w+12>>2];c[K+16>>2]=c[w+16>>2];c[K+20>>2]=c[w+20>>2];c[K+24>>2]=c[w+24>>2];c[K+28>>2]=c[w+28>>2]}m=Dx(b,n)|0;while(1){if(!m)break;k=m+16|0;d=c[k>>2]|0;j=d+8|0;e=c[j>>2]|0;if(e|0){i=0;while(1){if((i|0)<(c[e+4>>2]|0))g=0;else break;while(1){f=c[e>>2]|0;if((g|0)>=(c[f+(i*48|0)+4>>2]|0))break;e=(c[f+(i*48|0)>>2]|0)+(g<<4)|0;c[B>>2]=c[e>>2];c[B+4>>2]=c[e+4>>2];c[B+8>>2]=c[e+8>>2];c[B+12>>2]=c[e+12>>2];N=+h[B>>3];h[K>>3]=+h[(+h[K>>3]>3];M=+h[s>>3];h[D>>3]=+h[(+h[D>>3]>3];h[F>>3]=+h[(+h[F>>3]>N?F:B)>>3];h[E>>3]=+h[(+h[E>>3]>M?F:B)+8>>3];g=g+1|0;e=c[j>>2]|0}i=i+1|0}e=c[d+96>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];kM(x,H,e,d);c[K>>2]=c[x>>2];c[K+4>>2]=c[x+4>>2];c[K+8>>2]=c[x+8>>2];c[K+12>>2]=c[x+12>>2];c[K+16>>2]=c[x+16>>2];c[K+20>>2]=c[x+20>>2];c[K+24>>2]=c[x+24>>2];c[K+28>>2]=c[x+28>>2];d=c[k>>2]|0}e=c[d+100>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];kM(y,H,e,d);c[K>>2]=c[y>>2];c[K+4>>2]=c[y+4>>2];c[K+8>>2]=c[y+8>>2];c[K+12>>2]=c[y+12>>2];c[K+16>>2]=c[y+16>>2];c[K+20>>2]=c[y+20>>2];c[K+24>>2]=c[y+24>>2];c[K+28>>2]=c[y+28>>2];d=c[k>>2]|0}e=c[d+104>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];kM(z,H,e,d);c[K>>2]=c[z>>2];c[K+4>>2]=c[z+4>>2];c[K+8>>2]=c[z+8>>2];c[K+12>>2]=c[z+12>>2];c[K+16>>2]=c[z+16>>2];c[K+20>>2]=c[z+20>>2];c[K+24>>2]=c[z+24>>2];c[K+28>>2]=c[z+28>>2];d=c[k>>2]|0}d=c[d+108>>2]|0;if(d|0?a[d+81>>0]|0:0){k=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];kM(A,H,d,k);c[K>>2]=c[A>>2];c[K+4>>2]=c[A+4>>2];c[K+8>>2]=c[A+8>>2];c[K+12>>2]=c[A+12>>2];c[K+16>>2]=c[A+16>>2];c[K+20>>2]=c[A+20>>2];c[K+24>>2]=c[A+24>>2];c[K+28>>2]=c[A+28>>2]}}m=Fx(b,m)|0}n=Sy(b,n)|0}d=c[J>>2]|0;f=c[d+180>>2]|0;g=d+184|0;i=G+8|0;j=G+16|0;k=G+24|0;e=1;while(1){if((e|0)>(f|0))break;P=+h[(c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+16>>3];h[G>>3]=P;C=c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0;O=+h[C+24>>3];h[i>>3]=O;M=+h[C+32>>3];h[j>>3]=M;N=+h[C+40>>3];h[k>>3]=N;h[K>>3]=+h[(+h[K>>3]>3];h[D>>3]=+h[(+h[D>>3]>3];h[F>>3]=+h[(+h[F>>3]>M?K:G)+16>>3];h[E>>3]=+h[(+h[E>>3]>N?K:G)+24>>3];e=e+1|0}e=c[d+12>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[d+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];kM(I,H,e,d);c[K>>2]=c[I>>2];c[K+4>>2]=c[I+4>>2];c[K+8>>2]=c[I+8>>2];c[K+12>>2]=c[I+12>>2];c[K+16>>2]=c[I+16>>2];c[K+20>>2]=c[I+20>>2];c[K+24>>2]=c[I+24>>2];c[K+28>>2]=c[I+28>>2];d=c[J>>2]|0}J=d+16|0;c[J>>2]=c[K>>2];c[J+4>>2]=c[K+4>>2];c[J+8>>2]=c[K+8>>2];c[J+12>>2]=c[K+12>>2];c[J+16>>2]=c[K+16>>2];c[J+20>>2]=c[K+20>>2];c[J+24>>2]=c[K+24>>2];c[J+28>>2]=c[K+28>>2]}l=L;return}function mM(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function nM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=d;return}function oM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function pM(a){a=a|0;if((c[a+60>>2]|0)==(a|0))a=1;else a=(U$(qy(a)|0,104980,7)|0)==0&1;return a|0}function qM(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;a:do if(!e)switch(oz(b)|0){case 0:{e=mx(a,0,c,191979)|0;break a}case 1:{e=mx(a,1,c,191979)|0;break a}case 2:{e=mx(a,2,c,191979)|0;break a}default:{e=0;break a}}while(0);qx(b,e,d)|0;return e|0}function rM(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+144|0;g=k;i=sM(d)|0;h=Bw(23488,c[4555]|0)|0;j=uA(d,104988,1)|0;zz(j,134401,280,1)|0;Sw(g,128,k+16|0);e=Ry(d)|0;while(1){if(!e)break;a:do if(!(a[(c[e+16>>2]|0)+118>>0]|0)){f=Dx(d,e)|0;while(1){if(!f)break a;tM(f,j,g,h,i);f=Fx(d,f)|0}}while(0);e=Sy(d,e)|0}Ww(g);xw(h)|0;f=$x(j)|0;e=Ry(j)|0;while(1){if(!e)break;h=Sy(j,e)|0;cz(d,e)|0;e=h}_x(j)|0;if(f|0){j=(c[d+16>>2]|0)+136|0;b[j>>1]=b[j>>1]|1}xw(i)|0;l=k;return f|0}function sM(a){a=a|0;var b=0;b=Bw(23524,c[4555]|0)|0;CM(a,b);return b|0}function tM(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+48|0;q=t+32|0;p=t+24|0;s=t+16|0;r=t+8|0;k=t;n=c[b>>2]&3;m=c[((n|0)==3?b:b+48|0)+40>>2]|0;n=c[((n|0)==2?b:b+-48|0)+40>>2]|0;do if(!(a[(c[n+16>>2]|0)+118>>0]|0)){if(!(y$(qy(m)|0,104980,7)|0))o=uM(g,qy(m)|0)|0;else o=0;if(!(y$(qy(n)|0,104980,7)|0))i=uM(g,qy(n)|0)|0;else i=0;h=(o|0)!=0;j=(i|0)!=0;if(h|j){if((o|0)==(i|0)){r=qy(m)|0;s=qy(m)|0;c[k>>2]=r;c[k+4>>2]=s;Ow(0,105003,k)|0;break}g=vM(f,b)|0;if(g|0){wM(b,c[g+16>>2]|0,c[g+20>>2]|0)|0;break}if(!j)if(!(nz(o,n)|0)){yM(f,m,n,wM(b,xM(m,o,e,d)|0,n)|0);break}else{r=qy(n)|0;s=qy(o)|0;c[q>>2]=r;c[q+4>>2]=s;Ow(0,105158,q)|0;break}if(!h)if(!(nz(i,m)|0)){yM(f,m,n,wM(b,m,xM(n,i,e,d)|0)|0);break}else{r=qy(m)|0;s=qy(i)|0;c[p>>2]=r;c[p+4>>2]=s;Ow(0,105121,p)|0;break}if(nz(i,o)|0){q=qy(o)|0;s=qy(i)|0;c[r>>2]=q;c[r+4>>2]=s;Ow(0,105041,r)|0;break}if(!(nz(o,i)|0)){s=xM(m,o,e,d)|0;yM(f,m,n,wM(b,s,xM(n,i,e,d)|0)|0);break}else{q=qy(i)|0;r=qy(o)|0;c[s>>2]=q;c[s+4>>2]=r;Ow(0,105081,s)|0;break}}}while(0);l=t;return}function uM(a,b){a=a|0;b=b|0;a=nb[c[a>>2]&63](a,b,512)|0;if(!a)a=0;else a=c[a+12>>2]|0;return a|0}function vM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=c[b>>2]&3;c[e>>2]=c[((f|0)==3?b:b+48|0)+40>>2];c[e+4>>2]=c[((f|0)==2?b:b+-48|0)+40>>2];b=nb[c[a>>2]&63](a,e,512)|0;l=d;return b|0}function wM(a,b,c){a=a|0;b=b|0;c=c|0;c=Qx(dz(b)|0,b,c,0,1)|0;zz(c,134378,176,1)|0;Ax(a,c)|0;return c|0}function xM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=l;l=l+112|0;g=k;j=k+4|0;Vw(e,105195)|0;i=c[46551]|0;c[46551]=i+1;c[g>>2]=i;X0(j,134313,g)|0;Vw(e,j)|0;j=e+4|0;g=c[j>>2]|0;i=e+8|0;if(g>>>0>=(c[i>>2]|0)>>>0){Tw(e,1)|0;g=c[j>>2]|0}c[j>>2]=g+1;a[g>>0]=58;Vw(e,qy(d)|0)|0;h=ez(d)|0;g=c[j>>2]|0;if(g>>>0>=(c[i>>2]|0)>>>0){Tw(e,1)|0;g=c[j>>2]|0}a[g>>0]=0;e=c[e>>2]|0;c[j>>2]=e;j=$y(h,e,1)|0;zz(j,134365,304,1)|0;a[(c[j+16>>2]|0)+118>>0]=1;Wy(d,j,1)|0;Wy(f,b,1)|0;f=dz(j)|0;c[46384]=qM(f,j,105198,191979,c[46384]|0)|0;f=dz(j)|0;c[46387]=qM(f,j,138e3,131253,c[46387]|0)|0;f=dz(j)|0;c[46377]=qM(f,j,105204,105210,c[46377]|0)|0;l=k;return j|0}function yM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;f=l;l=l+32|0;g=f;n=g+8|0;c[n>>2]=b;m=g+12|0;c[m>>2]=d;o=c[e>>2]&3;i=e+48|0;j=g+16|0;c[j>>2]=c[((o|0)==3?e:i)+40>>2];k=e+-48|0;h=g+20|0;c[h>>2]=c[((o|0)==2?e:k)+40>>2];nb[c[a>>2]&63](a,g,1)|0;c[n>>2]=d;c[m>>2]=b;d=c[e>>2]&3;c[j>>2]=c[((d|0)==2?e:k)+40>>2];c[h>>2]=c[((d|0)==3?e:i)+40>>2];nb[c[a>>2]&63](a,g,1)|0;l=f;return}function zM(a,b,d){a=a|0;b=b|0;d=d|0;d=tH(24)|0;c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[d+16>>2]=c[b+16>>2];c[d+20>>2]=c[b+20>>2];return d|0}function AM(a,b,c){a=a|0;b=b|0;c=c|0;C_(b);return}function BM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[b>>2]|0;e=c[d>>2]|0;if(a>>>0>=e>>>0)if(a>>>0>e>>>0)a=1;else{b=c[b+4>>2]|0;d=c[d+4>>2]|0;return (b>>>0>>0?-1:b>>>0>d>>>0&1)|0}else a=-1;return a|0}function CM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+16|0;g=h;f=a+16|0;e=1;while(1){a=c[f>>2]|0;if((e|0)>(c[a+180>>2]|0))break;a=c[(c[a+184>>2]|0)+(e<<2)>>2]|0;d=qy(a)|0;if(!(nb[c[b>>2]&63](b,d,512)|0)){i=tH(16)|0;c[i+8>>2]=d;c[i+12>>2]=a;nb[c[b>>2]&63](b,i,1)|0}else{c[g>>2]=d;Ow(0,105214,g)|0}CM(a,b);e=e+1|0}l=h;return}function DM(a,b,c){a=a|0;b=b|0;c=c|0;C_(b);return}function EM(a){a=a|0;var b=0,c=0,d=0;d=uA(a,104988,1)|0;zz(d,134401,280,1)|0;b=Ry(a)|0;while(1){if(!b)break;c=Dx(a,b)|0;while(1){if(!c)break;FM(c,d);c=Fx(a,c)|0}b=Sy(a,b)|0}b=Ry(d)|0;while(1){if(!b)break;c=Sy(d,b)|0;GM(b);cz(a,b)|0;b=c}_x(d)|0;return}function FM(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b>>2]&3;f=c[((e|0)==3?b:b+48|0)+40>>2]|0;e=c[((e|0)==2?b:b+-48|0)+40>>2]|0;if(!((a[(c[f+16>>2]|0)+118>>0]|0)==0?!(a[(c[e+16>>2]|0)+118>>0]|0):0)){f=HM(f,d)|0;e=wM(b,f,HM(e,d)|0)|0;f=c[b+16>>2]|0;d=f+8|0;e=c[e+16>>2]|0;c[e+8>>2]=c[d>>2];c[d>>2]=0;d=f+96|0;c[e+96>>2]=c[d>>2];c[d>>2]=0;d=f+108|0;c[e+108>>2]=c[d>>2];c[d>>2]=0;d=f+100|0;c[e+100>>2]=c[d>>2];c[d>>2]=0;f=f+104|0;c[e+104>>2]=c[f>>2];c[f>>2]=0;IM(b)}return}function GM(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;b=c[e>>2]|0;d=c[b+132>>2]|0;if(d){C_(d);b=c[e>>2]|0}d=c[b+8>>2]|0;if(d){tb[c[(c[d+4>>2]|0)+4>>2]&127](a);b=c[e>>2]|0}mH(c[b+104>>2]|0);mH(c[(c[e>>2]|0)+108>>2]|0);Bz(a,134365)|0;return}function HM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=dz(b)|0;a:do if(a[(c[b+16>>2]|0)+118>>0]|0){Wy(d,b,1)|0;b=z$(qy(b)|0,58)|0;if(!b)qa(108182,104635,1225,105266);d=b+1|0;b=$y(f,d,0)|0;if(!b){b=$y(f,d,1)|0;zz(b,134365,304,1)|0;d=rx(f,1,0)|0;while(1){if(!d)break a;g=xx(b,d)|0;e=c[d+12>>2]|0;if((g|0)!=(e|0))qx(b,d,e)|0;d=rx(f,1,d)|0}}}while(0);return b|0}function IM(a){a=a|0;var b=0;b=a+16|0;C_(c[(c[b>>2]|0)+144>>2]|0);JM(a);mH(c[(c[b>>2]|0)+96>>2]|0);mH(c[(c[b>>2]|0)+108>>2]|0);mH(c[(c[b>>2]|0)+100>>2]|0);mH(c[(c[b>>2]|0)+104>>2]|0);Bz(a,134378)|0;return}function JM(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;a=c[e>>2]|0;b=c[a+8>>2]|0;if(b){d=0;while(1){a=c[b>>2]|0;if((d|0)>=(c[b+4>>2]|0))break;C_(c[a+(d*48|0)>>2]|0);d=d+1|0;b=c[(c[e>>2]|0)+8>>2]|0}C_(a);C_(c[(c[e>>2]|0)+8>>2]|0);a=c[e>>2]|0}c[a+8>>2]=0;return}function KM(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=mx(a,b,c,0)|0;if(!e)e=mx(a,b,c,d)|0;return e|0}function LM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+32|0;i=o;h=o+8|0;j=o+16|0;m=z$(b,59)|0;n=d+4|0;e=c[n>>2]|0;k=d+8|0;if(e>>>0>=(c[k>>2]|0)>>>0){Tw(d,1)|0;e=c[n>>2]|0}c[n>>2]=e+1;a[e>>0]=38;if(((m|0)!=0?(f=m-b|0,(f+-2|0)>>>0<=6):0)?(T0(j,b,f)|0,a[j+f>>0]=0,c[h>>2]=j,g=d2(h,23560,252,8,94)|0,(g|0)!=0):0){c[i>>2]=c[g+4>>2];X0(j,134313,i)|0;b=c[n>>2]|0;if(b>>>0>=(c[k>>2]|0)>>>0){Tw(d,1)|0;b=c[n>>2]|0}c[n>>2]=b+1;a[b>>0]=35;Vw(d,j)|0;b=c[n>>2]|0;if(b>>>0>=(c[k>>2]|0)>>>0){Tw(d,1)|0;b=c[n>>2]|0}c[n>>2]=b+1;a[b>>0]=59;b=m+1|0}l=o;return b|0}function MM(a,b){a=a|0;b=b|0;return a$(c[a>>2]|0,c[b>>2]|0)|0}function NM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+1072|0;k=q+8|0;j=q;i=q+16|0;o=q+24|0;c[i>>2]=b;if((c[46552]|0)!=(d|0)){c[46552]=d;a[191878]=0}Sw(o,1024,q+40|0);p=o+4|0;n=o+8|0;while(1){f=b+1|0;c[i>>2]=f;e=a[b>>0]|0;if(!(e<<24>>24))break;do if((e&255)<192)if(e<<24>>24==38){f=PM(i)|0;if(!f)e=38;else{if(f>>>0<127){e=f&255;break}b=c[p>>2]|0;e=b>>>0>=(c[n>>2]|0)>>>0;if(f>>>0<2047){if(e){Tw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=f>>>6|192;e=(f&63|128)&255;break}if(e){Tw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=f>>>12|224;b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){Tw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=f>>>6&63|128;e=(f&63|128)&255}}else{h=0;m=9}else if((e&255)>=224)if((e&255)>=240)if((e&255)<248){h=3;m=9}else{if(!(a[191878]|0)){c[j>>2]=qy(d)|0;Ow(0,106681,j)|0;a[191878]=1}h=-1;e=OM(e,o)|0;m=9}else{h=2;m=9}else{h=1;m=9}while(0);do if((m|0)==9){m=0;g=0;while(1){if((g|0)>=(h|0)){m=34;break}if((a[f>>0]&-64)<<24>>24!=-128)break;b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){Tw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=e;g=g+1|0;e=a[f>>0]|0;f=f+1|0}if((m|0)==34){m=0;c[i>>2]=f;break}c[i>>2]=f;if(!(a[191878]|0)){g=qy(d)|0;c[k>>2]=h+1;c[k+4>>2]=g;Ow(0,106802,k)|0;a[191878]=1}e=OM(e,o)|0}while(0);b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){Tw(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=e;b=c[i>>2]|0}b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){Tw(o,1)|0;b=c[p>>2]|0}a[b>>0]=0;n=c[o>>2]|0;c[p>>2]=n;p=m1(n)|0;Ww(o);l=q;return p|0}function OM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+16|0;g=j;a[g>>0]=b;a[g+1>>0]=0;g=QM(g)|0;h=d+4|0;i=d+8|0;e=V_(g)|0;f=g;while(1){if((e|0)<=1)break;b=c[h>>2]|0;if(b>>>0>=(c[i>>2]|0)>>>0){Tw(d,1)|0;b=c[h>>2]|0}k=a[f>>0]|0;c[h>>2]=b+1;a[b>>0]=k;e=e+-1|0;f=f+1|0}k=a[f>>0]|0;C_(g);l=j;return k|0}function PM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i;d=i+8|0;e=c[b>>2]|0;a:do if((a[e>>0]|0)!=35){c[h>>2]=d;g=0;b:while(1){if((g|0)>=8){d=0;break a}f=a[e+g>>0]|0;switch(f<<24>>24){case 0:{d=0;break a}case 59:break b;default:{}}a[d>>0]=f;d=d+1|0;g=g+1|0}a[d>>0]=0;d=d2(h,23560,252,8,94)|0;if(!d)d=0;else{e=e+(g+1)|0;d=c[d+4>>2]|0}}else{h=a[e+1>>0]|0;d=h&255;c:do if((h|32)<<24>>24==120){h=0;g=2;while(1){if((g|0)>=8){f=h;break c}f=a[e+g>>0]|0;d=f&255;if((f+-65&255)>=6)if((f+-97&255)>=6)if((f+-48&255)<10)f=-48;else{f=h;break c}else f=-87;else f=-55;d=f+d|0;h=d+(h<<4)|0;g=g+1|0}}else{f=0;g=1;while(1){if((g|0)>=8)break c;h=a[e+g>>0]|0;d=h&255;if((h+-48&255)>=10)break c;f=(f*10|0)+-48+d|0;g=g+1|0}}while(0);d=(d|0)==59;e=d?e+(g+1)|0:e;d=d?f:0}while(0);c[b>>2]=e;l=i;return d|0}function QM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+1056|0;g=k;i=k+8|0;c[g>>2]=b;Sw(i,1024,k+24|0);j=i+4|0;h=i+8|0;while(1){c[g>>2]=b+1;d=a[b>>0]|0;if(!(d<<24>>24))break;b=d&255;if(d<<24>>24==38){b=PM(g)|0;if(!b){b=38;f=6}else f=5}else f=5;do if((f|0)==5){f=0;if(b>>>0<127)f=6;else{d=c[j>>2]|0;e=d>>>0>=(c[h>>2]|0)>>>0;if(b>>>0<2047){if(e){Tw(i,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=b>>>6|192;d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){Tw(i,1)|0;d=c[j>>2]|0}b=b&63|128;break}if(e){Tw(i,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=b>>>12|224;d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){Tw(i,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=b>>>6&63|128;d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){Tw(i,1)|0;d=c[j>>2]|0}b=b&63|128}}while(0);if((f|0)==6){d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){Tw(i,1)|0;d=c[j>>2]|0}}c[j>>2]=d+1;a[d>>0]=b;b=c[g>>2]|0}b=c[j>>2]|0;if(b>>>0>=(c[h>>2]|0)>>>0){Tw(i,1)|0;b=c[j>>2]|0}a[b>>0]=0;h=c[i>>2]|0;c[j>>2]=h;j=m1(h)|0;Ww(i);l=k;return j|0}function RM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+1040|0;g=i;Sw(g,1024,i+16|0);h=g+4|0;f=g+8|0;while(1){d=b+1|0;e=a[b>>0]|0;if(!(e<<24>>24))break;if((e&255)<127){b=c[h>>2]|0;if(b>>>0>=(c[f>>2]|0)>>>0){Tw(g,1)|0;b=c[h>>2]|0}c[h>>2]=b+1;a[b>>0]=e;b=d;continue}else{e=a[d>>0]&63|e<<6&255;d=c[h>>2]|0;if(d>>>0>=(c[f>>2]|0)>>>0){Tw(g,1)|0;d=c[h>>2]|0}c[h>>2]=d+1;a[d>>0]=e;b=b+2|0;continue}}b=c[h>>2]|0;if(b>>>0>=(c[f>>2]|0)>>>0){Tw(g,1)|0;b=c[h>>2]|0}a[b>>0]=0;f=c[g>>2]|0;c[h>>2]=f;h=m1(f)|0;Ww(g);l=i;return h|0}function SM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+80|0;e=n+48|0;d=n+32|0;f=n+64|0;g=n+16|0;i=n;j=b+16|0;k=a+16|0;m=c[k>>2]|0;if(((+h[j>>3]>=+h[m+48>>3]?+h[m+64>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=+h[m+56>>3]:0)?+h[m+72>>3]>=+h[b+8>>3]:0){m=m+16|0;c[d>>2]=c[j>>2];c[d+4>>2]=c[j+4>>2];c[d+8>>2]=c[j+8>>2];c[d+12>>2]=c[j+12>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];TM(g,d,e);c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];nM(i,d,e);c[f>>2]=a;c[f+4>>2]=0;d=c[(c[(c[(c[k>>2]|0)+8>>2]|0)+4>>2]|0)+12>>2]|0;c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];d=lb[d&127](f,e)|0}else d=0;l=n;return d|0}function TM(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function UM(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;e=l;l=l+80|0;j=e+64|0;k=e+48|0;m=e;n=e+32|0;g=e+16|0;h[m>>3]=+h[a+24>>3]*.5;h[m+8>>3]=+h[a+32>>3]*.5;a=a+56|0;c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];nM(n,k,j);i=+h[n>>3];f=+h[n+8>>3];c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];oM(g,k,j);d=+h[g+8>>3];if((+h[b+16>>3]>=i?+h[g>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=f:0)a=d>=+h[b+8>>3]&1;else a=0;l=e;return a|0}function VM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+80|0;k=n+48|0;j=n;h=a+16|0;a=c[h>>2]|0;i=c[a+8>>2]|0;a:do if((i|0)!=0?(g=i+8|0,c[j>>2]=c[g>>2],c[j+4>>2]=c[g+4>>2],c[j+8>>2]=c[g+8>>2],c[j+12>>2]=c[g+12>>2],c[j+16>>2]=c[g+16>>2],c[j+20>>2]=c[g+20>>2],c[j+24>>2]=c[g+24>>2],c[j+28>>2]=c[g+28>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(WM(j,k)|0)!=0):0){d=i+4|0;a=0;while(1){if((a|0)>=(c[d>>2]|0))break;e=j;f=(c[i>>2]|0)+(a*48|0)|0;g=e+48|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[k+16>>2]=c[b+16>>2];c[k+20>>2]=c[b+20>>2];c[k+24>>2]=c[b+24>>2];c[k+28>>2]=c[b+28>>2];if(!((XM(j,k)|0)<<24>>24))a=a+1|0;else{a=1;break a}}a=c[h>>2]|0;m=7}else m=7;while(0);do if((m|0)==7){a=c[a+96>>2]|0;if(a|0?(c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(UM(a,k)|0)<<24>>24):0){a=1;break}a=0}while(0);l=n;return a|0}function WM(a,b){a=a|0;b=b|0;if((+h[a+16>>3]>=+h[b>>3]?+h[b+16>>3]>=+h[a>>3]:0)?+h[a+24>>3]>=+h[b+8>>3]:0)a=+h[b+24>>3]>=+h[a+8>>3]&1;else a=0;return a|0}function XM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+96|0;k=n+64|0;j=n+48|0;i=n+32|0;f=n+16|0;g=n;m=a+4|0;d=c[m>>2]|0;if(!d)qa(106911,104635,1637,106919);e=c[a>>2]|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];e=1;while(1){if((e|0)>=(d|0)){h=7;break}d=(c[a>>2]|0)+(e<<4)|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];c[j+12>>2]=c[g+12>>2];c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[k+16>>2]=c[b+16>>2];c[k+20>>2]=c[b+20>>2];c[k+24>>2]=c[b+24>>2];c[k+28>>2]=c[b+28>>2];if((UG(i,j,k)|0)!=-1){d=1;break};c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];e=e+1|0;d=c[m>>2]|0}do if((h|0)==7){d=c[a+8>>2]|0;if(d|0?(g=a+16|0,h=c[a>>2]|0,c[i>>2]=c[g>>2],c[i+4>>2]=c[g+4>>2],c[i+8>>2]=c[g+8>>2],c[i+12>>2]=c[g+12>>2],c[j>>2]=c[h>>2],c[j+4>>2]=c[h+4>>2],c[j+8>>2]=c[h+8>>2],c[j+12>>2]=c[h+12>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(YM(i,j,d,k)|0)<<24>>24):0){d=1;break}d=c[a+12>>2]|0;if(d|0?(h=a+32|0,m=(c[a>>2]|0)+((c[m>>2]|0)+-1<<4)|0,c[i>>2]=c[h>>2],c[i+4>>2]=c[h+4>>2],c[i+8>>2]=c[h+8>>2],c[i+12>>2]=c[h+12>>2],c[j>>2]=c[m>>2],c[j+4>>2]=c[m+4>>2],c[j+8>>2]=c[m+8>>2],c[j+12>>2]=c[m+12>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(YM(i,j,d,k)|0)<<24>>24):0){d=1;break}d=0}while(0);l=n;return d|0}function YM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0;m=l;l=l+160|0;g=m+144|0;f=m+128|0;n=m+96|0;i=m+64|0;j=m+32|0;k=m;o=+h[e+16>>3];c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];IE(n,f,g,1.0,d);if(((o>=+h[n>>3]?(c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],IE(i,f,g,1.0,d),+h[i+16>>3]>=+h[e>>3]):0)?(o=+h[e+24>>3],c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],IE(j,f,g,1.0,d),o>=+h[j+8>>3]):0)?(c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],IE(k,f,g,1.0,d),+h[k+24>>3]>=+h[e+8>>3]):0)f=1;else f=0;l=m;return f|0}function ZM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;a:do if((b|0)!=0?(e=a[b>>0]|0,e<<24>>24!=0):0){do switch(e<<24>>24|0){case 48:{d=2;break a}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:{d=10;break a}case 67:case 99:{e=b+1|0;if(!(N$(e,106934)|0)){d=4;break a}if(!(N$(e,106940)|0)){d=12;break a}break}case 70:case 102:{if(!(N$(b+1|0,106948)|0)){d=2;break a}break}case 76:case 108:{if(!(N$(b+1|0,106953)|0)){d=2;break a}break}case 78:case 110:{e=b+1|0;if(!(N$(e,106957)|0)){d=0;break a}if(!(N$(e,106961)|0)){d=2;break a}break}case 79:case 111:{if(!(N$(b+1|0,106963)|0)){d=8;break a}break}case 80:case 112:{if(!(N$(b+1|0,106968)|0)){d=6;break a}break}case 83:case 115:{if(!(N$(b+1|0,106976)|0)){d=10;break a}break}case 84:case 116:{if(!(N$(b+1|0,106982)|0)){d=10;break a}break}case 89:case 121:{if(!(N$(b+1|0,106986)|0)){d=10;break a}break}default:{}}while(0);c[f>>2]=b;Ow(0,106989,f)|0}while(0);l=g;return d|0}function _M(d,f){d=d|0;f=f|0;var g=0;g=wx(d,107030)|0;if(g)if(!(a[g>>0]|0))f=0;else f=ZM(g,f)|0;d=(c[d+16>>2]|0)+136|0;b[d>>1]=f|e[d>>1];return}function $M(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0;v=l;l=l+32|0;p=v+16|0;r=v;t=e&1;u=e&2;a:do if((c|0)==2){s=+h[a+16>>3];f=+h[a>>3];j=+h[a+24>>3];i=+h[a+8>>3];f=f-(s-f);h[p>>3]=f;h[r>>3]=s;i=i-(j-i);h[p+8>>3]=i;h[r+8>>3]=j}else{g=+h[a>>3];h[r>>3]=g;h[p>>3]=g;j=+h[a+8>>3];m=r+8|0;h[m>>3]=j;n=p+8|0;h[n>>3]=j;e=0;f=g;i=j;while(1){if((e|0)>=(c|0)){s=g;break a}w=a+(e<<4)|0;q=+h[w>>3];k=+h[(q>3];h[p>>3]=k;s=+h[a+(e<<4)+8>>3];o=+h[(s>3];h[n>>3]=o;q=+h[(q>g?w:r)>>3];h[r>>3]=q;s=+h[(s>j?w:r)+8>>3];h[m>>3]=s;e=e+1|0;f=k;i=o;g=q;j=s}}while(0);g=(s-f)*.5;q=g+f;o=(j-i)*.5;k=o+i;if(!t){f=j-k;j=d;i=+F(+j);j=+E(+j);if(!u){g=i*f-k;f=-k-o*i}else{f=i*f;g=k-f;f=f+k}h[b+8>>3]=g;h[b+24>>3]=f;d=j*(s-q);h[b>>3]=q-d;h[b+16>>3]=d+q}else{d=+C(+(o*o+g*g));h[b+8>>3]=u|0?k:-k;h[b>>3]=q;h[b+16>>3]=d*.25;h[b+24>>3]=d}l=v;return}function aN(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0;e=a+16|0;f=c[e>>2]|0;if(!(b<<24>>24)){d=+h[f+32>>3]*36.0;h[f+88>>3]=d;a=f+40|0}else{d=+h[f+40>>3]*36.0;h[f+88>>3]=d;a=f+32|0}h[f+96>>3]=d;h[(c[e>>2]|0)+80>>3]=+h[a>>3]*72.0;return}function bN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0;y=l;l=l+16|0;j=y+8|0;x=4;w=B_(40)|0;c[w>>2]=0;s=y;o=0;e=$(29,b|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;a:do if((g|0)!=1){o=0;v=$(23,e<<3|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){e=D3(c[f>>2]|0,w|0,x|0)|0;if(!e)bb(f|0,p|0);z=p}else e=-1;if((e|0)!=1){if(!(a[191874]|0))t=0;else{o=0;e=_(3)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){n=0;k=0;m=0;j=0;i=0;d=v;h=v;e=z;g=0;u=74;break}t=e}o=0;e=aa(95,b|0,107038)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1){c[46553]=0;b:do if(e|0?(i=a[e>>0]|0,i<<24>>24):0){h=e;f=i;g=0;while(1){i=h+1|0;if(!(f<<24>>24))break b;switch(f<<24>>24|0){case 99:{e=8;u=16;break}case 105:{e=18;u=16;break}case 109:{e=1;u=16;break}case 114:{e=4;u=16;break}case 115:{e=2;u=16;break}default:e=g}if((u|0)==16){u=0;e=g|e;c[46553]=e}h=i;f=a[i>>0]|0;g=e}}while(0);if(d|0){o=0;ca(20,0,107042,j|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){n=0;k=t;m=0;j=0;i=0;d=v;h=v;e=z;g=0;u=74;break}}o=0;r=aa(96,b|0,0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){m=c[r+16>>2]|0;if(c[46553]&2|0){o=0;ja(26,c[15686]|0,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break}}o=0;g=$(25,b|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){n=0;while(1){if(!g)break;o=0;e=aa(97,b|0,g|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=D3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}i=n;while(1){if(!e)break;if(!((c[46363]|0)==2?(c[(c[e+16>>2]|0)+8>>2]|0)!=0:0))u=32;c:do if((u|0)==32){u=0;do if(a[191874]|0){k=c[e>>2]&3;j=(c[c[((k|0)==3?e:e+48|0)+40>>2]>>2]|0)>>>4;k=(c[c[((k|0)==2?e:e+-48|0)+40>>2]>>2]|0)>>>4;if(j>>>0>k>>>0){o=0;f=ca(31,t|0,k|0,j|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){d=D3(c[h>>2]|0,w|0,x|0)|0;if(!d)bb(h|0,p|0);z=p}else d=-1;if((d|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}if(f|0)break c;o=0;ka(64,t|0,k|0,j|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){h=D3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}break}else{o=0;f=ca(31,t|0,j|0,k|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){d=D3(c[h>>2]|0,w|0,x|0)|0;if(!d)bb(h|0,p|0);z=p}else d=-1;if((d|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}if(f|0)break c;o=0;ka(64,t|0,j|0,k|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){h=D3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}break}}while(0);c[v+(i<<3)+4>>2]=e;o=0;d=$(30,e|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=D3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}c[v+(i<<3)>>2]=d;i=i+1|0}while(0);o=0;e=aa(98,b|0,e|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=D3(c[f>>2]|0,w|0,x|0)|0;if(!h)bb(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}}o=0;g=aa(84,b|0,g|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}n=i}o=0;j=$(31,n<<3|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){o=0;ma(28,v|0,n|0,8,99);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){g=c[m>>2]|0;o=0;ia(107,g+2|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){i=c[m+16>>2]|0;d=i+(g*40|0)|0;i=i+((g+1|0)*40|0)|0;q=c[15686]|0;h=0;while(1){if((h|0)>=(n|0))break;if((h|0)>0?c[46553]&16|0:0){o=0;ja(26,q|0,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}}e=c[v+(h<<3)+4>>2]|0;k=c[e>>2]&3;g=c[(c[(c[((k|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;e=c[(c[(c[((k|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;if((g|0)==(e|0)){o=0;ma(29,m|0,g|0,i|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}}else{o=0;ka(65,m|0,e|0,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}o=0;ka(65,m|0,g|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}}o=0;e=ca(32,m|0,i|0,d|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}if(e|0){k=t;m=j;i=r;d=v;h=v;break a}e=j+(h<<3)|0;o=0;ma(30,s|0,m|0,d|0,i|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}g=s;k=c[g+4>>2]|0;c[e>>2]=c[g>>2];c[e+4>>2]=k;o=0;ia(108,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}h=h+1|0}o=0;ha(8);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){o=0;e=$(32,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1){c[r+20>>2]=e;o=0;e=$(33,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)!=1){c[r+24>>2]=e;o=0;ka(66,n|0,j|0,r|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){w=C3(186216,1,w|0,x|0)|0;x=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)!=1){k=t;m=j;i=r;d=v;h=v;e=0;g=q;u=74}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=0;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=0;u=74}}else{k=t;m=0;i=r;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=0;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=0;m=0;j=0;i=0;d=0;h=v;e=z;g=0;u=74}}else{n=0;k=0;m=0;j=0;i=0;d=0;h=0;e=z;g=0;u=74}while(0);d:while(1){if((u|0)==74){u=0;if(e|0){q=g;continue}o=0;ia(109,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){A=g;f=h;q=d;r=i;s=j;t=m;v=k;u=n;e=z;g=A;h=f;d=q;i=r;j=s;m=t;k=v;n=u;u=74;continue}if(c[46553]&4|0){o=0;na(8,g|0,i|0,n|0,m|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=g;q=h;r=d;s=i;t=j;v=m;A=k;u=n;e=z;g=f;h=q;d=r;i=s;j=t;m=v;k=A;n=u;u=74;continue}}o=0;oa(10,b|0,i|0,n|0,m|0,d|0,0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=g;q=h;r=d;s=i;t=j;v=m;A=k;u=n;e=z;g=f;h=q;d=r;i=s;j=t;m=v;k=A;n=u;u=74;continue}q=g}if(!(a[191874]|0))e=0;else{o=0;ia(110,k|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74;continue}e=0}while(1){if((e|0)>=(n|0))break;o=0;ia(103,c[m+(e<<3)+4>>2]|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=D3(c[f>>2]|0,w|0,x|0)|0;if(!g)bb(f|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;g=q;u=74;continue d}e=e+1|0}o=0;ia(103,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74;continue}o=0;ia(111,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74;continue}o=0;ia(103,h|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=D3(c[e>>2]|0,w|0,x|0)|0;if(!f)bb(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74}else break}C_(w|0);l=y;return}function cN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+64|0;p=q+32|0;o=q+16|0;j=q;k=q+48|0;C1(107909,a)|0;C1(107920,a)|0;m=b+16|0;n=j+8|0;i=k+4|0;g=0;while(1){if((g|0)>=(c[b>>2]|0))break;d=c[m>>2]|0;e=c[d+(g*40|0)+20>>2]|0;f=c[d+(g*40|0)+24>>2]|0;if((e|0)==(f|0)){XN(j,e);d=~~+h[j>>3];e=~~+h[n>>3]}else{ZN(k,(c[e>>2]&1|0)==0?e:f,d+(g*40|0)|0);d=c[k>>2]|0;e=c[i>>2]|0}c[o>>2]=g;c[o+4>>2]=d;c[o+8>>2]=e;f1(a,107940,o)|0;g=g+1|0}f=b+4|0;e=b+20|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;o=c[e>>2]|0;b=c[o+(d*24|0)+16>>2]|0;r=+h[o+(d*24|0)>>3];c[p>>2]=c[o+(d*24|0)+12>>2];c[p+4>>2]=b;h[p+8>>3]=r;f1(a,107960,p)|0;d=d+1|0}C1(107982,a)|0;l=q;return}function dN(a){a=a|0;var b=0.0,d=0.0,e=0,f=0;f=c[a>>2]&3;e=c[(c[((f|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0;a=c[(c[((f|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0;b=+h[e+16>>3]-+h[a+16>>3];d=+h[e+24>>3]-+h[a+24>>3];return ~~(d*d+b*b)|0}function eN(a,b){a=a|0;b=b|0;return (c[a>>2]|0)-(c[b>>2]|0)|0}function fN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;j=n;XN(n+16|0,d);k=d+32|0;m=d+36|0;g=0;while(1){if((g|0)>=(c[k>>2]|0))break;h=c[(c[m>>2]|0)+(g<<2)>>2]|0;do if(!(a[h+36>>0]|0)){i=c[h+20>>2]|0;if((i|0)==(d|0)){VN(j,h,c[h+24>>2]|0);oO(b,f,h,0.0)|0;break}else{VN(j,h,i);oO(b,e,h,0.0)|0;break}}while(0);g=g+1|0}c[b>>2]=(c[b>>2]|0)+2;l=n;return}function gN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+32|0;h=k;XN(k+16|0,b);i=b+32|0;j=b+36|0;f=0;while(1){if((f|0)>=(c[i>>2]|0))break;g=c[(c[j>>2]|0)+(f<<2)>>2]|0;e=c[g+20>>2]|0;if((e|0)==(b|0))e=c[g+24>>2]|0;VN(h,g,e);oO(a,d,g,0.0)|0;f=f+1|0}c[a>>2]=(c[a>>2]|0)+1;c[d+24>>2]=b;c[d+20>>2]=b;l=k;return}function hN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+128|0;C=H+64|0;n=H+48|0;D=H+32|0;E=H+16|0;F=H;g=0;i=e;while(1){if(!i)break;g=g+1|0;i=c[i+8>>2]|0}B=tH((g*56|0)+-112|0)|0;c[C+52>>2]=0;c[C+48>>2]=0;A=e+8|0;e=c[A>>2]|0;i=c[e+8>>2]|0;g=c[e+20>>2]|0;if(c[g>>2]&1)g=c[e+24>>2]|0;VN(n,e,g);j=e;q=e;p=0.0;o=+h[n>>3];z=0;m=0.0;x=+h[n+8>>3];while(1){y=i+8|0;if(!(c[y>>2]|0))break;v=WN(j,i)|0;MR(d,v,c[q+12>>2]|0);t=q+36|0;u=i+36|0;if((a[t>>0]|0)==(a[u>>0]|0))if((c[y>>2]|0)==(f|0)){VN(E,i,v);e=E;G=12}else{j=q;e=z;k=x}else{XN(D,v);e=D;G=12}if((G|0)==12){G=0;w=+h[e>>3];k=+h[e+8>>3];e=a[t>>0]|0;s=e<<24>>24==0;r=(q|0)==(c[A>>2]|0);if(s){if(!(a[u>>0]|0))e=0;else e=(c[i+20>>2]|0)==(v|0)?4:2;n=v+48|0;q=g+48|0;j=g+40|0;g=r?0:p>o?4:2}else{if(e<<24>>24==(a[u>>0]|0))e=0;else e=(c[i+20>>2]|0)==(v|0)?1:3;n=v+40|0;q=g+40|0;j=g+48|0;g=r?0:m>x?1:3}YN(C,s&1,+h[j>>3],+h[q>>3],+h[n>>3],g,e);q=z+1|0;g=B+(z*56|0)|0;e=C;j=g+56|0;do{c[g>>2]=c[e>>2];g=g+4|0;e=e+4|0}while((g|0)<(j|0));if((a[t>>0]|0)!=(a[u>>0]|0)?(c[y>>2]|0)==(f|0):0){VN(F,i,v);n=(a[u>>0]|0)==0;e=v+40|0;g=v+48|0;p=+h[(n?g:e)>>3];YN(C,n&1,+h[(n?e:g)>>3],p,p,n?(o>w?4:2):x>k?1:3,0);n=z+2|0;g=B+(q*56|0)|0;e=C;j=g+56|0;do{c[g>>2]=c[e>>2];g=g+4|0;e=e+4|0}while((g|0)<(j|0));g=v;j=i;p=o;o=w;e=n;m=x}else{g=v;j=i;p=o;o=w;e=q;m=x}}v=i;i=c[y>>2]|0;q=j;z=e;x=k;j=v}i=E_(B,z*56|0)|0;e=z+-1|0;g=0;while(1){if((g|0)>=(z|0))break;if((g|0)>0)c[i+(g*56|0)+48>>2]=i+((g+-1|0)*56|0);if((g|0)<(e|0)){G=g+1|0;c[i+(g*56|0)+52>>2]=i+(G*56|0);g=G;continue}else{g=g+1|0;continue}}c[b>>2]=z;c[b+4>>2]=i;l=H;return}function iN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=Bw(25588,c[4555]|0)|0;k=a+8|0;i=0;while(1){if((i|0)>=(c[a>>2]|0))break;b=(c[k>>2]|0)+(i*72|0)|0;if(!(c[b>>2]&4)){while(1){d=c[(c[b+36>>2]|0)+8>>2]|0;if(!d)break;d=c[d+20>>2]|0;if(!d)break;if(!(c[d>>2]&1))b=d;else break}g=tH(40)|0;c[g+36>>2]=b;h[g+8>>3]=+h[b+40>>3];f=b;d=c[b>>2]|0;while(1){c[f>>2]=d|4;d=c[c[f+36>>2]>>2]|0;if(!d)break;e=c[d+24>>2]|0;if(!e)break;d=c[e>>2]|0;if(d&1|0)break;else f=e}h[g+16>>3]=+h[f+56>>3];QN(j,g,+h[b+48>>3])}i=i+1|0}return j|0}function jN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=Bw(25588,c[4555]|0)|0;k=a+8|0;i=0;while(1){if((i|0)>=(c[a>>2]|0))break;b=(c[k>>2]|0)+(i*72|0)|0;if(!(c[b>>2]&2)){while(1){d=c[(c[b+36>>2]|0)+12>>2]|0;if(!d)break;d=c[d+20>>2]|0;if(!d)break;if(!(c[d>>2]&1))b=d;else break}g=tH(40)|0;c[g+36>>2]=b;h[g+8>>3]=+h[b+48>>3];f=b;d=c[b>>2]|0;while(1){c[f>>2]=d|2;d=c[(c[f+36>>2]|0)+4>>2]|0;if(!d)break;e=c[d+24>>2]|0;if(!e)break;d=c[e>>2]|0;if(d&1|0)break;else f=e}h[g+16>>3]=+h[f+64>>3];QN(j,g,+h[b+40>>3])}i=i+1|0}return j|0}function kN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=e+20|0;i=e+24|0;e=0;while(1){if((e|0)>=(b|0))break;g=c[d+(e<<3)>>2]|0;h=c[d+(e<<3)+4>>2]|0;f=0;while(1){if((f|0)>=(g|0))break;k=h+(f*56|0)|0;PN(tN(c[((a[k>>0]|0)==0?j:i)>>2]|0,k)|0,k);f=f+1|0}e=e+1|0}return}function lN(a){a=a|0;var b=0,d=0;d=a+20|0;vN(c[d>>2]|0);b=a+24|0;vN(c[b>>2]|0);wN(c[d>>2]|0);wN(c[b>>2]|0);xN(c[d>>2]|0,a);xN(c[b>>2]|0,a);yN(c[d>>2]|0);yN(c[b>>2]|0);return}function mN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0,E=0.0;z=l;l=l+224|0;n=z+176|0;m=z+208|0;x=z+160|0;y=z+128|0;k=z+96|0;t=z+64|0;u=z;o=z+32|0;v=u+8|0;h[v>>3]=1797693134862315708145274.0e284;h[u>>3]=1797693134862315708145274.0e284;w=u+24|0;h[w>>3]=-1797693134862315708145274.0e284;p=u+16|0;h[p>>3]=-1797693134862315708145274.0e284;C1(107157,a)|0;c[n>>2]=10;c[n+4>>2]=10;f1(a,107563,n)|0;C1(135183,a)|0;i=b+4|0;j=b+12|0;q=t+8|0;r=t+16|0;s=t+24|0;g=0;while(1){if((g|0)>=(c[i>>2]|0))break;D=(c[j>>2]|0)+(g*72|0)+40|0;c[t>>2]=c[D>>2];c[t+4>>2]=c[D+4>>2];c[t+8>>2]=c[D+8>>2];c[t+12>>2]=c[D+12>>2];c[t+16>>2]=c[D+16>>2];c[t+20>>2]=c[D+20>>2];c[t+24>>2]=c[D+24>>2];c[t+28>>2]=c[D+28>>2];C=+h[q>>3];B=+h[r>>3];A=+h[s>>3];h[k>>3]=+h[t>>3];h[k+8>>3]=C;h[k+16>>3]=B;h[k+24>>3]=A;f1(a,135202,k)|0;g=g+1|0}g=0;while(1){if((g|0)>=(d|0))break;D=c[f+(g<<3)+4>>2]|0;k=e+(g<<3)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[n>>2]=c[u>>2];c[n+4>>2]=c[u+4>>2];c[n+8>>2]=c[u+8>>2];c[n+12>>2]=c[u+12>>2];c[n+16>>2]=c[u+16>>2];c[n+20>>2]=c[u+20>>2];c[n+24>>2]=c[u+24>>2];c[n+28>>2]=c[u+28>>2];uN(o,a,D,m,b,n);c[u>>2]=c[o>>2];c[u+4>>2]=c[o+4>>2];c[u+8>>2]=c[o+8>>2];c[u+12>>2]=c[o+12>>2];c[u+16>>2]=c[o+16>>2];c[u+20>>2]=c[o+20>>2];c[u+24>>2]=c[o+24>>2];c[u+28>>2]=c[o+28>>2];g=g+1|0}C1(107580,a)|0;i=b+8|0;g=0;while(1){if((g|0)>=(c[b>>2]|0))break;D=(c[i>>2]|0)+(g*72|0)+40|0;c[t>>2]=c[D>>2];c[t+4>>2]=c[D+4>>2];c[t+8>>2]=c[D+8>>2];c[t+12>>2]=c[D+12>>2];c[t+16>>2]=c[D+16>>2];c[t+20>>2]=c[D+20>>2];c[t+24>>2]=c[D+24>>2];c[t+28>>2]=c[D+28>>2];E=+h[t>>3];A=+h[q>>3];B=+h[r>>3];C=+h[s>>3];h[y>>3]=E;h[y+8>>3]=A;h[y+16>>3]=B;h[y+24>>3]=C;f1(a,135239,y)|0;h[u>>3]=+h[(+h[u>>3]>3];h[v>>3]=+h[(+h[v>>3]>3];h[p>>3]=+h[(+h[p>>3]>B?u:t)+16>>3];h[w>>3]=+h[(+h[w>>3]>C?u:t)+24>>3];g=g+1|0}v=~~(+h[v>>3]+10.0);y=~~(+h[p>>3]+10.0);D=~~(+h[w>>3]+10.0);c[x>>2]=~~(+h[u>>3]+10.0);c[x+4>>2]=v;c[x+8>>2]=y;c[x+12>>2]=D;f1(a,107605,x)|0;l=z;return}function nN(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;N=l;l=l+112|0;F=N+88|0;E=N+72|0;M=N+32|0;I=N+16|0;J=N;K=N+56|0;L=N+40|0;G=c[15686]|0;w=(i|0)==0;x=J+8|0;y=I+8|0;v=0;m=0;n=0;o=0;p=0;i=0;while(1){if((v|0)>=(e|0))break;z=c[g+(v<<3)+4>>2]|0;A=z+48|0;u=(c[(c[((c[z>>2]&3|0)==3?z:A)+40>>2]|0)+16>>2]|0)+16|0;B=z+16|0;C=(c[B>>2]|0)+16|0;c[E>>2]=c[u>>2];c[E+4>>2]=c[u+4>>2];c[E+8>>2]=c[u+8>>2];c[E+12>>2]=c[u+12>>2];c[F>>2]=c[C>>2];c[F+4>>2]=c[C+4>>2];c[F+8>>2]=c[C+8>>2];c[F+12>>2]=c[C+12>>2];oN(K,E,F);c[I>>2]=c[K>>2];c[I+4>>2]=c[K+4>>2];c[I+8>>2]=c[K+8>>2];c[I+12>>2]=c[K+12>>2];C=z+-48|0;u=(c[(c[((c[z>>2]&3|0)==2?z:C)+40>>2]|0)+16>>2]|0)+16|0;t=(c[B>>2]|0)+56|0;c[E>>2]=c[u>>2];c[E+4>>2]=c[u+4>>2];c[E+8>>2]=c[u+8>>2];c[E+12>>2]=c[u+12>>2];c[F>>2]=c[t>>2];c[F+4>>2]=c[t+4>>2];c[F+8>>2]=c[t+8>>2];c[F+12>>2]=c[t+12>>2];oN(L,E,F);c[J>>2]=c[L>>2];c[J+4>>2]=c[L+4>>2];c[J+8>>2]=c[L+8>>2];c[J+12>>2]=c[L+12>>2];t=c[f+(v<<3)>>2]|0;u=c[f+(v<<3)+4>>2]|0;s=t*3|0;D=s+1|0;if((s|0)>=(n|0)){if(m|0)C_(i);p=uH(D<<4)|0;m=p;n=D;o=p;i=p}if(!(a[u>>0]|0)){k=+(qN(u,d)|0);j=+h[I>>3]}else{j=+pN(u,d);k=+h[y>>3]}r=m+16|0;h[m+16>>3]=j;h[m+24>>3]=k;c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];r=1;q=u;s=2;while(1){if((r|0)>=(t|0))break;q=u+(r*56|0)|0;if(!(a[q>>0]|0))k=+(qN(q,d)|0);else j=+pN(q,d);O=m+(s+2<<4)|0;Q=m+(s+1<<4)|0;P=m+(s<<4)|0;h[P>>3]=j;h[m+(s<<4)+8>>3]=k;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];r=r+1|0;s=s+3|0}if(!(a[q>>0]|0)){k=+(qN(q,d)|0);j=+h[J>>3]}else{j=+pN(q,d);k=+h[x>>3]}Q=m+(s<<4)|0;O=s+1|0;P=m+(O<<4)|0;h[P>>3]=j;h[m+(O<<4)+8>>3]=k;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];if(0>1){P=qy(c[((c[z>>2]&3|0)==3?z:A)+40>>2]|0)|0;Q=qy(c[((c[z>>2]&3|0)==2?z:C)+40>>2]|0)|0;c[M>>2]=P;c[M+4>>2]=Q;f1(G,107116,M)|0}PK(z,c[((c[z>>2]&3|0)==2?z:C)+40>>2]|0,m,D,25576);if((!w?(H=c[(c[B>>2]|0)+96>>2]|0,H|0):0)?(a[H+81>>0]|0)==0:0){c[E>>2]=c[I>>2];c[E+4>>2]=c[I+4>>2];c[E+8>>2]=c[I+8>>2];c[E+12>>2]=c[I+12>>2];c[F>>2]=c[J>>2];c[F+4>>2]=c[J+4>>2];c[F+8>>2]=c[J+8>>2];c[F+12>>2]=c[J+12>>2];iL(b,z,E,F)}v=v+1|0}C_(o);l=N;return}function oN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]+ +h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]+ +h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function pN(a,b){a=a|0;b=b|0;var d=0.0,e=0;b=tN(c[b+24>>2]|0,a)|0;e=c[b+36>>2]|0;d=+h[e+40>>3];return +((+h[e+56>>3]-d)*(+(c[a+44>>2]|0)/+((c[b+24>>2]|0)+1|0))+d)}function qN(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=tN(c[b+20>>2]|0,a)|0;b=c[e+36>>2]|0;d=+h[b+48>>3];return ~~((1.0-+(c[a+44>>2]|0)/+((c[e+24>>2]|0)+1|0))*(+h[b+64>>3]-d)+d)|0}function rN(a){a=a|0;return 0}function sN(a){a=a|0;return 0}function tN(a,b){a=a|0;b=b|0;a=nb[c[a>>2]&63](a,b+8|0,512)|0;if(!a)qa(107129,107135,423,107143);a=c[a+16>>2]|0;a=nb[c[a>>2]&63](a,b+16|0,512)|0;if(!a)qa(107154,107135,425,107143);else return a|0;return 0}function uN(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0.0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0;z=l;l=l+32|0;y=z+16|0;u=z+8|0;m=z;j=c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;t=c[f+4>>2]|0;if(!(a[t>>0]|0)){k=+h[j+56>>3];s=+h[j+40>>3];j=qN(t,g)|0;k=(s+k)*.5}else{k=+h[j+64>>3];s=+h[j+48>>3];j=~~((s+k)*.5);k=+pN(t,g)}A=~~k;p=+h[i>>3];r=+(A|0);p=p>3]=p;v=i+8|0;q=+h[v>>3];s=+(j|0);q=q>3]=q;w=i+16|0;k=+h[w>>3];r=k>r?k:r;h[w>>3]=r;x=i+24|0;k=+h[x>>3];s=k>s?k:s;h[x>>3]=s;c[m>>2]=A;c[m+4>>2]=j;f1(d,107656,m)|0;o=c[f>>2]|0;m=t;n=1;f=A;while(1){if((n|0)>=(o|0))break;m=t+(n*56|0)|0;if(!(a[m>>0]|0))j=qN(m,g)|0;else f=~~+pN(m,g);B=+(f|0);D=p>3]=D;k=+(j|0);C=q>3]=C;B=r>B?r:B;h[w>>3]=B;k=s>k?s:k;h[x>>3]=k;c[u>>2]=f;c[u+4>>2]=j;f1(d,107678,u)|0;n=n+1|0;p=D;q=C;r=B;s=k}j=c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;if(!(a[m>>0]|0)){k=+h[j+56>>3];D=+h[j+40>>3];j=qN(m,g)|0;k=(D+k)*.5}else{k=+h[j+64>>3];D=+h[j+48>>3];j=~~((D+k)*.5);k=+pN(m,g)}A=~~k;C=+(A|0);h[i>>3]=p>3]=q>3]=r>C?r:C;h[x>>3]=s>D?s:D;c[y>>2]=A;c[y+4>>2]=j;f1(d,107692,y)|0;c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];c[b+16>>2]=c[i+16>>2];c[b+20>>2]=c[i+20>>2];c[b+24>>2]=c[i+24>>2];c[b+28>>2]=c[i+28>>2];l=z;return}function vN(a){a=a|0;var b=0;a=zw(a)|0;while(1){if(!a)break;b=zw(c[a+16>>2]|0)|0;while(1){if(!b)break;c[b+32>>2]=_N(c[b+24>>2]|0)|0;b=c[b>>2]|0}a=c[a>>2]|0}return}function wN(a){a=a|0;var b=0;a=zw(a)|0;while(1){if(!a)break;b=zw(c[a+16>>2]|0)|0;while(1){if(!b)break;if(c[b+24>>2]|0)ON(b);b=c[b>>2]|0}a=c[a>>2]|0}return}function xN(a,b){a=a|0;b=b|0;var d=0;d=zw(a)|0;while(1){if(!d)break;a=zw(c[d+16>>2]|0)|0;while(1){if(!a)break;CN(a,b);a=c[a>>2]|0}d=c[d>>2]|0}return}function yN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0;e=zw(a)|0;while(1){if(!e)break;i=e+8|0;f=zw(c[e+16>>2]|0)|0;while(1){if(!f)break;a=f+24|0;a:do if(c[a>>2]|0){if(c[46553]&8|0)zN(f,~~+h[i>>3]);g=f+32|0;dO(c[g>>2]|0);b=c[a>>2]|0;d=f+28|0;a=0;while(1){if((a|0)>=(b|0))break a;c[(c[(c[d>>2]|0)+(a<<2)>>2]|0)+44>>2]=(c[(c[(c[g>>2]|0)+4>>2]|0)+(a*12|0)+4>>2]|0)+1;a=a+1|0}}while(0);f=c[f>>2]|0}e=c[e>>2]|0}return}function zN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+32|0;d=j;g=a+24|0;a:do if((c[g>>2]|0)>=2){i=c[15686]|0;m=+h[a+8>>3];k=+h[a+16>>3];c[d>>2]=b;h[d+8>>3]=m;h[d+16>>3]=k;f1(i,107713,d)|0;f=a+32|0;a=a+28|0;b=0;while(1){if((b|0)>=(c[g>>2]|0))break a;e=c[(c[(c[f>>2]|0)+4>>2]|0)+(b*12|0)+8>>2]|0;b:do if(Dw(e)|0){AN(i,c[(c[a>>2]|0)+(b<<2)>>2]|0);C1(107733,i)|0;d=nb[c[e>>2]&63](e,0,128)|0;while(1){if(!d)break b;C1(107738,i)|0;AN(i,c[(c[a>>2]|0)+(c[d>>2]<<2)>>2]|0);C1(150517,i)|0;d=nb[c[e>>2]&63](e,d,8)|0}}while(0);b=b+1|0}}while(0);l=j;return}function AN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0;g=l;l=l+80|0;f=g+40|0;e=g;if(!(a[d>>0]|0)){m=+h[d+16>>3];j=+h[d+8>>3];k=+h[d+24>>3];i=BN(c[d+32>>2]|0)|0;e=BN(c[d+36>>2]|0)|0;h[f>>3]=m;h[f+8>>3]=j;h[f+16>>3]=k;h[f+24>>3]=j;c[f+32>>2]=i;c[f+36>>2]=e;f1(b,107744,f)|0}else{k=+h[d+8>>3];j=+h[d+16>>3];m=+h[d+24>>3];f=BN(c[d+32>>2]|0)|0;i=BN(c[d+36>>2]|0)|0;h[e>>3]=k;h[e+8>>3]=j;h[e+16>>3]=k;h[e+24>>3]=m;c[e+32>>2]=f;c[e+36>>2]=i;f1(b,107744,e)|0}l=g;return}function BN(a){a=a|0;switch(a|0){case 0:{a=107795;break}case 1:{a=107790;break}case 2:{a=107783;break}case 3:{a=107776;break}case 4:{a=107768;break}default:a=0}return a|0}function CN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+16|0;r=w+8|0;t=w;u=c[a+32>>2]|0;v=c[a+28>>2]|0;p=a+24|0;m=r+4|0;n=t+4|0;j=0;a=c[p>>2]|0;a:while(1){q=j+1|0;if((q|0)>=(a|0))break;o=v+(j<<2)|0;k=q;while(1){if((k|0)>=(a|0)){j=q;continue a}b:do if(((cO(u,j,k)|0)==0?(cO(u,k,j)|0)==0:0)?(s=v+(k<<2)|0,DN(c[o>>2]|0,c[s>>2]|0)|0):0){f=c[o>>2]|0;a=c[f+48>>2]|0;i=c[s>>2]|0;d=c[i+48>>2]|0;e=(d|0)==0;if(a)if(e)a=1;else a=+h[a+8>>3]!=+h[d+8>>3];else a=e^1;g=a&1;EN(r,f,i,0,g);a=c[r>>2]|0;i=c[m>>2]|0;f=g^1;EN(t,c[o>>2]|0,c[s>>2]|0,1,f);d=c[t>>2]|0;e=c[n>>2]|0;switch(i|0){case -1:{FN(c[s>>2]|0,c[o>>2]|0,g,0,a,b);FN(c[s>>2]|0,c[o>>2]|0,f,1,d,b);if((e|0)!=1)break b;GN(c[o>>2]|0,c[s>>2]|0,f,b);break b}case 0:switch(e|0){case -1:{FN(c[s>>2]|0,c[o>>2]|0,g,0,a,b);FN(c[s>>2]|0,c[o>>2]|0,f,1,d,b);break b}case 0:{FN(c[o>>2]|0,c[s>>2]|0,0,g,a,b);FN(c[o>>2]|0,c[s>>2]|0,1,f,d,b);break b}case 1:{FN(c[o>>2]|0,c[s>>2]|0,0,g,a,b);FN(c[o>>2]|0,c[s>>2]|0,1,f,d,b);break b}default:break b}case 1:{FN(c[o>>2]|0,c[s>>2]|0,0,g,a,b);FN(c[o>>2]|0,c[s>>2]|0,1,f,d,b);if((e|0)!=-1)break b;GN(c[o>>2]|0,c[s>>2]|0,f,b);break b}default:break b}}while(0);k=k+1|0;a=c[p>>2]|0}}l=w;return}function DN(a,b){a=a|0;b=b|0;if(!(+h[a+8>>3]==+h[b+8>>3]))qa(107866,107135,843,107897);if((+h[a+16>>3]==+h[b+16>>3]?+h[a+24>>3]==+h[b+24>>3]:0)?(c[a+32>>2]|0)==(c[b+32>>2]|0):0)a=(c[a+36>>2]|0)==(c[b+36>>2]|0)&1;else a=0;return a|0}function EN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=0;while(1){b=HN(b,e)|0;if(!b){h=0;break}d=HN(d,f)|0;if(!d){i=6;break}if(!(DN(b,d)|0)){i=7;break}g=g+1|0}if((i|0)==6)qa(135312,107135,871,107815);else if((i|0)==7)h=JN(b,IN(b,d)|0,g+1|0,1-e|0)|0;c[a>>2]=g;c[a+4>>2]=h;return}function FN(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i+20|0;n=i+24|0;i=tN(c[((a[b>>0]|0)==0?o:n)>>2]|0,b)|0;aO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0);k=1;while(1){if((k|0)>(g|0))break;l=HN(b,e)|0;m=HN(d,f)|0;do if(!(a[b>>0]|0)){j=tN(c[n>>2]|0,l)|0;if(+h[l+8>>3]==+h[b+16>>3]){p=(c[b+32>>2]|0)==1;i=(cO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){aO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{aO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else if(i){aO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{aO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}}else{p=(c[b+36>>2]|0)==1;i=(cO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){aO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{aO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else if(i){aO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{aO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}}}else{j=tN(c[o>>2]|0,l)|0;if(+h[l+8>>3]==+h[b+16>>3]){p=(c[b+32>>2]|0)==2;i=(cO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){aO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{aO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else if(i){aO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{aO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}}else{p=(c[b+36>>2]|0)==2;i=(cO(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){aO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{aO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else if(i){aO(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{aO(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}}}while(0);b=l;d=m;k=k+1|0}return}function GN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;while(1){if(!(DN(b,d)|0))break;g=HN(b,1)|0;d=HN(d,e)|0;b=g}g=c[(tN(c[((a[b>>0]|0)==0?f+20|0:f+24|0)>>2]|0,b)|0)+32>>2]|0;bO(g,c[b+40>>2]|0,c[d+40>>2]|0);return}function HN(a,b){a=a|0;b=b|0;if(!a)qa(107802,107135,798,107806);else return c[((b|0)==0?a+48|0:a+52|0)>>2]|0;return 0}function IN(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=a[b>>0]|0;if(d<<24>>24==(a[c>>0]|0)?!(+h[b+8>>3]!=+h[c+8>>3]):0){if(!(d<<24>>24))b=KN(b,c,3,1)|0;else b=KN(b,c,4,2)|0;l=f;return b|0}Ow(1,107828,e)|0;bb(186216,1);return 0}function JN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0;j=1;while(1){if((j|0)>(e|0))break;i=HN(b,f)|0;g=+h[i+8>>3]==+h[b+16>>3];do if(!(a[b>>0]|0))if(g){g=(c[b+32>>2]|0)==1;break}else{g=(c[b+36>>2]|0)==3;break}else if(g){g=(c[b+32>>2]|0)==4;break}else{g=(c[b+36>>2]|0)==2;break}while(0);b=i;j=j+1|0;d=g?0-d|0:d}return d|0}function KN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0,n=0,o=0;j=+h[a+24>>3];k=+h[b+16>>3];do if(!(j>3],i=+h[b+24>>3],!(g>i)):0){if(k>2]|0;return ((d|0)==(c[b+32>>2]|0)?0:(d|0)==(e|0)?1:-1)|0}else{d=c[a+32>>2]|0;b=(d|0)==(c[b+36>>2]|0)?0:(d|0)==(e|0)?1:-1;break}if(!(j==i))if(j>2]|0)==(d|0);d=NN(c[b+32>>2]|0,c[a+32>>2]|0,d,e)|0;return (o?d:0-d|0)|0}else{o=(c[b+36>>2]|0)==(e|0);b=NN(c[a+32>>2]|0,c[b+32>>2]|0,d,e)|0;b=o?b:0-b|0;break}o=c[a+32>>2]|0;n=c[b+32>>2]|0;if((o|0)==(n|0)){b=c[b+36>>2]|0;if((c[a+36>>2]|0)==(b|0)){b=0;break}}else b=c[b+36>>2]|0;m=(n|0)==(d|0);if((n|0)==(b|0)){if(m){b=1;break}if((n|0)==(e|0)){b=-1;break}if((o|0)!=(d|0)?(c[a+36>>2]|0)!=(d|0):0){b=1;break}if((o|0)!=(e|0)?(c[a+36>>2]|0)!=(e|0):0){b=-1;break}b=0;break}f=(b|0)==(e|0);if(m&f){b=(c[a+36>>2]|0)==(e|0);if((o|0)==(d|0)){if(!b){b=-1;break}}else if(b){b=1;break}b=0;break}l=(b|0)==(d|0);if((n|0)==(e|0)&l){b=(o|0)==(e|0);if((c[a+36>>2]|0)==(d|0)){if(!b){b=-1;break}}else if(b){b=1;break}b=0;break}if(!n){if(l){b=MN(o,c[a+36>>2]|0,d)|0;break}if(f){b=0-(MN(o,c[a+36>>2]|0,e)|0)|0;break}}f=c[a+36>>2]|0;if(m&(b|0)==0){b=MN(f,o,d)|0;break}else{b=0-(MN(f,o,e)|0)|0;break}}else b=0;while(0);return b|0}function LN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0;i=+h[a+24>>3];j=+h[b+24>>3];do if(i>2]|0;if((a|0)==(d|0)?(c[b+32>>2]|0)==(e|0):0){a=-1;break}if((a|0)==(e|0)?(c[b+32>>2]|0)==(d|0):0){a=1;break}a=0}else{f=c[b+32>>2]|0;g=(f|0)==(e|0);if(i==j)if(g){a=NN(c[a+36>>2]|0,c[b+36>>2]|0,d,e)|0;break}else{a=0-(NN(c[b+36>>2]|0,c[a+36>>2]|0,d,e)|0)|0;break}if(g?(c[b+36>>2]|0)==(e|0):0){a=-1;break}if((f|0)==(d|0)?(c[b+36>>2]|0)==(d|0):0){a=1;break}a=0}while(0);return a|0}function MN(a,b,c){a=a|0;b=b|0;c=c|0;return ((a|0)==(c|0)?((b|0)==(c|0))<<31>>31:1)|0}function NN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(d|0)){b=(a|0)==0;if(b)return 0;else b=b&1}return ((a|0)!=0|(b|0)!=(c|0))<<31>>31|0}function ON(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=c[a+28>>2]|0;h=c[a+24>>2]|0;d=c[a+32>>2]|0;a=0;a:while(1){e=a+1|0;if((e|0)>=(h|0))break;f=g+(a<<2)|0;b=e;while(1){if((b|0)==(h|0)){a=e;continue a}switch(IN(c[f>>2]|0,c[g+(b<<2)>>2]|0)|0){case 1:{aO(d,a,b);break}case -1:{aO(d,b,a);break}default:{}}b=b+1|0}}return}function PN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+24|0;e=c[f>>2]|0;d=e+1|0;c[f>>2]=d;c[b+40>>2]=e;e=a+28|0;a=c[e>>2]|0;if(!a)a=uH(d<<2)|0;else a=wH(a,d<<2)|0;c[e>>2]=a;c[a+((c[f>>2]|0)+-1<<2)>>2]=b;return}function QN(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;h[f>>3]=d;e=nb[c[a>>2]&63](a,f,512)|0;if(!e){e=tH(24)|0;h[e+8>>3]=+h[f>>3];c[e+16>>2]=Bw(25624,c[4555]|0)|0;nb[c[a>>2]&63](a,e,1)|0}f=c[e+16>>2]|0;nb[c[f>>2]&63](f,b,1)|0;l=g;return}function RN(a,b,d){a=a|0;b=b|0;d=d|0;$N(c[b+32>>2]|0);C_(c[b+28>>2]|0);C_(b);return}function SN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b>>3];f=+h[c>>3];if(!(e>f))if(e>3]>=+h[c+8>>3])<<31>>31;else a=0;else a=!(+h[b+8>>3]<=+h[c+8>>3])&1;return a|0}function TN(a,b,d){a=a|0;b=b|0;d=d|0;xw(c[b+16>>2]|0)|0;C_(b);return}function UN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;f=+h[b>>3];e=+h[c>>3];return (f>e?1:(f>31)|0}function VN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0;i=(a[d+36>>0]|0)!=0;j=e+40|0;do if((c[d+24>>2]|0)==(e|0)){f=+h[j>>3];if(i){g=(+h[e+64>>3]+ +h[e+48>>3])*.5;break}else{g=+h[e+48>>3];f=(+h[e+56>>3]+f)*.5;break}}else if(i){g=(+h[e+64>>3]+ +h[e+48>>3])*.5;f=+h[e+56>>3];break}else{g=+h[e+64>>3];f=(+h[e+56>>3]+ +h[j>>3])*.5;break}while(0);h[b>>3]=f;h[b+8>>3]=g;return}function WN(a,b){a=a|0;b=b|0;var d=0;d=c[a+20>>2]|0;if((d|0)!=(c[b+20>>2]|0)?(d|0)!=(c[b+24>>2]|0):0)d=c[a+24>>2]|0;return d|0}function XN(a,b){a=a|0;b=b|0;var c=0.0;c=(+h[b+64>>3]+ +h[b+48>>3])*.5;h[a>>3]=(+h[b+56>>3]+ +h[b+40>>3])*.5;h[a+8>>3]=c;return}function YN(b,d,e,f,g,i,j){b=b|0;d=d|0;e=+e;f=+f;g=+g;i=i|0;j=j|0;var k=0,l=0;a[b>>0]=d;h[b+8>>3]=e;if(f>3]=f;h[b+16>>3]=e;c[b+36>>2]=d;c[b+32>>2]=l;a[b+1>>0]=k;return}function ZN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+36>>2]|0;do if((c[e+4>>2]|0)!=(d|0)){if((c[e+12>>2]|0)==(d|0)){e=~~((+h[b+56>>3]+ +h[b+40>>3])*.5);d=~~+h[b+48>>3];break}if((c[e+8>>2]|0)==(d|0)){e=~~+h[b+40>>3];d=~~((+h[b+64>>3]+ +h[b+48>>3])*.5);break}if((c[e>>2]|0)==(d|0)){e=~~+h[b+56>>3];d=~~((+h[b+64>>3]+ +h[b+48>>3])*.5)}else{e=0;d=0}}else{e=~~((+h[b+56>>3]+ +h[b+40>>3])*.5);d=~~+h[b+64>>3]}while(0);c[a>>2]=e;c[a+4>>2]=d;return}function _N(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=tH(8)|0;c[d>>2]=a;e=d+4|0;c[e>>2]=tH(a*12|0)|0;b=0;while(1){if((b|0)>=(a|0))break;g=xR()|0;f=c[e>>2]|0;c[f+(b*12|0)+8>>2]=g;c[f+(b*12|0)>>2]=0;b=b+1|0}return d|0}function $N(a){a=a|0;var b=0,d=0,e=0;d=a+4|0;b=0;while(1){e=c[d>>2]|0;if((b|0)>=(c[a>>2]|0))break;xw(c[e+(b*12|0)+8>>2]|0)|0;b=b+1|0}C_(e);C_(a);return}function aO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=c[(c[a+4>>2]|0)+(b*12|0)+8>>2]|0;nb[c[d>>2]&63](d,f,1)|0;l=e;return}function bO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;c[f>>2]=d;a=a+4|0;g=c[(c[a>>2]|0)+(b*12|0)+8>>2]|0;nb[c[g>>2]&63](g,f,2)|0;c[f>>2]=b;d=c[(c[a>>2]|0)+(d*12|0)+8>>2]|0;nb[c[d>>2]&63](d,f,2)|0;l=e;return}function cO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=c[(c[a+4>>2]|0)+(b*12|0)+8>>2]|0;d=(nb[c[d>>2]&63](d,f,512)|0)!=0&1;l=e;return d|0}function dO(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;switch(b|0){case 0:break;case 1:{c[(c[a+4>>2]|0)+4>>2]=0;break}default:{e=eO(b)|0;f=a+4|0;d=0;b=0;while(1){if((d|0)>=(c[a>>2]|0)){b=0;break}if(!(c[(c[f>>2]|0)+(d*12|0)>>2]|0))b=fO(a,d,b,e)|0;d=d+1|0}while(1){d=gO(e)|0;if((d|0)<=-1)break;c[(c[f>>2]|0)+(d*12|0)+4>>2]=b;b=b+1|0}hO(e)}}return}function eO(a){a=a|0;var b=0;b=tH(8)|0;c[b+4>>2]=tH(a<<2)|0;c[b>>2]=-1;return b|0}function fO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=a+4|0;g=c[i>>2]|0;j=g+(b*12|0)|0;c[j>>2]=1;g=c[g+(b*12|0)+8>>2]|0;h=g+4|0;d=d+1|0;g=zw(g)|0;while(1){if(!g)break;f=c[(c[h>>2]|0)+8>>2]|0;if((f|0)<0)f=c[g+8>>2]|0;else f=g+(0-f)|0;f=c[f>>2]|0;if(!(c[(c[i>>2]|0)+(f*12|0)>>2]|0))d=fO(a,f,d,e)|0;g=c[g>>2]|0}c[j>>2]=2;iO(e,b);return d+1|0}function gO(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if((b|0)==-1)a=-1;else{d=c[(c[a+4>>2]|0)+(b<<2)>>2]|0;c[a>>2]=b+-1;a=d}return a|0}function hO(a){a=a|0;C_(c[a+4>>2]|0);C_(a);return}function iO(a,b){a=a|0;b=b|0;var d=0;d=(c[a>>2]|0)+1|0;c[a>>2]=d;c[(c[a+4>>2]|0)+(d<<2)>>2]=b;return}function jO(a){a=a|0;var d=0,e=0,f=0;e=c[a>>2]|0;c[a+8>>2]=e;c[a+12>>2]=c[a+4>>2];d=a+16|0;a=0;while(1){if((a|0)>=(e|0))break;f=c[d>>2]|0;b[f+(a*40|0)+18>>1]=b[f+(a*40|0)+16>>1]|0;a=a+1|0}return}function kO(a){a=a|0;var d=0,e=0,f=0;d=c[a+8>>2]|0;c[a>>2]=d;c[a+4>>2]=c[a+12>>2];e=a+16|0;a=0;while(1){if((a|0)>=(d|0))break;f=c[e>>2]|0;b[f+(a*40|0)+16>>1]=b[f+(a*40|0)+18>>1]|0;a=a+1|0}d=d+2|0;while(1){if((a|0)>=(d|0))break;b[(c[e>>2]|0)+(a*40|0)+16>>1]=0;a=a+1|0}return}function lO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=tH(((c[a>>2]|0)*6|0)+(b<<1)<<2)|0;c[a+20>>2]=tH((((c[a>>2]|0)*3|0)+b|0)*24|0)|0;e=c[a>>2]|0;f=a+16|0;a=0;while(1){if((a|0)>=(e|0))break;c[(c[f>>2]|0)+(a*40|0)+28>>2]=d;d=d+24|0;a=a+1|0}e=e+2|0;while(1){if((a|0)>=(e|0))break;c[(c[f>>2]|0)+(a*40|0)+28>>2]=d;d=d+(b<<2)|0;a=a+1|0}return}function mO(a){a=a|0;var b=0;b=tH(24)|0;c[b>>2]=0;c[b+16>>2]=tH(a*40|0)|0;return b|0}function nO(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=c[a>>2]|0;c[d+(b*40|0)+32>>2]=b;c[a>>2]=b+1;return d+(b*40|0)|0}function oO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0;g=a+4|0;f=c[g>>2]|0;c[g>>2]=f+1;g=c[a+20>>2]|0;a=g+(f*24|0)|0;c[g+(f*24|0)+12>>2]=c[b+32>>2];c[g+(f*24|0)+16>>2]=c[d+32>>2];h[a>>3]=e;c[g+(f*24|0)+8>>2]=0;pO(b,f);pO(d,f);return a|0}function pO(a,d){a=a|0;d=d|0;var e=0,f=0;e=a+16|0;f=b[e>>1]|0;c[(c[a+28>>2]|0)+(f<<16>>16<<2)>>2]=d;b[e>>1]=f+1<<16>>16;return}function qO(a){a=a|0;var b=0;b=a+16|0;C_(c[(c[b>>2]|0)+28>>2]|0);C_(c[b>>2]|0);C_(c[a+20>>2]|0);C_(a);return}function rO(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[a>>2]|0;i=a+16|0;f=0;while(1){if((f|0)>=(g|0))break;c[(c[i>>2]|0)+(f*40|0)>>2]=-2147483648;f=f+1|0}FR();a:do if(!(IR(d)|0)){c[d+8>>2]=0;c[d>>2]=0;d=a+20|0;b:while(1){g=KR()|0;if(!g){f=0;break a}c[g>>2]=0-(c[g>>2]|0);if((g|0)==(e|0)){f=0;break a}i=g+16|0;j=g+28|0;f=0;while(1){if((f|0)>=(b[i>>1]|0))continue b;k=(c[d>>2]|0)+((c[(c[j>>2]|0)+(f<<2)>>2]|0)*24|0)|0;l=sO(a,k,g)|0;m=c[l>>2]|0;do if((m|0)<0){n=~~-(+h[k>>3]+ +(c[g>>2]|0));if((m|0)==-2147483648){c[l>>2]=n;if(IR(l)|0){f=1;break a}c[l+8>>2]=g;c[l+12>>2]=k;break}else{if((m|0)>=(n|0))break;LR(l,n);c[l+8>>2]=g;c[l+12>>2]=k;break}}while(0);f=f+1|0}}}else f=1;while(0);return f|0}function sO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+12>>2]|0;if((e|0)==(c[d+32>>2]|0))e=c[b+16>>2]|0;return (c[a+16>>2]|0)+(e*40|0)|0}function tO(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=c[a>>2]|0;vC(g,3,b)|0;b=c[g+92>>2]|0;do if(b){d=c[b+16>>2]|0;h=c[d+12>>2]|0;c[a+76>>2]=h;e=c[d+16>>2]|0;c[a+84>>2]=e;f=a+80|0;c[f>>2]=c[d>>2];c[a+88>>2]=c[b+4>>2];d=a+152|0;e=c[d>>2]|c[e>>2];c[d>>2]=e;b=c[g+80>>2]|0;if(!b){c[a+60>>2]=0;b=999;break}else{g=c[b+16>>2]|0;c[a+60>>2]=c[g+12>>2];i=c[g+16>>2]|0;c[a+68>>2]=i;c[a+72>>2]=c[b+4>>2];c[d>>2]=e|c[i>>2];c[a+64>>2]=c[((h|0)==0?f:g)>>2];b=300;break}}else b=999;while(0);return b|0}function uO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(!(WB(a)|0))if((b|0)!=0?(d=c[b>>2]|0,(d|0)!=0):0){tb[d&127](a);a=0}else a=0;else a=1;return a|0}function vO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+4>>2]|0,d|0):0)tb[d&127](a);c[(c[a>>2]|0)+24>>2]=0;cC(a);return}function wO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;e=+h[b+504>>3];f=+h[b+512>>3];i=+h[b+352>>3];if(!(c[b+360>>2]|0)){g=+h[d>>3]+e;d=d+8|0;e=f}else g=-(f+ +h[d+8>>3]);f=+h[b+528>>3]*i*(+h[d>>3]+e);h[a>>3]=+h[b+520>>3]*i*g;h[a+8>>3]=f;return}function xO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0;f=+h[a+504>>3];g=+h[a+512>>3];i=+h[a+352>>3];j=+h[a+520>>3]*i;i=+h[a+528>>3]*i;a:do if(!(c[a+360>>2]|0)){a=0;while(1){if((a|0)>=(e|0))break a;h[d+(a<<4)>>3]=(+h[b+(a<<4)>>3]+f)*j;h[d+(a<<4)+8>>3]=(+h[b+(a<<4)+8>>3]+g)*i;a=a+1|0}}else{a=0;while(1){if((a|0)>=(e|0))break a;k=-(j*(+h[b+(a<<4)+8>>3]+g));h[d+(a<<4)+8>>3]=(+h[b+(a<<4)>>3]+f)*i;h[d+(a<<4)>>3]=k;a=a+1|0}}while(0);return d|0}function yO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+8>>2]|0,d|0):0)tb[d&127](a);return}function zO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+12>>2]|0,d|0):0)tb[d&127](a);bC(a);return}function AO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+24>>2]|0,d|0):0)tb[d&127](a);return}function BO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+28>>2]|0,d|0):0)tb[d&127](a);return}function CO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+16>>2]|0,d|0):0){b=c[a+160>>2]|0;xb[d&31](a,c[(c[(c[a>>2]|0)+308>>2]|0)+(b<<2)>>2]|0,b,c[a+156>>2]|0)}return}function DO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+20>>2]|0,d|0):0)tb[d&127](a);return}function EO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+32>>2]|0,d|0):0)tb[d&127](a);return}function FO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+36>>2]|0,d|0):0)tb[d&127](a);return}function GO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+40>>2]|0,d|0):0)tb[d&127](a);return}function HO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+44>>2]|0,d|0):0)tb[d&127](a);return}function IO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+48>>2]|0,d|0):0)tb[d&127](a);return}function JO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+52>>2]|0,d|0):0)tb[d&127](a);return}function KO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+56>>2]|0,d|0):0)tb[d&127](a);return}function LO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+60>>2]|0,d|0):0)tb[d&127](a);return}function MO(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+64>>2]|0,d|0):0)tb[d&127](a);return}function NO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+68>>2]|0,d|0):0)tb[d&127](a);return}function OO(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=c[a+60>>2]|0;if(g|0?(h=c[g+72>>2]|0,h|0):0)yb[h&15](a,b,d,e,f);return}function PO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+76>>2]|0,d|0):0)tb[d&127](a);return}function QO(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+60>>2]|0;if(d|0?(e=c[d+80>>2]|0,e|0):0)ub[e&63](a,b);return}function RO(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+84>>2]|0,d|0):0)tb[d&127](a);return}function SO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+48|0;f=k+32|0;h=k;i=k+16|0;j=c[b+60>>2]|0;m=c[e>>2]|0;do if(m|0?a[m>>0]|0:0){m=c[b+16>>2]|0;if(m|0?(c[m+144>>2]|0)==0:0)break;if(!(c[b+152>>2]&8192)){c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];wO(i,b,f);c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2]}else{c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2]}if(j|0?(g=c[j+88>>2]|0,g|0):0){c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];vb[g&127](b,f,e)}}while(0);l=k;return}function TO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[b+60>>2]|0;g=(c[b+16>>2]|0)+16|0;i=z$(d,58)|0;h=(i|0)!=0;if(h)a[i>>0]=0;if(f|0?(UO(c[b+68>>2]|0,d,g),e=c[f+92>>2]|0,e|0):0)ub[e&63](b,g);if(h)a[i>>0]=58;return}function UO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+32|0;g=k+16|0;j=k+8|0;i=k;c[d>>2]=b;c[d+32>>2]=5;e=hQ(b)|0;f=c[a+16>>2]|0;if(!((f|0)!=0?(d2(e,f,c[a+20>>2]|0,4,100)|0)!=0:0))h=3;a:do if((h|0)==3){switch(iQ(b,d,c[a+24>>2]|0)|0){case 0:break a;case 1:break;default:{Ow(1,108020,g)|0;break a}}a=uH((V_(b)|0)+16|0)|0;c[i>>2]=b;X0(a,107985,i)|0;if(zG(a)|0){c[j>>2]=b;Ow(0,107994,j)|0}C_(a)}while(0);l=k;return}function VO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[b+60>>2]|0;g=(c[b+16>>2]|0)+56|0;i=z$(d,58)|0;h=(i|0)!=0;if(h)a[i>>0]=0;if(f|0?(UO(c[b+68>>2]|0,d,g),e=c[f+92>>2]|0,e|0):0)ub[e&63](b,g);if(h)a[i>>0]=58;return}function WO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,h=0,i=0,j=0;h=c[a+60>>2]|0;i=a+16|0;j=(c[i>>2]|0)+96|0;if(h|0?(UO(c[a+68>>2]|0,b,j),f=c[h+92>>2]|0,f|0):0)ub[f&63](a,j);j=c[i>>2]|0;c[j+136>>2]=d;g[j+140>>2]=e;return}function XO(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;k=m;j=c[b+60>>2]|0;b=c[b+16>>2]|0;c[b+160>>2]=d;a:do if((d|0)!=0&(j|0)!=0){j=b+144|0;i=b+152|0;g=b+148|0;b=d;b:while(1){f=b+4|0;b=c[b>>2]|0;if(!b)break a;c:do switch(a[b>>0]|0){case 115:{if(!(a$(b,108041)|0)){c[j>>2]=3;b=f;continue b}if(!(a$(b,108062)|0)){e=115;while(1){d=b+1|0;if(!(e<<24>>24))break;b=d;e=a[d>>0]|0}h[i>>3]=+a2(d);b=f;continue b}break}case 100:{if(!(a$(b,134245)|0)){c[j>>2]=1;b=f;continue b}if(!(a$(b,134238)|0)){c[j>>2]=2;b=f;continue b}break}case 105:{if(a$(b,131253)|0?a$(b,108047)|0:0)break c;c[j>>2]=0;b=f;continue b}case 98:{if(!(a$(b,108057)|0)){h[i>>3]=2.0;b=f;continue b}break}case 102:{if(!(a$(b,108075)|0)){c[g>>2]=1;b=f;continue b}break}case 117:{if(!(a$(b,108082)|0)){c[g>>2]=0;b=f;continue b}break}case 116:{if(!(a$(b,108091)|0)){b=f;continue b}break}default:{}}while(0);c[k>>2]=b;Ow(0,108099,k)|0;b=f}}while(0);l=m;return}function YO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+32|0;g=j;d=c[a+60>>2]|0;if((d|0?(i=d+96|0,f=c[i>>2]|0,f|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){d=b+16|0;h[g>>3]=(+h[d>>3]+ +h[b>>3])*.5;h[g+8>>3]=(+h[b+24>>3]+ +h[b+8>>3])*.5;b=g+16|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];if(!(c[a+152>>2]&8192)){xO(a,g,g,2)|0;f=c[i>>2]|0}vb[f&127](a,g,e)}l=j;return}function ZO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+48|0;m=o;f=c[a+60>>2]|0;if((f|0?(n=f+100|0,c[n>>2]|0):0)?(k=a+16|0,j=c[k>>2]|0,c[j+144>>2]|0):0){if(!(e&4)){f=e;g=0}else{f=e&-5;e=j+16|0;g=m;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=e;h=j+56|0;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=1}if(!(c[a+152>>2]&8192)){e=d+10|0;if((c[46593]|0)<(d|0)){c[46593]=e;e=wH(c[46594]|0,e<<4)|0;c[46594]=e}else e=c[46594]|0;xO(a,b,e,d)|0;xb[c[n>>2]&31](a,e,d,f)}else xb[c[n>>2]&31](a,b,d,f);if(g|0){g=(c[k>>2]|0)+16|0;h=m;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0))}}l=o;return}function _O(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+64|0;f=e;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];g=f+32|0;b=b+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];h[f+16>>3]=+h[f>>3];h[f+24>>3]=+h[f+40>>3];h[f+48>>3]=+h[g>>3];h[f+56>>3]=+h[f+8>>3];ZO(a,f,4,d);l=e;return}function $O(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=c[a+60>>2]|0;do if((i|0?(j=i+104|0,h=c[j>>2]|0,h|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){if(c[a+152>>2]&8192|0){zb[h&15](a,b,d,e,f,g&255);break}h=d+10|0;if((c[46593]|0)<(d|0)){c[46593]=h;h=wH(c[46594]|0,h<<4)|0;c[46594]=h}else h=c[46594]|0;xO(a,b,h,d)|0;zb[c[j>>2]&15](a,h,d,e,f,g&255)}while(0);return}function aP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a+60>>2]|0;do if((e|0?(g=e+108|0,f=c[g>>2]|0,f|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){if(c[a+152>>2]&8192|0){vb[f&127](a,b,d);break}e=d+10|0;if((c[46593]|0)<(d|0)){c[46593]=e;e=wH(c[46594]|0,e<<4)|0;c[46594]=e}else e=c[46594]|0;xO(a,b,e,d)|0;vb[c[g>>2]&127](a,e,d)}while(0);return}function bP(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b+60>>2]|0;if((d|0?!((e|0)==0|(a[d>>0]|0)==0):0)?(f=c[e+112>>2]|0,f|0):0)ub[f&63](b,d);return}function cP(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=l;l=l+112|0;B=F+64|0;E=F;n=F+96|0;x=F+48|0;y=F+32|0;C=c[b+60>>2]|0;if(!b)qa(108200,108152,691,108163);if(!d)qa(108182,108152,692,108163);if(!(a[d>>0]|0))qa(108187,108152,693,108163);D=xC(d)|0;if(!D){if((C|0)!=0&(UJ(d)|0)!=0?(m=c[C+116>>2]|0,m|0):0)yb[m&15](b,d,e,f,g&255)}else{s=b+432|0;c[B>>2]=c[s>>2];c[B+4>>2]=c[s+4>>2];c[B+8>>2]=c[s+8>>2];c[B+12>>2]=c[s+12>>2];AC(n,D,B);s=c[n>>2]|0;m=c[n+4>>2]|0;if(!((s|0)<1&(m|0)<1)){n=E+16|0;c[n>>2]=c[e>>2];c[n+4>>2]=c[e+4>>2];c[n+8>>2]=c[e+8>>2];c[n+12>>2]=c[e+12>>2];c[E>>2]=c[e>>2];c[E+4>>2]=c[e+4>>2];c[E+8>>2]=c[e+8>>2];c[E+12>>2]=c[e+12>>2];z=E+8|0;A=E+24|0;d=1;while(1){if((d|0)>=(f|0))break;G=e+(d<<4)|0;v=+h[G>>3];h[E>>3]=+h[(+h[E>>3]>3];w=+h[e+(d<<4)+8>>3];h[z>>3]=+h[(+h[z>>3]>3];h[n>>3]=+h[(+h[n>>3]>v?n:G)>>3];h[A>>3]=+h[(+h[A>>3]>w?n:G)+8>>3];d=d+1|0}k=+h[n>>3];j=+h[E>>3];t=k-j;u=+h[A>>3];v=+h[z>>3];w=u-v;o=+(m|0);p=+(s|0);q=t/p;r=w/o;a:do switch(dP(i)|0){case 1:if(q>3]=j;k=k-t;h[n>>3]=k}if(o>3]=v+w;h[A>>3]=u-w}if(!(c[b+152>>2]&8192)){c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];wO(x,b,B);c[E>>2]=c[x>>2];c[E+4>>2]=c[x+4>>2];c[E+8>>2]=c[x+8>>2];c[E+12>>2]=c[x+12>>2];c[B>>2]=c[n>>2];c[B+4>>2]=c[n+4>>2];c[B+8>>2]=c[n+8>>2];c[B+12>>2]=c[n+12>>2];wO(y,b,B);c[n>>2]=c[y>>2];c[n+4>>2]=c[y+4>>2];c[n+8>>2]=c[y+8>>2];c[n+12>>2]=c[y+12>>2];k=+h[n>>3];j=+h[E>>3]}if(j>k){h[E>>3]=k;h[n>>3]=j}j=+h[z>>3];k=+h[A>>3];if(j>k){h[z>>3]=k;h[A>>3]=j}if(C|0){G=c[b+72>>2]|0;c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];c[B+16>>2]=c[E+16>>2];c[B+20>>2]=c[E+20>>2];c[B+24>>2]=c[E+24>>2];c[B+28>>2]=c[E+28>>2];fP(b,D,B,g,G)}}}l=F;return}function dP(b){b=b|0;if(a[b>>0]|0)if(N$(b,138034)|0)if(N$(b,137966)|0)if(!(N$(b,108195)|0))b=4;else b=(PL(b)|0)<<24>>24!=0&1;else b=3;else b=2;else b=0;return b|0}function eP(a,b){a=a|0;b=+b;if(c[a+60>>2]|0)h[(c[a+16>>2]|0)+152>>3]=b;return} +function RX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=f-e|0;a:do if((h|0)>0){l=b+72|0;switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{c[g>>2]=e;f=0;break a}case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[b+340>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[b+344>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[b+348>>2]&127](b,e)|0)){c[g>>2]=e;f=0;break a}else h=4;break}default:{c[g>>2]=e;f=0;break a}}i=b+328|0;j=b+332|0;k=b+336|0;e=e+h|0;b:while(1){h=f-e|0;if((h|0)<=0){f=-20;break a}switch(a[l+(d[e>>0]|0)>>0]|0){case 29:{h=17;break b}case 36:case 30:case 11:case 32:case 21:case 10:case 9:{h=28;break b}case 27:case 26:case 25:case 24:case 22:{h=1;break}case 5:{if((h|0)<2){f=-2;break a}if(!(lb[c[i>>2]&127](b,e)|0)){h=20;break b}else h=2;break}case 6:{if((h|0)<3){f=-2;break a}if(!(lb[c[j>>2]&127](b,e)|0)){h=23;break b}else h=3;break}case 7:{if((h|0)<4){f=-2;break a}if(!(lb[c[k>>2]&127](b,e)|0)){h=26;break b}else h=4;break}default:{h=29;break b}}e=e+h|0}if((h|0)==17){c[g>>2]=e;f=0;break}else if((h|0)==20){c[g>>2]=e;f=0;break}else if((h|0)==23){c[g>>2]=e;f=0;break}else if((h|0)==26){c[g>>2]=e;f=0;break}else if((h|0)==28){c[g>>2]=e;f=20;break}else if((h|0)==29){c[g>>2]=e;f=0;break}}else f=-1;while(0);return f|0}function SX(){return 58116}function TX(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=l;l=l+16|0;g=i;c[g>>2]=d;h=c[b>>2]|0;a=f-(c[e>>2]|0)|0;if((d-h|0)>(a|0)){a=h+a|0;c[g>>2]=a;f=1}else{f=0;a=d}eX(h,g);h=c[g>>2]|0;d=c[b>>2]|0;g=h-d|0;E3(c[e>>2]|0,d|0,g|0)|0;c[b>>2]=(c[b>>2]|0)+g;c[e>>2]=(c[e>>2]|0)+g;l=i;return (f?2:h>>>0>>0&1)|0}function UX(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=d+72|0;k=f;l=h;m=c[e>>2]|0;n=c[g>>2]|0;a:while(1){d=m>>>0>>0;if(!(n>>>0>>0&d)){o=12;break}d=a[m>>0]|0;i=d&255;switch(a[j+i>>0]|0){case 5:{if((k-m|0)<2){d=1;break a}b[n>>1]=(d&31)<<6|a[m+1>>0]&63;m=m+2|0;n=n+2|0;continue a}case 6:{if((k-m|0)<3){d=1;break a}b[n>>1]=(a[m+1>>0]&63)<<6|i<<12|a[m+2>>0]&63;m=m+3|0;n=n+2|0;continue a}case 7:{if((l-n|0)<4){d=2;break a}if((k-m|0)<4){d=1;break a}i=((a[m+1>>0]&63)<<12|(d&7)<<18|(a[m+2>>0]&63)<<6|a[m+3>>0]&63)+-65536|0;b[n>>1]=i>>>10|55296;b[n+2>>1]=i&1023|56320;m=m+4|0;n=n+4|0;continue a}default:{b[n>>1]=d<<24>>24;m=m+1|0;n=n+2|0;continue a}}}if((o|0)==12)d=d?2:0;c[e>>2]=m;c[g>>2]=n;return d|0}function VX(a,b){a=a|0;b=b|0;a=d[b>>0]|0;b=d[b+1>>0]|0;return 1<<(b&31)&c[56836+(((d[140962+(a>>>2&7)>>0]|0)<<3|a<<1&6|b>>>5&1)<<2)>>2]|0}function WX(b,e){b=b|0;e=e|0;var f=0;f=d[e+1>>0]|0;b=d[e+2>>0]|0;return 1<<(b&31)&c[56836+(((d[140962+(f>>>2&15|a[e>>0]<<4&255)>>0]|0)<<3|f<<1&6|b>>>5&1)<<2)>>2]|0}function XX(a,b){a=a|0;b=b|0;return 0}function YX(a,b){a=a|0;b=b|0;a=d[b>>0]|0;b=d[b+1>>0]|0;return 1<<(b&31)&c[56836+(((d[140706+(a>>>2&7)>>0]|0)<<3|a<<1&6|b>>>5&1)<<2)>>2]|0}function ZX(b,e){b=b|0;e=e|0;var f=0;f=d[e+1>>0]|0;b=d[e+2>>0]|0;return 1<<(b&31)&c[56836+(((d[140706+(f>>>2&15|a[e>>0]<<4&255)>>0]|0)<<3|f<<1&6|b>>>5&1)<<2)>>2]|0}function _X(a,b){a=a|0;b=b|0;if((d[b>>0]|0)<194)return 1;else{b=d[b+1>>0]|0;return b>>>7^1|(b&192|0)==192|0}return 0}function $X(b,c){b=b|0;c=c|0;var d=0;b=a[c+2>>0]|0;do if(b<<24>>24>-1)b=1;else{d=a[c>>0]|0;if(d<<24>>24==-17?(a[c+1>>0]|0)==-65:0)if((b&255)>189){b=1;break}else{b=191;c=-65}else{if((b&255)>191){b=1;break}c=a[c+1>>0]|0;b=c&255;if(d<<24>>24==-32){b=(c&255)<160|(b&192|0)==192;break}}b=(b&128|0)==0?1:d<<24>>24==-19?(c&255)>159:(b&192|0)==192}while(0);return b&1|0}function aY(b,c){b=b|0;c=c|0;var e=0;e=d[c+3>>0]|0;do if(!((e&128|0)==0|(e&192|0)==192)?(e=d[c+2>>0]|0,!((e&128|0)==0|(e&192|0)==192)):0){e=a[c>>0]|0;b=a[c+1>>0]|0;c=b&255;if(e<<24>>24==-16){b=(b&255)<144|(c&192|0)==192;break}else{b=(c&128|0)==0?1:e<<24>>24==-12?(b&255)>143:(c&192|0)==192;break}}else b=1;while(0);return b&1|0}function bY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;a:do if(e>>>0>>0){i=e;m=f-i|0;k=(m&1|0)==0;m=m&-2;l=(m|0)==0;m=k|l?f:e+m|0;if(k|l^1){f=a[e+1>>0]|0;if(!(f<<24>>24)){h=a[e>>0]|0;j=h;h=d[b+72+(h&255)>>0]|0}else{h=a[e>>0]|0;j=h;h=rY(f,h)|0}do switch(h|0){case 12:{f=DY(12,b,e+2|0,m,g)|0;break a}case 13:{f=DY(13,b,e+2|0,m,g)|0;break a}case 2:{h=e+2|0;if((m-h|0)<=1){f=-1;break a}f=a[e+3>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[h>>0]|0)>>0]|0;else f=rY(f,a[h>>0]|0)|0;switch(f|0){case 16:{f=EY(b,e+4|0,m,g)|0;break a}case 15:{f=zY(b,e+4|0,m,g)|0;break a}case 7:case 6:case 5:case 29:case 24:case 22:{c[g>>2]=e;f=29;break a}default:{c[g>>2]=h;f=0;break a}}}case 9:{if((e+2|0)==(m|0)){c[g>>2]=m;f=-15;break a}else i=7;break}case 10:case 21:{i=7;break}case 30:{f=tY(b,e+2|0,m,g)|0;break a}case 35:{c[g>>2]=e+2;f=38;break a}case 20:{c[g>>2]=e+2;f=25;break a}case 4:{h=e+2|0;f=m-h|0;if((f|0)<=1){f=-26;break a}if((a[e+3>>0]|0)==0?(a[h>>0]|0)==93:0){if((f|0)<=3){f=-1;break a}if((a[e+5>>0]|0)==0?(a[e+4>>0]|0)==62:0){c[g>>2]=e+6;f=34;break a}}c[g>>2]=h;f=26;break a}case 31:{c[g>>2]=e+2;f=23;break a}case 32:{h=e+2|0;if((m-h|0)<=1){f=-24;break a}f=a[e+3>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[h>>0]|0)>>0]|0;else f=rY(f,a[h>>0]|0)|0;switch(f|0){case 33:{c[g>>2]=e+4;f=36;break a}case 15:{c[g>>2]=e+4;f=35;break a}case 34:{c[g>>2]=e+4;f=37;break a}case 32:case 36:case 35:case 11:case 21:case 10:case 9:{c[g>>2]=h;f=24;break a}default:{c[g>>2]=h;f=0;break a}}}case 36:{c[g>>2]=e+2;f=21;break a}case 11:{c[g>>2]=e+2;f=17;break a}case 19:{f=FY(b,e+2|0,m,g)|0;break a}case 5:{if((m-i|0)<2){f=-2;break a}c[g>>2]=e;f=0;break a}case 6:{if((m-i|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((m-i|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}case 24:case 22:{f=18;i=61;break}case 23:case 27:case 26:case 25:{f=19;i=61;break}case 29:{i=f&255;h=j&255;f=h>>>5;h=1<<(h&31);if(!(h&c[56836+((f|d[140706+i>>0]<<3)<<2)>>2]))if(!(c[56836+((d[140962+i>>0]<<3|f)<<2)>>2]&h))i=64;else{f=19;i=61}else{f=18;i=61}break}default:i=64}while(0);if((i|0)==7){k=m;b=b+72|0;j=e;b:while(1){i=j;j=j+2|0;if((k-j|0)<=1){i=28;break}f=a[i+3>>0]|0;h=a[j>>0]|0;if(!(f<<24>>24))f=d[b+(h&255)>>0]|0;else f=rY(f,h)|0;switch(f|0){case 10:case 21:continue b;case 9:break;default:{i=27;break b}}if((i+4|0)==(m|0)){i=27;break}}if((i|0)==27){c[g>>2]=j;f=15;break}else if((i|0)==28){c[g>>2]=j;f=15;break}}else if((i|0)==61){l=b+72|0;h=e+2|0;c:while(1){e=f&255;d:while(1){k=m-h|0;if((k|0)<=1){i=104;break c}i=a[h+1>>0]|0;j=a[h>>0]|0;if(!(i<<24>>24))b=d[l+(j&255)>>0]|0;else b=rY(i,j)|0;switch(b|0){case 5:{i=73;break c}case 6:{i=74;break c}case 7:{i=76;break c}case 10:case 9:case 21:case 30:case 20:case 36:case 35:case 32:case 11:{i=78;break c}case 34:{i=94;break c}case 33:{i=97;break c}case 15:{i=100;break c}case 29:{k=j&255;if(!(1<<(k&31)&c[56836+((k>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){i=71;break c}break}case 27:case 26:case 25:case 24:case 22:break;case 23:{k=h+2|0;switch(e&63){case 41:{f=19;h=k;continue c}case 18:break d;default:{h=k;continue d}}}default:{i=103;break c}}h=h+2|0}b=m-k|0;if((b|0)<=1){f=-1;break a}f=a[h+3>>0]|0;i=a[k>>0]|0;if(!(f<<24>>24))j=d[l+(i&255)>>0]|0;else j=rY(f,i)|0;switch(j|0){case 5:{i=89;break c}case 6:{i=90;break c}case 7:{i=92;break c}case 29:{e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140962+(f&255)>>0]<<3)<<2)>>2])){i=87;break c}break}case 27:case 26:case 25:case 24:case 22:break;default:{f=19;h=k;continue c}}f=41;h=h+4|0}switch(i|0){case 71:{c[g>>2]=h;f=0;break a}case 73:{c[g>>2]=h;f=0;break a}case 74:{if((k|0)<3){f=-2;break a}c[g>>2]=h;f=0;break a}case 76:{if((k|0)<4){f=-2;break a}c[g>>2]=h;f=0;break a}case 78:{c[g>>2]=h;break a}case 87:{c[g>>2]=k;f=0;break a}case 89:{c[g>>2]=k;f=0;break a}case 90:{if((b|0)<3){f=-2;break a}c[g>>2]=k;f=0;break a}case 92:{if((b|0)<4){f=-2;break a}c[g>>2]=k;f=0;break a}case 94:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=32;break a}case 97:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=31;break a}case 100:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=30;break a}case 103:{c[g>>2]=h;f=0;break a}case 104:{f=0-f|0;break a}}}else if((i|0)==64){c[g>>2]=e;f=0;break}}else f=-1}else f=-4;while(0);return f|0}function cY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if(e>>>0>>0){h=e;i=f-h|0;k=(i&1|0)==0;i=i&-2;j=(i|0)==0;i=k|j?f:e+i|0;if(k|j^1){f=a[e+1>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e>>0]|0)>>0]|0;else f=rY(f,a[e>>0]|0)|0;do switch(f|0){case 2:{f=wY(b,e+2|0,i,g)|0;break a}case 3:{f=sY(b,e+2|0,i,g)|0;break a}case 9:{h=e+2|0;if((i-h|0)<=1){f=-3;break a}f=a[e+3>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[h>>0]|0)>>0]|0;else f=rY(f,a[h>>0]|0)|0;c[g>>2]=(f|0)==10?e+4|0:h;f=7;break a}case 10:{c[g>>2]=e+2;f=7;break a}case 4:{h=e+2|0;if((i-h|0)<=1){f=-5;break a}if((a[e+3>>0]|0)==0?(a[h>>0]|0)==93:0){f=e+4|0;if((i-f|0)<=1){f=-5;break a}if((a[e+5>>0]|0)==0?(a[f>>0]|0)==62:0){c[g>>2]=f;f=0;break a}else f=i}else f=i;break}case 5:{f=i;if((f-h|0)<2){f=-2;break a}h=e+2|0;break}case 6:{f=i;if((f-h|0)<3){f=-2;break a}h=e+3|0;break}case 7:{f=i;if((f-h|0)<4){f=-2;break a}h=e+4|0;break}case 8:case 1:case 0:{c[g>>2]=e;f=0;break a}default:{h=e+2|0;f=i}}while(0);j=b+72|0;b=h;b:while(1){e=f-b|0;if((e|0)<=1){h=52;break}h=a[b+1>>0]|0;i=a[b>>0]|0;if(!(h<<24>>24))h=d[j+(i&255)>>0]|0;else h=rY(h,i)|0;switch(h|0){case 10:case 9:case 8:case 1:case 0:case 2:case 3:{h=50;break b}case 5:{b=b+2|0;continue b}case 6:{if((e|0)<3){h=38;break b}b=b+3|0;continue b}case 7:{if((e|0)<4){h=41;break b}b=b+4|0;continue b}case 4:{if((e|0)<=3){h=50;break b}h=b+2|0;if(a[b+3>>0]|0){b=h;continue b}if((a[h>>0]|0)!=93){b=h;continue b}if((e|0)<=5){h=50;break b}i=b+4|0;if(a[b+5>>0]|0){b=h;continue b}if((a[i>>0]|0)==62){h=49;break b}else{b=h;continue b}}default:{b=b+2|0;continue b}}}if((h|0)==38){c[g>>2]=b;f=6;break}else if((h|0)==41){c[g>>2]=b;f=6;break}else if((h|0)==49){c[g>>2]=i;f=0;break}else if((h|0)==50){c[g>>2]=b;f=6;break}else if((h|0)==52){c[g>>2]=b;f=6;break}}else f=-1}else f=-4;while(0);return f|0}function dY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if(e>>>0>>0){h=e;i=f-h|0;k=(i&1|0)==0;i=i&-2;j=(i|0)==0;i=k|j?f:e+i|0;if(k|j^1){f=a[e+1>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e>>0]|0)>>0]|0;else f=rY(f,a[e>>0]|0)|0;switch(f|0){case 4:{h=e+2|0;if((i-h|0)<=1){f=-1;break a}if((a[e+3>>0]|0)==0?(a[h>>0]|0)==93:0){f=e+4|0;if((i-f|0)<=1){f=-1;break a}if((a[e+5>>0]|0)==0?(a[f>>0]|0)==62:0){c[g>>2]=e+6;f=40;break a}}break}case 9:{h=e+2|0;if((i-h|0)<=1){f=-1;break a}f=a[e+3>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[h>>0]|0)>>0]|0;else f=rY(f,a[h>>0]|0)|0;c[g>>2]=(f|0)==10?e+4|0:h;f=7;break a}case 10:{c[g>>2]=e+2;f=7;break a}case 5:{f=i;if((f-h|0)<2){f=-2;break a}h=e+2|0;i=f;break}case 6:{f=i;if((f-h|0)<3){f=-2;break a}h=e+3|0;i=f;break}case 7:{f=i;if((f-h|0)<4){f=-2;break a}h=e+4|0;i=f;break}case 8:case 1:case 0:{c[g>>2]=e;f=0;break a}default:h=e+2|0}j=b+72|0;b=h;b:while(1){e=i-b|0;if((e|0)<=1){h=40;break}f=a[b+1>>0]|0;h=a[b>>0]|0;if(!(f<<24>>24))f=d[j+(h&255)>>0]|0;else f=rY(f,h)|0;switch(f|0){case 10:case 9:case 8:case 1:case 0:case 4:{h=38;break b}case 6:{if((e|0)<3){h=35;break b}else f=3;break}case 7:{if((e|0)<4){h=37;break b}else f=4;break}default:f=2}b=b+f|0}if((h|0)==35){c[g>>2]=b;f=6;break}else if((h|0)==37){c[g>>2]=b;f=6;break}else if((h|0)==38){c[g>>2]=b;f=6;break}else if((h|0)==40){c[g>>2]=b;f=6;break}}else f=-1}else f=-4;while(0);return f|0}function eY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f-e|0;k=(k&1|0)==0?f:e+(k&-2)|0;j=b+72|0;i=0;f=e;a:while(1){h=k-f|0;if((h|0)<=1){f=-1;break}b=a[f+1>>0]|0;e=a[f>>0]|0;if(!(b<<24>>24))b=d[j+(e&255)>>0]|0;else b=rY(b,e)|0;switch(b|0){case 8:case 1:case 0:{l=12;break a}case 5:{h=i;f=f+2|0;i=h;continue a}case 6:{if((h|0)<3){f=-2;break a}h=i;f=f+3|0;i=h;continue a}case 7:{if((h|0)<4){f=-2;break a}h=i;f=f+4|0;i=h;continue a}case 2:{b=f+2|0;if((k-b|0)<=1){f=-1;break a}if(a[f+3>>0]|0){h=i;f=b;i=h;continue a}if((a[b>>0]|0)!=33){h=i;f=b;i=h;continue a}b=f+4|0;if((k-b|0)<=1){f=-1;break a}if(a[f+5>>0]|0){h=i;f=b;i=h;continue a}h=(a[b>>0]|0)==91;i=i+(h&1)|0;f=h?f+6|0:b;continue a}case 4:{b=f+2|0;if((k-b|0)<=1){f=-1;break a}if(a[f+3>>0]|0){h=i;f=b;i=h;continue a}if((a[b>>0]|0)!=93){h=i;f=b;i=h;continue a}b=f+4|0;if((k-b|0)<=1){f=-1;break a}if(a[f+5>>0]|0){h=i;f=b;i=h;continue a}if((a[b>>0]|0)!=62){h=i;f=b;i=h;continue a}f=f+6|0;if(!i){l=26;break a}i=i+-1|0;continue a}default:{h=i;f=f+2|0;i=h;continue a}}}if((l|0)==12){c[g>>2]=f;f=0}else if((l|0)==26){c[g>>2]=f;f=42}return f|0}function fY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0>>0){k=f;if((k-e|0)>1){l=b+72|0;j=e;a:while(1){if((k-j|0)<=1){i=30;break}h=a[j+1>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=rY(h,i)|0;switch(h|0){case 3:{i=11;break a}case 2:{i=14;break a}case 10:{i=15;break a}case 9:{i=18;break a}case 21:{i=25;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=2}j=j+h|0}if((i|0)==11)if((j|0)==(e|0)){h=sY(b,e+2|0,f,g)|0;break}else{c[g>>2]=j;h=6;break}else if((i|0)==14){c[g>>2]=j;h=0;break}else if((i|0)==15)if((j|0)==(e|0)){c[g>>2]=e+2;h=7;break}else{c[g>>2]=j;h=6;break}else if((i|0)==18){if((j|0)!=(e|0)){c[g>>2]=j;h=6;break}j=e+2|0;if((k-j|0)<=1){h=-3;break}h=a[e+3>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=rY(h,i)|0;c[g>>2]=(h|0)==10?e+4|0:j;h=7;break}else if((i|0)==25)if((j|0)==(e|0)){c[g>>2]=e+2;h=39;break}else{c[g>>2]=j;h=6;break}else if((i|0)==30){c[g>>2]=j;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function gY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0>>0){k=f;if((k-e|0)>1){l=b+72|0;j=e;a:while(1){if((k-j|0)<=1){i=29;break}h=a[j+1>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=rY(h,i)|0;switch(h|0){case 3:{i=11;break a}case 30:{i=14;break a}case 10:{i=17;break a}case 9:{i=20;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=2}j=j+h|0}if((i|0)==11)if((j|0)==(e|0)){h=sY(b,e+2|0,f,g)|0;break}else{c[g>>2]=j;h=6;break}else if((i|0)==14)if((j|0)==(e|0)){h=tY(b,e+2|0,f,g)|0;h=(h|0)==22?0:h;break}else{c[g>>2]=j;h=6;break}else if((i|0)==17)if((j|0)==(e|0)){c[g>>2]=e+2;h=7;break}else{c[g>>2]=j;h=6;break}else if((i|0)==20){if((j|0)!=(e|0)){c[g>>2]=j;h=6;break}j=e+2|0;if((k-j|0)<=1){h=-3;break}h=a[e+3>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=rY(h,i)|0;c[g>>2]=(h|0)==10?e+4|0:j;h=7;break}else if((i|0)==29){c[g>>2]=j;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function hY(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=d;b=c;while(1){c=a[e>>0]|0;if(!(c<<24>>24)){g=7;break}if((f-b|0)<2){b=0;break}if(a[b+1>>0]|0){b=0;break}if((a[b>>0]|0)!=c<<24>>24){b=0;break}e=e+1|0;b=b+2|0}if((g|0)==7)b=(b|0)==(d|0)&1;return b|0}function iY(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;g=b+72|0;f=c;a:while(1){b=a[f+1>>0]|0;e=a[f>>0]|0;if(!(b<<24>>24))b=d[g+(e&255)>>0]|0;else b=rY(b,e)|0;switch(b|0){case 5:{b=2;break}case 6:{b=3;break}case 7:{b=4;break}case 27:case 26:case 25:case 24:case 23:case 22:case 29:{b=2;break}default:break a}f=f+b|0}return f-c|0}function jY(b,c){b=b|0;c=c|0;var e=0,f=0;f=b+72|0;a:while(1){b=a[c+1>>0]|0;e=a[c>>0]|0;if(!(b<<24>>24))b=d[f+(e&255)>>0]|0;else b=rY(b,e)|0;switch(b|0){case 21:case 9:case 10:break;default:break a}c=c+2|0}return c|0}function kY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=b+72|0;m=0;n=0;b=1;a:while(1){l=e+2|0;i=e+3|0;h=a[i>>0]|0;j=h<<24>>24==0;k=a[l>>0]|0;if(j)h=d[o+(k&255)>>0]|0;else h=rY(h,k)|0;do switch(h|0){case 5:{if(b|0){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}if((n|0)>=(f|0)){j=n;k=m;b=1;e=l;n=j;m=k;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;j=n;k=m;b=1;e=l;n=j;m=k;continue a}case 6:{if(b|0){j=b;k=n;l=m;e=i;b=j;n=k;m=l;continue a}if((n|0)>=(f|0)){k=n;l=m;b=1;e=i;n=k;m=l;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;k=n;l=m;b=1;e=i;n=k;m=l;continue a}case 7:{if(!b)if((n|0)<(f|0)){c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;b=1}else b=1;k=n;l=m;e=e+4|0;n=k;m=l;continue a}case 24:case 22:case 29:{if(b|0){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}if((n|0)>=(f|0)){j=n;k=m;b=1;e=l;n=j;m=k;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;j=n;k=m;b=1;e=l;n=j;m=k;continue a}case 12:{if((b|0)!=2){if((n|0)>=(f|0)){k=n;m=12;b=2;e=l;n=k;continue a}c[g+(n<<4)+4>>2]=e+4;k=n;m=12;b=2;e=l;n=k;continue a}if((m|0)!=12){j=n;k=m;b=2;e=l;n=j;m=k;continue a}if((n|0)<(f|0))c[g+(n<<4)+8>>2]=l;m=12;n=n+1|0;b=0;e=l;continue a}case 13:{if((b|0)!=2){if((n|0)>=(f|0)){k=n;m=13;b=2;e=l;n=k;continue a}c[g+(n<<4)+4>>2]=e+4;k=n;m=13;b=2;e=l;n=k;continue a}if((m|0)!=13){j=n;k=m;b=2;e=l;n=j;m=k;continue a}if((n|0)<(f|0))c[g+(n<<4)+8>>2]=l;m=13;n=n+1|0;b=0;e=l;continue a}case 3:{if((n|0)>=(f|0)){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}a[g+(n<<4)+12>>0]=0;i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}case 21:{switch(b|0){case 1:{j=n;k=m;b=0;e=l;n=j;m=k;continue a}case 2:break;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}if((n|0)>=(f|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}i=g+(n<<4)+12|0;if(!(a[i>>0]|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}do if(j&(l|0)!=(c[g+(n<<4)+4>>2]|0)&k<<24>>24==32){h=a[e+5>>0]|0;b=a[e+4>>0]|0;if(!(h<<24>>24)){if(b<<24>>24==32)break;b=d[o+(b&255)>>0]|0}else b=rY(h,b)|0;if((b|0)!=(m|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}}while(0);a[i>>0]=0;j=n;k=m;b=2;e=l;n=j;m=k;continue a}case 10:case 9:{switch(b|0){case 1:{j=n;k=m;b=0;e=l;n=j;m=k;continue a}case 2:break;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}if((n|0)>=(f|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}a[g+(n<<4)+12>>0]=0;j=n;k=m;b=2;e=l;n=j;m=k;continue a}case 17:case 11:if((b|0)==2){j=n;k=m;b=2;e=l;n=j;m=k;continue a}else break a;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}while(0)}return n|0}function lY(b,c){b=b|0;c=c|0;var d=0,e=0;b=c+4|0;a:do if((a[c+5>>0]|0)==0?(a[b>>0]|0)==120:0){c=c+6|0;b=0;while(1){b:while(1){if(!(a[c+1>>0]|0)){d=a[c>>0]|0;if(d<<24>>24==59){e=17;break a}d=d<<24>>24;switch(d|0){case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{e=8;break b}case 70:case 69:case 68:case 67:case 66:case 65:{e=9;break b}case 102:case 101:case 100:case 99:case 98:case 97:{e=10;break b}default:{}}}c=c+2|0}if((e|0)==8){e=0;b=d+-48|b<<4}else if((e|0)==9){e=0;b=(b<<4)+-55+d|0}else if((e|0)==10){e=0;b=(b<<4)+-87+d|0}if((b|0)<1114112)c=c+2|0;else{b=-1;break}}}else{d=b;b=0;e=13}while(0);c:do if((e|0)==13)while(1){e=0;if(!(a[d+1>>0]|0)){c=a[d>>0]|0;if(c<<24>>24==59){e=17;break c}c=c<<24>>24}else c=-1;b=(b*10|0)+-48+c|0;if((b|0)>=1114112){b=-1;break}else{d=d+2|0;e=13}}while(0);if((e|0)==17)b=iX(b)|0;return b|0}function mY(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;a:do switch((d-c|0)/2|0|0){case 2:{if((a[c+3>>0]|0)==0?(a[c+2>>0]|0)==116:0){if(!(a[c+1>>0]|0))b=a[c>>0]|0;else b=-1;b=(b|0)==108?60:(b|0)==103?62:0}else e=27;break}case 3:{if((((((a[c+1>>0]|0)==0?(a[c>>0]|0)==97:0)?(a[c+3>>0]|0)==0:0)?(a[c+2>>0]|0)==109:0)?(a[c+5>>0]|0)==0:0)?(a[c+4>>0]|0)==112:0)b=38;else e=27;break}case 4:{if(!(a[c+1>>0]|0))switch(a[c>>0]|0){case 113:{if(a[c+3>>0]|0){e=27;break a}if((a[c+2>>0]|0)!=117){e=27;break a}if(a[c+5>>0]|0){e=27;break a}if((a[c+4>>0]|0)!=111){e=27;break a}if(a[c+7>>0]|0){e=27;break a}if((a[c+6>>0]|0)==116){b=34;break a}else{e=27;break a}}case 97:{if(a[c+3>>0]|0){e=27;break a}if((a[c+2>>0]|0)!=112){e=27;break a}if(a[c+5>>0]|0){e=27;break a}if((a[c+4>>0]|0)!=111){e=27;break a}if(a[c+7>>0]|0){e=27;break a}if((a[c+6>>0]|0)==115){b=39;break a}else{e=27;break a}}default:{e=27;break a}}else e=27;break}default:e=27}while(0);if((e|0)==27)b=0;return b|0}function nY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=b+72|0;k=g+4|0;while(1){if((f-e|0)<=1)break;b=a[e+1>>0]|0;h=a[e>>0]|0;if(!(b<<24>>24))b=d[j+(h&255)>>0]|0;else b=rY(b,h)|0;switch(b|0){case 5:{e=e+2|0;break}case 6:{e=e+3|0;break}case 7:{e=e+4|0;break}case 10:{c[k>>2]=-1;c[g>>2]=(c[g>>2]|0)+1;e=e+2|0;break}case 9:{c[g>>2]=(c[g>>2]|0)+1;i=e+2|0;if((f-i|0)>1){b=a[e+3>>0]|0;h=a[i>>0]|0;if(!(b<<24>>24))b=d[j+(h&255)>>0]|0;else b=rY(b,h)|0;e=(b|0)==10?e+4|0:i}else e=i;c[k>>2]=-1;break}default:e=e+2|0}c[k>>2]=(c[k>>2]|0)+1}return}function oY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f+-2|0;i=b+72|0;f=e;a:while(1){h=f+2|0;if((j-h|0)<=1){f=1;break}f=a[f+3>>0]|0;b=f<<24>>24==0;e=a[h>>0]|0;if(b)f=d[i+(e&255)>>0]|0;else f=rY(f,e)|0;switch(f|0){case 23:case 19:case 30:case 33:case 16:case 18:case 10:case 9:case 15:case 14:case 17:case 35:case 34:case 32:case 31:case 13:case 27:case 24:case 25:{f=h;continue a}case 21:if(b&e<<24>>24==9){k=12;break a}else{f=h;continue a}case 22:case 26:{if(!b){k=12;break a}if(e<<24>>24>=0){f=h;continue a}break}default:if(!b){k=12;break a}}switch(e<<24>>24|0){case 64:case 36:{f=h;break}default:{k=12;break a}}}if((k|0)==12){c[g>>2]=h;f=0}return f|0}function pY(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=c[e>>2]|0;k=j+(f-j&-2)|0;l=k;m=h;a:while(1){if(j>>>0>=k>>>0){b=0;break}i=a[j>>0]|0;b=a[j+1>>0]|0;f=b&255;switch(b<<24>>24){case 0:{if(i<<24>>24>-1){b=c[g>>2]|0;if((b|0)==(h|0)){b=2;break a}c[g>>2]=b+1;a[b>>0]=i;b=j}else n=7;break}case 7:case 6:case 5:case 4:case 3:case 2:case 1:{n=7;break}case -37:case -38:case -39:case -40:{b=c[g>>2]|0;if((m-b|0)<4){b=2;break a}if((l-j|0)<4){b=1;break a}o=i&255;i=(f<<2&12|o>>>6)+1|0;c[g>>2]=b+1;a[b>>0]=i>>>2|240;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o>>>2&15|i<<4&48|128;b=j+2|0;i=d[b>>0]|0;f=(o<<4&48|i>>>6|a[j+3>>0]<<2&12|128)&255;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=f;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=i&63|128;break}default:{b=c[g>>2]|0;if((m-b|0)<3){b=2;break a}c[g>>2]=b+1;a[b>>0]=f>>>4|224;o=i&255;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o>>>6|f<<2&60|128;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o&63|128;b=j}}if((n|0)==7){n=0;b=c[g>>2]|0;if((m-b|0)<2){b=2;break}o=i&255;c[g>>2]=b+1;a[b>>0]=o>>>6|f<<2|192;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o&63|128;b=j}j=b+2|0}c[e>>2]=j;return b|0}function qY(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;j=c[f>>2]|0;l=g-j&-2;e=j+l|0;if((l|0)>(i-(c[h>>2]|0)|0)){k=e+-2|0;g=(a[k+1>>0]&-8)<<24>>24==-40;l=g&1;e=g?k:e}else l=0;g=j;while(1){j=g>>>0>>0;k=c[h>>2]|0;if(!(j&k>>>0>>0))break;j=((d[g+1>>0]|0)<<8|(d[g>>0]|0))&65535;c[h>>2]=k+2;b[k>>1]=j;k=(c[f>>2]|0)+2|0;c[f>>2]=k;g=k}return ((k|0)!=(i|0)|j^1?l:2)|0}function rY(a,b){a=a|0;b=b|0;var c=0;switch(a<<24>>24){case -37:case -38:case -39:case -40:{a=7;break}case -33:case -34:case -35:case -36:{a=8;break}case -1:{if((b&255)>253)a=0;else c=4;break}default:c=4}if((c|0)==4)a=29;return a|0}function sY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=f;j=l-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=rY(k,i)|0}switch(h|0){case 29:{j=i&255;if(!(1<<(j&31)&c[56836+((j>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;b=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;b=0;break a}case 6:{if((j|0)<3){b=-2;break a}c[g>>2]=e;b=0;break a}case 7:{if((j|0)<4){b=-2;break a}c[g>>2]=e;b=0;break a}case 19:{b=uY(b,e+2|0,f,g)|0;break a}default:{c[g>>2]=e;b=0;break a}}k=b+72|0;j=e;b:while(1){i=j+2|0;e=l-i|0;if((e|0)<=1){b=-1;break a}b=a[j+3>>0]|0;h=a[i>>0]|0;if(!(b<<24>>24))f=d[k+(h&255)>>0]|0;else f=rY(b,h)|0;switch(f|0){case 27:case 26:case 25:case 24:case 22:{j=i;continue b}case 5:{h=23;break b}case 6:{h=24;break b}case 7:{h=26;break b}case 18:{h=28;break b}case 29:break;default:{h=29;break b}}e=h&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(b&255)>>0]|0)<<3)<<2)>>2])){h=22;break}else j=i}if((h|0)==22){c[g>>2]=i;b=0;break}else if((h|0)==23){c[g>>2]=i;b=0;break}else if((h|0)==24){if((e|0)<3){b=-2;break}c[g>>2]=i;b=0;break}else if((h|0)==26){if((e|0)<4){b=-2;break}c[g>>2]=i;b=0;break}else if((h|0)==28){c[g>>2]=j+4;b=9;break}else if((h|0)==29){c[g>>2]=i;b=0;break}}else b=-1;while(0);return b|0}function tY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;j=f-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=rY(k,i)|0}switch(h|0){case 29:{l=i&255;if(!(1<<(l&31)&c[56836+((l>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}case 30:case 9:case 10:case 21:{c[g>>2]=e;f=22;break a}default:{c[g>>2]=e;f=0;break a}}l=b+72|0;b=e;b:while(1){k=b+2|0;e=f-k|0;if((e|0)<=1){f=-1;break a}h=a[b+3>>0]|0;i=a[k>>0]|0;if(!(h<<24>>24))j=d[l+(i&255)>>0]|0;else j=rY(h,i)|0;switch(j|0){case 27:case 26:case 25:case 24:case 22:{b=k;continue b}case 5:{h=23;break b}case 6:{h=24;break b}case 7:{h=26;break b}case 18:{h=28;break b}case 29:break;default:{h=29;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=22;break}else b=k}if((h|0)==22){c[g>>2]=k;f=0;break}else if((h|0)==23){c[g>>2]=k;f=0;break}else if((h|0)==24){if((e|0)<3){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==26){if((e|0)<4){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==28){c[g>>2]=b+4;f=28;break}else if((h|0)==29){c[g>>2]=k;f=0;break}}else f=-1;while(0);return f|0}function uY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=f;a:do if((k-e|0)>1){i=a[e+1>>0]|0;h=a[e>>0]|0;do if(!(i<<24>>24))if(h<<24>>24==120){h=vY(b,e+2|0,f,g)|0;break a}else{h=d[b+72+(h&255)>>0]|0;break}else h=rY(i,h)|0;while(0);if((h|0)!=25){c[g>>2]=e;h=0;break}j=b+72|0;b=e;b:while(1){i=b+2|0;if((k-i|0)<=1){h=-1;break a}h=a[b+3>>0]|0;f=a[i>>0]|0;if(!(h<<24>>24))h=d[j+(f&255)>>0]|0;else h=rY(h,f)|0;switch(h|0){case 25:{b=i;break}case 18:{f=15;break b}default:{f=16;break b}}}if((f|0)==15){c[g>>2]=b+4;h=10;break}else if((f|0)==16){c[g>>2]=i;h=0;break}}else h=-1;while(0);return h|0}function vY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;a:do if((f-e|0)>1){h=a[e+1>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e>>0]|0)>>0]|0;else h=rY(h,a[e>>0]|0)|0;if((h&-2|0)!=24){c[g>>2]=e;f=0;break}j=b+72|0;b:while(1){i=e+2|0;if((f-i|0)<=1){f=-1;break a}h=a[e+3>>0]|0;b=a[i>>0]|0;if(!(h<<24>>24))h=d[j+(b&255)>>0]|0;else h=rY(h,b)|0;switch(h|0){case 24:case 25:{e=i;break}case 18:{h=13;break b}default:{h=14;break b}}}if((h|0)==13){c[g>>2]=e+4;f=10;break}else if((h|0)==14){c[g>>2]=i;f=0;break}}else f=-1;while(0);return f|0}function wY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=f;j=o-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=rY(k,i)|0}switch(h|0){case 29:{m=i&255;if(!(1<<(m&31)&c[56836+((m>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){c[g>>2]=e;h=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;h=0;break a}case 6:{if((j|0)<3){h=-2;break a}c[g>>2]=e;h=0;break a}case 7:{if((j|0)<4){h=-2;break a}c[g>>2]=e;h=0;break a}case 16:{i=e+2|0;if((o-i|0)<=1){h=-1;break a}h=a[e+3>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[i>>0]|0)>>0]|0;else h=rY(h,a[i>>0]|0)|0;switch(h|0){case 27:{h=xY(b,e+4|0,f,g)|0;break a}case 20:{h=yY(e+4|0,f,g)|0;break a}default:{c[g>>2]=i;h=0;break a}}}case 15:{h=zY(b,e+2|0,f,g)|0;break a}case 17:{h=AY(b,e+2|0,f,g)|0;break a}default:{c[g>>2]=e;h=0;break a}}m=b+72|0;l=0;h=e+2|0;b:while(1){c:while(1){i=o-h|0;if((i|0)<=1){h=-1;break a}j=a[h+1>>0]|0;k=a[h>>0]|0;if(!(j<<24>>24))e=d[m+(k&255)>>0]|0;else e=rY(j,k)|0;switch(e|0){case 5:{n=34;break b}case 6:{n=35;break b}case 7:{n=37;break b}case 10:case 9:case 21:{n=55;break b}case 11:{n=69;break b}case 17:break b;case 23:break c;case 29:{e=k&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140962+(j&255)>>0]<<3)<<2)>>2])){n=32;break b}break}case 27:case 26:case 25:case 24:case 22:break;default:{n=75;break b}}h=h+2|0}if(l|0){n=40;break}k=h+2|0;e=o-k|0;if((e|0)<=1){h=-1;break a}l=a[h+3>>0]|0;i=a[k>>0]|0;if(!(l<<24>>24))j=d[m+(i&255)>>0]|0;else j=rY(l,i)|0;switch(j|0){case 5:{n=49;break b}case 6:{n=50;break b}case 7:{n=52;break b}case 29:{e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140706+(l&255)>>0]<<3)<<2)>>2])){n=47;break b}break}case 24:case 22:break;default:{n=54;break b}}l=1;h=h+4|0}d:switch(n|0){case 32:{c[g>>2]=h;h=0;break a}case 34:{c[g>>2]=h;h=0;break a}case 35:{if((i|0)<3){h=-2;break a}c[g>>2]=h;h=0;break a}case 37:{if((i|0)<4){h=-2;break a}c[g>>2]=h;h=0;break a}case 40:{c[g>>2]=h;h=0;break a}case 47:{c[g>>2]=k;h=0;break a}case 49:{c[g>>2]=k;h=0;break a}case 50:{if((e|0)<3){h=-2;break a}c[g>>2]=k;h=0;break a}case 52:{if((e|0)<4){h=-2;break a}c[g>>2]=k;h=0;break a}case 54:{c[g>>2]=k;h=0;break a}case 55:{e:while(1){n=0;i=h+2|0;j=o-i|0;if((j|0)<=1){h=-1;break a}k=a[h+3>>0]|0;e=a[i>>0]|0;if(!(k<<24>>24))l=d[m+(e&255)>>0]|0;else l=rY(k,e)|0;switch(l|0){case 11:{h=i;n=69;break d}case 17:{h=i;break d}case 10:case 9:case 21:{h=i;n=55;break}case 29:{n=60;break e}case 24:case 22:break e;case 5:{n=63;break e}case 6:{n=64;break e}case 7:{n=66;break e}default:{n=68;break e}}}if((n|0)==60){o=e&255;if(!(1<<(o&31)&c[56836+((o>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){c[g>>2]=i;h=0;break a}}else if((n|0)==63){c[g>>2]=i;h=0;break a}else if((n|0)==64){if((j|0)<3){h=-2;break a}c[g>>2]=i;h=0;break a}else if((n|0)==66){if((j|0)<4){h=-2;break a}c[g>>2]=i;h=0;break a}else if((n|0)==68){c[g>>2]=i;h=0;break a}h=BY(b,h+4|0,f,g)|0;break a}case 75:{c[g>>2]=h;h=0;break a}}if((n|0)==69){c[g>>2]=h+2;h=2;break}i=h+2|0;if((o-i|0)>1){if((a[h+3>>0]|0)==0?(a[i>>0]|0)==62:0){c[g>>2]=h+4;h=4;break}c[g>>2]=i;h=0}else h=-1}else h=-1;while(0);return h|0}function xY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f;a:do if((j-e|0)>1){if((a[e+1>>0]|0)==0?(a[e>>0]|0)==45:0){i=b+72|0;h=e+2|0;b:while(1){e=j-h|0;if((e|0)<=1){f=-1;break a}f=a[h+1>>0]|0;b=a[h>>0]|0;if(!(f<<24>>24))f=d[i+(b&255)>>0]|0;else f=rY(f,b)|0;switch(f|0){case 8:case 1:case 0:{k=16;break b}case 5:{h=h+2|0;continue b}case 6:{if((e|0)<3){f=-2;break a}h=h+3|0;continue b}case 7:{if((e|0)<4){f=-2;break a}h=h+4|0;continue b}case 27:{f=h+2|0;if((j-f|0)<=1){f=-1;break a}if(a[h+3>>0]|0){h=f;continue b}if((a[f>>0]|0)==45)break b;else{h=f;continue b}}default:{h=h+2|0;continue b}}}if((k|0)==16){c[g>>2]=h;f=0;break}f=h+4|0;if((j-f|0)<=1){f=-1;break}if((a[h+5>>0]|0)==0?(a[f>>0]|0)==62:0){c[g>>2]=h+6;f=13;break}c[g>>2]=f;f=0;break}c[g>>2]=e;f=0}else f=-1;while(0);return f|0}function yY(b,d,e){b=b|0;d=d|0;e=e|0;if((d-b|0)>11){d=0;while(1){if((d|0)>=6){d=8;break}if(a[b+1>>0]|0){d=0;break}if((a[b>>0]|0)!=(a[141218+d>>0]|0)){d=0;break}d=d+1|0;b=b+2|0}c[e>>2]=b}else d=-1;return d|0}function zY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q;o=f;j=o-e|0;a:do if((j|0)>1){f=a[e+1>>0]|0;if(!(f<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=rY(f,i)|0}switch(h|0){case 29:{m=i&255;if(!(1<<(m&31)&c[56836+((m>>>5|d[140706+(f&255)>>0]<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}m=b+72|0;k=e;b:while(1){f=k+2|0;h=o-f|0;if((h|0)<=1){f=-1;break a}i=a[k+3>>0]|0;j=a[f>>0]|0;if(!(i<<24>>24))b=d[m+(j&255)>>0]|0;else b=rY(i,j)|0;switch(b|0){case 27:case 26:case 25:case 24:case 22:{k=f;continue b}case 5:{n=22;break b}case 6:{n=23;break b}case 7:{n=25;break b}case 10:case 9:case 21:{n=27;break b}case 15:{n=46;break b}case 29:break;default:break b}k=j&255;if(!(1<<(k&31)&c[56836+((k>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){n=21;break}else k=f}if((n|0)==21){c[g>>2]=f;f=0;break}else if((n|0)==22){c[g>>2]=f;f=0;break}else if((n|0)==23){if((h|0)<3){f=-2;break}c[g>>2]=f;f=0;break}else if((n|0)==25){if((h|0)<4){f=-2;break}c[g>>2]=f;f=0;break}else if((n|0)==27){if(!(CY(e,f,p)|0)){c[g>>2]=f;f=0;break}j=k+4|0;c:while(1){i=o-j|0;if((i|0)<=1){f=-1;break a}f=a[j+1>>0]|0;h=a[j>>0]|0;if(!(f<<24>>24))f=d[m+(h&255)>>0]|0;else f=rY(f,h)|0;switch(f|0){case 8:case 1:case 0:{n=40;break c}case 5:{j=j+2|0;continue c}case 6:{if((i|0)<3){f=-2;break a}j=j+3|0;continue c}case 7:{if((i|0)<4){f=-2;break a}j=j+4|0;continue c}case 15:{f=j+2|0;if((o-f|0)<=1){f=-1;break a}if(a[j+3>>0]|0){j=f;continue c}if((a[f>>0]|0)==62){n=44;break c}else{j=f;continue c}}default:{j=j+2|0;continue c}}}if((n|0)==40){c[g>>2]=j;f=0;break}else if((n|0)==44){c[g>>2]=j+4;f=c[p>>2]|0;break}}else if((n|0)==46){if(!(CY(e,f,p)|0)){c[g>>2]=f;f=0;break}f=k+4|0;if((o-f|0)<=1){f=-1;break}if((a[k+5>>0]|0)==0?(a[f>>0]|0)==62:0){c[g>>2]=k+6;f=c[p>>2]|0;break}}c[g>>2]=f;f=0}else f=-1;while(0);l=q;return f|0}function AY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;j=f-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=rY(k,i)|0}switch(h|0){case 29:{l=i&255;if(!(1<<(l&31)&c[56836+((l>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}l=b+72|0;b=e;b:while(1){j=b+2|0;e=f-j|0;if((e|0)<=1){f=-1;break a}h=a[b+3>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))k=d[l+(i&255)>>0]|0;else k=rY(h,i)|0;switch(k|0){case 23:case 27:case 26:case 25:case 24:case 22:{b=j;continue b}case 5:{h=22;break b}case 6:{h=23;break b}case 7:{h=25;break b}case 10:case 9:case 21:{h=27;break b}case 11:{h=34;break b}case 29:break;default:{h=35;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=21;break}else b=j}if((h|0)==21){c[g>>2]=j;f=0;break}else if((h|0)==22){c[g>>2]=j;f=0;break}else if((h|0)==23){if((e|0)<3){f=-2;break}c[g>>2]=j;f=0;break}else if((h|0)==25){if((e|0)<4){f=-2;break}c[g>>2]=j;f=0;break}else if((h|0)==27){c:while(1){k=j+2|0;if((f-k|0)<=1){f=-1;break a}h=a[j+3>>0]|0;i=a[k>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=rY(h,i)|0;switch(h|0){case 10:case 9:case 21:{j=k;h=27;break}case 11:{h=32;break c}default:{h=33;break c}}}if((h|0)==32){c[g>>2]=j+4;f=5;break}else if((h|0)==33){c[g>>2]=k;f=0;break}}else if((h|0)==34){c[g>>2]=b+4;f=5;break}else if((h|0)==35){c[g>>2]=j;f=0;break}}else f=-1;while(0);return f|0}function BY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+16|0;q=s;c[q>>2]=e;r=f;o=b+72|0;h=0;a:while(1){b:while(1){m=r-e|0;if((m|0)<=1){e=-1;break a}i=a[e+1>>0]|0;j=a[e>>0]|0;if(!(i<<24>>24))k=d[o+(j&255)>>0]|0;else k=rY(i,j)|0;switch(k|0){case 5:{p=11;break a}case 6:{p=12;break a}case 7:{p=14;break a}case 23:{p=16;break b}case 10:case 9:case 21:{p=31;break b}case 14:{p=37;break b}case 29:{n=j&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){p=9;break a}break}case 27:case 26:case 25:case 24:case 22:break;default:{p=89;break a}}n=e+2|0;c[q>>2]=n;e=n}c:do if((p|0)==16){p=0;if(h|0){p=17;break a}h=e+2|0;c[q>>2]=h;i=h;j=r-i|0;if((j|0)<=1){e=-1;break a}k=a[e+3>>0]|0;m=a[h>>0]|0;if(!(k<<24>>24))n=d[o+(m&255)>>0]|0;else n=rY(k,m)|0;switch(n|0){case 5:{p=25;break a}case 6:{p=26;break a}case 7:{p=28;break a}case 24:case 22:{h=1;break c}case 29:break;default:{p=30;break a}}n=m&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){p=24;break a}else h=1}else if((p|0)==31)while(1){p=0;i=e+2|0;c[q>>2]=i;j=i;if((r-j|0)<=1){e=-1;break a}e=a[e+3>>0]|0;h=a[i>>0]|0;if(!(e<<24>>24))e=d[o+(h&255)>>0]|0;else e=rY(e,h)|0;switch(e|0){case 14:{e=i;p=37;break c}case 9:case 10:case 21:{e=i;p=31;break}default:{p=36;break a}}}while(0);d:do if((p|0)==37){while(1){p=0;j=e+2|0;c[q>>2]=j;k=j;if((r-k|0)<=1){e=-1;break a}h=a[e+3>>0]|0;i=a[j>>0]|0;if(!(h<<24>>24))m=d[o+(i&255)>>0]|0;else m=rY(h,i)|0;if((m|1|0)==13)break;switch(m|0){case 9:case 10:case 21:{e=j;p=37;break}default:{p=43;break a}}}e=e+4|0;c[q>>2]=e;e:while(1){j=r-e|0;if((j|0)<=1){e=-1;break a}h=a[e+1>>0]|0;i=a[e>>0]|0;if(!(h<<24>>24))h=d[o+(i&255)>>0]|0;else h=rY(h,i)|0;if((h|0)==(m|0))break;switch(h|0){case 8:case 1:case 0:{p=56;break a}case 2:{p=61;break a}case 5:{n=e+2|0;c[q>>2]=n;e=n;continue e}case 6:{if((j|0)<3){e=-2;break a}n=e+3|0;c[q>>2]=n;e=n;continue e}case 7:{if((j|0)<4){e=-2;break a}n=e+4|0;c[q>>2]=n;e=n;continue e}case 3:{e=sY(b,e+2|0,f,q)|0;if((e|0)<1){p=59;break a}e=c[q>>2]|0;continue e}default:{n=e+2|0;c[q>>2]=n;e=n;continue e}}}i=e+2|0;c[q>>2]=i;k=i;if((r-k|0)<=1){e=-1;break a}h=a[e+3>>0]|0;j=a[i>>0]|0;if(!(h<<24>>24))h=d[o+(j&255)>>0]|0;else h=rY(h,j)|0;switch(h|0){case 11:{p=81;break a}case 17:{p=82;break a}case 10:case 9:case 21:{e=i;break}default:{p=68;break a}}f:while(1){i=e+2|0;c[q>>2]=i;h=i;j=r-h|0;if((j|0)<=1){e=-1;break a}k=a[e+3>>0]|0;m=a[i>>0]|0;if(!(k<<24>>24))n=d[o+(m&255)>>0]|0;else n=rY(k,m)|0;switch(n|0){case 5:{p=76;break a}case 6:{p=77;break a}case 7:{p=79;break a}case 11:{p=81;break a}case 17:{p=82;break a}case 24:case 22:{h=0;break d}case 10:case 9:case 21:{e=i;break}case 29:break f;default:{p=87;break a}}}n=m&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){p=75;break a}else h=0}while(0);e=e+4|0;c[q>>2]=e}switch(p|0){case 9:{c[g>>2]=e;e=0;break}case 11:{c[g>>2]=e;e=0;break}case 12:{if((m|0)<3)e=-2;else{c[g>>2]=e;e=0}break}case 14:{if((m|0)<4)e=-2;else{c[g>>2]=e;e=0}break}case 17:{c[g>>2]=e;e=0;break}case 24:{c[g>>2]=h;e=0;break}case 25:{c[g>>2]=h;e=0;break}case 26:{if((j|0)<3)e=-2;else{c[g>>2]=h;e=0}break}case 28:{if((j|0)<4)e=-2;else{c[g>>2]=h;e=0}break}case 30:{c[g>>2]=i;e=0;break}case 36:{c[g>>2]=j;e=0;break}case 43:{c[g>>2]=k;e=0;break}case 56:{c[g>>2]=e;e=0;break}case 59:{if(!e){c[g>>2]=c[q>>2];e=0}break}case 61:{c[g>>2]=e;e=0;break}case 68:{c[g>>2]=k;e=0;break}case 75:{c[g>>2]=i;e=0;break}case 76:{c[g>>2]=i;e=0;break}case 77:{if((j|0)<3)e=-2;else{c[g>>2]=i;e=0}break}case 79:{if((j|0)<4)e=-2;else{c[g>>2]=i;e=0}break}case 81:{c[g>>2]=e+4;e=1;break}case 82:{h=i+2|0;c[q>>2]=h;e=h;if((r-e|0)>1){if((a[i+3>>0]|0)==0?(a[h>>0]|0)==62:0){c[g>>2]=i+4;e=3;break}c[g>>2]=e;e=0}else e=-1;break}case 87:{c[g>>2]=h;e=0;break}case 89:{c[g>>2]=e;e=0;break}}l=s;return e|0}function CY(b,d,e){b=b|0;d=d|0;e=e|0;c[e>>2]=11;a:do if((d-b|0)==6?(a[b+1>>0]|0)==0:0){switch(a[b>>0]|0){case 120:{d=0;break}case 88:{d=1;break}default:{d=1;break a}}if(!(a[b+3>>0]|0)){switch(a[b+2>>0]|0){case 109:break;case 77:{d=1;break}default:{d=1;break a}}if(!(a[b+5>>0]|0)){switch(a[b+4>>0]|0){case 108:break;case 76:{d=0;break a}default:{d=1;break a}}if(!d){c[e>>2]=12;d=1}else d=0}else d=1}else d=1}else d=1;while(0);return d|0}function DY(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;k=e+72|0;a:while(1){b:while(1){j=g-f|0;if((j|0)<=1){f=-1;break a}e=a[f+1>>0]|0;i=a[f>>0]|0;if(!(e<<24>>24))e=d[k+(i&255)>>0]|0;else e=rY(e,i)|0;switch(e|0){case 8:case 1:case 0:{l=10;break a}case 6:{l=9;break b}case 7:{l=19;break b}case 5:{f=f+2|0;continue b}case 13:case 12:{i=f+2|0;if((e|0)==(b|0)){l=12;break a}else{f=i;continue b}}default:{f=f+2|0;continue b}}}if((l|0)==9){l=0;if((j|0)<3){f=-2;break}else{f=f+3|0;continue}}else if((l|0)==19){l=0;if((j|0)<4){f=-2;break}else{f=f+4|0;continue}}}c:do if((l|0)==10){c[h>>2]=f;f=0}else if((l|0)==12)if((g-i|0)>1){c[h>>2]=i;g=a[f+3>>0]|0;f=a[i>>0]|0;if(!(g<<24>>24))f=d[k+(f&255)>>0]|0;else f=rY(g,f)|0;switch(f|0){case 20:case 30:case 11:case 10:case 9:case 21:{f=27;break c}default:{}}f=0}else f=-27;while(0);return f|0}function EY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f;a:do if((k-e|0)>1){h=a[e+1>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e>>0]|0)>>0]|0;else h=rY(h,a[e>>0]|0)|0;switch(h|0){case 27:{h=xY(b,e+2|0,f,g)|0;break a}case 20:{c[g>>2]=e+2;h=33;break a}case 24:case 22:{j=b+72|0;b:while(1){i=e+2|0;f=k-i|0;if((f|0)<=1){h=-1;break a}h=a[e+3>>0]|0;b=a[i>>0]|0;if(!(h<<24>>24))h=d[j+(b&255)>>0]|0;else h=rY(h,b)|0;switch(h|0){case 24:case 22:{e=i;break}case 30:{l=15;break b}case 10:case 9:case 21:break b;default:{l=22;break b}}}if((l|0)==22){c[g>>2]=i;h=0;break a}c:do if((l|0)==15){if((f|0)<=3){h=-1;break a}b=a[e+5>>0]|0;h=a[e+4>>0]|0;if(!(b<<24>>24))h=d[j+(h&255)>>0]|0;else h=rY(b,h)|0;switch(h|0){case 30:case 10:case 9:case 21:break;default:break c}c[g>>2]=i;h=0;break a}while(0);c[g>>2]=i;h=16;break a}default:{c[g>>2]=e;h=0;break a}}}else h=-1;while(0);return h|0}function FY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f-e|0;a:do if((j|0)>1){k=a[e+1>>0]|0;if(!(k<<24>>24)){i=a[e>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e>>0]|0;h=rY(k,i)|0}switch(h|0){case 29:{j=i&255;if(!(1<<(j&31)&c[56836+((j>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}b=b+72|0;k=e;b:while(1){h=k;k=k+2|0;e=f-k|0;if((e|0)<=1){f=-20;break a}h=a[h+3>>0]|0;i=a[k>>0]|0;if(!(h<<24>>24))j=d[b+(i&255)>>0]|0;else j=rY(h,i)|0;switch(j|0){case 27:case 26:case 25:case 24:case 22:continue b;case 5:{h=22;break b}case 6:{h=23;break b}case 7:{h=25;break b}case 36:case 30:case 11:case 32:case 21:case 10:case 9:{h=27;break b}case 29:break;default:{h=28;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=21;break}}if((h|0)==21){c[g>>2]=k;f=0;break}else if((h|0)==22){c[g>>2]=k;f=0;break}else if((h|0)==23){if((e|0)<3){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==25){if((e|0)<4){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==27){c[g>>2]=k;f=20;break}else if((h|0)==28){c[g>>2]=k;f=0;break}}else f=-1;while(0);return f|0}function GY(b,d,e){b=b|0;d=d|0;e=e|0;e=HY(e)|0;if((e|0)==-1)e=0;else{a[b+69>>0]=e;c[b>>2]=67;c[b+4>>2]=68;c[b+48>>2]=31;c[b+72>>2]=d;c[d>>2]=b;e=1}return e|0}function HY(a){a=a|0;var b=0;a:do if(!a)b=6;else{b=0;while(1){if((b|0)>=6){b=-1;break a}if(pZ(a,c[59964+(b<<2)>>2]|0)|0)break a;b=b+1|0}}while(0);return b|0}function IY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return LY(58844,a,0,b,c,d)|0}function JY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return LY(58844,a,1,b,c,d)|0}function KY(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;AX(58480,b,c,d);return}function LY(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;a:do if(f>>>0>>0){l=c[d+72>>2]|0;i=f+1|0;b:do if((i|0)==(g|0)){i=a[d+69>>0]|0;if(((i<<24>>24)+-3|0)>>>0<3){i=-1;break a}switch(a[f>>0]|0){case 60:case 0:{i=-1;break a}case -17:case -1:case -2:break;default:break b}if(!((e|0)==1&i<<24>>24==0)){i=-1;break a}}else{k=a[f>>0]|0;i=a[i>>0]|0;j=((k&255)<<8|i&255)&65535;c:do if(j<<16>>16<-2){if(j<<16>>16>=-257){switch(j<<16>>16){case -257:break;default:break c}if((e|0)==1&(a[d+69>>0]|0)==0)break b;c[h>>2]=f+2;c[l>>2]=c[b+16>>2];i=14;break a}switch(j<<16>>16){case -4165:break;default:break c}if((e|0)==1)switch(a[d+69>>0]|0){case 0:case 3:case 4:case 5:break b;default:{}}i=f+2|0;if((i|0)==(g|0)){i=-1;break a}if((a[i>>0]|0)!=-65)break b;c[h>>2]=f+3;c[l>>2]=c[b+8>>2];i=14;break a}else{if(j<<16>>16<15360){switch(j<<16>>16){case -2:break;default:break c}if((e|0)==1&(a[d+69>>0]|0)==0)break b;c[h>>2]=f+2;c[l>>2]=c[b+20>>2];i=14;break a}switch(j<<16>>16){case 15360:break;default:break c}i=a[d+69>>0]|0;if(i<<24>>24==4){if((e|0)==1)break b}else if((e|0)==1&i<<24>>24==3)break b;i=c[b+20>>2]|0;c[l>>2]=i;i=ob[c[i+(e<<2)>>2]&127](i,f,g,h)|0;break a}while(0);if(k<<24>>24){if((e|0)==1|i<<24>>24!=0)break;i=c[b+20>>2]|0;c[l>>2]=i;i=ob[c[i+(e<<2)>>2]&127](i,f,g,h)|0;break a}if((e|0)==1?(a[d+69>>0]|0)==5:0)break;i=c[b+16>>2]|0;c[l>>2]=i;i=ob[c[i+(e<<2)>>2]&127](i,f,g,h)|0;break a}while(0);i=c[b+(a[d+69>>0]<<2)>>2]|0;c[l>>2]=i;i=ob[c[i+(e<<2)>>2]&127](i,f,g,h)|0}else i=-4;while(0);return i|0}function MY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;a:do if(e>>>0>>0){i=e;m=f-i|0;k=(m&1|0)==0;m=m&-2;l=(m|0)==0;m=k|l?f:e+m|0;if(k|l^1){f=a[e>>0]|0;if(!(f<<24>>24)){h=a[e+1>>0]|0;j=h;h=d[b+72+(h&255)>>0]|0}else{h=a[e+1>>0]|0;j=h;h=rY(f,h)|0}do switch(h|0){case 12:{f=lZ(12,b,e+2|0,m,g)|0;break a}case 13:{f=lZ(13,b,e+2|0,m,g)|0;break a}case 2:{h=e+2|0;if((m-h|0)<=1){f=-1;break a}f=a[h>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+3>>0]|0)>>0]|0;else f=rY(f,a[e+3>>0]|0)|0;switch(f|0){case 16:{f=mZ(b,e+4|0,m,g)|0;break a}case 15:{f=hZ(b,e+4|0,m,g)|0;break a}case 7:case 6:case 5:case 29:case 24:case 22:{c[g>>2]=e;f=29;break a}default:{c[g>>2]=h;f=0;break a}}}case 9:{if((e+2|0)==(m|0)){c[g>>2]=m;f=-15;break a}else i=7;break}case 10:case 21:{i=7;break}case 30:{f=bZ(b,e+2|0,m,g)|0;break a}case 35:{c[g>>2]=e+2;f=38;break a}case 20:{c[g>>2]=e+2;f=25;break a}case 4:{h=e+2|0;f=m-h|0;if((f|0)<=1){f=-26;break a}if((a[h>>0]|0)==0?(a[e+3>>0]|0)==93:0){if((f|0)<=3){f=-1;break a}if((a[e+4>>0]|0)==0?(a[e+5>>0]|0)==62:0){c[g>>2]=e+6;f=34;break a}}c[g>>2]=h;f=26;break a}case 31:{c[g>>2]=e+2;f=23;break a}case 32:{h=e+2|0;if((m-h|0)<=1){f=-24;break a}f=a[h>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+3>>0]|0)>>0]|0;else f=rY(f,a[e+3>>0]|0)|0;switch(f|0){case 33:{c[g>>2]=e+4;f=36;break a}case 15:{c[g>>2]=e+4;f=35;break a}case 34:{c[g>>2]=e+4;f=37;break a}case 32:case 36:case 35:case 11:case 21:case 10:case 9:{c[g>>2]=h;f=24;break a}default:{c[g>>2]=h;f=0;break a}}}case 36:{c[g>>2]=e+2;f=21;break a}case 11:{c[g>>2]=e+2;f=17;break a}case 19:{f=nZ(b,e+2|0,m,g)|0;break a}case 5:{if((m-i|0)<2){f=-2;break a}c[g>>2]=e;f=0;break a}case 6:{if((m-i|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((m-i|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}case 24:case 22:{f=18;i=61;break}case 23:case 27:case 26:case 25:{f=19;i=61;break}case 29:{i=f&255;h=j&255;f=h>>>5;h=1<<(h&31);if(!(h&c[56836+((f|d[140706+i>>0]<<3)<<2)>>2]))if(!(c[56836+((d[140962+i>>0]<<3|f)<<2)>>2]&h))i=64;else{f=19;i=61}else{f=18;i=61}break}default:i=64}while(0);if((i|0)==7){k=m;b=b+72|0;j=e;b:while(1){i=j;j=j+2|0;if((k-j|0)<=1){i=28;break}f=a[j>>0]|0;h=a[i+3>>0]|0;if(!(f<<24>>24))f=d[b+(h&255)>>0]|0;else f=rY(f,h)|0;switch(f|0){case 10:case 21:continue b;case 9:break;default:{i=27;break b}}if((i+4|0)==(m|0)){i=27;break}}if((i|0)==27){c[g>>2]=j;f=15;break}else if((i|0)==28){c[g>>2]=j;f=15;break}}else if((i|0)==61){l=b+72|0;h=e+2|0;c:while(1){e=f&255;d:while(1){k=m-h|0;if((k|0)<=1){i=104;break c}i=a[h>>0]|0;j=a[h+1>>0]|0;if(!(i<<24>>24))b=d[l+(j&255)>>0]|0;else b=rY(i,j)|0;switch(b|0){case 5:{i=73;break c}case 6:{i=74;break c}case 7:{i=76;break c}case 10:case 9:case 21:case 30:case 20:case 36:case 35:case 32:case 11:{i=78;break c}case 34:{i=94;break c}case 33:{i=97;break c}case 15:{i=100;break c}case 29:{k=j&255;if(!(1<<(k&31)&c[56836+((k>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){i=71;break c}break}case 27:case 26:case 25:case 24:case 22:break;case 23:{k=h+2|0;switch(e&63){case 41:{f=19;h=k;continue c}case 18:break d;default:{h=k;continue d}}}default:{i=103;break c}}h=h+2|0}b=m-k|0;if((b|0)<=1){f=-1;break a}f=a[k>>0]|0;i=a[h+3>>0]|0;if(!(f<<24>>24))j=d[l+(i&255)>>0]|0;else j=rY(f,i)|0;switch(j|0){case 5:{i=89;break c}case 6:{i=90;break c}case 7:{i=92;break c}case 29:{e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140962+(f&255)>>0]<<3)<<2)>>2])){i=87;break c}break}case 27:case 26:case 25:case 24:case 22:break;default:{f=19;h=k;continue c}}f=41;h=h+4|0}switch(i|0){case 71:{c[g>>2]=h;f=0;break a}case 73:{c[g>>2]=h;f=0;break a}case 74:{if((k|0)<3){f=-2;break a}c[g>>2]=h;f=0;break a}case 76:{if((k|0)<4){f=-2;break a}c[g>>2]=h;f=0;break a}case 78:{c[g>>2]=h;break a}case 87:{c[g>>2]=k;f=0;break a}case 89:{c[g>>2]=k;f=0;break a}case 90:{if((b|0)<3){f=-2;break a}c[g>>2]=k;f=0;break a}case 92:{if((b|0)<4){f=-2;break a}c[g>>2]=k;f=0;break a}case 94:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=32;break a}case 97:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=31;break a}case 100:if((f|0)==19){c[g>>2]=h;f=0;break a}else{c[g>>2]=h+2;f=30;break a}case 103:{c[g>>2]=h;f=0;break a}case 104:{f=0-f|0;break a}}}else if((i|0)==64){c[g>>2]=e;f=0;break}}else f=-1}else f=-4;while(0);return f|0}function NY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if(e>>>0>>0){h=e;i=f-h|0;k=(i&1|0)==0;i=i&-2;j=(i|0)==0;i=k|j?f:e+i|0;if(k|j^1){f=a[e>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+1>>0]|0)>>0]|0;else f=rY(f,a[e+1>>0]|0)|0;do switch(f|0){case 2:{f=eZ(b,e+2|0,i,g)|0;break a}case 3:{f=aZ(b,e+2|0,i,g)|0;break a}case 9:{h=e+2|0;if((i-h|0)<=1){f=-3;break a}f=a[h>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+3>>0]|0)>>0]|0;else f=rY(f,a[e+3>>0]|0)|0;c[g>>2]=(f|0)==10?e+4|0:h;f=7;break a}case 10:{c[g>>2]=e+2;f=7;break a}case 4:{h=e+2|0;if((i-h|0)<=1){f=-5;break a}if((a[h>>0]|0)==0?(a[e+3>>0]|0)==93:0){f=e+4|0;if((i-f|0)<=1){f=-5;break a}if((a[f>>0]|0)==0?(a[e+5>>0]|0)==62:0){c[g>>2]=f;f=0;break a}else f=i}else f=i;break}case 5:{f=i;if((f-h|0)<2){f=-2;break a}h=e+2|0;break}case 6:{f=i;if((f-h|0)<3){f=-2;break a}h=e+3|0;break}case 7:{f=i;if((f-h|0)<4){f=-2;break a}h=e+4|0;break}case 8:case 1:case 0:{c[g>>2]=e;f=0;break a}default:{h=e+2|0;f=i}}while(0);j=b+72|0;b=h;b:while(1){e=f-b|0;if((e|0)<=1){h=52;break}h=a[b>>0]|0;i=a[b+1>>0]|0;if(!(h<<24>>24))h=d[j+(i&255)>>0]|0;else h=rY(h,i)|0;switch(h|0){case 10:case 9:case 8:case 1:case 0:case 2:case 3:{h=50;break b}case 5:{b=b+2|0;continue b}case 6:{if((e|0)<3){h=38;break b}b=b+3|0;continue b}case 7:{if((e|0)<4){h=41;break b}b=b+4|0;continue b}case 4:{if((e|0)<=3){h=50;break b}h=b+2|0;if(a[h>>0]|0){b=h;continue b}if((a[b+3>>0]|0)!=93){b=h;continue b}if((e|0)<=5){h=50;break b}i=b+4|0;if(a[i>>0]|0){b=h;continue b}if((a[b+5>>0]|0)==62){h=49;break b}else{b=h;continue b}}default:{b=b+2|0;continue b}}}if((h|0)==38){c[g>>2]=b;f=6;break}else if((h|0)==41){c[g>>2]=b;f=6;break}else if((h|0)==49){c[g>>2]=i;f=0;break}else if((h|0)==50){c[g>>2]=b;f=6;break}else if((h|0)==52){c[g>>2]=b;f=6;break}}else f=-1}else f=-4;while(0);return f|0}function OY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;a:do if(e>>>0>>0){h=e;i=f-h|0;k=(i&1|0)==0;i=i&-2;j=(i|0)==0;i=k|j?f:e+i|0;if(k|j^1){f=a[e>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+1>>0]|0)>>0]|0;else f=rY(f,a[e+1>>0]|0)|0;switch(f|0){case 4:{h=e+2|0;if((i-h|0)<=1){f=-1;break a}if((a[h>>0]|0)==0?(a[e+3>>0]|0)==93:0){f=e+4|0;if((i-f|0)<=1){f=-1;break a}if((a[f>>0]|0)==0?(a[e+5>>0]|0)==62:0){c[g>>2]=e+6;f=40;break a}}break}case 9:{h=e+2|0;if((i-h|0)<=1){f=-1;break a}f=a[h>>0]|0;if(!(f<<24>>24))f=d[b+72+(d[e+3>>0]|0)>>0]|0;else f=rY(f,a[e+3>>0]|0)|0;c[g>>2]=(f|0)==10?e+4|0:h;f=7;break a}case 10:{c[g>>2]=e+2;f=7;break a}case 5:{f=i;if((f-h|0)<2){f=-2;break a}h=e+2|0;i=f;break}case 6:{f=i;if((f-h|0)<3){f=-2;break a}h=e+3|0;i=f;break}case 7:{f=i;if((f-h|0)<4){f=-2;break a}h=e+4|0;i=f;break}case 8:case 1:case 0:{c[g>>2]=e;f=0;break a}default:h=e+2|0}j=b+72|0;b=h;b:while(1){e=i-b|0;if((e|0)<=1){h=40;break}f=a[b>>0]|0;h=a[b+1>>0]|0;if(!(f<<24>>24))f=d[j+(h&255)>>0]|0;else f=rY(f,h)|0;switch(f|0){case 10:case 9:case 8:case 1:case 0:case 4:{h=38;break b}case 6:{if((e|0)<3){h=35;break b}else f=3;break}case 7:{if((e|0)<4){h=37;break b}else f=4;break}default:f=2}b=b+f|0}if((h|0)==35){c[g>>2]=b;f=6;break}else if((h|0)==37){c[g>>2]=b;f=6;break}else if((h|0)==38){c[g>>2]=b;f=6;break}else if((h|0)==40){c[g>>2]=b;f=6;break}}else f=-1}else f=-4;while(0);return f|0}function PY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f-e|0;k=(k&1|0)==0?f:e+(k&-2)|0;j=b+72|0;i=0;f=e;a:while(1){h=k-f|0;if((h|0)<=1){f=-1;break}b=a[f>>0]|0;e=a[f+1>>0]|0;if(!(b<<24>>24))b=d[j+(e&255)>>0]|0;else b=rY(b,e)|0;switch(b|0){case 8:case 1:case 0:{l=12;break a}case 5:{h=i;f=f+2|0;i=h;continue a}case 6:{if((h|0)<3){f=-2;break a}h=i;f=f+3|0;i=h;continue a}case 7:{if((h|0)<4){f=-2;break a}h=i;f=f+4|0;i=h;continue a}case 2:{b=f+2|0;if((k-b|0)<=1){f=-1;break a}if(a[b>>0]|0){h=i;f=b;i=h;continue a}if((a[f+3>>0]|0)!=33){h=i;f=b;i=h;continue a}b=f+4|0;if((k-b|0)<=1){f=-1;break a}if(a[b>>0]|0){h=i;f=b;i=h;continue a}h=(a[f+5>>0]|0)==91;i=i+(h&1)|0;f=h?f+6|0:b;continue a}case 4:{b=f+2|0;if((k-b|0)<=1){f=-1;break a}if(a[b>>0]|0){h=i;f=b;i=h;continue a}if((a[f+3>>0]|0)!=93){h=i;f=b;i=h;continue a}b=f+4|0;if((k-b|0)<=1){f=-1;break a}if(a[b>>0]|0){h=i;f=b;i=h;continue a}if((a[f+5>>0]|0)!=62){h=i;f=b;i=h;continue a}f=f+6|0;if(!i){l=26;break a}i=i+-1|0;continue a}default:{h=i;f=f+2|0;i=h;continue a}}}if((l|0)==12){c[g>>2]=f;f=0}else if((l|0)==26){c[g>>2]=f;f=42}return f|0}function QY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0>>0){k=f;if((k-e|0)>1){l=b+72|0;j=e;a:while(1){if((k-j|0)<=1){i=30;break}h=a[j>>0]|0;i=a[j+1>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=rY(h,i)|0;switch(h|0){case 3:{i=11;break a}case 2:{i=14;break a}case 10:{i=15;break a}case 9:{i=18;break a}case 21:{i=25;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=2}j=j+h|0}if((i|0)==11)if((j|0)==(e|0)){h=aZ(b,e+2|0,f,g)|0;break}else{c[g>>2]=j;h=6;break}else if((i|0)==14){c[g>>2]=j;h=0;break}else if((i|0)==15)if((j|0)==(e|0)){c[g>>2]=e+2;h=7;break}else{c[g>>2]=j;h=6;break}else if((i|0)==18){if((j|0)!=(e|0)){c[g>>2]=j;h=6;break}j=e+2|0;if((k-j|0)<=1){h=-3;break}h=a[j>>0]|0;i=a[e+3>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=rY(h,i)|0;c[g>>2]=(h|0)==10?e+4|0:j;h=7;break}else if((i|0)==25)if((j|0)==(e|0)){c[g>>2]=e+2;h=39;break}else{c[g>>2]=j;h=6;break}else if((i|0)==30){c[g>>2]=j;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function RY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do if(e>>>0>>0){k=f;if((k-e|0)>1){l=b+72|0;j=e;a:while(1){if((k-j|0)<=1){i=29;break}h=a[j>>0]|0;i=a[j+1>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=rY(h,i)|0;switch(h|0){case 3:{i=11;break a}case 30:{i=14;break a}case 10:{i=17;break a}case 9:{i=20;break a}case 5:{h=2;break}case 6:{h=3;break}case 7:{h=4;break}default:h=2}j=j+h|0}if((i|0)==11)if((j|0)==(e|0)){h=aZ(b,e+2|0,f,g)|0;break}else{c[g>>2]=j;h=6;break}else if((i|0)==14)if((j|0)==(e|0)){h=bZ(b,e+2|0,f,g)|0;h=(h|0)==22?0:h;break}else{c[g>>2]=j;h=6;break}else if((i|0)==17)if((j|0)==(e|0)){c[g>>2]=e+2;h=7;break}else{c[g>>2]=j;h=6;break}else if((i|0)==20){if((j|0)!=(e|0)){c[g>>2]=j;h=6;break}j=e+2|0;if((k-j|0)<=1){h=-3;break}h=a[j>>0]|0;i=a[e+3>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=rY(h,i)|0;c[g>>2]=(h|0)==10?e+4|0:j;h=7;break}else if((i|0)==29){c[g>>2]=j;h=6;break}}else h=-1}else h=-4;while(0);return h|0}function SY(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=d;b=c;while(1){c=a[e>>0]|0;if(!(c<<24>>24)){g=7;break}if((f-b|0)<2){b=0;break}if(a[b>>0]|0){b=0;break}if((a[b+1>>0]|0)!=c<<24>>24){b=0;break}e=e+1|0;b=b+2|0}if((g|0)==7)b=(b|0)==(d|0)&1;return b|0}function TY(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;g=b+72|0;f=c;a:while(1){b=a[f>>0]|0;e=a[f+1>>0]|0;if(!(b<<24>>24))b=d[g+(e&255)>>0]|0;else b=rY(b,e)|0;switch(b|0){case 5:{b=2;break}case 6:{b=3;break}case 7:{b=4;break}case 27:case 26:case 25:case 24:case 23:case 22:case 29:{b=2;break}default:break a}f=f+b|0}return f-c|0}function UY(b,c){b=b|0;c=c|0;var e=0,f=0;f=b+72|0;a:while(1){b=a[c>>0]|0;e=a[c+1>>0]|0;if(!(b<<24>>24))b=d[f+(e&255)>>0]|0;else b=rY(b,e)|0;switch(b|0){case 21:case 9:case 10:break;default:break a}c=c+2|0}return c|0}function VY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=b+72|0;m=0;n=0;b=1;a:while(1){l=e+2|0;h=a[l>>0]|0;j=h<<24>>24==0;i=e+3|0;k=a[i>>0]|0;if(j)h=d[o+(k&255)>>0]|0;else h=rY(h,k)|0;do switch(h|0){case 5:{if(b|0){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}if((n|0)>=(f|0)){j=n;k=m;b=1;e=l;n=j;m=k;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;j=n;k=m;b=1;e=l;n=j;m=k;continue a}case 6:{if(b|0){j=b;k=n;l=m;e=i;b=j;n=k;m=l;continue a}if((n|0)>=(f|0)){k=n;l=m;b=1;e=i;n=k;m=l;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;k=n;l=m;b=1;e=i;n=k;m=l;continue a}case 7:{if(!b)if((n|0)<(f|0)){c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;b=1}else b=1;k=n;l=m;e=e+4|0;n=k;m=l;continue a}case 24:case 22:case 29:{if(b|0){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}if((n|0)>=(f|0)){j=n;k=m;b=1;e=l;n=j;m=k;continue a}c[g+(n<<4)>>2]=l;a[g+(n<<4)+12>>0]=1;j=n;k=m;b=1;e=l;n=j;m=k;continue a}case 12:{if((b|0)!=2){if((n|0)>=(f|0)){k=n;m=12;b=2;e=l;n=k;continue a}c[g+(n<<4)+4>>2]=e+4;k=n;m=12;b=2;e=l;n=k;continue a}if((m|0)!=12){j=n;k=m;b=2;e=l;n=j;m=k;continue a}if((n|0)<(f|0))c[g+(n<<4)+8>>2]=l;m=12;n=n+1|0;b=0;e=l;continue a}case 13:{if((b|0)!=2){if((n|0)>=(f|0)){k=n;m=13;b=2;e=l;n=k;continue a}c[g+(n<<4)+4>>2]=e+4;k=n;m=13;b=2;e=l;n=k;continue a}if((m|0)!=13){j=n;k=m;b=2;e=l;n=j;m=k;continue a}if((n|0)<(f|0))c[g+(n<<4)+8>>2]=l;m=13;n=n+1|0;b=0;e=l;continue a}case 3:{if((n|0)>=(f|0)){i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}a[g+(n<<4)+12>>0]=0;i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}case 21:{switch(b|0){case 1:{j=n;k=m;b=0;e=l;n=j;m=k;continue a}case 2:break;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}if((n|0)>=(f|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}i=g+(n<<4)+12|0;if(!(a[i>>0]|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}do if(j&(l|0)!=(c[g+(n<<4)+4>>2]|0)&k<<24>>24==32){h=a[e+4>>0]|0;b=a[e+5>>0]|0;if(!(h<<24>>24)){if(b<<24>>24==32)break;b=d[o+(b&255)>>0]|0}else b=rY(h,b)|0;if((b|0)!=(m|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}}while(0);a[i>>0]=0;j=n;k=m;b=2;e=l;n=j;m=k;continue a}case 10:case 9:{switch(b|0){case 1:{j=n;k=m;b=0;e=l;n=j;m=k;continue a}case 2:break;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}if((n|0)>=(f|0)){j=n;k=m;b=2;e=l;n=j;m=k;continue a}a[g+(n<<4)+12>>0]=0;j=n;k=m;b=2;e=l;n=j;m=k;continue a}case 17:case 11:if((b|0)==2){j=n;k=m;b=2;e=l;n=j;m=k;continue a}else break a;default:{i=b;j=n;k=m;e=l;b=i;n=j;m=k;continue a}}while(0)}return n|0}function WY(b,c){b=b|0;c=c|0;var d=0,e=0;b=c+4|0;a:do if(!(a[b>>0]|0))if((a[c+5>>0]|0)==120){c=c+6|0;b=0;while(1){b:while(1){if(!(a[c>>0]|0)){d=a[c+1>>0]|0;if(d<<24>>24==59){e=18;break a}d=d<<24>>24;switch(d|0){case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:{e=8;break b}case 70:case 69:case 68:case 67:case 66:case 65:{e=9;break b}case 102:case 101:case 100:case 99:case 98:case 97:{e=10;break b}default:{}}}c=c+2|0}if((e|0)==8)b=d+-48|b<<4;else if((e|0)==9)b=(b<<4)+-55+d|0;else if((e|0)==10)b=(b<<4)+-87+d|0;if((b|0)<1114112)c=c+2|0;else{b=-1;e=19;break}}}else{c=b;b=0;e=13}else{d=b;b=0;c=-1;e=16}while(0);while(1)if((e|0)==13){if(a[c>>0]|0){d=c;c=-1;e=16;continue}if((a[c+1>>0]|0)==59){e=18;continue}d=c;c=a[c+1>>0]|0;e=16;continue}else if((e|0)==16){b=(b*10|0)+-48+c|0;if((b|0)>=1114112){b=-1;e=19;continue}c=d+2|0;e=13;continue}else if((e|0)==18){b=iX(b)|0;e=19;continue}else if((e|0)==19)return b|0;return 0}function XY(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;a:do switch((d-c|0)/2|0|0){case 2:{if((a[c+2>>0]|0)==0?(a[c+3>>0]|0)==116:0){if(!(a[c>>0]|0))b=a[c+1>>0]|0;else b=-1;b=(b|0)==108?60:(b|0)==103?62:0}else e=27;break}case 3:{if((((((a[c>>0]|0)==0?(a[c+1>>0]|0)==97:0)?(a[c+2>>0]|0)==0:0)?(a[c+3>>0]|0)==109:0)?(a[c+4>>0]|0)==0:0)?(a[c+5>>0]|0)==112:0)b=38;else e=27;break}case 4:{if(!(a[c>>0]|0))switch(a[c+1>>0]|0){case 113:{if(a[c+2>>0]|0){e=27;break a}if((a[c+3>>0]|0)!=117){e=27;break a}if(a[c+4>>0]|0){e=27;break a}if((a[c+5>>0]|0)!=111){e=27;break a}if(a[c+6>>0]|0){e=27;break a}if((a[c+7>>0]|0)==116){b=34;break a}else{e=27;break a}}case 97:{if(a[c+2>>0]|0){e=27;break a}if((a[c+3>>0]|0)!=112){e=27;break a}if(a[c+4>>0]|0){e=27;break a}if((a[c+5>>0]|0)!=111){e=27;break a}if(a[c+6>>0]|0){e=27;break a}if((a[c+7>>0]|0)==115){b=39;break a}else{e=27;break a}}default:{e=27;break a}}else e=27;break}default:e=27}while(0);if((e|0)==27)b=0;return b|0}function YY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=b+72|0;k=g+4|0;while(1){if((f-e|0)<=1)break;b=a[e>>0]|0;h=a[e+1>>0]|0;if(!(b<<24>>24))b=d[j+(h&255)>>0]|0;else b=rY(b,h)|0;switch(b|0){case 5:{e=e+2|0;break}case 6:{e=e+3|0;break}case 7:{e=e+4|0;break}case 10:{c[k>>2]=-1;c[g>>2]=(c[g>>2]|0)+1;e=e+2|0;break}case 9:{c[g>>2]=(c[g>>2]|0)+1;i=e+2|0;if((f-i|0)>1){b=a[i>>0]|0;h=a[e+3>>0]|0;if(!(b<<24>>24))b=d[j+(h&255)>>0]|0;else b=rY(b,h)|0;e=(b|0)==10?e+4|0:i}else e=i;c[k>>2]=-1;break}default:e=e+2|0}c[k>>2]=(c[k>>2]|0)+1}return}function ZY(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f+-2|0;j=b+72|0;a:while(1){h=e+2|0;if((k-h|0)<=1){f=1;break}f=a[h>>0]|0;i=f<<24>>24==0;b=a[e+3>>0]|0;if(i)f=d[j+(b&255)>>0]|0;else f=rY(f,b)|0;switch(f|0){case 23:case 19:case 30:case 33:case 16:case 18:case 10:case 9:case 15:case 14:case 17:case 35:case 34:case 32:case 31:case 13:case 27:case 24:case 25:{e=h;continue a}case 21:if(i&b<<24>>24==9){l=12;break a}else{e=h;continue a}case 22:case 26:{if(!i){l=12;break a}if(b<<24>>24>=0){e=h;continue a}break}default:if(!i){l=12;break a}}switch(b<<24>>24|0){case 64:case 36:{e=h;break}default:{l=12;break a}}}if((l|0)==12){c[g>>2]=h;f=0}return f|0}function _Y(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=c[e>>2]|0;k=j+(f-j&-2)|0;l=k;m=h;a:while(1){if(j>>>0>=k>>>0){b=0;break}i=a[j+1>>0]|0;b=a[j>>0]|0;f=b&255;switch(b<<24>>24){case 0:{if(i<<24>>24>-1){b=c[g>>2]|0;if((b|0)==(h|0)){b=2;break a}c[g>>2]=b+1;a[b>>0]=i;b=j}else n=7;break}case 7:case 6:case 5:case 4:case 3:case 2:case 1:{n=7;break}case -37:case -38:case -39:case -40:{b=c[g>>2]|0;if((m-b|0)<4){b=2;break a}if((l-j|0)<4){b=1;break a}o=i&255;i=(f<<2&12|o>>>6)+1|0;c[g>>2]=b+1;a[b>>0]=i>>>2|240;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o>>>2&15|i<<4&48|128;b=j+2|0;i=d[j+3>>0]|0;f=(o<<4&48|i>>>6|a[b>>0]<<2&12|128)&255;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=f;j=c[g>>2]|0;c[g>>2]=j+1;a[j>>0]=i&63|128;break}default:{b=c[g>>2]|0;if((m-b|0)<3){b=2;break a}c[g>>2]=b+1;a[b>>0]=f>>>4|224;o=i&255;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o>>>6|f<<2&60|128;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o&63|128;b=j}}if((n|0)==7){n=0;b=c[g>>2]|0;if((m-b|0)<2){b=2;break}o=i&255;c[g>>2]=b+1;a[b>>0]=o>>>6|f<<2|192;b=c[g>>2]|0;c[g>>2]=b+1;a[b>>0]=o&63|128;b=j}j=b+2|0}c[e>>2]=j;return b|0}function $Y(e,f,g,h,i){e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;j=c[f>>2]|0;l=g-j&-2;e=j+l|0;if((l|0)>(i-(c[h>>2]|0)|0)){k=e+-2|0;g=(a[k>>0]&-8)<<24>>24==-40;l=g&1;e=g?k:e}else l=0;g=j;while(1){j=g>>>0>>0;k=c[h>>2]|0;if(!(j&k>>>0>>0))break;j=((d[g>>0]|0)<<8|(d[g+1>>0]|0))&65535;c[h>>2]=k+2;b[k>>1]=j;k=(c[f>>2]|0)+2|0;c[f>>2]=k;g=k}return ((k|0)!=(i|0)|j^1?l:2)|0}function aZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;l=f;j=l-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=rY(k,i)|0}switch(h|0){case 29:{j=i&255;if(!(1<<(j&31)&c[56836+((j>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;b=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;b=0;break a}case 6:{if((j|0)<3){b=-2;break a}c[g>>2]=e;b=0;break a}case 7:{if((j|0)<4){b=-2;break a}c[g>>2]=e;b=0;break a}case 19:{b=cZ(b,e+2|0,f,g)|0;break a}default:{c[g>>2]=e;b=0;break a}}k=b+72|0;j=e;b:while(1){i=j+2|0;e=l-i|0;if((e|0)<=1){b=-1;break a}b=a[i>>0]|0;f=a[j+3>>0]|0;if(!(b<<24>>24))h=d[k+(f&255)>>0]|0;else h=rY(b,f)|0;switch(h|0){case 27:case 26:case 25:case 24:case 22:{j=i;continue b}case 5:{f=23;break b}case 6:{f=24;break b}case 7:{f=26;break b}case 18:{f=28;break b}case 29:break;default:{f=29;break b}}e=f&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(b&255)>>0]|0)<<3)<<2)>>2])){f=22;break}else j=i}if((f|0)==22){c[g>>2]=i;b=0;break}else if((f|0)==23){c[g>>2]=i;b=0;break}else if((f|0)==24){if((e|0)<3){b=-2;break}c[g>>2]=i;b=0;break}else if((f|0)==26){if((e|0)<4){b=-2;break}c[g>>2]=i;b=0;break}else if((f|0)==28){c[g>>2]=j+4;b=9;break}else if((f|0)==29){c[g>>2]=i;b=0;break}}else b=-1;while(0);return b|0}function bZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;j=f-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=rY(k,i)|0}switch(h|0){case 29:{l=i&255;if(!(1<<(l&31)&c[56836+((l>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}case 30:case 9:case 10:case 21:{c[g>>2]=e;f=22;break a}default:{c[g>>2]=e;f=0;break a}}l=b+72|0;b=e;b:while(1){k=b+2|0;e=f-k|0;if((e|0)<=1){f=-1;break a}h=a[k>>0]|0;i=a[b+3>>0]|0;if(!(h<<24>>24))j=d[l+(i&255)>>0]|0;else j=rY(h,i)|0;switch(j|0){case 27:case 26:case 25:case 24:case 22:{b=k;continue b}case 5:{h=23;break b}case 6:{h=24;break b}case 7:{h=26;break b}case 18:{h=28;break b}case 29:break;default:{h=29;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=22;break}else b=k}if((h|0)==22){c[g>>2]=k;f=0;break}else if((h|0)==23){c[g>>2]=k;f=0;break}else if((h|0)==24){if((e|0)<3){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==26){if((e|0)<4){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==28){c[g>>2]=b+4;f=28;break}else if((h|0)==29){c[g>>2]=k;f=0;break}}else f=-1;while(0);return f|0}function cZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=f;a:do if((k-e|0)>1){i=a[e>>0]|0;h=a[e+1>>0]|0;do if(!(i<<24>>24))if(h<<24>>24==120){h=dZ(b,e+2|0,f,g)|0;break a}else{h=d[b+72+(h&255)>>0]|0;break}else h=rY(i,h)|0;while(0);if((h|0)!=25){c[g>>2]=e;h=0;break}j=b+72|0;b=e;b:while(1){i=b+2|0;if((k-i|0)<=1){h=-1;break a}h=a[i>>0]|0;f=a[b+3>>0]|0;if(!(h<<24>>24))h=d[j+(f&255)>>0]|0;else h=rY(h,f)|0;switch(h|0){case 25:{b=i;break}case 18:{f=15;break b}default:{f=16;break b}}}if((f|0)==15){c[g>>2]=b+4;h=10;break}else if((f|0)==16){c[g>>2]=i;h=0;break}}else h=-1;while(0);return h|0}function dZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;a:do if((f-e|0)>1){h=a[e>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e+1>>0]|0)>>0]|0;else h=rY(h,a[e+1>>0]|0)|0;if((h&-2|0)!=24){c[g>>2]=e;f=0;break}j=b+72|0;b:while(1){i=e+2|0;if((f-i|0)<=1){f=-1;break a}h=a[i>>0]|0;b=a[e+3>>0]|0;if(!(h<<24>>24))h=d[j+(b&255)>>0]|0;else h=rY(h,b)|0;switch(h|0){case 24:case 25:{e=i;break}case 18:{h=13;break b}default:{h=14;break b}}}if((h|0)==13){c[g>>2]=e+4;f=10;break}else if((h|0)==14){c[g>>2]=i;f=0;break}}else f=-1;while(0);return f|0}function eZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=f;j=o-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=rY(k,i)|0}switch(h|0){case 29:{m=i&255;if(!(1<<(m&31)&c[56836+((m>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){c[g>>2]=e;h=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;h=0;break a}case 6:{if((j|0)<3){h=-2;break a}c[g>>2]=e;h=0;break a}case 7:{if((j|0)<4){h=-2;break a}c[g>>2]=e;h=0;break a}case 16:{i=e+2|0;if((o-i|0)<=1){h=-1;break a}h=a[i>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e+3>>0]|0)>>0]|0;else h=rY(h,a[e+3>>0]|0)|0;switch(h|0){case 27:{h=fZ(b,e+4|0,f,g)|0;break a}case 20:{h=gZ(e+4|0,f,g)|0;break a}default:{c[g>>2]=i;h=0;break a}}}case 15:{h=hZ(b,e+2|0,f,g)|0;break a}case 17:{h=iZ(b,e+2|0,f,g)|0;break a}default:{c[g>>2]=e;h=0;break a}}m=b+72|0;l=0;h=e+2|0;b:while(1){c:while(1){i=o-h|0;if((i|0)<=1){h=-1;break a}j=a[h>>0]|0;k=a[h+1>>0]|0;if(!(j<<24>>24))e=d[m+(k&255)>>0]|0;else e=rY(j,k)|0;switch(e|0){case 5:{n=34;break b}case 6:{n=35;break b}case 7:{n=37;break b}case 10:case 9:case 21:{n=55;break b}case 11:{n=69;break b}case 17:break b;case 23:break c;case 29:{e=k&255;if(!(1<<(e&31)&c[56836+((e>>>5|d[140962+(j&255)>>0]<<3)<<2)>>2])){n=32;break b}break}case 27:case 26:case 25:case 24:case 22:break;default:{n=75;break b}}h=h+2|0}if(l|0){n=40;break}e=h+2|0;l=o-e|0;if((l|0)<=1){h=-1;break a}i=a[e>>0]|0;j=a[h+3>>0]|0;if(!(i<<24>>24))k=d[m+(j&255)>>0]|0;else k=rY(i,j)|0;switch(k|0){case 5:{n=49;break b}case 6:{n=50;break b}case 7:{n=52;break b}case 29:{l=j&255;if(!(1<<(l&31)&c[56836+((l>>>5|d[140706+(i&255)>>0]<<3)<<2)>>2])){n=47;break b}break}case 24:case 22:break;default:{n=54;break b}}l=1;h=h+4|0}d:switch(n|0){case 32:{c[g>>2]=h;h=0;break a}case 34:{c[g>>2]=h;h=0;break a}case 35:{if((i|0)<3){h=-2;break a}c[g>>2]=h;h=0;break a}case 37:{if((i|0)<4){h=-2;break a}c[g>>2]=h;h=0;break a}case 40:{c[g>>2]=h;h=0;break a}case 47:{c[g>>2]=e;h=0;break a}case 49:{c[g>>2]=e;h=0;break a}case 50:{if((l|0)<3){h=-2;break a}c[g>>2]=e;h=0;break a}case 52:{if((l|0)<4){h=-2;break a}c[g>>2]=e;h=0;break a}case 54:{c[g>>2]=e;h=0;break a}case 55:{e:while(1){n=0;i=h+2|0;j=o-i|0;if((j|0)<=1){h=-1;break a}k=a[i>>0]|0;e=a[h+3>>0]|0;if(!(k<<24>>24))l=d[m+(e&255)>>0]|0;else l=rY(k,e)|0;switch(l|0){case 11:{h=i;n=69;break d}case 17:{h=i;break d}case 10:case 9:case 21:{h=i;n=55;break}case 29:{n=60;break e}case 24:case 22:break e;case 5:{n=63;break e}case 6:{n=64;break e}case 7:{n=66;break e}default:{n=68;break e}}}if((n|0)==60){o=e&255;if(!(1<<(o&31)&c[56836+((o>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){c[g>>2]=i;h=0;break a}}else if((n|0)==63){c[g>>2]=i;h=0;break a}else if((n|0)==64){if((j|0)<3){h=-2;break a}c[g>>2]=i;h=0;break a}else if((n|0)==66){if((j|0)<4){h=-2;break a}c[g>>2]=i;h=0;break a}else if((n|0)==68){c[g>>2]=i;h=0;break a}h=jZ(b,h+4|0,f,g)|0;break a}case 75:{c[g>>2]=h;h=0;break a}}if((n|0)==69){c[g>>2]=h+2;h=2;break}i=h+2|0;if((o-i|0)>1){if((a[i>>0]|0)==0?(a[h+3>>0]|0)==62:0){c[g>>2]=h+4;h=4;break}c[g>>2]=i;h=0}else h=-1}else h=-1;while(0);return h|0}function fZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f;a:do if((j-e|0)>1){if((a[e>>0]|0)==0?(a[e+1>>0]|0)==45:0){i=b+72|0;h=e+2|0;b:while(1){e=j-h|0;if((e|0)<=1){f=-1;break a}f=a[h>>0]|0;b=a[h+1>>0]|0;if(!(f<<24>>24))f=d[i+(b&255)>>0]|0;else f=rY(f,b)|0;switch(f|0){case 8:case 1:case 0:{k=16;break b}case 5:{h=h+2|0;continue b}case 6:{if((e|0)<3){f=-2;break a}h=h+3|0;continue b}case 7:{if((e|0)<4){f=-2;break a}h=h+4|0;continue b}case 27:{f=h+2|0;if((j-f|0)<=1){f=-1;break a}if(a[f>>0]|0){h=f;continue b}if((a[h+3>>0]|0)==45)break b;else{h=f;continue b}}default:{h=h+2|0;continue b}}}if((k|0)==16){c[g>>2]=h;f=0;break}f=h+4|0;if((j-f|0)<=1){f=-1;break}if((a[f>>0]|0)==0?(a[h+5>>0]|0)==62:0){c[g>>2]=h+6;f=13;break}c[g>>2]=f;f=0;break}c[g>>2]=e;f=0}else f=-1;while(0);return f|0}function gZ(b,d,e){b=b|0;d=d|0;e=e|0;if((d-b|0)>11){d=0;while(1){if((d|0)>=6){d=8;break}if(a[b>>0]|0){d=0;break}if((a[b+1>>0]|0)!=(a[141218+d>>0]|0)){d=0;break}d=d+1|0;b=b+2|0}c[e>>2]=b}else d=-1;return d|0}function hZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q;o=f;i=o-e|0;a:do if((i|0)>1){j=a[e>>0]|0;if(!(j<<24>>24)){h=a[e+1>>0]|0;f=d[b+72+(h&255)>>0]|0}else{h=a[e+1>>0]|0;f=rY(j,h)|0}switch(f|0){case 29:{m=h&255;if(!(1<<(m&31)&c[56836+((m>>>5|d[140706+(j&255)>>0]<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((i|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((i|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}m=b+72|0;k=e;b:while(1){f=k+2|0;h=o-f|0;if((h|0)<=1){f=-1;break a}i=a[f>>0]|0;j=a[k+3>>0]|0;if(!(i<<24>>24))b=d[m+(j&255)>>0]|0;else b=rY(i,j)|0;switch(b|0){case 27:case 26:case 25:case 24:case 22:{k=f;continue b}case 5:{n=22;break b}case 6:{n=23;break b}case 7:{n=25;break b}case 10:case 9:case 21:{n=27;break b}case 15:{n=46;break b}case 29:break;default:break b}k=j&255;if(!(1<<(k&31)&c[56836+((k>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){n=21;break}else k=f}if((n|0)==21){c[g>>2]=f;f=0;break}else if((n|0)==22){c[g>>2]=f;f=0;break}else if((n|0)==23){if((h|0)<3){f=-2;break}c[g>>2]=f;f=0;break}else if((n|0)==25){if((h|0)<4){f=-2;break}c[g>>2]=f;f=0;break}else if((n|0)==27){if(!(kZ(e,f,p)|0)){c[g>>2]=f;f=0;break}j=k+4|0;c:while(1){i=o-j|0;if((i|0)<=1){f=-1;break a}f=a[j>>0]|0;h=a[j+1>>0]|0;if(!(f<<24>>24))f=d[m+(h&255)>>0]|0;else f=rY(f,h)|0;switch(f|0){case 8:case 1:case 0:{n=40;break c}case 5:{j=j+2|0;continue c}case 6:{if((i|0)<3){f=-2;break a}j=j+3|0;continue c}case 7:{if((i|0)<4){f=-2;break a}j=j+4|0;continue c}case 15:{f=j+2|0;if((o-f|0)<=1){f=-1;break a}if(a[f>>0]|0){j=f;continue c}if((a[j+3>>0]|0)==62){n=44;break c}else{j=f;continue c}}default:{j=j+2|0;continue c}}}if((n|0)==40){c[g>>2]=j;f=0;break}else if((n|0)==44){c[g>>2]=j+4;f=c[p>>2]|0;break}}else if((n|0)==46){if(!(kZ(e,f,p)|0)){c[g>>2]=f;f=0;break}f=k+4|0;if((o-f|0)<=1){f=-1;break}if((a[f>>0]|0)==0?(a[k+5>>0]|0)==62:0){c[g>>2]=k+6;f=c[p>>2]|0;break}}c[g>>2]=f;f=0}else f=-1;while(0);l=q;return f|0}function iZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;j=f-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=rY(k,i)|0}switch(h|0){case 29:{l=i&255;if(!(1<<(l&31)&c[56836+((l>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}l=b+72|0;b=e;b:while(1){j=b+2|0;e=f-j|0;if((e|0)<=1){f=-1;break a}h=a[j>>0]|0;i=a[b+3>>0]|0;if(!(h<<24>>24))k=d[l+(i&255)>>0]|0;else k=rY(h,i)|0;switch(k|0){case 23:case 27:case 26:case 25:case 24:case 22:{b=j;continue b}case 5:{h=22;break b}case 6:{h=23;break b}case 7:{h=25;break b}case 10:case 9:case 21:{h=27;break b}case 11:{h=34;break b}case 29:break;default:{h=35;break b}}e=i&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(h&255)>>0]|0)<<3)<<2)>>2])){h=21;break}else b=j}if((h|0)==21){c[g>>2]=j;f=0;break}else if((h|0)==22){c[g>>2]=j;f=0;break}else if((h|0)==23){if((e|0)<3){f=-2;break}c[g>>2]=j;f=0;break}else if((h|0)==25){if((e|0)<4){f=-2;break}c[g>>2]=j;f=0;break}else if((h|0)==27){c:while(1){k=j+2|0;if((f-k|0)<=1){f=-1;break a}h=a[k>>0]|0;i=a[j+3>>0]|0;if(!(h<<24>>24))h=d[l+(i&255)>>0]|0;else h=rY(h,i)|0;switch(h|0){case 10:case 9:case 21:{j=k;h=27;break}case 11:{h=32;break c}default:{h=33;break c}}}if((h|0)==32){c[g>>2]=j+4;f=5;break}else if((h|0)==33){c[g>>2]=k;f=0;break}}else if((h|0)==34){c[g>>2]=b+4;f=5;break}else if((h|0)==35){c[g>>2]=j;f=0;break}}else f=-1;while(0);return f|0}function jZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+16|0;q=s;c[q>>2]=e;r=f;o=b+72|0;h=0;a:while(1){b:while(1){m=r-e|0;if((m|0)<=1){e=-1;break a}i=a[e>>0]|0;j=a[e+1>>0]|0;if(!(i<<24>>24))k=d[o+(j&255)>>0]|0;else k=rY(i,j)|0;switch(k|0){case 5:{p=11;break a}case 6:{p=12;break a}case 7:{p=14;break a}case 23:{p=16;break b}case 10:case 9:case 21:{p=31;break b}case 14:{p=37;break b}case 29:{n=j&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140962+(i&255)>>0]<<3)<<2)>>2])){p=9;break a}break}case 27:case 26:case 25:case 24:case 22:break;default:{p=89;break a}}n=e+2|0;c[q>>2]=n;e=n}c:do if((p|0)==16){p=0;if(h|0){p=17;break a}h=e+2|0;c[q>>2]=h;i=h;j=r-i|0;if((j|0)<=1){e=-1;break a}k=a[h>>0]|0;m=a[e+3>>0]|0;if(!(k<<24>>24))n=d[o+(m&255)>>0]|0;else n=rY(k,m)|0;switch(n|0){case 5:{p=25;break a}case 6:{p=26;break a}case 7:{p=28;break a}case 24:case 22:{h=1;break c}case 29:break;default:{p=30;break a}}n=m&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){p=24;break a}else h=1}else if((p|0)==31)while(1){p=0;i=e+2|0;c[q>>2]=i;j=i;if((r-j|0)<=1){e=-1;break a}h=a[i>>0]|0;e=a[e+3>>0]|0;if(!(h<<24>>24))e=d[o+(e&255)>>0]|0;else e=rY(h,e)|0;switch(e|0){case 14:{e=i;p=37;break c}case 9:case 10:case 21:{e=i;p=31;break}default:{p=36;break a}}}while(0);d:do if((p|0)==37){while(1){p=0;j=e+2|0;c[q>>2]=j;k=j;if((r-k|0)<=1){e=-1;break a}h=a[j>>0]|0;i=a[e+3>>0]|0;if(!(h<<24>>24))m=d[o+(i&255)>>0]|0;else m=rY(h,i)|0;if((m|1|0)==13)break;switch(m|0){case 9:case 10:case 21:{e=j;p=37;break}default:{p=43;break a}}}e=e+4|0;c[q>>2]=e;e:while(1){j=r-e|0;if((j|0)<=1){e=-1;break a}h=a[e>>0]|0;i=a[e+1>>0]|0;if(!(h<<24>>24))h=d[o+(i&255)>>0]|0;else h=rY(h,i)|0;if((h|0)==(m|0))break;switch(h|0){case 8:case 1:case 0:{p=56;break a}case 2:{p=61;break a}case 5:{n=e+2|0;c[q>>2]=n;e=n;continue e}case 6:{if((j|0)<3){e=-2;break a}n=e+3|0;c[q>>2]=n;e=n;continue e}case 7:{if((j|0)<4){e=-2;break a}n=e+4|0;c[q>>2]=n;e=n;continue e}case 3:{e=aZ(b,e+2|0,f,q)|0;if((e|0)<1){p=59;break a}e=c[q>>2]|0;continue e}default:{n=e+2|0;c[q>>2]=n;e=n;continue e}}}i=e+2|0;c[q>>2]=i;k=i;if((r-k|0)<=1){e=-1;break a}h=a[i>>0]|0;j=a[e+3>>0]|0;if(!(h<<24>>24))h=d[o+(j&255)>>0]|0;else h=rY(h,j)|0;switch(h|0){case 11:{p=81;break a}case 17:{p=82;break a}case 10:case 9:case 21:{e=i;break}default:{p=68;break a}}f:while(1){i=e+2|0;c[q>>2]=i;h=i;j=r-h|0;if((j|0)<=1){e=-1;break a}k=a[i>>0]|0;m=a[e+3>>0]|0;if(!(k<<24>>24))n=d[o+(m&255)>>0]|0;else n=rY(k,m)|0;switch(n|0){case 5:{p=76;break a}case 6:{p=77;break a}case 7:{p=79;break a}case 11:{p=81;break a}case 17:{p=82;break a}case 24:case 22:{h=0;break d}case 10:case 9:case 21:{e=i;break}case 29:break f;default:{p=87;break a}}}n=m&255;if(!(1<<(n&31)&c[56836+((n>>>5|d[140706+(k&255)>>0]<<3)<<2)>>2])){p=75;break a}else h=0}while(0);e=e+4|0;c[q>>2]=e}switch(p|0){case 9:{c[g>>2]=e;e=0;break}case 11:{c[g>>2]=e;e=0;break}case 12:{if((m|0)<3)e=-2;else{c[g>>2]=e;e=0}break}case 14:{if((m|0)<4)e=-2;else{c[g>>2]=e;e=0}break}case 17:{c[g>>2]=e;e=0;break}case 24:{c[g>>2]=h;e=0;break}case 25:{c[g>>2]=h;e=0;break}case 26:{if((j|0)<3)e=-2;else{c[g>>2]=h;e=0}break}case 28:{if((j|0)<4)e=-2;else{c[g>>2]=h;e=0}break}case 30:{c[g>>2]=i;e=0;break}case 36:{c[g>>2]=j;e=0;break}case 43:{c[g>>2]=k;e=0;break}case 56:{c[g>>2]=e;e=0;break}case 59:{if(!e){c[g>>2]=c[q>>2];e=0}break}case 61:{c[g>>2]=e;e=0;break}case 68:{c[g>>2]=k;e=0;break}case 75:{c[g>>2]=i;e=0;break}case 76:{c[g>>2]=i;e=0;break}case 77:{if((j|0)<3)e=-2;else{c[g>>2]=i;e=0}break}case 79:{if((j|0)<4)e=-2;else{c[g>>2]=i;e=0}break}case 81:{c[g>>2]=e+4;e=1;break}case 82:{h=i+2|0;c[q>>2]=h;e=h;if((r-e|0)>1){if((a[h>>0]|0)==0?(a[i+3>>0]|0)==62:0){c[g>>2]=i+4;e=3;break}c[g>>2]=e;e=0}else e=-1;break}case 87:{c[g>>2]=h;e=0;break}case 89:{c[g>>2]=e;e=0;break}}l=s;return e|0}function kZ(b,d,e){b=b|0;d=d|0;e=e|0;c[e>>2]=11;a:do if((d-b|0)==6?(a[b>>0]|0)==0:0){switch(a[b+1>>0]|0){case 120:{d=0;break}case 88:{d=1;break}default:{d=1;break a}}if(!(a[b+2>>0]|0)){switch(a[b+3>>0]|0){case 109:break;case 77:{d=1;break}default:{d=1;break a}}if(!(a[b+4>>0]|0)){switch(a[b+5>>0]|0){case 108:break;case 76:{d=0;break a}default:{d=1;break a}}if(!d){c[e>>2]=12;d=1}else d=0}else d=1}else d=1}else d=1;while(0);return d|0}function lZ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;k=e+72|0;a:while(1){b:while(1){j=g-f|0;if((j|0)<=1){f=-1;break a}e=a[f>>0]|0;i=a[f+1>>0]|0;if(!(e<<24>>24))i=d[k+(i&255)>>0]|0;else i=rY(e,i)|0;switch(i|0){case 8:case 1:case 0:{l=10;break a}case 6:{l=9;break b}case 7:{l=19;break b}case 5:{f=f+2|0;continue b}case 13:case 12:{e=f+2|0;if((i|0)==(b|0)){l=12;break a}else{f=e;continue b}}default:{f=f+2|0;continue b}}}if((l|0)==9){l=0;if((j|0)<3){f=-2;break}else{f=f+3|0;continue}}else if((l|0)==19){l=0;if((j|0)<4){f=-2;break}else{f=f+4|0;continue}}}c:do if((l|0)==10){c[h>>2]=f;f=0}else if((l|0)==12)if((g-e|0)>1){c[h>>2]=e;g=a[e>>0]|0;f=a[f+3>>0]|0;if(!(g<<24>>24))f=d[k+(f&255)>>0]|0;else f=rY(g,f)|0;switch(f|0){case 20:case 30:case 11:case 10:case 9:case 21:{f=27;break c}default:{}}f=0}else f=-27;while(0);return f|0}function mZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f;a:do if((k-e|0)>1){h=a[e>>0]|0;if(!(h<<24>>24))h=d[b+72+(d[e+1>>0]|0)>>0]|0;else h=rY(h,a[e+1>>0]|0)|0;switch(h|0){case 27:{h=fZ(b,e+2|0,f,g)|0;break a}case 20:{c[g>>2]=e+2;h=33;break a}case 24:case 22:{j=b+72|0;b:while(1){i=e+2|0;f=k-i|0;if((f|0)<=1){h=-1;break a}h=a[i>>0]|0;b=a[e+3>>0]|0;if(!(h<<24>>24))h=d[j+(b&255)>>0]|0;else h=rY(h,b)|0;switch(h|0){case 24:case 22:{e=i;break}case 30:{l=15;break b}case 10:case 9:case 21:break b;default:{l=22;break b}}}if((l|0)==22){c[g>>2]=i;h=0;break a}c:do if((l|0)==15){if((f|0)<=3){h=-1;break a}b=a[e+4>>0]|0;h=a[e+5>>0]|0;if(!(b<<24>>24))h=d[j+(h&255)>>0]|0;else h=rY(b,h)|0;switch(h|0){case 30:case 10:case 9:case 21:break;default:break c}c[g>>2]=i;h=0;break a}while(0);c[g>>2]=i;h=16;break a}default:{c[g>>2]=e;h=0;break a}}}else h=-1;while(0);return h|0}function nZ(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=f-e|0;a:do if((j|0)>1){k=a[e>>0]|0;if(!(k<<24>>24)){i=a[e+1>>0]|0;h=d[b+72+(i&255)>>0]|0}else{i=a[e+1>>0]|0;h=rY(k,i)|0}switch(h|0){case 29:{j=i&255;if(!(1<<(j&31)&c[56836+((j>>>5|(d[140706+(k&255)>>0]|0)<<3)<<2)>>2])){c[g>>2]=e;f=0;break a}break}case 24:case 22:break;case 5:{c[g>>2]=e;f=0;break a}case 6:{if((j|0)<3){f=-2;break a}c[g>>2]=e;f=0;break a}case 7:{if((j|0)<4){f=-2;break a}c[g>>2]=e;f=0;break a}default:{c[g>>2]=e;f=0;break a}}b=b+72|0;k=e;b:while(1){h=k;k=k+2|0;e=f-k|0;if((e|0)<=1){f=-20;break a}j=a[k>>0]|0;h=a[h+3>>0]|0;if(!(j<<24>>24))i=d[b+(h&255)>>0]|0;else i=rY(j,h)|0;switch(i|0){case 27:case 26:case 25:case 24:case 22:continue b;case 5:{h=22;break b}case 6:{h=23;break b}case 7:{h=25;break b}case 36:case 30:case 11:case 32:case 21:case 10:case 9:{h=27;break b}case 29:break;default:{h=28;break b}}e=h&255;if(!(1<<(e&31)&c[56836+((e>>>5|(d[140962+(j&255)>>0]|0)<<3)<<2)>>2])){h=21;break}}if((h|0)==21){c[g>>2]=k;f=0;break}else if((h|0)==22){c[g>>2]=k;f=0;break}else if((h|0)==23){if((e|0)<3){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==25){if((e|0)<4){f=-2;break}c[g>>2]=k;f=0;break}else if((h|0)==27){c[g>>2]=k;f=20;break}else if((h|0)==28){c[g>>2]=k;f=0;break}}else f=-1;while(0);return f|0}function oZ(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;while(1){b=c[d>>2]|0;h=b>>>0>>0;i=c[f>>2]|0;if(!(h&i>>>0>>0))break;c[d>>2]=b+1;h=a[b>>0]|0;i=c[f>>2]|0;c[f>>2]=i+1;a[i>>0]=h}return ((i|0)!=(g|0)|h^1?0:2)|0}function pZ(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a:while(1){f=a[b>>0]|0;g=a[c>>0]|0;f=(f+-97&255)<26?(f&255)+224&255:f;switch((f<<24>>24==((g+-97&255)<26?(g&255)+224&255:g)<<24>>24?(f<<24>>24==0?2:0):1)&3){case 0:{c=c+1|0;b=b+1|0;break}case 1:{e=3;break a}case 2:{d=1;break a}default:{e=5;break a}}}if((e|0)==3)d=0;return d|0}function qZ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return sZ(36,a,b,c,d,e,f,g,h,i,j)|0}function rZ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+144|0;i=h+4|0;f=h+8|0;g=h;c[i>>2]=d;c[g>>2]=f;pb[c[b+56>>2]&127](b,i,e,g,f+127|0)|0;do if((c[i>>2]|0)==(e|0)){a[c[g>>2]>>0]=0;if(pZ(f,141233)|0?(c[b+64>>2]|0)==2:0)break;b=HY(f)|0;if((b|0)!=-1)b=c[58844+(b<<2)>>2]|0;else b=0}else b=0;while(0);l=h;return b|0}function sZ(a,b,d,e,f,g,h,i,j,k,m){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;t=v+8|0;q=v+12|0;o=v+4|0;p=v;c[q>>2]=0;c[o>>2]=0;c[p>>2]=0;u=d+64|0;s=c[u>>2]|0;r=e+(s*5|0)|0;c[t>>2]=r;s=f+(0-(s<<1))|0;r=(tZ(d,r,s,o,p,q,t)|0)!=0;n=c[o>>2]|0;e=n;a:do if(r&(n|0)!=0){r=d+24|0;f=c[p>>2]|0;do if(!(ob[c[r>>2]&127](d,n,f,141258)|0)){if(!b){c[g>>2]=e;e=0;break a}}else{if(h|0)c[h>>2]=c[q>>2];if(!i)e=c[t>>2]|0;else{e=c[t>>2]|0;c[i>>2]=e}if(!(tZ(d,e,s,o,p,q,t)|0)){c[g>>2]=c[t>>2];e=0;break a}f=c[o>>2]|0;if(f|0){e=f;n=f;f=c[p>>2]|0;break}if(!b){e=1;break a}c[g>>2]=c[t>>2];e=0;break a}while(0);if(ob[c[r>>2]&127](d,n,f,141266)|0){f=c[q>>2]|0;e=f;if((((uZ(d,f,s)|0)&-33)+-65|0)>>>0>=26){c[g>>2]=e;e=0;break}if(j|0)c[j>>2]=e;e=c[t>>2]|0;if(k|0)c[k>>2]=nb[a&63](d,f,e+(0-(c[u>>2]|0))|0)|0;if(!(tZ(d,e,s,o,p,q,t)|0)){c[g>>2]=c[t>>2];e=0;break}e=c[o>>2]|0;if(!e){e=1;break}n=e;f=c[p>>2]|0}if((b|0)!=0|(ob[c[r>>2]&127](d,n,f,141275)|0)==0){c[g>>2]=e;e=0;break}f=c[q>>2]|0;e=c[t>>2]|0;n=f;if(!(ob[c[r>>2]&127](d,f,e+(0-(c[u>>2]|0))|0,104631)|0)){if(!(ob[c[r>>2]&127](d,f,e+(0-(c[u>>2]|0))|0,104623)|0)){c[g>>2]=n;e=0;break}if(m)c[m>>2]=0}else if(m)c[m>>2]=1;while(1){if(!(vZ(uZ(d,e,s)|0)|0))break;e=e+(c[u>>2]|0)|0}c[t>>2]=e;if((e|0)==(s|0))e=1;else{c[g>>2]=e;e=0}}else{c[g>>2]=c[t>>2];e=0}while(0);l=v;return e|0}function tZ(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;a:do if((b|0)!=(d|0)){if(!(vZ(uZ(a,b,d)|0)|0)){c[h>>2]=b;b=0;break}j=a+64|0;do b=b+(c[j>>2]|0)|0;while((vZ(uZ(a,b,d)|0)|0)!=0);if((b|0)==(d|0)){c[e>>2]=0;b=1;break}c[e>>2]=b;b:while(1){i=uZ(a,b,d)|0;switch(i|0){case -1:{i=11;break b}case 61:{i=12;break b}default:{}}if(vZ(i)|0){i=14;break}b=b+(c[j>>2]|0)|0}if((i|0)==11){c[h>>2]=b;b=0;break}else if((i|0)==12)c[f>>2]=b;else if((i|0)==14){c[f>>2]=b;do{b=b+(c[j>>2]|0)|0;i=uZ(a,b,d)|0}while((vZ(i)|0)!=0);if((i|0)!=61){c[h>>2]=b;b=0;break}}if((b|0)==(c[e>>2]|0)){c[h>>2]=b;b=0;break}do{b=b+(c[j>>2]|0)|0;i=uZ(a,b,d)|0}while((vZ(i)|0)!=0);switch(i|0){case 34:case 39:break;default:{c[h>>2]=b;b=0;break a}}f=b+(c[j>>2]|0)|0;c[g>>2]=f;b=i<<24>>24;c:while(1){i=uZ(a,f,d)|0;if((i|0)==(b|0)){i=30;break}if((i+-48|0)>>>0>9&((i&-33)+-65|0)>>>0>25)switch(i|0){case 45:case 46:case 95:break;default:{i=28;break c}}f=f+(c[j>>2]|0)|0}if((i|0)==28){c[h>>2]=f;b=0;break}else if((i|0)==30){c[h>>2]=f+(c[j>>2]|0);b=1;break}}else{c[e>>2]=0;b=1}while(0);return b|0}function uZ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+16|0;i=h+4|0;f=h+8|0;g=h;c[i>>2]=d;c[g>>2]=f;pb[c[b+56>>2]&127](b,i,e,g,f+1|0)|0;l=h;return ((c[g>>2]|0)==(f|0)?-1:a[f>>0]|0)|0}function vZ(a){a=a|0;switch(a|0){case 9:case 10:case 13:case 32:{a=1;break}default:a=0}return a|0}function wZ(){return 59988}function xZ(b,d,e){b=b|0;d=d|0;e=e|0;e=HY(e)|0;if((e|0)==-1)e=0;else{a[b+69>>0]=e;c[b>>2]=69;c[b+4>>2]=70;c[b+48>>2]=31;c[b+72>>2]=d;c[d>>2]=b;e=1}return e|0}function yZ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return LY(60352,a,0,b,c,d)|0}function zZ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return LY(60352,a,1,b,c,d)|0}function AZ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return sZ(37,a,b,c,d,e,f,g,h,i,j)|0}function BZ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+144|0;i=h+4|0;f=h+8|0;g=h;c[i>>2]=d;c[g>>2]=f;pb[c[b+56>>2]&127](b,i,e,g,f+127|0)|0;do if((c[i>>2]|0)==(e|0)){a[c[g>>2]>>0]=0;if(pZ(f,141233)|0?(c[b+64>>2]|0)==2:0)break;b=HY(f)|0;if((b|0)!=-1)b=c[60352+(b<<2)>>2]|0;else b=0}else b=0;while(0);l=h;return b|0}function CZ(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;b=hX(b,c,d,e)|0;if(b|0)a[b+72+58>>0]=23;return b|0}function DZ(a){a=a|0;c[a>>2]=15;c[a+16>>2]=1;c[a+12>>2]=0;c[a+20>>2]=0;return}function EZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 15:{c[a>>2]=16;a=0;break}case 12:{c[a>>2]=16;a=1;break}case 11:{c[a>>2]=16;a=55;break}case 13:{c[a>>2]=16;a=56;break}case 14:{a=0;break}case 16:{if(!(ob[c[f+24>>2]&127](f,d+(c[f+64>>2]<<1)|0,e,141286)|0))g=9;else{c[a>>2]=17;a=3}break}case 29:{c[a>>2]=18;a=2;break}default:g=9}if((g|0)==9)a=IZ(a,b)|0;return a|0}function FZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 14:case 15:{a=0;break}case 11:{a=55;break}case 13:{a=56;break}case 16:{if(!(ob[c[f+24>>2]&127](f,d+(c[f+64>>2]<<1)|0,e,141286)|0))g=7;else{c[a>>2]=17;a=3}break}case 29:{c[a>>2]=18;a=2;break}default:g=7}if((g|0)==7)a=IZ(a,b)|0;return a|0}function GZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 41:case 18:{c[a>>2]=19;a=4;break}default:a=IZ(a,b)|0}return a|0}function HZ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return 0}function IZ(a,b){a=a|0;b=b|0;if((b|0)==28&(c[a+16>>2]|0)==0)a=59;else{c[a>>2]=18;a=-1}return a|0}function JZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=3;break}case 25:{c[a>>2]=20;a=7;break}case 17:{c[a>>2]=21;a=8;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141294)|0){c[a>>2]=22;a=3;break a}if(!(ob[c[g>>2]&127](f,d,e,141301)|0))h=8;else{c[a>>2]=23;a=3}break}default:h=8}while(0);if((h|0)==8)a=IZ(a,b)|0;return a|0}function KZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:do switch(b|0){case -4:case 15:{a=0;break}case 16:{g=f+24|0;h=f+64|0;if(ob[c[g>>2]&127](f,d+(c[h>>2]<<1)|0,e,141308)|0){c[a>>2]=24;a=11;break a}if(ob[c[g>>2]&127](f,d+(c[h>>2]<<1)|0,e,141315)|0){c[a>>2]=25;a=33;break a}if(ob[c[g>>2]&127](f,d+(c[h>>2]<<1)|0,e,141323)|0){c[a>>2]=26;a=39;break a}if(!(ob[c[g>>2]&127](f,d+(c[h>>2]<<1)|0,e,141331)|0))i=14;else{c[a>>2]=27;a=17}break}case 11:{a=55;break}case 13:{a=56;break}case 28:{a=60;break}case 26:{c[a>>2]=28;a=3;break}default:i=14}while(0);if((i|0)==14)a=IZ(a,b)|0;return a|0}function LZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;f=b+-11|0;switch(f>>>1|f<<31|0){case 2:{a=0;break}case 0:{a=55;break}case 1:{a=56;break}case 9:{c[a>>2]=18;a=2;break}default:a=IZ(a,b)|0}return a|0}function MZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 27:{c[a>>2]=29;a=5;break}default:a=IZ(a,b)|0}return a|0}function NZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 27:{c[a>>2]=22;a=6;break}default:a=IZ(a,b)|0}return a|0}function OZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 25:{c[a>>2]=20;a=7;break}case 17:{c[a>>2]=21;a=8;break}default:a=IZ(a,b)|0}return a|0}function PZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 22:{c[a>>2]=30;a=11;break}case 18:{c[a>>2]=31;a=9;break}default:a=IZ(a,b)|0}return a|0}function QZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 41:case 18:{c[a>>2]=32;a=34;break}default:a=IZ(a,b)|0}return a|0}function RZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 41:case 18:{c[a>>2]=33;a=40;break}default:a=IZ(a,b)|0}return a|0}function SZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=17;break}case 18:{c[a>>2]=34;a=18;break}default:a=IZ(a,b)|0}return a|0}function TZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=3;break}case 17:{c[a>>2]=21;a=8;break}default:a=IZ(a,b)|0}return a|0}function UZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=17;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141294)|0){c[a>>2]=35;a=17;break a}if(!(ob[c[g>>2]&127](f,d,e,141301)|0))h=6;else{c[a>>2]=36;a=17}break}default:h=6}while(0);if((h|0)==6)a=IZ(a,b)|0;return a|0}function VZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=17;break}case 27:{c[a>>2]=37;c[a+8>>2]=17;a=19;break}default:a=IZ(a,b)|0}return a|0}function WZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=17;break}case 27:{c[a>>2]=38;a=21;break}default:a=IZ(a,b)|0}return a|0}function XZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=17;break}case 27:{c[a>>2]=37;c[a+8>>2]=17;a=19;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=20;break}default:a=IZ(a,b)|0}return a|0}function YZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=c[a+8>>2]|0;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=c[a+8>>2]|0;break}default:a=IZ(a,b)|0}return a|0}function ZZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 33:{c[a>>2]=40;d=0;break}case 34:{d=a+12|0;e=c[d>>2]|0;if(!e)g=7;else{c[d>>2]=e+-1;d=0}break}case 15:{d=0;break}case 26:{g=7;break}case -4:{if(!(c[a+12>>2]|0))d=0;else g=7;break}default:d=KZ(a,b,d,e,f)|0}if((g|0)==7)d=IZ(a,b)|0;return d|0}function _Z(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=0;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141340)|0){c[a>>2]=41;a=0;break a}if(!(ob[c[g>>2]&127](f,d,e,141348)|0))h=6;else{c[a>>2]=42;a=0}break}default:h=6}while(0);if((h|0)==6)a=IZ(a,b)|0;return a|0}function $Z(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=0;break}case 25:{c[a>>2]=39;a=a+12|0;c[a>>2]=(c[a>>2]|0)+1;a=0;break}default:a=IZ(a,b)|0}return a|0}function a_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=0;break}case 25:{c[a>>2]=39;a=58;break}default:a=IZ(a,b)|0}return a|0}function b_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=39;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141355)|0){c[a>>2]=37;c[a+8>>2]=39;a=42;break a}if(!(ob[c[g>>2]&127](f,d,e,141361)|0))h=7;else{c[a>>2]=37;c[a+8>>2]=39;a=41}break}case 23:{c[a>>2]=43;c[a+4>>2]=1;a=44;break}default:h=7}while(0);if((h|0)==7)a=IZ(a,b)|0;return a|0}function c_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 15:{a=39;break}case 20:{if(!(ob[c[f+24>>2]&127](f,d+(c[f+64>>2]|0)|0,e,141365)|0))g=9;else{c[a>>2]=44;a=43}break}case 23:{c[a+4>>2]=2;c[a>>2]=45;a=44;break}case 41:case 18:{c[a>>2]=46;a=51;break}case 30:{c[a>>2]=46;a=53;break}case 31:{c[a>>2]=46;a=52;break}case 32:{c[a>>2]=46;a=54;break}default:g=9}if((g|0)==9)a=IZ(a,b)|0;return a|0}function d_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 24:{c[a>>2]=37;c[a+8>>2]=39;a=45;break}case 36:{c[a>>2]=37;c[a+8>>2]=39;a=46;break}case 21:{c[a>>2]=47;a=39;break}default:a=IZ(a,b)|0}return a|0}function e_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 23:{a=a+4|0;c[a>>2]=(c[a>>2]|0)+1;a=44;break}case 41:case 18:{c[a>>2]=46;a=51;break}case 30:{c[a>>2]=46;a=53;break}case 31:{c[a>>2]=46;a=52;break}case 32:{c[a>>2]=46;a=54;break}default:a=IZ(a,b)|0}return a|0}function f_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 24:{e=a+4|0;f=(c[e>>2]|0)+-1|0;c[e>>2]=f;if(!f){c[a>>2]=37;c[a+8>>2]=39;a=45}else a=45;break}case 36:{e=a+4|0;f=(c[e>>2]|0)+-1|0;c[e>>2]=f;if(!f){c[a>>2]=37;c[a+8>>2]=39;a=46}else a=46;break}case 35:{e=a+4|0;f=(c[e>>2]|0)+-1|0;c[e>>2]=f;if(!f){c[a>>2]=37;c[a+8>>2]=39;a=47}else a=47;break}case 37:{e=a+4|0;f=(c[e>>2]|0)+-1|0;c[e>>2]=f;if(!f){c[a>>2]=37;c[a+8>>2]=39;a=48}else a=48;break}case 38:{c[a>>2]=45;a=50;break}case 21:{c[a>>2]=45;a=49;break}default:a=IZ(a,b)|0}return a|0}function g_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 41:case 18:{c[a>>2]=48;a=51;break}default:a=IZ(a,b)|0}return a|0}function h_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=39;break}case 36:{c[a>>2]=37;c[a+8>>2]=39;a=46;break}case 21:{c[a>>2]=47;a=39;break}default:a=IZ(a,b)|0}return a|0}function i_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=33;break}case 41:case 18:{c[a>>2]=49;a=22;break}default:a=IZ(a,b)|0}return a|0}function j_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;a:do switch(b|0){case 15:{g=33;break}case 18:{h=f+24|0;g=0;while(1){i=c[h>>2]|0;if((g|0)>=8)break;if(ob[i&127](f,d,e,c[62200+(g<<2)>>2]|0)|0){j=6;break}g=g+1|0}if((j|0)==6){c[a>>2]=50;g=g+23|0;break a}if(!(ob[i&127](f,d,e,141331)|0))j=10;else{c[a>>2]=51;g=33}break}case 23:{c[a>>2]=52;g=33;break}default:j=10}while(0);if((j|0)==10)g=IZ(a,b)|0;return g|0}function k_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a:do switch(b|0){case 15:{a=33;break}case 20:{g=f+24|0;h=f+64|0;if(ob[c[g>>2]&127](f,d+(c[h>>2]|0)|0,e,141372)|0){c[a>>2]=32;a=35;break a}if(ob[c[g>>2]&127](f,d+(c[h>>2]|0)|0,e,141380)|0){c[a>>2]=32;a=36;break a}if(!(ob[c[g>>2]&127](f,d+(c[h>>2]|0)|0,e,141389)|0))i=9;else{c[a>>2]=53;a=33}break}case 27:{c[a>>2]=32;a=37;break}default:i=9}while(0);if((i|0)==9)a=IZ(a,b)|0;return a|0}function l_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 23:{c[a>>2]=54;a=33;break}default:a=IZ(a,b)|0}return a|0}function m_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 41:case 18:case 19:{c[a>>2]=55;a=31;break}default:a=IZ(a,b)|0}return a|0}function n_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 24:{c[a>>2]=50;a=33;break}case 21:{c[a>>2]=52;a=33;break}default:a=IZ(a,b)|0}return a|0}function o_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 18:{c[a>>2]=56;a=32;break}default:a=IZ(a,b)|0}return a|0}function p_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 24:{c[a>>2]=50;a=33;break}case 21:{c[a>>2]=54;a=33;break}default:a=IZ(a,b)|0}return a|0}function q_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=33;break}case 27:{c[a>>2]=32;a=38;break}default:a=IZ(a,b)|0}return a|0}function r_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 18:{c[a>>2]=57;a=10;break}default:a=IZ(a,b)|0}return a|0}function s_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=11;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141294)|0){c[a>>2]=58;a=11;break a}if(!(ob[c[g>>2]&127](f,d,e,141301)|0))h=7;else{c[a>>2]=59;a=11}break}case 27:{c[a>>2]=37;c[a+8>>2]=11;a=12;break}default:h=7}while(0);if((h|0)==7)a=IZ(a,b)|0;return a|0}function t_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 27:{c[a>>2]=60;a=13;break}default:a=IZ(a,b)|0}return a|0}function u_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 27:{c[a>>2]=58;a=14;break}default:a=IZ(a,b)|0}return a|0}function v_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(b|0){case 15:{a=11;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=15;break}case 18:{if(!(ob[c[f+24>>2]&127](f,d,e,141443)|0))g=5;else{c[a>>2]=61;a=11}break}default:g=5}if((g|0)==5)a=IZ(a,b)|0;return a|0}function w_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 18:{c[a>>2]=37;c[a+8>>2]=11;a=16;break}default:a=IZ(a,b)|0}return a|0}function x_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;a:do switch(b|0){case 15:{a=11;break}case 18:{g=f+24|0;if(ob[c[g>>2]&127](f,d,e,141294)|0){c[a>>2]=62;a=11;break a}if(!(ob[c[g>>2]&127](f,d,e,141301)|0))h=7;else{c[a>>2]=63;a=11}break}case 27:{c[a>>2]=37;c[a+8>>2]=11;a=12;break}default:h=7}while(0);if((h|0)==7)a=IZ(a,b)|0;return a|0}function y_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 27:{c[a>>2]=64;a=13;break}default:a=IZ(a,b)|0}return a|0}function z_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 27:{c[a>>2]=62;a=14;break}default:a=IZ(a,b)|0}return a|0}function A_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;switch(b|0){case 15:{a=11;break}case 17:{c[a>>2]=c[a+16>>2]|0?20:39;a=15;break}default:a=IZ(a,b)|0}return a|0}function B_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+16|0;p=x;do if(a>>>0<245){m=a>>>0<11?16:a+11&-8;a=m>>>3;o=c[46749]|0;d=o>>>a;if(d&3|0){b=(d&1^1)+a|0;a=187036+(b<<1<<2)|0;d=a+8|0;e=c[d>>2]|0;f=e+8|0;g=c[f>>2]|0;if((g|0)==(a|0))c[46749]=o&~(1<>2]=a;c[d>>2]=g}w=b<<3;c[e+4>>2]=w|3;w=e+w+4|0;c[w>>2]=c[w>>2]|1;w=f;l=x;return w|0}n=c[46751]|0;if(m>>>0>n>>>0){if(d|0){b=2<>>12&16;b=b>>>i;d=b>>>5&8;b=b>>>d;g=b>>>2&4;b=b>>>g;a=b>>>1&2;b=b>>>a;e=b>>>1&1;e=(d|i|g|a|e)+(b>>>e)|0;b=187036+(e<<1<<2)|0;a=b+8|0;g=c[a>>2]|0;i=g+8|0;d=c[i>>2]|0;if((d|0)==(b|0)){a=o&~(1<>2]=b;c[a>>2]=d;a=o}w=e<<3;h=w-m|0;c[g+4>>2]=m|3;f=g+m|0;c[f+4>>2]=h|1;c[g+w>>2]=h;if(n|0){e=c[46754]|0;b=n>>>3;d=187036+(b<<1<<2)|0;b=1<>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[46751]=h;c[46754]=f;w=i;l=x;return w|0}j=c[46750]|0;if(j){d=(j&0-j)+-1|0;i=d>>>12&16;d=d>>>i;h=d>>>5&8;d=d>>>h;k=d>>>2&4;d=d>>>k;e=d>>>1&2;d=d>>>e;a=d>>>1&1;a=c[187300+((h|i|k|e|a)+(d>>>a)<<2)>>2]|0;d=(c[a+4>>2]&-8)-m|0;e=c[a+16+(((c[a+16>>2]|0)==0&1)<<2)>>2]|0;if(!e){k=a;h=d}else{do{i=(c[e+4>>2]&-8)-m|0;k=i>>>0>>0;d=k?i:d;a=k?e:a;e=c[e+16+(((c[e+16>>2]|0)==0&1)<<2)>>2]|0}while((e|0)!=0);k=a;h=d}i=k+m|0;if(i>>>0>k>>>0){f=c[k+24>>2]|0;b=c[k+12>>2]|0;do if((b|0)==(k|0)){a=k+20|0;b=c[a>>2]|0;if(!b){a=k+16|0;b=c[a>>2]|0;if(!b){d=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0;d=b}else{d=c[k+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);do if(f|0){b=c[k+28>>2]|0;a=187300+(b<<2)|0;if((k|0)==(c[a>>2]|0)){c[a>>2]=d;if(!d){c[46750]=j&~(1<>2]|0)!=(k|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=f;b=c[k+16>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}b=c[k+20>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}while(0);if(h>>>0<16){w=h+m|0;c[k+4>>2]=w|3;w=k+w+4|0;c[w>>2]=c[w>>2]|1}else{c[k+4>>2]=m|3;c[i+4>>2]=h|1;c[i+h>>2]=h;if(n|0){e=c[46754]|0;b=n>>>3;d=187036+(b<<1<<2)|0;b=1<>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[46751]=h;c[46754]=i}w=k+8|0;l=x;return w|0}else n=m}else n=m}else n=m}else if(a>>>0<=4294967231){a=a+11|0;m=a&-8;k=c[46750]|0;if(k){e=0-m|0;a=a>>>8;if(a)if(m>>>0>16777215)j=31;else{o=(a+1048320|0)>>>16&8;v=a<>>16&4;v=v<>>16&2;j=14-(n|o|j)+(v<>>15)|0;j=m>>>(j+7|0)&1|j<<1}else j=0;d=c[187300+(j<<2)>>2]|0;a:do if(!d){d=0;a=0;v=57}else{a=0;i=d;h=m<<((j|0)==31?0:25-(j>>>1)|0);d=0;while(1){f=(c[i+4>>2]&-8)-m|0;if(f>>>0>>0)if(!f){e=0;d=i;a=i;v=61;break a}else{a=i;e=f}f=c[i+20>>2]|0;i=c[i+16+(h>>>31<<2)>>2]|0;d=(f|0)==0|(f|0)==(i|0)?d:f;f=(i|0)==0;if(f){v=57;break}else h=h<<((f^1)&1)}}while(0);if((v|0)==57){if((d|0)==0&(a|0)==0){a=2<>>12&16;o=o>>>i;h=o>>>5&8;o=o>>>h;j=o>>>2&4;o=o>>>j;n=o>>>1&2;o=o>>>n;d=o>>>1&1;a=0;d=c[187300+((h|i|j|n|d)+(o>>>d)<<2)>>2]|0}if(!d){i=a;h=e}else v=61}if((v|0)==61)while(1){v=0;n=(c[d+4>>2]&-8)-m|0;o=n>>>0>>0;e=o?n:e;a=o?d:a;d=c[d+16+(((c[d+16>>2]|0)==0&1)<<2)>>2]|0;if(!d){i=a;h=e;break}else v=61}if((i|0)!=0?h>>>0<((c[46751]|0)-m|0)>>>0:0){g=i+m|0;if(g>>>0<=i>>>0){w=0;l=x;return w|0}f=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){b=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0}else{w=c[i+8>>2]|0;c[w+12>>2]=b;c[b+8>>2]=w}while(0);do if(f){a=c[i+28>>2]|0;d=187300+(a<<2)|0;if((i|0)==(c[d>>2]|0)){c[d>>2]=b;if(!b){e=k&~(1<>2]|0)!=(i|0)&1)<<2)>>2]=b;if(!b){e=k;break}}c[b+24>>2]=f;a=c[i+16>>2]|0;if(a|0){c[b+16>>2]=a;c[a+24>>2]=b}a=c[i+20>>2]|0;if(a){c[b+20>>2]=a;c[a+24>>2]=b;e=k}else e=k}else e=k;while(0);do if(h>>>0>=16){c[i+4>>2]=m|3;c[g+4>>2]=h|1;c[g+h>>2]=h;b=h>>>3;if(h>>>0<256){d=187036+(b<<1<<2)|0;a=c[46749]|0;b=1<>2]|0}c[a>>2]=g;c[b+12>>2]=g;c[g+8>>2]=b;c[g+12>>2]=d;break}b=h>>>8;if(b)if(h>>>0>16777215)b=31;else{v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;b=14-(u|v|b)+(w<>>15)|0;b=h>>>(b+7|0)&1|b<<1}else b=0;d=187300+(b<<2)|0;c[g+28>>2]=b;a=g+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<>2]=g;c[g+24>>2]=d;c[g+12>>2]=g;c[g+8>>2]=g;break}a=h<<((b|0)==31?0:25-(b>>>1)|0);d=c[d>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(h|0)){v=97;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=96;break}else{a=a<<1;d=b}}if((v|0)==96){c[e>>2]=g;c[g+24>>2]=d;c[g+12>>2]=g;c[g+8>>2]=g;break}else if((v|0)==97){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=g;c[v>>2]=g;c[g+8>>2]=w;c[g+12>>2]=d;c[g+24>>2]=0;break}}else{w=h+m|0;c[i+4>>2]=w|3;w=i+w+4|0;c[w>>2]=c[w>>2]|1}while(0);w=i+8|0;l=x;return w|0}else n=m}else n=m}else n=-1;while(0);d=c[46751]|0;if(d>>>0>=n>>>0){b=d-n|0;a=c[46754]|0;if(b>>>0>15){w=a+n|0;c[46754]=w;c[46751]=b;c[w+4>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=n|3}else{c[46751]=0;c[46754]=0;c[a+4>>2]=d|3;w=a+d+4|0;c[w>>2]=c[w>>2]|1}w=a+8|0;l=x;return w|0}i=c[46752]|0;if(i>>>0>n>>>0){u=i-n|0;c[46752]=u;w=c[46755]|0;v=w+n|0;c[46755]=v;c[v+4>>2]=u|1;c[w+4>>2]=n|3;w=w+8|0;l=x;return w|0}if(!(c[46867]|0)){c[46869]=4096;c[46868]=4096;c[46870]=-1;c[46871]=-1;c[46872]=0;c[46860]=0;c[46867]=p&-16^1431655768;a=4096}else a=c[46869]|0;j=n+48|0;k=n+47|0;h=a+k|0;f=0-a|0;m=h&f;if(m>>>0<=n>>>0){w=0;l=x;return w|0}a=c[46859]|0;if(a|0?(o=c[46857]|0,p=o+m|0,p>>>0<=o>>>0|p>>>0>a>>>0):0){w=0;l=x;return w|0}b:do if(!(c[46860]&4)){d=c[46755]|0;c:do if(d){e=187444;while(1){a=c[e>>2]|0;if(a>>>0<=d>>>0?(s=e+4|0,(a+(c[s>>2]|0)|0)>>>0>d>>>0):0)break;a=c[e+8>>2]|0;if(!a){v=118;break c}else e=a}b=h-i&f;if(b>>>0<2147483647){a=H3(b|0)|0;if((a|0)==((c[e>>2]|0)+(c[s>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;v=135;break b}}else{e=a;v=126}}else b=0}else v=118;while(0);do if((v|0)==118){d=H3(0)|0;if((d|0)!=(-1|0)?(b=d,q=c[46868]|0,r=q+-1|0,b=((r&b|0)==0?0:(r+b&0-q)-b|0)+m|0,q=c[46857]|0,r=b+q|0,b>>>0>n>>>0&b>>>0<2147483647):0){s=c[46859]|0;if(s|0?r>>>0<=q>>>0|r>>>0>s>>>0:0){b=0;break}a=H3(b|0)|0;if((a|0)==(d|0)){h=b;g=d;v=135;break b}else{e=a;v=126}}else b=0}while(0);do if((v|0)==126){d=0-b|0;if(!(j>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=b;g=e;v=135;break b}a=c[46869]|0;a=k-b+a&0-a;if(a>>>0>=2147483647){h=b;g=e;v=135;break b}if((H3(a|0)|0)==(-1|0)){H3(d|0)|0;b=0;break}else{h=a+b|0;g=e;v=135;break b}}while(0);c[46860]=c[46860]|4;v=133}else{b=0;v=133}while(0);if(((v|0)==133?m>>>0<2147483647:0)?(g=H3(m|0)|0,s=H3(0)|0,t=s-g|0,u=t>>>0>(n+40|0)>>>0,!((g|0)==(-1|0)|u^1|g>>>0>>0&((g|0)!=(-1|0)&(s|0)!=(-1|0))^1)):0){h=u?t:b;v=135}if((v|0)==135){b=(c[46857]|0)+h|0;c[46857]=b;if(b>>>0>(c[46858]|0)>>>0)c[46858]=b;j=c[46755]|0;do if(j){b=187444;while(1){a=c[b>>2]|0;d=b+4|0;e=c[d>>2]|0;if((g|0)==(a+e|0)){v=143;break}f=c[b+8>>2]|0;if(!f)break;else b=f}if(((v|0)==143?(c[b+12>>2]&8|0)==0:0)?g>>>0>j>>>0&a>>>0<=j>>>0:0){c[d>>2]=e+h;w=(c[46752]|0)+h|0;u=j+8|0;u=(u&7|0)==0?0:0-u&7;v=j+u|0;u=w-u|0;c[46755]=v;c[46752]=u;c[v+4>>2]=u|1;c[j+w+4>>2]=40;c[46756]=c[46871];break}if(g>>>0<(c[46753]|0)>>>0)c[46753]=g;a=g+h|0;b=187444;while(1){if((c[b>>2]|0)==(a|0)){v=151;break}b=c[b+8>>2]|0;if(!b){a=187444;break}}if((v|0)==151)if(!(c[b+12>>2]&8)){c[b>>2]=g;m=b+4|0;c[m>>2]=(c[m>>2]|0)+h;m=g+8|0;m=g+((m&7|0)==0?0:0-m&7)|0;b=a+8|0;b=a+((b&7|0)==0?0:0-b&7)|0;k=m+n|0;i=b-m-n|0;c[m+4>>2]=n|3;do if((j|0)!=(b|0)){if((c[46754]|0)==(b|0)){w=(c[46751]|0)+i|0;c[46751]=w;c[46754]=k;c[k+4>>2]=w|1;c[k+w>>2]=w;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;d:do if(a>>>0<256){a=c[b+8>>2]|0;d=c[b+12>>2]|0;if((d|0)==(a|0)){c[46749]=c[46749]&~(1<>2]=d;c[d+8>>2]=a;break}}else{g=c[b+24>>2]|0;a=c[b+12>>2]|0;do if((a|0)==(b|0)){e=b+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){a=0;break}else d=e}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;d=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;d=e}}c[d>>2]=0}else{w=c[b+8>>2]|0;c[w+12>>2]=a;c[a+8>>2]=w}while(0);if(!g)break;d=c[b+28>>2]|0;e=187300+(d<<2)|0;do if((c[e>>2]|0)!=(b|0)){c[g+16+(((c[g+16>>2]|0)!=(b|0)&1)<<2)>>2]=a;if(!a)break d}else{c[e>>2]=a;if(a|0)break;c[46750]=c[46750]&~(1<>2]=g;d=b+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(!d)break;c[a+20>>2]=d;c[d+24>>2]=a}while(0);b=b+h|0;f=h+i|0}else f=i;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[k+4>>2]=f|1;c[k+f>>2]=f;b=f>>>3;if(f>>>0<256){d=187036+(b<<1<<2)|0;a=c[46749]|0;b=1<>2]|0}c[a>>2]=k;c[b+12>>2]=k;c[k+8>>2]=b;c[k+12>>2]=d;break}b=f>>>8;do if(!b)b=0;else{if(f>>>0>16777215){b=31;break}v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;b=14-(u|v|b)+(w<>>15)|0;b=f>>>(b+7|0)&1|b<<1}while(0);e=187300+(b<<2)|0;c[k+28>>2]=b;a=k+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[46750]|0;d=1<>2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}a=f<<((b|0)==31?0:25-(b>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){v=192;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=191;break}else{a=a<<1;d=b}}if((v|0)==191){c[e>>2]=k;c[k+24>>2]=d;c[k+12>>2]=k;c[k+8>>2]=k;break}else if((v|0)==192){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=k;c[v>>2]=k;c[k+8>>2]=w;c[k+12>>2]=d;c[k+24>>2]=0;break}}else{w=(c[46752]|0)+i|0;c[46752]=w;c[46755]=k;c[k+4>>2]=w|1}while(0);w=m+8|0;l=x;return w|0}else a=187444;while(1){b=c[a>>2]|0;if(b>>>0<=j>>>0?(w=b+(c[a+4>>2]|0)|0,w>>>0>j>>>0):0)break;a=c[a+8>>2]|0}f=w+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;d=h+-40|0;u=g+8|0;u=(u&7|0)==0?0:0-u&7;v=g+u|0;u=d-u|0;c[46755]=v;c[46752]=u;c[v+4>>2]=u|1;c[g+d+4>>2]=40;c[46756]=c[46871];d=a+4|0;c[d>>2]=27;c[b>>2]=c[46861];c[b+4>>2]=c[46862];c[b+8>>2]=c[46863];c[b+12>>2]=c[46864];c[46861]=g;c[46862]=h;c[46864]=0;c[46863]=b;b=a+24|0;do{v=b;b=b+4|0;c[b>>2]=7}while((v+8|0)>>>0>>0);if((a|0)!=(j|0)){g=a-j|0;c[d>>2]=c[d>>2]&-2;c[j+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=187036+(b<<1<<2)|0;a=c[46749]|0;b=1<>2]|0}c[a>>2]=j;c[b+12>>2]=j;c[j+8>>2]=b;c[j+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)d=31;else{v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;d=14-(u|v|d)+(w<>>15)|0;d=g>>>(d+7|0)&1|d<<1}else d=0;e=187300+(d<<2)|0;c[j+28>>2]=d;c[j+20>>2]=0;c[f>>2]=0;b=c[46750]|0;a=1<>2]=j;c[j+24>>2]=e;c[j+12>>2]=j;c[j+8>>2]=j;break}a=g<<((d|0)==31?0:25-(d>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(g|0)){v=213;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=212;break}else{a=a<<1;d=b}}if((v|0)==212){c[e>>2]=j;c[j+24>>2]=d;c[j+12>>2]=j;c[j+8>>2]=j;break}else if((v|0)==213){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=j;c[v>>2]=j;c[j+8>>2]=w;c[j+12>>2]=d;c[j+24>>2]=0;break}}}else{w=c[46753]|0;if((w|0)==0|g>>>0>>0)c[46753]=g;c[46861]=g;c[46862]=h;c[46864]=0;c[46758]=c[46867];c[46757]=-1;c[46762]=187036;c[46761]=187036;c[46764]=187044;c[46763]=187044;c[46766]=187052;c[46765]=187052;c[46768]=187060;c[46767]=187060;c[46770]=187068;c[46769]=187068;c[46772]=187076;c[46771]=187076;c[46774]=187084;c[46773]=187084;c[46776]=187092;c[46775]=187092;c[46778]=187100;c[46777]=187100;c[46780]=187108;c[46779]=187108;c[46782]=187116;c[46781]=187116;c[46784]=187124;c[46783]=187124;c[46786]=187132;c[46785]=187132;c[46788]=187140;c[46787]=187140;c[46790]=187148;c[46789]=187148;c[46792]=187156;c[46791]=187156;c[46794]=187164;c[46793]=187164;c[46796]=187172;c[46795]=187172;c[46798]=187180;c[46797]=187180;c[46800]=187188;c[46799]=187188;c[46802]=187196;c[46801]=187196;c[46804]=187204;c[46803]=187204;c[46806]=187212;c[46805]=187212;c[46808]=187220;c[46807]=187220;c[46810]=187228;c[46809]=187228;c[46812]=187236;c[46811]=187236;c[46814]=187244;c[46813]=187244;c[46816]=187252;c[46815]=187252;c[46818]=187260;c[46817]=187260;c[46820]=187268;c[46819]=187268;c[46822]=187276;c[46821]=187276;c[46824]=187284;c[46823]=187284;w=h+-40|0;u=g+8|0;u=(u&7|0)==0?0:0-u&7;v=g+u|0;u=w-u|0;c[46755]=v;c[46752]=u;c[v+4>>2]=u|1;c[g+w+4>>2]=40;c[46756]=c[46871]}while(0);b=c[46752]|0;if(b>>>0>n>>>0){u=b-n|0;c[46752]=u;w=c[46755]|0;v=w+n|0;c[46755]=v;c[v+4>>2]=u|1;c[w+4>>2]=n|3;w=w+8|0;l=x;return w|0}}c[(N_()|0)>>2]=12;w=0;l=x;return w|0}function C_(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)return;d=a+-8|0;f=c[46753]|0;a=c[a+-4>>2]|0;b=a&-8;j=d+b|0;do if(!(a&1)){e=c[d>>2]|0;if(!(a&3))return;h=d+(0-e)|0;g=e+b|0;if(h>>>0>>0)return;if((c[46754]|0)==(h|0)){a=j+4|0;b=c[a>>2]|0;if((b&3|0)!=3){i=h;b=g;break}c[46751]=g;c[a>>2]=b&-2;c[h+4>>2]=g|1;c[h+g>>2]=g;return}d=e>>>3;if(e>>>0<256){a=c[h+8>>2]|0;b=c[h+12>>2]|0;if((b|0)==(a|0)){c[46749]=c[46749]&~(1<>2]=b;c[b+8>>2]=a;i=h;b=g;break}}f=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){d=h+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}c[b>>2]=0}else{i=c[h+8>>2]|0;c[i+12>>2]=a;c[a+8>>2]=i}while(0);if(f){b=c[h+28>>2]|0;d=187300+(b<<2)|0;if((c[d>>2]|0)==(h|0)){c[d>>2]=a;if(!a){c[46750]=c[46750]&~(1<>2]|0)!=(h|0)&1)<<2)>>2]=a;if(!a){i=h;b=g;break}}c[a+24>>2]=f;b=h+16|0;d=c[b>>2]|0;if(d|0){c[a+16>>2]=d;c[d+24>>2]=a}b=c[b+4>>2]|0;if(b){c[a+20>>2]=b;c[b+24>>2]=a;i=h;b=g}else{i=h;b=g}}else{i=h;b=g}}else{i=d;h=d}while(0);if(h>>>0>=j>>>0)return;a=j+4|0;e=c[a>>2]|0;if(!(e&1))return;if(!(e&2)){if((c[46755]|0)==(j|0)){j=(c[46752]|0)+b|0;c[46752]=j;c[46755]=i;c[i+4>>2]=j|1;if((i|0)!=(c[46754]|0))return;c[46754]=0;c[46751]=0;return}if((c[46754]|0)==(j|0)){j=(c[46751]|0)+b|0;c[46751]=j;c[46754]=h;c[i+4>>2]=j|1;c[h+j>>2]=j;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){b=c[j+8>>2]|0;a=c[j+12>>2]|0;if((a|0)==(b|0)){c[46749]=c[46749]&~(1<>2]=a;c[a+8>>2]=b;break}}else{g=c[j+24>>2]|0;a=c[j+12>>2]|0;do if((a|0)==(j|0)){d=j+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){d=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}c[b>>2]=0;d=a}else{d=c[j+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(g|0){a=c[j+28>>2]|0;b=187300+(a<<2)|0;if((c[b>>2]|0)==(j|0)){c[b>>2]=d;if(!d){c[46750]=c[46750]&~(1<>2]|0)!=(j|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=g;a=j+16|0;b=c[a>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}a=c[a+4>>2]|0;if(a|0){c[d+20>>2]=a;c[a+24>>2]=d}}}while(0);c[i+4>>2]=f|1;c[h+f>>2]=f;if((i|0)==(c[46754]|0)){c[46751]=f;return}}else{c[a>>2]=e&-2;c[i+4>>2]=b|1;c[h+b>>2]=b;f=b}a=f>>>3;if(f>>>0<256){d=187036+(a<<1<<2)|0;b=c[46749]|0;a=1<>2]|0}c[b>>2]=i;c[a+12>>2]=i;c[i+8>>2]=a;c[i+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)a=31;else{h=(a+1048320|0)>>>16&8;j=a<>>16&4;j=j<>>16&2;a=14-(g|h|a)+(j<>>15)|0;a=f>>>(a+7|0)&1|a<<1}else a=0;e=187300+(a<<2)|0;c[i+28>>2]=a;c[i+20>>2]=0;c[i+16>>2]=0;b=c[46750]|0;d=1<>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){a=73;break}e=d+16+(b>>>31<<2)|0;a=c[e>>2]|0;if(!a){a=72;break}else{b=b<<1;d=a}}if((a|0)==72){c[e>>2]=i;c[i+24>>2]=d;c[i+12>>2]=i;c[i+8>>2]=i;break}else if((a|0)==73){h=d+8|0;j=c[h>>2]|0;c[j+12>>2]=i;c[h>>2]=i;c[i+8>>2]=j;c[i+12>>2]=d;c[i+24>>2]=0;break}}else{c[46750]=b|d;c[e>>2]=i;c[i+24>>2]=e;c[i+12>>2]=i;c[i+8>>2]=i}while(0);j=(c[46757]|0)+-1|0;c[46757]=j;if(!j)a=187452;else return;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[46757]=-1;return}function D_(a,b){a=a|0;b=b|0;var d=0;if(a){d=O(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;a=B_(d)|0;if(!a)return a|0;if(!(c[a+-4>>2]&3))return a|0;G3(a|0,0,d|0)|0;return a|0}function E_(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){b=B_(b)|0;return b|0}if(b>>>0>4294967231){c[(N_()|0)>>2]=12;b=0;return b|0}d=F_(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){b=d+8|0;return b|0}d=B_(b)|0;if(!d){b=0;return b|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;E3(d|0,a|0,(e>>>0>>0?e:b)|0)|0;C_(a);b=d;return b|0}function F_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;m=c[l>>2]|0;d=m&-8;i=a+d|0;if(!(m&3)){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[46869]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;k=a+b|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|3;m=i+4|0;c[m>>2]=c[m>>2]|1;G_(k,d);return a|0}if((c[46755]|0)==(i|0)){k=(c[46752]|0)+d|0;d=k-b|0;e=a+b|0;if(k>>>0<=b>>>0){a=0;return a|0}c[l>>2]=m&1|b|2;c[e+4>>2]=d|1;c[46755]=e;c[46752]=d;return a|0}if((c[46754]|0)==(i|0)){e=(c[46751]|0)+d|0;if(e>>>0>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){k=a+b|0;e=a+e|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|1;c[e>>2]=d;e=e+4|0;c[e>>2]=c[e>>2]&-2;e=k}else{c[l>>2]=m&1|e|2;e=a+e+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[46751]=d;c[46754]=e;return a|0}e=c[i+4>>2]|0;if(e&2|0){a=0;return a|0}j=(e&-8)+d|0;if(j>>>0>>0){a=0;return a|0}k=j-b|0;f=e>>>3;do if(e>>>0<256){e=c[i+8>>2]|0;d=c[i+12>>2]|0;if((d|0)==(e|0)){c[46749]=c[46749]&~(1<>2]=d;c[d+8>>2]=e;break}}else{h=c[i+24>>2]|0;d=c[i+12>>2]|0;do if((d|0)==(i|0)){f=i+16|0;e=f+4|0;d=c[e>>2]|0;if(!d){d=c[f>>2]|0;if(!d){f=0;break}else g=f}else g=e;while(1){f=d+20|0;e=c[f>>2]|0;if(e|0){d=e;g=f;continue}e=d+16|0;f=c[e>>2]|0;if(!f)break;else{d=f;g=e}}c[g>>2]=0;f=d}else{f=c[i+8>>2]|0;c[f+12>>2]=d;c[d+8>>2]=f;f=d}while(0);if(h|0){d=c[i+28>>2]|0;e=187300+(d<<2)|0;if((c[e>>2]|0)==(i|0)){c[e>>2]=f;if(!f){c[46750]=c[46750]&~(1<>2]|0)!=(i|0)&1)<<2)>>2]=f;if(!f)break}c[f+24>>2]=h;d=i+16|0;e=c[d>>2]|0;if(e|0){c[f+16>>2]=e;c[e+24>>2]=f}d=c[d+4>>2]|0;if(d|0){c[f+20>>2]=d;c[d+24>>2]=f}}}while(0);if(k>>>0<16){c[l>>2]=j|m&1|2;m=a+j+4|0;c[m>>2]=c[m>>2]|1;return a|0}else{i=a+b|0;c[l>>2]=m&1|b|2;c[i+4>>2]=k|3;m=a+j+4|0;c[m>>2]=c[m>>2]|1;G_(i,k);return a|0}return 0}function G_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){f=c[a>>2]|0;if(!(d&3))return;h=a+(0-f)|0;b=f+b|0;if((c[46754]|0)==(h|0)){a=i+4|0;d=c[a>>2]|0;if((d&3|0)!=3)break;c[46751]=b;c[a>>2]=d&-2;c[h+4>>2]=b|1;c[i>>2]=b;return}e=f>>>3;if(f>>>0<256){a=c[h+8>>2]|0;d=c[h+12>>2]|0;if((d|0)==(a|0)){c[46749]=c[46749]&~(1<>2]=d;c[d+8>>2]=a;break}}g=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){e=h+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){a=0;break}else d=e}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;d=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;d=e}}c[d>>2]=0}else{f=c[h+8>>2]|0;c[f+12>>2]=a;c[a+8>>2]=f}while(0);if(g){d=c[h+28>>2]|0;e=187300+(d<<2)|0;if((c[e>>2]|0)==(h|0)){c[e>>2]=a;if(!a){c[46750]=c[46750]&~(1<>2]|0)!=(h|0)&1)<<2)>>2]=a;if(!a)break}c[a+24>>2]=g;d=h+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(d){c[a+20>>2]=d;c[d+24>>2]=a}}}else h=a;while(0);a=i+4|0;e=c[a>>2]|0;if(!(e&2)){if((c[46755]|0)==(i|0)){i=(c[46752]|0)+b|0;c[46752]=i;c[46755]=h;c[h+4>>2]=i|1;if((h|0)!=(c[46754]|0))return;c[46754]=0;c[46751]=0;return}if((c[46754]|0)==(i|0)){i=(c[46751]|0)+b|0;c[46751]=i;c[46754]=h;c[h+4>>2]=i|1;c[h+i>>2]=i;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){a=c[i+8>>2]|0;b=c[i+12>>2]|0;if((b|0)==(a|0)){c[46749]=c[46749]&~(1<>2]=b;c[b+8>>2]=a;break}}else{g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){d=i+16|0;a=d+4|0;b=c[a>>2]|0;if(!b){b=c[d>>2]|0;if(!b){d=0;break}else a=d}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);if(g|0){b=c[i+28>>2]|0;a=187300+(b<<2)|0;if((c[a>>2]|0)==(i|0)){c[a>>2]=d;if(!d){c[46750]=c[46750]&~(1<>2]|0)!=(i|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=g;b=i+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}b=c[b+4>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}}while(0);c[h+4>>2]=f|1;c[h+f>>2]=f;if((h|0)==(c[46754]|0)){c[46751]=f;return}}else{c[a>>2]=e&-2;c[h+4>>2]=b|1;c[h+b>>2]=b;f=b}b=f>>>3;if(f>>>0<256){d=187036+(b<<1<<2)|0;a=c[46749]|0;b=1<>2]|0}c[a>>2]=h;c[b+12>>2]=h;c[h+8>>2]=b;c[h+12>>2]=d;return}b=f>>>8;if(b)if(f>>>0>16777215)b=31;else{g=(b+1048320|0)>>>16&8;i=b<>>16&4;i=i<>>16&2;b=14-(e|g|b)+(i<>>15)|0;b=f>>>(b+7|0)&1|b<<1}else b=0;e=187300+(b<<2)|0;c[h+28>>2]=b;c[h+20>>2]=0;c[h+16>>2]=0;a=c[46750]|0;d=1<>2]=h;c[h+24>>2]=e;c[h+12>>2]=h;c[h+8>>2]=h;return}a=f<<((b|0)==31?0:25-(b>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){b=69;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){b=68;break}else{a=a<<1;d=b}}if((b|0)==68){c[e>>2]=h;c[h+24>>2]=d;c[h+12>>2]=h;c[h+8>>2]=h;return}else if((b|0)==69){g=d+8|0;i=c[g>>2]|0;c[i+12>>2]=h;c[g>>2]=h;c[h+8>>2]=i;c[h+12>>2]=d;c[h+24>>2]=0;return}}function H_(a,b){a=a|0;b=b|0;if(a>>>0<9){b=B_(b)|0;return b|0}else{b=I_(a,b)|0;return b|0}return 0}function I_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;a=a>>>0>16?a:16;if(a+-1&a){d=16;while(1)if(d>>>0>>0)d=d<<1;else{a=d;break}}if((-64-a|0)>>>0<=b>>>0){c[(N_()|0)>>2]=12;h=0;return h|0}g=b>>>0<11?16:b+11&-8;d=B_(g+12+a|0)|0;if(!d){h=0;return h|0}f=d+-8|0;do if(a+-1&d){e=(d+a+-1&0-a)+-8|0;b=f;e=(e-b|0)>>>0>15?e:e+a|0;b=e-b|0;a=d+-4|0;i=c[a>>2]|0;d=(i&-8)-b|0;if(!(i&3)){c[e>>2]=(c[f>>2]|0)+b;c[e+4>>2]=d;a=e;b=e;break}else{i=e+4|0;c[i>>2]=d|c[i>>2]&1|2;d=e+d+4|0;c[d>>2]=c[d>>2]|1;c[a>>2]=b|c[a>>2]&1|2;c[i>>2]=c[i>>2]|1;G_(f,b);a=e;b=e;break}}else{a=f;b=f}while(0);a=a+4|0;d=c[a>>2]|0;if(d&3|0?(h=d&-8,h>>>0>(g+16|0)>>>0):0){i=h-g|0;f=b+g|0;c[a>>2]=g|d&1|2;c[f+4>>2]=i|3;h=b+h+4|0;c[h>>2]=c[h>>2]|1;G_(f,i)}i=b+8|0;return i|0}function J_(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=O_(c[a+60>>2]|0)|0;a=M_(Ja(6,d|0)|0)|0;l=b;return a|0}function K_(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+32|0;f=k;i=k+16|0;c[i>>2]=d;g=i+4|0;j=b+48|0;m=c[j>>2]|0;c[g>>2]=e-((m|0)!=0&1);h=b+44|0;c[i+8>>2]=c[h>>2];c[i+12>>2]=m;c[f>>2]=c[b+60>>2];c[f+4>>2]=i;c[f+8>>2]=2;f=M_(ya(145,f|0)|0)|0;if((f|0)>=1){i=c[g>>2]|0;if(f>>>0>i>>>0){g=c[h>>2]|0;h=b+4|0;c[h>>2]=g;c[b+8>>2]=g+(f-i);if(!(c[j>>2]|0))f=e;else{c[h>>2]=g+1;a[d+(e+-1)>>0]=a[g>>0]|0;f=e}}}else c[b>>2]=c[b>>2]|f&48^16;l=k;return f|0}function L_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+32|0;g=f;e=f+20|0;c[g>>2]=c[a+60>>2];c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;if((M_(xa(140,g|0)|0)|0)<0){c[e>>2]=-1;a=-1}else a=c[e>>2]|0;l=f;return a|0}function M_(a){a=a|0;if(a>>>0>4294963200){c[(N_()|0)>>2]=0-a;a=-1}return a|0}function N_(){return 187492}function O_(a){a=a|0;return a|0}function P_(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;c[b+36>>2]=18;if((c[b>>2]&64|0)==0?(c[f>>2]=c[b+60>>2],c[f+4>>2]=21523,c[f+8>>2]=g+16,Ia(54,f|0)|0):0)a[b+75>>0]=-1;f=Q_(b,d,e)|0;l=g;return f|0}function Q_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+48|0;k=n+16|0;g=n;f=n+32|0;i=a+28|0;e=c[i>>2]|0;c[f>>2]=e;j=a+20|0;e=(c[j>>2]|0)-e|0;c[f+4>>2]=e;c[f+8>>2]=b;c[f+12>>2]=d;e=e+d|0;h=a+60|0;c[g>>2]=c[h>>2];c[g+4>>2]=f;c[g+8>>2]=2;g=M_(za(146,g|0)|0)|0;a:do if((e|0)!=(g|0)){b=2;while(1){if((g|0)<0)break;e=e-g|0;p=c[f+4>>2]|0;o=g>>>0>p>>>0;f=o?f+8|0:f;b=b+(o<<31>>31)|0;p=g-(o?p:0)|0;c[f>>2]=(c[f>>2]|0)+p;o=f+4|0;c[o>>2]=(c[o>>2]|0)-p;c[k>>2]=c[h>>2];c[k+4>>2]=f;c[k+8>>2]=b;g=M_(za(146,k|0)|0)|0;if((e|0)==(g|0)){m=3;break a}}c[a+16>>2]=0;c[i>>2]=0;c[j>>2]=0;c[a>>2]=c[a>>2]|32;if((b|0)==2)d=0;else d=d-(c[f+4>>2]|0)|0}else m=3;while(0);if((m|0)==3){p=c[a+44>>2]|0;c[a+16>>2]=p+(c[a+48>>2]|0);c[i>>2]=p;c[j>>2]=p}l=n;return d|0}function R_(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=M_(Ka(91,e|0)|0)|0;l=d;return b|0}function S_(){return}function T_(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=l;l=l+32|0;h=i;do if((g&4095|0)==0&(((g|0)<0)<<31>>31&-4096|0)==0){if(b>>>0>2147483646){c[(N_()|0)>>2]=12;a=-1;break}c[h>>2]=a;c[h+4>>2]=b;c[h+8>>2]=d;c[h+12>>2]=e;c[h+16>>2]=f;c[h+20>>2]=g>>12;a=M_(Aa(192,h|0)|0)|0}else{c[(N_()|0)>>2]=22;a=-1}while(0);l=i;return a|0}function U_(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do if(!f)b=b+(V_(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=O(f,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009|0)break b;b=b+4|0;e=c[b>>2]|0}while(!((e&-2139062144^-2139062144)&e+-16843009|0));while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}while(0);return b|0}function V_(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=4;else{d=f;while(1){if(!(a[b>>0]|0)){b=d;break a}b=b+1|0;d=b;if(!(d&3)){e=4;break}}}while(0);if((e|0)==4){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function W_(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+48|0;g=h+16|0;f=h;e=h+32|0;if(!(b&4194368))e=0;else{c[e>>2]=d;i=(c[e>>2]|0)+(4-1)&~(4-1);d=c[i>>2]|0;c[e>>2]=i+4;e=d}c[f>>2]=a;c[f+4>>2]=b|32768;c[f+8>>2]=e;e=Ha(5,f|0)|0;if(!((b&524288|0)==0|(e|0)<0)){c[g>>2]=e;c[g+4>>2]=2;c[g+8>>2]=1;Ea(221,g|0)|0}i=M_(e)|0;l=h;return i|0}function X_(b,e){b=b|0;e=e|0;var f=0,g=0;g=0;while(1){if((d[141449+g>>0]|0)==(b|0)){b=2;break}f=g+1|0;if((f|0)==87){f=141537;g=87;b=5;break}else g=f}if((b|0)==2)if(!g)f=141537;else{f=141537;b=5}if((b|0)==5)while(1){do{b=f;f=f+1|0}while((a[b>>0]|0)!=0);g=g+-1|0;if(!g)break;else b=5}return Y_(f,c[e+20>>2]|0)|0}function Y_(a,b){a=a|0;b=b|0;return Z_(a,b)|0}function Z_(a,b){a=a|0;b=b|0;if(!b)b=0;else b=__(c[b>>2]|0,c[b+4>>2]|0,a)|0;return (b|0?b:a)|0}function __(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(c[b>>2]|0)+1794895138|0;h=$_(c[b+8>>2]|0,o)|0;f=$_(c[b+12>>2]|0,o)|0;g=$_(c[b+16>>2]|0,o)|0;a:do if((h>>>0>>2>>>0?(n=d-(h<<2)|0,f>>>0>>0&g>>>0>>0):0)?((g|f)&3|0)==0:0){n=f>>>2;m=g>>>2;l=0;while(1){j=h>>>1;k=l+j|0;i=k<<1;g=i+n|0;f=$_(c[b+(g<<2)>>2]|0,o)|0;g=$_(c[b+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0>>0&f>>>0<(d-g|0)>>>0)){f=0;break a}if(a[b+(g+f)>>0]|0){f=0;break a}f=a$(e,b+g|0)|0;if(!f)break;f=(f|0)<0;if((h|0)==1){f=0;break a}else{l=f?l:k;h=f?j:h-j|0}}f=i+m|0;g=$_(c[b+(f<<2)>>2]|0,o)|0;f=$_(c[b+(f+1<<2)>>2]|0,o)|0;if(f>>>0>>0&g>>>0<(d-f|0)>>>0)f=(a[b+(f+g)>>0]|0)==0?b+f|0:0;else f=0}else f=0;while(0);return f|0}function $_(a,b){a=a|0;b=b|0;var c=0;c=B3(a|0)|0;return ((b|0)==0?a:c)|0}function a$(b,c){b=b|0;c=c|0;var d=0,e=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24)b=e;else{do{b=b+1|0;c=c+1|0;d=a[b>>0]|0;e=a[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));b=e}return (d&255)-(b&255)|0}function b$(a){a=a|0;return X_(a,c[(c$()|0)+188>>2]|0)|0}function c$(){return d$()|0}function d$(){return 62872}function e$(a,b,c){a=+a;b=+b;c=c|0;var d=0.0,e=0.0,f=0.0;f=a*a;d=f*(f*f)*(f*1.58969099521155e-10+-2.5050760253406863e-08)+(f*(f*2.7557313707070068e-06+-1.984126982985795e-04)+.00833333333332249);e=f*a;if(!c)a=e*(f*d+-.16666666666666632)+a;else a=a-(e*.16666666666666632+(f*(b*.5-e*d)-b));return +a}function f$(a){a=+a;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,k=0.0,l=0.0,m=0.0;h[j>>3]=a;b=c[j>>2]|0;d=c[j+4>>2]|0;e=(d|0)<0;do if(e|d>>>0<1048576){if((b|0)==0&(d&2147483647|0)==0){a=-1.0/(a*a);break}if(e){a=(a-a)/0.0;break}else{h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;e=-1077;b=c[j>>2]|0;f=9;break}}else if(d>>>0<=2146435071)if((b|0)==0&0==0&(d|0)==1072693248)a=0.0;else{e=-1023;f=9}while(0);if((f|0)==9){f=d+614242|0;c[j>>2]=b;c[j+4>>2]=(f&1048575)+1072079006;m=+h[j>>3]+-1.0;k=m*(m*.5);i=m/(m+2.0);l=i*i;g=l*l;h[j>>3]=m-k;d=c[j+4>>2]|0;c[j>>2]=0;c[j+4>>2]=d;a=+h[j>>3];g=m-a-k+i*(k+(g*(g*(g*.15313837699209373+.22222198432149784)+.3999999999940942)+l*(g*(g*(g*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));l=a*1.4426950407214463;k=+(e+(f>>>20)|0);i=l+k;a=i+(l+(k-i)+(g*1.4426950407214463+(g+a)*1.6751713164886512e-10))}return +a}function g$(a,b){a=+a;b=b|0;var d=0,e=0,f=0;h[j>>3]=a;d=c[j>>2]|0;e=c[j+4>>2]|0;f=y3(d|0,e|0,52)|0;switch(f&2047){case 0:{if(a!=0.0){a=+g$(a*18446744073709551616.0,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;break}case 2047:break;default:{c[b>>2]=(f&2047)+-1022;c[j>>2]=d;c[j+4>>2]=e&-2146435073|1071644672;a=+h[j>>3]}}return +a}function h$(a,b){a=+a;b=+b;var c=0.0,d=0.0,e=0.0,f=0.0;c=a*a;d=c*c;e=c*.5;f=1.0-e;return +(f+(1.0-f-e+(c*(c*(c*(c*2.480158728947673e-05+-.001388888888887411)+.0416666666666666)+d*d*(c*(2.087572321298175e-09-c*1.1359647557788195e-11)+-2.7557314351390663e-07))-a*b)))}function i$(a){a=+a;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,k=0.0,l=0.0,m=0.0;h[j>>3]=a;b=c[j>>2]|0;d=c[j+4>>2]|0;e=(d|0)<0;do if(e|d>>>0<1048576){if((b|0)==0&(d&2147483647|0)==0){a=-1.0/(a*a);break}if(e){a=(a-a)/0.0;break}else{h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;e=-1077;b=c[j>>2]|0;f=9;break}}else if(d>>>0<=2146435071)if((b|0)==0&0==0&(d|0)==1072693248)a=0.0;else{e=-1023;f=9}while(0);if((f|0)==9){f=d+614242|0;c[j>>2]=b;c[j+4>>2]=(f&1048575)+1072079006;k=+h[j>>3]+-1.0;i=k*(k*.5);l=k/(k+2.0);m=l*l;g=m*m;h[j>>3]=k-i;d=c[j+4>>2]|0;c[j>>2]=0;c[j+4>>2]=d;a=+h[j>>3];g=k-a-i+l*(i+(g*(g*(g*.15313837699209373+.22222198432149784)+.3999999999940942)+m*(g*(g*(g*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));m=a*.4342944818781689;i=+(e+(f>>>20)|0);l=i*.30102999566361177;k=l+m;a=k+(m+(l-k)+(g*.4342944818781689+(i*3.694239077158931e-13+(g+a)*2.5082946711645275e-11)))}return +a}function j$(a,b){a=+a;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=l;l=l+48|0;m=r+16|0;n=r;h[j>>3]=a;d=c[j>>2]|0;i=c[j+4>>2]|0;o=y3(d|0,i|0,63)|0;q=i&2147483647;do if(q>>>0<1074752123)if((i&1048575|0)!=598523){d=(o|0)!=0;if(q>>>0<1073928573)if(d){g=a+1.5707963267341256;k=g+6.077100506506192e-11;h[b>>3]=k;h[b+8>>3]=g-k+6.077100506506192e-11;d=-1;break}else{g=a+-1.5707963267341256;k=g+-6.077100506506192e-11;h[b>>3]=k;h[b+8>>3]=g-k+-6.077100506506192e-11;d=1;break}else if(d){g=a+3.1415926534682512;k=g+1.2154201013012384e-10;h[b>>3]=k;h[b+8>>3]=g-k+1.2154201013012384e-10;d=-2;break}else{g=a+-3.1415926534682512;k=g+-1.2154201013012384e-10;h[b>>3]=k;h[b+8>>3]=g-k+-1.2154201013012384e-10;d=2;break}}else p=21;else{if(q>>>0<1075594812)if(q>>>0<1075183037){if((q|0)==1074977148){p=21;break}if(!o){g=a+-4.712388980202377;k=g+-1.8231301519518578e-10;h[b>>3]=k;h[b+8>>3]=g-k+-1.8231301519518578e-10;d=3;break}else{g=a+4.712388980202377;k=g+1.8231301519518578e-10;h[b>>3]=k;h[b+8>>3]=g-k+1.8231301519518578e-10;d=-3;break}}else{if((q|0)==1075388923){p=21;break}if(!o){g=a+-6.2831853069365025;k=g+-2.430840202602477e-10;h[b>>3]=k;h[b+8>>3]=g-k+-2.430840202602477e-10;d=4;break}else{g=a+6.2831853069365025;k=g+2.430840202602477e-10;h[b>>3]=k;h[b+8>>3]=g-k+2.430840202602477e-10;d=-4;break}}if(q>>>0>=1094263291){if(q>>>0>2146435071){k=a-a;h[b+8>>3]=k;h[b>>3]=k;d=0;break}c[j>>2]=d;c[j+4>>2]=i&1048575|1096810496;a=+h[j>>3];d=0;do{k=+(~~a|0);h[m+(d<<3)>>3]=k;a=(a-k)*16777216.0;d=d+1|0}while((d|0)!=2);h[m+16>>3]=a;if(a==0.0){d=1;while(1)if(+h[m+(d<<3)>>3]==0.0)d=d+-1|0;else break}else d=2;d=k$(m,n,(q>>>20)+-1046|0,d+1|0,1)|0;a=+h[n>>3];if(!o){h[b>>3]=a;h[b+8>>3]=+h[n+8>>3];break}else{h[b>>3]=-a;h[b+8>>3]=-+h[n+8>>3];d=0-d|0;break}}else p=21}while(0);if((p|0)==21){g=a*.6366197723675814+6755399441055744.0+-6755399441055744.0;d=~~g;e=a-g*1.5707963267341256;f=g*6.077100506506192e-11;a=e-f;h[b>>3]=a;h[j>>3]=a;p=y3(c[j>>2]|0,c[j+4>>2]|0,52)|0;i=q>>>20;if((i-(p&2047)|0)>16){f=g*6.077100506303966e-11;k=e-f;f=g*2.0222662487959506e-21-(e-k-f);a=k-f;h[b>>3]=a;h[j>>3]=a;q=y3(c[j>>2]|0,c[j+4>>2]|0,52)|0;s=g*2.0222662487111665e-21;e=k-s;g=g*8.4784276603689e-32-(k-e-s);if((i-(q&2047)|0)>49){a=e-g;h[b>>3]=a;f=g}else e=k}h[b+8>>3]=e-a-f}l=r;return d|0}function k$(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0;H=l;l=l+560|0;C=H+480|0;z=H+320|0;G=H+160|0;E=H;D=c[63116+(f<<2)>>2]|0;p=e+-1|0;y=(d+-3|0)/24|0;y=(y|0)>0?y:0;B=O(y,-24)|0;j=d+-24+B|0;if((D+p|0)>=0){n=D+e|0;k=y-p|0;m=0;while(1){if((k|0)<0)g=0.0;else g=+(c[63132+(k<<2)>>2]|0);h[z+(m<<3)>>3]=g;m=m+1|0;if((m|0)==(n|0))break;else k=k+1|0}}o=(e|0)>0;n=0;while(1){if(o){m=n+p|0;g=0.0;k=0;do{g=g+ +h[a+(k<<3)>>3]*+h[z+(m-k<<3)>>3];k=k+1|0}while((k|0)!=(e|0))}else g=0.0;h[E+(n<<3)>>3]=g;if((n|0)<(D|0))n=n+1|0;else break}t=(j|0)>0;u=24-j|0;v=23-j|0;w=(e|0)>0;x=(j|0)==0;k=D;a:while(1){g=+h[E+(k<<3)>>3];o=(k|0)>0;if(o){m=k;n=0;while(1){i=+(~~(g*5.9604644775390625e-08)|0);c[C+(n<<2)>>2]=~~(g-i*16777216.0);s=m;m=m+-1|0;g=+h[E+(m<<3)>>3]+i;if((s|0)<=1)break;else n=n+1|0}}g=+l$(g,j);g=g-+A(+(g*.125))*8.0;m=~~g;g=g-+(m|0);do if(!t)if(!x)if(!(g>=.5)){p=0;s=m;break}else{n=2;F=20;break}else{n=c[C+(k+-1<<2)>>2]>>23;F=19;break}else{s=C+(k+-1<<2)|0;n=c[s>>2]|0;F=n>>u;n=n-(F<>2]=n;n=n>>v;m=F+m|0;F=19}while(0);if((F|0)==19){F=0;if((n|0)>0)F=20;else{p=n;s=m}}if((F|0)==20){F=0;s=m+1|0;if(o){m=0;r=0;do{p=C+(r<<2)|0;q=c[p>>2]|0;if(!m)if(!q)m=0;else{m=1;o=16777216;F=23}else{o=16777215;F=23}if((F|0)==23){F=0;c[p>>2]=o-q}r=r+1|0}while((r|0)!=(k|0))}else m=0;b:do if(t){switch(j|0){case 1:{o=8388607;break}case 2:{o=4194303;break}default:break b}r=C+(k+-1<<2)|0;c[r>>2]=c[r>>2]&o}while(0);if((n|0)==2){g=1.0-g;if(!m)p=2;else{p=2;g=g-+l$(1.0,j)}}else p=n}if(!(g==0.0)){F=42;break}if((k|0)>(D|0)){m=0;n=k;do{n=n+-1|0;m=c[C+(n<<2)>>2]|m}while((n|0)>(D|0));if(m){F=41;break}else m=1}else m=1;while(1)if(!(c[C+(D-m<<2)>>2]|0))m=m+1|0;else break;o=m+k|0;if((m|0)<=0){k=o;continue}while(1){n=k+1|0;m=k+e|0;h[z+(m<<3)>>3]=+(c[63132+(n+y<<2)>>2]|0);if(w){g=0.0;k=0;do{g=g+ +h[a+(k<<3)>>3]*+h[z+(m-k<<3)>>3];k=k+1|0}while((k|0)!=(e|0))}else g=0.0;h[E+(n<<3)>>3]=g;if((n|0)<(o|0))k=n;else{k=o;continue a}}}if((F|0)==41)while(1){F=0;j=j+-24|0;k=k+-1|0;if(!(c[C+(k<<2)>>2]|0))F=41;else{o=k;break}}else if((F|0)==42){g=+l$(g,0-j|0);if(g>=16777216.0){i=+(~~(g*5.9604644775390625e-08)|0);c[C+(k<<2)>>2]=~~(g-i*16777216.0);j=B+d|0;k=k+1|0;g=i}c[C+(k<<2)>>2]=~~g;o=k}g=+l$(1.0,j);n=(o|0)>-1;if(n){j=o;while(1){h[E+(j<<3)>>3]=g*+(c[C+(j<<2)>>2]|0);if((j|0)>0){g=g*5.9604644775390625e-08;j=j+-1|0}else break}if(n){k=o;while(1){m=o-k|0;j=0;g=0.0;while(1){g=g+ +h[10904+(j<<3)>>3]*+h[E+(j+k<<3)>>3];if((j|0)>=(D|0)|(j|0)>=(m|0))break;else j=j+1|0}h[G+(m<<3)>>3]=g;if((k|0)>0)k=k+-1|0;else break}}}switch(f|0){case 0:{if(n){g=0.0;j=o;while(1){g=g+ +h[G+(j<<3)>>3];if((j|0)>0)j=j+-1|0;else break}}else g=0.0;i=(p|0)==0?g:-g;F=72;break}case 2:case 1:{if(n){g=0.0;j=o;while(1){g=g+ +h[G+(j<<3)>>3];if((j|0)>0)j=j+-1|0;else break}}else g=0.0;k=(p|0)==0;h[b>>3]=k?g:-g;g=+h[G>>3]-g;if((o|0)>=1){j=1;while(1){g=g+ +h[G+(j<<3)>>3];if((j|0)==(o|0))break;else j=j+1|0}}i=k?g:-g;b=b+8|0;F=72;break}case 3:{if((o|0)>0){j=o;g=+h[G+(o<<3)>>3];do{F=j;j=j+-1|0;E=G+(j<<3)|0;i=+h[E>>3];I=g;g=i+g;h[G+(F<<3)>>3]=I+(i-g);h[E>>3]=g}while((F|0)>1);k=(o|0)>1;if(k){j=o;g=+h[G+(o<<3)>>3];do{F=j;j=j+-1|0;E=G+(j<<3)|0;I=+h[E>>3];i=g;g=I+g;h[G+(F<<3)>>3]=i+(I-g);h[E>>3]=g}while((F|0)>2);if(k){j=o;i=0.0;while(1){i=i+ +h[G+(j<<3)>>3];if((j|0)>2)j=j+-1|0;else break}}else i=0.0}else i=0.0}else i=0.0;g=+h[G>>3];if(!p){h[b>>3]=g;g=+h[G+8>>3]}else{h[b>>3]=-g;i=-i;g=-+h[G+8>>3]}h[b+8>>3]=g;b=b+16|0;F=72;break}default:{}}if((F|0)==72)h[b>>3]=i;l=H;return s&7|0}function l$(a,b){a=+a;b=b|0;var d=0,e=0;if((b|0)<=1023){if((b|0)<-1022){a=a*2.2250738585072014e-308;e=(b|0)<-2044;d=b+2044|0;a=e?a*2.2250738585072014e-308:a;b=e?((d|0)>-1022?d:-1022):b+1022|0}}else{a=a*8988465674311579538646525.0e283;d=(b|0)>2046;e=b+-2046|0;a=d?a*8988465674311579538646525.0e283:a;b=d?((e|0)<1023?e:1023):b+-1023|0}d=z3(b+1023|0,0,52)|0;e=z;c[j>>2]=d;c[j+4>>2]=e;return +(a*+h[j>>3])}function m$(a){a=+a;var b=0,d=0,e=0,f=0.0,g=0.0;h[j>>3]=a;d=c[j+4>>2]|0;b=d&2147483647;do if(b>>>0>2146435071)a=a+a;else{if(b>>>0<1048576){h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;b=d&2147483647;if(!b)break;else e=696219795}else e=715094163;c[j>>2]=0;c[j+4>>2]=((b>>>0)/3|0)+e|d&-2147483648;f=+h[j>>3];g=f*f*(f/a);h[j>>3]=(g*(g*g)*(g*.14599619288661245+-.758397934778766)+(g*(g*1.6214297201053545+-1.8849797954337717)+1.87595182427177))*f;d=r3(c[j>>2]|0,c[j+4>>2]|0,-2147483648,0)|0;e=z;c[j>>2]=d&-1073741824;c[j+4>>2]=e;f=+h[j>>3];a=a/(f*f);a=(a-f)/(f+f+a)*f+f}while(0);return +a}function n$(a,b){a=+a;b=+b;var d=0,e=0;h[j>>3]=a;e=c[j>>2]|0;d=c[j+4>>2]|0;h[j>>3]=b;d=c[j+4>>2]&-2147483648|d&2147483647;c[j>>2]=e;c[j+4>>2]=d;return +(+h[j>>3])}function o$(a,b){a=+a;b=+b;return +(+n$(a,b))}function p$(a,b){a=+a;b=b|0;return +(+l$(a,b))}function q$(a,b){a=+a;b=+b;return +(+r$(a,b))}function r$(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h[j>>3]=a;i=c[j>>2]|0;l=c[j+4>>2]|0;h[j>>3]=b;n=c[j>>2]|0;o=c[j+4>>2]|0;e=y3(i|0,l|0,52)|0;e=e&2047;m=y3(n|0,o|0,52)|0;m=m&2047;p=l&-2147483648;g=z3(n|0,o|0,1)|0;k=z;a:do if(!((g|0)==0&(k|0)==0)?(f=s$(b)|0,d=z&2147483647,!((e|0)==2047|(d>>>0>2146435072|(d|0)==2146435072&f>>>0>0))):0){d=z3(i|0,l|0,1)|0;f=z;if(!(f>>>0>k>>>0|(f|0)==(k|0)&d>>>0>g>>>0))return +((d|0)==(g|0)&(f|0)==(k|0)?a*0.0:a);if(!e){d=z3(i|0,l|0,12)|0;f=z;if((f|0)>-1|(f|0)==-1&d>>>0>4294967295){e=0;do{e=e+-1|0;d=z3(d|0,f|0,1)|0;f=z}while((f|0)>-1|(f|0)==-1&d>>>0>4294967295)}else e=0;i=z3(i|0,l|0,1-e|0)|0;g=z}else g=l&1048575|1048576;if(!m){f=z3(n|0,o|0,12)|0;k=z;if((k|0)>-1|(k|0)==-1&f>>>0>4294967295){d=0;do{d=d+-1|0;f=z3(f|0,k|0,1)|0;k=z}while((k|0)>-1|(k|0)==-1&f>>>0>4294967295)}else d=0;n=z3(n|0,o|0,1-d|0)|0;m=d;l=z}else l=o&1048575|1048576;f=s3(i|0,g|0,n|0,l|0)|0;d=z;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;b:do if((e|0)>(m|0)){while(1){if(k){if((f|0)==0&(d|0)==0)break}else{f=i;d=g}i=z3(f|0,d|0,1)|0;g=z;e=e+-1|0;f=s3(i|0,g|0,n|0,l|0)|0;d=z;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;if((e|0)<=(m|0))break b}b=a*0.0;break a}while(0);if(k){if((f|0)==0&(d|0)==0){b=a*0.0;break}}else{d=g;f=i}if(d>>>0<1048576|(d|0)==1048576&f>>>0<0)do{f=z3(f|0,d|0,1)|0;d=z;e=e+-1|0}while(d>>>0<1048576|(d|0)==1048576&f>>>0<0);if((e|0)>0){o=r3(f|0,d|0,0,-1048576)|0;d=z;e=z3(e|0,0,52)|0;d=d|z;e=o|e}else{e=y3(f|0,d|0,1-e|0)|0;d=z}c[j>>2]=e;c[j+4>>2]=d|p;b=+h[j>>3]}else q=3;while(0);if((q|0)==3){b=a*b;b=b/b}return +b}function s$(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;z=c[j+4>>2]|0;return b|0}function t$(a,b){a=+a;b=+b;var d=0.0,e=0,f=0,g=0,i=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=l;l=l+32|0;m=q+24|0;n=q+16|0;o=q+8|0;p=q;h[j>>3]=a;t=c[j>>2]|0;g=c[j+4>>2]|0;h[j>>3]=b;e=c[j>>2]|0;g=g&2147483647;f=c[j+4>>2]&2147483647;i=g>>>0>>0|(g|0)==(f|0)&t>>>0>>0;s=i?e:t;r=i?f:g;e=i?t:e;f=i?g:f;g=y3(s|0,r|0,52)|0;i=y3(e|0,f|0,52)|0;c[j>>2]=s;c[j+4>>2]=r;a=+h[j>>3];c[j>>2]=e;c[j+4>>2]=f;k=+h[j>>3];do if((i|0)!=2047){if(!((e|0)==0&(f|0)==0|(g|0)==2047)){if((g-i|0)>64){a=a+k;break}if((g|0)>1533){d=5260135901548373507240989.0e186;b=a*1.90109156629516e-211;a=k*1.90109156629516e-211}else{t=(i|0)<573;d=t?1.90109156629516e-211:1.0;b=t?a*5260135901548373507240989.0e186:a;a=t?k*5260135901548373507240989.0e186:k}u$(m,n,b);u$(o,p,a);a=d*+C(+(+h[p>>3]+ +h[n>>3]+ +h[o>>3]+ +h[m>>3]))}}else a=k;while(0);l=q;return +a}function u$(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0;e=c*134217729.0;e=e+(c-e);d=c-e;c=c*c;h[a>>3]=c;h[b>>3]=d*d+(e*e-c+e*2.0*d);return}function v$(a,b,d){a=+a;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0,k=0,m=0;k=l;l=l+16|0;g=k;h[j>>3]=a;f=c[j+4>>2]&2147483647;do if(f>>>0<1072243196)if(f>>>0<1044816030){h[b>>3]=a;h[d>>3]=1.0;break}else{h[b>>3]=+e$(a,0.0,0);h[d>>3]=+h$(a,0.0);break}else{if(f>>>0>2146435071){i=a-a;h[d>>3]=i;h[b>>3]=i;break}f=j$(a,g)|0;m=g+8|0;e=+e$(+h[g>>3],+h[m>>3],1);a=+h$(+h[g>>3],+h[m>>3]);switch(f&3){case 0:{h[b>>3]=e;i=a;break}case 1:{h[b>>3]=a;i=-e;break}case 2:{h[b>>3]=-e;i=-a;break}case 3:{h[b>>3]=-a;i=e;break}default:{}}h[d>>3]=i}while(0);l=k;return}function w$(a,b){a=+a;b=b|0;return +(+g$(a,b))}function x$(a){a=a|0;if(a>>>0<131072)a=(d[143341+((d[143341+(a>>>8)>>0]|0)<<5|a>>>3&31)>>0]|0)>>>(a&7)&1;else a=0;return a|0}function y$(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0;if(!e)f=0;else{f=a[b>>0]|0;a:do if(!(f<<24>>24))f=0;else while(1){e=e+-1|0;g=a[c>>0]|0;if(!(f<<24>>24==g<<24>>24&((e|0)!=0&g<<24>>24!=0)))break a;b=b+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){f=0;break}}while(0);f=(f&255)-(d[c>>0]|0)|0}return f|0}function z$(b,c){b=b|0;c=c|0;b=U_(b,c)|0;return ((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function A$(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function B$(a,b,c){a=a|0;b=b|0;c=c|0;c=E$(a,b,c,-1,0)|0;return c|0}function C$(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(f)i=6;else e=0;b:do if((i|0)==6){g=d&255;if((a[b>>0]|0)!=g<<24>>24){f=O(h,16843009)|0;c:do if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009|0)break;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break c}}else i=11;while(0);if((i|0)==11)if(!e){e=0;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;b=b+1|0;e=e+-1|0;if(!e){e=0;break}}}}while(0);return (e|0?b:0)|0}function D$(a){a=a|0;return (a+-48|0)>>>0<10|0}function E$(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+128|0;h=j;c[h>>2]=0;i=h+4|0;c[i>>2]=a;c[h+44>>2]=a;g=h+8|0;c[g>>2]=(a|0)<0?-1:a+2147483647|0;c[h+76>>2]=-1;F$(h,0);d=G$(h,d,1,e,f)|0;if(b|0)c[b>>2]=a+((c[i>>2]|0)+(c[h+108>>2]|0)-(c[g>>2]|0));l=j;return d|0}function F$(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+104>>2]=b;d=c[a+8>>2]|0;e=c[a+4>>2]|0;f=d-e|0;c[a+108>>2]=f;c[a+100>>2]=(b|0)!=0&(f|0)>(b|0)?e+b|0:d;return}function G$(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(e>>>0>36){c[(N_()|0)>>2]=22;h=0;g=0}else{r=b+4|0;q=b+100|0;do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=H$(b)|0}while((A$(i)|0)!=0);b:do switch(i|0){case 43:case 45:{i=((i|0)==45)<<31>>31;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;p=i;i=d[j>>0]|0;break b}else{p=i;i=H$(b)|0;break b}}default:p=0}while(0);j=(e|0)==0;do if((e|16|0)==16&(i|0)==48){i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=H$(b)|0;if((i|32|0)!=120)if(j){e=8;n=46;break}else{n=32;break}i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=H$(b)|0;if((d[146510+i>>0]|0)>15){g=(c[q>>2]|0)==0;if(!g)c[r>>2]=(c[r>>2]|0)+-1;if(!f){F$(b,0);h=0;g=0;break a}if(g){h=0;g=0;break a}c[r>>2]=(c[r>>2]|0)+-1;h=0;g=0;break a}else{e=16;n=46}}else{e=j?10:e;if(e>>>0>(d[146510+i>>0]|0)>>>0)n=32;else{if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;F$(b,0);c[(N_()|0)>>2]=22;h=0;g=0;break a}}while(0);c:do if((n|0)==32)if((e|0)==10){e=i+-48|0;if(e>>>0<10){i=0;j=e;do{i=(i*10|0)+j|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;e=d[e>>0]|0}else e=H$(b)|0;j=e+-48|0}while(j>>>0<10&i>>>0<429496729);f=0}else{e=i;i=0;f=0}k=e+-48|0;if(k>>>0<10){j=e;do{e=q3(i|0,f|0,10,0)|0;l=z;m=((k|0)<0)<<31>>31;o=~m;if(l>>>0>o>>>0|(l|0)==(o|0)&e>>>0>~k>>>0){e=10;n=72;break c}i=r3(e|0,l|0,k|0,m|0)|0;f=z;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=H$(b)|0;k=j+-48|0}while(k>>>0<10&(f>>>0<429496729|(f|0)==429496729&i>>>0<2576980378));if(k>>>0>9){j=p;e=f}else{e=10;n=72}}else{j=p;e=f}}else n=46;while(0);d:do if((n|0)==46){if(!(e+-1&e)){n=a[146766+((e*23|0)>>>5&7)>>0]|0;f=a[146510+i>>0]|0;j=f&255;if(e>>>0>j>>>0){i=0;k=j;do{i=k|i<>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=H$(b)|0;f=a[146510+j>>0]|0;k=f&255}while(i>>>0<134217728&e>>>0>k>>>0);k=0}else{j=i;k=0;i=0}l=y3(-1,-1,n|0)|0;m=z;if(e>>>0<=(f&255)>>>0|(m>>>0>>0|(m|0)==(k|0)&l>>>0>>0)){f=k;n=72;break}else j=k;while(1){i=z3(i|0,j|0,n|0)|0;k=z;i=i|f&255;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=H$(b)|0;f=a[146510+j>>0]|0;if(e>>>0<=(f&255)>>>0|(k>>>0>m>>>0|(k|0)==(m|0)&i>>>0>l>>>0)){f=k;n=72;break d}else j=k}}f=a[146510+i>>0]|0;j=f&255;if(e>>>0>j>>>0){i=0;k=j;do{i=k+(O(i,e)|0)|0;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=H$(b)|0;f=a[146510+j>>0]|0;k=f&255}while(i>>>0<119304647&e>>>0>k>>>0);k=0}else{j=i;i=0;k=0}if(e>>>0>(f&255)>>>0){n=v3(-1,-1,e|0,0)|0;o=z;m=k;while(1){if(m>>>0>o>>>0|(m|0)==(o|0)&i>>>0>n>>>0){f=m;n=72;break d}k=q3(i|0,m|0,e|0,0)|0;l=z;f=f&255;if(l>>>0>4294967295|(l|0)==-1&k>>>0>~f>>>0){f=m;n=72;break d}i=r3(k|0,l|0,f|0,0)|0;k=z;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=H$(b)|0;f=a[146510+j>>0]|0;if(e>>>0<=(f&255)>>>0){f=k;n=72;break}else m=k}}else{f=k;n=72}}while(0);if((n|0)==72)if(e>>>0>(d[146510+j>>0]|0)>>>0){do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=H$(b)|0}while(e>>>0>(d[146510+i>>0]|0)>>>0);c[(N_()|0)>>2]=34;j=(g&1|0)==0&0==0?p:0;e=h;i=g}else{j=p;e=f}if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;if(!(e>>>0>>0|(e|0)==(h|0)&i>>>0>>0)){if(!((g&1|0)!=0|0!=0|(j|0)!=0)){c[(N_()|0)>>2]=34;g=r3(g|0,h|0,-1,-1)|0;h=z;break}if(e>>>0>h>>>0|(e|0)==(h|0)&i>>>0>g>>>0){c[(N_()|0)>>2]=34;break}}g=((j|0)<0)<<31>>31;g=s3(i^j|0,e^g|0,j|0,g|0)|0;h=z}while(0);z=h;return g|0}function H$(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=b+104|0;h=c[f>>2]|0;if((h|0)!=0?(c[b+108>>2]|0)>=(h|0):0)i=4;else{e=I$(b)|0;if((e|0)>=0){g=c[f>>2]|0;f=b+8|0;if(g){j=c[f>>2]|0;h=c[b+4>>2]|0;f=g-(c[b+108>>2]|0)|0;g=j;if((j-h|0)<(f|0))f=g;else f=h+(f+-1)|0}else{g=c[f>>2]|0;f=g}c[b+100>>2]=f;f=b+4|0;if(!g)f=c[f>>2]|0;else{f=c[f>>2]|0;j=b+108|0;c[j>>2]=g+1-f+(c[j>>2]|0)}f=f+-1|0;if((e|0)!=(d[f>>0]|0|0))a[f>>0]=e}else i=4}if((i|0)==4){c[b+100>>2]=0;e=-1}return e|0}function I$(a){a=a|0;var b=0,e=0;e=l;l=l+16|0;b=e;if((J$(a)|0)==0?(nb[c[a+32>>2]&63](a,b,1)|0)==1:0)a=d[b>>0]|0;else a=-1;l=e;return a|0}function J$(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+28|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)nb[c[b+36>>2]&63](b,0,0)|0;c[b+16>>2]=0;c[e>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(!(d&4)){e=(c[b+44>>2]|0)+(c[b+48>>2]|0)|0;c[b+8>>2]=e;c[b+4>>2]=e;d=d<<27>>31}else{c[b>>2]=d|32;d=-1}return d|0}function K$(a){a=a|0;return (a+-48|0)>>>0<10|0}function L$(a){a=a|0;if(!(M$(a)|0))a=(D$(a)|0)!=0&1;else a=1;return a|0}function M$(a){a=a|0;return ((a|32)+-97|0)>>>0<26|0}function N$(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;e=a[b>>0]|0;a:do if(!(e<<24>>24))b=0;else{g=b;b=e;f=e&255;while(1){e=a[c>>0]|0;if(!(e<<24>>24))break a;if(b<<24>>24!=e<<24>>24?(f=O$(f)|0,(f|0)!=(O$(d[c>>0]|0)|0)):0)break;b=g+1|0;c=c+1|0;e=a[b>>0]|0;if(!(e<<24>>24)){b=0;break a}else{g=b;b=e;f=e&255}}b=a[g>>0]|0}while(0);g=O$(b&255)|0;return g-(O$(d[c>>0]|0)|0)|0}function O$(a){a=a|0;var b=0;b=(P$(a)|0)==0;return (b?a:a|32)|0}function P$(a){a=a|0;return (a+-65|0)>>>0<26|0}function Q$(a){a=a|0;return R$(a,0)|0}function R$(c,f){c=c|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=(f<<1)+-1|0;l=f+-1|0;a:do if(!((c+-43008|0)>>>0<22272|((c+-11776|0)>>>0<30784|((c+-1536|0)>>>0<2560|(S$(c)|0)==0)))){g=(f|0)!=0;if(g&(c+-4256|0)>>>0<46){if((c|0)>4293)switch(c|0){case 4295:case 4301:break;default:break a}c=c+7264|0;break}if((c+-11520|0)>>>0<38&(g^1)){c=c+-7264|0;break}else g=0;do{i=a[66242+(g<<2)+2>>0]|0;j=i<<24>>24;h=c-(e[66242+(g<<2)>>1]|0)|0;if((h-(l&j)|0)>>>0<(d[66242+(g<<2)+3>>0]|0)>>>0){m=11;break}g=g+1|0}while((g|0)!=61);if((m|0)==11)if(i<<24>>24==1){c=f+c-(h&1)|0;break}else{c=(O(k,j)|0)+c|0;break}i=1-f|0;g=b[65754+(i<<1)>>1]|0;b:do if(g<<16>>16){h=0;while(1){if((g&65535|0)==(c|0))break;h=h+1|0;g=b[65754+(h<<2)+(i<<1)>>1]|0;if(!(g<<16>>16))break b}c=e[65754+(h<<2)+(f<<1)>>1]|0;break a}while(0);return ((c+-66600+(f*40|0)|0)>>>0<40?c+-40+(f*80|0)|0:c)|0}while(0);return c|0}function S$(a){a=a|0;if(a>>>0<131072)a=(d[146775+((d[146775+(a>>>8)>>0]|0)<<5|a>>>3&31)>>0]|0)>>>(a&7)&1;else a=a>>>0<196606&1;return a|0}function T$(a){a=a|0;var b=0;b=a;while(1)if(!(c[b>>2]|0))break;else b=b+4|0;return b-a>>2|0}function U$(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0;if(!e)b=0;else{f=a[b>>0]|0;a:do if(!(f<<24>>24))b=0;else{h=b;b=f;f=f&255;while(1){e=e+-1|0;g=a[c>>0]|0;if(!((e|0)!=0&g<<24>>24!=0))break a;if(b<<24>>24!=g<<24>>24?(g=O$(f)|0,(g|0)!=(O$(d[c>>0]|0)|0)):0)break;b=h+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){b=0;break a}else{h=b;b=f;f=f&255}}b=a[h>>0]|0}while(0);b=O$(b&255)|0;b=b-(O$(d[c>>0]|0)|0)|0}return b|0}function V$(a){a=a|0;if(a>>>0>=255)if((a+-57344|0)>>>0<8185|(a>>>0<8232|(a+-8234|0)>>>0<47062))a=1;else return (a&65534|0)!=65534&(a+-65532|0)>>>0<1048580&1|0;else a=(a+1&127)>>>0>32&1;return a|0}function W$(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;g=k;i=(f|0)==0?187560:f;f=c[i>>2]|0;a:do if(!d)if(!f)f=0;else j=17;else{h=(b|0)==0?g:b;if(!e)f=-2;else{if(!f){f=a[d>>0]|0;if(f<<24>>24>-1){c[h>>2]=f&255;f=f<<24>>24!=0&1;break}g=(c[c[(_$()|0)+188>>2]>>2]|0)==0;f=a[d>>0]|0;if(g){c[h>>2]=f<<24>>24&57343;f=1;break}f=(f&255)+-194|0;if(f>>>0>50){j=17;break}f=c[62280+(f<<2)>>2]|0;g=e+-1|0;if(g){d=d+1|0;j=11}}else{g=e;j=11}b:do if((j|0)==11){b=a[d>>0]|0;m=(b&255)>>>3;if((m+-16|m+(f>>26))>>>0>7){j=17;break a}while(1){d=d+1|0;f=(b&255)+-128|f<<6;g=g+-1|0;if((f|0)>=0)break;if(!g)break b;b=a[d>>0]|0;if((b&-64)<<24>>24!=-128){j=17;break a}}c[i>>2]=0;c[h>>2]=f;f=e-g|0;break a}while(0);c[i>>2]=f;f=-2}}while(0);if((j|0)==17){c[i>>2]=0;c[(N_()|0)>>2]=84;f=-1}l=k;return f|0}function X$(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Y$(a,b,0)|0;return a|0}function Y$(b,d,e){b=b|0;d=d|0;e=e|0;do if(b){if(d>>>0<128){a[b>>0]=d;b=1;break}if(!(c[c[(Z$()|0)+188>>2]>>2]|0))if((d&-128|0)==57216){a[b>>0]=d;b=1;break}else{c[(N_()|0)>>2]=84;b=-1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;break}else{c[(N_()|0)>>2]=84;b=-1;break}}else b=1;while(0);return b|0}function Z$(){return d$()|0}function _$(){return d$()|0}function $$(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+272|0;n=p+8|0;o=p;do if(!(a[d>>0]|0)){d=Ta(149751)|0;if(d|0?a[d>>0]|0:0)break;d=Ta(149758+(b*12|0)|0)|0;if(d|0?a[d>>0]|0:0)break;d=Ta(149830)|0;if(d|0?a[d>>0]|0:0)break;d=149835}while(0);e=0;a:do{switch(a[d+e>>0]|0){case 47:case 0:break a;default:{}}e=e+1|0}while(e>>>0<15);f=a[d>>0]|0;if(f<<24>>24!=46?(a[d+e>>0]|0)==0:0)if(f<<24>>24==67)m=15;else{k=d;m=16}else{d=149835;m=15}if((m|0)==15)if(!(a[d+1>>0]|0))m=18;else{k=d;m=16}b:do if((m|0)==16)if((a$(k,149835)|0)!=0?(a$(k,149843)|0)!=0:0){d=c[46891]|0;if(d|0)do{if(!(a$(k,d+8|0)|0))break b;d=c[d+24>>2]|0}while((d|0)!=0);ta(187568);d=c[46891]|0;c:do if(d|0){while(1){if(!(a$(k,d+8|0)|0))break;d=c[d+24>>2]|0;if(!d)break c}La(187568);break b}while(0);d:do if(((c[46876]|0)==0?(g=Ta(149849)|0,(g|0)!=0):0)?(a[g>>0]|0)!=0:0){i=254-e|0;j=e+1|0;f=g;while(1){h=U_(f,58)|0;d=a[h>>0]|0;g=h-f+((d<<24>>24!=0)<<31>>31)|0;if(g>>>0>>0){E3(n|0,f|0,g|0)|0;f=n+g|0;a[f>>0]=47;E3(f+1|0,k|0,e|0)|0;a[n+(j+g)>>0]=0;f=ua(n|0,o|0)|0;if(f|0)break;d=a[h>>0]|0}f=h+(d<<24>>24!=0&1)|0;if(!(a[f>>0]|0)){m=41;break d}}d=B_(28)|0;if(!d){R_(f,c[o>>2]|0)|0;m=41;break}else{c[d>>2]=f;c[d+4>>2]=c[o>>2];o=d+8|0;E3(o|0,k|0,e|0)|0;a[o+e>>0]=0;c[d+24>>2]=c[46891];c[46891]=d;break}}else m=41;while(0);if((m|0)==41){d=B_(28)|0;if(d){c[d>>2]=c[15558];c[d+4>>2]=c[15559];o=d+8|0;E3(o|0,k|0,e|0)|0;a[o+e>>0]=0;c[d+24>>2]=c[46891];c[46891]=d}}La(187568);d=(b|0)==0&(d|0)==0?62232:d}else{d=k;m=18}while(0);do if((m|0)==18){if((b|0)==0?(a[d+1>>0]|0)==46:0){d=62232;break}d=0}while(0);l=p;return d|0}function a0(a,b){a=a|0;b=b|0;b0(a,b)|0;return a|0}function b0(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009|0)break;else f=b}}f=8}else f=8;while(0);if((f|0)==8){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function c0(a){a=a|0;return ((a|0)==32|(a|0)==9)&1|0}function d0(a){a=a|0;if(!a)a=0;else a=(e0(63396,a)|0)!=0&1;return a|0}function e0(a,b){a=a|0;b=b|0;var d=0;if(!b)a=a+((T$(a)|0)<<2)|0;else{while(1){d=c[a>>2]|0;if((d|0)==0|(d|0)==(b|0))break;else a=a+4|0}a=d|0?a:0}return a|0}function f0(a,b){a=a|0;b=b|0;do switch(b|0){case 1:{a=g0(a)|0;break}case 2:{a=S$(a)|0;break}case 3:{a=h0(a)|0;break}case 4:{a=i0(a)|0;break}case 5:{a=K$(a)|0;break}case 6:{a=j0(a)|0;break}case 7:{a=k0(a)|0;break}case 8:{a=V$(a)|0;break}case 9:{a=x$(a)|0;break}case 10:{a=d0(a)|0;break}case 11:{a=l0(a)|0;break}case 12:{a=m0(a)|0;break}default:a=0}while(0);return a|0}function g0(a){a=a|0;if(!(K$(a)|0))a=(S$(a)|0)!=0&1;else a=1;return a|0}function h0(a){a=a|0;return c0(a)|0}function i0(a){a=a|0;return ((a+-65529|0)>>>0<3|((a&-2|0)==8232|(a>>>0<32|(a+-127|0)>>>0<33)))&1|0}function j0(a){a=a|0;if(!(d0(a)|0))a=(V$(a)|0)!=0&1;else a=0;return a|0}function k0(a){a=a|0;return (Q$(a)|0)!=(a|0)|0}function l0(a){a=a|0;return (n0(a)|0)!=(a|0)|0}function m0(a){a=a|0;return ((a+-48|0)>>>0<10|((a|32)+-97|0)>>>0<6)&1|0}function n0(a){a=a|0;return R$(a,1)|0}function o0(a){a=a|0;return (a+-97|0)>>>0<26|0}function p0(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+128|0;g=n+124|0;m=n;h=m;i=63484;j=h+124|0;do{c[h>>2]=c[i>>2];h=h+4|0;i=i+4|0}while((h|0)<(j|0));if((d+-1|0)>>>0>2147483646)if(!d){b=g;d=1;k=4}else{c[(N_()|0)>>2]=75;d=-1}else k=4;if((k|0)==4){k=-2-b|0;k=d>>>0>k>>>0?k:d;c[m+48>>2]=k;g=m+20|0;c[g>>2]=b;c[m+44>>2]=b;d=b+k|0;b=m+16|0;c[b>>2]=d;c[m+28>>2]=d;d=q0(m,e,f)|0;if(k){m=c[g>>2]|0;a[m+(((m|0)==(c[b>>2]|0))<<31>>31)>>0]=0}}l=n;return d|0}function q0(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+224|0;n=s+120|0;p=s+80|0;q=s;r=s+136|0;f=p;g=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[n>>2]=c[e>>2];if((r0(0,d,n,q,p)|0)<0)e=-1;else{if((c[b+76>>2]|0)>-1)o=s0(b)|0;else o=0;e=c[b>>2]|0;m=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;f=b+48|0;if(!(c[f>>2]|0)){g=b+44|0;h=c[g>>2]|0;c[g>>2]=r;i=b+28|0;c[i>>2]=r;j=b+20|0;c[j>>2]=r;c[f>>2]=80;k=b+16|0;c[k>>2]=r+80;e=r0(b,d,n,q,p)|0;if(h){nb[c[b+36>>2]&63](b,0,0)|0;e=(c[j>>2]|0)==0?-1:e;c[g>>2]=h;c[f>>2]=0;c[k>>2]=0;c[i>>2]=0;c[j>>2]=0}}else e=r0(b,d,n,q,p)|0;f=c[b>>2]|0;c[b>>2]=f|m;if(o|0)t0(b);e=(f&32|0)==0?e:-1}l=s;return e|0}function r0(d,e,f,g,i){d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=l;l=l+64|0;D=I+16|0;E=I;A=I+24|0;G=I+8|0;H=I+20|0;c[D>>2]=e;w=(d|0)!=0;x=A+40|0;y=x;A=A+39|0;B=G+4|0;j=0;e=0;m=0;a:while(1){do if((e|0)>-1)if((j|0)>(2147483647-e|0)){c[(N_()|0)>>2]=75;e=-1;break}else{e=j+e|0;break}while(0);r=c[D>>2]|0;j=a[r>>0]|0;if(!(j<<24>>24)){v=88;break}else k=r;b:while(1){switch(j<<24>>24){case 37:{j=k;v=9;break b}case 0:{j=k;break b}default:{}}u=k+1|0;c[D>>2]=u;j=a[u>>0]|0;k=u}c:do if((v|0)==9)while(1){v=0;if((a[k+1>>0]|0)!=37)break c;j=j+1|0;k=k+2|0;c[D>>2]=k;if((a[k>>0]|0)!=37)break;else v=9}while(0);j=j-r|0;if(w)u0(d,r,j);if(j|0)continue;u=(D$(a[(c[D>>2]|0)+1>>0]|0)|0)==0;k=c[D>>2]|0;if(!u?(a[k+2>>0]|0)==36:0){s=(a[k+1>>0]|0)+-48|0;n=1;j=3}else{s=-1;n=m;j=1}j=k+j|0;c[D>>2]=j;k=a[j>>0]|0;u=(k<<24>>24)+-32|0;if(u>>>0>31|(1<>24)+-32|m;j=j+1|0;c[D>>2]=j;k=a[j>>0]|0;u=(k<<24>>24)+-32|0}while(!(u>>>0>31|(1<>24==42){if((D$(a[j+1>>0]|0)|0)!=0?(F=c[D>>2]|0,(a[F+2>>0]|0)==36):0){j=F+1|0;c[i+((a[j>>0]|0)+-48<<2)>>2]=10;j=c[g+((a[j>>0]|0)+-48<<3)>>2]|0;k=1;n=F+3|0}else{if(n|0){e=-1;break}if(w){u=(c[f>>2]|0)+(4-1)&~(4-1);j=c[u>>2]|0;c[f>>2]=u+4}else j=0;k=0;n=(c[D>>2]|0)+1|0}c[D>>2]=n;t=(j|0)<0;u=t?0-j|0:j;m=t?m|8192:m;t=k;j=n}else{j=v0(D)|0;if((j|0)<0){e=-1;break}u=j;t=n;j=c[D>>2]|0}do if((a[j>>0]|0)==46){if((a[j+1>>0]|0)!=42){c[D>>2]=j+1;p=v0(D)|0;j=c[D>>2]|0;break}if(D$(a[j+2>>0]|0)|0?(C=c[D>>2]|0,(a[C+3>>0]|0)==36):0){p=C+2|0;c[i+((a[p>>0]|0)+-48<<2)>>2]=10;p=c[g+((a[p>>0]|0)+-48<<3)>>2]|0;j=C+4|0;c[D>>2]=j;break}if(t|0){e=-1;break a}if(w){q=(c[f>>2]|0)+(4-1)&~(4-1);j=c[q>>2]|0;c[f>>2]=q+4}else j=0;q=(c[D>>2]|0)+2|0;c[D>>2]=q;p=j;j=q}else p=-1;while(0);q=0;while(1){if(((a[j>>0]|0)+-65|0)>>>0>57){e=-1;break a}k=j;j=j+1|0;c[D>>2]=j;k=a[(a[k>>0]|0)+-65+(149862+(q*58|0))>>0]|0;n=k&255;if((n+-1|0)>>>0>=8)break;else q=n}if(!(k<<24>>24)){e=-1;break}o=(s|0)>-1;do if(k<<24>>24==19)if(o){e=-1;break a}else v=50;else{if(o){c[i+(s<<2)>>2]=n;o=g+(s<<3)|0;s=c[o+4>>2]|0;v=E;c[v>>2]=c[o>>2];c[v+4>>2]=s;v=50;break}if(!w){e=0;break a}w0(E,n,f);j=c[D>>2]|0}while(0);if((v|0)==50){v=0;if(!w){j=0;m=t;continue}}k=a[j+-1>>0]|0;k=(q|0)!=0&(k&15|0)==3?k&-33:k;j=m&-65537;s=(m&8192|0)==0?m:j;d:do switch(k|0){case 110:switch((q&255)<<24>>24){case 0:{c[c[E>>2]>>2]=e;j=0;m=t;continue a}case 1:{c[c[E>>2]>>2]=e;j=0;m=t;continue a}case 2:{j=c[E>>2]|0;c[j>>2]=e;c[j+4>>2]=((e|0)<0)<<31>>31;j=0;m=t;continue a}case 3:{b[c[E>>2]>>1]=e;j=0;m=t;continue a}case 4:{a[c[E>>2]>>0]=e;j=0;m=t;continue a}case 6:{c[c[E>>2]>>2]=e;j=0;m=t;continue a}case 7:{j=c[E>>2]|0;c[j>>2]=e;c[j+4>>2]=((e|0)<0)<<31>>31;j=0;m=t;continue a}default:{j=0;m=t;continue a}}case 112:{k=120;j=p>>>0>8?p:8;m=s|8;v=62;break}case 88:case 120:{j=p;m=s;v=62;break}case 111:{k=E;j=c[k>>2]|0;k=c[k+4>>2]|0;o=y0(j,k,x)|0;m=y-o|0;q=0;n=150326;p=(s&8|0)==0|(p|0)>(m|0)?p:m+1|0;m=s;v=68;break}case 105:case 100:{k=E;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)<0){j=s3(0,0,j|0,k|0)|0;k=z;m=E;c[m>>2]=j;c[m+4>>2]=k;m=1;n=150326;v=67;break d}else{m=(s&2049|0)!=0&1;n=(s&2048|0)==0?((s&1|0)==0?150326:150328):150327;v=67;break d}}case 117:{k=E;m=0;n=150326;j=c[k>>2]|0;k=c[k+4>>2]|0;v=67;break}case 99:{a[A>>0]=c[E>>2];r=A;q=0;n=150326;o=x;k=1;break}case 109:{k=b$(c[(N_()|0)>>2]|0)|0;v=72;break}case 115:{k=c[E>>2]|0;k=k|0?k:150336;v=72;break}case 67:{c[G>>2]=c[E>>2];c[B>>2]=0;c[E>>2]=G;p=-1;m=G;v=76;break}case 83:{j=c[E>>2]|0;if(!p){A0(d,32,u,0,s);j=0;v=85}else{m=j;v=76}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{j=B0(d,+h[E>>3],u,p,s,k)|0;m=t;continue a}default:{q=0;n=150326;o=x;k=p;j=s}}while(0);e:do if((v|0)==62){s=E;r=c[s>>2]|0;s=c[s+4>>2]|0;o=x0(r,s,x,k&32)|0;n=(m&8|0)==0|(r|0)==0&(s|0)==0;q=n?0:2;n=n?150326:150326+(k>>4)|0;p=j;j=r;k=s;v=68}else if((v|0)==67){o=z0(j,k,x)|0;q=m;m=s;v=68}else if((v|0)==72){v=0;s=C$(k,0,p)|0;m=(s|0)==0;r=k;q=0;n=150326;o=m?k+p|0:s;k=m?p:s-k|0}else if((v|0)==76){v=0;o=m;j=0;k=0;while(1){n=c[o>>2]|0;if(!n)break;k=X$(H,n)|0;if((k|0)<0|k>>>0>(p-j|0)>>>0)break;j=k+j|0;if(p>>>0>j>>>0)o=o+4|0;else break}if((k|0)<0){e=-1;break a}A0(d,32,u,j,s);if(!j){j=0;v=85}else{n=0;while(1){k=c[m>>2]|0;if(!k){v=85;break e}k=X$(H,k)|0;n=k+n|0;if((n|0)>(j|0)){v=85;break e}u0(d,H,k);if(n>>>0>=j>>>0){v=85;break}else m=m+4|0}}}while(0);if((v|0)==68){v=0;k=(j|0)!=0|(k|0)!=0;j=(p|0)!=0|k;k=y-o+((k^1)&1)|0;r=j?o:x;o=x;k=j?((p|0)>(k|0)?p:k):p;j=(p|0)>-1?m&-65537:m}else if((v|0)==85){v=0;A0(d,32,u,j,s^8192);j=(u|0)>(j|0)?u:j;m=t;continue}p=o-r|0;o=(k|0)<(p|0)?p:k;s=o+q|0;m=(u|0)<(s|0)?s:u;A0(d,32,m,s,j);u0(d,n,q);A0(d,48,m,s,j^65536);A0(d,48,o,p,0);u0(d,r,p);A0(d,32,m,s,j^8192);j=m;m=t}f:do if((v|0)==88)if(!d)if(m){e=1;while(1){j=c[i+(e<<2)>>2]|0;if(!j)break;w0(g+(e<<3)|0,j,f);j=e+1|0;if((e|0)<9)e=j;else{e=j;break}}if((e|0)<10)while(1){if(c[i+(e<<2)>>2]|0){e=-1;break f}if((e|0)<9)e=e+1|0;else{e=1;break}}else e=1}else e=0;while(0);l=I;return e|0}function s0(a){a=a|0;return 0}function t0(a){a=a|0;return}function u0(a,b,d){a=a|0;b=b|0;d=d|0;if(!(c[a>>2]&32))D0(b,d,a)|0;return}function v0(b){b=b|0;var d=0,e=0;if(!(D$(a[c[b>>2]>>0]|0)|0))d=0;else{d=0;do{e=c[b>>2]|0;d=(d*10|0)+-48+(a[e>>0]|0)|0;e=e+1|0;c[b>>2]=e}while((D$(a[e>>0]|0)|0)!=0)}return d|0}function w0(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;c[a>>2]=b;break a}case 10:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=0;break a}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);b=e;f=c[b>>2]|0;b=c[b+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=f;c[e+4>>2]=b;break a}case 13:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&65535)<<16>>16;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 14:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&65535;c[f+4>>2]=0;break a}case 15:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&255)<<24>>24;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 16:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&255;c[f+4>>2]=0;break a}case 17:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}case 18:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}default:break a}while(0);while(0);return}function x0(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;if(!((b|0)==0&(c|0)==0))do{e=e+-1|0;a[e>>0]=d[150374+(b&15)>>0]|0|f;b=y3(b|0,c|0,4)|0;c=z}while(!((b|0)==0&(c|0)==0));return e|0}function y0(b,c,d){b=b|0;c=c|0;d=d|0;if(!((b|0)==0&(c|0)==0))do{d=d+-1|0;a[d>>0]=b&7|48;b=y3(b|0,c|0,3)|0;c=z}while(!((b|0)==0&(c|0)==0));return d|0}function z0(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295){while(1){e=w3(b|0,c|0,10,0)|0;d=d+-1|0;a[d>>0]=e&255|48;e=b;b=v3(b|0,c|0,10,0)|0;if(!(c>>>0>9|(c|0)==9&e>>>0>4294967295))break;else c=z}c=b}else c=b;if(c)while(1){d=d+-1|0;a[d>>0]=(c>>>0)%10|0|48;if(c>>>0<10)break;else c=(c>>>0)/10|0}return d|0}function A0(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+256|0;f=g;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;G3(f|0,b<<24>>24|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;do{u0(a,f,256);e=e+-256|0}while(e>>>0>255);e=b&255}u0(a,f,e)}l=g;return}function B0(b,e,f,g,h,i){b=b|0;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+560|0;m=H+8|0;u=H;G=H+524|0;F=G;n=H+512|0;c[u>>2]=0;E=n+12|0;C0(e)|0;if((z|0)<0){e=-e;C=1;B=150343}else{C=(h&2049|0)!=0&1;B=(h&2048|0)==0?((h&1|0)==0?150344:150349):150346}C0(e)|0;do if(0==0&(z&2146435072|0)==2146435072){G=(i&32|0)!=0;j=C+3|0;A0(b,32,f,j,h&-65537);u0(b,B,C);u0(b,e!=e|0.0!=0.0?(G?150511:150370):G?150362:150366,3);A0(b,32,f,j,h^8192)}else{r=+w$(e,u)*2.0;j=r!=0.0;if(j)c[u>>2]=(c[u>>2]|0)+-1;w=i|32;if((w|0)==97){p=i&32;s=(p|0)==0?B:B+9|0;q=C|2;j=12-g|0;do if(!(g>>>0>11|(j|0)==0)){e=8.0;do{j=j+-1|0;e=e*16.0}while((j|0)!=0);if((a[s>>0]|0)==45){e=-(e+(-r-e));break}else{e=r+e-e;break}}else e=r;while(0);k=c[u>>2]|0;j=(k|0)<0?0-k|0:k;j=z0(j,((j|0)<0)<<31>>31,E)|0;if((j|0)==(E|0)){j=n+11|0;a[j>>0]=48}a[j+-1>>0]=(k>>31&2)+43;o=j+-2|0;a[o>>0]=i+15;m=(g|0)<1;n=(h&8|0)==0;j=G;do{D=~~e;k=j+1|0;a[j>>0]=p|d[150374+D>>0];e=(e-+(D|0))*16.0;if((k-F|0)==1?!(n&(m&e==0.0)):0){a[k>>0]=46;j=j+2|0}else j=k}while(e!=0.0);if((g|0)!=0?(-2-F+j|0)<(g|0):0){k=j-F|0;j=g+2|0}else{j=j-F|0;k=j}E=E-o|0;F=E+q+j|0;A0(b,32,f,F,h);u0(b,s,q);A0(b,48,f,F,h^65536);u0(b,G,k);A0(b,48,j-k|0,0,0);u0(b,o,E);A0(b,32,f,F,h^8192);j=F;break}k=(g|0)<0?6:g;if(j){j=(c[u>>2]|0)+-28|0;c[u>>2]=j;e=r*268435456.0}else{e=r;j=c[u>>2]|0}D=(j|0)<0?m:m+288|0;m=D;do{y=~~e>>>0;c[m>>2]=y;m=m+4|0;e=(e-+(y>>>0))*1.0e9}while(e!=0.0);if((j|0)>0){n=D;p=m;while(1){o=(j|0)<29?j:29;j=p+-4|0;if(j>>>0>=n>>>0){m=0;do{x=z3(c[j>>2]|0,0,o|0)|0;x=r3(x|0,z|0,m|0,0)|0;y=z;v=w3(x|0,y|0,1e9,0)|0;c[j>>2]=v;m=v3(x|0,y|0,1e9,0)|0;j=j+-4|0}while(j>>>0>=n>>>0);if(m){n=n+-4|0;c[n>>2]=m}}m=p;while(1){if(m>>>0<=n>>>0)break;j=m+-4|0;if(!(c[j>>2]|0))m=j;else break}j=(c[u>>2]|0)-o|0;c[u>>2]=j;if((j|0)>0)p=m;else break}}else n=D;if((j|0)<0){g=((k+25|0)/9|0)+1|0;t=(w|0)==102;do{s=0-j|0;s=(s|0)<9?s:9;if(n>>>0>>0){o=(1<>>s;q=0;j=n;do{y=c[j>>2]|0;c[j>>2]=(y>>>s)+q;q=O(y&o,p)|0;j=j+4|0}while(j>>>0>>0);j=(c[n>>2]|0)==0?n+4|0:n;if(!q){n=j;j=m}else{c[m>>2]=q;n=j;j=m+4|0}}else{n=(c[n>>2]|0)==0?n+4|0:n;j=m}m=t?D:n;m=(j-m>>2|0)>(g|0)?m+(g<<2)|0:j;j=(c[u>>2]|0)+s|0;c[u>>2]=j}while((j|0)<0);j=n;g=m}else{j=n;g=m}y=D;if(j>>>0>>0){m=(y-j>>2)*9|0;o=c[j>>2]|0;if(o>>>0>=10){n=10;do{n=n*10|0;m=m+1|0}while(o>>>0>=n>>>0)}}else m=0;t=(w|0)==103;v=(k|0)!=0;n=k-((w|0)!=102?m:0)+((v&t)<<31>>31)|0;if((n|0)<(((g-y>>2)*9|0)+-9|0)){n=n+9216|0;s=D+4+(((n|0)/9|0)+-1024<<2)|0;n=(n|0)%9|0;if((n|0)<8){o=10;while(1){o=o*10|0;if((n|0)<7)n=n+1|0;else break}}else o=10;p=c[s>>2]|0;q=(p>>>0)%(o>>>0)|0;n=(s+4|0)==(g|0);if(!(n&(q|0)==0)){r=(((p>>>0)/(o>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;x=(o|0)/2|0;e=q>>>0>>0?.5:n&(q|0)==(x|0)?1.0:1.5;if(C){x=(a[B>>0]|0)==45;e=x?-e:e;r=x?-r:r}n=p-q|0;c[s>>2]=n;if(r+e!=r){x=n+o|0;c[s>>2]=x;if(x>>>0>999999999){m=s;while(1){n=m+-4|0;c[m>>2]=0;if(n>>>0>>0){j=j+-4|0;c[j>>2]=0}x=(c[n>>2]|0)+1|0;c[n>>2]=x;if(x>>>0>999999999)m=n;else break}}else n=s;m=(y-j>>2)*9|0;p=c[j>>2]|0;if(p>>>0>=10){o=10;do{o=o*10|0;m=m+1|0}while(p>>>0>=o>>>0)}}else n=s}else n=s;n=n+4|0;n=g>>>0>n>>>0?n:g;x=j}else{n=g;x=j}w=n;while(1){if(w>>>0<=x>>>0){u=0;break}j=w+-4|0;if(!(c[j>>2]|0))w=j;else{u=1;break}}g=0-m|0;do if(t){j=k+((v^1)&1)|0;if((j|0)>(m|0)&(m|0)>-5){o=i+-1|0;k=j+-1-m|0}else{o=i+-2|0;k=j+-1|0}j=h&8;if(!j){if(u?(A=c[w+-4>>2]|0,(A|0)!=0):0)if(!((A>>>0)%10|0)){n=0;j=10;do{j=j*10|0;n=n+1|0}while(!((A>>>0)%(j>>>0)|0|0))}else n=0;else n=9;j=((w-y>>2)*9|0)+-9|0;if((o|32|0)==102){s=j-n|0;s=(s|0)>0?s:0;k=(k|0)<(s|0)?k:s;s=0;break}else{s=j+m-n|0;s=(s|0)>0?s:0;k=(k|0)<(s|0)?k:s;s=0;break}}else s=j}else{o=i;s=h&8}while(0);t=k|s;p=(t|0)!=0&1;q=(o|32|0)==102;if(q){v=0;j=(m|0)>0?m:0}else{j=(m|0)<0?g:m;j=z0(j,((j|0)<0)<<31>>31,E)|0;n=E;if((n-j|0)<2)do{j=j+-1|0;a[j>>0]=48}while((n-j|0)<2);a[j+-1>>0]=(m>>31&2)+43;j=j+-2|0;a[j>>0]=o;v=j;j=n-j|0}j=C+1+k+p+j|0;A0(b,32,f,j,h);u0(b,B,C);A0(b,48,f,j,h^65536);if(q){o=x>>>0>D>>>0?D:x;s=G+9|0;p=s;q=G+8|0;n=o;do{m=z0(c[n>>2]|0,0,s)|0;if((n|0)==(o|0)){if((m|0)==(s|0)){a[q>>0]=48;m=q}}else if(m>>>0>G>>>0){G3(G|0,48,m-F|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}u0(b,m,p-m|0);n=n+4|0}while(n>>>0<=D>>>0);if(t|0)u0(b,150390,1);if(n>>>0>>0&(k|0)>0)while(1){m=z0(c[n>>2]|0,0,s)|0;if(m>>>0>G>>>0){G3(G|0,48,m-F|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}u0(b,m,(k|0)<9?k:9);n=n+4|0;m=k+-9|0;if(!(n>>>0>>0&(k|0)>9)){k=m;break}else k=m}A0(b,48,k+9|0,9,0)}else{t=u?w:x+4|0;if((k|0)>-1){u=G+9|0;s=(s|0)==0;g=u;p=0-F|0;q=G+8|0;o=x;do{m=z0(c[o>>2]|0,0,u)|0;if((m|0)==(u|0)){a[q>>0]=48;m=q}do if((o|0)==(x|0)){n=m+1|0;u0(b,m,1);if(s&(k|0)<1){m=n;break}u0(b,150390,1);m=n}else{if(m>>>0<=G>>>0)break;G3(G|0,48,m+p|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}while(0);F=g-m|0;u0(b,m,(k|0)>(F|0)?F:k);k=k-F|0;o=o+4|0}while(o>>>0>>0&(k|0)>-1)}A0(b,48,k+18|0,18,0);u0(b,v,E-v|0)}A0(b,32,f,j,h^8192)}while(0);l=H;return ((j|0)<(f|0)?f:j)|0}function C0(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;z=c[j+4>>2]|0;return b|0}function D0(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(E0(e)|0)){g=c[f>>2]|0;h=5}else f=0;else h=5;a:do if((h|0)==5){j=e+20|0;i=c[j>>2]|0;f=i;if((g-i|0)>>>0>>0){f=nb[c[e+36>>2]&63](e,b,d)|0;break}b:do if((a[e+75>>0]|0)>-1){i=d;while(1){if(!i){h=0;g=b;break b}g=i+-1|0;if((a[b+g>>0]|0)==10)break;else i=g}f=nb[c[e+36>>2]&63](e,b,i)|0;if(f>>>0>>0)break a;h=i;g=b+i|0;d=d-i|0;f=c[j>>2]|0}else{h=0;g=b}while(0);E3(f|0,g|0,d|0)|0;c[j>>2]=(c[j>>2]|0)+d;f=h+d|0}while(0);return f|0}function E0(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;e=c[b+44>>2]|0;c[b+28>>2]=e;c[b+20>>2]=e;c[b+16>>2]=e+(c[b+48>>2]|0);b=0}else{c[b>>2]=d|32;b=-1}return b|0}function F0(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+16>>2]|0)-f|0;a=a>>>0>d>>>0?d:a;E3(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function G0(b){b=b|0;var c=0,d=0,e=0,f=0;e=a[b>>0]|0;c=1;d=150392;f=97;while(1){if(e<<24>>24==f<<24>>24?(a$(b,d)|0)==0:0)break;d=d+6|0;f=a[d>>0]|0;if(!(f<<24>>24)){c=0;break}else c=c+1|0}return c|0}function H0(a){a=a|0;var b=0;b=(o0(a)|0)==0;return (b?a:a&95)|0}function I0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;do if(b>>>0>6)d=0;else{ta(187576);if((b|0)!=6){d=J0(b,d)|0;La(187576);break}if(!d){d=194052;b=0}else{b=g;e=150465;f=b+16|0;do{a[b>>0]=a[e>>0]|0;b=b+1|0;e=e+1|0}while((b|0)<(f|0));f=0;do{b=U_(d,59)|0;e=b-d|0;if((e|0)<16){E3(g|0,d|0,e|0)|0;a[g+e>>0]=0;d=(a[b>>0]|0)==0?d:b+1|0}J0(f,g)|0;f=f+1|0}while((f|0)!=6);d=194052;b=0}while(1){f=c[187536+(b<<2)>>2]|0;f=f|0?f+8|0:150481;e=V_(f)|0;E3(d|0,f|0,e|0)|0;f=d+e|0;a[f>>0]=59;b=b+1|0;if((b|0)==6)break;else d=d+(e+1)|0}a[f>>0]=0;La(187576);d=194052}while(0);l=h;return d|0}function J0(a,b){a=a|0;b=b|0;if(!b)a=c[187536+(a<<2)>>2]|0;else{b=$$(a,b)|0;c[187536+(a<<2)>>2]=b;a=b}return (a|0?a+8|0:150481)|0}function K0(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)b=0;else{while(1){e=a[b>>0]|0;f=a[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){b=0;break a}else{b=b+1|0;c=c+1|0}}b=(e&255)-(f&255)|0}while(0);return b|0}function L0(a){a=a|0;return M0(a)|0}function M0(a){a=a|0;return A3(a|0)|0}function N0(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((c[f+76>>2]|0)>-1)m=s0(f)|0;else m=0;g=e+-1|0;if((e|0)<2){n=f+74|0;l=a[n>>0]|0;a[n>>0]=l+255|l;if(m|0)t0(f);if(!g)a[b>>0]=0;else b=0}else{a:do if(g){k=f+4|0;l=f+8|0;e=b;while(1){h=c[k>>2]|0;o=h;p=(c[l>>2]|0)-o|0;i=C$(h,10,p)|0;j=(i|0)==0;i=j?p:1-o+i|0;i=i>>>0>>0?i:g;E3(e|0,h|0,i|0)|0;h=(c[k>>2]|0)+i|0;c[k>>2]=h;e=e+i|0;i=g-i|0;if(!(j&(i|0)!=0)){n=17;break a}if(h>>>0>=(c[l>>2]|0)>>>0){g=I$(f)|0;if((g|0)<0)break;else j=g}else{c[k>>2]=h+1;j=d[h>>0]|0}g=i+-1|0;h=e+1|0;a[e>>0]=j;if(!((g|0)!=0&(j&255|0)!=10)){e=h;n=17;break a}else e=h}if((e|0)!=(b|0)?(c[f>>2]&16|0)!=0:0)n=17;else b=0}else{e=b;n=17}while(0);if((n|0)==17)if(!b)b=0;else a[e>>0]=0;if(m)t0(f)}return b|0}function O0(b,c){b=b|0;c=c|0;var d=0;d=a[c>>0]|0;do if(d<<24>>24){b=z$(b,d<<24>>24)|0;if(b){if(a[c+1>>0]|0)if(a[b+1>>0]|0){if(!(a[c+2>>0]|0)){b=P0(b,c)|0;break}if(a[b+2>>0]|0){if(!(a[c+3>>0]|0)){b=Q0(b,c)|0;break}if(a[b+3>>0]|0)if(!(a[c+4>>0]|0)){b=R0(b,c)|0;break}else{b=S0(b,c)|0;break}else b=0}else b=0}else b=0}else b=0}while(0);return b|0}function P0(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;g=(d[c>>0]|0)<<8|(d[c+1>>0]|0);f=d[b>>0]|0;while(1){c=b+1|0;e=a[c>>0]|0;if(!(e<<24>>24))break;f=f<<8&65280|e&255;if((f|0)==(g|0))break;else b=c}return (e<<24>>24?b:0)|0}function Q0(b,c){b=b|0;c=c|0;var e=0,f=0;f=(d[c+1>>0]|0)<<16|(d[c>>0]|0)<<24|(d[c+2>>0]|0)<<8;e=b+2|0;c=a[e>>0]|0;b=(d[b+1>>0]|0)<<16|(d[b>>0]|0)<<24|(c&255)<<8;if(!((b|0)==(f|0)|c<<24>>24==0))do{e=e+1|0;c=a[e>>0]|0;b=(b|c&255)<<8}while(!((b|0)==(f|0)|c<<24>>24==0));return (c<<24>>24?e+-2|0:0)|0}function R0(b,c){b=b|0;c=c|0;var e=0,f=0;f=(d[c+1>>0]|0)<<16|(d[c>>0]|0)<<24|(d[c+2>>0]|0)<<8|(d[c+3>>0]|0);c=b+3|0;e=a[c>>0]|0;b=(d[b+1>>0]|0)<<16|(d[b>>0]|0)<<24|(d[b+2>>0]|0)<<8|e&255;if(!(e<<24>>24==0|(b|0)==(f|0)))do{c=c+1|0;e=a[c>>0]|0;b=b<<8|e&255}while(!(e<<24>>24==0|(b|0)==(f|0)));return (e<<24>>24?c+-3|0:0)|0}function S0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+1056|0;t=v+1024|0;u=v;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t+16>>2]=0;c[t+20>>2]=0;c[t+24>>2]=0;c[t+28>>2]=0;e=a[d>>0]|0;a:do if(e<<24>>24){s=0;do{if(!(a[b+s>>0]|0)){e=0;break a}r=t+(((e&255)>>>5&255)<<2)|0;c[r>>2]=c[r>>2]|1<<(e&31);s=s+1|0;c[u+((e&255)<<2)>>2]=s;e=a[d+s>>0]|0}while(e<<24>>24!=0);m=s>>>0>1;if(m){f=0;k=-1;g=1;b:while(1){h=1;e=f;while(1){f=g;c:while(1){j=1;while(1){g=a[d+(j+k)>>0]|0;i=a[d+f>>0]|0;if(g<<24>>24!=i<<24>>24)break c;if((j|0)==(h|0))break;j=j+1|0;f=j+e|0;if(f>>>0>=s>>>0){n=h;e=k;break b}}e=h+e|0;f=e+1|0;if(f>>>0>=s>>>0){n=h;e=k;break b}}h=f-k|0;if((g&255)<=(i&255))break;g=f+1|0;if(g>>>0>=s>>>0){n=h;e=k;break b}else e=f}g=e+2|0;if(g>>>0>=s>>>0){n=1;break}else{f=e+1|0;k=e}}if(m){h=0;m=-1;i=1;while(1){f=1;g=h;while(1){h=i;d:while(1){k=1;while(1){i=a[d+(k+m)>>0]|0;j=a[d+h>>0]|0;if(i<<24>>24!=j<<24>>24)break d;if((k|0)==(f|0))break;k=k+1|0;h=k+g|0;if(h>>>0>=s>>>0){i=n;g=m;h=26;break a}}g=f+g|0;h=g+1|0;if(h>>>0>=s>>>0){i=n;g=m;h=26;break a}}f=h-m|0;if((i&255)>=(j&255))break;i=h+1|0;if(i>>>0>=s>>>0){i=n;g=m;h=26;break a}else g=h}i=g+2|0;if(i>>>0>=s>>>0){i=n;f=1;h=26;break}else{h=g+1|0;m=g}}}else{i=n;f=1;g=-1;h=26}}else{i=1;e=-1;f=1;g=-1;h=26}}else{i=1;e=-1;s=0;f=1;g=-1;h=26}while(0);e:do if((h|0)==26){q=(g+1|0)>>>0>(e+1|0)>>>0;f=q?f:i;q=q?g:e;r=q+1|0;if(!(K0(d,d+f|0,r)|0))p=s-f|0;else{f=s-q+-1|0;p=0;f=(q>>>0>f>>>0?q:f)+1|0}k=s|63;m=s+-1|0;n=(p|0)!=0;o=s-f|0;e=b;j=0;g=b;while(1){h=e;do if((g-h|0)>>>0>>0){i=C$(g,0,k)|0;if(i)if((i-h|0)>>>0>>0){e=0;break e}else break;else{i=g+k|0;break}}else i=g;while(0);g=a[e+m>>0]|0;f:do if(!(1<<(g&31)&c[t+(((g&255)>>>5&255)<<2)>>2])){h=0;g=s}else{g=s-(c[u+((g&255)<<2)>>2]|0)|0;if(g|0){h=0;g=n&(j|0)!=0&g>>>0>>0?o:g;break}g=r>>>0>j>>>0?r:j;h=a[d+g>>0]|0;g:do if(!(h<<24>>24))g=r;else{while(1){if(h<<24>>24!=(a[e+g>>0]|0))break;g=g+1|0;h=a[d+g>>0]|0;if(!(h<<24>>24)){g=r;break g}}h=0;g=g-q|0;break f}while(0);while(1){if(g>>>0<=j>>>0)break e;g=g+-1|0;if((a[d+g>>0]|0)!=(a[e+g>>0]|0)){h=p;g=f;break}}}while(0);e=e+g|0;j=h;g=i}}while(0);l=v;return e|0}function T0(a,b,c){a=a|0;b=b|0;c=c|0;U0(a,b,c)|0;return a|0}function U0(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;a:do if(!((g^b)&3)){f=(e|0)!=0;if(f&(g&3|0)!=0)do{g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0}while(f&(d&3|0)!=0);if(f){if(a[d>>0]|0){b:do if(e>>>0>3){f=d;while(1){d=c[f>>2]|0;if((d&-2139062144^-2139062144)&d+-16843009|0){d=f;break b}c[b>>2]=d;e=e+-4|0;d=f+4|0;b=b+4|0;if(e>>>0>3)f=d;else break}}while(0);h=11}}else e=0}else h=11;while(0);c:do if((h|0)==11)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);G3(b|0,0,e|0)|0;return b|0}function V0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+32|0;f=g;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;e=a[d>>0]|0;do if(!(e<<24>>24))d=0;else{if(!(a[d+1>>0]|0)){d=b;while(1)if((a[d>>0]|0)==e<<24>>24)d=d+1|0;else break;d=d-b|0;break}do{h=f+(((e&255)>>>5&255)<<2)|0;c[h>>2]=c[h>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);e=a[b>>0]|0;a:do if(!(e<<24>>24))d=b;else{d=b;do{if(!(c[f+(((e&255)>>>5&255)<<2)>>2]&1<<(e&31)))break a;d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0)}while(0);d=d-b|0}while(0);l=g;return d|0}function W0(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=O_(a)|0;a=Ja(6,d|0)|0;a=M_((a|0)==-4?0:a)|0;l=b;return a|0}function X0(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=Y0(a,b,f)|0;l=e;return d|0}function Y0(a,b,c){a=a|0;b=b|0;c=c|0;return p0(a,2147483647,b,c)|0}function Z0(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+208|0;j=m+8|0;k=m;h=O(d,b)|0;i=k;c[i>>2]=1;c[i+4>>2]=0;a:do if(h|0){i=0-d|0;c[j+4>>2]=d;c[j>>2]=d;f=2;b=d;g=d;while(1){b=b+d+g|0;c[j+(f<<2)>>2]=b;if(b>>>0>>0){n=g;f=f+1|0;g=b;b=n}else break}g=a+h+i|0;if(g>>>0>a>>>0){h=g;f=1;b=1;do{do if((b&3|0)!=3){b=f+-1|0;if((c[j+(b<<2)>>2]|0)>>>0<(h-a|0)>>>0)_0(a,d,e,f,j);else a1(a,d,e,k,f,0,j);if((f|0)==1){b1(k,1);f=0;break}else{b1(k,b);f=1;break}}else{_0(a,d,e,f,j);$0(k,2);f=f+2|0}while(0);b=c[k>>2]|1;c[k>>2]=b;a=a+d|0}while(a>>>0>>0)}else{f=1;b=1}a1(a,d,e,k,f,0,j);g=k+4|0;while(1){if((f|0)==1&(b|0)==1){if(!(c[g>>2]|0))break a}else if((f|0)>=2){b1(k,2);n=f+-2|0;c[k>>2]=c[k>>2]^7;$0(k,1);a1(a+(0-(c[j+(n<<2)>>2]|0))+i|0,d,e,k,f+-1|0,1,j);b1(k,1);b=c[k>>2]|1;c[k>>2]=b;h=a+i|0;a1(h,d,e,k,n,1,j);a=h;f=n;continue}b=c1(k)|0;$0(k,b);a=a+i|0;f=b+f|0;b=c[k>>2]|0}}while(0);l=m;return}function _0(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+240|0;m=n;c[m>>2]=a;a:do if((e|0)>1){k=0-b|0;g=a;j=e;e=1;while(1){h=g+k|0;i=j+-2|0;g=h+(0-(c[f+(i<<2)>>2]|0))|0;if((lb[d&127](a,g)|0)>-1?(lb[d&127](a,h)|0)>-1:0)break a;a=e+1|0;e=m+(e<<2)|0;if((lb[d&127](g,h)|0)>-1){c[e>>2]=g;e=j+-1|0}else{c[e>>2]=h;g=h;e=i}if((e|0)<=1){e=a;break a}j=e;e=a;a=c[m>>2]|0}}else e=1;while(0);e1(b,m,e);l=n;return}function $0(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[f>>2]|0;c[a>>2]=e;c[f>>2]=0;b=b+-32|0;d=0}else{d=c[f>>2]|0;e=c[a>>2]|0}c[a>>2]=d<<32-b|e>>>b;c[f>>2]=d>>>b;return}function a1(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+240|0;n=p+232|0;o=p;q=c[e>>2]|0;c[n>>2]=q;j=c[e+4>>2]|0;k=n+4|0;c[k>>2]=j;c[o>>2]=a;a:do if((q|0)!=1|(j|0)!=0?(m=0-b|0,i=a+(0-(c[h+(f<<2)>>2]|0))|0,(lb[d&127](i,a)|0)>=1):0){e=1;g=(g|0)==0;j=i;while(1){if(g&(f|0)>1){g=a+m|0;i=c[h+(f+-2<<2)>>2]|0;if((lb[d&127](g,j)|0)>-1){i=10;break a}if((lb[d&127](g+(0-i)|0,j)|0)>-1){i=10;break a}}g=e+1|0;c[o+(e<<2)>>2]=j;q=c1(n)|0;$0(n,q);f=q+f|0;if(!((c[n>>2]|0)!=1|(c[k>>2]|0)!=0)){e=g;a=j;i=10;break a}a=j+(0-(c[h+(f<<2)>>2]|0))|0;if((lb[d&127](a,c[o>>2]|0)|0)<1){a=j;e=g;g=0;i=9;break}else{q=j;e=g;g=1;j=a;a=q}}}else{e=1;i=9}while(0);if((i|0)==9?(g|0)==0:0)i=10;if((i|0)==10){e1(b,o,e);_0(a,b,d,f,h)}l=p;return}function b1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[a>>2]|0;c[f>>2]=e;c[a>>2]=0;b=b+-32|0;d=0}else{d=c[a>>2]|0;e=c[f>>2]|0}c[f>>2]=d>>>(32-b|0)|e<>2]=d<>2]|0)+-1|0)|0;if(!b){b=d1(c[a+4>>2]|0)|0;return ((b|0)==0?0:b+32|0)|0}else return b|0;return 0}function d1(a){a=a|0;var b=0;if(a)if(!(a&1)){b=a;a=0;do{a=a+1|0;b=b>>>1}while(!(b&1|0))}else a=0;else a=32;return a|0}function e1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,a|0):0)while(1){f=a>>>0<256?a:256;E3(e|0,c[b>>2]|0,f|0)|0;e=0;do{i=b+(e<<2)|0;e=e+1|0;E3(c[i>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[i>>2]=(c[i>>2]|0)+f}while((e|0)!=(d|0));a=a-f|0;if(!a)break a;e=c[g>>2]|0}while(0);l=h;return}function f1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=q0(a,b,f)|0;l=e;return d|0}function g1(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;sa(0,e|0)|0;d=0;e=(c[e+4>>2]|0)*65537^(e>>>4)+b;while(1){a[b+d>>0]=(e&15)+65|e<<1&32;d=d+1|0;if((d|0)==6)break;else e=e>>>5}l=f;return b|0}function h1(a,b,c){a=a|0;b=b|0;c=c|0;c=E$(a,b,c,-2147483648,0)|0;return c|0}function i1(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;f=h;e=a[d>>0]|0;a:do if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){G3(f|0,0,32)|0;e=a[d>>0]|0;if(e<<24>>24)do{i=f+(((e&255)>>>5&255)<<2)|0;c[i>>2]=c[i>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);d=a[b>>0]|0;if(!(d<<24>>24))e=b;else{e=b;do{if(c[f+(((d&255)>>>5&255)<<2)>>2]&1<<(d&31)|0)break a;e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0)}}else g=3;while(0);if((g|0)==3)e=U_(b,e<<24>>24)|0;l=h;return e-b|0}function j1(b,d){b=b|0;d=d|0;var e=0;if(!b){b=c[46896]|0;if(!b)b=0;else e=3}else e=3;do if((e|0)==3){b=b+(V0(b,d)|0)|0;if(!(a[b>>0]|0)){c[46896]=0;b=0;break}d=b+(i1(b,d)|0)|0;c[46896]=d;if(!(a[d>>0]|0)){c[46896]=0;break}else{c[46896]=d+1;a[d>>0]=0;break}}while(0);return b|0}function k1(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=c&255;do{if(!d){c=0;break}d=d+-1|0;c=b+d|0}while((a[c>>0]|0)!=e<<24>>24);return c|0}function l1(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!b){b=c[e>>2]|0;if(!b)b=0;else f=3}else f=3;do if((f|0)==3){b=b+(V0(b,d)|0)|0;if(!(a[b>>0]|0)){c[e>>2]=0;b=0;break}d=b+(i1(b,d)|0)|0;c[e>>2]=d;if(!(a[d>>0]|0)){c[e>>2]=0;break}else{c[e>>2]=d+1;a[d>>0]=0;break}}while(0);return b|0}function m1(a){a=a|0;var b=0,c=0;b=(V_(a)|0)+1|0;c=B_(b)|0;if(!c)a=0;else a=E3(c|0,a|0,b|0)|0;return a|0}function n1(a,b){a=a|0;b=b|0;return k1(a,b,(V_(a)|0)+1|0)|0}function o1(a,b){a=a|0;b=b|0;a0(a+(V_(a)|0)|0,b)|0;return a|0}function p1(b,c){b=b|0;c=c|0;c=b+(i1(b,c)|0)|0;return (a[c>>0]|0?c:0)|0}function q1(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(s0(a)|0)==0;a=(c[a>>2]|0)>>>4&1}else a=(c[a>>2]|0)>>>4&1;return a|0}function r1(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((c[a+76>>2]|0)>-1)f=s0(a)|0;else f=0;s1(a);g=(c[a>>2]&1|0)!=0;if(!g){e=t1()|0;d=c[a+52>>2]|0;b=a+56|0;if(d|0)c[d+56>>2]=c[b>>2];b=c[b>>2]|0;if(b|0)c[b+52>>2]=d;if((c[e>>2]|0)==(a|0))c[e>>2]=b;u1()}b=v1(a)|0;b=kb[c[a+12>>2]&63](a)|0|b;d=c[a+92>>2]|0;if(d|0)C_(d);if(g){if(f|0)t0(a)}else C_(a);return b|0}function s1(a){a=a|0;var b=0;if(c[a+68>>2]|0){b=c[a+116>>2]|0;a=a+112|0;if(b|0)c[b+112>>2]=c[a>>2];a=c[a>>2]|0;if(!a)a=(x1()|0)+232|0;else a=a+116|0;c[a>>2]=b}return}function t1(){ta(187588);return 187596}function u1(){La(187588);return}function v1(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=w1(a)|0;break}d=(s0(a)|0)==0;b=w1(a)|0;if(!d)t0(a)}else{if(!(c[15685]|0))b=0;else b=v1(c[15685]|0)|0;a=c[(t1()|0)>>2]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=s0(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=w1(a)|0|b;if(d|0)t0(a);a=c[a+56>>2]|0}while((a|0)!=0);u1()}while(0);return b|0}function w1(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;h=a+28|0;if((c[b>>2]|0)>>>0>(c[h>>2]|0)>>>0?(nb[c[a+36>>2]&63](a,0,0)|0,(c[b>>2]|0)==0):0)a=-1;else{d=a+4|0;e=c[d>>2]|0;f=a+8|0;g=c[f>>2]|0;if(e>>>0>>0)nb[c[a+40>>2]&63](a,e-g|0,1)|0;c[a+16>>2]=0;c[h>>2]=0;c[b>>2]=0;c[f>>2]=0;c[d>>2]=0;a=0}return a|0}function x1(){return d$()|0}function y1(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+64|0;j=k+40|0;h=k+24|0;g=k+16|0;f=k;i=k+56|0;if(z$(150498,a[d>>0]|0)|0){e=B_(1156)|0;if(!e)e=0;else{G3(e|0,0,124)|0;if(!(z$(d,43)|0))c[e>>2]=(a[d>>0]|0)==114?8:4;if(z$(d,101)|0){c[f>>2]=b;c[f+4>>2]=2;c[f+8>>2]=1;Ea(221,f|0)|0}if((a[d>>0]|0)==97){c[g>>2]=b;c[g+4>>2]=3;d=Ea(221,g|0)|0;if(!(d&1024)){c[h>>2]=b;c[h+4>>2]=4;c[h+8>>2]=d|1024;Ea(221,h|0)|0}f=c[e>>2]|128;c[e>>2]=f}else f=c[e>>2]|0;c[e+60>>2]=b;c[e+44>>2]=e+132;c[e+48>>2]=1024;d=e+75|0;a[d>>0]=-1;if((f&8|0)==0?(c[j>>2]=b,c[j+4>>2]=21523,c[j+8>>2]=i,(Ia(54,j|0)|0)==0):0)a[d>>0]=10;c[e+32>>2]=15;c[e+36>>2]=18;c[e+40>>2]=16;c[e+12>>2]=17;if(!(c[46875]|0))c[e+76>>2]=-1;z1(e)|0}}else{c[(N_()|0)>>2]=22;e=0}l=k;return e|0}function z1(a){a=a|0;var b=0,d=0;b=t1()|0;c[a+56>>2]=c[b>>2];d=c[b>>2]|0;if(d|0)c[d+52>>2]=a;c[b>>2]=a;u1();return a|0}function A1(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;a:do if(!e)b=0;else{do if(f|0){i=(b|0)==0?g:b;b=a[e>>0]|0;if(b<<24>>24>-1){c[i>>2]=b&255;b=b<<24>>24!=0&1;break a}h=(c[c[(B1()|0)+188>>2]>>2]|0)==0;b=a[e>>0]|0;if(h){c[i>>2]=b<<24>>24&57343;b=1;break a}b=(b&255)+-194|0;if(b>>>0<=50){g=e+1|0;h=c[62280+(b<<2)>>2]|0;if(f>>>0<4?h&-2147483648>>>((f*6|0)+-6|0)|0:0)break;b=d[g>>0]|0;f=b>>>3;if((f+-16|f+(h>>26))>>>0<=7){b=b+-128|h<<6;if((b|0)>=0){c[i>>2]=b;b=2;break a}g=(d[e+2>>0]|0)+-128|0;if(g>>>0<=63){g=g|b<<6;if((g|0)>=0){c[i>>2]=g;b=3;break a}b=(d[e+3>>0]|0)+-128|0;if(b>>>0<=63){c[i>>2]=b|g<<6;b=4;break a}}}}}while(0);c[(N_()|0)>>2]=84;b=-1}while(0);l=j;return b|0}function B1(){return d$()|0}function C1(a,b){a=a|0;b=b|0;var c=0;c=V_(a)|0;return ((D1(a,1,c,b)|0)!=(c|0))<<31>>31|0}function D1(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=O(d,b)|0;d=(b|0)==0?0:d;if((c[e+76>>2]|0)>-1){g=(s0(e)|0)==0;a=D0(a,f,e)|0;if(!g)t0(e)}else a=D0(a,f,e)|0;if((a|0)!=(f|0))d=(a>>>0)/(b>>>0)|0;return d|0}function E1(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;j=m;k=e&255;a[j>>0]=k;g=b+16|0;h=c[g>>2]|0;if(!h)if(!(E0(b)|0)){h=c[g>>2]|0;i=4}else f=-1;else i=4;do if((i|0)==4){i=b+20|0;g=c[i>>2]|0;if(g>>>0>>0?(f=e&255,(f|0)!=(a[b+75>>0]|0)):0){c[i>>2]=g+1;a[g>>0]=k;break}if((nb[c[b+36>>2]&63](b,j,1)|0)==1)f=d[j>>0]|0;else f=-1}while(0);l=m;return f|0}function F1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=a;c[f+4>>2]=b;c[f+8>>2]=d;d=M_(Fa(3,f|0)|0)|0;l=e;return d|0}function G1(){var a=0,b=0;b=l;l=l+16|0;a=Da(20,b|0)|0;l=b;return a|0}function H1(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;d=b;e=150483;f=d+15|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));if(!c){a[b+14>>0]=48;a[b+15>>0]=0}else{e=c;d=14;while(1){d=d+1|0;if(e>>>0<10)break;else e=(e>>>0)/10|0}a[b+d>>0]=0;while(1){d=d+-1|0;a[b+d>>0]=(c>>>0)%10|0|48;if(c>>>0<10)break;else c=(c>>>0)/10|0}}return}function I1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g+40|0;e=g+8|0;d=g;c[d>>2]=a;c[d+4>>2]=b;d=Ca(197,d|0)|0;if((d|0)==-9?(c[e>>2]=a,c[e+4>>2]=1,(Ea(221,e|0)|0)>=0):0){H1(e,a);c[f>>2]=e;c[f+4>>2]=b;b=M_(Ba(195,f|0)|0)|0}else b=M_(d)|0;l=g;return b|0}function J1(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=M_(Ga(33,e|0)|0)|0;l=d;return b|0}function K1(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+48|0;h=i+32|0;g=i+16|0;e=i;if(z$(150498,a[d>>0]|0)|0){f=L1(d)|0;c[e>>2]=b;c[e+4>>2]=f|32768;c[e+8>>2]=438;e=M_(Ha(5,e|0)|0)|0;if((e|0)>=0){if(f&524288|0){c[g>>2]=e;c[g+4>>2]=2;c[g+8>>2]=1;Ea(221,g|0)|0}b=y1(e,d)|0;if(!b){c[h>>2]=e;Ja(6,h|0)|0;b=0}}else b=0}else{c[(N_()|0)>>2]=22;b=0}l=i;return b|0}function L1(b){b=b|0;var c=0,d=0,e=0;d=(z$(b,43)|0)==0;c=a[b>>0]|0;d=d?c<<24>>24!=114&1:2;e=(z$(b,120)|0)==0;d=e?d:d|128;b=(z$(b,101)|0)==0;b=b?d:d|524288;b=c<<24>>24==114?b:b|64;b=c<<24>>24==119?b|512:b;return (c<<24>>24==97?b|1024:b)|0}function M1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=N1(a,b,f)|0;l=e;return d|0}function N1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+128|0;e=g;f=e;h=f+124|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));c[e+32>>2]=38;c[e+44>>2]=a;c[e+76>>2]=-1;c[e+84>>2]=a;h=P1(e,b,d)|0;l=g;return h|0}function O1(a,b,c){a=a|0;b=b|0;c=c|0;return X1(a,b,c)|0}function P1(b,e,f){b=b|0;e=e|0;f=f|0;var i=0,j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=l;l=l+288|0;F=L+8|0;G=L+17|0;H=L;I=L+16|0;if((c[b+76>>2]|0)>-1)K=s0(b)|0;else K=0;i=a[e>>0]|0;a:do if(i<<24>>24){y=b+4|0;A=b+100|0;B=b+108|0;C=b+8|0;D=G+10|0;E=G+33|0;x=F+4|0;p=e;u=0;e=0;j=0;k=i;i=0;b:while(1){c:do if(!(A$(k&255)|0)){k=(a[p>>0]|0)==37;d:do if(k){m=p+1|0;n=a[m>>0]|0;e:do switch(n<<24>>24){case 37:break d;case 42:{w=0;m=p+2|0;break}default:{if(D$(n&255)|0?(a[p+2>>0]|0)==36:0){w=Q1(f,(d[m>>0]|0)+-48|0)|0;m=p+3|0;break e}v=(c[f>>2]|0)+(4-1)&~(4-1);w=c[v>>2]|0;c[f>>2]=v+4}}while(0);if(!(D$(d[m>>0]|0)|0))s=0;else{k=0;do{k=(k*10|0)+-48+(d[m>>0]|0)|0;m=m+1|0}while((D$(d[m>>0]|0)|0)!=0);s=k}p=a[m>>0]|0;n=m+1|0;if(p<<24>>24==109){k=(w|0)!=0&1;j=0;m=n;p=a[n>>0]|0;i=0}else k=0;n=m+1|0;switch(p<<24>>24){case 104:{v=(a[n>>0]|0)==104;p=v?-2:-1;m=v?m+2|0:n;break}case 108:{v=(a[n>>0]|0)==108;p=v?3:1;m=v?m+2|0:n;break}case 106:{p=3;m=n;break}case 116:case 122:{p=1;m=n;break}case 76:{p=2;m=n;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{p=0;break}default:{J=136;break b}}r=d[m>>0]|0;t=(r&47|0)==3;r=t?r|32:r;t=t?1:p;q=r&255;switch(q<<24>>24){case 99:{s=(s|0)>1?s:1;break}case 91:break;case 110:{R1(w,t,u,((u|0)<0)<<31>>31);n=u;break c}default:{F$(b,0);do{n=c[y>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[y>>2]=n+1;n=d[n>>0]|0}else n=H$(b)|0}while((A$(n)|0)!=0);if(!(c[A>>2]|0))n=c[y>>2]|0;else{n=(c[y>>2]|0)+-1|0;c[y>>2]=n}u=(c[B>>2]|0)+u+n-(c[C>>2]|0)|0}}F$(b,s);p=c[y>>2]|0;n=c[A>>2]|0;if(p>>>0>>0)c[y>>2]=p+1;else{if((H$(b)|0)<0){J=136;break b}n=c[A>>2]|0}if(n|0)c[y>>2]=(c[y>>2]|0)+-1;f:do switch(q<<24>>24){case 91:case 99:case 115:{v=(r|0)==99;g:do if((r|16|0)==115){G3(G|0,-1,257)|0;a[G>>0]=0;if((r|0)==115){a[E>>0]=0;a[D>>0]=0;a[D+1>>0]=0;a[D+2>>0]=0;a[D+3>>0]=0;a[D+4>>0]=0}}else{n=m+1|0;q=(a[n>>0]|0)==94;r=q&1;m=q?m+2|0:n;G3(G|0,r|0,257)|0;a[G>>0]=0;n=a[m>>0]|0;switch(n<<24>>24){case 45:{n=46;J=65;break}case 93:{n=94;J=65;break}default:{}}while(1){if((J|0)==65){J=0;a[G+n>>0]=r^1;n=m+1|0;m=n;n=a[n>>0]|0}h:do switch(n<<24>>24){case 0:{J=136;break b}case 93:break g;case 45:{q=m+1|0;n=a[q>>0]|0;switch(n<<24>>24){case 93:case 0:{n=45;break h}default:{}}m=a[m+-1>>0]|0;if((m&255)<(n&255)){p=(r^1)&255;m=m&255;do{m=m+1|0;a[G+m>>0]=p;n=a[q>>0]|0}while((m|0)<(n&255|0));m=q}else m=q;break}default:{}}while(0);n=(n&255)+1|0;J=65}}while(0);n=v?s+1|0:31;r=(t|0)==1;t=(k|0)!=0;i:do if(r){if(t){i=B_(n<<2)|0;if(!i){j=0;i=0;J=136;break b}}else i=w;c[F>>2]=0;c[x>>2]=0;q=n;j=0;j:while(1){p=(i|0)==0;do{k:while(1){n=c[y>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[y>>2]=n+1;n=d[n>>0]|0}else n=H$(b)|0;if(!(a[G+(n+1)>>0]|0))break j;a[I>>0]=n;switch(W$(H,I,1,F)|0){case -1:{j=0;J=136;break b}case -2:break;default:break k}}if(!p){c[i+(j<<2)>>2]=c[H>>2];j=j+1|0}}while(!(t&(j|0)==(q|0)));j=q<<1|1;n=E_(i,j<<2)|0;if(!n){j=0;J=136;break b}else{p=q;q=j;i=n;j=p}}if(!(S1(F)|0)){j=0;J=136;break b}else{q=j;j=0;p=i}}else{if(t){j=B_(n)|0;if(!j){j=0;i=0;J=136;break b}else{p=n;i=0}while(1){do{n=c[y>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[y>>2]=n+1;n=d[n>>0]|0}else n=H$(b)|0;if(!(a[G+(n+1)>>0]|0)){q=i;p=0;i=0;break i}a[j+i>>0]=n;i=i+1|0}while((i|0)!=(p|0));i=p<<1|1;n=E_(j,i)|0;if(!n){i=0;J=136;break b}else{q=p;p=i;j=n;i=q}}}if(!w)while(1){i=c[y>>2]|0;if(i>>>0<(c[A>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=H$(b)|0;if(!(a[G+(i+1)>>0]|0)){q=0;j=0;p=0;i=0;break i}}else j=0;while(1){i=c[y>>2]|0;if(i>>>0<(c[A>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=H$(b)|0;if(!(a[G+(i+1)>>0]|0)){q=j;j=w;p=0;i=0;break i}a[w+j>>0]=i;j=j+1|0}}while(0);if(!(c[A>>2]|0))n=c[y>>2]|0;else{n=(c[y>>2]|0)+-1|0;c[y>>2]=n}n=n-(c[C>>2]|0)+(c[B>>2]|0)|0;if(!n)break b;if(!((n|0)==(s|0)|v^1))break b;do if(t)if(r){c[w>>2]=p;break}else{c[w>>2]=j;break}while(0);if(!v){if(p|0)c[p+(q<<2)>>2]=0;if(!j){j=0;break f}a[j+q>>0]=0}break}case 120:case 88:case 112:{n=16;J=124;break}case 111:{n=8;J=124;break}case 117:case 100:{n=10;J=124;break}case 105:{n=0;J=124;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{o=+T1(b,t,0);if((c[B>>2]|0)==((c[C>>2]|0)-(c[y>>2]|0)|0))break b;if(w)switch(t|0){case 0:{g[w>>2]=o;break f}case 1:{h[w>>3]=o;break f}case 2:{h[w>>3]=o;break f}default:break f}break}default:{}}while(0);do if((J|0)==124){J=0;n=G$(b,n,0,-1,-1)|0;if((c[B>>2]|0)==((c[C>>2]|0)-(c[y>>2]|0)|0))break b;if((w|0)!=0&(r|0)==112){c[w>>2]=n;break}else{R1(w,t,n,z);break}}while(0);e=e+((w|0)!=0&1)|0;n=(c[B>>2]|0)+u+(c[y>>2]|0)-(c[C>>2]|0)|0;break c}while(0);m=p+(k&1)|0;F$(b,0);k=c[y>>2]|0;if(k>>>0<(c[A>>2]|0)>>>0){c[y>>2]=k+1;k=d[k>>0]|0}else k=H$(b)|0;if((k|0)!=(d[m>>0]|0)){J=22;break b}n=u+1|0}else{m=p;while(1){k=m+1|0;if(!(A$(d[k>>0]|0)|0))break;else m=k}F$(b,0);do{k=c[y>>2]|0;if(k>>>0<(c[A>>2]|0)>>>0){c[y>>2]=k+1;k=d[k>>0]|0}else k=H$(b)|0}while((A$(k)|0)!=0);if(!(c[A>>2]|0))k=c[y>>2]|0;else{k=(c[y>>2]|0)+-1|0;c[y>>2]=k}n=(c[B>>2]|0)+u+k-(c[C>>2]|0)|0}while(0);p=m+1|0;k=a[p>>0]|0;if(!(k<<24>>24))break a;else u=n}if((J|0)==22){if(c[A>>2]|0)c[y>>2]=(c[y>>2]|0)+-1;if((e|0)!=0|(k|0)>-1)break;else{e=0;J=137}}else if((J|0)==136)if(!e){e=k;J=137}if((J|0)==137){k=e;e=-1}if(k){C_(j);C_(i)}}else e=0;while(0);if(K|0)t0(b);l=L;return e|0}function Q1(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;c[d>>2]=c[a>>2];while(1){f=(c[d>>2]|0)+(4-1)&~(4-1);a=c[f>>2]|0;c[d>>2]=f+4;if(b>>>0>1)b=b+-1|0;else break}l=e;return a|0}function R1(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;a:do if(d|0)switch(e|0){case -2:{a[d>>0]=f;break a}case -1:{b[d>>1]=f;break a}case 0:{c[d>>2]=f;break a}case 1:{c[d>>2]=f;break a}case 3:{e=d;c[e>>2]=f;c[e+4>>2]=g;break a}default:break a}while(0);return}function S1(a){a=a|0;if(!a)a=1;else a=(c[a>>2]|0)==0&1;return a|0}function T1(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;switch(e|0){case 0:{l=-149;m=24;j=4;break}case 1:{l=-1074;m=53;j=4;break}case 2:{l=-1074;m=53;j=4;break}default:g=0.0}a:do if((j|0)==4){o=b+4|0;n=b+100|0;do{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=H$(b)|0}while((A$(e)|0)!=0);b:do switch(e|0){case 43:case 45:{i=1-(((e|0)==45&1)<<1)|0;e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;h=d[e>>0]|0;break b}else{h=H$(b)|0;break b}}default:{h=e;i=1}}while(0);e=0;do{if((h|32|0)!=(a[150502+e>>0]|0))break;do if(e>>>0<7){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=H$(b)|0;break}}while(0);e=e+1|0}while(e>>>0<8);c:do switch(e|0){case 8:break;case 3:{j=23;break}default:{k=(f|0)!=0;if(k&e>>>0>3)if((e|0)==8)break c;else{j=23;break c}d:do if(!e){e=0;do{if((h|32|0)!=(a[150511+e>>0]|0))break d;do if(e>>>0<2){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=H$(b)|0;break}}while(0);e=e+1|0}while(e>>>0<3)}while(0);switch(e|0){case 3:{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=H$(b)|0;if((e|0)==40)e=1;else{if(!(c[n>>2]|0)){g=s;break a}c[o>>2]=(c[o>>2]|0)+-1;g=s;break a}while(1){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0}else h=H$(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h|0)==95|(h+-97|0)>>>0<26):0)break;e=e+1|0}if((h|0)==41){g=s;break a}h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!k){c[(N_()|0)>>2]=22;F$(b,0);g=0.0;break a}if(!e){g=s;break a}while(1){e=e+-1|0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!e){g=s;break a}}}case 0:{if((h|0)==48){e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=H$(b)|0;if((e|32|0)==120){g=+U1(b,m,l,i,f);break a}if(!(c[n>>2]|0))e=48;else{c[o>>2]=(c[o>>2]|0)+-1;e=48}}else e=h;g=+V1(b,e,m,l,i,f);break a}default:{if(c[n>>2]|0)c[o>>2]=(c[o>>2]|0)+-1;c[(N_()|0)>>2]=22;F$(b,0);g=0.0;break a}}}}while(0);if((j|0)==23){h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if((f|0)!=0&e>>>0>3)do{if(!h)c[o>>2]=(c[o>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}g=+(i|0)*t}while(0);return +g}function U1(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=a+4|0;i=c[y>>2]|0;x=a+100|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;j=d[i>>0]|0;l=0}else{j=H$(a)|0;l=0}a:while(1){switch(j|0){case 46:{w=8;break a}case 48:break;default:{s=0;n=0;o=1.0;h=0.0;i=0;m=j;t=l;v=0;u=0;l=0;j=0;break a}}i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;j=d[i>>0]|0;l=1;continue}else{j=H$(a)|0;l=1;continue}}if((w|0)==8){i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;j=d[i>>0]|0}else j=H$(a)|0;if((j|0)==48){l=0;j=0;do{i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;m=d[i>>0]|0}else m=H$(a)|0;l=r3(l|0,j|0,-1,-1)|0;j=z}while((m|0)==48);s=1;n=0;o=1.0;h=0.0;i=0;t=1;v=0;u=0}else{s=1;n=0;o=1.0;h=0.0;i=0;m=j;t=l;v=0;u=0;l=0;j=0}}while(1){q=m+-48|0;p=m|32;if(q>>>0>=10){r=(m|0)==46;if(!(r|(p+-97|0)>>>0<6))break;if(r)if(!s){s=1;k=o;r=t;l=u;j=v;q=u;p=v}else{m=46;break}else w=20}else w=20;if((w|0)==20){w=0;m=(m|0)>57?p+-87|0:q;do if(!((v|0)<0|(v|0)==0&u>>>0<8))if((v|0)<0|(v|0)==0&u>>>0<14){o=o*.0625;k=o;h=h+o*+(m|0);break}else{t=(n|0)!=0|(m|0)==0;n=t?n:1;k=o;h=t?h:h+o*.5;break}else{k=o;i=m+(i<<4)|0}while(0);q=r3(u|0,v|0,1,0)|0;r=1;p=z}m=c[y>>2]|0;if(m>>>0<(c[x>>2]|0)>>>0){c[y>>2]=m+1;o=k;m=d[m>>0]|0;t=r;v=p;u=q;continue}else{o=k;m=H$(a)|0;t=r;v=p;u=q;continue}}do if(!t){i=(c[x>>2]|0)==0;if(!i)c[y>>2]=(c[y>>2]|0)+-1;if(g){if(!i)c[y>>2]=(c[y>>2]|0)+-1;if(!((s|0)==0|i))c[y>>2]=(c[y>>2]|0)+-1}else F$(a,0);h=+(f|0)*0.0}else{p=(s|0)==0;q=p?u:l;p=p?v:j;if((v|0)<0|(v|0)==0&u>>>0<8){l=u;j=v;while(1){i=i<<4;w=l;l=r3(l|0,j|0,1,0)|0;if(!((j|0)<0|(j|0)==0&w>>>0<7)){n=i;break}else j=z}}else n=i;if((m|32|0)==112){j=W1(a,g)|0;i=z;if((j|0)==0&(i|0)==-2147483648){if(!g){F$(a,0);h=0.0;break}if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}}}else if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}l=z3(q|0,p|0,2)|0;l=r3(l|0,z|0,-32,-1)|0;l=r3(l|0,z|0,j|0,i|0)|0;i=z;if(!n){h=+(f|0)*0.0;break}y=0-e|0;g=((y|0)<0)<<31>>31;if((i|0)>(g|0)|(i|0)==(g|0)&l>>>0>y>>>0){c[(N_()|0)>>2]=34;h=+(f|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}y=e+-106|0;g=((y|0)<0)<<31>>31;if((i|0)<(g|0)|(i|0)==(g|0)&l>>>0>>0){c[(N_()|0)>>2]=34;h=+(f|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if((n|0)>-1){j=n;do{y=!(h>=.5);j=j<<1|(y^1)&1;h=h+(y?h:h+-1.0);l=r3(l|0,i|0,-1,-1)|0;i=z}while((j|0)>-1);o=h;m=j}else{o=h;m=n}y=((b|0)<0)<<31>>31;e=s3(32,0,e|0,((e|0)<0)<<31>>31|0)|0;i=r3(e|0,z|0,l|0,i|0)|0;e=z;if((e|0)<(y|0)|(e|0)==(y|0)&i>>>0>>0)if((i|0)>0)w=59;else{j=0;i=84;w=61}else{i=b;w=59}if((w|0)==59)if((i|0)<53){j=i;i=84-i|0;w=61}else{k=0.0;h=+(f|0)}if((w|0)==61){h=+(f|0);k=+o$(+l$(1.0,i),h);i=j}f=(m&1|0)==0&(o!=0.0&(i|0)<32);h=(f?0.0:o)*h+(k+h*+((m+(f&1)|0)>>>0))-k;if(!(h!=0.0))c[(N_()|0)>>2]=34;h=+p$(h,l)}while(0);return +h}function V1(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0;J=l;l=l+512|0;G=J;H=f+e|0;I=0-H|0;D=a+4|0;E=a+100|0;k=0;a:while(1){switch(b|0){case 46:{A=6;break a}case 48:break;default:{v=0;p=k;q=0;o=0;break a}}b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0;k=1;continue}else{b=H$(a)|0;k=1;continue}}if((A|0)==6){b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=H$(a)|0;if((b|0)==48){k=0;b=0;while(1){k=r3(k|0,b|0,-1,-1)|0;o=z;b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=H$(a)|0;if((b|0)==48)b=o;else{v=1;p=1;q=k;break}}}else{v=1;p=k;q=0;o=0}}c[G>>2]=0;n=b+-48|0;m=(b|0)==46;b:do if(m|n>>>0<10){C=G+496|0;w=0;k=0;u=0;x=v;y=p;A=n;p=0;n=0;c:while(1){do if(m)if(!x){x=1;q=p;o=n}else break c;else{p=r3(p|0,n|0,1,0)|0;n=z;v=(b|0)!=48;if((k|0)>=125){if(!v)break;c[C>>2]=c[C>>2]|1;break}m=G+(k<<2)|0;if(!w)b=A;else b=b+-48+((c[m>>2]|0)*10|0)|0;c[m>>2]=b;w=w+1|0;y=(w|0)==9;w=y?0:w;k=k+(y&1)|0;u=v?p:u;y=1}while(0);b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=H$(a)|0;A=b+-48|0;m=(b|0)==46;if(!(m|A>>>0<10)){v=x;m=y;A=29;break b}}b=w;m=(y|0)!=0;A=37}else{w=0;k=0;u=0;m=p;p=0;n=0;A=29}while(0);do if((A|0)==29){C=(v|0)==0;q=C?p:q;o=C?n:o;m=(m|0)!=0;if(!(m&(b|32|0)==101))if((b|0)>-1){b=w;A=37;break}else{b=w;A=39;break}m=W1(a,h)|0;b=z;if((m|0)==0&(b|0)==-2147483648){if(!h){F$(a,0);i=0.0;break}if(!(c[E>>2]|0)){m=0;b=0}else{c[D>>2]=(c[D>>2]|0)+-1;m=0;b=0}}y=r3(m|0,b|0,q|0,o|0)|0;b=w;o=z;A=41}while(0);if((A|0)==37)if(c[E>>2]|0){c[D>>2]=(c[D>>2]|0)+-1;if(m){y=q;A=41}else A=40}else A=39;if((A|0)==39)if(m){y=q;A=41}else A=40;do if((A|0)==40){c[(N_()|0)>>2]=22;F$(a,0);i=0.0}else if((A|0)==41){m=c[G>>2]|0;if(!m){i=+(g|0)*0.0;break}if(((n|0)<0|(n|0)==0&p>>>0<10)&((y|0)==(p|0)&(o|0)==(n|0))?(e|0)>30|(m>>>e|0)==0:0){i=+(g|0)*+(m>>>0);break}a=(f|0)/-2|0;E=((a|0)<0)<<31>>31;if((o|0)>(E|0)|(o|0)==(E|0)&y>>>0>a>>>0){c[(N_()|0)>>2]=34;i=+(g|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}a=f+-106|0;E=((a|0)<0)<<31>>31;if((o|0)<(E|0)|(o|0)==(E|0)&y>>>0>>0){c[(N_()|0)>>2]=34;i=+(g|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(b){if((b|0)<9){n=G+(k<<2)|0;m=c[n>>2]|0;while(1){m=m*10|0;if((b|0)>=8)break;else b=b+1|0}c[n>>2]=m}k=k+1|0}if((u|0)<9?(u|0)<=(y|0)&(y|0)<18:0){if((y|0)==9){i=+(g|0)*+((c[G>>2]|0)>>>0);break}if((y|0)<9){i=+(g|0)*+((c[G>>2]|0)>>>0)/+(c[63608+(8-y<<2)>>2]|0);break}a=e+27+(O(y,-3)|0)|0;b=c[G>>2]|0;if((a|0)>30|(b>>>a|0)==0){i=+(g|0)*+(b>>>0)*+(c[63608+(y+-10<<2)>>2]|0);break}}b=(y|0)%9|0;if(!b){b=0;n=0}else{u=(y|0)>-1?b:b+9|0;p=c[63608+(8-u<<2)>>2]|0;if(k){q=1e9/(p|0)|0;n=0;o=0;m=y;b=0;do{D=G+(b<<2)|0;E=c[D>>2]|0;a=((E>>>0)/(p>>>0)|0)+n|0;c[D>>2]=a;n=O(q,(E>>>0)%(p>>>0)|0)|0;a=(b|0)==(o|0)&(a|0)==0;m=a?m+-9|0:m;o=a?o+1&127:o;b=b+1|0}while((b|0)!=(k|0));if(!n)n=o;else{c[G+(k<<2)>>2]=n;n=o;k=k+1|0}}else{n=0;k=0;m=y}b=0;y=9-u+m|0}d:while(1){u=(y|0)<18;v=(y|0)==18;w=G+(n<<2)|0;while(1){if(!u){if(!v){m=y;break d}if((c[w>>2]|0)>>>0>=9007199){m=18;break d}}m=0;x=k;k=k+127|0;while(1){o=k&127;p=G+(o<<2)|0;k=z3(c[p>>2]|0,0,29)|0;k=r3(k|0,z|0,m|0,0)|0;m=z;if(m>>>0>0|(m|0)==0&k>>>0>1e9){q=v3(k|0,m|0,1e9,0)|0;k=w3(k|0,m|0,1e9,0)|0}else q=0;c[p>>2]=k;a=(o|0)==(n|0);x=(k|0)==0&(((o|0)!=(x+127&127|0)|a)^1)?o:x;if(a)break;else{m=q;k=o+-1|0}}b=b+-29|0;if(q|0)break;else k=x}n=n+127&127;k=x+127&127;m=G+((x+126&127)<<2)|0;if((n|0)==(x|0))c[m>>2]=c[m>>2]|c[G+(k<<2)>>2];else k=x;c[G+(n<<2)>>2]=q;y=y+9|0}e:while(1){w=k+1&127;x=G+((k+127&127)<<2)|0;while(1){q=(m|0)==18;v=(m|0)>27?9:1;y=n;while(1){p=0;while(1){n=p+y&127;if((n|0)==(k|0)){F=2;A=88;break}n=c[G+(n<<2)>>2]|0;o=c[63640+(p<<2)>>2]|0;if(n>>>0>>0){F=2;A=88;break}if(n>>>0>o>>>0)break;n=p+1|0;if((p|0)<1)p=n;else{F=n;A=88;break}}if((A|0)==88?(A=0,q&(F|0)==2):0){i=0.0;o=0;break e}b=v+b|0;if((y|0)==(k|0))y=k;else break}q=(1<>>v;p=0;n=y;o=y;do{D=G+(o<<2)|0;E=c[D>>2]|0;a=(E>>>v)+p|0;c[D>>2]=a;p=O(E&q,u)|0;a=(o|0)==(n|0)&(a|0)==0;m=a?m+-9|0:m;n=a?n+1&127:n;o=o+1&127}while((o|0)!=(k|0));if(!p)continue;if((w|0)!=(n|0))break;c[x>>2]=c[x>>2]|1}c[G+(k<<2)>>2]=p;k=w}do{n=o+y&127;m=k+1&127;if((n|0)==(k|0)){c[G+(m+-1<<2)>>2]=0;k=m}i=i*1.0e9+ +((c[G+(n<<2)>>2]|0)>>>0);o=o+1|0}while((o|0)!=2);t=+(g|0);j=i*t;o=b+53|0;p=o-f|0;q=(p|0)<(e|0);n=q?((p|0)>0?p:0):e;if((n|0)<53){K=+o$(+l$(1.0,105-n|0),j);r=+q$(j,+l$(1.0,53-n|0));s=K;i=r;r=K+(j-r)}else{s=0.0;i=0.0;r=j}m=y+2&127;if((m|0)!=(k|0)){m=c[G+(m<<2)>>2]|0;do if(m>>>0>=5e8){if((m|0)!=5e8){i=t*.75+i;break}if((y+3&127|0)==(k|0)){i=t*.5+i;break}else{i=t*.75+i;break}}else{if((m|0)==0?(y+3&127|0)==(k|0):0)break;i=t*.25+i}while(0);if((53-n|0)>1?!(+q$(i,1.0)!=0.0):0)j=i+1.0;else j=i}else j=i;i=r+j-s;do if((o&2147483647|0)>(-2-H|0)){H=!(+B(+i)>=9007199254740992.0);b=b+((H^1)&1)|0;i=H?i:i*.5;if((b+50|0)<=(I|0)?!(j!=0.0&(q&((n|0)!=(p|0)|H))):0)break;c[(N_()|0)>>2]=34}while(0);i=+p$(i,b)}while(0);l=J;return +i}function W1(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0;h=a+4|0;e=c[h>>2]|0;i=a+100|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=H$(a)|0;switch(e|0){case 43:case 45:{f=(e|0)==45&1;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=H$(a)|0;if((b|0)!=0&(e+-48|0)>>>0>9?(c[i>>2]|0)!=0:0)c[h>>2]=(c[h>>2]|0)+-1;break}default:f=0}if((e+-48|0)>>>0>9)if(!(c[i>>2]|0)){f=-2147483648;e=0}else{c[h>>2]=(c[h>>2]|0)+-1;f=-2147483648;e=0}else{g=0;do{g=e+-48+(g*10|0)|0;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=H$(a)|0}while((e+-48|0)>>>0<10&(g|0)<214748364);b=((g|0)<0)<<31>>31;if((e+-48|0)>>>0<10)do{b=q3(g|0,b|0,10,0)|0;g=z;e=r3(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;g=r3(e|0,z|0,b|0,g|0)|0;b=z;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=H$(a)|0}while((e+-48|0)>>>0<10&((b|0)<21474836|(b|0)==21474836&g>>>0<2061584302));if((e+-48|0)>>>0<10)do{e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=H$(a)|0}while((e+-48|0)>>>0<10);if(c[i>>2]|0)c[h>>2]=(c[h>>2]|0)+-1;i=(f|0)!=0;e=s3(0,0,g|0,b|0)|0;f=i?z:b;e=i?e:g}z=f;return e|0}function X1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a+84|0;g=c[e>>2]|0;h=d+256|0;f=C$(g,0,h)|0;f=(f|0)==0?h:f-g|0;d=f>>>0>>0?f:d;E3(b|0,g|0,d|0)|0;c[a+4>>2]=g+d;b=g+f|0;c[a+8>>2]=b;c[e>>2]=b;return d|0}function Y1(a,b,c){a=a|0;b=b|0;c=c|0;return Z1(a,b,c)|0}function Z1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((c[a+76>>2]|0)>-1){e=(s0(a)|0)==0;b=_1(a,b,d)|0;if(!e)t0(a)}else b=_1(a,b,d)|0;return b|0}function _1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((d|0)==1)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)|0;e=a+20|0;f=a+28|0;if((c[e>>2]|0)>>>0>(c[f>>2]|0)>>>0?(nb[c[a+36>>2]&63](a,0,0)|0,(c[e>>2]|0)==0):0)b=-1;else{c[a+16>>2]=0;c[f>>2]=0;c[e>>2]=0;if((nb[c[a+40>>2]&63](a,b,d)|0)<0)b=-1;else{c[a+8>>2]=0;c[a+4>>2]=0;c[a>>2]=c[a>>2]&-17;b=0}}return b|0}function $1(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;while(1){e=b+1|0;if(!(A$(a[b>>0]|0)|0))break;else b=e}d=a[b>>0]|0;switch(d<<24>>24|0){case 45:{b=1;f=5;break}case 43:{b=0;f=5;break}default:{g=0;c=b;b=d}}if((f|0)==5){g=b;c=e;b=a[e>>0]|0}if(!(D$(b<<24>>24)|0))b=0;else{b=0;do{b=(b*10|0)+48-(a[c>>0]|0)|0;c=c+1|0}while((D$(a[c>>0]|0)|0)!=0)}return (g|0?b:0-b|0)|0}function a2(a){a=a|0;return +(+b2(a,0))}function b2(a,b){a=a|0;b=b|0;return +(+c2(a,b,1))}function c2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0;i=l;l=l+128|0;h=i;f=h;g=f+124|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));f=h+4|0;c[f>>2]=a;g=h+8|0;c[g>>2]=-1;c[h+44>>2]=a;c[h+76>>2]=-1;F$(h,0);e=+T1(h,d,1);d=(c[f>>2]|0)-(c[g>>2]|0)+(c[h+108>>2]|0)|0;if(b|0)c[b>>2]=d|0?a+d|0:a;l=i;return +e}function d2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if(!c)b=0;else{h=b;while(1){g=c>>>1;b=h+(O(g,d)|0)|0;f=lb[e&127](a,b)|0;if(!f)break a;if((c|0)==1){b=0;break a}f=(f|0)<0;c=f?g:c-g|0;if(!c){b=0;break}else h=f?h:b}}while(0);return b|0}function e2(a,c){a=a|0;c=c|0;var d=0,f=0,g=0;g=a+2|0;f=a+4|0;d=q3((e[c+2>>1]|0)<<16|(e[c>>1]|0)|0,e[c+4>>1]|0|0,(e[g>>1]|0)<<16|(e[a>>1]|0)|0,e[f>>1]|0|0)|0;c=r3(d|0,z|0,e[c+6>>1]|0|0,0)|0;d=z;b[a>>1]=c;a=y3(c|0,d|0,16)|0;b[g>>1]=a;b[f>>1]=d;z=d&65535;return c|0}function f2(){var a=0,b=0,d=0;b=183528;b=q3(c[b>>2]|0,c[b+4>>2]|0,1284865837,1481765933)|0;b=r3(b|0,z|0,1,0)|0;a=z;d=183528;c[d>>2]=b;c[d+4>>2]=a;a=y3(b|0,a|0,33)|0;return a|0}function g2(a){a=a|0;E3(190672,65740,6)|0;E3(65740,a|0,6)|0;return 190672}function h2(a){a=a|0;var c=0,d=0;c=l;l=l+16|0;d=c;b[d>>1]=13070;b[d+2>>1]=a;b[d+4>>1]=a>>>16;g2(d)|0;l=c;return}function i2(a){a=a|0;var b=0;b=e2(a,65746)|0;b=z3(b|0,z|0,4)|0;a=z|1072693248;c[j>>2]=b;c[j+4>>2]=a;return +(+h[j>>3]+-1.0)}function j2(){return +(+i2(65740))}function k2(a,b){a=a|0;b=b|0;if(!a)b=D_(1,24)|0;else G3(b|0,0,24)|0;return b|0}function l2(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(b|0)do{C_(c[b>>2]|0);d=b;b=c[b+4>>2]|0;C_(d)}while((b|0)!=0);C_(a);return}function m2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;h=a+16|0;a:do if(!(c[h>>2]|0)){k=a+12|0;g=c[k>>2]|0;if(g>>>0>>0){do if(b)if(!d){c[h>>2]=1;b=0;break a}else{h=a+8|0;c[h>>2]=d;g=1024;b=d;break}else{g=f<<3;g=g>>>0>1024?g:1024;j=B_(8)|0;if(!j){c[h>>2]=1;b=0;break a}b=B_(g)|0;c[j>>2]=b;d=b;if(!b){C_(j);c[h>>2]=1;b=0;break a}c[j+4>>2]=0;h=a+4|0;i=c[h>>2]|0;if(i|0)c[i+4>>2]=j;if(!(c[a>>2]|0))c[a>>2]=j;c[h>>2]=j;h=a+8|0;c[h>>2]=d}while(0);c[k>>2]=g}else{h=a+8|0;b=c[h>>2]|0;d=b}d=d+f&3;d=((d|0)==0?0:4-d|0)+f|0;c[h>>2]=b+d;c[k>>2]=g-d;if(e)G3(b|0,0,d|0)|0}else b=0;while(0);return b|0}function n2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=l;l=l+48|0;h=v;t=o2()|0;a:do if(!t)b=12;else{u=k2(0,0)|0;if(!u){p2(t);b=12;break}G3(h|0,0,36)|0;c[h>>2]=u;c[h+4>>2]=t;c[h+16>>2]=b;c[h+32>>2]=d;e=h+28|0;c[e>>2]=-1;b=q2(h)|0;b:do if(!b){g=h+20|0;r=c[g>>2]|0;c[a>>2]=r+-1;i=c[h+8>>2]|0;if((c[e>>2]|0)<(r|0)){r=D_(1,68)|0;if(r){q=(c[e>>2]|0)>>>31^1;c[r+60>>2]=q;c[r+64>>2]=0;c[r+28>>2]=c[g>>2];if((d&8|0)==0|(q|0)!=0){b=r2(0,t,i,r)|0;if(b|0){g=r;h=0;i=0;f=0;e=0;break}e=r+40|0;b=c[e>>2]|0;if((b|0)>0){b=B_((b<<2)+4|0)|0;if(!b){g=r;h=0;i=0;b=12;f=0;e=0;break}c[r+32>>2]=b;G3(b|0,-1,(c[e>>2]<<2)+4|0)|0;f=b;b=c[e>>2]|0}else f=0;q=D_(b<<1|1,4)|0;c[r+36>>2]=q;if(!q){g=r;h=0;i=0;b=12;f=0;e=0;break}b=D_(c[g>>2]|0,12)|0;if(!b){g=r;h=0;i=0;b=12;f=0;e=0;break}c[r+16>>2]=b;b=r2(u,t,i,r)|0;if(!b)b=f;else{g=r;h=0;i=0;f=0;e=0;break}}else b=0;p=h+24|0;b=s2(u,t,i,p,b)|0;if(!b){b=c[p>>2]|0;c[p>>2]=b+1;b=t2(u,0,0,b)|0;if((b|0)!=0?(s=u2(u,i,b)|0,(s|0)!=0):0){b=v2(u,t,s)|0;if(!b){o=B_(c[p>>2]<<2)|0;if(o){q=B_(c[p>>2]<<2)|0;if(q){b=c[p>>2]|0;if((b|0)>0)G3(o|0,0,b<<2|0)|0;w2(s,0,o,0)|0;f=c[p>>2]|0;if((f|0)>0){b=0;e=0;do{c[q+(e<<2)>>2]=b;n=o+(e<<2)|0;b=b+1+(c[n>>2]|0)|0;c[n>>2]=0;e=e+1|0}while((e|0)<(f|0));k=b}else k=0;m=D_(k+1|0,32)|0;if(m){c[r>>2]=m;n=r+4|0;c[n>>2]=k;b=w2(s,m,o,q)|0;if(!b){c[r+20>>2]=0;f=s+24|0;b=c[f>>2]|0;e=0;while(1){e=e+1|0;if((c[b>>2]|0)<=-1)break;else b=b+32|0}j=D_(e,32)|0;if(!j){g=r;h=o;i=q;b=12;f=o;e=q}else{c[r+8>>2]=j;f=c[f>>2]|0;e=c[f>>2]|0;if((e|0)>-1){b=0;do{c[j+(b<<5)+8>>2]=m+(c[q+(e<<2)>>2]<<5);c[j+(b<<5)+12>>2]=e;h=j+(b<<5)+16|0;c[h>>2]=0;i=f+12|0;g=c[i>>2]|0;if(g|0){e=0;do{w=e;e=e+1|0}while((c[g+(w<<2)>>2]|0)>-1);e=e<<2;g=B_(e)|0;c[h>>2]=g;if(!g){g=r;h=o;i=q;b=12;f=o;e=q;break b}E3(g|0,c[i>>2]|0,e|0)|0}c[j+(b<<5)+20>>2]=c[f+16>>2];b=b+1|0;f=f+32|0;e=c[f>>2]|0}while((e|0)>-1)}else b=0;c[j+(b<<5)+8>>2]=0;c[n>>2]=k;c[r+12>>2]=m+(c[q+(c[c[s+28>>2]>>2]<<2)>>2]<<5);c[r+52>>2]=c[p>>2];c[r+56>>2]=d;l2(u);p2(t);C_(o);C_(q);c[a+4>>2]=r;b=0;break a}}else{g=r;h=o;i=q;f=o;e=q}}else{g=r;h=o;i=q;b=12;f=o;e=q}}else{g=r;h=o;i=q;b=12;f=o;e=0}}else{g=r;h=o;i=0;b=12;f=0;e=0}}else{g=r;h=0;i=0;f=0;e=0}}else{g=r;h=0;i=0;b=12;f=0;e=0}}else{g=r;h=0;i=0;f=0;e=0}}else{g=r;h=0;i=0;b=12;f=0;e=0}}else{g=0;h=0;i=0;b=6;f=0;e=0}}else{g=0;h=0;i=0;f=0;e=0}while(0);l2(u);p2(t);if(h|0)C_(f);if(i|0)C_(e);c[a+4>>2]=g;x2(a)}while(0);l=v;return b|0}function o2(){var a=0,b=0;a=B_(20)|0;do if(a){b=B_(2048)|0;c[a+16>>2]=b;if(!b){C_(a);a=0;break}else{c[a>>2]=512;c[a+4>>2]=1024e3;c[a+8>>2]=128;c[a+12>>2]=0;break}}while(0);return a|0}function p2(a){a=a|0;C_(c[a+16>>2]|0);C_(a);return}function q2(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+16|0;p=u+4|0;q=u;r=c[b+32>>2]&1;s=b+16|0;e=c[s>>2]|0;t=c[b+4>>2]|0;d=B2(t,0)|0;a:do if(!d){m=(r|0)!=0;n=b+8|0;o=b+12|0;d=0;k=1;b:while(1){g=0;h=d;f=0;c:while(1){d=a[e>>0]|0;if(m){if(d<<24>>24==40)break;if((h|0)!=0&d<<24>>24==41)j=13;else j=14}else if(d<<24>>24==92)switch(a[e+1>>0]|0){case 40:break c;case 41:{j=13;break}default:j=14}else j=14;if((j|0)==13){j=0;i=t2(c[b>>2]|0,-1,-1,-1)|0;c[n>>2]=i;if(!i){d=12;break a}else i=f}else if((j|0)==14){j=0;d=Q2(b,e)|0;if(d|0)break a;i=f;e=c[o>>2]|0}d:while(1){e:while(1){d=a[e>>0]|0;switch(d<<24>>24){case 42:case 92:break;default:{if(!m)break e;switch(d<<24>>24){case 123:case 63:case 43:break;default:break e}}}d=d<<24>>24==92;if(m&d)break;f=e+1|0;if(d)switch(a[f>>0]|0){case 123:case 63:case 43:break;default:break e}e=d?f:e;if((!m?(e|0)==((c[s>>2]|0)+1|0):0)?(a[e+-1>>0]|0)==94:0)break;if((a[e>>0]|0)==123){e=R2(e+1|0,r,p,q)|0;if(!e){j=28;break b}d=c[q>>2]|0;f=c[b>>2]|0;if(!d)d=t2(f,-1,-1,-1)|0;else j=36}else{c[p>>2]=0;c[q>>2]=-1;d=a[e>>0]|0;if(d<<24>>24==43){c[p>>2]=1;d=a[e>>0]|0}if(d<<24>>24==63){c[q>>2]=1;d=1}else d=-1;e=e+1|0;f=c[b>>2]|0;j=36}if((j|0)==36){j=0;d=L2(f,c[n>>2]|0,c[p>>2]|0,d,0)|0}c[n>>2]=d;if(!d){d=12;break a}}d=u2(c[b>>2]|0,g,c[n>>2]|0)|0;f=a[e>>0]|0;f:do if(m){if(f<<24>>24==124){j=40;break d}if((h|0)!=0&f<<24>>24==41|f<<24>>24==0)j=47;else{g=d;f=i;continue c}}else{switch(f<<24>>24){case 0:{j=47;break f}case 92:break;default:{g=d;f=i;continue c}}switch(a[e+1>>0]|0){case 124:case 41:break;default:{g=d;f=i;continue c}}d=M2(c[b>>2]|0,i,d)|0;if((a[e+1>>0]|0)==124){f=2;break d}if(!h){d=8;break a}e=e+2|0;f=92}while(0);if((j|0)==47){j=0;d=M2(c[b>>2]|0,i,d)|0;e=f<<24>>24==41?e+1|0:e}d=S2(b,d,C2(t)|0)|0;if(d|0)break a;d=f<<24>>24==0;f=(h|0)<1;if(f&d){j=50;break b}if(f|d){d=8;break a}g=D2(t)|0;h=h+-1|0;i=D2(t)|0}if((j|0)==40){f=1;d=M2(c[b>>2]|0,i,d)|0}g=0;e=e+f|0;f=d}d=A2(t,f)|0;if(d|0)break a;d=A2(t,g)|0;if(d|0)break a;d=B2(t,k)|0;if(d|0)break a;d=h+1|0;k=k+1|0;e=m?e+1|0:e+2|0}if((j|0)==28){d=10;break}else if((j|0)==50){c[b+20>>2]=k;d=0;break}}while(0);l=u;return d|0}function r2(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;x=z2(d)|0;y=(b|0)==0|(f|0)==0;if(!y){c[f+48>>2]=0;c[c[f+36>>2]>>2]=-1}g=f+28|0;z=B_((c[g>>2]<<3)+8|0)|0;do if(!z)g=12;else{c[z>>2]=-1;A=B_((c[g>>2]<<2)+4|0)|0;if(!A){C_(z);g=12;break}c[A>>2]=-1;B=B_((c[g>>2]<<3)+8|0)|0;if(!B){C_(z);C_(A);g=12;break}h=c[g>>2]|0;g=0;do{c[B+(g<<3)>>2]=-1;g=g+1|0}while(g>>>0<=h>>>0);A2(d,e)|0;g=B2(d,0)|0;a:do if((g|0)!=0|(z2(d)|0)<=(x|0)){e=z;n=0;h=0;m=0;l=-1}else{u=f+32|0;v=f+36|0;w=f+16|0;e=z;n=0;h=0;m=0;t=1;l=-1;s=0;while(1){b:do switch(C2(d)|0){case 6:{i=C2(d)|0;g=0;do{j=e+(g<<2)|0;g=g+1|0}while((c[j>>2]|0)>-1);c[j>>2]=i<<1|1;c[e+(g<<2)>>2]=-1;g=0;while(1)if((c[A+(g<<2)>>2]|0)>-1)g=g+1|0;else break;c[A+(g+-1<<2)>>2]=-1;g=0;j=t;i=s;break}case 0:{q=D2(d)|0;r=q+12|0;j=c[r>>2]|0;if((j|0)>-1){g=0;do{i=e+(g<<2)|0;g=g+1|0}while((c[i>>2]|0)>-1);c[i>>2]=j<<1;c[e+(g<<2)>>2]=-1;if(!y){g=0;while(1)if((c[A+(g<<2)>>2]|0)>-1)g=g+1|0;else break;c[(c[w>>2]|0)+(j*12|0)+8>>2]=0;if((g|0)>0){g=B_((g<<2)+4|0)|0;if(!g){g=12;j=t;i=s;break b}c[(c[w>>2]|0)+(j*12|0)+8>>2]=g;i=c[A>>2]|0;if((i|0)>-1){k=0;j=g;do{c[j>>2]=i;k=k+1|0;i=c[A+(k<<2)>>2]|0;j=g+(k<<2)|0}while((i|0)>-1);g=j}c[g>>2]=-1}}g=B2(d,c[r>>2]|0)|0;if(g|0){j=t;i=s;break b}g=B2(d,6)|0;if(g|0){j=t;i=s;break b}}c:do switch(c[q>>2]|0){case 0:{p=c[c[q+4>>2]>>2]|0;if((p|0)>-1|(p|0)==-4?(c[e>>2]|0)>-1:0){if(y){c[q+20>>2]=1;g=0}else{g=N2(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=s;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}O2(e,f,m)}c[e>>2]=-1;p=t+1|0;o=s;n=n+1|0;m=t}else{p=t;g=0;o=s}break}case 1:{j=c[q+4>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;g=A2(d,q)|0;if(!g){g=B2(d,5)|0;if(!g){g=A2(d,j)|0;if(!g){g=B2(d,0)|0;if(!g){i=k+20|0;g=B2(d,(c[i>>2]|0)+t|0)|0;if(!g){if((c[i>>2]|0)>0){i=(c[j+20>>2]|0)>0;g=i?t:-1;i=t+(i&1)|0}else{g=-1;i=t}g=B2(d,g)|0;if(!g){g=B2(d,4)|0;if(!g){g=A2(d,k)|0;if(!g){p=i;g=B2(d,0)|0;o=s}else{p=i;o=s}}else{p=i;o=s}}else{p=i;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}case 2:{i=c[q+4>>2]|0;if(y){if((c[e>>2]|0)>-1)g=1;else g=(a[i+12>>0]&1)!=0;g=B2(d,g&1)|0;if(g|0){p=t;o=s;break c}}else{g=B2(d,m)|0;if(g|0){p=t;o=s;break c}g=B2(d,a[i+12>>0]&1)|0;if(g|0){p=t;o=s;break c}}g=A2(d,q)|0;if(!g){g=B2(d,1)|0;if(!g){g=A2(d,c[i>>2]|0)|0;if(!g){g=B2(d,0)|0;if(!g){if((c[e>>2]|0)<=-1?(a[i+12>>0]&1)==0:0){p=t;g=0;o=0;break c}if(y)g=0;else{g=N2(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=(a[i+12>>0]&1)==0?s:1;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}O2(e,f,m)}c[e>>2]=-1;p=t+1|0;o=0;n=n+1|0;m=t}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}case 3:{j=c[q+4>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;i=(c[e>>2]|0)>-1;p=t+1|0;g=B2(d,i?p:t)|0;if(!g){g=B2(d,i?t:m)|0;if(!g){g=A2(d,e)|0;if(!g){g=B2(d,(c[e>>2]|0)>>>31^1)|0;if(!g){g=A2(d,q)|0;if(!g){g=A2(d,j)|0;if(!g){g=A2(d,k)|0;if(!g){g=B2(d,3)|0;if(!g){g=A2(d,j)|0;if(!g){g=B2(d,0)|0;if(g|0){p=t;o=s;break c}g=B2(d,2)|0;if(g|0){p=t;o=s;break c}g=A2(d,k)|0;if(g|0){p=t;o=s;break c}g=B2(d,0)|0;if(g|0){p=t;o=s;break c}if((c[e>>2]|0)>-1){if(y)g=0;else{g=N2(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=s;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}O2(e,f,m)}c[e>>2]=-1;n=n+1|0;m=t;i=p}else{g=0;i=t}t=(c[q+16>>2]|0)>0;p=t?i+2|0:i;o=s;m=t?i+1|0:m}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}default:{p=t;g=0;o=s}}while(0);j=c[r>>2]|0;if((j|0)>-1){i=0;do{k=A+(i<<2)|0;i=i+1|0}while((c[k>>2]|0)>-1);c[k>>2]=j;c[A+(i<<2)>>2]=-1;j=p;i=o}else{j=p;i=o}break}case 1:{g=D2(d)|0;if(y){i=c[(c[c[g+4>>2]>>2]|0)+20>>2]|0;c[g+20>>2]=(C2(d)|0)+i;i=0;l=-1}else{q=C2(d)|0;r=C2(d)|0;i=q;l=(q|0)==0?l:r}g=0;j=t;i=y?s:(i|0)==0&1;break}case 4:{i=C2(d)|0;j=C2(d)|0;g=0;m=(i|0)>-1?i:m;i=s;break}case 5:{g=D2(d)|0;if(y){j=c[g+4>>2]|0;c[g+20>>2]=(c[(c[j+4>>2]|0)+20>>2]|0)+(c[(c[j>>2]|0)+20>>2]|0);g=0;j=t;i=s}else{g=0;j=t;i=s}break}case 2:{while(1)if((c[e>>2]|0)>-1)e=e+4|0;else{g=0;j=t;i=s;break}break}case 3:{j=D2(d)|0;o=D2(d)|0;g=D2(d)|0;e=C2(d)|0;if(y){r=c[g+4>>2]|0;s=g+16|0;c[g+20>>2]=(c[(c[r>>2]|0)+20>>2]|0)+e+(c[(c[r+4>>2]|0)+20>>2]|0)+((c[s>>2]|0)>0?2:0);g=s}else g=g+16|0;e=D2(d)|0;i=C2(d)|0;k=C2(d)|0;if((c[g>>2]|0)>0){if(y)g=0;else{g=P2(b,j,i)|0;c[(c[u>>2]|0)+(i<<2)>>2]=1;if(!g)g=P2(b,o,k)|0;c[(c[u>>2]|0)+(k<<2)>>2]=1}n=n+2|0;j=t;i=1}else{g=0;j=t;i=1}break}default:{g=0;j=t;i=s}}while(0);if((g|0)!=0|(z2(d)|0)<=(x|0))break a;else{t=j;s=i}}}while(0);if(!y?(O2(e,f,m),(l|0)>-1):0){i=c[f+36>>2]|0;e=0;while(1){j=i+(e<<2)|0;k=e+1|0;if((c[j>>2]|0)>-1)e=k;else break}c[j>>2]=m;c[i+(k<<2)>>2]=l;c[i+(e+2<<2)>>2]=-1;h=h+1|0}c[f+48>>2]=n;c[f+40>>2]=n;c[f+44>>2]=h;C_(z);C_(A);C_(B)}while(0);return g|0}function s2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+16|0;t=y+12|0;x=y+8|0;u=y+4|0;v=y;w=z2(b)|0;c[t>>2]=0;c[x>>2]=0;d=A2(b,d)|0;a:do if(!d){d=B2(b,0)|0;if(!d){b:do if((z2(b)|0)>(w|0)){g=0;i=0;j=0;c:while(1){q=C2(b)|0;r=D2(b)|0;d:do switch(q|0){case 0:{switch(c[r>>2]|0){case 0:{d=c[r+4>>2]|0;r=c[d>>2]|0;if(!((r|0)>-1|(r|0)==-4)){d=j;break d}r=d+8|0;d=(c[r>>2]|0)+j|0;c[r>>2]=d;if((d|0)<=(c[x>>2]|0)){d=j;break d}c[x>>2]=d;d=j;break d}case 3:{h=c[r+4>>2]|0;d=A2(b,c[h+4>>2]|0)|0;if(d|0)break b;d=B2(b,0)|0;if(d|0)break b;d=A2(b,c[h>>2]|0)|0;if(d|0)break b;break}case 1:{h=c[r+4>>2]|0;d=A2(b,c[h+4>>2]|0)|0;if(d|0)break b;d=B2(b,0)|0;if(d|0)break b;d=A2(b,c[h>>2]|0)|0;if(d|0)break b;break}case 2:{h=c[r+4>>2]|0;d=B2(b,j)|0;if(d|0)break b;d=A2(b,r)|0;if(d|0)break b;d=B2(b,1)|0;if(d|0)break b;d=A2(b,c[h>>2]|0)|0;if(d|0)break b;d=B2(b,0)|0;if(d|0)break b;if((c[h+4>>2]|0)<=1?(c[h+8>>2]|0)<=1:0)d=j;else{c[t>>2]=0;d=0}i=i+1|0;break d}default:{d=j;break d}}d=B2(b,0)|0;if(!d)d=j;else break b;break}case 1:{p=r+4|0;o=c[p>>2]|0;q=C2(b)|0;c[t>>2]=q;n=o+4|0;j=c[n>>2]|0;if((j|0)<=1)if((c[o+8>>2]|0)>1){c[u>>2]=0;if((j|0)>0)s=30;else{d=q;h=0;s=37}}else d=q;else{c[u>>2]=0;s=30}e:do if((s|0)==30){d=K2(a,b,c[o>>2]|0,(j|0)>1?1:2,t,f,v,x)|0;if(!d){h=0;k=q;m=1}else{s=34;break c}while(1){d=c[v>>2]|0;if(!h)h=d;else h=u2(a,h,d)|0;if(!h){d=12;s=34;break c}j=c[n>>2]|0;if((m|0)>=(j|0)){d=k;s=37;break e}k=c[t>>2]|0;m=m+1|0;d=K2(a,b,c[o>>2]|0,(m|0)<(j|0)?1:2,t,f,v,x)|0;if(d|0){s=34;break c}}}while(0);if((s|0)==37){s=0;n=o+8|0;k=c[n>>2]|0;if((k|0)==-1){k=c[t>>2]|0;d=K2(a,b,c[o>>2]|0,0,t,0,u,x)|0;if(d|0)break c;j=L2(a,c[u>>2]|0,0,-1,0)|0;c[u>>2]=j;if(!j){d=12;break c}else d=k}else if((j|0)<(k|0)){k=j;j=0;while(1){m=c[t>>2]|0;d=K2(a,b,c[o>>2]|0,0,t,0,v,x)|0;if(d|0){s=49;break c}if(!j){d=c[v>>2]|0;c[u>>2]=d}else{d=u2(a,c[v>>2]|0,j)|0;c[u>>2]=d}if(!d){d=12;s=49;break c}j=t2(a,-1,-1,-1)|0;if(!j){d=12;s=49;break c}j=M2(a,j,d)|0;c[u>>2]=j;if(!j){d=12;s=49;break c}k=k+1|0;if((k|0)>=(c[n>>2]|0)){d=m;break}}}else j=0;c[t>>2]=d;if(h){if(j){h=u2(a,h,j)|0;s=54}}else{h=j;s=54}if((s|0)==54){s=0;if(!h){d=12;break c}}c[p>>2]=c[h+4>>2];c[r>>2]=c[h>>2]}i=i+-1|0;h=d-q+g|0;if(!i){c[t>>2]=h;g=h;i=0;d=h}else g=h;break}default:d=j}while(0);if((z2(b)|0)>(w|0))j=d;else{d=0;break b}}break a}else{d=0;g=0}while(0);w=(c[e>>2]|0)+g|0;x=c[x>>2]|0;c[e>>2]=(x|0)>(w|0)?x:w}}while(0);l=y;return d|0}function t2(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=m2(a,0,0,1,20)|0;a=J2(a,0,f)|0;if(!a)a=0;else{c[f>>2]=b;c[f+4>>2]=d;c[f+8>>2]=e}return a|0}function u2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b){e=m2(a,0,0,1,8)|0;a=J2(a,1,e)|0;if(!a)d=0;else{c[e>>2]=b;c[e+4>>2]=d;c[a+16>>2]=(c[d+16>>2]|0)+(c[b+16>>2]|0);d=a}}return d|0}function v2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;j=o+4|0;k=o;m=z2(b)|0;d=A2(b,d)|0;a:do if(!d){d=B2(b,0)|0;if(!d)if((z2(b)|0)>(m|0)){b:while(1){h=C2(b)|0;i=D2(b)|0;c:do switch(h|0){case 0:switch(c[i>>2]|0){case 0:{g=c[i+4>>2]|0;f=c[g>>2]|0;if((f|0)==-4){c[i+8>>2]=0;d=g+8|0;h=E2(a,c[d>>2]|0,0,1114111,0,0,-1)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=E2(a,c[d>>2]|0,0,1114111,0,0,c[g+4>>2]|0)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}d=i+8|0;if((f|0)<0){c[d>>2]=1;h=F2(a)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=F2(a)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}else{c[d>>2]=0;d=g+8|0;e=g+4|0;h=E2(a,c[d>>2]|0,f,c[e>>2]|0,0,0,-1)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=E2(a,c[d>>2]|0,c[g>>2]|0,c[e>>2]|0,c[g+12>>2]|0,c[g+16>>2]|0,-1)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}}case 3:{d=A2(b,i)|0;if(d|0)break a;d=B2(b,1)|0;if(d|0)break a;e=i+4|0;d=A2(b,c[(c[e>>2]|0)+4>>2]|0)|0;if(d|0)break a;d=B2(b,0)|0;if(d|0)break a;d=A2(b,c[c[e>>2]>>2]|0)|0;if(d|0)break a;d=B2(b,0)|0;if(!d)break c;else break a}case 1:{d=A2(b,i)|0;if(d|0)break a;d=B2(b,2)|0;if(d|0)break a;e=i+4|0;d=A2(b,c[(c[e>>2]|0)+4>>2]|0)|0;if(d|0)break a;d=B2(b,0)|0;if(d|0)break a;d=A2(b,c[c[e>>2]>>2]|0)|0;if(d|0)break a;d=B2(b,0)|0;if(!d)break c;else break a}case 2:{d=A2(b,i)|0;if(d|0)break a;d=B2(b,3)|0;if(d|0)break a;d=A2(b,c[c[i+4>>2]>>2]|0)|0;if(d|0)break a;d=B2(b,0)|0;if(!d)break c;else break a}default:break c}case 1:{d=c[i+4>>2]|0;e=c[d>>2]|0;f=d+4|0;g=c[f>>2]|0;if(!(c[e+8>>2]|0))h=(c[g+8>>2]|0)!=0;else h=1;c[i+8>>2]=h&1;h=G2(a,c[e+24>>2]|0,c[g+24>>2]|0,0,0)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=G2(a,c[(c[d>>2]|0)+28>>2]|0,c[(c[f>>2]|0)+28>>2]|0,0,0)|0;c[i+28>>2]=h;if(!h){d=12;break a}break}case 3:{h=c[i+4>>2]|0;d=c[h>>2]|0;if(!(c[h+4>>2]|0))e=1;else e=(c[d+8>>2]|0)!=0&1;c[i+8>>2]=e;c[i+24>>2]=c[d+24>>2];c[i+28>>2]=c[d+28>>2];break}case 2:{g=c[i+4>>2]|0;d=c[g>>2]|0;e=d+8|0;if(!(c[e>>2]|0))f=0;else f=(c[(c[g+4>>2]|0)+8>>2]|0)!=0;c[i+8>>2]=f&1;if(c[e>>2]|0){d=H2(b,d,0,0,j)|0;if(d|0)break b;e=B_((c[j>>2]<<2)+4|0)|0;if(!e){d=12;break b}c[e>>2]=-1;c[k>>2]=0;d=H2(b,c[g>>2]|0,e,k,0)|0;if(d|0){n=45;break b}d=g+4|0;h=i+24|0;c[h>>2]=G2(a,c[(c[d>>2]|0)+24>>2]|0,c[(c[g>>2]|0)+24>>2]|0,e,c[k>>2]|0)|0;C_(e);if(!(c[h>>2]|0)){d=12;break b}else f=d}else{c[i+24>>2]=c[d+24>>2];f=g+4|0}d=c[f>>2]|0;if(c[d+8>>2]|0){d=H2(b,d,0,0,j)|0;if(d|0)break b;e=B_((c[j>>2]<<2)+4|0)|0;if(!e){d=12;break b}c[e>>2]=-1;c[k>>2]=0;d=H2(b,c[f>>2]|0,e,k,0)|0;if(d|0){n=52;break b}i=i+28|0;c[i>>2]=G2(a,c[(c[g>>2]|0)+28>>2]|0,c[(c[f>>2]|0)+28>>2]|0,e,c[k>>2]|0)|0;C_(e);if(!(c[i>>2]|0)){d=12;break b}}else c[i+28>>2]=c[d+28>>2];break}default:{}}while(0);if((z2(b)|0)<=(m|0)){d=0;break a}}if((n|0)==45)C_(e);else if((n|0)==52)C_(e)}else d=0}while(0);l=o;return d|0}function w2(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:while(1){switch(c[a>>2]|0){case 2:{a=c[a+4>>2]|0;if((c[a+8>>2]|0)==-1?(h=c[a>>2]|0,h=y2(c[h+28>>2]|0,c[h+24>>2]|0,b,d,e)|0,(h|0)!=0):0){a=h;break a}break}case 3:{f=c[a+4>>2]|0;a=w2(c[f>>2]|0,b,d,e)|0;if(a|0)break a;a=f+4|0;break}case 1:{f=c[a+4>>2]|0;g=f+4|0;a=y2(c[(c[f>>2]|0)+28>>2]|0,c[(c[g>>2]|0)+24>>2]|0,b,d,e)|0;if(a|0)break a;a=w2(c[f>>2]|0,b,d,e)|0;if(!a)a=g;else break a;break}default:{a=0;break a}}a=c[a>>2]|0}return a|0}function x2(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=c[a+4>>2]|0;if(h|0){e=h+4|0;a=c[h>>2]|0;if(c[e>>2]|0){d=0;do{if(c[a+(d<<5)+8>>2]|0){b=c[a+(d<<5)+16>>2]|0;if(b){C_(b);a=c[h>>2]|0}b=c[a+(d<<5)+28>>2]|0;if(b){C_(b);a=c[h>>2]|0}}d=d+1|0}while(d>>>0<(c[e>>2]|0)>>>0)}if(a|0)C_(a);d=h+8|0;a=c[d>>2]|0;if(a|0){if(c[a+8>>2]|0){while(1){b=c[a+16>>2]|0;if(b|0)C_(b);if(!(c[a+40>>2]|0))break;else a=a+32|0}a=c[d>>2]|0}C_(a)}f=h+16|0;a=c[f>>2]|0;if(a|0){g=h+28|0;b=c[g>>2]|0;if(b){e=0;do{d=c[a+(e*12|0)+8>>2]|0;if(d){C_(d);b=c[g>>2]|0;a=c[f>>2]|0}e=e+1|0}while(e>>>0>>0)}C_(a)}a=c[h+32>>2]|0;if(a|0)C_(a);a=c[h+20>>2]|0;if(a|0)C_(a);a=c[h+36>>2]|0;if(a|0)C_(a);C_(h)}return}function y2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;g=c[a>>2]|0;h=(g|0)>-1;a:do if(!d)if(h){h=b+32|0;do{if((c[b>>2]|0)>-1?(y=e+(g<<2)|0,c[y>>2]=(c[y>>2]|0)+1,(c[h>>2]|0)>-1):0){g=h;do{y=e+(c[a>>2]<<2)|0;c[y>>2]=(c[y>>2]|0)+1;g=g+32|0}while((c[g>>2]|0)>-1)}a=a+32|0;g=c[a>>2]|0}while((g|0)>-1);g=0}else g=0;else if(h)while(1){h=c[b>>2]|0;b:do if((h|0)>-1){p=a+4|0;q=a+8|0;r=a+16|0;s=a+20|0;t=a+24|0;u=a+28|0;v=a+12|0;e=-1;g=b;while(1){o=h;while(1){if((o|0)!=(e|0))break;g=g+32|0;h=c[g>>2]|0;if((h|0)>-1)o=h;else break b}l=d+(c[f+(c[a>>2]<<2)>>2]<<5)|0;while(1){h=l+8|0;if(!(c[h>>2]|0))break;else l=l+32|0}c[l+40>>2]=0;c[l>>2]=c[p>>2];c[l+4>>2]=c[q>>2];c[h>>2]=d+(c[f+(o<<2)>>2]<<5);c[l+12>>2]=o;h=c[s>>2]|0;e=c[g+16>>2]|c[r>>2]|(h|0?4:0)|(c[t>>2]|0?8:0);i=l+20|0;c[i>>2]=e;j=c[u>>2]|0;if((j|0)>-1){c[i>>2]=e|256;h=j}c[l+24>>2]=h;e=c[t>>2]|0;if(!e)c[l+28>>2]=0;else{h=0;do{n=h;h=h+1|0}while((c[e+(n<<2)>>2]|0)!=0);h=B_(h<<2)|0;c[l+28>>2]=h;if(!h){g=12;break a}k=c[t>>2]|0;e=c[k>>2]|0;if(e){j=0;i=h;do{c[i>>2]=e;j=j+1|0;e=c[k+(j<<2)>>2]|0;i=h+(j<<2)|0}while((e|0)!=0);h=i}c[h>>2]=0}e=c[v>>2]|0;if(!e)h=0;else{h=0;while(1)if((c[e+(h<<2)>>2]|0)>-1)h=h+1|0;else break}k=g+12|0;i=c[k>>2]|0;if(!i)e=0;else{e=0;while(1)if((c[i+(e<<2)>>2]|0)>-1)e=e+1|0;else break}j=l+16|0;i=c[j>>2]|0;if(i|0)C_(i);c[j>>2]=0;h=e+h|0;if((h|0)>0){n=B_((h<<2)+4|0)|0;c[j>>2]=n;if(!n){g=12;break a}e=c[v>>2]|0;if((e|0)!=0?(w=c[e>>2]|0,(w|0)>-1):0){h=0;i=w;do{c[n+(h<<2)>>2]=i;h=h+1|0;i=c[e+(h<<2)>>2]|0}while((i|0)>-1);m=h}else m=0;j=c[k>>2]|0;if((j|0)!=0?(x=c[j>>2]|0,(x|0)>-1):0){k=(m|0)>0;h=m;i=0;l=x;do{c:do if(k){e=0;while(1){if((c[n+(e<<2)>>2]|0)==(l|0))break c;e=e+1|0;if((e|0)>=(m|0)){y=39;break}}}else y=39;while(0);if((y|0)==39){y=0;c[n+(h<<2)>>2]=l;h=h+1|0}i=i+1|0;l=c[j+(i<<2)>>2]|0}while((l|0)>-1)}else h=m;c[n+(h<<2)>>2]=-1}g=g+32|0;h=c[g>>2]|0;if((h|0)<=-1)break;else e=o}}while(0);a=a+32|0;if((c[a>>2]|0)<=-1){g=0;break}}else g=0;while(0);return g|0}function z2(a){a=a|0;return c[a+12>>2]|0}function A2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[f>>2]=b;c[e>>2]=c[f>>2];b=I2(a,e)|0;l=d;return b|0}function B2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[f>>2]=b;c[e>>2]=c[f>>2];b=I2(a,e)|0;l=d;return b|0}function C2(a){a=a|0;var b=0,d=0;b=c[a+16>>2]|0;d=a+12|0;a=(c[d>>2]|0)+-1|0;c[d>>2]=a;return c[b+(a<<2)>>2]|0}function D2(a){a=a|0;var b=0,d=0;b=c[a+16>>2]|0;d=a+12|0;a=(c[d>>2]|0)+-1|0;c[d>>2]=a;return c[b+(a<<2)>>2]|0}function E2(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;a=m2(a,0,0,1,64)|0;if(!a)a=0;else{c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=e;c[a+20>>2]=f;c[a+24>>2]=g;c[a+28>>2]=h;c[a+32>>2]=-1;c[a+36>>2]=-1;c[a+40>>2]=-1}return a|0}function F2(a){a=a|0;a=m2(a,0,0,1,32)|0;if(!a)a=0;else{c[a>>2]=-1;c[a+4>>2]=-1;c[a+8>>2]=-1}return a|0}function G2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(e|0)==0;if(o)n=0;else{g=0;while(1)if((c[e+(g<<2)>>2]|0)>-1)g=g+1|0;else{n=g;break}}h=0;while(1)if((c[b+(h<<5)>>2]|0)>-1)h=h+1|0;else{g=0;break}while(1)if((c[d+(g<<5)>>2]|0)>-1)g=g+1|0;else break;g=m2(a,0,0,1,(g+h<<5)+32|0)|0;a:do if(!g)g=0;else{h=c[b>>2]|0;if((h|0)>-1){m=(n|0)>0;i=0;while(1){c[g+(i<<5)>>2]=h;c[g+(i<<5)+4>>2]=c[b+(i<<5)+4>>2];c[g+(i<<5)+8>>2]=c[b+(i<<5)+8>>2];c[g+(i<<5)+16>>2]=c[b+(i<<5)+16>>2]|f;c[g+(i<<5)+20>>2]=c[b+(i<<5)+20>>2];c[g+(i<<5)+24>>2]=c[b+(i<<5)+24>>2];c[g+(i<<5)+28>>2]=c[b+(i<<5)+28>>2];l=b+(i<<5)+12|0;j=c[l>>2]|0;h=(j|0)==0;if(o&h)h=0;else{if(h)k=0;else{h=0;while(1)if((c[j+(h<<2)>>2]|0)>-1)h=h+1|0;else{k=h;break}}h=m2(a,0,0,0,(k+n<<2)+4|0)|0;if(!h){g=0;break a}if((k|0)>0){l=c[l>>2]|0;j=0;do{c[h+(j<<2)>>2]=c[l+(j<<2)>>2];j=j+1|0}while((j|0)!=(k|0))}else k=0;if(m){j=0;do{c[h+(j+k<<2)>>2]=c[e+(j<<2)>>2];j=j+1|0}while((j|0)!=(n|0));j=n}else j=0;c[h+(j+k<<2)>>2]=-1}c[g+(i<<5)+12>>2]=h;i=i+1|0;h=c[b+(i<<5)>>2]|0;if((h|0)<=-1){n=i;break}}}else n=0;i=c[d>>2]|0;h=g+(n<<5)|0;if((i|0)>-1){m=0;l=n;do{c[h>>2]=i;c[g+(l<<5)+4>>2]=c[d+(m<<5)+4>>2];c[g+(l<<5)+8>>2]=c[d+(m<<5)+8>>2];c[g+(l<<5)+16>>2]=c[d+(m<<5)+16>>2];c[g+(l<<5)+20>>2]=c[d+(m<<5)+20>>2];c[g+(l<<5)+24>>2]=c[d+(m<<5)+24>>2];c[g+(l<<5)+28>>2]=c[d+(m<<5)+28>>2];j=d+(m<<5)+12|0;h=c[j>>2]|0;if(!h)h=0;else{i=0;while(1)if((c[h+(i<<2)>>2]|0)>-1)i=i+1|0;else break;h=m2(a,0,0,0,(i<<2)+4|0)|0;if(!h){g=0;break a}if((i|0)>0){k=c[j>>2]|0;j=0;do{c[h+(j<<2)>>2]=c[k+(j<<2)>>2];j=j+1|0}while((j|0)!=(i|0))}else i=0;c[h+(i<<2)>>2]=-1}c[g+(l<<5)+12>>2]=h;m=m+1|0;i=c[d+(m<<5)>>2]|0;l=m+n|0;h=g+(l<<5)|0}while((i|0)>-1)}c[h>>2]=-1}while(0);return g|0}function H2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=z2(a)|0;p=(f|0)!=0;if(p)c[f>>2]=0;b=A2(a,b)|0;a:do if(!b){m=(d|0)==0;l=(e|0)==0;if((z2(a)|0)>(o|0))while(1){b=D2(a)|0;b:do switch(c[b>>2]|0){case 0:{b=c[b+4>>2]|0;switch(c[b>>2]|0){case -3:break;case -2:{if(l)break b;c[e>>2]=c[e>>2]|c[b+4>>2];break b}default:break b}h=c[b+4>>2]|0;if((h|0)>-1){c:do if(!m){b=0;while(1){i=d+(b<<2)|0;j=c[i>>2]|0;if((j|0)<=-1)break;if((j|0)==(h|0))break c;else b=b+1|0}c[i>>2]=h;c[d+(b+1<<2)>>2]=-1}while(0);if(p)c[f>>2]=(c[f>>2]|0)+1}break}case 3:{b=c[b+4>>2]|0;h=c[b>>2]|0;if(c[h+8>>2]|0){k=h;n=6;break b}b=c[b+4>>2]|0;if(c[b+8>>2]|0){k=b;n=6}break}case 1:{b=c[b+4>>2]|0;h=A2(a,c[b>>2]|0)|0;if(h|0){g=h;break a}k=c[b+4>>2]|0;n=6;break}case 2:{b=c[c[b+4>>2]>>2]|0;if(c[b+8>>2]|0){k=b;n=6}break}default:{}}while(0);if((n|0)==6?(n=0,g=A2(a,k)|0,g|0):0)break a;if((z2(a)|0)<=(o|0)){g=0;break a}}else g=0}else g=b;while(0);return g|0}function I2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;g=k;d=a+12|0;e=c[d>>2]|0;j=c[a>>2]|0;if((e|0)>=(j|0)){d=c[a+4>>2]|0;if((j|0)<(d|0)?(f=(c[a+8>>2]|0)+j|0,f=(f|0)>(d|0)?d:f,h=a+16|0,i=E_(c[h>>2]|0,f<<2)|0,(i|0)!=0):0){c[a>>2]=f;c[h>>2]=i;c[g>>2]=c[b>>2];I2(a,g)|0;d=0}else d=12}else{c[(c[a+16>>2]|0)+(e<<2)>>2]=c[b>>2];c[d>>2]=(c[d>>2]|0)+1;d=0}l=k;return d|0}function J2(a,b,d){a=a|0;b=b|0;d=d|0;a=m2(a,0,0,1,32)|0;if((d|0)!=0&(a|0)!=0){c[a+4>>2]=d;c[a>>2]=b;c[a+8>>2]=-1;c[a+12>>2]=-1}else a=0;return a|0}function K2(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=z2(d)|0;A2(d,e)|0;e=B2(d,0)|0;a:do if(!e){q=(f&1|0)==0;p=(f&2|0)!=0;o=0;l=1;e=i;while(1){if((z2(d)|0)>(r|0))n=e;else{f=o;e=0;break a}b:while(1){c:while(1){switch(C2(d)|0){case 1:{i=7;break c}case 0:{e=D2(d)|0;switch(c[e>>2]|0){case 0:{i=9;break b}case 3:{i=19;break b}case 1:{i=26;break b}case 2:{i=33;break c}default:{}}break}default:{}}if((z2(d)|0)<=(r|0)){f=o;e=0;break a}}if((i|0)==7)e=D2(d)|0;else if((i|0)==33){f=c[e+4>>2]|0;e=A2(d,c[f>>2]|0)|0;if(e|0){f=o;break a}e=B2(d,0)|0;if(e|0){f=o;break a}e=L2(b,c[f>>2]|0,c[f+4>>2]|0,c[f+8>>2]|0,a[f+12>>0]&1)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}e=c[e+4>>2]|0}if((z2(d)|0)>(r|0))n=e;else{f=o;e=0;break a}}if((i|0)==9){m=c[e+4>>2]|0;i=c[m+8>>2]|0;f=c[m>>2]|0;e=c[m+4>>2]|0;if(!((f|0)>-1|(f|0)==-4))if(q|(f|0)!=-3)if((f|0)==-3)if(p&(l|0)!=0){c[h+(e<<2)>>2]=1;f=-3;k=o;l=0}else{f=-3;k=o}else k=o;else{e=-1;f=-1;i=-1;k=o}else{i=(c[g>>2]|0)+i|0;k=o+1|0}e=t2(b,f,e,i)|0;c[n>>2]=e;if(!e)e=12;else{e=c[e+4>>2]|0;c[e+12>>2]=c[m+12>>2];c[e+16>>2]=c[m+16>>2];e=0}if((i|0)>(c[j>>2]|0)){c[j>>2]=i;f=n}else f=n}else if((i|0)==19){i=c[e+4>>2]|0;f=i+4|0;e=M2(b,c[i>>2]|0,c[f>>2]|0)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}m=c[e+4>>2]|0;e=A2(d,c[f>>2]|0)|0;if(e|0){f=o;break a}e=B2(d,0)|0;if(e|0){f=o;break a}e=A2(d,m+4|0)|0;if(e|0){f=o;break a}e=B2(d,1)|0;if(e|0){f=o;break a}e=A2(d,c[i>>2]|0)|0;if(e|0){f=o;break a}k=o;f=m;e=B2(d,0)|0}else if((i|0)==26){m=c[e+4>>2]|0;i=m+4|0;e=u2(b,c[m>>2]|0,c[i>>2]|0)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}f=c[e+4>>2]|0;c[f>>2]=0;k=f+4|0;c[k>>2]=0;e=A2(d,c[i>>2]|0)|0;if(e|0){f=o;break a}e=B2(d,0)|0;if(e|0){f=o;break a}e=A2(d,k)|0;if(e|0){f=o;break a}e=B2(d,1)|0;if(e|0){f=o;break a}e=A2(d,c[m>>2]|0)|0;if(e|0){f=o;break a}k=o;e=B2(d,0)|0}if(!e){o=k;e=f}else{f=k;break}}}else f=0;while(0);c[g>>2]=(c[g>>2]|0)+f;return e|0}function L2(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=m2(b,0,0,1,16)|0;b=J2(b,2,h)|0;if(!b)b=0;else{c[h>>2]=d;c[h+4>>2]=e;c[h+8>>2]=f;h=h+12|0;a[h>>0]=a[h>>0]&-2|g&1;c[b+16>>2]=c[d+16>>2]}return b|0}function M2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b){e=m2(a,0,0,1,8)|0;a=J2(a,3,e)|0;if((d|0)!=0&(a|0)!=0){c[e>>2]=b;c[e+4>>2]=d;c[a+16>>2]=(c[d+16>>2]|0)+(c[b+16>>2]|0);d=a}else d=0}return d|0}function N2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=m2(a,0,0,0,8)|0;if(((e|0)!=0?(d=t2(a,-3,d,-1)|0,c[e>>2]=d,(d|0)!=0):0)?(f=m2(a,0,0,0,32)|0,c[e+4>>2]=f,(f|0)!=0):0){a=b+4|0;c[f+4>>2]=c[a>>2];c[f>>2]=c[b>>2];c[f+8>>2]=-1;c[f+12>>2]=-1;f=f+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[a>>2]=e;c[b>>2]=1;a=0}else a=12;return a|0}function O2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=c[a>>2]|0;if((f|0)>-1){g=c[b+16>>2]|0;e=0;b=f;do{f=b>>>1;c[((b&1|0)==0?g+(f*12|0)|0:g+(f*12|0)+4|0)>>2]=d;e=e+1|0;b=c[a+(e<<2)>>2]|0}while((b|0)>-1)}c[a>>2]=-1;return}function P2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=m2(a,0,0,0,8)|0;if(((e|0)!=0?(d=t2(a,-3,d,-1)|0,c[e+4>>2]=d,(d|0)!=0):0)?(f=m2(a,0,0,0,32)|0,c[e>>2]=f,(f|0)!=0):0){a=b+4|0;c[f+4>>2]=c[a>>2];c[f>>2]=c[b>>2];c[f+8>>2]=-1;c[f+12>>2]=-1;f=f+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[a>>2]=e;c[b>>2]=1;a=0}else a=12;return a|0}function Q2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;j=m;i=b+32|0;h=c[i>>2]|0;g=h&1;a:do switch(a[d>>0]|0){case 91:{e=U2(b,d+1|0)|0;break}case 92:{e=d+1|0;f=V2(e)|0;if(f|0){e=Q2(b,f)|0;c[b+12>>2]=d+2;break a}f=a[e>>0]|0;switch(f|0){case 0:{e=5;break a}case 98:{f=t2(c[b>>2]|0,-2,64,-1)|0;break}case 66:{f=t2(c[b>>2]|0,-2,128,-1)|0;break}case 60:{f=t2(c[b>>2]|0,-2,16,-1)|0;break}case 62:{f=t2(c[b>>2]|0,-2,32,-1)|0;break}case 120:{h=d+2|0;i=(a[h>>0]|0)==123;g=i?8:2;h=i?d+3|0:h;e=0;f=0;do{d=W2(a[h+e>>0]|0)|0;if((d|0)<0)break;f=d+(f<<4)|0;e=e+1|0}while((f|0)<1114112&(e|0)<(g|0));e=h+e|0;if(i){if((a[e>>0]|0)!=125){e=9;break a}e=e+1|0}j=c[b>>2]|0;i=b+24|0;k=c[i>>2]|0;c[i>>2]=k+1;f=t2(j,f,f,k)|0;e=e+-1|0;break}case 63:case 43:case 123:if(!g){e=13;break a}else{k=37;break a}case 124:{if(g|0){k=37;break a}e=t2(c[b>>2]|0,-1,-1,-1)|0;k=45;break a}default:{if(!((g|0)==0&(f+-49|0)>>>0<9)){k=37;break a}j=f+-48|0;k=c[b>>2]|0;i=b+24|0;f=c[i>>2]|0;c[i>>2]=f+1;f=t2(k,-4,j,f)|0;k=b+28|0;i=c[k>>2]|0;c[k>>2]=(j|0)<(i|0)?i:j}}d=e+1|0;e=f;k=45;break}case 46:{e=c[b>>2]|0;g=b+24|0;f=c[g>>2]|0;c[g>>2]=f+1;if(h&4){f=t2(e,0,9,f)|0;k=c[b>>2]|0;e=c[g>>2]|0;c[g>>2]=e+1;e=t2(k,11,1114111,e)|0;if((f|0)!=0&(e|0)!=0)e=M2(c[b>>2]|0,f,e)|0;else e=0}else e=t2(e,0,1114111,f)|0;d=d+1|0;k=45;break}case 94:{if((g|0)==0?(c[b+16>>2]|0)!=(d|0):0){e=d;k=37;break a}d=d+1|0;e=t2(c[b>>2]|0,-2,1,-1)|0;k=45;break}case 36:{e=d+1|0;if((g|0)==0?a[e>>0]|0:0){e=d;k=37;break a}d=e;e=t2(c[b>>2]|0,-2,2,-1)|0;k=45;break}case 63:case 43:case 123:case 42:{if(!g){e=d;k=37}else e=13;break}case 124:{if(!g){e=d;k=37}else k=36;break}case 0:{k=36;break}default:{e=d;k=37}}while(0);if((k|0)==36){e=t2(c[b>>2]|0,-1,-1,-1)|0;k=45}else if((k|0)==37){h=A1(j,e,-1)|0;if((h|0)<0)e=2;else{do if(c[i>>2]&2){if((l0(c[j>>2]|0)|0)==0?(k0(c[j>>2]|0)|0)==0:0){k=43;break}i=c[b>>2]|0;n=Q$(c[j>>2]|0)|0;g=Q$(c[j>>2]|0)|0;f=b+24|0;g=t2(i,n,g,c[f>>2]|0)|0;n=c[b>>2]|0;i=n0(c[j>>2]|0)|0;d=n0(c[j>>2]|0)|0;d=t2(n,i,d,c[f>>2]|0)|0;if((g|0)!=0&(d|0)!=0)g=M2(c[b>>2]|0,g,d)|0;else g=0}else k=43;while(0);if((k|0)==43){g=c[j>>2]|0;f=b+24|0;g=t2(c[b>>2]|0,g,g,c[f>>2]|0)|0}c[f>>2]=(c[f>>2]|0)+1;d=e+h|0;e=g;k=45}}if((k|0)==45)if(!e)e=12;else{c[b+8>>2]=e;c[b+12>>2]=d;e=0}l=m;return e|0}function R2(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j+4|0;g=j;b=T2(b,i)|0;if((a[b>>0]|0)==44){b=T2(b+1|0,g)|0;h=c[g>>2]|0;g=c[i>>2]|0}else{i=c[i>>2]|0;c[g>>2]=i;h=i;g=i}do if(!(g>>>0>255|((h|0)>255|(h|0)>-1&(h|0)<(g|0)))){if(!d)if((a[b>>0]|0)==92)b=b+1|0;else{b=0;break}if((a[b>>0]|0)==125){c[e>>2]=g;c[f>>2]=h;b=b+1|0}else b=0}else b=0;while(0);l=j;return b|0}function S2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if((c[b+12>>2]|0)>-1){e=t2(c[a>>2]|0,-1,-1,-1)|0;if((e|0)!=0?(f=u2(c[a>>2]|0,e,b)|0,(f|0)!=0):0){e=c[b+16>>2]|0;c[f+16>>2]=e;g=6}else e=12}else{f=b;e=c[b+16>>2]|0;g=6}if((g|0)==6){c[f+12>>2]=d;c[f+16>>2]=e+1;c[a+8>>2]=f;e=0}return e|0}function T2(b,d){b=b|0;d=d|0;var e=0;c[d>>2]=-1;a:do if(D$(a[b>>0]|0)|0){c[d>>2]=0;e=0;do{c[d>>2]=(e*10|0)+-48+(a[b>>0]|0);b=b+1|0;if(!(D$(a[b>>0]|0)|0))break a;e=c[d>>2]|0}while((e|0)<=255)}while(0);return b|0}function U2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+288|0;e=s+264|0;g=s;c[e>>2]=c[b>>2];h=e+8|0;c[h>>2]=0;c[e+12>>2]=32;p=B_(128)|0;r=e+4|0;c[r>>2]=p;if(!p)d=12;else{f=g+4|0;c[f>>2]=0;p=(a[d>>0]|0)==94;c[g>>2]=p&1;d=X2(b,p?d+1|0:d,e,g)|0;a:do if(!d){p=(c[g>>2]|0)==0;if(!p){Z0(c[r>>2]|0,c[h>>2]|0,4,109);d=Z2(e)|0;if(!d){d=12;e=0;break}c[d>>2]=1114112;c[d+4>>2]=1114112;c[d+8>>2]=-1;d=c[f>>2]|0;if(d){e=d<<2;f=m2(c[b>>2]|0,0,0,0,e+4|0)|0;if(!f){d=12;e=0;break}E3(f|0,g+8|0,e|0)|0;c[f+(d<<2)>>2]=0}else f=0}else f=0;m=c[h>>2]|0;if((m|0)>0){n=c[r>>2]|0;o=b+24|0;e=0;d=0;k=0;while(1){j=c[n+(k<<2)>>2]|0;g=c[j>>2]|0;h=j+4|0;i=c[h>>2]|0;do if(!p)if((g|0)>(d|0)){c[j>>2]=d;c[h>>2]=g+-1;d=i+1|0;q=14;break}else{j=i+1|0;d=(j|0)>=(d|0)?j:d;break}else q=14;while(0);if((q|0)==14){q=0;c[j+8>>2]=c[o>>2];c[j+16>>2]=f;j=J2(c[b>>2]|0,0,j)|0;e=M2(c[b>>2]|0,e,j)|0;if(!e){d=12;e=0;break a}}k=k+1|0;if((k|0)>=(m|0)){d=0;break}}}else{d=0;e=0}}else e=0;while(0);C_(c[r>>2]|0);r=b+24|0;c[r>>2]=(c[r>>2]|0)+1;c[b+8>>2]=e}l=s;return d|0}function V2(b){b=b|0;var d=0;d=a[b>>0]|0;b=0;while(1){if((a[63648+(b<<3)>>0]|0)==d<<24>>24)break;b=b+1|0;if((b|0)==12){b=12;break}}return c[63648+(b<<3)+4>>2]|0}function W2(a){a=a|0;var b=0;b=a+-48|0;if(b>>>0<10)return b|0;else{b=a|32;return ((b+-97|0)>>>0<6?b+-87|0:-1)|0}return 0}function X2(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+32|0;o=t;q=t+4|0;i=A1(o,d,-1)|0;g=a[d>>0]|0;a:do if((i|0)>=1){r=f+4|0;n=b+32|0;h=d;j=i;b:while(1){i=(h|0)==(d|0);if(!(i|g<<24>>24!=93)){s=5;break}c:do if(!(i|g<<24>>24!=45)){switch(a[h+1>>0]|0){case 93:break c;case 45:break;default:{g=11;break a}}if((a[h+2>>0]|0)==93){g=11;break a}}while(0);d:do if(g<<24>>24==91){switch(a[h+1>>0]|0){case 61:case 46:{g=3;break a}case 58:break;default:{s=17;break d}}i=h+2|0;g=0;e:while(1){switch(a[i+g>>0]|0){case 0:{s=16;break b}case 58:break e;default:{}}if((g|0)<13)g=g+1|0;else{s=16;break b}}E3(q|0,i|0,g|0)|0;a[q+g>>0]=0;j=G0(q)|0;if(!j){s=16;break b}h=i+(g+2)|0;if((a[i+(g+1)>>0]|0)!=93){s=16;break b}if(!(c[f>>2]|0)){g=1114111;m=0;k=1;s=25}else{g=c[r>>2]|0;if((g|0)>63){g=12;break a}c[r>>2]=g+1;c[f+8+(g<<2)>>2]=j}}else s=17;while(0);if((s|0)==17){s=0;i=c[o>>2]|0;h=h+j|0;if((a[h>>0]|0)==45?(p=h+1|0,(a[p>>0]|0)!=93):0){h=A1(o,p,-1)|0;g=c[o>>2]|0;if((h|0)<1|(i|0)>(g|0)){g=11;break a}j=0;m=i;h=p+h|0;k=0;s=25}else{j=0;g=i;m=i;k=0;s=25}}if((s|0)==25){s=0;i=Z2(e)|0;if(!i){g=12;break a}c[i>>2]=m;c[i+4>>2]=g;c[i+12>>2]=j;c[i+8>>2]=-1;if(!(k|(c[n>>2]&2|0)==0)?(_2(e,m,g)|0)!=0:0){g=12;break a}}j=A1(o,h,-1)|0;g=a[h>>0]|0;if((j|0)<1){s=3;break a}}if((s|0)==5){c[b+12>>2]=h+1;g=0;break}else if((s|0)==16){g=4;break}}else s=3;while(0);if((s|0)==3)g=g<<24>>24?2:7;l=t;return g|0}function Y2(a,b){a=a|0;b=b|0;return (c[c[a>>2]>>2]|0)-(c[c[b>>2]>>2]|0)|0}function Z2(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;d=c[h>>2]|0;e=a+12|0;f=c[e>>2]|0;if((d|0)>=(f|0))if((f|0)<=32767?(c[e>>2]=f<<1,g=a+4|0,b=E_(c[g>>2]|0,f<<3)|0,(b|0)!=0):0){c[g>>2]=b;d=c[h>>2]|0;i=6}else b=0;else{b=c[a+4>>2]|0;i=6}if((i|0)==6){c[h>>2]=d+1;i=m2(c[a>>2]|0,0,0,1,20)|0;c[b+(d<<2)>>2]=i;b=i}return b|0}function _2(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a:do if((b|0)>(d|0))b=0;else while(1){b:do if(!(k0(b)|0)){if(!(l0(b)|0)){b=b+1|0;break}f=n0(b)|0;e=f;while(1){g=b+1|0;e=e+1|0;if((b|0)>=(d|0)){h=f;b=g;g=12;break b}if((n0(g)|0)==(e|0))b=g;else{h=f;b=g;g=12;break}}}else{f=Q$(b)|0;e=f;while(1){g=b+1|0;e=e+1|0;if((b|0)>=(d|0)){h=f;b=g;g=12;break b}if((Q$(g)|0)==(e|0))b=g;else{h=f;b=g;g=12;break}}}while(0);if((g|0)==12){g=0;f=Z2(a)|0;if(!f){b=-1;break a}c[f>>2]=h;c[f+4>>2]=e+-1;c[f+8>>2]=-1}if((b|0)>(d|0)){b=0;break}}while(0);return b|0}function $2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;i=c[a+4>>2]|0;j=i+56|0;h=(c[j>>2]&8|0)==0?d:0;a=c[i+40>>2]|0;if((a|0)>0&(h|0)!=0){a=B_(a<<2)|0;if(!a)a=12;else{g=a;d=a;m=3}}else{g=0;d=0;m=3}if((m|0)==3){if(!(c[i+60>>2]|0))a=b3(i,b,g,f,k)|0;else a=a3(i,b,g,f,k)|0;if(!a)c3(h,e,c[j>>2]|0,i,g,c[k>>2]|0);if(g)C_(d)}l=n;return a|0}function a3(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;V=l;l=l+16|0;T=V;c[T>>2]=0;o=e&1;R=e&2;S=a+56|0;n=c[S>>2]&4;U=k2(0,0)|0;a:do if(U){p=m2(U,0,0,0,32)|0;if(!p){l2(U);e=12;break}c[p+24>>2]=0;c[p+28>>2]=0;Q=a+40|0;e=c[Q>>2]|0;if(e){e=B_(e<<2)|0;if(!e){m=0;k=0;j=e;e=12;i=0;h=0;g=0}else{j=e;i=e;C=6}}else{j=0;i=0;C=6}b:do if((C|0)==6){e=c[a+28>>2]|0;if(e){e=B_(e<<3)|0;if(!e){m=e;k=0;e=12;h=0;g=0;break}else{m=e;h=e}}else{m=0;h=0}P=a+52|0;e=c[P>>2]|0;if(e){e=B_(e<<2)|0;if(!e){k=e;e=12;g=0;break}else{k=e;g=e}}else{k=0;g=0}K=a+8|0;L=a+12|0;M=(d|0)==0;N=(d|0)!=0;O=a+32|0;J=(n|0)!=0;I=(o|0)==0;r=b;e=1;q=-1;v=-1;B=0;c:while(1){n=c[Q>>2]|0;if((n|0)>0){o=0;do{c[j+(o<<2)>>2]=-1;if(!M){c[d+(o<<2)>>2]=-1;n=c[Q>>2]|0}o=o+1|0}while((o|0)<(n|0))}n=c[P>>2]|0;if((n|0)>0)G3(g|0,0,n<<2|0)|0;G=e+q|0;e=A1(T,r,4)|0;if((e|0)<1)if((e|0)<0){e=1;break b}else e=1;F=r+e|0;H=c[T>>2]|0;n=c[K>>2]|0;o=n+8|0;if(c[o>>2]|0){w=(G|0)!=0;x=(B|0)==95;y=(G|0)==0;A=J&(B|0)==10;z=(G|0)<1&I;u=n;n=0;t=0;s=o;while(1){r=u+20|0;o=c[r>>2]|0;d:do if(o)if((o&1|0)==0|z|A){if(o&2|0?(E=c[T>>2]|0,!((E|R|0)==0|J&(E|0)==10)):0){q=t;break}do if(o&16|0){if(x){q=t;break d}if(g0(B)|0){q=t;break d}o=c[T>>2]|0;if((o|0)==95)break;if(!(g0(o)|0)){q=t;break d}}while(0);o=c[r>>2]|0;if(o&32){if(x){o=c[T>>2]|0;if((o|0)==95){q=t;break}}else{E=(g0(B)|0)==0;o=c[T>>2]|0;if(E|(o|0)==95){q=t;break}}if(g0(o)|0){q=t;break}o=c[r>>2]|0}q=c[T>>2]|0;do if((q|0)!=0&(w&(o&64|0)!=0)){if(x)o=1;else{o=(g0(B)|0)!=0;q=c[T>>2]|0}if((q|0)==95)if(o){q=t;break d}else break;else if(o^(g0(q)|0)!=0)break;else{q=t;break d}}while(0);if(!(c[r>>2]&128)){C=49;break}o=c[T>>2]|0;if(y|(o|0)==0){q=t;break}if(x)q=1;else{q=(g0(B)|0)!=0;o=c[T>>2]|0}if((o|0)==95)if(q){C=49;break}else{q=t;break}else if(q^(g0(o)|0)!=0){q=t;break}else{C=49;break}}else q=t;else C=49;while(0);do if((C|0)==49){C=0;if(!t){n=c[u+16>>2]|0;q=c[s>>2]|0;break}q=p+28|0;o=c[q>>2]|0;if(!o){o=m2(U,0,0,0,32)|0;if(!o){C=53;break c}c[o+24>>2]=p;c[o+28>>2]=0;E=m2(U,0,0,0,c[Q>>2]<<2)|0;c[o+20>>2]=E;if(!E){C=60;break c}c[q>>2]=o;p=o}else p=o;c[p>>2]=G;c[p+4>>2]=F;c[p+8>>2]=c[s>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[T>>2];if((c[Q>>2]|0)>0){q=c[p+20>>2]|0;o=0;do{c[q+(o<<2)>>2]=c[j+(o<<2)>>2];o=o+1|0}while((o|0)<(c[Q>>2]|0))}o=c[u+16>>2]|0;if(!o)q=t;else{q=c[o>>2]|0;if((q|0)<=-1){q=t;break}r=c[p+20>>2]|0;do{o=o+4|0;c[r+(q<<2)>>2]=G;q=c[o>>2]|0}while((q|0)>-1);q=t}}while(0);s=u+40|0;if(!(c[s>>2]|0))break;else{u=u+32|0;t=q}}if(n){o=c[n>>2]|0;if((o|0)>-1)do{c[j+(o<<2)>>2]=G;n=n+4|0;o=c[n>>2]|0}while((o|0)>-1)}else n=0;if(!q)C=171;else{s=G;r=F;w=q;x=n;C=79}}else{n=0;C=171}e:while(1){if((C|0)==79){if((w|0)==(c[L>>2]|0)){if((v|0)>=(s|0)){if(!(N&(v|0)==(s|0))){n=x;C=171;continue}n=c[Q>>2]|0;if(!(e3(n,c[O>>2]|0,j,d)|0)){n=x;C=171;continue}}else{if(M){v=s;n=x;C=171;continue}n=c[Q>>2]|0}if((n|0)>0)n=0;else{v=s;n=x;C=171;continue}while(1){c[d+(n<<2)>>2]=c[j+(n<<2)>>2];n=n+1|0;if((n|0)>=(c[Q>>2]|0)){v=s;n=x;C=171;continue e}}}u=w+8|0;if((c[u>>2]|0)!=0?(c[w+20>>2]&256|0)!=0:0){o=c[w+24>>2]|0;c3(o+1|0,m,c[S>>2]&-9,a,j,s);E=c[m+(o<<3)>>2]|0;o=(c[m+(o<<3)+4>>2]|0)-E|0;if(y$(b+E|0,r+-1|0,o)|0){n=x;C=171;continue}E=(o|0)==0;n=E&1;q=c[w+12>>2]|0;if(E?c[k+(q<<2)>>2]|0:0){n=x;C=171;continue}c[k+(q<<2)>>2]=n;o=o+-1|0;r=r+o|0;o=o+s|0;q=c[T>>2]|0;n=A1(T,r,4)|0;if((n|0)<1)if((n|0)<0){e=1;break b}else n=1;D=r+n|0;E=n}else{q=c[T>>2]|0;if(!q){n=x;C=171;continue}n=A1(T,r,4)|0;if((n|0)<1)if((n|0)<0){e=1;break b}else n=1;o=s;D=r+n|0;E=n}s=o+e|0;if(!(c[u>>2]|0)){e=E;n=x;C=171;continue}y=(s|0)!=0;z=(q|0)==95;A=(s|0)==0;C=J&(q|0)==10;B=(s|0)<1&I;t=0;n=x;while(1){f:do if((c[w>>2]|0)>>>0<=q>>>0){if((c[w+4>>2]|0)>>>0>>0)break;r=w+20|0;e=c[r>>2]|0;do if(e|0){if(!((e&1|0)==0|B|C))break f;if(e&2|0?(x=c[T>>2]|0,!((x|R|0)==0|J&(x|0)==10)):0)break f;do if(e&16|0){if(z)break f;if(g0(q)|0)break f;e=c[T>>2]|0;if((e|0)==95)break;if(!(g0(e)|0))break f}while(0);e=c[r>>2]|0;if(e&32){if(z){e=c[T>>2]|0;if((e|0)==95)break f}else{x=(g0(q)|0)==0;e=c[T>>2]|0;if(x|(e|0)==95)break f}if(g0(e)|0)break f;e=c[r>>2]|0}o=c[T>>2]|0;do if((o|0)!=0&(y&(e&64|0)!=0)){if(z)e=1;else{e=(g0(q)|0)!=0;o=c[T>>2]|0}if((o|0)==95)if(e)break f;else break;else if(e^(g0(o)|0)!=0)break;else break f}while(0);do if(c[r>>2]&128|0){e=c[T>>2]|0;if(A|(e|0)==0)break f;if(z)o=1;else{o=(g0(q)|0)!=0;e=c[T>>2]|0}if((e|0)==95)if(o)break;else break f;else if(o^(g0(e)|0)!=0)break f;else break}while(0);e=c[r>>2]|0;do if(e&4){if(c[S>>2]&2|0)break;if(!(f0(q,c[w+24>>2]|0)|0))break f;e=c[r>>2]|0}while(0);do if(e&4|0){if(!(c[S>>2]&2))break;x=n0(q)|0;e=w+24|0;if(f0(x,c[e>>2]|0)|0)break;x=Q$(q)|0;if(!(f0(x,c[e>>2]|0)|0))break f}while(0);if(!(c[r>>2]&8))break;if(d3(c[w+28>>2]|0,q,c[S>>2]&2)|0)break f}while(0);if(!t){t=c[u>>2]|0;n=c[w+16>>2]|0;break}o=p+28|0;e=c[o>>2]|0;if(!e){e=m2(U,0,0,0,32)|0;if(!e){C=145;break c}c[e+24>>2]=p;c[e+28>>2]=0;x=m2(U,0,0,0,c[Q>>2]<<2)|0;c[e+20>>2]=x;if(!x){C=152;break c}c[o>>2]=e;p=e}else p=e;c[p>>2]=s;c[p+4>>2]=D;c[p+8>>2]=c[u>>2];c[p+12>>2]=c[w+12>>2];c[p+16>>2]=c[T>>2];if((c[Q>>2]|0)>0){o=c[p+20>>2]|0;e=0;do{c[o+(e<<2)>>2]=c[j+(e<<2)>>2];e=e+1|0}while((e|0)<(c[Q>>2]|0))}e=c[w+16>>2]|0;if(!e)break;o=c[e>>2]|0;if((o|0)<=-1)break;r=c[p+20>>2]|0;do{c[r+(o<<2)>>2]=s;e=e+4|0;o=c[e>>2]|0}while((o|0)>-1)}while(0);u=w+40|0;if(!(c[u>>2]|0))break;else w=w+32|0}if(!t){e=E;C=171;continue}if(n){e=c[n>>2]|0;if((e|0)>-1){do{n=n+4|0;c[j+(e<<2)>>2]=s;e=c[n>>2]|0}while((e|0)>-1);q=v;o=D;e=E}else{q=v;o=D;e=E}}else{q=v;o=D;e=E;n=0}}else if((C|0)==171){C=0;r=c[p+24>>2]|0;if(!r)break;t=c[p+8>>2]|0;if(c[t+20>>2]&256|0)c[k+(c[p+12>>2]<<2)>>2]=0;s=c[p>>2]|0;u=c[p+4>>2]|0;c[T>>2]=c[p+16>>2];q=c[Q>>2]|0;if((q|0)>0){p=c[p+20>>2]|0;o=0;do{c[j+(o<<2)>>2]=c[p+(o<<2)>>2];o=o+1|0}while((o|0)<(q|0));p=r;q=v;o=u}else{p=r;q=v;o=u}}r=o;v=q;w=t;x=n;C=79}n=(v|0)>-1;if(n|(c[T>>2]|0)==0){C=180;break}c[T>>2]=H;r=F;q=G;B=H}if((C|0)==53){l2(U);if(j|0)C_(i);if(m|0)C_(h);if(!k){e=12;break a}C_(g);e=12;break a}else if((C|0)==60){l2(U);if(j|0)C_(i);if(m|0)C_(h);if(!k){e=12;break a}C_(g);e=12;break a}else if((C|0)==145){l2(U);if(j|0)C_(i);if(m|0)C_(h);if(!k){e=12;break a}C_(g);e=12;break a}else if((C|0)==152){l2(U);if(j|0)C_(i);if(m|0)C_(h);if(!k){e=12;break a}C_(g);e=12;break a}else if((C|0)==180){c[f>>2]=v;e=(n^1)&1;break}}while(0);l2(U);if(j|0)C_(i);if(m|0)C_(h);if(k)C_(g)}else e=12;while(0);l=V;return e|0}function b3(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=l;l=l+16|0;T=W;c[T>>2]=0;k=e&1;Q=e&2;R=a+56|0;j=c[R>>2]&4;if(!d)N=0;else N=c[a+40>>2]|0;P=N<<2;i=a+52|0;e=c[i>>2]|0;h=e<<3;g=h+8|0;e=P+12+h+(g+(O(P,e)|0)<<1)|0;U=B_(e)|0;if(!U)e=12;else{G3(U|0,0,e|0)|0;e=U+P|0;m=e&3;m=e+((m|0)==0?0:4-m|0)|0;e=m+g|0;n=e&3;n=e+((n|0)==0?0:4-n|0)|0;e=n+g|0;M=e&3;M=e+((M|0)==0?0:4-M|0)|0;e=M+h|0;g=e&3;i=c[i>>2]|0;h=(i|0)>0;if(h){e=e+((g|0)==0?0:4-g|0)|0;g=0;while(1){c[n+(g<<3)+4>>2]=e;e=e+P|0;c[m+(g<<3)+4>>2]=e;g=g+1|0;if((g|0)>=(i|0))break;else e=e+P|0}if(h){e=0;do{c[M+(e<<3)>>2]=-1;e=e+1|0}while((e|0)<(i|0))}}e=A1(T,b,4)|0;if((e|0)<1)if((e|0)<0)e=1;else{i=1;V=11}else{i=e;V=11}a:do if((V|0)==11){L=a+8|0;K=(j|0)!=0;E=(k|0)==0;F=(N|0)>0;G=a+12|0;H=(N|0)<1;I=a+44|0;J=a+32|0;C=a+36|0;D=(N|0)==0;h=0;v=b+i|0;u=0;j=0;e=-1;g=m;A=U;x=m;w=n;while(1){if((e|0)<0){a=c[L>>2]|0;k=a+8|0;b:do if(c[k>>2]|0){p=(u|0)!=0;q=(h|0)==95;r=(u|0)==0;t=K&(h|0)==10;s=(u|0)<1&E;while(1){c:while(1){o=a+12|0;if((c[M+(c[o>>2]<<3)>>2]|0)>=(u|0))break;n=a+20|0;b=c[n>>2]|0;if(!b){V=46;break}d:do if((b&1|0)==0|s|t){if(b&2|0?(B=c[T>>2]|0,!((B|Q|0)==0|K&(B|0)==10)):0)break;do if(b&16|0){if(q)break d;if(g0(h)|0)break d;b=c[T>>2]|0;if((b|0)==95)break;if(!(g0(b)|0))break d}while(0);b=c[n>>2]|0;if(b&32){if(q){b=c[T>>2]|0;if((b|0)==95)break}else{B=(g0(h)|0)==0;b=c[T>>2]|0;if(B|(b|0)==95)break}if(g0(b)|0)break;b=c[n>>2]|0}m=c[T>>2]|0;do if((m|0)!=0&(p&(b&64|0)!=0)){if(q)b=1;else{b=(g0(h)|0)!=0;m=c[T>>2]|0}if((m|0)==95)if(b)break d;else break;else if(b^(g0(m)|0)!=0)break;else break d}while(0);if(!(c[n>>2]&128)){V=46;break c}b=c[T>>2]|0;if(r|(b|0)==0)break;if(q)m=1;else{m=(g0(h)|0)!=0;b=c[T>>2]|0}if((b|0)==95)if(m){V=46;break c}else break;else if(m^(g0(b)|0)!=0)break;else{V=46;break c}}while(0);k=a+40|0;if(!(c[k>>2]|0))break b;else a=a+32|0}if((V|0)==46){V=0;c[g>>2]=c[k>>2];if(F)G3(c[g+4>>2]|0,-1,P|0)|0;k=c[a+16>>2]|0;if(k|0?(S=c[k>>2]|0,(S|0)>-1):0){m=g+4|0;b=S;do{if((b|0)<(N|0))c[(c[m>>2]|0)+(b<<2)>>2]=u;k=k+4|0;b=c[k>>2]|0}while((b|0)>-1)}k=(c[g>>2]|0)!=(c[G>>2]|0);if(k|H){j=k?j:1;e=k?e:u;k=g+4|0}else{k=g+4|0;j=c[k>>2]|0;e=0;do{c[d+(e<<2)>>2]=c[j+(e<<2)>>2];e=e+1|0}while((e|0)!=(N|0));j=1;e=u}B=c[o>>2]|0;c[M+(B<<3)>>2]=u;c[M+(B<<3)+4>>2]=k;g=g+8|0}k=a+40|0;if(!(c[k>>2]|0))break;else a=a+32|0}}while(0);c[g>>2]=0;g=c[T>>2]|0;if(!g)break;else h=g}else{if(D)break;h=c[T>>2]|0;if(!((g|0)!=(x|0)&(h|0)!=0))break}B=u+i|0;g=A1(T,v,4)|0;if((g|0)<1)if((g|0)<0){e=1;break a}else i=1;else i=g;z=v+i|0;if((j|0)!=0&(c[I>>2]|0)!=0){if(!(c[x>>2]|0))g=w;else{o=c[C>>2]|0;p=c[o>>2]|0;q=(p|0)>-1;n=x;g=w;do{m=n+4|0;e:do if(q){k=0;b=p;do{a=c[o+((k|1)<<2)>>2]|0;if((b|0)>=(N|0))break e;j=c[m>>2]|0;if((c[j+(a<<2)>>2]|0)==(c[d+(a<<2)>>2]|0)?(c[j+(b<<2)>>2]|0)<(c[d+(b<<2)>>2]|0):0)break e;k=k+2|0;b=c[o+(k<<2)>>2]|0}while((b|0)>-1);k=m;V=75}else{k=m;j=c[m>>2]|0;V=75}while(0);if((V|0)==75){V=0;c[g>>2]=c[n>>2];v=g+4|0;y=c[v>>2]|0;c[v>>2]=j;c[k>>2]=y;g=g+8|0}n=n+8|0}while((c[n>>2]|0)!=0)}c[g>>2]=0;y=x;j=0}else{y=w;w=x}k=c[w>>2]|0;if(!k){k=A;g=y}else{r=(B|0)!=0;s=(h|0)==95;t=(B|0)==0;v=K&(h|0)==10;u=(B|0)<1&E;q=w;a=A;g=y;while(1){b=k+8|0;if(c[b>>2]|0){p=q+4|0;o=a;n=b;while(1){f:do if((c[k>>2]|0)>>>0<=h>>>0?(c[k+4>>2]|0)>>>0>=h>>>0:0){m=k+20|0;a=c[m>>2]|0;do if(a|0){if(!((a&1|0)==0|u|v)){a=o;break f}if(a&2|0?(A=c[T>>2]|0,!((A|Q|0)==0|K&(A|0)==10)):0){a=o;break f}do if(a&16|0){if(s){a=o;break f}if(g0(h)|0){a=o;break f}a=c[T>>2]|0;if((a|0)==95)break;if(!(g0(a)|0)){a=o;break f}}while(0);a=c[m>>2]|0;if(a&32){if(s){a=c[T>>2]|0;if((a|0)==95){a=o;break f}}else{A=(g0(h)|0)==0;a=c[T>>2]|0;if(A|(a|0)==95){a=o;break f}}if(g0(a)|0){a=o;break f}a=c[m>>2]|0}b=c[T>>2]|0;do if((b|0)!=0&(r&(a&64|0)!=0)){if(s)a=1;else{a=(g0(h)|0)!=0;b=c[T>>2]|0}if((b|0)==95)if(a){a=o;break f}else break;else if(a^(g0(b)|0)!=0)break;else{a=o;break f}}while(0);do if(c[m>>2]&128|0){a=c[T>>2]|0;if(t|(a|0)==0){a=o;break f}if(s)b=1;else{b=(g0(h)|0)!=0;a=c[T>>2]|0}if((a|0)==95)if(b)break;else{a=o;break f}else if(b^(g0(a)|0)!=0){a=o;break f}else break}while(0);a=c[m>>2]|0;do if(a&4){if(c[R>>2]&2|0)break;if(!(f0(h,c[k+24>>2]|0)|0)){a=o;break f}a=c[m>>2]|0}while(0);do if(a&4|0){if(!(c[R>>2]&2))break;A=n0(h)|0;a=k+24|0;if(f0(A,c[a>>2]|0)|0)break;A=Q$(h)|0;if(!(f0(A,c[a>>2]|0)|0)){a=o;break f}}while(0);if(!(c[m>>2]&8))break;if(d3(c[k+28>>2]|0,h,c[R>>2]&2)|0){a=o;break f}}while(0);if(F){b=c[p>>2]|0;a=0;do{c[o+(a<<2)>>2]=c[b+(a<<2)>>2];a=a+1|0}while((a|0)!=(N|0))}a=c[k+16>>2]|0;do if(a|0){b=c[a>>2]|0;if((b|0)<=-1)break;do{if((b|0)<(N|0))c[o+(b<<2)>>2]=B;a=a+4|0;b=c[a>>2]|0}while((b|0)>-1)}while(0);a=c[k+12>>2]|0;b=M+(a<<3)|0;if((c[b>>2]|0)>=(B|0)){a=c[M+(a<<3)+4>>2]|0;b=c[a>>2]|0;if(!(e3(N,c[J>>2]|0,o,b)|0)){a=o;break}c[a>>2]=o;if((c[n>>2]|0)!=(c[G>>2]|0)){a=b;break}if(F)e=0;else{j=1;a=b;e=B;break}while(1){c[d+(e<<2)>>2]=c[o+(e<<2)>>2];e=e+1|0;if((e|0)==(N|0)){j=1;a=b;e=B;break f}}}A=c[n>>2]|0;c[g>>2]=A;x=g+4|0;m=c[x>>2]|0;c[x>>2]=o;c[b>>2]=B;c[M+(a<<3)+4>>2]=x;do if((c[G>>2]|0)==(A|0)){if((e|0)==-1)if(F)e=0;else{e=B;j=1;break}else{if(!F)break;if((c[o>>2]|0)>(c[d>>2]|0))break;else e=0}do{c[d+(e<<2)>>2]=c[o+(e<<2)>>2];e=e+1|0}while((e|0)<(N|0));e=B;j=1}while(0);a=m;g=g+8|0}else a=o;while(0);n=k+40|0;if(!(c[n>>2]|0))break;else{k=k+32|0;o=a}}}q=q+8|0;k=c[q>>2]|0;if(!k){k=a;break}}}c[g>>2]=0;v=z;u=B;A=k;x=y}c[f>>2]=e;e=e>>>31}while(0);C_(U)}l=W;return e|0}function c3(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if((d&8|0)==0&(g|0)>-1?(m=c[e+16>>2]|0,n=c[e+28>>2]|0,l=(a|0)!=0&(n|0)!=0,l):0){k=c[e+48>>2]|0;j=0;do{d=c[m+(j*12|0)>>2]|0;if((d|0)==(k|0))i=g;else i=c[f+(d<<2)>>2]|0;h=b+(j<<3)|0;c[h>>2]=i;d=c[m+(j*12|0)+4>>2]|0;if((d|0)==(k|0))d=g;else d=c[f+(d<<2)>>2]|0;e=b+(j<<3)+4|0;c[e>>2]=d;if((d|0)==-1|(i|0)==-1){c[e>>2]=-1;c[h>>2]=-1}j=j+1|0}while(j>>>0>>0&j>>>0>>0);if(l){d=0;do{i=b+(d<<3)+4|0;j=c[m+(d*12|0)+8>>2]|0;if(j|0?(o=c[j>>2]|0,(o|0)>-1):0){k=b+(d<<3)|0;h=0;f=o;e=c[k>>2]|0;do{if(!((e|0)>=(c[b+(f<<3)>>2]|0)?(c[i>>2]|0)<=(c[b+(f<<3)+4>>2]|0):0)){c[i>>2]=-1;c[k>>2]=-1;e=-1}h=h+1|0;f=c[j+(h<<2)>>2]|0}while((f|0)>-1)}d=d+1|0}while(d>>>0>>0&d>>>0>>0)}else d=0}else d=0;if(d>>>0>>0)G3(b+(d<<3)|0,-1,a-d<<3|0)|0;return}function d3(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a>>2]|0;a:do if(!e)d=0;else{f=(d|0)==0;d=e;while(1){if(f){if(f0(b,d)|0){d=1;break a}}else{e=Q$(b)|0;if(f0(e,c[a>>2]|0)|0){d=1;break a}e=n0(b)|0;if(f0(e,c[a>>2]|0)|0){d=1;break a}}a=a+4|0;d=c[a>>2]|0;if(!d){d=0;break}}}while(0);return d|0}function e3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if((a|0)>0){f=0;while(1){h=c[d+(f<<2)>>2]|0;g=c[e+(f<<2)>>2]|0;if(!(c[b+(f<<2)>>2]|0)){if((h|0)<(g|0)){f=1;break a}if((h|0)>(g|0)){f=0;break a}}else{if((h|0)>(g|0)){f=1;break a}if((h|0)<(g|0)){f=0;break a}}f=f+1|0;if((f|0)>=(a|0)){f=0;break}}}else f=0;while(0);return f|0}function f3(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=O(e,d)|0;e=(d|0)==0?0:e;if((c[f+76>>2]|0)>-1)j=s0(f)|0;else j=0;g=f+74|0;h=a[g>>0]|0;a[g>>0]=h+255|h;g=f+4|0;h=c[g>>2]|0;i=(c[f+8>>2]|0)-h|0;if((i|0)>0){i=i>>>0>>0?i:k;E3(b|0,h|0,i|0)|0;c[g>>2]=(c[g>>2]|0)+i;g=k-i|0;b=b+i|0}else g=k;a:do if(!g)l=13;else{i=f+32|0;while(1){if(J$(f)|0)break;h=nb[c[i>>2]&63](f,b,g)|0;if((h+1|0)>>>0<2)break;g=g-h|0;if(!g){l=13;break a}else b=b+h|0}if(j|0)t0(f);e=((k-g|0)>>>0)/(d>>>0)|0}while(0);if((l|0)==13)if(j)t0(f);return e|0}function g3(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(s0(a)|0)==0;a=h3(a)|0}else a=h3(a)|0;return a|0}function h3(a){a=a|0;var b=0;if(!(c[a>>2]&128))b=1;else b=(c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0?2:1;b=nb[c[a+40>>2]&63](a,0,b)|0;if((b|0)>=0)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)+(c[a+20>>2]|0)-(c[a+28>>2]|0)|0;return b|0}function i3(a){a=a|0;(c[a+76>>2]|0)>-1?s0(a)|0:0;return c[a+60>>2]|0}function j3(b){b=b|0;var d=0,e=0,f=0,g=0;f=c[15653]|0;if((c[f+76>>2]|0)>-1)g=s0(f)|0;else g=0;do if((C1(b,f)|0)<0)b=-1;else{if((a[f+75>>0]|0)!=10?(d=f+20|0,e=c[d>>2]|0,e>>>0<(c[f+16>>2]|0)>>>0):0){c[d>>2]=e+1;a[e>>0]=10;b=0;break}b=(E1(f,10)|0)>>31}while(0);if(g|0)t0(f);return b|0}function k3(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+48|0;i=k+24|0;h=k+16|0;g=k;d=k+28|0;b=d;e=150604;f=b+20|0;do{a[b>>0]=a[e>>0]|0;b=b+1|0;e=e+1|0}while((b|0)<(f|0));e=d+13|0;b=0;while(1){g1(e)|0;c[g>>2]=d;c[g+4>>2]=32962;c[g+8>>2]=384;f=M_(Ha(5,g|0)|0)|0;if((f|0)>-1){j=4;break}if((b|0)<99)b=b+1|0;else{b=0;break}}if((j|0)==4){c[h>>2]=d;wa(10,h|0)|0;b=y1(f,150624)|0;if(!b){c[i>>2]=f;Ja(6,i|0)|0;b=0}}l=k;return b|0}function l3(a){a=a|0;var b=0,e=0,f=0;if((c[a+76>>2]|0)>=0?(s0(a)|0)!=0:0){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0}else b=I$(a)|0}else f=3;do if((f|0)==3){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0;break}else{b=I$(a)|0;break}}while(0);return b|0}function m3(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((c[d+76>>2]|0)>=0?(s0(d)|0)!=0:0){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(i=d+20|0,j=c[i>>2]|0,j>>>0<(c[d+16>>2]|0)>>>0):0){c[i>>2]=j+1;a[j>>0]=f}else e=E1(d,b)|0;t0(d)}else k=3;do if((k|0)==3){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(g=d+20|0,h=c[g>>2]|0,h>>>0<(c[d+16>>2]|0)>>>0):0){c[g>>2]=h+1;a[h>>0]=f;break}e=E1(d,b)|0}while(0);return e|0}function n3(a){a=a|0;return g3(a)|0}function o3(){}function p3(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=O(e,f)|0;d=a>>>16;a=(c>>>16)+(O(e,d)|0)|0;e=b>>>16;b=O(e,f)|0;return (z=(a>>>16)+(O(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function q3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=p3(e,f)|0;a=z;return (z=(O(b,f)|0)+(O(d,e)|0)+a|a&0,c|0|0)|0}function r3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (z=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function s3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (z=d,a-c>>>0|0)|0}function t3(b){b=b|0;var c=0;c=a[n+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[n+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[n+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[n+(b>>>24)>>0]|0)+24|0} +function u3(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (z=n,f)|0}else{if(!g){n=0;f=0;return (z=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (z=n,f)|0}}g=(i|0)==0;do if(h){if(!g){g=(R(i|0)|0)-(R(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (z=n,f)|0}g=h-1|0;if(g&h|0){i=(R(h|0)|0)+33-(R(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(f|0){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (z=o,p)|0}else{p=t3(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (z=o,p)|0}}else{if(g){if(f|0){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (z=o,p)|0}if(!l){if(f|0){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (z=o,p)|0}g=i-1|0;if(!(g&i)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((t3(i|0)|0)>>>0);return (z=o,p)|0}g=(R(i|0)|0)-(R(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (z=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=r3(m|0,l|0,-1,-1)|0;d=z;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;s3(k|0,d|0,e|0,n|0)|0;p=z;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=s3(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=z;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (z=o,p)|0}function v3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return u3(a,b,c,d,0)|0}function w3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g|0;u3(a,b,d,e,f)|0;l=g;return (z=c[f+4>>2]|0,c[f>>2]|0)|0}function x3(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){z=b>>c;return a>>>c|(b&(1<>c-32|0}function y3(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){z=b>>>c;return a>>>c|(b&(1<>>c-32|0}function z3(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){z=b<>>32-c;return a<>8&255|0}function B3(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function C3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;q=q+1|0;c[a>>2]=q;while((f|0)<(e|0)){if(!(c[d+(f<<3)>>2]|0)){c[d+(f<<3)>>2]=q;c[d+((f<<3)+4)>>2]=b;c[d+((f<<3)+8)>>2]=0;z=e;return d|0}f=f+1|0}e=e*2|0;d=E_(d|0,8*(e+1|0)|0)|0;d=C3(a|0,b|0,d|0,e|0)|0;z=e;return d|0}function D3(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;while((f|0)<(d|0)){e=c[b+(f<<3)>>2]|0;if(!e)break;if((e|0)==(a|0))return c[b+((f<<3)+4)>>2]|0;f=f+1|0}return 0}function E3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192)return Ra(b|0,d|0,e|0)|0;h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function F3(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else E3(b,c,d)|0;return b|0}function G3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;g=f-64|0;i=d|d<<8|d<<16|d<<24;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function H3(a){a=a|0;var b=0,d=0;d=c[i>>2]|0;b=d+a|0;if((a|0)>0&(b|0)<(d|0)|(b|0)<0){W()|0;va(12);return -1}c[i>>2]=b;if((b|0)>(V()|0)?(U()|0)==0:0){c[i>>2]=d;va(12);return -1}return d|0}function I3(a){a=a|0;return +gb[a&1]()}function J3(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;return +hb[a&7](+b,+c,+d)}function K3(a,b){a=a|0;b=b|0;return +ib[a&1](b|0)}function L3(a){a=a|0;return jb[a&3]()|0}function M3(a,b){a=a|0;b=b|0;return kb[a&63](b|0)|0}function N3(a,b,c){a=a|0;b=b|0;c=c|0;return lb[a&127](b|0,c|0)|0}function O3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return mb[a&3](b|0,c|0,+d,+e)|0}function P3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return nb[a&63](b|0,c|0,d|0)|0}function Q3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ob[a&127](b|0,c|0,d|0,e|0)|0}function R3(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return pb[a&127](b|0,c|0,d|0,e|0,f|0)|0}function S3(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return qb[a&1](b|0,c|0,d|0,e|0,f|0,g|0)|0}function T3(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return rb[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function U3(a){a=a|0;sb[a&15]()}function V3(a,b){a=a|0;b=b|0;tb[a&127](b|0)}function W3(a,b,c){a=a|0;b=b|0;c=c|0;ub[a&63](b|0,c|0)}function X3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;vb[a&127](b|0,c|0,d|0)}function Y3(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;wb[a&15](b|0,c|0,d|0,+e,+f,g|0)}function Z3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;xb[a&31](b|0,c|0,d|0,e|0)}function _3(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;yb[a&15](b|0,c|0,d|0,e|0,f|0)}function $3(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;zb[a&15](b|0,c|0,d|0,e|0,f|0,g|0)}function a4(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;Ab[a&0](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function b4(){S(0);return 0.0}function c4(a,b,c){a=+a;b=+b;c=+c;S(1);return 0.0}function d4(a){a=a|0;S(2);return 0.0}function e4(){S(3);return 0}function f4(a){a=a|0;S(4);return 0}function g4(a,b){a=a|0;b=b|0;S(5);return 0}function h4(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;S(6);return 0}function i4(a,b,c){a=a|0;b=b|0;c=c|0;S(7);return 0}function j4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;S(8);return 0}function k4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;S(9);return 0}function l4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;S(10);return 0}function m4(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;S(11);return 0}function n4(){S(12)}function o4(a){a=a|0;S(13)}function p4(a,b){a=a|0;b=b|0;S(14)}function q4(a,b,c){a=a|0;b=b|0;c=c|0;S(15)}function r4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;S(16)}function s4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;S(17)}function t4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;S(18)}function u4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;S(19)}function v4(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;S(20)} + +// EMSCRIPTEN_END_FUNCS +var gb=[b4,EL];var hb=[c4,QF,PF,RF,SF,c4,c4,c4];var ib=[d4,LL];var jb=[e4,dq,DH,uI];var kb=[f4,dh,yg,Mm,Nm,Ey,Hy,rN,sN,hP,iP,jP,kP,lP,mP,nP,oP,J_,Ib,aC,zl,Cl,$m,uH,$x,Ry,_x,zH,EH,ay,dN,tH,iN,jN,aV,B_,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4,f4];var lb=[g4,gy,Dy,Iy,DK,EK,vK,rK,$J,JT,KT,LT,MT,NT,OT,QT,RT,ST,TT,UT,VT,WT,XT,YT,ZT,_T,$T,aU,bU,cU,dU,eU,fU,gU,hU,iU,jU,kU,lU,mU,vX,wX,yX,VX,WX,XX,YX,ZX,_X,$X,aY,TY,UY,WY,iY,jY,lY,_B,og,ch,Fh,hi,zi,Kk,Ik,Al,Dl,_o,nq,Jq,Lq,Nq,Oq,Qq,Pq,$q,hs,ms,os,su,lB,kB,jB,fD,Sy,wH,sD,ID,DD,ED,FE,C1,m3,yL,MM,wx,OR,Dx,Fx,eN,a$,nQ,IT,YU,ZU,E_,jX,kX,lX,Y2,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4,g4];var mb=[h4,pt,ut,h4];var nb=[i4,Im,Lu,jw,rw,Aw,Fw,Cy,Gy,GI,zM,yR,zX,XY,mY,K_,L_,P_,Q_,F0,Ow,Ym,zu,sp,ns,Hw,dD,X0,uA,f1,AL,CI,rO,VU,GY,xZ,rZ,BZ,O1,i4,i4,i4,i4,i4,i4,i4,i4,i4,i4,i4,i4,i4,i4,i4,i4,i4,i4,i4,i4,i4,i4,i4,i4,i4];var ob=[j4,Km,Vq,Mu,lw,tw,Bx,zA,Cx,Vx,iy,ky,vy,uy,Jy,Ny,Py,wI,BM,UN,SN,OP,AR,WR,VR,oX,pX,qX,rX,sX,tX,uX,xX,BX,MY,NY,OY,PY,QY,RY,SY,VY,ZY,bY,cY,dY,eY,fY,gY,hY,kY,oY,Kw,zz,hD,CL,PV,SV,ZV,iW,rW,xW,vW,yW,hX,CZ,WW,IY,JY,yZ,zZ,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4,j4];var pb=[k4,hy,aK,wK,CX,DX,TX,UX,oZ,_Y,$Y,pY,qY,mX,nX,EZ,FZ,GZ,HZ,JZ,KZ,LZ,MZ,NZ,PZ,QZ,RZ,SZ,TZ,OZ,r_,s_,i_,b_,UZ,VZ,WZ,YZ,XZ,ZZ,_Z,$Z,a_,c_,d_,e_,f_,g_,h_,j_,k_,l_,m_,q_,o_,n_,p_,x_,t_,u_,v_,w_,y_,z_,A_,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4,k4];var qb=[l4,zU];var rb=[m4,qZ,AZ,m4];var sb=[n4,DL,AH,BH,CH,GH,HH,IH,ER,n4,n4,n4,n4,n4,n4,n4];var tb=[o4,Nb,Ob,Sb,Tb,Ub,mc,nc,Lc,Mc,Nc,Oc,Pc,Qc,Rc,bd,cd,fd,gd,hd,id,jd,kd,ld,xd,yd,zd,Bd,Cd,Dd,Ed,Fd,Gd,Hd,Id,Td,Ud,Vd,Xd,Yd,Zd,_d,$d,ae,be,ce,de,fe,se,te,ue,ve,Ge,He,Ie,Ke,Xe,Ye,Ze,$e,af,bf,cf,df,ef,ff,gf,hf,rf,sf,tf,uf,Xf,Sf,qm,am,ep,Fo,$n,bo,Mp,Np,Yl,Zl,eo,mo,oo,zo,ly,HJ,ZJ,JJ,IJ,tK,eJ,hJ,pP,uP,Lf,El,Jo,No,fp,C_,$w,iD,bF,DR,kO,lN,xI,XR,yU,TU,UU,_U,o4,o4,o4,o4,o4,o4,o4,o4,o4,o4,o4,o4];var ub=[p4,Tc,Yc,nd,sd,Pd,le,Be,Qe,of,Af,Ky,bK,FK,xK,sK,XJ,YJ,BK,CK,sP,wP,OI,Rw,eD,FH,cN,zT,xU,WU,XU,$U,bV,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4,p4];var vb=[q4,Vb,Wb,Zb,Kc,Sc,Uc,Xc,md,od,rd,Kd,Ld,Od,ge,he,ke,we,xe,Ae,Le,Me,Pe,jf,kf,nf,vf,wf,zf,pk,qk,rk,Jm,kw,sw,Yw,my,Oy,vz,AA,XC,AG,vI,HI,gJ,AM,DM,TN,RN,qP,rP,tP,vP,xP,zR,mT,lT,px,Rx,az,Dz,Gz,yH,BL,AI,gN,kN,nT,pT,qT,yT,AT,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4,q4];var wb=[r4,wE,xE,yE,zE,AE,BE,CE,DE,r4,r4,r4,r4,r4,r4,r4];var xb=[s4,Xb,Vc,pd,Ad,Md,Wd,ie,ye,Ne,_e,lf,xf,Of,Nf,Mf,Kf,Jf,If,lc,Hf,Gf,jy,_J,uK,AX,YY,nY,Z0,fN,hN,KY];var yb=[t4,dd,Jd,Qd,ee,Je,Bl,gD,mN,t4,t4,t4,t4,t4,t4,t4];var zb=[u4,Yb,Wc,qd,Nd,je,ze,Oe,mf,yf,nN,u4,u4,u4,u4,u4];var Ab=[v4];return{___errno_location:N_,___muldi3:q3,___udivdi3:v3,___uremdi3:w3,_bitshift64Ashr:x3,_bitshift64Lshr:y3,_bitshift64Shl:z3,_dtextract:yw,_free:C_,_htons:L0,_i64Add:r3,_i64Subtract:s3,_llvm_bswap_i16:A3,_llvm_bswap_i32:B3,_malloc:B_,_memalign:H_,_memcpy:E3,_memmove:F3,_memset:G3,_realloc:E_,_saveSetjmp:C3,_sbrk:H3,_testSetjmp:D3,_vizCreateFile:Kb,_vizLastErrorMessage:Jb,_vizRenderFromString:Mb,_vizSetY_invert:Lb,dynCall_d:I3,dynCall_dddd:J3,dynCall_di:K3,dynCall_i:L3,dynCall_ii:M3,dynCall_iii:N3,dynCall_iiidd:O3,dynCall_iiii:P3,dynCall_iiiii:Q3,dynCall_iiiiii:R3,dynCall_iiiiiii:S3,dynCall_iiiiiiiiiii:T3,dynCall_v:U3,dynCall_vi:V3,dynCall_vii:W3,dynCall_viii:X3,dynCall_viiiddi:Y3,dynCall_viiii:Z3,dynCall_viiiii:_3,dynCall_viiiiii:$3,dynCall_viiiiiiiii:a4,establishStackSpace:Eb,getTempRet0:Hb,runPostSets:o3,setTempRet0:Gb,setThrew:Fb,stackAlloc:Bb,stackRestore:Db,stackSave:Cb}}) + + +// EMSCRIPTEN_END_ASM +(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var ___uremdi3=Module["___uremdi3"]=asm["___uremdi3"];var _bitshift64Ashr=Module["_bitshift64Ashr"]=asm["_bitshift64Ashr"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _dtextract=Module["_dtextract"]=asm["_dtextract"];var _free=Module["_free"]=asm["_free"];var _htons=Module["_htons"]=asm["_htons"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _llvm_bswap_i16=Module["_llvm_bswap_i16"]=asm["_llvm_bswap_i16"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memalign=Module["_memalign"]=asm["_memalign"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _memmove=Module["_memmove"]=asm["_memmove"];var _memset=Module["_memset"]=asm["_memset"];var _realloc=Module["_realloc"]=asm["_realloc"];var _saveSetjmp=Module["_saveSetjmp"]=asm["_saveSetjmp"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var _testSetjmp=Module["_testSetjmp"]=asm["_testSetjmp"];var _vizCreateFile=Module["_vizCreateFile"]=asm["_vizCreateFile"];var _vizLastErrorMessage=Module["_vizLastErrorMessage"]=asm["_vizLastErrorMessage"];var _vizRenderFromString=Module["_vizRenderFromString"]=asm["_vizRenderFromString"];var _vizSetY_invert=Module["_vizSetY_invert"]=asm["_vizSetY_invert"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var getTempRet0=Module["getTempRet0"]=asm["getTempRet0"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var setTempRet0=Module["setTempRet0"]=asm["setTempRet0"];var setThrew=Module["setThrew"]=asm["setThrew"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var stackSave=Module["stackSave"]=asm["stackSave"];var dynCall_d=Module["dynCall_d"]=asm["dynCall_d"];var dynCall_dddd=Module["dynCall_dddd"]=asm["dynCall_dddd"];var dynCall_di=Module["dynCall_di"]=asm["dynCall_di"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiidd=Module["dynCall_iiidd"]=asm["dynCall_iiidd"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=asm["dynCall_iiiiiiiiiii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_viiiddi=Module["dynCall_viiiddi"]=asm["dynCall_viiiddi"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=asm["dynCall_viiiiiiiii"];Module["asm"]=asm;Module["ccall"]=ccall;Module["Pointer_stringify"]=Pointer_stringify;Module["UTF8ToString"]=UTF8ToString;if(memoryInitializer){if(!isDataURI(memoryInitializer)){if(typeof Module["locateFile"]==="function"){memoryInitializer=Module["locateFile"](memoryInitializer)}else if(Module["memoryInitializerPrefixURL"]){memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer}}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency("memory initializer");var applyMemoryInitializer=(function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency("memory initializer")});function doBrowserLoad(){Module["readAsync"](memoryInitializer,applyMemoryInitializer,(function(){throw"could not load memory initializer "+memoryInitializer}))}var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module["memoryInitializerRequest"]){function useRequest(){var request=Module["memoryInitializerRequest"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module["memoryInitializerRequestURL"]);if(data){response=data.buffer}else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)}if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0)}else{Module["memoryInitializerRequest"].addEventListener("load",useRequest)}}else{doBrowserLoad()}}}function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};function run(args){args=args||Module["arguments"];if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]&&status===0){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=exit;function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;throw"abort("+what+"). Build with -s ASSERTIONS=1 for more info."}Module["abort"]=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}Module["noExitRuntime"]=true;run() + + + + + return Module; +}; + +function render(instance, src, options) { + var i; + for (i = 0; i < options.files.length; i++) { + instance['ccall']('vizCreateFile', 'number', ['string', 'string'], [options.files[i].path, options.files[i].data]); + } + + instance['ccall']('vizSetY_invert', 'number', ['number'], [options.yInvert ? 1 : 0]); + + var resultPointer = instance['ccall']('vizRenderFromString', 'number', ['string', 'string', 'string'], [src, options.format, options.engine]); + var resultString = instance['Pointer_stringify'](resultPointer); + instance['ccall']('free', 'number', ['number'], [resultPointer]); + + var errorMessagePointer = instance['ccall']('vizLastErrorMessage', 'number', [], []); + var errorMessageString = instance['Pointer_stringify'](errorMessagePointer); + instance['ccall']('free', 'number', ['number'], [errorMessagePointer]); + + if (errorMessageString != '') { + throw new Error(errorMessageString); + } + + return resultString; +} + +if (typeof importScripts === "function") { + var instance = Module(); + + onmessage = function(event) { + var id = event.data.id; + var src = event.data.src; + var options = event.data.options; + + try { + var result = render(instance, src, options); + postMessage({ id: id, result: result }); + } catch (error) { + postMessage({ id: id, error: { message: error.message, fileName: error.fileName, lineNumber: error.lineNumber } }); + } + } +} + +if (typeof exports === 'object' && typeof module !== 'undefined') { + module.exports = { render: render, Module: Module }; +} else if (typeof define === 'function' && define.amd) { + define(function() { return { render: render, Module: Module }; }); +} + +if (typeof global.Viz !== 'undefined') { + global.Viz.render = render; + global.Viz.Module = Module; +} + +})(typeof self !== 'undefined' ? self : this); diff --git a/src/Routing/samples/RoutingSandbox/wwwroot/graph-ui.html b/src/Routing/samples/RoutingSandbox/wwwroot/graph-ui.html new file mode 100644 index 0000000000..3da8cc8260 --- /dev/null +++ b/src/Routing/samples/RoutingSandbox/wwwroot/graph-ui.html @@ -0,0 +1,34 @@ + + + + + GraphViz UI + + +

Your App's Routing state machine

+

Loading...

+
+ + + + + + + \ No newline at end of file diff --git a/src/Routing/samples/RoutingSandbox/wwwroot/viz.js b/src/Routing/samples/RoutingSandbox/wwwroot/viz.js new file mode 100644 index 0000000000..520aee72ec --- /dev/null +++ b/src/Routing/samples/RoutingSandbox/wwwroot/viz.js @@ -0,0 +1,331 @@ +/* +Viz.js 2.0.0 (Graphviz 2.40.1, Expat 2.2.5, Emscripten 1.37.36) +Copyright (c) 2014-2018 Michael Daines +Licensed under MIT license + +This distribution contains other software in object code form: + +Graphviz +Licensed under Eclipse Public License - v 1.0 +http://www.graphviz.org + +Expat +Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd and Clark Cooper +Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers. +Licensed under MIT license +http://www.libexpat.org + +zlib +Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler +http://www.zlib.net/zlib_license.html +*/ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.Viz = factory()); +}(this, (function () { 'use strict'; + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + + var classCallCheck = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + }; + + var createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + var WorkerWrapper = function () { + function WorkerWrapper(worker) { + var _this = this; + + classCallCheck(this, WorkerWrapper); + + this.worker = worker; + this.listeners = []; + this.nextId = 0; + + this.worker.addEventListener('message', function (event) { + var id = event.data.id; + var error = event.data.error; + var result = event.data.result; + + _this.listeners[id](error, result); + delete _this.listeners[id]; + }); + } + + createClass(WorkerWrapper, [{ + key: 'render', + value: function render(src, options) { + var _this2 = this; + + return new Promise(function (resolve, reject) { + var id = _this2.nextId++; + + _this2.listeners[id] = function (error, result) { + if (error) { + reject(new Error(error.message, error.fileName, error.lineNumber)); + return; + } + resolve(result); + }; + + _this2.worker.postMessage({ id: id, src: src, options: options }); + }); + } + }]); + return WorkerWrapper; + }(); + + var ModuleWrapper = function ModuleWrapper(module, render) { + classCallCheck(this, ModuleWrapper); + + var instance = module(); + this.render = function (src, options) { + return new Promise(function (resolve, reject) { + try { + resolve(render(instance, src, options)); + } catch (error) { + reject(error); + } + }); + }; + }; + + // https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding + + + function b64EncodeUnicode(str) { + return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) { + return String.fromCharCode('0x' + p1); + })); + } + + function defaultScale() { + if ('devicePixelRatio' in window && window.devicePixelRatio > 1) { + return window.devicePixelRatio; + } else { + return 1; + } + } + + function svgXmlToImageElement(svgXml) { + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref$scale = _ref.scale, + scale = _ref$scale === undefined ? defaultScale() : _ref$scale, + _ref$mimeType = _ref.mimeType, + mimeType = _ref$mimeType === undefined ? "image/png" : _ref$mimeType, + _ref$quality = _ref.quality, + quality = _ref$quality === undefined ? 1 : _ref$quality; + + return new Promise(function (resolve, reject) { + var svgImage = new Image(); + + svgImage.onload = function () { + var canvas = document.createElement('canvas'); + canvas.width = svgImage.width * scale; + canvas.height = svgImage.height * scale; + + var context = canvas.getContext("2d"); + context.drawImage(svgImage, 0, 0, canvas.width, canvas.height); + + canvas.toBlob(function (blob) { + var image = new Image(); + image.src = URL.createObjectURL(blob); + image.width = svgImage.width; + image.height = svgImage.height; + + resolve(image); + }, mimeType, quality); + }; + + svgImage.onerror = function (e) { + var error; + + if ('error' in e) { + error = e.error; + } else { + error = new Error('Error loading SVG'); + } + + reject(error); + }; + + svgImage.src = 'data:image/svg+xml;base64,' + b64EncodeUnicode(svgXml); + }); + } + + function svgXmlToImageElementFabric(svgXml) { + var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref2$scale = _ref2.scale, + scale = _ref2$scale === undefined ? defaultScale() : _ref2$scale, + _ref2$mimeType = _ref2.mimeType, + mimeType = _ref2$mimeType === undefined ? 'image/png' : _ref2$mimeType, + _ref2$quality = _ref2.quality, + quality = _ref2$quality === undefined ? 1 : _ref2$quality; + + var multiplier = scale; + + var format = void 0; + if (mimeType == 'image/jpeg') { + format = 'jpeg'; + } else if (mimeType == 'image/png') { + format = 'png'; + } + + return new Promise(function (resolve, reject) { + fabric.loadSVGFromString(svgXml, function (objects, options) { + // If there's something wrong with the SVG, Fabric may return an empty array of objects. Graphviz appears to give us at least one element back even given an empty graph, so we will assume an error in this case. + if (objects.length == 0) { + reject(new Error('Error loading SVG with Fabric')); + } + + var element = document.createElement("canvas"); + element.width = options.width; + element.height = options.height; + + var canvas = new fabric.Canvas(element, { enableRetinaScaling: false }); + var obj = fabric.util.groupSVGElements(objects, options); + canvas.add(obj).renderAll(); + + var image = new Image(); + image.src = canvas.toDataURL({ format: format, multiplier: multiplier, quality: quality }); + image.width = options.width; + image.height = options.height; + + resolve(image); + }); + }); + } + + var Viz = function () { + function Viz() { + var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + workerURL = _ref3.workerURL, + worker = _ref3.worker, + Module = _ref3.Module, + render = _ref3.render; + + classCallCheck(this, Viz); + + if (typeof workerURL !== 'undefined') { + this.wrapper = new WorkerWrapper(new Worker(workerURL)); + } else if (typeof worker !== 'undefined') { + this.wrapper = new WorkerWrapper(worker); + } else if (typeof Module !== 'undefined' && typeof render !== 'undefined') { + this.wrapper = new ModuleWrapper(Module, render); + } else if (typeof Viz.Module !== 'undefined' && typeof Viz.render !== 'undefined') { + this.wrapper = new ModuleWrapper(Viz.Module, Viz.render); + } else { + throw new Error('Must specify workerURL or worker option, Module and render options, or include one of full.render.js or lite.render.js after viz.js.'); + } + } + + createClass(Viz, [{ + key: 'renderString', + value: function renderString(src) { + var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref4$format = _ref4.format, + format = _ref4$format === undefined ? 'svg' : _ref4$format, + _ref4$engine = _ref4.engine, + engine = _ref4$engine === undefined ? 'dot' : _ref4$engine, + _ref4$files = _ref4.files, + files = _ref4$files === undefined ? [] : _ref4$files, + _ref4$images = _ref4.images, + images = _ref4$images === undefined ? [] : _ref4$images, + _ref4$yInvert = _ref4.yInvert, + yInvert = _ref4$yInvert === undefined ? false : _ref4$yInvert; + + for (var i = 0; i < images.length; i++) { + files.push({ + path: images[i].path, + data: '\n\n' + }); + } + + return this.wrapper.render(src, { format: format, engine: engine, files: files, images: images, yInvert: yInvert }); + } + }, { + key: 'renderSVGElement', + value: function renderSVGElement(src) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + return this.renderString(src, _extends({}, options, { format: 'svg' })).then(function (str) { + var parser = new DOMParser(); + return parser.parseFromString(str, 'image/svg+xml').documentElement; + }); + } + }, { + key: 'renderImageElement', + value: function renderImageElement(src) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var scale = options.scale, + mimeType = options.mimeType, + quality = options.quality; + + + return this.renderString(src, _extends({}, options, { format: 'svg' })).then(function (str) { + if ((typeof fabric === 'undefined' ? 'undefined' : _typeof(fabric)) === "object" && fabric.loadSVGFromString) { + return svgXmlToImageElementFabric(str, { scale: scale, mimeType: mimeType, quality: quality }); + } else { + return svgXmlToImageElement(str, { scale: scale, mimeType: mimeType, quality: quality }); + } + }); + } + }, { + key: 'renderJSONObject', + value: function renderJSONObject(src) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var format = options.format; + + + if (format !== 'json' || format !== 'json0') { + format = 'json'; + } + + return this.renderString(src, _extends({}, options, { format: format })).then(function (str) { + return JSON.parse(str); + }); + } + }]); + return Viz; + }(); + + return Viz; + +}))); diff --git a/src/Routing/shared/Microsoft.AspNetCore.Routing.DecisionTree.Sources/DecisionTreeBuilder.cs b/src/Routing/shared/Microsoft.AspNetCore.Routing.DecisionTree.Sources/DecisionTreeBuilder.cs index 76792f6793..293ce4aa46 100644 --- a/src/Routing/shared/Microsoft.AspNetCore.Routing.DecisionTree.Sources/DecisionTreeBuilder.cs +++ b/src/Routing/shared/Microsoft.AspNetCore.Routing.DecisionTree.Sources/DecisionTreeBuilder.cs @@ -74,14 +74,16 @@ namespace Microsoft.AspNetCore.Routing.DecisionTree { public static DecisionTreeNode GenerateTree(IReadOnlyList items, IClassifier classifier) { - var itemDescriptors = new List>(); - for (var i = 0; i < items.Count; i++) + var itemCount = items.Count; + var itemDescriptors = new List>(itemCount); + for (var i = 0; i < itemCount; i++) { + var item = items[i]; itemDescriptors.Add(new ItemDescriptor() { - Criteria = classifier.GetCriteria(items[i]), + Criteria = classifier.GetCriteria(item), Index = i, - Item = items[i], + Item = item, }); } @@ -95,7 +97,7 @@ namespace Microsoft.AspNetCore.Routing.DecisionTree private static DecisionTreeNode GenerateNode( TreeBuilderContext context, DecisionCriterionValueEqualityComparer comparer, - IList> items) + List> items) { // The extreme use of generics here is intended to reduce the number of intermediate // allocations of wrapper classes. Performance testing found that building these trees allocates @@ -123,15 +125,13 @@ namespace Microsoft.AspNetCore.Routing.DecisionTree unsatisfiedCriteria++; - Criterion criterion; - if (!criteria.TryGetValue(kvp.Key, out criterion)) + if (!criteria.TryGetValue(kvp.Key, out var criterion)) { criterion = new Criterion(comparer); criteria.Add(kvp.Key, criterion); } - List> branch; - if (!criterion.TryGetValue(kvp.Value, out branch)) + if (!criterion.TryGetValue(kvp.Value, out var branch)) { branch = new List>(); criterion.Add(kvp.Value, branch); @@ -156,16 +156,17 @@ namespace Microsoft.AspNetCore.Routing.DecisionTree foreach (var branch in criterion.Value) { - var reducedItems = new List>(); + bool hasReducedItems = false; + foreach (var item in branch.Value) { if (context.MatchedItems.Add(item)) { - reducedItems.Add(item); + hasReducedItems = true; } } - if (reducedItems.Count > 0) + if (hasReducedItems) { var childContext = new TreeBuilderContext(context); childContext.CurrentCriteria.Add(criterion.Key); @@ -189,7 +190,7 @@ namespace Microsoft.AspNetCore.Routing.DecisionTree return new DecisionTreeNode() { - Criteria = reducedCriteria.ToList(), + Criteria = reducedCriteria, Matches = matches, }; } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/Endpoint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/Endpoint.cs new file mode 100644 index 0000000000..16202b45f5 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/Endpoint.cs @@ -0,0 +1,49 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Http +{ + /// + /// Respresents a logical endpoint in an application. + /// + public class Endpoint + { + /// + /// Creates a new instance of . + /// + /// The delegate used to process requests for the endpoint. + /// + /// The endpoint . May be null. + /// + /// + /// The informational display name of the endpoint. May be null. + /// + public Endpoint( + RequestDelegate requestDelegate, + EndpointMetadataCollection metadata, + string displayName) + { + // All are allowed to be null + RequestDelegate = requestDelegate; + Metadata = metadata ?? EndpointMetadataCollection.Empty; + DisplayName = displayName; + } + + /// + /// Gets the informational display name of this endpoint. + /// + public string DisplayName { get; } + + /// + /// Gets the collection of metadata associated with this endpoint. + /// + public EndpointMetadataCollection Metadata { get; } + + /// + /// Gets the delegate used to process requests for the endpoint. + /// + public RequestDelegate RequestDelegate { get; } + + public override string ToString() => DisplayName ?? base.ToString(); + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/EndpointMetadataCollection.cs b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/EndpointMetadataCollection.cs new file mode 100644 index 0000000000..137423a886 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/EndpointMetadataCollection.cs @@ -0,0 +1,201 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; + +namespace Microsoft.AspNetCore.Http +{ + /// + /// A collection of arbitrary metadata associated with an endpoint. + /// + /// + /// instances contain a list of metadata items + /// of arbitrary types. The metadata items are stored as an ordered collection with + /// items arranged in ascending order of precedence. + /// + public sealed class EndpointMetadataCollection : IReadOnlyList + { + /// + /// An empty . + /// + public static readonly EndpointMetadataCollection Empty = new EndpointMetadataCollection(Array.Empty()); + + private readonly object[] _items; + private readonly ConcurrentDictionary _cache; + + /// + /// Creates a new instance of . + /// + /// The metadata items. + public EndpointMetadataCollection(IEnumerable items) + { + if (items == null) + { + throw new ArgumentNullException(nameof(items)); + } + + _items = items.ToArray(); + _cache = new ConcurrentDictionary(); + } + + /// + /// Creates a new instance of . + /// + /// The metadata items. + public EndpointMetadataCollection(params object[] items) + : this((IEnumerable)items) + { + } + + /// + /// Gets the item at . + /// + /// The index of the item to retrieve. + /// The item at . + public object this[int index] => _items[index]; + + /// + /// Gets the count of metadata items. + /// + public int Count => _items.Length; + + /// + /// Gets the most significant metadata item of type . + /// + /// The type of metadata to retrieve. + /// + /// The most significant metadata of type or null. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public T GetMetadata() where T : class + { + if (_cache.TryGetValue(typeof(T), out var result)) + { + var length = result.Length; + return length > 0 ? (T)result[length - 1] : default; + } + + return GetMetadataSlow(); + } + + private T GetMetadataSlow() where T : class + { + var array = GetOrderedMetadataSlow(); + var length = array.Length; + return length > 0 ? array[length - 1] : default; + } + + /// + /// Gets the metadata items of type in ascending + /// order of precedence. + /// + /// The type of metadata. + /// A sequence of metadata items of . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public IEnumerable GetOrderedMetadata() where T : class + { + if (_cache.TryGetValue(typeof(T), out var result)) + { + return (T[])result; + } + + return GetOrderedMetadataSlow(); + } + + private T[] GetOrderedMetadataSlow() where T : class + { + var items = new List(); + for (var i = 0; i < _items.Length; i++) + { + if (_items[i] is T item) + { + items.Add(item); + } + } + + var array = items.ToArray(); + _cache.TryAdd(typeof(T), array); + return array; + } + + /// + /// Gets an of all metadata items. + /// + /// An of all metadata items. + public Enumerator GetEnumerator() => new Enumerator(this); + + /// + /// Gets an of all metadata items. + /// + /// An of all metadata items. + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); + + /// + /// Gets an of all metadata items. + /// + /// An of all metadata items. + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); + + /// + /// Enumerates the elements of an . + /// + public struct Enumerator : IEnumerator + { + // Intentionally not readonly to prevent defensive struct copies + private object[] _items; + private int _index; + + internal Enumerator(EndpointMetadataCollection collection) + { + _items = collection._items; + _index = 0; + Current = null; + } + + /// + /// Gets the element at the current position of the enumerator + /// + public object Current { get; private set; } + + /// + /// Releases all resources used by the . + /// + public void Dispose() + { + } + + /// + /// Advances the enumerator to the next element of the . + /// + /// + /// true if the enumerator was successfully advanced to the next element; + /// false if the enumerator has passed the end of the collection. + /// + public bool MoveNext() + { + if (_index < _items.Length) + { + Current = _items[_index++]; + return true; + } + + Current = null; + return false; + } + + /// + /// Sets the enumerator to its initial position, which is before the first element in the collection. + /// + public void Reset() + { + _index = 0; + Current = null; + } + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/IEndpointFeature.cs b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/IEndpointFeature.cs new file mode 100644 index 0000000000..ff0762bb20 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/IEndpointFeature.cs @@ -0,0 +1,18 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Http.Features +{ + /// + /// A feature interface for endpoint routing. Use + /// to access an instance associated with the current request. + /// + public interface IEndpointFeature + { + /// + /// Gets or sets the selected for the current + /// request. + /// + Endpoint Endpoint { get; set; } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/IOutboundParameterTransformer.cs b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/IOutboundParameterTransformer.cs new file mode 100644 index 0000000000..bcc9e21c4d --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/IOutboundParameterTransformer.cs @@ -0,0 +1,19 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Defines the contract that a class must implement to transform route values while building + /// a URI. + /// + public interface IOutboundParameterTransformer : IParameterPolicy + { + /// + /// Transforms the specified route value to a string for inclusion in a URI. + /// + /// The route value to transform. + /// The transformed value. + string TransformOutbound(object value); + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/IParameterPolicy.cs b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/IParameterPolicy.cs new file mode 100644 index 0000000000..75af7b2830 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/IParameterPolicy.cs @@ -0,0 +1,12 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// A marker interface for types that are associated with route parameters. + /// + public interface IParameterPolicy + { + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/IRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/IRouteConstraint.cs index 00eb916510..5b82823e89 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/IRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/IRouteConstraint.cs @@ -9,7 +9,7 @@ namespace Microsoft.AspNetCore.Routing /// Defines the contract that a class must implement in order to check whether a URL parameter /// value is valid for a constraint. /// - public interface IRouteConstraint + public interface IRouteConstraint : IParameterPolicy { /// /// Determines whether the URL parameter contains a valid value for this constraint. diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/IRouteValuesFeature.cs b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/IRouteValuesFeature.cs new file mode 100644 index 0000000000..3ab74b6bc7 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/IRouteValuesFeature.cs @@ -0,0 +1,16 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Routing; + +namespace Microsoft.AspNetCore.Http.Features +{ + public interface IRouteValuesFeature + { + /// + /// Gets or sets the associated with the currrent + /// request. + /// + RouteValueDictionary RouteValues { get; set; } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/LinkGenerator.cs b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/LinkGenerator.cs new file mode 100644 index 0000000000..add5eaf119 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/LinkGenerator.cs @@ -0,0 +1,151 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Defines a contract to generate absolute and related URIs based on endpoint routing. + /// + /// + /// + /// Generating URIs in endpoint routing occurs in two phases. First, an address is bound to a list of + /// endpoints that match the address. Secondly, each endpoint's RoutePattern is evaluated, until + /// a route pattern that matches the supplied values is found. The resulting output is combined with + /// the other URI parts supplied to the link generator and returned. + /// + /// + /// The methods provided by the type are general infrastructure, and support + /// the standard link generator functionality for any type of address. The most convenient way to use + /// is through extension methods that perform operations for a specific + /// address type. + /// + /// + public abstract class LinkGenerator + { + /// + /// Generates a URI with an absolute path based on the provided values and . + /// + /// The address type. + /// The associated with the current request. + /// The address value. Used to resolve endpoints. + /// The route values. Used to expand parameters in the route template. Optional. + /// The values associated with the current request. Optional. + /// + /// An optional URI path base. Prepended to the path in the resulting URI. If not provided, the value of will be used. + /// + /// An optional URI fragment. Appended to the resulting URI. + /// + /// An optional . Settings on provided object override the settings with matching + /// names from RouteOptions. + /// + /// A URI with an absolute path, or null. + public abstract string GetPathByAddress( + HttpContext httpContext, + TAddress address, + RouteValueDictionary values, + RouteValueDictionary ambientValues = default, + PathString? pathBase = default, + FragmentString fragment = default, + LinkOptions options = default); + + /// + /// Generates a URI with an absolute path based on the provided values. + /// + /// The address type. + /// The address value. Used to resolve endpoints. + /// The route values. Used to expand parameters in the route template. Optional. + /// An optional URI path base. Prepended to the path in the resulting URI. + /// An optional URI fragment. Appended to the resulting URI. + /// + /// An optional . Settings on provided object override the settings with matching + /// names from RouteOptions. + /// + /// A URI with an absolute path, or null. + public abstract string GetPathByAddress( + TAddress address, + RouteValueDictionary values, + PathString pathBase = default, + FragmentString fragment = default, + LinkOptions options = default); + + /// + /// Generates an absolute URI based on the provided values and . + /// + /// The address type. + /// The associated with the current request. + /// The address value. Used to resolve endpoints. + /// The route values. Used to expand parameters in the route template. Optional. + /// The values associated with the current request. Optional. + /// + /// The URI scheme, applied to the resulting URI. Optional. If not provided, the value of will be used. + /// + /// + /// The URI host/authority, applied to the resulting URI. Optional. If not provided, the value will be used. + /// See the remarks section for details about the security implications of the . + /// + /// + /// An optional URI path base. Prepended to the path in the resulting URI. If not provided, the value of will be used. + /// + /// An optional URI fragment. Appended to the resulting URI. + /// + /// An optional . Settings on provided object override the settings with matching + /// names from RouteOptions. + /// + /// A URI with an absolute path, or null. + /// + /// + /// The value of should be a trusted value. Relying on the value of the current request + /// can allow untrusted input to influence the resulting URI unless the Host header has been validated. + /// See the deployment documentation for instructions on how to properly validate the Host header in + /// your deployment environment. + /// + /// + public abstract string GetUriByAddress( + HttpContext httpContext, + TAddress address, + RouteValueDictionary values, + RouteValueDictionary ambientValues = default, + string scheme = default, + HostString? host = default, + PathString? pathBase = default, + FragmentString fragment = default, + LinkOptions options = default); + + /// + /// Generates an absolute URI based on the provided values. + /// + /// The address type. + /// The address value. Used to resolve endpoints. + /// The route values. Used to expand parameters in the route template. Optional. + /// The URI scheme, applied to the resulting URI. + /// + /// The URI host/authority, applied to the resulting URI. + /// See the remarks section for details about the security implications of the . + /// + /// An optional URI path base. Prepended to the path in the resulting URI. + /// An optional URI fragment. Appended to the resulting URI. + /// + /// An optional . Settings on provided object override the settings with matching + /// names from RouteOptions. + /// + /// An absolute URI, or null. + /// + /// + /// The value of should be a trusted value. Relying on the value of the current request + /// can allow untrusted input to influence the resulting URI unless the Host header has been validated. + /// See the deployment documentation for instructions on how to properly validate the Host header in + /// your deployment environment. + /// + /// + public abstract string GetUriByAddress( + TAddress address, + RouteValueDictionary values, + string scheme, + HostString host, + PathString pathBase = default, + FragmentString fragment = default, + LinkOptions options = default); + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/LinkOptions.cs b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/LinkOptions.cs new file mode 100644 index 0000000000..a5bd0547f0 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/LinkOptions.cs @@ -0,0 +1,25 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing +{ + public class LinkOptions + { + /// + /// Gets or sets a value indicating whether all generated paths URLs are lower-case. + /// Use to configure the behavior for query strings. + /// + public bool? LowercaseUrls { get; set; } + + /// + /// Gets or sets a value indicating whether a generated query strings are lower-case. + /// This property will be unless is also true. + /// + public bool? LowercaseQueryStrings { get; set; } + + /// + /// Gets or sets a value indicating whether a trailing slash should be appended to the generated URLs. + /// + public bool? AppendTrailingSlash { get; set; } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/Properties/AssemblyInfo.cs b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/Properties/AssemblyInfo.cs index 848ab925ed..fc39ed7ef2 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/Properties/AssemblyInfo.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/Properties/AssemblyInfo.cs @@ -3,4 +3,5 @@ using System.Runtime.CompilerServices; -[assembly: InternalsVisibleTo("Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] \ No newline at end of file +[assembly: InternalsVisibleTo("Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] +[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/RouteContext.cs b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/RouteContext.cs index 767f39b1ec..7162446e7d 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/RouteContext.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/RouteContext.cs @@ -14,7 +14,7 @@ namespace Microsoft.AspNetCore.Routing private RouteData _routeData; /// - /// Creates a new for the provided . + /// Creates a new instance of for the provided . /// /// The associated with the current request. public RouteContext(HttpContext httpContext) diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/RouteData.cs b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/RouteData.cs index 0ece2b91de..858c3a67f4 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/RouteData.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/RouteData.cs @@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Routing private RouteValueDictionary _values; /// - /// Creates a new instance. + /// Creates a new instance of instance. /// public RouteData() { @@ -24,7 +24,7 @@ namespace Microsoft.AspNetCore.Routing } /// - /// Creates a new instance with values copied from . + /// Creates a new instance of instance with values copied from . /// /// The other instance to copy. public RouteData(RouteData other) @@ -51,6 +51,20 @@ namespace Microsoft.AspNetCore.Routing } } + /// + /// Creates a new instance of instance with the specified values. + /// + /// The values. + public RouteData(RouteValueDictionary values) + { + if (values == null) + { + throw new ArgumentNullException(nameof(values)); + } + + _values = values; + } + /// /// Gets the data tokens produced by routes on the current routing path. /// @@ -84,7 +98,7 @@ namespace Microsoft.AspNetCore.Routing } /// - /// Gets the set of values produced by routes on the current routing path. + /// Gets the values produced by routes on the current routing path. /// public RouteValueDictionary Values { @@ -183,7 +197,7 @@ namespace Microsoft.AspNetCore.Routing private readonly RouteValueDictionary _values; /// - /// Creates a new for . + /// Creates a new instance of for . /// /// The . /// The data tokens. diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/RouteValueDictionary.cs b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/RouteValueDictionary.cs index d0bc8e9ecf..55b2438e9e 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/RouteValueDictionary.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/RouteValueDictionary.cs @@ -6,6 +6,7 @@ using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; +using System.Runtime.CompilerServices; using Microsoft.AspNetCore.Routing.Abstractions; using Microsoft.Extensions.Internal; @@ -16,14 +17,70 @@ namespace Microsoft.AspNetCore.Routing /// public class RouteValueDictionary : IDictionary, IReadOnlyDictionary { - internal Storage _storage; + // 4 is a good default capacity here because that leaves enough space for area/controller/action/id + private const int DefaultCapacity = 4; + + internal KeyValuePair[] _arrayStorage; + internal PropertyStorage _propertyStorage; + private int _count; + + /// + /// Creates a new instance of from the provided array. + /// The new instance will take ownership of the array, and may mutate it. + /// + /// The items array. + /// A new . + public static RouteValueDictionary FromArray(KeyValuePair[] items) + { + if (items == null) + { + throw new ArgumentNullException(nameof(items)); + } + + // We need to compress the array by removing non-contiguous items. We + // typically have a very small number of items to process. We don't need + // to preserve order. + var start = 0; + var end = items.Length - 1; + + // We walk forwards from the beginning of the array and fill in 'null' slots. + // We walk backwards from the end of the array end move items in non-null' slots + // into whatever start is pointing to. O(n) + while (start <= end) + { + if (items[start].Key != null) + { + start++; + } + else if (items[end].Key != null) + { + // Swap this item into start and advance + items[start] = items[end]; + items[end] = default; + start++; + end--; + } + else + { + // Both null, we need to hold on 'start' since we + // still need to fill it with something. + end--; + } + } + + return new RouteValueDictionary() + { + _arrayStorage = items, + _count = start, + }; + } /// /// Creates an empty . /// public RouteValueDictionary() { - _storage = EmptyStorage.Instance; + _arrayStorage = Array.Empty>(); } /// @@ -40,63 +97,45 @@ namespace Microsoft.AspNetCore.Routing /// Only public instance non-index properties are considered. /// public RouteValueDictionary(object values) + : this() { - var dictionary = values as RouteValueDictionary; - if (dictionary != null) + if (values is RouteValueDictionary dictionary) { - var listStorage = dictionary._storage as ListStorage; - if (listStorage != null) - { - _storage = new ListStorage(listStorage); - return; - } - - var propertyStorage = dictionary._storage as PropertyStorage; - if (propertyStorage != null) + if (dictionary._propertyStorage != null) { // PropertyStorage is immutable so we can just copy it. - _storage = dictionary._storage; + _propertyStorage = dictionary._propertyStorage; + _count = dictionary._count; return; } - // If we get here, it's an EmptyStorage. - _storage = EmptyStorage.Instance; + var other = dictionary._arrayStorage; + var storage = new KeyValuePair[other.Length]; + if (dictionary._count != 0) + { + Array.Copy(other, 0, storage, 0, dictionary._count); + } + + _arrayStorage = storage; + _count = dictionary._count; return; } - var keyValueEnumerable = values as IEnumerable>; - if (keyValueEnumerable != null) + if (values is IEnumerable> keyValueEnumerable) { - var listStorage = new ListStorage(); - _storage = listStorage; foreach (var kvp in keyValueEnumerable) { - if (listStorage.ContainsKey(kvp.Key)) - { - var message = Resources.FormatRouteValueDictionary_DuplicateKey(kvp.Key, nameof(RouteValueDictionary)); - throw new ArgumentException(message, nameof(values)); - } - - listStorage.Add(kvp); + Add(kvp.Key, kvp.Value); } return; } - var stringValueEnumerable = values as IEnumerable>; - if (stringValueEnumerable != null) + if (values is IEnumerable> stringValueEnumerable) { - var listStorage = new ListStorage(); - _storage = listStorage; foreach (var kvp in stringValueEnumerable) { - if (listStorage.ContainsKey(kvp.Key)) - { - var message = Resources.FormatRouteValueDictionary_DuplicateKey(kvp.Key, nameof(RouteValueDictionary)); - throw new ArgumentException(message, nameof(values)); - } - - listStorage.Add(new KeyValuePair(kvp.Key, kvp.Value)); + Add(kvp.Key, kvp.Value); } return; @@ -104,11 +143,11 @@ namespace Microsoft.AspNetCore.Routing if (values != null) { - _storage = new PropertyStorage(values); + var storage = new PropertyStorage(values); + _propertyStorage = storage; + _count = storage.Properties.Length; return; } - - _storage = EmptyStorage.Instance; } /// @@ -116,9 +155,9 @@ namespace Microsoft.AspNetCore.Routing { get { - if (string.IsNullOrEmpty(key)) + if (key == null) { - throw new ArgumentNullException(nameof(key)); + ThrowArgumentNullExceptionForKey(); } object value; @@ -128,15 +167,25 @@ namespace Microsoft.AspNetCore.Routing set { - if (string.IsNullOrEmpty(key)) + if (key == null) { - throw new ArgumentNullException(nameof(key)); + ThrowArgumentNullExceptionForKey(); } - if (!_storage.TrySetValue(key, value)) + // We're calling this here for the side-effect of converting from properties + // to array. We need to create the array even if we just set an existing value since + // property storage is immutable. + EnsureCapacity(_count); + + var index = FindIndex(key); + if (index < 0) { - Upgrade(); - _storage.TrySetValue(key, value); + EnsureCapacity(_count + 1); + _arrayStorage[_count++] = new KeyValuePair(key, value); + } + else + { + _arrayStorage[index] = new KeyValuePair(key, value); } } } @@ -150,7 +199,7 @@ namespace Microsoft.AspNetCore.Routing public IEqualityComparer Comparer => StringComparer.OrdinalIgnoreCase; /// - public int Count => _storage.Count; + public int Count => _count; /// bool ICollection>.IsReadOnly => false; @@ -160,52 +209,40 @@ namespace Microsoft.AspNetCore.Routing { get { - Upgrade(); + EnsureCapacity(_count); - var list = (ListStorage)_storage; - var keys = new string[list.Count]; + var array = _arrayStorage; + var keys = new string[_count]; for (var i = 0; i < keys.Length; i++) { - keys[i] = list[i].Key; + keys[i] = array[i].Key; } return keys; } } - IEnumerable IReadOnlyDictionary.Keys - { - get - { - return Keys; - } - } + IEnumerable IReadOnlyDictionary.Keys => Keys; /// public ICollection Values { get { - Upgrade(); + EnsureCapacity(_count); - var list = (ListStorage)_storage; - var values = new object[list.Count]; + var array = _arrayStorage; + var values = new object[_count]; for (var i = 0; i < values.Length; i++) { - values[i] = list[i].Value; + values[i] = array[i].Value; } return values; } } - IEnumerable IReadOnlyDictionary.Values - { - get - { - return Values; - } - } + IEnumerable IReadOnlyDictionary.Values => Values; /// void ICollection>.Add(KeyValuePair item) @@ -218,58 +255,46 @@ namespace Microsoft.AspNetCore.Routing { if (key == null) { - throw new ArgumentNullException(nameof(key)); + ThrowArgumentNullExceptionForKey(); } - Upgrade(); + EnsureCapacity(_count + 1); - var list = (ListStorage)_storage; - for (var i = 0; i < list.Count; i++) + var index = FindIndex(key); + if (index >= 0) { - if (string.Equals(list[i].Key, key, StringComparison.OrdinalIgnoreCase)) - { - var message = Resources.FormatRouteValueDictionary_DuplicateKey(key, nameof(RouteValueDictionary)); - throw new ArgumentException(message, nameof(key)); - } + var message = Resources.FormatRouteValueDictionary_DuplicateKey(key, nameof(RouteValueDictionary)); + throw new ArgumentException(message, nameof(key)); } - list.Add(new KeyValuePair(key, value)); + _arrayStorage[_count] = new KeyValuePair(key, value); + _count++; } /// public void Clear() { - if (_storage.Count == 0) + if (_count == 0) { return; } - Upgrade(); + if (_propertyStorage != null) + { + _arrayStorage = Array.Empty>(); + _propertyStorage = null; + _count = 0; + return; + } - var list = (ListStorage)_storage; - list.Clear(); + Array.Clear(_arrayStorage, 0, _count); + _count = 0; } /// bool ICollection>.Contains(KeyValuePair item) { - if (_storage.Count == 0) - { - return false; - } - - Upgrade(); - - var list = (ListStorage)_storage; - for (var i = 0; i < list.Count; i++) - { - if (string.Equals(list[i].Key, item.Key, StringComparison.OrdinalIgnoreCase)) - { - return EqualityComparer.Default.Equals(list[i].Value, item.Value); - } - } - - return false; + return TryGetValue(item.Key, out var value) && EqualityComparer.Default.Equals(value, item.Value); } /// @@ -277,10 +302,10 @@ namespace Microsoft.AspNetCore.Routing { if (key == null) { - throw new ArgumentNullException(nameof(key)); + ThrowArgumentNullExceptionForKey(); } - return _storage.ContainsKey(key); + return TryGetValue(key, out var _); } /// @@ -298,15 +323,15 @@ namespace Microsoft.AspNetCore.Routing throw new ArgumentOutOfRangeException(nameof(arrayIndex)); } - if (_storage.Count == 0) + if (Count == 0) { return; } - Upgrade(); + EnsureCapacity(Count); - var list = (ListStorage)_storage; - list.CopyTo(array, arrayIndex); + var storage = _arrayStorage; + Array.Copy(storage, 0, array, arrayIndex, _count); } /// @@ -330,22 +355,21 @@ namespace Microsoft.AspNetCore.Routing /// bool ICollection>.Remove(KeyValuePair item) { - if (_storage.Count == 0) + if (Count == 0) { return false; } - Upgrade(); + EnsureCapacity(Count); - var list = (ListStorage)_storage; - for (var i = 0; i < list.Count; i++) + var index = FindIndex(item.Key); + var array = _arrayStorage; + if (index >= 0 && EqualityComparer.Default.Equals(array[index].Value, item.Value)) { - if (string.Equals(list[i].Key, item.Key, StringComparison.OrdinalIgnoreCase) && - EqualityComparer.Default.Equals(list[i].Value, item.Value)) - { - list.RemoveAt(i); - return true; - } + Array.Copy(array, index + 1, array, index, _count - index); + _count--; + array[_count] = default; + return true; } return false; @@ -356,48 +380,233 @@ namespace Microsoft.AspNetCore.Routing { if (key == null) { - throw new ArgumentNullException(nameof(key)); + ThrowArgumentNullExceptionForKey(); } - if (_storage.Count == 0) + if (Count == 0) { return false; } - Upgrade(); + // Ensure property storage is converted to array storage as we'll be + // applying the lookup and removal on the array + EnsureCapacity(_count); - var list = (ListStorage)_storage; - for (var i = 0; i < list.Count; i++) + var index = FindIndex(key); + if (index >= 0) { - if (string.Equals(list[i].Key, key, StringComparison.OrdinalIgnoreCase)) - { - list.RemoveAt(i); - return true; - } + _count--; + var array = _arrayStorage; + Array.Copy(array, index + 1, array, index, _count - index); + array[_count] = default; + + return true; } return false; } + /// + /// Attempts to remove and return the value that has the specified key from the . + /// + /// The key of the element to remove and return. + /// When this method returns, contains the object removed from the , or null if key does not exist. + /// + /// true if the object was removed successfully; otherwise, false. + /// + public bool Remove(string key, out object value) + { + if (key == null) + { + ThrowArgumentNullExceptionForKey(); + } + + if (_count == 0) + { + value = default; + return false; + } + + // Ensure property storage is converted to array storage as we'll be + // applying the lookup and removal on the array + EnsureCapacity(_count); + + var index = FindIndex(key); + if (index >= 0) + { + _count--; + var array = _arrayStorage; + value = array[index].Value; + Array.Copy(array, index + 1, array, index, _count - index); + array[_count] = default; + + return true; + } + + value = default; + return false; + } + + + /// + /// Attempts to the add the provided and to the dictionary. + /// + /// The key. + /// The value. + /// Returns true if the value was added. Returns false if the key was already present. + public bool TryAdd(string key, object value) + { + if (key == null) + { + ThrowArgumentNullExceptionForKey(); + } + + // Since this is an attempt to write to the dictionary, just make it an array if it isn't. If the code + // path we're on event tries to write to the dictionary, it will likely get 'upgraded' at some point, + // so we do it here to keep the code size and complexity down. + EnsureCapacity(Count); + + var index = FindIndex(key); + if (index >= 0) + { + return false; + } + + EnsureCapacity(Count + 1); + _arrayStorage[Count] = new KeyValuePair(key, value); + _count++; + return true; + } + /// public bool TryGetValue(string key, out object value) { if (key == null) { - throw new ArgumentNullException(nameof(key)); + ThrowArgumentNullExceptionForKey(); } - return _storage.TryGetValue(key, out value); + if (_propertyStorage == null) + { + return TryFindItem(key, out value); + } + + return TryGetValueSlow(key, out value); } - private void Upgrade() + private bool TryGetValueSlow(string key, out object value) { - _storage.Upgrade(ref _storage); + if (_propertyStorage != null) + { + var storage = _propertyStorage; + for (var i = 0; i < storage.Properties.Length; i++) + { + if (string.Equals(storage.Properties[i].Name, key, StringComparison.OrdinalIgnoreCase)) + { + value = storage.Properties[i].GetValue(storage.Value); + return true; + } + } + } + + value = default; + return false; + } + + private static void ThrowArgumentNullExceptionForKey() + { + throw new ArgumentNullException("key"); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private void EnsureCapacity(int capacity) + { + if (_propertyStorage != null || _arrayStorage.Length < capacity) + { + EnsureCapacitySlow(capacity); + } + } + + private void EnsureCapacitySlow(int capacity) + { + if (_propertyStorage != null) + { + var storage = _propertyStorage; + + // If we're converting from properties, it's likely due to an 'add' to make sure we have at least + // the default amount of space. + capacity = Math.Max(DefaultCapacity, Math.Max(storage.Properties.Length, capacity)); + var array = new KeyValuePair[capacity]; + + for (var i = 0; i < storage.Properties.Length; i++) + { + var property = storage.Properties[i]; + array[i] = new KeyValuePair(property.Name, property.GetValue(storage.Value)); + } + + _arrayStorage = array; + _propertyStorage = null; + return; + } + + if (_arrayStorage.Length < capacity) + { + capacity = _arrayStorage.Length == 0 ? DefaultCapacity : _arrayStorage.Length * 2; + var array = new KeyValuePair[capacity]; + if (_count > 0) + { + Array.Copy(_arrayStorage, 0, array, 0, _count); + } + + _arrayStorage = array; + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private int FindIndex(string key) + { + // Generally the bounds checking here will be elided by the JIT because this will be called + // on the same code path as EnsureCapacity. + var array = _arrayStorage; + var count = _count; + + for (var i = 0; i < count; i++) + { + if (string.Equals(array[i].Key, key, StringComparison.OrdinalIgnoreCase)) + { + return i; + } + } + + return -1; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private bool TryFindItem(string key, out object value) + { + var array = _arrayStorage; + var count = _count; + + // Elide bounds check for indexing. + if ((uint)count <= (uint)array.Length) + { + for (var i = 0; i < count; i++) + { + if (string.Equals(array[i].Key, key, StringComparison.OrdinalIgnoreCase)) + { + value = array[i].Value; + return true; + } + } + } + + value = null; + return false; } public struct Enumerator : IEnumerator> { - private readonly Storage _storage; + private readonly RouteValueDictionary _dictionary; private int _index; public Enumerator(RouteValueDictionary dictionary) @@ -407,10 +616,10 @@ namespace Microsoft.AspNetCore.Routing throw new ArgumentNullException(); } - _storage = dictionary._storage; + _dictionary = dictionary; - Current = default(KeyValuePair); - _index = -1; + Current = default; + _index = 0; } public KeyValuePair Current { get; private set; } @@ -421,298 +630,66 @@ namespace Microsoft.AspNetCore.Routing { } + // Similar to the design of List.Enumerator - Split into fast path and slow path for inlining friendliness + [MethodImpl(MethodImplOptions.AggressiveInlining)] public bool MoveNext() { - if (++_index < _storage.Count) + var dictionary = _dictionary; + + // The uncommon case is that the propertyStorage is in use + if (dictionary._propertyStorage == null && ((uint)_index < (uint)dictionary._count)) { - Current = _storage[_index]; + Current = dictionary._arrayStorage[_index]; + _index++; return true; } - Current = default(KeyValuePair); + return MoveNextRare(); + } + + private bool MoveNextRare() + { + var dictionary = _dictionary; + if (dictionary._propertyStorage != null && ((uint)_index < (uint)dictionary._count)) + { + var storage = dictionary._propertyStorage; + var property = storage.Properties[_index]; + Current = new KeyValuePair(property.Name, property.GetValue(storage.Value)); + _index++; + return true; + } + + _index = dictionary._count; + Current = default; return false; } public void Reset() { - Current = default(KeyValuePair); - _index = -1; + Current = default; + _index = 0; } } - // Storage and its subclasses are internal for testing. - internal abstract class Storage + internal class PropertyStorage { - public abstract int Count { get; } + private static readonly ConcurrentDictionary _propertyCache = new ConcurrentDictionary(); - public abstract KeyValuePair this[int index] { get; set; } - - public abstract void Upgrade(ref Storage storage); - - public abstract bool TryGetValue(string key, out object value); - - public abstract bool ContainsKey(string key); - - public abstract bool TrySetValue(string key, object value); - } - - internal class ListStorage : Storage - { - private KeyValuePair[] _items; - private int _count; - - private static readonly KeyValuePair[] _emptyArray = new KeyValuePair[0]; - - public ListStorage() - { - _items = _emptyArray; - } - - public ListStorage(int capacity) - { - if (capacity == 0) - { - _items = _emptyArray; - } - else - { - _items = new KeyValuePair[capacity]; - } - } - - public ListStorage(ListStorage other) - { - if (other.Count == 0) - { - _items = _emptyArray; - } - else - { - _items = new KeyValuePair[other.Count]; - for (var i = 0; i < other.Count; i++) - { - this.Add(other[i]); - } - } - } - - public int Capacity => _items.Length; - - public override int Count => _count; - - public override KeyValuePair this[int index] - { - get - { - if (index < 0 || index >= _count) - { - throw new ArgumentOutOfRangeException(nameof(index)); - } - - return _items[index]; - } - set - { - if (index < 0 || index >= _count) - { - throw new ArgumentOutOfRangeException(nameof(index)); - } - - _items[index] = value; - } - } - - public void Add(KeyValuePair item) - { - if (_count == _items.Length) - { - EnsureCapacity(_count + 1); - } - - _items[_count++] = item; - } - - public void RemoveAt(int index) - { - _count--; - - for (var i = index; i < _count; i++) - { - _items[i] = _items[i + 1]; - } - - _items[_count] = default(KeyValuePair); - } - - public void Clear() - { - for (var i = 0; i < _count; i++) - { - _items[i] = default(KeyValuePair); - } - - _count = 0; - } - - public void CopyTo(KeyValuePair[] array, int arrayIndex) - { - for (var i = 0; i < _count; i++) - { - array[arrayIndex++] = _items[i]; - } - } - - public override bool ContainsKey(string key) - { - for (var i = 0; i < Count; i++) - { - var kvp = _items[i]; - if (string.Equals(key, kvp.Key, StringComparison.OrdinalIgnoreCase)) - { - return true; - } - } - - return false; - } - - public override bool TrySetValue(string key, object value) - { - for (var i = 0; i < Count; i++) - { - var kvp = _items[i]; - if (string.Equals(key, kvp.Key, StringComparison.OrdinalIgnoreCase)) - { - _items[i] = new KeyValuePair(key, value); - return true; - } - } - - Add(new KeyValuePair(key, value)); - return true; - } - - public override bool TryGetValue(string key, out object value) - { - for (var i = 0; i < Count; i++) - { - var kvp = _items[i]; - if (string.Equals(key, kvp.Key, StringComparison.OrdinalIgnoreCase)) - { - value = kvp.Value; - return true; - } - } - - value = null; - return false; - } - - public override void Upgrade(ref Storage storage) - { - // Do nothing. - } - - private void EnsureCapacity(int min) - { - var newLength = _items.Length == 0 ? 4 : _items.Length * 2; - var newItems = new KeyValuePair[newLength]; - for (var i = 0; i < _count; i++) - { - newItems[i] = _items[i]; - } - - _items = newItems; - } - } - - internal class PropertyStorage : Storage - { - private static readonly PropertyCache _propertyCache = new PropertyCache(); - - internal readonly object _value; - internal readonly PropertyHelper[] _properties; + public readonly object Value; + public readonly PropertyHelper[] Properties; public PropertyStorage(object value) { Debug.Assert(value != null); - _value = value; + Value = value; // Cache the properties so we can know if we've already validated them for duplicates. - var type = _value.GetType(); - if (!_propertyCache.TryGetValue(type, out _properties)) + var type = Value.GetType(); + if (!_propertyCache.TryGetValue(type, out Properties)) { - _properties = PropertyHelper.GetVisibleProperties(type); - ValidatePropertyNames(type, _properties); - _propertyCache.TryAdd(type, _properties); - } - } - - public PropertyStorage(PropertyStorage propertyStorage) - { - _value = propertyStorage._value; - _properties = propertyStorage._properties; - } - - public override int Count => _properties.Length; - - public override KeyValuePair this[int index] - { - get - { - var property = _properties[index]; - return new KeyValuePair(property.Name, property.GetValue(_value)); - } - set - { - // PropertyStorage never sets a value. - throw new NotImplementedException(); - } - } - - public override bool TryGetValue(string key, out object value) - { - for (var i = 0; i < _properties.Length; i++) - { - var property = _properties[i]; - if (string.Equals(key, property.Name, StringComparison.OrdinalIgnoreCase)) - { - value = property.GetValue(_value); - return true; - } - } - - value = null; - return false; - } - - public override bool ContainsKey(string key) - { - for (var i = 0; i < _properties.Length; i++) - { - var property = _properties[i]; - if (string.Equals(key, property.Name, StringComparison.OrdinalIgnoreCase)) - { - return true; - } - } - - return false; - } - - public override bool TrySetValue(string key, object value) - { - // PropertyStorage never sets a value. - return false; - } - - public override void Upgrade(ref Storage storage) - { - storage = new ListStorage(Count); - for (var i = 0; i < _properties.Length; i++) - { - var property = _properties[i]; - storage.TrySetValue(property.Name, property.GetValue(_value)); + Properties = PropertyHelper.GetVisibleProperties(type); + ValidatePropertyNames(type, Properties); + _propertyCache.TryAdd(type, Properties); } } @@ -723,8 +700,7 @@ namespace Microsoft.AspNetCore.Routing { var property = properties[i]; - PropertyHelper duplicate; - if (names.TryGetValue(property.Name, out duplicate)) + if (names.TryGetValue(property.Name, out var duplicate)) { var message = Resources.FormatRouteValueDictionary_DuplicatePropertyName( type.FullName, @@ -738,53 +714,5 @@ namespace Microsoft.AspNetCore.Routing } } } - - internal class EmptyStorage : Storage - { - public static readonly EmptyStorage Instance = new EmptyStorage(); - - private EmptyStorage() - { - } - - public override int Count => 0; - - public override KeyValuePair this[int index] - { - get - { - throw new NotImplementedException(); - } - set - { - throw new NotImplementedException(); - } - } - - public override bool ContainsKey(string key) - { - return false; - } - - public override bool TryGetValue(string key, out object value) - { - value = null; - return false; - } - - public override bool TrySetValue(string key, object value) - { - return false; - } - - public override void Upgrade(ref Storage storage) - { - storage = new ListStorage(); - } - } - - private class PropertyCache : ConcurrentDictionary - { - } } -} +} \ No newline at end of file diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/VirtualPathContext.cs b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/VirtualPathContext.cs index 036aa445f8..88f899e925 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/VirtualPathContext.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing.Abstractions/VirtualPathContext.cs @@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Routing public class VirtualPathContext { /// - /// Creates a new . + /// Creates a new instance of . /// /// The associated with the current request. /// The set of route values associated with the current request. @@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Routing } /// - /// Creates a new . + /// Creates a new instance of . /// /// The associated with the current request. /// The set of route values associated with the current request. diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/RoutingBuilderExtensions.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Builder/RoutingBuilderExtensions.cs similarity index 100% rename from src/Routing/src/Microsoft.AspNetCore.Routing/RoutingBuilderExtensions.cs rename to src/Routing/src/Microsoft.AspNetCore.Routing/Builder/RoutingBuilderExtensions.cs diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/CompositeEndpointDataSource.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/CompositeEndpointDataSource.cs new file mode 100644 index 0000000000..00a24ccfcd --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/CompositeEndpointDataSource.cs @@ -0,0 +1,189 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Primitives; + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Represents an whose values come from a collection of instances. + /// + [DebuggerDisplay("{DebuggerDisplayString,nq}")] + public sealed class CompositeEndpointDataSource : EndpointDataSource + { + private readonly EndpointDataSource[] _dataSources; + private readonly object _lock; + private IReadOnlyList _endpoints; + private IChangeToken _consumerChangeToken; + private CancellationTokenSource _cts; + + internal CompositeEndpointDataSource(IEnumerable dataSources) + { + if (dataSources == null) + { + throw new ArgumentNullException(nameof(dataSources)); + } + + CreateChangeToken(); + _dataSources = dataSources.ToArray(); + _lock = new object(); + } + + /// + /// Gets a used to signal invalidation of cached + /// instances. + /// + /// The . + public override IChangeToken GetChangeToken() + { + EnsureInitialized(); + return _consumerChangeToken; + } + + /// + /// Returns a read-only collection of instances. + /// + public override IReadOnlyList Endpoints + { + get + { + EnsureInitialized(); + return _endpoints; + } + } + + // Defer initialization to avoid doing lots of reflection on startup. + private void EnsureInitialized() + { + if (_endpoints == null) + { + Initialize(); + } + } + + // Note: we can't use DataSourceDependentCache here because we also need to handle a list of change + // tokens, which is a complication most of our code doesn't have. + private void Initialize() + { + lock (_lock) + { + if (_endpoints == null) + { + _endpoints = _dataSources.SelectMany(d => d.Endpoints).ToArray(); + + foreach (var dataSource in _dataSources) + { + ChangeToken.OnChange( + dataSource.GetChangeToken, + HandleChange); + } + } + } + } + + private void HandleChange() + { + lock (_lock) + { + // Refresh the endpoints from datasource so that callbacks can get the latest endpoints + _endpoints = _dataSources.SelectMany(d => d.Endpoints).ToArray(); + + // Prevent consumers from re-registering callback to inflight events as that can + // cause a stackoverflow + // Example: + // 1. B registers A + // 2. A fires event causing B's callback to get called + // 3. B executes some code in its callback, but needs to re-register callback + // in the same callback + var oldTokenSource = _cts; + var oldToken = _consumerChangeToken; + + CreateChangeToken(); + + // Raise consumer callbacks. Any new callback registration would happen on the new token + // created in earlier step. + oldTokenSource.Cancel(); + } + } + + private void CreateChangeToken() + { + _cts = new CancellationTokenSource(); + _consumerChangeToken = new CancellationChangeToken(_cts.Token); + } + + private string DebuggerDisplayString + { + get + { + // Try using private variable '_endpoints' to avoid initialization + if (_endpoints == null) + { + return "No endpoints"; + } + + var sb = new StringBuilder(); + foreach (var endpoint in _endpoints) + { + if (endpoint is RouteEndpoint routeEndpoint) + { + var template = routeEndpoint.RoutePattern.RawText; + template = string.IsNullOrEmpty(template) ? "\"\"" : template; + sb.Append(template); + sb.Append(", Defaults: new { "); + sb.Append(string.Join(", ", FormatValues(routeEndpoint.RoutePattern.Defaults))); + sb.Append(" }"); + var routeValuesAddressMetadata = routeEndpoint.Metadata.GetMetadata(); + sb.Append(", Route Name: "); + sb.Append(routeValuesAddressMetadata?.RouteName); + if (routeValuesAddressMetadata?.RequiredValues != null) + { + sb.Append(", Required Values: new { "); + sb.Append(string.Join(", ", FormatValues(routeValuesAddressMetadata.RequiredValues))); + sb.Append(" }"); + } + sb.Append(", Order: "); + sb.Append(routeEndpoint.Order); + + var httpMethodMetadata = routeEndpoint.Metadata.GetMetadata(); + if (httpMethodMetadata != null) + { + sb.Append(", Http Methods: "); + sb.Append(string.Join(", ", httpMethodMetadata.HttpMethods)); + } + sb.Append(", Display Name: "); + sb.Append(routeEndpoint.DisplayName); + sb.AppendLine(); + } + else + { + sb.Append("Non-RouteEndpoint. DisplayName:"); + sb.AppendLine(endpoint.DisplayName); + } + } + return sb.ToString(); + + IEnumerable FormatValues(IEnumerable> values) + { + return values.Select( + kvp => + { + var value = "null"; + if (kvp.Value != null) + { + value = "\"" + kvp.Value.ToString() + "\""; + } + return kvp.Key + " = " + value; + }); + } + } + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/BoolRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/BoolRouteConstraint.cs index a65e88ef67..d19000f9de 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/BoolRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/BoolRouteConstraint.cs @@ -20,16 +20,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -40,17 +30,15 @@ namespace Microsoft.AspNetCore.Routing.Constraints throw new ArgumentNullException(nameof(values)); } - object value; - if (values.TryGetValue(routeKey, out value) && value != null) + if (values.TryGetValue(routeKey, out var value) && value != null) { if (value is bool) { return true; } - bool result; var valueString = Convert.ToString(value, CultureInfo.InvariantCulture); - return bool.TryParse(valueString, out result); + return bool.TryParse(valueString, out _); } return false; diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/CompositeRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/CompositeRouteConstraint.cs index 5acff08294..468699ce8a 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/CompositeRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/CompositeRouteConstraint.cs @@ -39,16 +39,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/DateTimeRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/DateTimeRouteConstraint.cs index 9015dc64be..a912a84f52 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/DateTimeRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/DateTimeRouteConstraint.cs @@ -26,16 +26,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -46,17 +36,15 @@ namespace Microsoft.AspNetCore.Routing.Constraints throw new ArgumentNullException(nameof(values)); } - object value; - if (values.TryGetValue(routeKey, out value) && value != null) + if (values.TryGetValue(routeKey, out var value) && value != null) { if (value is DateTime) { return true; } - DateTime result; var valueString = Convert.ToString(value, CultureInfo.InvariantCulture); - return DateTime.TryParse(valueString, CultureInfo.InvariantCulture, DateTimeStyles.None, out result); + return DateTime.TryParse(valueString, CultureInfo.InvariantCulture, DateTimeStyles.None, out _); } return false; diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/DecimalRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/DecimalRouteConstraint.cs index ff29d98574..9fcc80a9f1 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/DecimalRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/DecimalRouteConstraint.cs @@ -20,16 +20,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -40,17 +30,15 @@ namespace Microsoft.AspNetCore.Routing.Constraints throw new ArgumentNullException(nameof(values)); } - object value; - if (values.TryGetValue(routeKey, out value) && value != null) + if (values.TryGetValue(routeKey, out var value) && value != null) { if (value is decimal) { return true; } - decimal result; var valueString = Convert.ToString(value, CultureInfo.InvariantCulture); - return decimal.TryParse(valueString, NumberStyles.Number, CultureInfo.InvariantCulture, out result); + return decimal.TryParse(valueString, NumberStyles.Number, CultureInfo.InvariantCulture, out _); } return false; diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/DoubleRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/DoubleRouteConstraint.cs index e7259d0bf3..405e46cb0d 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/DoubleRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/DoubleRouteConstraint.cs @@ -20,16 +20,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -40,21 +30,19 @@ namespace Microsoft.AspNetCore.Routing.Constraints throw new ArgumentNullException(nameof(values)); } - object value; - if (values.TryGetValue(routeKey, out value) && value != null) + if (values.TryGetValue(routeKey, out var value) && value != null) { if (value is double) { return true; } - double result; var valueString = Convert.ToString(value, CultureInfo.InvariantCulture); return double.TryParse( valueString, NumberStyles.Float | NumberStyles.AllowThousands, CultureInfo.InvariantCulture, - out result); + out _); } return false; diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/FloatRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/FloatRouteConstraint.cs index 5db0e65c28..fbdd3c87d6 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/FloatRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/FloatRouteConstraint.cs @@ -20,16 +20,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -40,21 +30,19 @@ namespace Microsoft.AspNetCore.Routing.Constraints throw new ArgumentNullException(nameof(values)); } - object value; - if (values.TryGetValue(routeKey, out value) && value != null) + if (values.TryGetValue(routeKey, out var value) && value != null) { if (value is float) { return true; } - float result; var valueString = Convert.ToString(value, CultureInfo.InvariantCulture); return float.TryParse( valueString, NumberStyles.Float | NumberStyles.AllowThousands, CultureInfo.InvariantCulture, - out result); + out _); } return false; diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/GuidRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/GuidRouteConstraint.cs index 00d451767f..b87069df98 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/GuidRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/GuidRouteConstraint.cs @@ -22,16 +22,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -42,17 +32,15 @@ namespace Microsoft.AspNetCore.Routing.Constraints throw new ArgumentNullException(nameof(values)); } - object value; - if (values.TryGetValue(routeKey, out value) && value != null) + if (values.TryGetValue(routeKey, out var value) && value != null) { if (value is Guid) { return true; } - Guid result; var valueString = Convert.ToString(value, CultureInfo.InvariantCulture); - return Guid.TryParse(valueString, out result); + return Guid.TryParse(valueString, out _); } return false; diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/HttpMethodRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/HttpMethodRouteConstraint.cs index d01140157d..18fbec0c19 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/HttpMethodRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/HttpMethodRouteConstraint.cs @@ -14,7 +14,7 @@ namespace Microsoft.AspNetCore.Routing.Constraints public class HttpMethodRouteConstraint : IRouteConstraint { /// - /// Creates a new that accepts the HTTP methods specified + /// Creates a new instance of that accepts the HTTP methods specified /// by . /// /// The allowed HTTP methods. @@ -41,16 +41,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -64,6 +54,12 @@ namespace Microsoft.AspNetCore.Routing.Constraints switch (routeDirection) { case RouteDirection.IncomingRequest: + // Only required for constraining incoming requests + if (httpContext == null) + { + throw new ArgumentNullException(nameof(httpContext)); + } + return AllowedMethods.Contains(httpContext.Request.Method, StringComparer.OrdinalIgnoreCase); case RouteDirection.UrlGeneration: @@ -80,8 +76,7 @@ namespace Microsoft.AspNetCore.Routing.Constraints // signal that he is generating a URI that will be used for an HTTP POST, so he wants the URI // generation to be performed by the (b) route instead of the (a) route, consistent with what would // happen on incoming requests. - object obj; - if (!values.TryGetValue(routeKey, out obj)) + if (!values.TryGetValue(routeKey, out var obj)) { return true; } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/IntRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/IntRouteConstraint.cs index 83b08533bd..34ff02331e 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/IntRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/IntRouteConstraint.cs @@ -20,16 +20,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -40,17 +30,15 @@ namespace Microsoft.AspNetCore.Routing.Constraints throw new ArgumentNullException(nameof(values)); } - object value; - if (values.TryGetValue(routeKey, out value) && value != null) + if (values.TryGetValue(routeKey, out var value) && value != null) { if (value is int) { return true; } - int result; var valueString = Convert.ToString(value, CultureInfo.InvariantCulture); - return int.TryParse(valueString, NumberStyles.Integer, CultureInfo.InvariantCulture, out result); + return int.TryParse(valueString, NumberStyles.Integer, CultureInfo.InvariantCulture, out _); } return false; diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/LengthRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/LengthRouteConstraint.cs index f876c03cbc..8964f2549e 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/LengthRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/LengthRouteConstraint.cs @@ -77,16 +77,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -97,8 +87,7 @@ namespace Microsoft.AspNetCore.Routing.Constraints throw new ArgumentNullException(nameof(values)); } - object value; - if (values.TryGetValue(routeKey, out value) && value != null) + if (values.TryGetValue(routeKey, out var value) && value != null) { var valueString = Convert.ToString(value, CultureInfo.InvariantCulture); var length = valueString.Length; diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/LongRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/LongRouteConstraint.cs index a76a4de885..8ed5cccc46 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/LongRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/LongRouteConstraint.cs @@ -20,16 +20,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -40,17 +30,15 @@ namespace Microsoft.AspNetCore.Routing.Constraints throw new ArgumentNullException(nameof(values)); } - object value; - if (values.TryGetValue(routeKey, out value) && value != null) + if (values.TryGetValue(routeKey, out var value) && value != null) { if (value is long) { return true; } - long result; var valueString = Convert.ToString(value, CultureInfo.InvariantCulture); - return long.TryParse(valueString, NumberStyles.Integer, CultureInfo.InvariantCulture, out result); + return long.TryParse(valueString, NumberStyles.Integer, CultureInfo.InvariantCulture, out _); } return false; diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/MaxLengthRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/MaxLengthRouteConstraint.cs index 42dde182ed..4005a041aa 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/MaxLengthRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/MaxLengthRouteConstraint.cs @@ -40,16 +40,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -60,8 +50,7 @@ namespace Microsoft.AspNetCore.Routing.Constraints throw new ArgumentNullException(nameof(values)); } - object value; - if (values.TryGetValue(routeKey, out value) && value != null) + if (values.TryGetValue(routeKey, out var value) && value != null) { var valueString = Convert.ToString(value, CultureInfo.InvariantCulture); return valueString.Length <= MaxLength; diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/MaxRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/MaxRouteConstraint.cs index e43dac85fe..dab22f5075 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/MaxRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/MaxRouteConstraint.cs @@ -34,16 +34,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -54,12 +44,10 @@ namespace Microsoft.AspNetCore.Routing.Constraints throw new ArgumentNullException(nameof(values)); } - object value; - if (values.TryGetValue(routeKey, out value) && value != null) + if (values.TryGetValue(routeKey, out var value) && value != null) { - long longValue; var valueString = Convert.ToString(value, CultureInfo.InvariantCulture); - if (long.TryParse(valueString, NumberStyles.Integer, CultureInfo.InvariantCulture, out longValue)) + if (long.TryParse(valueString, NumberStyles.Integer, CultureInfo.InvariantCulture, out var longValue)) { return longValue <= Max; } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/MinLengthRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/MinLengthRouteConstraint.cs index 1ea64ae216..c58bd0b30d 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/MinLengthRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/MinLengthRouteConstraint.cs @@ -40,16 +40,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -60,8 +50,7 @@ namespace Microsoft.AspNetCore.Routing.Constraints throw new ArgumentNullException(nameof(values)); } - object value; - if (values.TryGetValue(routeKey, out value) && value != null) + if (values.TryGetValue(routeKey, out var value) && value != null) { var valueString = Convert.ToString(value, CultureInfo.InvariantCulture); return valueString.Length >= MinLength; diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/MinRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/MinRouteConstraint.cs index 68357c59e7..450ed46fbf 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/MinRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/MinRouteConstraint.cs @@ -34,16 +34,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -54,12 +44,10 @@ namespace Microsoft.AspNetCore.Routing.Constraints throw new ArgumentNullException(nameof(values)); } - object value; - if (values.TryGetValue(routeKey, out value) && value != null) + if (values.TryGetValue(routeKey, out var value) && value != null) { - long longValue; var valueString = Convert.ToString(value, CultureInfo.InvariantCulture); - if (long.TryParse(valueString, NumberStyles.Integer, CultureInfo.InvariantCulture, out longValue)) + if (long.TryParse(valueString, NumberStyles.Integer, CultureInfo.InvariantCulture, out var longValue)) { return longValue >= Min; } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/NullRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/NullRouteConstraint.cs new file mode 100644 index 0000000000..f61e740419 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/NullRouteConstraint.cs @@ -0,0 +1,21 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing.Constraints +{ + internal class NullRouteConstraint : IRouteConstraint + { + public static readonly NullRouteConstraint Instance = new NullRouteConstraint(); + + private NullRouteConstraint() + { + } + + public bool Match(HttpContext httpContext, IRouter route, string routeKey, RouteValueDictionary values, RouteDirection routeDirection) + { + return true; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/OptionalRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/OptionalRouteConstraint.cs index 3990376410..6b7cf8a1a5 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/OptionalRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/OptionalRouteConstraint.cs @@ -30,16 +30,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -50,8 +40,7 @@ namespace Microsoft.AspNetCore.Routing.Constraints throw new ArgumentNullException(nameof(values)); } - object value; - if (values.TryGetValue(routeKey, out value)) + if (values.TryGetValue(routeKey, out var value)) { return InnerConstraint.Match(httpContext, route, diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/RangeRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/RangeRouteConstraint.cs index 301a75f15a..34c946fa66 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/RangeRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/RangeRouteConstraint.cs @@ -48,16 +48,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -68,12 +58,10 @@ namespace Microsoft.AspNetCore.Routing.Constraints throw new ArgumentNullException(nameof(values)); } - object value; - if (values.TryGetValue(routeKey, out value) && value != null) + if (values.TryGetValue(routeKey, out var value) && value != null) { - long longValue; var valueString = Convert.ToString(value, CultureInfo.InvariantCulture); - if (Int64.TryParse(valueString, NumberStyles.Integer, CultureInfo.InvariantCulture, out longValue)) + if (long.TryParse(valueString, NumberStyles.Integer, CultureInfo.InvariantCulture, out var longValue)) { return longValue >= Min && longValue <= Max; } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/RegexRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/RegexRouteConstraint.cs index fb3d2390fe..9269de51a3 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/RegexRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/RegexRouteConstraint.cs @@ -44,16 +44,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -64,9 +54,7 @@ namespace Microsoft.AspNetCore.Routing.Constraints throw new ArgumentNullException(nameof(values)); } - object routeValue; - - if (values.TryGetValue(routeKey, out routeValue) + if (values.TryGetValue(routeKey, out var routeValue) && routeValue != null) { var parameterValueString = Convert.ToString(routeValue, CultureInfo.InvariantCulture); diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/RequiredRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/RequiredRouteConstraint.cs index e03d618565..e33e1e23a6 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/RequiredRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/RequiredRouteConstraint.cs @@ -24,16 +24,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -44,8 +34,7 @@ namespace Microsoft.AspNetCore.Routing.Constraints throw new ArgumentNullException(nameof(values)); } - object value; - if (values.TryGetValue(routeKey, out value) && value != null) + if (values.TryGetValue(routeKey, out var value) && value != null) { // In routing the empty string is equivalent to null, which is equivalent to an unset value. var valueString = Convert.ToString(value, CultureInfo.InvariantCulture); diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/StringRouteConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/StringRouteConstraint.cs index e7d92ef13c..fb6a3568c3 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/StringRouteConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Constraints/StringRouteConstraint.cs @@ -8,7 +8,7 @@ using Microsoft.AspNetCore.Http; namespace Microsoft.AspNetCore.Routing.Constraints { /// - /// Constrains a route parameter to contain only a specified strign. + /// Constrains a route parameter to contain only a specified string. /// public class StringRouteConstraint : IRouteConstraint { @@ -31,16 +31,6 @@ namespace Microsoft.AspNetCore.Routing.Constraints /// public bool Match(HttpContext httpContext, IRouter route, string routeKey, RouteValueDictionary values, RouteDirection routeDirection) { - if (httpContext == null) - { - throw new ArgumentNullException(nameof(httpContext)); - } - - if (route == null) - { - throw new ArgumentNullException(nameof(route)); - } - if (routeKey == null) { throw new ArgumentNullException(nameof(routeKey)); @@ -51,9 +41,7 @@ namespace Microsoft.AspNetCore.Routing.Constraints throw new ArgumentNullException(nameof(values)); } - object routeValue; - - if (values.TryGetValue(routeKey, out routeValue) + if (values.TryGetValue(routeKey, out var routeValue) && routeValue != null) { var parameterValueString = Convert.ToString(routeValue, CultureInfo.InvariantCulture); diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/DataSourceDependentCache.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/DataSourceDependentCache.cs new file mode 100644 index 0000000000..4daf256327 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/DataSourceDependentCache.cs @@ -0,0 +1,59 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Threading; +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing +{ + internal class DataSourceDependentCache where T : class + { + private readonly EndpointDataSource _dataSource; + private readonly Func, T> _initializeCore; + private readonly Func _initializer; + private readonly Action _initializerWithState; + + private object _lock; + private bool _initialized; + private T _value; + + public DataSourceDependentCache(EndpointDataSource dataSource, Func, T> initialize) + { + if (dataSource == null) + { + throw new ArgumentNullException(nameof(dataSource)); + } + + _dataSource = dataSource; + _initializeCore = initialize; + + _initializer = Initialize; + _initializerWithState = (state) => Initialize(); + _lock = new object(); + } + + // Note that we don't lock here, and think about that in the context of a 'push'. So when data gets 'pushed' + // we start computing a new state, but we're still able to perform operations on the old state until we've + // processed the update. + public T Value => _value; + + public T EnsureInitialized() + { + return LazyInitializer.EnsureInitialized(ref _value, ref _initialized, ref _lock, _initializer); + } + + private T Initialize() + { + lock (_lock) + { + var changeToken = _dataSource.GetChangeToken(); + _value = _initializeCore(_dataSource.Endpoints); + + changeToken.RegisterChangeCallback(_initializerWithState, null); + return _value; + } + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/DataTokensMetadata.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/DataTokensMetadata.cs new file mode 100644 index 0000000000..831075af40 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/DataTokensMetadata.cs @@ -0,0 +1,32 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Metadata that defines data tokens for an . This metadata + /// type provides data tokens value for associated + /// with an endpoint. + /// + public sealed class DataTokensMetadata : IDataTokensMetadata + { + public DataTokensMetadata(IReadOnlyDictionary dataTokens) + { + if (dataTokens == null) + { + throw new ArgumentNullException(nameof(dataTokens)); + } + + DataTokens = dataTokens; + } + + /// + /// Get the data tokens. + /// + public IReadOnlyDictionary DataTokens { get; } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/DefaultEndpointDataSource.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/DefaultEndpointDataSource.cs new file mode 100644 index 0000000000..7586ee4a2e --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/DefaultEndpointDataSource.cs @@ -0,0 +1,59 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.FileProviders; +using Microsoft.Extensions.Primitives; + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Provides a collection of instances. + /// + public sealed class DefaultEndpointDataSource : EndpointDataSource + { + private readonly IReadOnlyList _endpoints; + + /// + /// Initializes a new instance of the class. + /// + /// The instances that the data source will return. + public DefaultEndpointDataSource(params Endpoint[] endpoints) + { + if (endpoints == null) + { + throw new ArgumentNullException(nameof(endpoints)); + } + + _endpoints = (Endpoint[])endpoints.Clone(); + } + + /// + /// Initializes a new instance of the class. + /// + /// The instances that the data source will return. + public DefaultEndpointDataSource(IEnumerable endpoints) + { + if (endpoints == null) + { + throw new ArgumentNullException(nameof(endpoints)); + } + + _endpoints = new List(endpoints); + } + + /// + /// Gets a used to signal invalidation of cached + /// instances. + /// + /// The . + public override IChangeToken GetChangeToken() => NullChangeToken.Singleton; + + /// + /// Returns a read-only collection of instances. + /// + public override IReadOnlyList Endpoints => _endpoints; + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/DefaultInlineConstraintResolver.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/DefaultInlineConstraintResolver.cs index 7426516db2..02fd133e28 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/DefaultInlineConstraintResolver.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/DefaultInlineConstraintResolver.cs @@ -3,9 +3,7 @@ using System; using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Reflection; +using Microsoft.AspNetCore.Routing.Internal; using Microsoft.Extensions.Options; namespace Microsoft.AspNetCore.Routing @@ -18,6 +16,7 @@ namespace Microsoft.AspNetCore.Routing public class DefaultInlineConstraintResolver : IInlineConstraintResolver { private readonly IDictionary _inlineConstraintMap; + private readonly IServiceProvider _serviceProvider; /// /// Initializes a new instance of the class. @@ -25,11 +24,23 @@ namespace Microsoft.AspNetCore.Routing /// /// Accessor for containing the constraints of interest. /// + [Obsolete("This constructor is obsolete. Use DefaultInlineConstraintResolver.ctor(IOptions, IServiceProvider) instead.")] public DefaultInlineConstraintResolver(IOptions routeOptions) { _inlineConstraintMap = routeOptions.Value.ConstraintMap; } + public DefaultInlineConstraintResolver(IOptions routeOptions, IServiceProvider serviceProvider) + { + if (serviceProvider == null) + { + throw new ArgumentNullException(nameof(serviceProvider)); + } + + _inlineConstraintMap = routeOptions.Value.ConstraintMap; + _serviceProvider = serviceProvider; + } + /// /// /// A typical constraint looks like the following @@ -45,112 +56,12 @@ namespace Microsoft.AspNetCore.Routing throw new ArgumentNullException(nameof(inlineConstraint)); } - string constraintKey; - string argumentString; - var indexOfFirstOpenParens = inlineConstraint.IndexOf('('); - if (indexOfFirstOpenParens >= 0 && inlineConstraint.EndsWith(")", StringComparison.Ordinal)) - { - constraintKey = inlineConstraint.Substring(0, indexOfFirstOpenParens); - argumentString = inlineConstraint.Substring(indexOfFirstOpenParens + 1, - inlineConstraint.Length - indexOfFirstOpenParens - 2); - } - else - { - constraintKey = inlineConstraint; - argumentString = null; - } - - Type constraintType; - if (!_inlineConstraintMap.TryGetValue(constraintKey, out constraintType)) - { - // Cannot resolve the constraint key - return null; - } - - if (!typeof(IRouteConstraint).GetTypeInfo().IsAssignableFrom(constraintType.GetTypeInfo())) - { - throw new RouteCreationException( - Resources.FormatDefaultInlineConstraintResolver_TypeNotConstraint( - constraintType, constraintKey, typeof(IRouteConstraint).Name)); - } - - try - { - return CreateConstraint(constraintType, argumentString); - } - catch (RouteCreationException) - { - throw; - } - catch (Exception exception) - { - throw new RouteCreationException( - $"An error occurred while trying to create an instance of route constraint '{constraintType.FullName}'.", - exception); - } - } - - private static IRouteConstraint CreateConstraint(Type constraintType, string argumentString) - { - // No arguments - call the default constructor - if (argumentString == null) - { - return (IRouteConstraint)Activator.CreateInstance(constraintType); - } - - var constraintTypeInfo = constraintType.GetTypeInfo(); - ConstructorInfo activationConstructor = null; - object[] parameters = null; - var constructors = constraintTypeInfo.DeclaredConstructors.ToArray(); - - // If there is only one constructor and it has a single parameter, pass the argument string directly - // This is necessary for the Regex RouteConstraint to ensure that patterns are not split on commas. - if (constructors.Length == 1 && constructors[0].GetParameters().Length == 1) - { - activationConstructor = constructors[0]; - parameters = ConvertArguments(activationConstructor.GetParameters(), new string[] { argumentString }); - } - else - { - var arguments = argumentString.Split(',').Select(argument => argument.Trim()).ToArray(); - - var matchingConstructors = constructors.Where(ci => ci.GetParameters().Length == arguments.Length) - .ToArray(); - var constructorMatches = matchingConstructors.Length; - - if (constructorMatches == 0) - { - throw new RouteCreationException( - Resources.FormatDefaultInlineConstraintResolver_CouldNotFindCtor( - constraintTypeInfo.Name, arguments.Length)); - } - else if (constructorMatches == 1) - { - activationConstructor = matchingConstructors[0]; - parameters = ConvertArguments(activationConstructor.GetParameters(), arguments); - } - else - { - throw new RouteCreationException( - Resources.FormatDefaultInlineConstraintResolver_AmbiguousCtors( - constraintTypeInfo.Name, arguments.Length)); - } - } - - return (IRouteConstraint)activationConstructor.Invoke(parameters); - } - - private static object[] ConvertArguments(ParameterInfo[] parameterInfos, string[] arguments) - { - var parameters = new object[parameterInfos.Length]; - for (var i = 0; i < parameterInfos.Length; i++) - { - var parameter = parameterInfos[i]; - var parameterType = parameter.ParameterType; - parameters[i] = Convert.ChangeType(arguments[i], parameterType, CultureInfo.InvariantCulture); - } - - return parameters; + // This will return null if the text resolves to a non-IRouteConstraint + return ParameterPolicyActivator.ResolveParameterPolicy( + _inlineConstraintMap, + _serviceProvider, + inlineConstraint, + out _); } } } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/DefaultLinkGenerator.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/DefaultLinkGenerator.cs new file mode 100644 index 0000000000..086d9bf026 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/DefaultLinkGenerator.cs @@ -0,0 +1,522 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.Encodings.Web; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Extensions; +using Microsoft.AspNetCore.Http.Features; +using Microsoft.AspNetCore.Routing.Internal; +using Microsoft.AspNetCore.Routing.Template; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.ObjectPool; +using Microsoft.Extensions.Options; + +namespace Microsoft.AspNetCore.Routing +{ + internal sealed class DefaultLinkGenerator : LinkGenerator + { + private readonly ParameterPolicyFactory _parameterPolicyFactory; + private readonly ObjectPool _uriBuildingContextPool; + private readonly ILogger _logger; + private readonly IServiceProvider _serviceProvider; + + // A LinkOptions object initialized with the values from RouteOptions + // Used when the user didn't specify something more global. + private readonly LinkOptions _globalLinkOptions; + + // Caches TemplateBinder instances + private readonly DataSourceDependentCache> _cache; + + // Used to initialize TemplateBinder instances + private readonly Func _createTemplateBinder; + + public DefaultLinkGenerator( + ParameterPolicyFactory parameterPolicyFactory, + CompositeEndpointDataSource dataSource, + ObjectPool uriBuildingContextPool, + IOptions routeOptions, + ILogger logger, + IServiceProvider serviceProvider) + { + _parameterPolicyFactory = parameterPolicyFactory; + _uriBuildingContextPool = uriBuildingContextPool; + _logger = logger; + _serviceProvider = serviceProvider; + + // We cache TemplateBinder instances per-Endpoint for performance, but we want to wipe out + // that cache is the endpoints change so that we don't allow unbounded memory growth. + _cache = new DataSourceDependentCache>(dataSource, (_) => + { + // We don't eagerly fill this cache because there's no real reason to. Unlike URL matching, we don't + // need to build a big data structure up front to be correct. + return new ConcurrentDictionary(); + }); + + // Cached to avoid per-call allocation of a delegate on lookup. + _createTemplateBinder = CreateTemplateBinder; + + _globalLinkOptions = new LinkOptions() + { + AppendTrailingSlash = routeOptions.Value.AppendTrailingSlash, + LowercaseQueryStrings = routeOptions.Value.LowercaseQueryStrings, + LowercaseUrls = routeOptions.Value.LowercaseUrls, + }; + } + + public override string GetPathByAddress( + HttpContext httpContext, + TAddress address, + RouteValueDictionary values, + RouteValueDictionary ambientValues = default, + PathString? pathBase = default, + FragmentString fragment = default, + LinkOptions options = null) + { + if (httpContext == null) + { + throw new ArgumentNullException(nameof(httpContext)); + } + + var endpoints = GetEndpoints(address); + if (endpoints.Count == 0) + { + return null; + } + + return GetPathByEndpoints( + endpoints, + values, + ambientValues, + pathBase ?? httpContext.Request.PathBase, + fragment, + options); + } + + public override string GetPathByAddress( + TAddress address, + RouteValueDictionary values, + PathString pathBase = default, + FragmentString fragment = default, + LinkOptions options = null) + { + var endpoints = GetEndpoints(address); + if (endpoints.Count == 0) + { + return null; + } + + return GetPathByEndpoints( + endpoints, + values, + ambientValues: null, + pathBase: pathBase, + fragment: fragment, + options: options); + } + + public override string GetUriByAddress( + HttpContext httpContext, + TAddress address, + RouteValueDictionary values, + RouteValueDictionary ambientValues = default, + string scheme = default, + HostString? host = default, + PathString? pathBase = default, + FragmentString fragment = default, + LinkOptions options = null) + { + if (httpContext == null) + { + throw new ArgumentNullException(nameof(httpContext)); + } + + var endpoints = GetEndpoints(address); + if (endpoints.Count == 0) + { + return null; + } + + return GetUriByEndpoints( + endpoints, + values, + ambientValues, + scheme ?? httpContext.Request.Scheme, + host ?? httpContext.Request.Host, + pathBase ?? httpContext.Request.PathBase, + fragment, + options); + } + + public override string GetUriByAddress( + TAddress address, + RouteValueDictionary values, + string scheme, + HostString host, + PathString pathBase = default, + FragmentString fragment = default, + LinkOptions options = null) + { + if (string.IsNullOrEmpty(scheme)) + { + throw new ArgumentException("A scheme must be provided.", nameof(scheme)); + } + + if (!host.HasValue) + { + throw new ArgumentException("A host must be provided.", nameof(host)); + } + + var endpoints = GetEndpoints(address); + if (endpoints.Count == 0) + { + return null; + } + + return GetUriByEndpoints( + endpoints, + values, + ambientValues: null, + scheme: scheme, + host: host, + pathBase: pathBase, + fragment: fragment, + options: options); + } + + private List GetEndpoints(TAddress address) + { + var addressingScheme = _serviceProvider.GetRequiredService>(); + var endpoints = addressingScheme.FindEndpoints(address).OfType().ToList(); + + if (endpoints.Count == 0) + { + Log.EndpointsNotFound(_logger, address); + } + else + { + Log.EndpointsFound(_logger, address, endpoints); + } + + return endpoints; + } + + public string GetPathByEndpoints( + List endpoints, + RouteValueDictionary values, + RouteValueDictionary ambientValues, + PathString pathBase, + FragmentString fragment, + LinkOptions options) + { + for (var i = 0; i < endpoints.Count; i++) + { + var endpoint = endpoints[i]; + if (TryProcessTemplate( + httpContext: null, + endpoint: endpoint, + values: values, + ambientValues: ambientValues, + options: options, + result: out var result)) + { + var uri = UriHelper.BuildRelative( + pathBase, + result.path, + result.query, + fragment); + Log.LinkGenerationSucceeded(_logger, endpoints, uri); + return uri; + } + } + + Log.LinkGenerationFailed(_logger, endpoints); + return null; + } + + // Also called from DefaultLinkGenerationTemplate + public string GetUriByEndpoints( + List endpoints, + RouteValueDictionary values, + RouteValueDictionary ambientValues, + string scheme, + HostString host, + PathString pathBase, + FragmentString fragment, + LinkOptions options) + { + for (var i = 0; i < endpoints.Count; i++) + { + var endpoint = endpoints[i]; + if (TryProcessTemplate( + httpContext: null, + endpoint: endpoint, + values: values, + ambientValues: ambientValues, + options: options, + result: out var result)) + { + var uri = UriHelper.BuildAbsolute( + scheme, + host, + pathBase, + result.path, + result.query, + fragment); + Log.LinkGenerationSucceeded(_logger, endpoints, uri); + return uri; + } + } + + Log.LinkGenerationFailed(_logger, endpoints); + return null; + } + + private TemplateBinder CreateTemplateBinder(RouteEndpoint endpoint) + { + // Now create the constraints and parameter transformers from the pattern + var policies = new List<(string parameterName, IParameterPolicy policy)>(); + foreach (var kvp in endpoint.RoutePattern.ParameterPolicies) + { + var parameterName = kvp.Key; + + // It's possible that we don't have an actual route parameter, we need to support that case. + var parameter = endpoint.RoutePattern.GetParameter(parameterName); + + // Use the first parameter transformer per parameter + var foundTransformer = false; + for (var i = 0; i < kvp.Value.Count; i++) + { + var parameterPolicy = _parameterPolicyFactory.Create(parameter, kvp.Value[i]); + if (!foundTransformer && parameterPolicy is IOutboundParameterTransformer parameterTransformer) + { + policies.Add((parameterName, parameterTransformer)); + foundTransformer = true; + } + + if (parameterPolicy is IRouteConstraint constraint) + { + policies.Add((parameterName, constraint)); + } + } + } + + return new TemplateBinder( + UrlEncoder.Default, + _uriBuildingContextPool, + endpoint.RoutePattern, + new RouteValueDictionary(endpoint.RoutePattern.Defaults), + endpoint.Metadata.GetMetadata()?.RequiredValues.Keys, + policies); + } + + // Internal for testing + internal TemplateBinder GetTemplateBinder(RouteEndpoint endpoint) => _cache.EnsureInitialized().GetOrAdd(endpoint, _createTemplateBinder); + + // Internal for testing + internal bool TryProcessTemplate( + HttpContext httpContext, + RouteEndpoint endpoint, + RouteValueDictionary values, + RouteValueDictionary ambientValues, + LinkOptions options, + out (PathString path, QueryString query) result) + { + var templateBinder = GetTemplateBinder(endpoint); + + var templateValuesResult = templateBinder.GetValues(ambientValues, values); + if (templateValuesResult == null) + { + // We're missing one of the required values for this route. + result = default; + Log.TemplateFailedRequiredValues(_logger, endpoint, ambientValues, values); + return false; + } + + if (!templateBinder.TryProcessConstraints(httpContext, templateValuesResult.CombinedValues, out var parameterName, out var constraint)) + { + result = default; + Log.TemplateFailedConstraint(_logger, endpoint, parameterName, constraint, templateValuesResult.CombinedValues); + return false; + } + + if (!templateBinder.TryBindValues(templateValuesResult.AcceptedValues, options, _globalLinkOptions, out result)) + { + Log.TemplateFailedExpansion(_logger, endpoint, templateValuesResult.AcceptedValues); + return false; + } + + Log.TemplateSucceeded(_logger, endpoint, result.path, result.query); + return true; + } + + // Also called from DefaultLinkGenerationTemplate + public static RouteValueDictionary GetAmbientValues(HttpContext httpContext) + { + return httpContext?.Features.Get()?.RouteValues; + } + + private static class Log + { + public static class EventIds + { + public static readonly EventId EndpointsFound = new EventId(100, "EndpointsFound"); + public static readonly EventId EndpointsNotFound = new EventId(101, "EndpointsNotFound"); + + public static readonly EventId TemplateSucceeded = new EventId(102, "TemplateSucceeded"); + public static readonly EventId TemplateFailedRequiredValues = new EventId(103, "TemplateFailedRequiredValues"); + public static readonly EventId TemplateFailedConstraint = new EventId(103, "TemplateFailedConstraint"); + public static readonly EventId TemplateFailedExpansion = new EventId(104, "TemplateFailedExpansion"); + + public static readonly EventId LinkGenerationSucceeded = new EventId(105, "LinkGenerationSucceeded"); + public static readonly EventId LinkGenerationFailed = new EventId(106, "LinkGenerationFailed"); + } + + private static readonly Action, object, Exception> _endpointsFound = LoggerMessage.Define, object>( + LogLevel.Debug, + EventIds.EndpointsFound, + "Found the endpoints {Endpoints} for address {Address}"); + + private static readonly Action _endpointsNotFound = LoggerMessage.Define( + LogLevel.Debug, + EventIds.EndpointsNotFound, + "No endpoints found for address {Address}"); + + private static readonly Action _templateSucceeded = LoggerMessage.Define( + LogLevel.Debug, + EventIds.TemplateSucceeded, + "Successfully processed template {Template} for {Endpoint} resulting in {Path} and {Query}"); + + private static readonly Action _templateFailedRequiredValues = LoggerMessage.Define( + LogLevel.Debug, + EventIds.TemplateFailedRequiredValues, + "Failed to process the template {Template} for {Endpoint}. " + + "A required route value is missing, or has a different value from the required default values." + + "Supplied ambient values {AmbientValues} and {Values} with default values {Defaults}"); + + private static readonly Action _templateFailedConstraint = LoggerMessage.Define( + LogLevel.Debug, + EventIds.TemplateFailedConstraint, + "Failed to process the template {Template} for {Endpoint}. " + + "The constraint {Constraint} for parameter {ParameterName} failed with values {Values}"); + + private static readonly Action _templateFailedExpansion = LoggerMessage.Define( + LogLevel.Debug, + EventIds.TemplateFailedExpansion, + "Failed to process the template {Template} for {Endpoint}. " + + "The failure occured while expanding the template with values {Values} " + + "This is usually due to a missing or empty value in a complex segment"); + + private static readonly Action, string, Exception> _linkGenerationSucceeded = LoggerMessage.Define, string>( + LogLevel.Debug, + EventIds.LinkGenerationSucceeded, + "Link generation succeeded for endpoints {Endpoints} with result {URI}"); + + private static readonly Action, Exception> _linkGenerationFailed = LoggerMessage.Define>( + LogLevel.Debug, + EventIds.LinkGenerationFailed, + "Link generation failed for endpoints {Endpoints}"); + + public static void EndpointsFound(ILogger logger, object address, IEnumerable endpoints) + { + // Checking level again to avoid allocation on the common path + if (logger.IsEnabled(LogLevel.Debug)) + { + _endpointsFound(logger, endpoints.Select(e => e.DisplayName), address, null); + } + } + + public static void EndpointsNotFound(ILogger logger, object address) + { + _endpointsNotFound(logger, address, null); + } + + public static void TemplateSucceeded(ILogger logger, RouteEndpoint endpoint, PathString path, QueryString query) + { + _templateSucceeded(logger, endpoint.RoutePattern.RawText, endpoint.DisplayName, path.Value, query.Value, null); + } + + public static void TemplateFailedRequiredValues(ILogger logger, RouteEndpoint endpoint, RouteValueDictionary ambientValues, RouteValueDictionary values) + { + // Checking level again to avoid allocation on the common path + if (logger.IsEnabled(LogLevel.Debug)) + { + _templateFailedRequiredValues(logger, endpoint.RoutePattern.RawText, endpoint.DisplayName, FormatRouteValues(ambientValues), FormatRouteValues(values), FormatRouteValues(endpoint.RoutePattern.Defaults), null); + } + } + + public static void TemplateFailedConstraint(ILogger logger, RouteEndpoint endpoint, string parameterName, IRouteConstraint constraint, RouteValueDictionary values) + { + // Checking level again to avoid allocation on the common path + if (logger.IsEnabled(LogLevel.Debug)) + { + _templateFailedConstraint(logger, endpoint.RoutePattern.RawText, endpoint.DisplayName, constraint, parameterName, FormatRouteValues(values), null); + } + } + + public static void TemplateFailedExpansion(ILogger logger, RouteEndpoint endpoint, RouteValueDictionary values) + { + // Checking level again to avoid allocation on the common path + if (logger.IsEnabled(LogLevel.Debug)) + { + _templateFailedExpansion(logger, endpoint.RoutePattern.RawText, endpoint.DisplayName, FormatRouteValues(values), null); + } + } + + public static void LinkGenerationSucceeded(ILogger logger, IEnumerable endpoints, string uri) + { + // Checking level again to avoid allocation on the common path + if (logger.IsEnabled(LogLevel.Debug)) + { + _linkGenerationSucceeded(logger, endpoints.Select(e => e.DisplayName), uri, null); + } + } + + public static void LinkGenerationFailed(ILogger logger, IEnumerable endpoints) + { + // Checking level again to avoid allocation on the common path + if (logger.IsEnabled(LogLevel.Debug)) + { + _linkGenerationFailed(logger, endpoints.Select(e => e.DisplayName), null); + } + } + + // EXPENSIVE: should only be used at Debug and higher levels of logging. + private static string FormatRouteValues(IReadOnlyDictionary values) + { + if (values == null || values.Count == 0) + { + return "{ }"; + } + + var builder = new StringBuilder(); + builder.Append("{ "); + + foreach (var kvp in values.OrderBy(kvp => kvp.Key)) + { + builder.Append("\""); + builder.Append(kvp.Key); + builder.Append("\""); + builder.Append(":"); + builder.Append(" "); + builder.Append("\""); + builder.Append(kvp.Value); + builder.Append("\""); + builder.Append(", "); + } + + // Trim trailing ", " + builder.Remove(builder.Length - 2, 2); + + builder.Append(" }"); + + return builder.ToString(); + } + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/DefaultParameterPolicyFactory.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/DefaultParameterPolicyFactory.cs new file mode 100644 index 0000000000..d1837c91c2 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/DefaultParameterPolicyFactory.cs @@ -0,0 +1,81 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using Microsoft.AspNetCore.Routing.Constraints; +using Microsoft.AspNetCore.Routing.Internal; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.Extensions.Options; + +namespace Microsoft.AspNetCore.Routing +{ + internal class DefaultParameterPolicyFactory : ParameterPolicyFactory + { + private readonly RouteOptions _options; + private readonly IServiceProvider _serviceProvider; + + public DefaultParameterPolicyFactory( + IOptions options, + IServiceProvider serviceProvider) + { + _options = options.Value; + _serviceProvider = serviceProvider; + } + + public override IParameterPolicy Create(RoutePatternParameterPart parameter, IParameterPolicy parameterPolicy) + { + if (parameterPolicy == null) + { + throw new ArgumentNullException(nameof(parameterPolicy)); + } + + if (parameterPolicy is IRouteConstraint routeConstraint) + { + return InitializeRouteConstraint(parameter?.IsOptional ?? false, routeConstraint); + } + + return parameterPolicy; + } + + public override IParameterPolicy Create(RoutePatternParameterPart parameter, string inlineText) + { + if (inlineText == null) + { + throw new ArgumentNullException(nameof(inlineText)); + } + + var parameterPolicy = ParameterPolicyActivator.ResolveParameterPolicy( + _options.ConstraintMap, + _serviceProvider, + inlineText, + out var parameterPolicyKey); + + if (parameterPolicy == null) + { + throw new InvalidOperationException(Resources.FormatRoutePattern_ConstraintReferenceNotFound( + parameterPolicyKey, + typeof(RouteOptions), + nameof(RouteOptions.ConstraintMap))); + } + + if (parameterPolicy is IRouteConstraint constraint) + { + return InitializeRouteConstraint(parameter?.IsOptional ?? false, constraint); + } + + return parameterPolicy; + } + + private IParameterPolicy InitializeRouteConstraint( + bool optional, + IRouteConstraint routeConstraint) + { + if (optional) + { + routeConstraint = new OptionalRouteConstraint(routeConstraint); + } + + return routeConstraint; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/DependencyInjection/ConfigureEndpointOptions.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/DependencyInjection/ConfigureEndpointOptions.cs new file mode 100644 index 0000000000..ce6c069a22 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/DependencyInjection/ConfigureEndpointOptions.cs @@ -0,0 +1,38 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.Options; + +namespace Microsoft.Extensions.DependencyInjection +{ + internal class ConfigureEndpointOptions : IConfigureOptions + { + private readonly IEnumerable _dataSources; + + public ConfigureEndpointOptions(IEnumerable dataSources) + { + if (dataSources == null) + { + throw new ArgumentNullException(nameof(dataSources)); + } + + _dataSources = dataSources; + } + + public void Configure(EndpointOptions options) + { + if (options == null) + { + throw new ArgumentNullException(nameof(options)); + } + + foreach (var dataSource in _dataSources) + { + options.DataSources.Add(dataSource); + } + } + } +} \ No newline at end of file diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/DependencyInjection/RoutingServiceCollectionExtensions.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/DependencyInjection/RoutingServiceCollectionExtensions.cs index d6883f6c95..1fa562966c 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/DependencyInjection/RoutingServiceCollectionExtensions.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/DependencyInjection/RoutingServiceCollectionExtensions.cs @@ -4,10 +4,12 @@ using System; using Microsoft.AspNetCore.Routing; using Microsoft.AspNetCore.Routing.Internal; +using Microsoft.AspNetCore.Routing.Matching; using Microsoft.AspNetCore.Routing.Tree; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Logging; using Microsoft.Extensions.ObjectPool; +using Microsoft.Extensions.Options; namespace Microsoft.Extensions.DependencyInjection { @@ -47,6 +49,35 @@ namespace Microsoft.Extensions.DependencyInjection services.TryAddSingleton(typeof(RoutingMarkerService)); + // Collect all data sources from DI. + services.TryAddEnumerable(ServiceDescriptor.Transient, ConfigureEndpointOptions>()); + + // Allow global access to the list of endpoints. + services.TryAddSingleton(s => + { + var options = s.GetRequiredService>(); + return new CompositeEndpointDataSource(options.Value.DataSources); + }); + + // + // Default matcher implementation + // + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddTransient(); + services.TryAddSingleton(); + + // Link generation related services + services.TryAddSingleton(); + services.TryAddSingleton, EndpointNameAddressScheme>(); + services.TryAddSingleton, RouteValuesAddressScheme>(); + + // + // Endpoint Selection + // + services.TryAddSingleton(); + services.TryAddEnumerable(ServiceDescriptor.Singleton()); + return services; } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointDataSource.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointDataSource.cs new file mode 100644 index 0000000000..6176ba08e0 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointDataSource.cs @@ -0,0 +1,27 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Primitives; + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Provides a collection of instances. + /// + public abstract class EndpointDataSource + { + /// + /// Gets a used to signal invalidation of cached + /// instances. + /// + /// The . + public abstract IChangeToken GetChangeToken(); + + /// + /// Returns a read-only collection of instances. + /// + public abstract IReadOnlyList Endpoints { get; } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointMiddleware.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointMiddleware.cs new file mode 100644 index 0000000000..7facd61bb0 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointMiddleware.cs @@ -0,0 +1,78 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; +using Microsoft.Extensions.Logging; + +namespace Microsoft.AspNetCore.Routing +{ + internal sealed class EndpointMiddleware + { + private readonly ILogger _logger; + private readonly RequestDelegate _next; + + public EndpointMiddleware(ILogger logger, RequestDelegate next) + { + if (logger == null) + { + throw new ArgumentNullException(nameof(logger)); + } + + if (next == null) + { + throw new ArgumentNullException(nameof(next)); + } + + _logger = logger; + _next = next; + } + + public async Task Invoke(HttpContext httpContext) + { + var endpoint = httpContext.Features.Get()?.Endpoint; + if (endpoint?.RequestDelegate != null) + { + Log.ExecutingEndpoint(_logger, endpoint); + + try + { + await endpoint.RequestDelegate(httpContext); + } + finally + { + Log.ExecutedEndpoint(_logger, endpoint); + } + + return; + } + + await _next(httpContext); + } + + private static class Log + { + private static readonly Action _executingEndpoint = LoggerMessage.Define( + LogLevel.Information, + new EventId(0, "ExecutingEndpoint"), + "Executing endpoint '{EndpointName}'"); + + private static readonly Action _executedEndpoint = LoggerMessage.Define( + LogLevel.Information, + new EventId(1, "ExecutedEndpoint"), + "Executed endpoint '{EndpointName}'"); + + public static void ExecutingEndpoint(ILogger logger, Endpoint endpoint) + { + _executingEndpoint(logger, endpoint.DisplayName, null); + } + + public static void ExecutedEndpoint(ILogger logger, Endpoint endpoint) + { + _executedEndpoint(logger, endpoint.DisplayName, null); + } + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointNameAddressScheme.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointNameAddressScheme.cs new file mode 100644 index 0000000000..2716de36e8 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointNameAddressScheme.cs @@ -0,0 +1,107 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing +{ + internal class EndpointNameAddressScheme : IEndpointAddressScheme + { + private readonly DataSourceDependentCache> _cache; + + public EndpointNameAddressScheme(CompositeEndpointDataSource dataSource) + { + _cache = new DataSourceDependentCache>(dataSource, Initialize); + } + + // Internal for tests + internal Dictionary Entries => _cache.EnsureInitialized(); + + public IEnumerable FindEndpoints(string address) + { + if (address == null) + { + throw new ArgumentNullException(nameof(address)); + } + + // Capture the current value of the cache + var entries = Entries; + + entries.TryGetValue(address, out var result); + return result ?? Array.Empty(); + } + + private static Dictionary Initialize(IReadOnlyList endpoints) + { + // Collect duplicates as we go, blow up on startup if we find any. + var hasDuplicates = false; + + var entries = new Dictionary(StringComparer.Ordinal); + for (var i = 0; i < endpoints.Count; i++) + { + var endpoint = endpoints[i]; + + var endpointName = GetEndpointName(endpoint); + if (endpointName == null) + { + continue; + } + + if (!entries.TryGetValue(endpointName, out var existing)) + { + // This isn't a duplicate (so far) + entries[endpointName] = new[] { endpoint }; + continue; + } + + // Ok this is a duplicate, because we have two endpoints with the same name. Bail out, because we + // are just going to throw, we don't need to finish collecting data. + hasDuplicates = true; + break; + } + + if (!hasDuplicates) + { + // No duplicates, success! + return entries; + } + + // OK we need to report some duplicates. + var duplicates = endpoints + .GroupBy(e => GetEndpointName(e)) + .Where(g => g.Key != null) + .Where(g => g.Count() > 1); + + var builder = new StringBuilder(); + builder.AppendLine(Resources.DuplicateEndpointNameHeader); + + foreach (var group in duplicates) + { + builder.AppendLine(); + builder.AppendLine(Resources.FormatDuplicateEndpointNameEntry(group.Key)); + + foreach (var endpoint in group) + { + builder.AppendLine(endpoint.DisplayName); + } + } + + throw new InvalidOperationException(builder.ToString()); + + string GetEndpointName(Endpoint endpoint) + { + if (endpoint.Metadata.GetMetadata()?.SuppressLinkGeneration == true) + { + // Skip anything that's suppressed for linking. + return null; + } + + return endpoint.Metadata.GetMetadata()?.EndpointName; + } + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointNameMetadata.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointNameMetadata.cs new file mode 100644 index 0000000000..1342962797 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointNameMetadata.cs @@ -0,0 +1,37 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Specifies an endpoint name in . + /// + /// + /// Endpoint names must be unique within an application, and can be used to unambiguously + /// identify a desired endpoint for URI generation using . + /// + public class EndpointNameMetadata : IEndpointNameMetadata + { + /// + /// Creates a new instance of with the provided endpoint name. + /// + /// The endpoint name. + public EndpointNameMetadata(string endpointName) + { + if (endpointName == null) + { + throw new ArgumentNullException(nameof(endpointName)); + } + + EndpointName = endpointName; + } + + /// + /// Gets the endpoint name. + /// + public string EndpointName { get; } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointOptions.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointOptions.cs new file mode 100644 index 0000000000..8f364d6eaa --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointOptions.cs @@ -0,0 +1,13 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; + +namespace Microsoft.AspNetCore.Routing +{ + // Internal for 2.2. Public API for configuring endpoints will be added in 3.0 + internal class EndpointOptions + { + public IList DataSources { get; } = new List(); + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointRoutingMiddleware.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointRoutingMiddleware.cs new file mode 100644 index 0000000000..60efa46586 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointRoutingMiddleware.cs @@ -0,0 +1,168 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; +using Microsoft.AspNetCore.Routing.Matching; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; + +namespace Microsoft.AspNetCore.Routing +{ + internal sealed class EndpointRoutingMiddleware + { + private readonly MatcherFactory _matcherFactory; + private readonly ILogger _logger; + private readonly CompositeEndpointDataSource _endpointDataSource; + private readonly RequestDelegate _next; + + private Task _initializationTask; + + public EndpointRoutingMiddleware( + MatcherFactory matcherFactory, + CompositeEndpointDataSource endpointDataSource, + ILogger logger, + RequestDelegate next) + { + if (matcherFactory == null) + { + throw new ArgumentNullException(nameof(matcherFactory)); + } + + if (endpointDataSource == null) + { + throw new ArgumentNullException(nameof(endpointDataSource)); + } + + if (logger == null) + { + throw new ArgumentNullException(nameof(logger)); + } + + if (next == null) + { + throw new ArgumentNullException(nameof(next)); + } + + _matcherFactory = matcherFactory; + _endpointDataSource = endpointDataSource; + _logger = logger; + _next = next; + } + + public async Task Invoke(HttpContext httpContext) + { + var feature = new EndpointSelectorContext(); + + // There's an inherent race condition between waiting for init and accessing the matcher + // this is OK because once `_matcher` is initialized, it will not be set to null again. + var matcher = await InitializeAsync(); + + await matcher.MatchAsync(httpContext, feature); + if (feature.Endpoint != null) + { + // Set the endpoint feature only on success. This means we won't overwrite any + // existing state for related features unless we did something. + SetFeatures(httpContext, feature); + + Log.MatchSuccess(_logger, feature); + } + else + { + Log.MatchFailure(_logger); + } + + await _next(httpContext); + } + + private static void SetFeatures(HttpContext httpContext, EndpointSelectorContext context) + { + // For back-compat EndpointSelectorContext implements IEndpointFeature, + // IRouteValuesFeature and IRoutingFeature + httpContext.Features.Set(context); + httpContext.Features.Set(context); + httpContext.Features.Set(context); + } + + // Initialization is async to avoid blocking threads while reflection and things + // of that nature take place. + // + // We've seen cases where startup is very slow if we allow multiple threads to race + // while initializing the set of endpoints/routes. Doing CPU intensive work is a + // blocking operation if you have a low core count and enough work to do. + private Task InitializeAsync() + { + var initializationTask = _initializationTask; + if (initializationTask != null) + { + return initializationTask; + } + + return InitializeCoreAsync(); + } + + private Task InitializeCoreAsync() + { + var initialization = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + var initializationTask = Interlocked.CompareExchange(ref _initializationTask, initialization.Task, null); + if (initializationTask != null) + { + // This thread lost the race, join the existing task. + return initializationTask; + } + + // This thread won the race, do the initialization. + try + { + var matcher = _matcherFactory.CreateMatcher(_endpointDataSource); + + // Now replace the initialization task with one created with the default execution context. + // This is important because capturing the execution context will leak memory in ASP.NET Core. + using (ExecutionContext.SuppressFlow()) + { + _initializationTask = Task.FromResult(matcher); + } + + // Complete the task, this will unblock any requests that came in while initializing. + initialization.SetResult(matcher); + return initialization.Task; + } + catch (Exception ex) + { + // Allow initialization to occur again. Since DataSources can change, it's possible + // for the developer to correct the data causing the failure. + _initializationTask = null; + + // Complete the task, this will throw for any requests that came in while initializing. + initialization.SetException(ex); + return initialization.Task; + } + } + + private static class Log + { + private static readonly Action _matchSuccess = LoggerMessage.Define( + LogLevel.Debug, + new EventId(1, "MatchSuccess"), + "Request matched endpoint '{EndpointName}'"); + + private static readonly Action _matchFailure = LoggerMessage.Define( + LogLevel.Debug, + new EventId(2, "MatchFailure"), + "Request did not match any endpoints"); + + public static void MatchSuccess(ILogger logger, EndpointSelectorContext context) + { + _matchSuccess(logger, context.Endpoint.DisplayName, null); + } + + public static void MatchFailure(ILogger logger) + { + _matchFailure(logger, null); + } + } + } +} \ No newline at end of file diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointSelectorContext.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointSelectorContext.cs new file mode 100644 index 0000000000..848cc27366 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/EndpointSelectorContext.cs @@ -0,0 +1,70 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; + +namespace Microsoft.AspNetCore.Routing +{ + public sealed class EndpointSelectorContext : IEndpointFeature, IRouteValuesFeature, IRoutingFeature + { + private RouteData _routeData; + private RouteValueDictionary _routeValues; + + /// + /// Gets or sets the selected for the current + /// request. + /// + public Endpoint Endpoint { get; set; } + + /// + /// Gets or sets the associated with the currrent + /// request. + /// + public RouteValueDictionary RouteValues + { + get => _routeValues; + set + { + _routeValues = value; + + // RouteData will be created next get with new Values + _routeData = null; + } + } + + /// + /// Gets or sets the for the current request. + /// + /// + /// The setter is not implemented. Use to set the route values. + /// + RouteData IRoutingFeature.RouteData + { + get + { + if (_routeData == null) + { + _routeData = _routeValues == null ? new RouteData() : new RouteData(_routeValues); + + // Note: DataTokens won't update if someone else overwrites the Endpoint + // after route values has been set. This seems find since endpoints are a new + // feature and DataTokens are for back-compat. + var dataTokensMetadata = Endpoint?.Metadata.GetMetadata(); + if (dataTokensMetadata != null) + { + var dataTokens = _routeData.DataTokens; + foreach (var kvp in dataTokensMetadata.DataTokens) + { + _routeData.DataTokens.Add(kvp.Key, kvp.Value); + } + } + } + + return _routeData; + } + set => throw new NotSupportedException(); + } + } +} \ No newline at end of file diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/HttpMethodMetadata.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/HttpMethodMetadata.cs new file mode 100644 index 0000000000..f01bf2a2a5 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/HttpMethodMetadata.cs @@ -0,0 +1,64 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Represents HTTP method metadata used during routing. + /// + [DebuggerDisplay("{DebuggerToString(),nq}")] + public sealed class HttpMethodMetadata : IHttpMethodMetadata + { + /// + /// Initializes a new instance of the class. + /// + /// + /// The HTTP methods used during routing. + /// An empty collection means any HTTP method will be accepted. + /// + public HttpMethodMetadata(IEnumerable httpMethods) + : this(httpMethods, acceptCorsPreflight: false) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// + /// The HTTP methods used during routing. + /// An empty collection means any HTTP method will be accepted. + /// + /// A value indicating whether routing accepts CORS preflight requests. + public HttpMethodMetadata(IEnumerable httpMethods, bool acceptCorsPreflight) + { + if (httpMethods == null) + { + throw new ArgumentNullException(nameof(httpMethods)); + } + + HttpMethods = httpMethods.ToArray(); + AcceptCorsPreflight = acceptCorsPreflight; + } + + /// + /// Returns a value indicating whether the associated endpoint should accept CORS preflight requests. + /// + public bool AcceptCorsPreflight { get; } + + /// + /// Returns a read-only collection of HTTP methods used during routing. + /// An empty collection means any HTTP method will be accepted. + /// + public IReadOnlyList HttpMethods { get; } + + private string DebuggerToString() + { + return $"HttpMethods: {string.Join(",", HttpMethods)} - Cors: {AcceptCorsPreflight}"; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/IDataTokenMetadata.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/IDataTokenMetadata.cs new file mode 100644 index 0000000000..0fb28ac244 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/IDataTokenMetadata.cs @@ -0,0 +1,21 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Metadata that defines data tokens for an . This metadata + /// type provides data tokens value for associated + /// with an endpoint. + /// + public interface IDataTokensMetadata + { + /// + /// Get the data tokens. + /// + IReadOnlyDictionary DataTokens { get; } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/IEndpointAddressScheme.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/IEndpointAddressScheme.cs new file mode 100644 index 0000000000..e6b6a435bc --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/IEndpointAddressScheme.cs @@ -0,0 +1,22 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Defines a contract to find endpoints based on the provided address. + /// + /// The address type to look up endpoints. + public interface IEndpointAddressScheme + { + /// + /// Finds endpoints based on the provided . + /// + /// The information used to look up endpoints. + /// A collection of . + IEnumerable FindEndpoints(TAddress address); + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/IEndpointNameMetadata.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/IEndpointNameMetadata.cs new file mode 100644 index 0000000000..e2e3b85fda --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/IEndpointNameMetadata.cs @@ -0,0 +1,22 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Defines a contract use to specify an endpoint name in . + /// + /// + /// Endpoint names must be unique within an application, and can be used to unambiguously + /// identify a desired endpoint for URI generation using . + /// + public interface IEndpointNameMetadata + { + /// + /// Gets the endpoint name. + /// + string EndpointName { get; } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/IHttpMethodMetadata.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/IHttpMethodMetadata.cs new file mode 100644 index 0000000000..af67c6e952 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/IHttpMethodMetadata.cs @@ -0,0 +1,24 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information + +using System.Collections.Generic; + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Represents HTTP method metadata used during routing. + /// + public interface IHttpMethodMetadata + { + /// + /// Returns a value indicating whether the associated endpoint should accept CORS preflight requests. + /// + bool AcceptCorsPreflight { get; } + + /// + /// Returns a read-only collection of HTTP methods used during routing. + /// An empty collection means any HTTP method will be accepted. + /// + IReadOnlyList HttpMethods { get; } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/IRouteValuesAddressMetadata.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/IRouteValuesAddressMetadata.cs new file mode 100644 index 0000000000..076dea8a92 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/IRouteValuesAddressMetadata.cs @@ -0,0 +1,24 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Represents metadata used during link generation to find + /// the associated endpoint using route values. + /// + public interface IRouteValuesAddressMetadata + { + /// + /// Gets the route name. Can be null. + /// + string RouteName { get; } + + /// + /// Gets the required route values. + /// + IReadOnlyDictionary RequiredValues { get; } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/ISuppressLinkGenerationMetadata.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/ISuppressLinkGenerationMetadata.cs new file mode 100644 index 0000000000..3541bad830 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/ISuppressLinkGenerationMetadata.cs @@ -0,0 +1,17 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Represents metadata used during link generation. If is true + /// the associated endpoint will not be used for link generation. + /// + public interface ISuppressLinkGenerationMetadata + { + /// + /// Gets a value indicating whether the assocated endpoint should be used for link generation. + /// + bool SuppressLinkGeneration { get; } + } +} \ No newline at end of file diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/ISuppressMatchingMetadata.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/ISuppressMatchingMetadata.cs new file mode 100644 index 0000000000..d5acffb744 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/ISuppressMatchingMetadata.cs @@ -0,0 +1,17 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Metadata used to prevent URL matching. If is true the + /// associated endpoint will not be considered for URL matching. + /// + public interface ISuppressMatchingMetadata + { + /// + /// Gets a value indicating whether the assocated endpoint should be used for URL matching. + /// + bool SuppressMatching { get; } + } +} \ No newline at end of file diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/DfaGraphWriter.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/DfaGraphWriter.cs new file mode 100644 index 0000000000..32f1a314f8 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/DfaGraphWriter.cs @@ -0,0 +1,97 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.IO; +using Microsoft.AspNetCore.Routing.Matching; +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.AspNetCore.Routing.Internal +{ + /// + /// + /// A singleton service that can be used to write the route table as a state machine + /// in GraphViz DOT language https://www.graphviz.org/doc/info/lang.html + /// + /// + /// You can use http://www.webgraphviz.com/ to visualize the results. + /// + /// + /// This type has no support contract, and may be removed or changed at any time in + /// a future release. + /// + /// + public class DfaGraphWriter + { + private readonly IServiceProvider _services; + + public DfaGraphWriter(IServiceProvider services) + { + _services = services; + } + + public void Write(EndpointDataSource dataSource, TextWriter writer) + { + var builder = _services.GetRequiredService(); + + var endpoints = dataSource.Endpoints; + for (var i = 0; i < endpoints.Count; i++) + { + if (endpoints[i] is RouteEndpoint endpoint && (endpoint.Metadata.GetMetadata()?.SuppressMatching ?? false) == false) + { + builder.AddEndpoint(endpoint); + } + } + + // Assign each node a sequential index. + var visited = new Dictionary(); + + var tree = builder.BuildDfaTree(includeLabel: true); + + writer.WriteLine("digraph DFA {"); + tree.Visit(WriteNode); + writer.WriteLine("}"); + + void WriteNode(DfaNode node) + { + if (!visited.TryGetValue(node, out var label)) + { + label = visited.Count; + visited.Add(node, label); + } + + // We can safely index into visited because this is a post-order traversal, + // all of the children of this node are already in the dictionary. + + if (node.Literals != null) + { + foreach (var literal in node.Literals) + { + writer.WriteLine($"{label} -> {visited[literal.Value]} [label=\"/{literal.Key}\"]"); + } + } + + if (node.Parameters != null) + { + writer.WriteLine($"{label} -> {visited[node.Parameters]} [label=\"/*\"]"); + } + + if (node.CatchAll != null && node.Parameters != node.CatchAll) + { + writer.WriteLine($"{label} -> {visited[node.CatchAll]} [label=\"/**\"]"); + } + + if (node.PolicyEdges != null) + { + foreach (var policy in node.PolicyEdges) + { + writer.WriteLine($"{label} -> {visited[policy.Value]} [label=\"{policy.Key}\"]"); + } + } + + writer.WriteLine($"{label} [label=\"{node.Label}\"]"); + } + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/EndpointRoutingApplicationBuilderExtensions.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/EndpointRoutingApplicationBuilderExtensions.cs new file mode 100644 index 0000000000..54a5d6a48f --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/EndpointRoutingApplicationBuilderExtensions.cs @@ -0,0 +1,54 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Routing; +using Microsoft.AspNetCore.Routing.Internal; +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.AspNetCore.Internal +{ + public static class EndpointRoutingApplicationBuilderExtensions + { + // Property key is used by MVC package to check that routing is registered + private const string EndpointRoutingRegisteredKey = "__EndpointRoutingMiddlewareRegistered"; + + public static IApplicationBuilder UseEndpointRouting(this IApplicationBuilder builder) + { + VerifyRoutingIsRegistered(builder); + + builder.Properties[EndpointRoutingRegisteredKey] = true; + + return builder.UseMiddleware(); + } + + public static IApplicationBuilder UseEndpoint(this IApplicationBuilder builder) + { + VerifyRoutingIsRegistered(builder); + + if (!builder.Properties.TryGetValue(EndpointRoutingRegisteredKey, out _)) + { + var message = $"{nameof(EndpointRoutingMiddleware)} must be added to the request execution pipeline before {nameof(EndpointMiddleware)}. " + + $"Please add {nameof(EndpointRoutingMiddleware)} by calling '{nameof(IApplicationBuilder)}.{nameof(UseEndpointRouting)}' inside the call to 'Configure(...)' in the application startup code."; + + throw new InvalidOperationException(message); + } + + return builder.UseMiddleware(); + } + + private static void VerifyRoutingIsRegistered(IApplicationBuilder app) + { + // Verify if AddRouting was done before calling UseEndpointRouting/UseEndpoint + // We use the RoutingMarkerService to make sure if all the services were added. + if (app.ApplicationServices.GetService(typeof(RoutingMarkerService)) == null) + { + throw new InvalidOperationException(Resources.FormatUnableToFindServices( + nameof(IServiceCollection), + nameof(RoutingServiceCollectionExtensions.AddRouting), + "ConfigureServices(...)")); + } + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/LinkGenerationDecisionTree.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/LinkGenerationDecisionTree.cs index f71e6dd74d..61a4cd1960 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/LinkGenerationDecisionTree.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/LinkGenerationDecisionTree.cs @@ -3,14 +3,23 @@ using System; using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; using Microsoft.AspNetCore.Routing.DecisionTree; using Microsoft.AspNetCore.Routing.Tree; namespace Microsoft.AspNetCore.Routing.Internal { // A decision tree that matches link generation entries based on route data. + [DebuggerDisplay("{DebuggerDisplayString,nq}")] public class LinkGenerationDecisionTree { + // Fallback value for cases where the ambient values weren't provided. + // + // This is safe because we don't mutate the route values in here. + private static readonly RouteValueDictionary EmptyAmbientValues = new RouteValueDictionary(); + private readonly DecisionTreeNode _root; public LinkGenerationDecisionTree(IReadOnlyList entries) @@ -20,18 +29,18 @@ namespace Microsoft.AspNetCore.Routing.Internal new OutboundMatchClassifier()); } - public IList GetMatches(VirtualPathContext context) + public IList GetMatches(RouteValueDictionary values, RouteValueDictionary ambientValues) { // Perf: Avoid allocation for List if there aren't any Matches or Criteria if (_root.Matches.Count > 0 || _root.Criteria.Count > 0) { var results = new List(); - Walk(results, context, _root, isFallbackPath: false); + Walk(results, values, ambientValues ?? EmptyAmbientValues, _root, isFallbackPath: false); results.Sort(OutboundMatchResultComparer.Instance); return results; } - return null; + return null; } // We need to recursively walk the decision tree based on the provided route data @@ -61,7 +70,8 @@ namespace Microsoft.AspNetCore.Routing.Internal // The decision tree uses a tree data structure to execute these rules across all candidates at once. private void Walk( List results, - VirtualPathContext context, + RouteValueDictionary values, + RouteValueDictionary ambientValues, DecisionTreeNode node, bool isFallbackPath) { @@ -77,13 +87,11 @@ namespace Microsoft.AspNetCore.Routing.Internal var criterion = node.Criteria[i]; var key = criterion.Key; - object value; - if (context.Values.TryGetValue(key, out value)) + if (values.TryGetValue(key, out var value)) { - DecisionTreeNode branch; - if (criterion.Branches.TryGetValue(value ?? string.Empty, out branch)) + if (criterion.Branches.TryGetValue(value ?? string.Empty, out var branch)) { - Walk(results, context, branch, isFallbackPath); + Walk(results, values, ambientValues, branch, isFallbackPath); } } else @@ -92,18 +100,18 @@ namespace Microsoft.AspNetCore.Routing.Internal // if an ambient value was supplied. The path explored with the empty value is considered // the fallback path. DecisionTreeNode branch; - if (context.AmbientValues.TryGetValue(key, out value) && + if (ambientValues.TryGetValue(key, out value) && !criterion.Branches.Comparer.Equals(value, string.Empty)) { if (criterion.Branches.TryGetValue(value, out branch)) { - Walk(results, context, branch, isFallbackPath); + Walk(results, values, ambientValues, branch, isFallbackPath); } } if (criterion.Branches.TryGetValue(string.Empty, out branch)) { - Walk(results, context, branch, isFallbackPath: true); + Walk(results, values, ambientValues, branch, isFallbackPath: true); } } } @@ -154,9 +162,56 @@ namespace Microsoft.AspNetCore.Routing.Internal return x.IsFallbackMatch.CompareTo(y.IsFallbackMatch); } - return StringComparer.Ordinal.Compare( - x.Match.Entry.RouteTemplate.TemplateText, - y.Match.Entry.RouteTemplate.TemplateText); + return string.Compare( + x.Match.Entry.RouteTemplate.TemplateText, + y.Match.Entry.RouteTemplate.TemplateText, + StringComparison.Ordinal); + } + } + + // Example output: + // + // => action: Buy => controller: Store => version: V1(Matches: Store/Buy/V1) + // => action: Buy => controller: Store => version: V2(Matches: Store/Buy/V2) + // => action: Buy => controller: Store => area: Admin(Matches: Admin/Store/Buy) + // => action: Buy => controller: Products(Matches: Products/Buy) + // => action: Cart => controller: Store(Matches: Store/Cart) + internal string DebuggerDisplayString + { + get + { + var sb = new StringBuilder(); + var branchStack = new Stack(); + branchStack.Push(string.Empty); + FlattenTree(branchStack, sb, _root); + return sb.ToString(); + } + } + + private void FlattenTree(Stack branchStack, StringBuilder sb, DecisionTreeNode node) + { + // leaf node + if (node.Criteria.Count == 0) + { + var matchesSb = new StringBuilder(); + foreach (var branch in branchStack) + { + matchesSb.Insert(0, branch); + } + sb.Append(matchesSb.ToString()); + sb.Append(" (Matches: "); + sb.Append(string.Join(", ", node.Matches.Select(m => m.Entry.RouteTemplate.TemplateText))); + sb.AppendLine(")"); + } + + foreach (var criterion in node.Criteria) + { + foreach (var branch in criterion.Branches) + { + branchStack.Push($" => {criterion.Key}: {branch.Key}"); + FlattenTree(branchStack, sb, branch.Value); + branchStack.Pop(); + } } } } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/NullRouter.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/NullRouter.cs new file mode 100644 index 0000000000..9fd1908942 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/NullRouter.cs @@ -0,0 +1,26 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading.Tasks; + +namespace Microsoft.AspNetCore.Routing +{ + internal class NullRouter : IRouter + { + public static readonly NullRouter Instance = new NullRouter(); + + private NullRouter() + { + } + + public VirtualPathData GetVirtualPath(VirtualPathContext context) + { + return null; + } + + public Task RouteAsync(RouteContext context) + { + return Task.CompletedTask; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/ParameterPolicyActivator.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/ParameterPolicyActivator.cs new file mode 100644 index 0000000000..c04de5ba60 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/ParameterPolicyActivator.cs @@ -0,0 +1,187 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Reflection; +using System.Text; +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.AspNetCore.Routing.Internal +{ + internal static class ParameterPolicyActivator + { + public static T ResolveParameterPolicy( + IDictionary inlineParameterPolicyMap, + IServiceProvider serviceProvider, + string inlineParameterPolicy, + out string parameterPolicyKey) + where T : IParameterPolicy + { + // IServiceProvider could be null + // DefaultInlineConstraintResolver can be created without an IServiceProvider and then call this method + + if (inlineParameterPolicyMap == null) + { + throw new ArgumentNullException(nameof(inlineParameterPolicyMap)); + } + + if (inlineParameterPolicy == null) + { + throw new ArgumentNullException(nameof(inlineParameterPolicy)); + } + + string argumentString; + var indexOfFirstOpenParens = inlineParameterPolicy.IndexOf('('); + if (indexOfFirstOpenParens >= 0 && inlineParameterPolicy.EndsWith(")", StringComparison.Ordinal)) + { + parameterPolicyKey = inlineParameterPolicy.Substring(0, indexOfFirstOpenParens); + argumentString = inlineParameterPolicy.Substring( + indexOfFirstOpenParens + 1, + inlineParameterPolicy.Length - indexOfFirstOpenParens - 2); + } + else + { + parameterPolicyKey = inlineParameterPolicy; + argumentString = null; + } + + if (!inlineParameterPolicyMap.TryGetValue(parameterPolicyKey, out var parameterPolicyType)) + { + return default; + } + + if (!typeof(T).IsAssignableFrom(parameterPolicyType)) + { + if (!typeof(IParameterPolicy).IsAssignableFrom(parameterPolicyType)) + { + // Error if type is not a parameter policy + throw new RouteCreationException( + Resources.FormatDefaultInlineConstraintResolver_TypeNotConstraint( + parameterPolicyType, parameterPolicyKey, typeof(T).Name)); + } + + // Return null if type is parameter policy but is not the exact type + // This is used by IInlineConstraintResolver for backwards compatibility + // e.g. looking for an IRouteConstraint but get a different IParameterPolicy type + return default; + } + + try + { + return (T)CreateParameterPolicy(serviceProvider, parameterPolicyType, argumentString); + } + catch (RouteCreationException) + { + throw; + } + catch (Exception exception) + { + throw new RouteCreationException( + $"An error occurred while trying to create an instance of '{parameterPolicyType.FullName}'.", + exception); + } + } + + private static IParameterPolicy CreateParameterPolicy(IServiceProvider serviceProvider, Type parameterPolicyType, string argumentString) + { + ConstructorInfo activationConstructor = null; + object[] parameters = null; + var constructors = parameterPolicyType.GetConstructors(); + + // If there is only one constructor and it has a single parameter, pass the argument string directly + // This is necessary for the Regex RouteConstraint to ensure that patterns are not split on commas. + if (constructors.Length == 1 && GetNonConvertableParameterTypeCount(serviceProvider, constructors[0].GetParameters()) == 1) + { + activationConstructor = constructors[0]; + parameters = ConvertArguments(serviceProvider, activationConstructor.GetParameters(), new string[] { argumentString }); + } + else + { + var arguments = !string.IsNullOrEmpty(argumentString) + ? argumentString.Split(',').Select(argument => argument.Trim()).ToArray() + : Array.Empty(); + + // We want to find the constructors that match the number of passed in arguments + // We either want a single match, or a single best match. The best match is the one with the most + // arguments that can be resolved from DI + // + // For example, ctor(string, IService) will beat ctor(string) + var matchingConstructors = constructors + .Where(ci => GetNonConvertableParameterTypeCount(serviceProvider, ci.GetParameters()) == arguments.Length) + .OrderByDescending(ci => ci.GetParameters().Length) + .ToArray(); + + if (matchingConstructors.Length == 0) + { + throw new RouteCreationException( + Resources.FormatDefaultInlineConstraintResolver_CouldNotFindCtor( + parameterPolicyType.Name, arguments.Length)); + } + else + { + // When there are multiple matching constructors, choose the one with the most service arguments + if (matchingConstructors.Length == 1 + || matchingConstructors[0].GetParameters().Length > matchingConstructors[1].GetParameters().Length) + { + activationConstructor = matchingConstructors[0]; + } + else + { + throw new RouteCreationException( + Resources.FormatDefaultInlineConstraintResolver_AmbiguousCtors( + parameterPolicyType.Name, matchingConstructors[0].GetParameters().Length)); + } + + parameters = ConvertArguments(serviceProvider, activationConstructor.GetParameters(), arguments); + } + } + + return (IParameterPolicy)activationConstructor.Invoke(parameters); + } + + private static int GetNonConvertableParameterTypeCount(IServiceProvider serviceProvider, ParameterInfo[] parameters) + { + if (serviceProvider == null) + { + return parameters.Length; + } + + var count = 0; + for (var i = 0; i < parameters.Length; i++) + { + if (typeof(IConvertible).IsAssignableFrom(parameters[i].ParameterType)) + { + count++; + } + } + + return count; + } + + private static object[] ConvertArguments(IServiceProvider serviceProvider, ParameterInfo[] parameterInfos, string[] arguments) + { + var parameters = new object[parameterInfos.Length]; + var argumentPosition = 0; + for (var i = 0; i < parameterInfos.Length; i++) + { + var parameter = parameterInfos[i]; + var parameterType = parameter.ParameterType; + + if (serviceProvider != null && !typeof(IConvertible).IsAssignableFrom(parameterType)) + { + parameters[i] = serviceProvider.GetRequiredService(parameterType); + } + else + { + parameters[i] = Convert.ChangeType(arguments[argumentPosition], parameterType, CultureInfo.InvariantCulture); + argumentPosition++; + } + } + + return parameters; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/RoutingMarkerService.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/RoutingMarkerService.cs index b180294316..c7bed9df18 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/RoutingMarkerService.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/RoutingMarkerService.cs @@ -9,7 +9,7 @@ namespace Microsoft.AspNetCore.Routing.Internal /// A marker class used to determine if all the routing services were added /// to the before routing is configured. /// - public class RoutingMarkerService + internal class RoutingMarkerService { } } \ No newline at end of file diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/UriBuildingContext.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/UriBuildingContext.cs index 3b78fe8c78..82e0b4137b 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/UriBuildingContext.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Internal/UriBuildingContext.cs @@ -6,16 +6,18 @@ using System.Diagnostics; using System.IO; using System.Text; using System.Text.Encodings.Web; +using Microsoft.AspNetCore.Http; namespace Microsoft.AspNetCore.Routing.Internal { [DebuggerDisplay("{DebuggerToString(),nq}")] public class UriBuildingContext { - // Holds the 'accepted' parts of the uri. - private readonly StringBuilder _uri; + // Holds the 'accepted' parts of the path. + private readonly StringBuilder _path; + private StringBuilder _query; - // Holds the 'optional' parts of the uri. We need a secondary buffer to handle cases where an optional + // Holds the 'optional' parts of the path. We need a secondary buffer to handle cases where an optional // segment is in the middle of the uri. We don't know if we need to write it out - if it's // followed by other optional segments than we will just throw it away. private readonly List _buffer; @@ -27,22 +29,37 @@ namespace Microsoft.AspNetCore.Routing.Internal public UriBuildingContext(UrlEncoder urlEncoder) { _urlEncoder = urlEncoder; - _uri = new StringBuilder(); + _path = new StringBuilder(); + _query = new StringBuilder(); _buffer = new List(); - Writer = new StringWriter(_uri); + PathWriter = new StringWriter(_path); + QueryWriter = new StringWriter(_query); _lastValueOffset = -1; BufferState = SegmentState.Beginning; UriState = SegmentState.Beginning; } + + public bool LowercaseUrls { get; set; } + + public bool LowercaseQueryStrings { get; set; } + + public bool AppendTrailingSlash { get; set; } public SegmentState BufferState { get; private set; } public SegmentState UriState { get; private set; } - public TextWriter Writer { get; } + public TextWriter PathWriter { get; } + + public TextWriter QueryWriter { get; } public bool Accept(string value) + { + return Accept(value, encodeSlashes: true); + } + + public bool Accept(string value, bool encodeSlashes) { if (string.IsNullOrEmpty(value)) { @@ -63,41 +80,55 @@ namespace Microsoft.AspNetCore.Routing.Internal return false; } - for (var i = 0; i < _buffer.Count; i++) + // NOTE: this needs to be above all 'EncodeValue' and _path.Append calls + if (LowercaseUrls) { - if (_buffer[i].RequiresEncoding) + value = value.ToLowerInvariant(); + } + + var buffer = _buffer; + for (var i = 0; i < buffer.Count; i++) + { + var bufferValue = buffer[i].Value; + if (LowercaseUrls) { - _urlEncoder.Encode(Writer, _buffer[i].Value); + bufferValue = bufferValue.ToLowerInvariant(); + } + + if (buffer[i].RequiresEncoding) + { + EncodeValue(bufferValue); } else { - _uri.Append(_buffer[i].Value); + _path.Append(bufferValue); } } - _buffer.Clear(); + buffer.Clear(); if (UriState == SegmentState.Beginning && BufferState == SegmentState.Beginning) { - if (_uri.Length != 0) + if (_path.Length != 0) { - _uri.Append("/"); + _path.Append("/"); } } BufferState = SegmentState.Inside; UriState = SegmentState.Inside; - _lastValueOffset = _uri.Length; + _lastValueOffset = _path.Length; + // Allow the first segment to have a leading slash. // This prevents the leading slash from PathString segments from being encoded. - if (_uri.Length == 0 && value.Length > 0 && value[0] == '/') + if (_path.Length == 0 && value.Length > 0 && value[0] == '/') { - _uri.Append("/"); - _urlEncoder.Encode(Writer, value, 1, value.Length - 1); + _path.Append("/"); + EncodeValue(value, 1, value.Length - 1, encodeSlashes); } else { - _urlEncoder.Encode(Writer, value); + EncodeValue(value, encodeSlashes); } return true; @@ -106,7 +137,7 @@ namespace Microsoft.AspNetCore.Routing.Internal public void Remove(string literal) { Debug.Assert(_lastValueOffset != -1, "Cannot invoke Remove more than once."); - _uri.Length = _lastValueOffset; + _path.Length = _lastValueOffset; _lastValueOffset = -1; } @@ -146,7 +177,7 @@ namespace Microsoft.AspNetCore.Routing.Internal if (UriState == SegmentState.Beginning && BufferState == SegmentState.Beginning) { - if (_uri.Length != 0 || _buffer.Count != 0) + if (_path.Length != 0 || _buffer.Count != 0) { _buffer.Add(new BufferValue("/", requiresEncoding: false)); } @@ -166,11 +197,17 @@ namespace Microsoft.AspNetCore.Routing.Internal public void Clear() { - _uri.Clear(); - if (_uri.Capacity > 128) + _path.Clear(); + if (_path.Capacity > 128) { // We don't want to retain too much memory if this is getting pooled. - _uri.Capacity = 128; + _path.Capacity = 128; + } + + _query.Clear(); + if (_query.Capacity > 128) + { + _query.Capacity = 128; } _buffer.Clear(); @@ -183,23 +220,106 @@ namespace Microsoft.AspNetCore.Routing.Internal _lastValueOffset = -1; BufferState = SegmentState.Beginning; UriState = SegmentState.Beginning; + + AppendTrailingSlash = false; + LowercaseQueryStrings = false; + LowercaseUrls = false; } + // Used by TemplateBinder.BindValues - the legacy code path of IRouter public override string ToString() { // We can ignore any currently buffered segments - they are are guaranteed to be 'defaults'. - if (_uri.Length > 0 && _uri[0] != '/') + if (_path.Length > 0 && _path[0] != '/') { // Normalize generated paths so that they always contain a leading slash. - _uri.Insert(0, '/'); + _path.Insert(0, '/'); } - return _uri.ToString(); + return _path.ToString() + _query.ToString(); + } + + // Used by TemplateBinder.TryBindValues - the new code path of LinkGenerator + public PathString ToPathString() + { + PathString pathString; + + if (_path.Length > 0) + { + if (_path[0] != '/') + { + // Normalize generated paths so that they always contain a leading slash. + _path.Insert(0, '/'); + } + + if (AppendTrailingSlash && _path[_path.Length - 1] != '/') + { + _path.Append('/'); + } + + pathString = new PathString(_path.ToString()); + } + else + { + pathString = PathString.Empty; + } + + return pathString; + } + + // Used by TemplateBinder.TryBindValues - the new code path of LinkGenerator + public QueryString ToQueryString() + { + if (_query.Length > 0 && _query[0] != '?') + { + // Normalize generated query so that they always contain a leading ?. + _query.Insert(0, '?'); + } + + return new QueryString(_query.ToString()); + } + + private void EncodeValue(string value) + { + EncodeValue(value, encodeSlashes: true); + } + + private void EncodeValue(string value, bool encodeSlashes) + { + EncodeValue(value, start: 0, characterCount: value.Length, encodeSlashes); + } + + // For testing + internal void EncodeValue(string value, int start, int characterCount, bool encodeSlashes) + { + // Just encode everything if its ok to encode slashes + if (encodeSlashes) + { + _urlEncoder.Encode(PathWriter, value, start, characterCount); + } + else + { + int end; + int length = start + characterCount; + while ((end = value.IndexOf('/', start, characterCount)) >= 0) + { + _urlEncoder.Encode(PathWriter, value, start, end - start); + _path.Append("/"); + + start = end + 1; + characterCount = length - start; + } + + if (end < 0 && characterCount >= 0) + { + _urlEncoder.Encode(PathWriter, value, start, length - start); + } + } } private string DebuggerToString() { - return string.Format("{{Accepted: '{0}' Buffered: '{1}'}}", _uri, string.Join("", _buffer)); + return string.Format("{{Accepted: '{0}' Buffered: '{1}'}}", _path, string.Join("", _buffer)); } } } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/LinkGeneratorEndpointNameAddressExtensions.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/LinkGeneratorEndpointNameAddressExtensions.cs new file mode 100644 index 0000000000..dd0e462c20 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/LinkGeneratorEndpointNameAddressExtensions.cs @@ -0,0 +1,226 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Http; +using System; + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Extension methods for using with and endpoint name. + /// + public static class LinkGeneratorEndpointNameAddressExtensions + { + /// + /// Generates a URI with an absolute path based on the provided values. + /// + /// The . + /// The associated with the current request. + /// The endpoint name. Used to resolve endpoints. + /// The route values. Used to expand parameters in the route template. Optional. + /// + /// An optional URI path base. Prepended to the path in the resulting URI. If not provided, the value of will be used. + /// + /// An optional URI fragment. Appended to the resulting URI. + /// + /// An optional . Settings on provided object override the settings with matching + /// names from RouteOptions. + /// + /// A URI with an absolute path, or null. + public static string GetPathByName( + this LinkGenerator generator, + HttpContext httpContext, + string endpointName, + object values, + PathString? pathBase = default, + FragmentString fragment = default, + LinkOptions options = default) + { + if (generator == null) + { + throw new ArgumentNullException(nameof(generator)); + } + + if (httpContext == null) + { + throw new ArgumentNullException(nameof(httpContext)); + } + + if (endpointName == null) + { + throw new ArgumentNullException(nameof(endpointName)); + } + + return generator.GetPathByAddress( + httpContext, + endpointName, + new RouteValueDictionary(values), + ambientValues: null, + pathBase, + fragment, + options); + } + + /// + /// Generates a URI with an absolute path based on the provided values. + /// + /// The . + /// The endpoint name. Used to resolve endpoints. + /// The route values. Used to expand parameters in the route template. Optional. + /// An optional URI path base. Prepended to the path in the resulting URI. + /// An optional URI fragment. Appended to the resulting URI. + /// + /// An optional . Settings on provided object override the settings with matching + /// names from RouteOptions. + /// + /// A URI with an absolute path, or null. + public static string GetPathByName( + this LinkGenerator generator, + string endpointName, + object values, + PathString pathBase = default, + FragmentString fragment = default, + LinkOptions options = default) + { + if (generator == null) + { + throw new ArgumentNullException(nameof(generator)); + } + + if (endpointName == null) + { + throw new ArgumentNullException(nameof(endpointName)); + } + + return generator.GetPathByAddress(endpointName, new RouteValueDictionary(values), pathBase, fragment, options); + } + + /// + /// Generates an absolute URI based on the provided values. + /// + /// The . + /// The associated with the current request. + /// The endpoint name. Used to resolve endpoints. + /// The route values. Used to expand parameters in the route template. Optional. + /// + /// The URI scheme, applied to the resulting URI. Optional. If not provided, the value of will be used. + /// + /// + /// The URI host/authority, applied to the resulting URI. Optional. If not provided, the value will be used. + /// See the remarks section for details about the security implications of the . + /// + /// + /// An optional URI path base. Prepended to the path in the resulting URI. If not provided, the value of will be used. + /// + /// An optional URI fragment. Appended to the resulting URI. + /// + /// An optional . Settings on provided object override the settings with matching + /// names from RouteOptions. + /// + /// A URI with an absolute path, or null. + /// + /// + /// The value of should be a trusted value. Relying on the value of the current request + /// can allow untrusted input to influence the resulting URI unless the Host header has been validated. + /// See the deployment documentation for instructions on how to properly validate the Host header in + /// your deployment environment. + /// + /// + public static string GetUriByName( + this LinkGenerator generator, + HttpContext httpContext, + string endpointName, + object values, + string scheme = default, + HostString? host = default, + PathString? pathBase = default, + FragmentString fragment = default, + LinkOptions options = default) + { + if (generator == null) + { + throw new ArgumentNullException(nameof(generator)); + } + + if (httpContext == null) + { + throw new ArgumentNullException(nameof(httpContext)); + } + + if (endpointName == null) + { + throw new ArgumentNullException(nameof(endpointName)); + } + + return generator.GetUriByAddress( + httpContext, + endpointName, + new RouteValueDictionary(values), + ambientValues: null, + scheme, + host, + pathBase, + fragment, + options); + } + + /// + /// Generates an absolute URI based on the provided values. + /// + /// The . + /// The endpoint name. Used to resolve endpoints. + /// The route values. Used to expand parameters in the route template. Optional. + /// The URI scheme, applied to the resulting URI. + /// + /// The URI host/authority, applied to the resulting URI. + /// See the remarks section for details about the security implications of the . + /// + /// An optional URI path base. Prepended to the path in the resulting URI. + /// An optional URI fragment. Appended to the resulting URI. + /// + /// An optional . Settings on provided object override the settings with matching + /// names from RouteOptions. + /// + /// An absolute URI, or null. + /// + /// + /// The value of should be a trusted value. Relying on the value of the current request + /// can allow untrusted input to influence the resulting URI unless the Host header has been validated. + /// See the deployment documentation for instructions on how to properly validate the Host header in + /// your deployment environment. + /// + /// + public static string GetUriByName( + this LinkGenerator generator, + string endpointName, + object values, + string scheme, + HostString host, + PathString pathBase = default, + FragmentString fragment = default, + LinkOptions options = default) + { + if (generator == null) + { + throw new ArgumentNullException(nameof(generator)); + } + + if (endpointName == null) + { + throw new ArgumentNullException(nameof(endpointName)); + } + + if (string.IsNullOrEmpty(scheme)) + { + throw new ArgumentException("A scheme must be provided.", nameof(scheme)); + } + + if (!host.HasValue) + { + throw new ArgumentException("A host must be provided.", nameof(host)); + } + + return generator.GetUriByAddress(endpointName, new RouteValueDictionary(values), scheme, host, pathBase, fragment, options); + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/LinkGeneratorRouteValuesAddressExtensions.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/LinkGeneratorRouteValuesAddressExtensions.cs new file mode 100644 index 0000000000..f683b4d3ca --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/LinkGeneratorRouteValuesAddressExtensions.cs @@ -0,0 +1,210 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Http; +using System; + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Extension methods for using with . + /// + public static class LinkGeneratorRouteValuesAddressExtensions + { + /// + /// Generates a URI with an absolute path based on the provided values. + /// + /// The . + /// The associated with the current request. + /// The route name. Used to resolve endpoints. Optional. + /// The route values. Used to resolve endpoints and expand parameters in the route template. Optional. + /// + /// An optional URI path base. Prepended to the path in the resulting URI. If not provided, the value of will be used. + /// + /// An optional URI fragment. Appended to the resulting URI. + /// + /// An optional . Settings on provided object override the settings with matching + /// names from RouteOptions. + /// + /// A URI with an absolute path, or null. + public static string GetPathByRouteValues( + this LinkGenerator generator, + HttpContext httpContext, + string routeName, + object values, + PathString? pathBase = default, + FragmentString fragment = default, + LinkOptions options = default) + { + if (generator == null) + { + throw new ArgumentNullException(nameof(generator)); + } + + if (httpContext == null) + { + throw new ArgumentNullException(nameof(httpContext)); + } + + var address = CreateAddress(httpContext, routeName, values); + return generator.GetPathByAddress( + httpContext, + address, + address.ExplicitValues, + address.AmbientValues, + pathBase, + fragment, + options); + } + + /// + /// Generates a URI with an absolute path based on the provided values. + /// + /// The . + /// The route name. Used to resolve endpoints. Optional. + /// The route values. Used to resolve endpoints and expand parameters in the route template. Optional. + /// An optional URI path base. Prepended to the path in the resulting URI. + /// An optional URI fragment. Appended to the resulting URI. + /// + /// An optional . Settings on provided object override the settings with matching + /// names from RouteOptions. + /// + /// A URI with an absolute path, or null. + public static string GetPathByRouteValues( + this LinkGenerator generator, + string routeName, + object values, + PathString pathBase = default, + FragmentString fragment = default, + LinkOptions options = default) + { + if (generator == null) + { + throw new ArgumentNullException(nameof(generator)); + } + + var address = CreateAddress(httpContext: null, routeName, values); + return generator.GetPathByAddress(address, address.ExplicitValues, pathBase, fragment, options); + } + + /// + /// Generates an absolute URI based on the provided values. + /// + /// The . + /// The associated with the current request. + /// The route name. Used to resolve endpoints. Optional. + /// The route values. Used to resolve endpoints and expand parameters in the route template. Optional. + /// + /// The URI scheme, applied to the resulting URI. Optional. If not provided, the value of will be used. + /// + /// + /// The URI host/authority, applied to the resulting URI. Optional. If not provided, the value will be used. + /// See the remarks section for details about the security implications of the . + /// + /// + /// An optional URI path base. Prepended to the path in the resulting URI. If not provided, the value of will be used. + /// + /// An optional URI fragment. Appended to the resulting URI. + /// + /// An optional . Settings on provided object override the settings with matching + /// names from RouteOptions. + /// + /// A URI with an absolute path, or null. + /// + /// + /// The value of should be a trusted value. Relying on the value of the current request + /// can allow untrusted input to influence the resulting URI unless the Host header has been validated. + /// See the deployment documentation for instructions on how to properly validate the Host header in + /// your deployment environment. + /// + /// + public static string GetUriByRouteValues( + this LinkGenerator generator, + HttpContext httpContext, + string routeName, + object values, + string scheme = default, + HostString? host = default, + PathString? pathBase = default, + FragmentString fragment = default, + LinkOptions options = default) + { + if (generator == null) + { + throw new ArgumentNullException(nameof(generator)); + } + + if (httpContext == null) + { + throw new ArgumentNullException(nameof(httpContext)); + } + + var address = CreateAddress(httpContext, routeName, values); + return generator.GetUriByAddress( + httpContext, + address, + address.ExplicitValues, + address.AmbientValues, + scheme, + host, + pathBase, + fragment, + options); + } + + /// + /// Generates an absolute URI based on the provided values. + /// + /// The . + /// The route name. Used to resolve endpoints. Optional. + /// The route values. Used to resolve endpoints and expand parameters in the route template. Optional. + /// The URI scheme, applied to the resulting URI. + /// + /// The URI host/authority, applied to the resulting URI. + /// See the remarks section for details about the security implications of the . + /// + /// An optional URI path base. Prepended to the path in the resulting URI. + /// An optional URI fragment. Appended to the resulting URI. + /// + /// An optional . Settings on provided object override the settings with matching + /// names from RouteOptions. + /// + /// An absolute URI, or null. + /// + /// + /// The value of should be a trusted value. Relying on the value of the current request + /// can allow untrusted input to influence the resulting URI unless the Host header has been validated. + /// See the deployment documentation for instructions on how to properly validate the Host header in + /// your deployment environment. + /// + /// + public static string GetUriByRouteValues( + this LinkGenerator generator, + string routeName, + object values, + string scheme, + HostString host, + PathString pathBase = default, + FragmentString fragment = default, + LinkOptions options = default) + { + if (generator == null) + { + throw new ArgumentNullException(nameof(generator)); + } + + var address = CreateAddress(httpContext: null, routeName, values); + return generator.GetUriByAddress(address, address.ExplicitValues, scheme, host, pathBase, fragment, options); + } + + private static RouteValuesAddress CreateAddress(HttpContext httpContext, string routeName, object values) + { + return new RouteValuesAddress() + { + AmbientValues = DefaultLinkGenerator.GetAmbientValues(httpContext), + ExplicitValues = new RouteValueDictionary(values), + RouteName = routeName, + }; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Logging/RouteConstraintMatcherExtensions.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Logging/RouteConstraintMatcherExtensions.cs index 9a19250f30..3036d2b9b9 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Logging/RouteConstraintMatcherExtensions.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Logging/RouteConstraintMatcherExtensions.cs @@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Routing.Logging LogLevel.Debug, 1, "Route value '{RouteValue}' with key '{RouteKey}' did not match " + - "the constraint '{RouteConstraint}'."); + "the constraint '{RouteConstraint}'"); } public static void RouteValueDoesNotMatchConstraint( diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Logging/RouterMiddlewareLoggerExtensions.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Logging/RouterMiddlewareLoggerExtensions.cs index 35f05272cd..77fba27317 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Logging/RouterMiddlewareLoggerExtensions.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Logging/RouterMiddlewareLoggerExtensions.cs @@ -15,7 +15,7 @@ namespace Microsoft.AspNetCore.Routing.Logging _requestDidNotMatchRoutes = LoggerMessage.Define( LogLevel.Debug, 1, - "Request did not match any routes."); + "Request did not match any routes"); } public static void RequestDidNotMatchRoutes(this ILogger logger) diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Logging/TreeRouterLoggerExtensions.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Logging/TreeRouterLoggerExtensions.cs index 3f6af8e5dc..825e9ef888 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Logging/TreeRouterLoggerExtensions.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Logging/TreeRouterLoggerExtensions.cs @@ -15,7 +15,7 @@ namespace Microsoft.AspNetCore.Routing.Logging _matchedRoute = LoggerMessage.Define( LogLevel.Debug, 1, - "Request successfully matched the route with name '{RouteName}' and template '{RouteTemplate}'."); + "Request successfully matched the route with name '{RouteName}' and template '{RouteTemplate}'"); } public static void MatchedRoute( diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/MapRouteRouteBuilderExtensions.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/MapRouteRouteBuilderExtensions.cs index ef55007af3..e5cc19aa1d 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/MapRouteRouteBuilderExtensions.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/MapRouteRouteBuilderExtensions.cs @@ -3,6 +3,7 @@ using System; using Microsoft.AspNetCore.Routing; +using Microsoft.AspNetCore.Routing.Constraints; using Microsoft.Extensions.DependencyInjection; namespace Microsoft.AspNetCore.Builder @@ -107,10 +108,6 @@ namespace Microsoft.AspNetCore.Builder throw new RouteCreationException(Resources.FormatDefaultHandler_MustBeSet(nameof(IRouteBuilder))); } - var inlineConstraintResolver = routeBuilder - .ServiceProvider - .GetRequiredService(); - routeBuilder.Routes.Add(new Route( routeBuilder.DefaultHandler, name, @@ -118,9 +115,52 @@ namespace Microsoft.AspNetCore.Builder new RouteValueDictionary(defaults), new RouteValueDictionary(constraints), new RouteValueDictionary(dataTokens), - inlineConstraintResolver)); + CreateInlineConstraintResolver(routeBuilder.ServiceProvider))); return routeBuilder; } + + private static IInlineConstraintResolver CreateInlineConstraintResolver(IServiceProvider serviceProvider) + { + var inlineConstraintResolver = serviceProvider + .GetRequiredService(); + + var parameterPolicyFactory = serviceProvider + .GetRequiredService(); + + // This inline constraint resolver will return a null constraint for non-IRouteConstraint + // parameter policies so Route does not error + return new BackCompatInlineConstraintResolver(inlineConstraintResolver, parameterPolicyFactory); + } + + private class BackCompatInlineConstraintResolver : IInlineConstraintResolver + { + private readonly IInlineConstraintResolver _inner; + private readonly ParameterPolicyFactory _parameterPolicyFactory; + + public BackCompatInlineConstraintResolver(IInlineConstraintResolver inner, ParameterPolicyFactory parameterPolicyFactory) + { + _inner = inner; + _parameterPolicyFactory = parameterPolicyFactory; + } + + public IRouteConstraint ResolveConstraint(string inlineConstraint) + { + var routeConstraint = _inner.ResolveConstraint(inlineConstraint); + if (routeConstraint != null) + { + return routeConstraint; + } + + var parameterPolicy = _parameterPolicyFactory.Create(null, inlineConstraint); + if (parameterPolicy != null) + { + // Logic inside Route will skip adding NullRouteConstraint + return NullRouteConstraint.Instance; + } + + return null; + } + } } } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/AmbiguousMatchException.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/AmbiguousMatchException.cs new file mode 100644 index 0000000000..1afed0e103 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/AmbiguousMatchException.cs @@ -0,0 +1,25 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Runtime.Serialization; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + /// + /// An exception which indicates multiple matches in endpoint selection. + /// + [Serializable] + internal class AmbiguousMatchException : Exception + { + public AmbiguousMatchException(string message) + : base(message) + { + } + + protected AmbiguousMatchException(SerializationInfo info, StreamingContext context) + : base(info, context) + { + } + } +} \ No newline at end of file diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/Ascii.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/Ascii.cs new file mode 100644 index 0000000000..6ff7db28ff --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/Ascii.cs @@ -0,0 +1,75 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal static class Ascii + { + // case-sensitive equality comparison when we KNOW that 'a' is in the ASCII range + // and we know that the spans are the same length. + // + // Similar to https://github.com/dotnet/coreclr/blob/master/src/System.Private.CoreLib/shared/System/Globalization/CompareInfo.cs#L549 + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool AsciiIgnoreCaseEquals(ReadOnlySpan a, ReadOnlySpan b, int length) + { + // The caller should have checked the length. We enforce that here by THROWING if the + // lengths are unequal. + if (a.Length < length || b.Length < length) + { + // This should never happen, but we don't want to have undefined + // behavior if it does. + ThrowArgumentExceptionForLength(); + } + + ref var charA = ref MemoryMarshal.GetReference(a); + ref var charB = ref MemoryMarshal.GetReference(b); + + // Iterates each span for the provided length and compares each character + // case-insensitively. This looks funky because we're using unsafe operations + // to elide bounds-checks. + while (length > 0 && AsciiIgnoreCaseEquals(charA, charB)) + { + charA = ref Unsafe.Add(ref charA, 1); + charB = ref Unsafe.Add(ref charB, 1); + length--; + } + + return length == 0; + } + + // case-insensitive equality comparison for characters in the ASCII range + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool AsciiIgnoreCaseEquals(char charA, char charB) + { + const uint AsciiToLower = 0x20; + return + // Equal when chars are exactly equal + charA == charB || + + // Equal when converted to-lower AND they are letters + ((charA | AsciiToLower) == (charB | AsciiToLower) && (uint)((charA | AsciiToLower) - 'a') <= (uint)('z' - 'a')); + } + + public static bool IsAscii(string text) + { + for (var i = 0; i < text.Length; i++) + { + if (text[i] > (char)0x7F) + { + return false; + } + } + + return true; + } + + private static void ThrowArgumentExceptionForLength() + { + throw new ArgumentException("length"); + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/Candidate.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/Candidate.cs new file mode 100644 index 0000000000..4493293251 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/Candidate.cs @@ -0,0 +1,125 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Patterns; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal readonly struct Candidate + { + public readonly Endpoint Endpoint; + + // Used to optimize out operations that modify route values. + public readonly CandidateFlags Flags; + + // Data for creating the RouteValueDictionary. We assign each key its own slot + // and we fill the values array with all of the default values. + // + // Then when we process parameters, we don't need to operate on the RouteValueDictionary + // we can just operate on an array, which is much much faster. + public readonly KeyValuePair[] Slots; + + // List of parameters to capture. Segment is the segment index, index is the + // index into the values array. + public readonly (string parameterName, int segmentIndex, int slotIndex)[] Captures; + + // Catchall parameter to capture (limit one per template). + public readonly (string parameterName, int segmentIndex, int slotIndex) CatchAll; + + // Complex segments are processed in a separate pass because they require a + // RouteValueDictionary. + public readonly (RoutePatternPathSegment pathSegment, int segmentIndex)[] ComplexSegments; + + public readonly KeyValuePair[] Constraints; + + // Score is a sequential integer value that in determines the priority of an Endpoint. + // Scores are computed within the context of candidate set, and are meaningless when + // applied to endpoints not in the set. + // + // The score concept boils down the system of comparisons done when ordering Endpoints + // to a single value that can be compared easily. This can be defeated by having + // int32.MaxValue + 1 endpoints in a single set, but you would have other problems by + // that point. + // + // Score is not part of the Endpoint itself, because it's contextual based on where + // the endpoint appears. An Endpoint is often be a member of multiple candiate sets. + public readonly int Score; + + // Used in tests. + public Candidate(Endpoint endpoint) + { + Endpoint = endpoint; + + Slots = Array.Empty>(); + Captures = Array.Empty<(string parameterName, int segmentIndex, int slotIndex)>(); + CatchAll = default; + ComplexSegments = Array.Empty<(RoutePatternPathSegment pathSegment, int segmentIndex)>(); + Constraints = Array.Empty>(); + Score = 0; + + Flags = CandidateFlags.None; + } + + public Candidate( + Endpoint endpoint, + int score, + KeyValuePair[] slots, + (string parameterName, int segmentIndex, int slotIndex)[] captures, + (string parameterName, int segmentIndex, int slotIndex) catchAll, + (RoutePatternPathSegment pathSegment, int segmentIndex)[] complexSegments, + KeyValuePair[] constraints) + { + Endpoint = endpoint; + Score = score; + Slots = slots; + Captures = captures; + CatchAll = catchAll; + ComplexSegments = complexSegments; + Constraints = constraints; + + Flags = CandidateFlags.None; + for (var i = 0; i < slots.Length; i++) + { + if (slots[i].Key != null) + { + Flags |= CandidateFlags.HasDefaults; + } + } + + if (captures.Length > 0) + { + Flags |= CandidateFlags.HasCaptures; + } + + if (catchAll.parameterName != null) + { + Flags |= CandidateFlags.HasCatchAll; + } + + if (complexSegments.Length > 0) + { + Flags |= CandidateFlags.HasComplexSegments; + } + + if (constraints.Length > 0) + { + Flags |= CandidateFlags.HasConstraints; + } + } + + [Flags] + public enum CandidateFlags + { + None = 0, + HasDefaults = 1, + HasCaptures = 2, + HasCatchAll = 4, + HasSlots = HasDefaults | HasCaptures | HasCatchAll, + HasComplexSegments = 8, + HasConstraints = 16, + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/CandidateSet.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/CandidateSet.cs new file mode 100644 index 0000000000..4a004018b6 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/CandidateSet.cs @@ -0,0 +1,289 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections; +using System.Collections.Specialized; +using System.Runtime.CompilerServices; +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + /// + /// Represents a set of candidates that have been matched + /// by the routing system. Used by implementations of + /// and . + /// + public sealed class CandidateSet + { + private const int BitVectorSize = 32; + + // Cannot be readonly because we need to modify it in place. + private BitVector32 _validity; + private readonly BitArray _largeCapactityValidity; + + // We inline storage for 4 candidates here to avoid allocations in common + // cases. There's no real reason why 4 is important, it just seemed like + // a plausible number. + private CandidateState _state0; + private CandidateState _state1; + private CandidateState _state2; + private CandidateState _state3; + + private CandidateState[] _additionalCandidates; + + /// + /// + /// Initializes a new instances of the class with the provided , + /// , and . + /// + /// + /// The constructor is provided to enable unit tests of implementations of + /// and . + /// + /// + /// The list of endpoints, sorted in descending priority order. + /// The list of instances. + /// The list of endpoint scores. . + public CandidateSet(Endpoint[] endpoints, RouteValueDictionary[] values, int[] scores) + { + if (endpoints == null) + { + throw new ArgumentNullException(nameof(endpoints)); + } + + if (values == null) + { + throw new ArgumentNullException(nameof(values)); + } + + if (scores == null) + { + throw new ArgumentNullException(nameof(scores)); + } + + if (endpoints.Length != values.Length || endpoints.Length != scores.Length) + { + throw new ArgumentException($"The provided {nameof(endpoints)}, {nameof(values)}, and {nameof(scores)} must have the same length."); + } + + Count = endpoints.Length; + + switch (endpoints.Length) + { + case 0: + return; + + case 1: + _state0 = new CandidateState(endpoints[0], values[0], scores[0]); + break; + + case 2: + _state0 = new CandidateState(endpoints[0], values[0], scores[0]); + _state1 = new CandidateState(endpoints[1], values[1], scores[1]); + break; + + case 3: + _state0 = new CandidateState(endpoints[0], values[0], scores[0]); + _state1 = new CandidateState(endpoints[1], values[1], scores[1]); + _state2 = new CandidateState(endpoints[2], values[2], scores[2]); + break; + + case 4: + _state0 = new CandidateState(endpoints[0], values[0], scores[0]); + _state1 = new CandidateState(endpoints[1], values[1], scores[1]); + _state2 = new CandidateState(endpoints[2], values[2], scores[2]); + _state3 = new CandidateState(endpoints[3], values[3], scores[3]); + break; + + default: + _state0 = new CandidateState(endpoints[0], values[0], scores[0]); + _state1 = new CandidateState(endpoints[1], values[1], scores[1]); + _state2 = new CandidateState(endpoints[2], values[2], scores[2]); + _state3 = new CandidateState(endpoints[3], values[3], scores[3]); + + _additionalCandidates = new CandidateState[endpoints.Length - 4]; + for (var i = 4; i < endpoints.Length; i++) + { + _additionalCandidates[i - 4] = new CandidateState(endpoints[i], values[i], scores[i]); + } + break; + } + + // Initialize validity to valid by default. + if (Count < BitVectorSize) + { + // Sets the bit for each candidate that exists (bits > Count will be 0). + _validity = new BitVector32(unchecked((int)~(0xFFFFFFFFu << Count))); + } + else + { + _largeCapactityValidity = new BitArray(Count, defaultValue: true); + } + } + + internal CandidateSet(Candidate[] candidates) + { + Count = candidates.Length; + + switch (candidates.Length) + { + case 0: + return; + + case 1: + _state0 = new CandidateState(candidates[0].Endpoint, candidates[0].Score); + break; + + case 2: + _state0 = new CandidateState(candidates[0].Endpoint, candidates[0].Score); + _state1 = new CandidateState(candidates[1].Endpoint, candidates[1].Score); + break; + + case 3: + _state0 = new CandidateState(candidates[0].Endpoint, candidates[0].Score); + _state1 = new CandidateState(candidates[1].Endpoint, candidates[1].Score); + _state2 = new CandidateState(candidates[2].Endpoint, candidates[2].Score); + break; + + case 4: + _state0 = new CandidateState(candidates[0].Endpoint, candidates[0].Score); + _state1 = new CandidateState(candidates[1].Endpoint, candidates[1].Score); + _state2 = new CandidateState(candidates[2].Endpoint, candidates[2].Score); + _state3 = new CandidateState(candidates[3].Endpoint, candidates[3].Score); + break; + + default: + _state0 = new CandidateState(candidates[0].Endpoint, candidates[0].Score); + _state1 = new CandidateState(candidates[1].Endpoint, candidates[1].Score); + _state2 = new CandidateState(candidates[2].Endpoint, candidates[2].Score); + _state3 = new CandidateState(candidates[3].Endpoint, candidates[3].Score); + + _additionalCandidates = new CandidateState[candidates.Length - 4]; + for (var i = 4; i < candidates.Length; i++) + { + _additionalCandidates[i - 4] = new CandidateState(candidates[i].Endpoint, candidates[i].Score); + } + break; + } + + // Initialize validity to valid by default. + if (Count < BitVectorSize) + { + // Sets the bit for each candidate that exists (bits > Count will be 0). + _validity = new BitVector32(unchecked((int)~(0xFFFFFFFFu << Count))); + } + else + { + _largeCapactityValidity = new BitArray(Count, defaultValue: true); + } + } + + /// + /// Gets the count of candidates in the set. + /// + public int Count { get; } + + /// + /// Gets the associated with the candidate + /// at . + /// + /// The candidate index. + /// + /// A reference to the . The result is returned by reference. + /// + public ref CandidateState this[int index] + { + // Note that this is a ref-return because of performance. + // We don't want to copy these fat structs if it can be avoided. + + // PERF: Force inlining + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + // Friendliness for inlining + if ((uint)index >= Count) + { + ThrowIndexArgumentOutOfRangeException(); + } + + switch (index) + { + case 0: + return ref _state0; + + case 1: + return ref _state1; + + case 2: + return ref _state2; + + case 3: + return ref _state3; + + default: + return ref _additionalCandidates[index - 4]; + } + } + } + + /// + /// Gets a value which indicates where the is considered + /// a valid candiate for the current request. + /// + /// The candidate index. + /// + /// true if the candidate at position is considered value + /// for the current request, otherwise false. + /// + public bool IsValidCandidate(int index) + { + // Friendliness for inlining + if ((uint)index >= Count) + { + ThrowIndexArgumentOutOfRangeException(); + } + + if (Count < BitVectorSize) + { + // Get the n-th bit + return _validity[0x00000001 << index]; + } + else + { + return _largeCapactityValidity[index]; + } + } + + /// + /// Sets the validitity of the candidate at the provided index. + /// + /// The candidate index. + /// + /// The value to set. If true the candidate is considered valid for the current request. + /// + public void SetValidity(int index, bool value) + { + // Friendliness for inlining + if ((uint)index >= Count) + { + ThrowIndexArgumentOutOfRangeException(); + } + + if (Count < BitVectorSize) + { + // Set the n-th bit + _validity[0x00000001 << index] = value; + } + else + { + _largeCapactityValidity[index] = value; + } + } + + private static void ThrowIndexArgumentOutOfRangeException() + { + throw new ArgumentOutOfRangeException("index"); + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/CandidateState.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/CandidateState.cs new file mode 100644 index 0000000000..5b198beb8e --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/CandidateState.cs @@ -0,0 +1,55 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + /// + /// The state associated with a candidate in a . + /// + public struct CandidateState + { + internal CandidateState(Endpoint endpoint, int score) + { + Endpoint = endpoint; + Score = score; + Values = null; + } + + internal CandidateState(Endpoint endpoint, RouteValueDictionary values, int score) + { + Endpoint = endpoint; + Values = values; + Score = score; + } + + /// + /// Gets the . + /// + public Endpoint Endpoint { get; } + + /// + /// Gets the score of the within the current + /// . + /// + /// + /// + /// Candidates within a set are ordered in priority order and then assigned a + /// sequential score value based on that ordering. Candiates with the same + /// score are considered to have equal priority. + /// + /// + /// The score values are used in the to determine + /// whether a set of matching candidates is an ambiguous match. + /// + /// + public int Score { get; } + + /// + /// Gets associated with the + /// and the current request. + /// + public RouteValueDictionary Values { get; internal set; } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DataSourceDependentMatcher.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DataSourceDependentMatcher.cs new file mode 100644 index 0000000000..89c11090ba --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DataSourceDependentMatcher.cs @@ -0,0 +1,52 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal class DataSourceDependentMatcher : Matcher + { + private readonly Func _matcherBuilderFactory; + private readonly DataSourceDependentCache _cache; + + public DataSourceDependentMatcher( + EndpointDataSource dataSource, + Func matcherBuilderFactory) + { + _matcherBuilderFactory = matcherBuilderFactory; + + _cache = new DataSourceDependentCache(dataSource, CreateMatcher); + _cache.EnsureInitialized(); + } + + // Used in tests + internal Matcher CurrentMatcher => _cache.Value; + + public override Task MatchAsync(HttpContext httpContext, EndpointSelectorContext context) + { + return CurrentMatcher.MatchAsync(httpContext, context); + } + + private Matcher CreateMatcher(IReadOnlyList endpoints) + { + var builder = _matcherBuilderFactory(); + for (var i = 0; i < endpoints.Count; i++) + { + // By design we only look at RouteEndpoint here. It's possible to + // register other endpoint types, which are non-routable, and it's + // ok that we won't route to them. + if (endpoints[i] is RouteEndpoint endpoint && endpoint.Metadata.GetMetadata()?.SuppressMatching != true) + { + builder.AddEndpoint(endpoint); + } + } + + return builder.Build(); + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DefaultEndpointSelector.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DefaultEndpointSelector.cs new file mode 100644 index 0000000000..30882cc5f2 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DefaultEndpointSelector.cs @@ -0,0 +1,139 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal class DefaultEndpointSelector : EndpointSelector + { + public override Task SelectAsync( + HttpContext httpContext, + EndpointSelectorContext context, + CandidateSet candidateSet) + { + if (httpContext == null) + { + throw new ArgumentNullException(nameof(httpContext)); + } + + if (context == null) + { + throw new ArgumentNullException(nameof(context)); + } + + if (candidateSet == null) + { + throw new ArgumentNullException(nameof(candidateSet)); + } + + // Fast path: We can specialize for trivial numbers of candidates since there can + // be no ambiguities + switch (candidateSet.Count) + { + case 0: + { + // Do nothing + break; + } + + case 1: + { + if (candidateSet.IsValidCandidate(0)) + { + ref var state = ref candidateSet[0]; + context.Endpoint = state.Endpoint; + context.RouteValues = state.Values; + } + + break; + } + + default: + { + // Slow path: There's more than one candidate (to say nothing of validity) so we + // have to process for ambiguities. + ProcessFinalCandidates(httpContext, context, candidateSet); + break; + } + } + + return Task.CompletedTask; + } + + private static void ProcessFinalCandidates( + HttpContext httpContext, + EndpointSelectorContext context, + CandidateSet candidateSet) + { + Endpoint endpoint = null; + RouteValueDictionary values = null; + int? foundScore = null; + for (var i = 0; i < candidateSet.Count; i++) + { + if (!candidateSet.IsValidCandidate(i)) + { + continue; + } + + ref var state = ref candidateSet[i]; + if (foundScore == null) + { + // This is the first match we've seen - speculatively assign it. + endpoint = state.Endpoint; + values = state.Values; + foundScore = state.Score; + } + else if (foundScore < state.Score) + { + // This candidate is lower priority than the one we've seen + // so far, we can stop. + // + // Don't worry about the 'null < state.Score' case, it returns false. + break; + } + else if (foundScore == state.Score) + { + // This is the second match we've found of the same score, so there + // must be an ambiguity. + // + // Don't worry about the 'null == state.Score' case, it returns false. + + ReportAmbiguity(candidateSet); + + // Unreachable, ReportAmbiguity always throws. + throw new NotSupportedException(); + } + } + + if (endpoint != null) + { + context.Endpoint = endpoint; + context.RouteValues = values; + } + } + + private static void ReportAmbiguity(CandidateSet candidates) + { + // If we get here it's the result of an ambiguity - we're OK with this + // being a littler slower and more allocatey. + var matches = new List(); + for (var i = 0; i < candidates.Count; i++) + { + if (candidates.IsValidCandidate(i)) + { + matches.Add(candidates[i].Endpoint); + } + } + + var message = Resources.FormatAmbiguousEndpoints( + Environment.NewLine, + string.Join(Environment.NewLine, matches.Select(e => e.DisplayName))); + throw new AmbiguousMatchException(message); + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DfaMatcher.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DfaMatcher.cs new file mode 100644 index 0000000000..b1dfcb36dc --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DfaMatcher.cs @@ -0,0 +1,400 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.Extensions.Logging; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal sealed class DfaMatcher : Matcher + { + private readonly ILogger _logger; + private readonly EndpointSelector _selector; + private readonly DfaState[] _states; + private readonly int _maxSegmentCount; + + public DfaMatcher(ILogger logger, EndpointSelector selector, DfaState[] states, int maxSegmentCount) + { + _logger = logger; + _selector = selector; + _states = states; + _maxSegmentCount = maxSegmentCount; + } + + public sealed override Task MatchAsync(HttpContext httpContext, EndpointSelectorContext context) + { + if (httpContext == null) + { + throw new ArgumentNullException(nameof(httpContext)); + } + + if (context == null) + { + throw new ArgumentNullException(nameof(context)); + } + + // All of the logging we do here is at level debug, so we can get away with doing a single check. + var log = _logger.IsEnabled(LogLevel.Debug); + + // The sequence of actions we take is optimized to avoid doing expensive work + // like creating substrings, creating route value dictionaries, and calling + // into policies like versioning. + var path = httpContext.Request.Path.Value; + + // First tokenize the path into series of segments. + Span buffer = stackalloc PathSegment[_maxSegmentCount]; + var count = FastPathTokenizer.Tokenize(path, buffer); + var segments = buffer.Slice(0, count); + + // FindCandidateSet will process the DFA and return a candidate set. This does + // some preliminary matching of the URL (mostly the literal segments). + var (candidates, policies) = FindCandidateSet(httpContext, path, segments); + if (candidates.Length == 0) + { + if (log) + { + Logger.CandidatesNotFound(_logger, path); + } + + return Task.CompletedTask; + } + + if (log) + { + Logger.CandidatesFound(_logger, path, candidates); + } + + // At this point we have a candidate set, defined as a list of endpoints in + // priority order. + // + // We don't yet know that any candidate can be considered a match, because + // we haven't processed things like route constraints and complex segments. + // + // Now we'll iterate each endpoint to capture route values, process constraints, + // and process complex segments. + + // `candidates` has all of our internal state that we use to process the + // set of endpoints before we call the EndpointSelector. + // + // `candidateSet` is the mutable state that we pass to the EndpointSelector. + var candidateSet = new CandidateSet(candidates); + + for (var i = 0; i < candidates.Length; i++) + { + // PERF: using ref here to avoid copying around big structs. + // + // Reminder! + // candidate: readonly data about the endpoint and how to match + // state: mutable storarge for our processing + ref var candidate = ref candidates[i]; + ref var state = ref candidateSet[i]; + + var flags = candidate.Flags; + + // First process all of the parameters and defaults. + RouteValueDictionary values; + if ((flags & Candidate.CandidateFlags.HasSlots) == 0) + { + values = new RouteValueDictionary(); + } + else + { + // The Slots array has the default values of the route values in it. + // + // We want to create a new array for the route values based on Slots + // as a prototype. + var prototype = candidate.Slots; + var slots = new KeyValuePair[prototype.Length]; + + if ((flags & Candidate.CandidateFlags.HasDefaults) != 0) + { + Array.Copy(prototype, 0, slots, 0, prototype.Length); + } + + if ((flags & Candidate.CandidateFlags.HasCaptures) != 0) + { + ProcessCaptures(slots, candidate.Captures, path, segments); + } + + if ((flags & Candidate.CandidateFlags.HasCatchAll) != 0) + { + ProcessCatchAll(slots, candidate.CatchAll, path, segments); + } + + values = RouteValueDictionary.FromArray(slots); + } + + state.Values = values; + + // Now that we have the route values, we need to process complex segments. + // Complex segments go through an old API that requires a fully-materialized + // route value dictionary. + var isMatch = true; + if ((flags & Candidate.CandidateFlags.HasComplexSegments) != 0) + { + if (!ProcessComplexSegments(candidate.Endpoint, candidate.ComplexSegments, path, segments, values)) + { + candidateSet.SetValidity(i, false); + isMatch = false; + } + } + + if ((flags & Candidate.CandidateFlags.HasConstraints) != 0) + { + if (!ProcessConstraints(candidate.Endpoint, candidate.Constraints, httpContext, values)) + { + candidateSet.SetValidity(i, false); + isMatch = false; + } + } + + if (log) + { + if (isMatch) + { + Logger.CandidateValid(_logger, path, candidate.Endpoint); + } + else + { + Logger.CandidateNotValid(_logger, path, candidate.Endpoint); + } + } + } + + if (policies.Length == 0) + { + // Perf: avoid a state machine if there are no polices + return _selector.SelectAsync(httpContext, context, candidateSet); + } + + return SelectEndpointWithPoliciesAsync(httpContext, context, policies, candidateSet); + } + + internal (Candidate[] candidates, IEndpointSelectorPolicy[] policies) FindCandidateSet( + HttpContext httpContext, + string path, + ReadOnlySpan segments) + { + var states = _states; + + // Process each path segment + var destination = 0; + for (var i = 0; i < segments.Length; i++) + { + destination = states[destination].PathTransitions.GetDestination(path, segments[i]); + } + + // Process an arbitrary number of policy-based decisions + var policyTransitions = states[destination].PolicyTransitions; + while (policyTransitions != null) + { + destination = policyTransitions.GetDestination(httpContext); + policyTransitions = states[destination].PolicyTransitions; + } + + return (states[destination].Candidates, states[destination].Policies); + } + + private void ProcessCaptures( + KeyValuePair[] slots, + (string parameterName, int segmentIndex, int slotIndex)[] captures, + string path, + ReadOnlySpan segments) + { + for (var i = 0; i < captures.Length; i++) + { + var parameterName = captures[i].parameterName; + if (segments.Length > captures[i].segmentIndex) + { + var segment = segments[captures[i].segmentIndex]; + if (parameterName != null && segment.Length > 0) + { + slots[captures[i].slotIndex] = new KeyValuePair( + parameterName, + path.Substring(segment.Start, segment.Length)); + } + } + } + } + + private void ProcessCatchAll( + KeyValuePair[] slots, + (string parameterName, int segmentIndex, int slotIndex) catchAll, + string path, + ReadOnlySpan segments) + { + if (segments.Length > catchAll.segmentIndex) + { + var segment = segments[catchAll.segmentIndex]; + slots[catchAll.slotIndex] = new KeyValuePair( + catchAll.parameterName, + path.Substring(segment.Start)); + } + } + + private bool ProcessComplexSegments( + Endpoint endpoint, + (RoutePatternPathSegment pathSegment, int segmentIndex)[] complexSegments, + string path, + ReadOnlySpan segments, + RouteValueDictionary values) + { + for (var i = 0; i < complexSegments.Length; i++) + { + (var complexSegment, var segmentIndex) = complexSegments[i]; + var segment = segments[segmentIndex]; + var text = path.Substring(segment.Start, segment.Length); + if (!RoutePatternMatcher.MatchComplexSegment(complexSegment, text, values)) + { + Logger.CandidateRejectedByComplexSegment(_logger, path, endpoint, complexSegment); + return false; + } + } + + return true; + } + + private bool ProcessConstraints( + Endpoint endpoint, + KeyValuePair[] constraints, + HttpContext httpContext, + RouteValueDictionary values) + { + for (var i = 0; i < constraints.Length; i++) + { + var constraint = constraints[i]; + if (!constraint.Value.Match(httpContext, NullRouter.Instance, constraint.Key, values, RouteDirection.IncomingRequest)) + { + Logger.CandidateRejectedByConstraint(_logger, httpContext.Request.Path, endpoint, constraint.Key, constraint.Value, values[constraint.Key]); + return false; + } + } + + return true; + } + + private async Task SelectEndpointWithPoliciesAsync( + HttpContext httpContext, + EndpointSelectorContext context, + IEndpointSelectorPolicy[] policies, + CandidateSet candidateSet) + { + for (var i = 0; i < policies.Length; i++) + { + var policy = policies[i]; + await policy.ApplyAsync(httpContext, context, candidateSet); + if (context.Endpoint != null) + { + // This is a short circuit, the selector chose an endpoint. + return; + } + } + + await _selector.SelectAsync(httpContext, context, candidateSet); + } + + internal static class EventIds + { + public static readonly EventId CandidatesNotFound = new EventId(1000, "CandidatesNotFound"); + public static readonly EventId CandidatesFound = new EventId(1001, "CandidatesFound"); + + public static readonly EventId CandidateRejectedByComplexSegment = new EventId(1002, "CandidateRejectedByComplexSegment"); + public static readonly EventId CandidateRejectedByConstraint = new EventId(1003, "CandidateRejectedByConstraint"); + + public static readonly EventId CandidateNotValid = new EventId(1004, "CandiateNotValid"); + public static readonly EventId CandidateValid = new EventId(1005, "CandiateValid"); + } + + private static class Logger + { + private static readonly Action _candidatesNotFound = LoggerMessage.Define( + LogLevel.Debug, + EventIds.CandidatesNotFound, + "No candidates found for the request path '{Path}'"); + + private static readonly Action _candidatesFound = LoggerMessage.Define( + LogLevel.Debug, + EventIds.CandidatesFound, + "{CandidateCount} candidate(s) found for the request path '{Path}'"); + + private static readonly Action _candidateRejectedByComplexSegment = LoggerMessage.Define( + LogLevel.Debug, + EventIds.CandidateRejectedByComplexSegment, + "Endpoint '{Endpoint}' with route pattern '{RoutePattern}' was rejected by complex segment '{Segment}' for the request path '{Path}'"); + + private static readonly Action _candidateRejectedByConstraint = LoggerMessage.Define( + LogLevel.Debug, + EventIds.CandidateRejectedByConstraint, + "Endpoint '{Endpoint}' with route pattern '{RoutePattern}' was rejected by constraint '{ConstraintName}':'{Constraint}' with value '{RouteValue}' for the request path '{Path}'"); + + private static readonly Action _candidateNotValid = LoggerMessage.Define( + LogLevel.Debug, + EventIds.CandidateNotValid, + "Endpoint '{Endpoint}' with route pattern '{RoutePattern}' is not valid for the request path '{Path}'"); + + private static readonly Action _candidateValid = LoggerMessage.Define( + LogLevel.Debug, + EventIds.CandidateValid, + "Endpoint '{Endpoint}' with route pattern '{RoutePattern}' is valid for the request path '{Path}'"); + + public static void CandidatesNotFound(ILogger logger, string path) + { + _candidatesNotFound(logger, path, null); + } + + public static void CandidatesFound(ILogger logger, string path, Candidate[] candidates) + { + _candidatesFound(logger, candidates.Length, path, null); + } + + public static void CandidateRejectedByComplexSegment(ILogger logger, string path, Endpoint endpoint, RoutePatternPathSegment segment) + { + // This should return a real pattern since we're processing complex segments.... but just in case. + if (logger.IsEnabled(LogLevel.Debug)) + { + var routePattern = GetRoutePattern(endpoint); + _candidateRejectedByComplexSegment(logger, endpoint.DisplayName, routePattern, segment.DebuggerToString(), path, null); + } + } + + public static void CandidateRejectedByConstraint(ILogger logger, string path, Endpoint endpoint, string constraintName, IRouteConstraint constraint, object value) + { + // This should return a real pattern since we're processing constraints.... but just in case. + if (logger.IsEnabled(LogLevel.Debug)) + { + var routePattern = GetRoutePattern(endpoint); + _candidateRejectedByConstraint(logger, endpoint.DisplayName, routePattern, constraintName, constraint.ToString(), value, path, null); + } + } + + public static void CandidateNotValid(ILogger logger, string path, Endpoint endpoint) + { + // This can be the fallback value because it really might not be a route endpoint + if (logger.IsEnabled(LogLevel.Debug)) + { + var routePattern = GetRoutePattern(endpoint); + _candidateNotValid(logger, endpoint.DisplayName, routePattern, path, null); + } + } + + public static void CandidateValid(ILogger logger, string path, Endpoint endpoint) + { + // This can be the fallback value because it really might not be a route endpoint + if (logger.IsEnabled(LogLevel.Debug)) + { + var routePattern = GetRoutePattern(endpoint); + _candidateValid(logger, endpoint.DisplayName, routePattern, path, null); + } + } + + private static string GetRoutePattern(Endpoint endpoint) + { + return (endpoint as RouteEndpoint)?.RoutePattern?.RawText ?? "(none)"; + } + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DfaMatcherBuilder.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DfaMatcherBuilder.cs new file mode 100644 index 0000000000..1b2172db53 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DfaMatcherBuilder.cs @@ -0,0 +1,724 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.Extensions.Logging; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal class DfaMatcherBuilder : MatcherBuilder + { + private readonly List _endpoints = new List(); + + private readonly ILoggerFactory _loggerFactory; + private readonly ParameterPolicyFactory _parameterPolicyFactory; + private readonly EndpointSelector _selector; + private readonly IEndpointSelectorPolicy[] _endpointSelectorPolicies; + private readonly INodeBuilderPolicy[] _nodeBuilders; + private readonly EndpointComparer _comparer; + + // These collections are reused when building candidates + private readonly Dictionary _assignments; + private readonly List> _slots; + private readonly List<(string parameterName, int segmentIndex, int slotIndex)> _captures; + private readonly List<(RoutePatternPathSegment pathSegment, int segmentIndex)> _complexSegments; + private readonly List> _constraints; + + private int _stateIndex; + + public DfaMatcherBuilder( + ILoggerFactory loggerFactory, + ParameterPolicyFactory parameterPolicyFactory, + EndpointSelector selector, + IEnumerable policies) + { + _loggerFactory = loggerFactory; + _parameterPolicyFactory = parameterPolicyFactory; + _selector = selector; + + var (nodeBuilderPolicies, endpointComparerPolicies, endpointSelectorPolicies) = ExtractPolicies(policies.OrderBy(p => p.Order)); + _endpointSelectorPolicies = endpointSelectorPolicies; + _nodeBuilders = nodeBuilderPolicies; + _comparer = new EndpointComparer(endpointComparerPolicies); + + _assignments = new Dictionary(StringComparer.OrdinalIgnoreCase); + _slots = new List>(); + _captures = new List<(string parameterName, int segmentIndex, int slotIndex)>(); + _complexSegments = new List<(RoutePatternPathSegment pathSegment, int segmentIndex)>(); + _constraints = new List>(); + } + + public override void AddEndpoint(RouteEndpoint endpoint) + { + _endpoints.Add(endpoint); + } + + public DfaNode BuildDfaTree(bool includeLabel = false) + { + // We build the tree by doing a BFS over the list of entries. This is important + // because a 'parameter' node can also traverse the same paths that literal nodes + // traverse. This means that we need to order the entries first, or else we will + // miss possible edges in the DFA. + _endpoints.Sort(_comparer); + + // Since we're doing a BFS we will process each 'level' of the tree in stages + // this list will hold the set of items we need to process at the current + // stage. + var work = new List<(RouteEndpoint endpoint, List parents)>(_endpoints.Count); + List<(RouteEndpoint endpoint, List parents)> previousWork = null; + + var root = new DfaNode() { PathDepth = 0, Label = includeLabel ? "/" : null }; + + // To prepare for this we need to compute the max depth, as well as + // a seed list of items to process (entry, root). + var maxDepth = 0; + for (var i = 0; i < _endpoints.Count; i++) + { + var endpoint = _endpoints[i]; + maxDepth = Math.Max(maxDepth, endpoint.RoutePattern.PathSegments.Count); + + work.Add((endpoint, new List() { root, })); + } + var workCount = work.Count; + + // Now we process the entries a level at a time. + for (var depth = 0; depth <= maxDepth; depth++) + { + // As we process items, collect the next set of items. + List<(RouteEndpoint endpoint, List parents)> nextWork; + var nextWorkCount = 0; + if (previousWork == null) + { + nextWork = new List<(RouteEndpoint endpoint, List parents)>(); + } + else + { + // Reuse previous collection for the next collection + // Don't clear the list so nested lists can be reused + nextWork = previousWork; + } + + for (var i = 0; i < workCount; i++) + { + var (endpoint, parents) = work[i]; + + if (!HasAdditionalRequiredSegments(endpoint, depth)) + { + for (var j = 0; j < parents.Count; j++) + { + var parent = parents[j]; + parent.AddMatch(endpoint); + } + } + + // Find the parents of this edge at the current depth + List nextParents; + if (nextWorkCount < nextWork.Count) + { + nextParents = nextWork[nextWorkCount].parents; + nextParents.Clear(); + + nextWork[nextWorkCount] = (endpoint, nextParents); + } + else + { + nextParents = new List(); + + // Add to the next set of work now so the list will be reused + // even if there are no parents + nextWork.Add((endpoint, nextParents)); + } + + var segment = GetCurrentSegment(endpoint, depth); + if (segment == null) + { + continue; + } + + for (var j = 0; j < parents.Count; j++) + { + var parent = parents[j]; + var part = segment.Parts[0]; + if (segment.IsSimple && part is RoutePatternLiteralPart literalPart) + { + DfaNode next = null; + var literal = literalPart.Content; + if (parent.Literals == null || + !parent.Literals.TryGetValue(literal, out next)) + { + next = new DfaNode() + { + PathDepth = parent.PathDepth + 1, + Label = includeLabel ? parent.Label + literal + "/" : null, + }; + parent.AddLiteral(literal, next); + } + + nextParents.Add(next); + } + else if (segment.IsSimple && part is RoutePatternParameterPart parameterPart && parameterPart.IsCatchAll) + { + // A catch all should traverse all literal nodes as well as parameter nodes + // we don't need to create the parameter node here because of ordering + // all catchalls will be processed after all parameters. + if (parent.Literals != null) + { + nextParents.AddRange(parent.Literals.Values); + } + if (parent.Parameters != null) + { + nextParents.Add(parent.Parameters); + } + + // We also create a 'catchall' here. We don't do further traversals + // on the catchall node because only catchalls can end up here. The + // catchall node allows us to capture an unlimited amount of segments + // and also to match a zero-length segment, which a parameter node + // doesn't allow. + if (parent.CatchAll == null) + { + parent.CatchAll = new DfaNode() + { + PathDepth = parent.PathDepth + 1, + Label = includeLabel ? parent.Label + "{*...}/" : null, + }; + + // The catchall node just loops. + parent.CatchAll.Parameters = parent.CatchAll; + parent.CatchAll.CatchAll = parent.CatchAll; + } + + parent.CatchAll.AddMatch(endpoint); + } + else if (segment.IsSimple && part.IsParameter) + { + if (parent.Parameters == null) + { + parent.Parameters = new DfaNode() + { + PathDepth = parent.PathDepth + 1, + Label = includeLabel ? parent.Label + "{...}/" : null, + }; + } + + // A parameter should traverse all literal nodes as well as the parameter node + if (parent.Literals != null) + { + nextParents.AddRange(parent.Literals.Values); + } + nextParents.Add(parent.Parameters); + } + else + { + // Complex segment - we treat these are parameters here and do the + // expensive processing later. We don't want to spend time processing + // complex segments unless they are the best match, and treating them + // like parameters in the DFA allows us to do just that. + if (parent.Parameters == null) + { + parent.Parameters = new DfaNode() + { + PathDepth = parent.PathDepth + 1, + Label = includeLabel ? parent.Label + "{...}/" : null, + }; + } + + if (parent.Literals != null) + { + nextParents.AddRange(parent.Literals.Values); + } + nextParents.Add(parent.Parameters); + } + } + + if (nextParents.Count > 0) + { + nextWorkCount++; + } + } + + // Prepare the process the next stage. + previousWork = work; + work = nextWork; + workCount = nextWorkCount; + } + + // Build the trees of policy nodes (like HTTP methods). Post-order traversal + // means that we won't have infinite recursion. + root.Visit(ApplyPolicies); + + return root; + } + + private RoutePatternPathSegment GetCurrentSegment(RouteEndpoint endpoint, int depth) + { + if (depth < endpoint.RoutePattern.PathSegments.Count) + { + return endpoint.RoutePattern.PathSegments[depth]; + } + + if (endpoint.RoutePattern.PathSegments.Count == 0) + { + return null; + } + + var lastSegment = endpoint.RoutePattern.PathSegments[endpoint.RoutePattern.PathSegments.Count - 1]; + if (lastSegment.IsSimple && lastSegment.Parts[0] is RoutePatternParameterPart parameterPart && parameterPart.IsCatchAll) + { + return lastSegment; + } + + return null; + } + + public override Matcher Build() + { +#if DEBUG + var includeLabel = true; +#else + var includeLabel = false; +#endif + + var root = BuildDfaTree(includeLabel); + + // State count is the number of nodes plus an exit state + var stateCount = 1; + var maxSegmentCount = 0; + root.Visit((node) => + { + stateCount++; + maxSegmentCount = Math.Max(maxSegmentCount, node.PathDepth); + }); + _stateIndex = 0; + + // The max segment count is the maximum path-node-depth +1. We need + // the +1 to capture any additional content after the 'last' segment. + maxSegmentCount++; + + var states = new DfaState[stateCount]; + var exitDestination = stateCount - 1; + AddNode(root, states, exitDestination); + + // The root state only has a jump table. + states[exitDestination] = new DfaState( + Array.Empty(), + Array.Empty(), + JumpTableBuilder.Build(exitDestination, exitDestination, null), + null); + + return new DfaMatcher(_loggerFactory.CreateLogger(), _selector, states, maxSegmentCount); + } + + private int AddNode( + DfaNode node, + DfaState[] states, + int exitDestination) + { + node.Matches?.Sort(_comparer); + + var currentStateIndex = _stateIndex; + + var currentDefaultDestination = exitDestination; + var currentExitDestination = exitDestination; + (string text, int destination)[] pathEntries = null; + PolicyJumpTableEdge[] policyEntries = null; + + if (node.Literals != null) + { + pathEntries = new (string text, int destination)[node.Literals.Count]; + + var index = 0; + foreach (var kvp in node.Literals) + { + var transition = Transition(kvp.Value); + pathEntries[index++] = (kvp.Key, transition); + } + } + + if (node.Parameters != null && + node.CatchAll != null && + ReferenceEquals(node.Parameters, node.CatchAll)) + { + // This node has a single transition to but it should accept zero-width segments + // this can happen when a node only has catchall parameters. + currentExitDestination = currentDefaultDestination = Transition(node.Parameters); + } + else if (node.Parameters != null && node.CatchAll != null) + { + // This node has a separate transition for zero-width segments + // this can happen when a node has both parameters and catchall parameters. + currentDefaultDestination = Transition(node.Parameters); + currentExitDestination = Transition(node.CatchAll); + } + else if (node.Parameters != null) + { + // This node has paramters but no catchall. + currentDefaultDestination = Transition(node.Parameters); + } + else if (node.CatchAll != null) + { + // This node has a catchall but no parameters + currentExitDestination = currentDefaultDestination = Transition(node.CatchAll); + } + + if (node.PolicyEdges != null && node.PolicyEdges.Count > 0) + { + policyEntries = new PolicyJumpTableEdge[node.PolicyEdges.Count]; + + var index = 0; + foreach (var kvp in node.PolicyEdges) + { + policyEntries[index++] = new PolicyJumpTableEdge(kvp.Key, Transition(kvp.Value)); + } + } + + var candidates = CreateCandidates(node.Matches); + + // Perf: most of the time there aren't any endpoint selector policies, create + // this lazily. + List endpointSelectorPolicies = null; + if (node.Matches?.Count > 0) + { + for (var i = 0; i < _endpointSelectorPolicies.Length; i++) + { + var endpointSelectorPolicy = _endpointSelectorPolicies[i]; + if (endpointSelectorPolicy.AppliesToEndpoints(node.Matches)) + { + if (endpointSelectorPolicies == null) + { + endpointSelectorPolicies = new List(); + } + + endpointSelectorPolicies.Add(endpointSelectorPolicy); + } + } + } + + states[currentStateIndex] = new DfaState( + candidates, + endpointSelectorPolicies?.ToArray() ?? Array.Empty(), + JumpTableBuilder.Build(currentDefaultDestination, currentExitDestination, pathEntries), + BuildPolicy(currentExitDestination, node.NodeBuilder, policyEntries)); + + return currentStateIndex; + + int Transition(DfaNode next) + { + // Break cycles + if (ReferenceEquals(node, next)) + { + return _stateIndex; + } + else + { + _stateIndex++; + return AddNode(next, states, exitDestination); + } + } + } + + private static PolicyJumpTable BuildPolicy(int exitDestination, INodeBuilderPolicy nodeBuilder, PolicyJumpTableEdge[] policyEntries) + { + if (policyEntries == null) + { + return null; + } + + return nodeBuilder.BuildJumpTable(exitDestination, policyEntries); + } + + // Builds an array of candidates for a node, assigns a 'score' for each + // endpoint. + internal Candidate[] CreateCandidates(IReadOnlyList endpoints) + { + if (endpoints == null || endpoints.Count == 0) + { + return Array.Empty(); + } + + var candiates = new Candidate[endpoints.Count]; + + var score = 0; + var examplar = endpoints[0]; + candiates[0] = CreateCandidate(examplar, score); + + for (var i = 1; i < endpoints.Count; i++) + { + var endpoint = endpoints[i]; + if (!_comparer.Equals(examplar, endpoint)) + { + // This endpoint doesn't have the same priority. + examplar = endpoint; + score++; + } + + candiates[i] = CreateCandidate(endpoint, score); + } + + return candiates; + } + + // internal for tests + internal Candidate CreateCandidate(Endpoint endpoint, int score) + { + (string parameterName, int segmentIndex, int slotIndex) catchAll = default; + + if (endpoint is RouteEndpoint routeEndpoint) + { + _assignments.Clear(); + _slots.Clear(); + _captures.Clear(); + _complexSegments.Clear(); + _constraints.Clear(); + + foreach (var kvp in routeEndpoint.RoutePattern.Defaults) + { + _assignments.Add(kvp.Key, _assignments.Count); + _slots.Add(kvp); + } + + for (var i = 0; i < routeEndpoint.RoutePattern.PathSegments.Count; i++) + { + var segment = routeEndpoint.RoutePattern.PathSegments[i]; + if (!segment.IsSimple) + { + continue; + } + + var parameterPart = segment.Parts[0] as RoutePatternParameterPart; + if (parameterPart == null) + { + continue; + } + + if (!_assignments.TryGetValue(parameterPart.Name, out var slotIndex)) + { + slotIndex = _assignments.Count; + _assignments.Add(parameterPart.Name, slotIndex); + + var hasDefaultValue = parameterPart.Default != null || parameterPart.IsCatchAll; + _slots.Add(hasDefaultValue ? new KeyValuePair(parameterPart.Name, parameterPart.Default) : default); + } + + if (parameterPart.IsCatchAll) + { + catchAll = (parameterPart.Name, i, slotIndex); + } + else + { + _captures.Add((parameterPart.Name, i, slotIndex)); + } + } + + for (var i = 0; i < routeEndpoint.RoutePattern.PathSegments.Count; i++) + { + var segment = routeEndpoint.RoutePattern.PathSegments[i]; + if (segment.IsSimple) + { + continue; + } + + _complexSegments.Add((segment, i)); + } + + foreach (var kvp in routeEndpoint.RoutePattern.ParameterPolicies) + { + var parameter = routeEndpoint.RoutePattern.GetParameter(kvp.Key); // may be null, that's ok + var parameterPolicyReferences = kvp.Value; + for (var i = 0; i < parameterPolicyReferences.Count; i++) + { + var reference = parameterPolicyReferences[i]; + var parameterPolicy = _parameterPolicyFactory.Create(parameter, reference); + if (parameterPolicy is IRouteConstraint routeConstraint) + { + _constraints.Add(new KeyValuePair(kvp.Key, routeConstraint)); + } + } + } + + return new Candidate( + endpoint, + score, + _slots.ToArray(), + _captures.ToArray(), + catchAll, + _complexSegments.ToArray(), + _constraints.ToArray()); + } + else + { + return new Candidate( + endpoint, + score, + Array.Empty>(), + Array.Empty<(string parameterName, int segmentIndex, int slotIndex)>(), + catchAll, + Array.Empty<(RoutePatternPathSegment pathSegment, int segmentIndex)>(), + Array.Empty>()); + } + } + + private int[] GetGroupLengths(DfaNode node) + { + var nodeMatches = node.Matches; + if (nodeMatches == null || nodeMatches.Count == 0) + { + return Array.Empty(); + } + + var groups = new List(); + + var length = 1; + var exemplar = nodeMatches[0]; + + for (var i = 1; i < nodeMatches.Count; i++) + { + if (!_comparer.Equals(exemplar, nodeMatches[i])) + { + groups.Add(length); + length = 0; + + exemplar = nodeMatches[i]; + } + + length++; + } + + groups.Add(length); + + return groups.ToArray(); + } + + private static bool HasAdditionalRequiredSegments(RouteEndpoint endpoint, int depth) + { + for (var i = depth; i < endpoint.RoutePattern.PathSegments.Count; i++) + { + var segment = endpoint.RoutePattern.PathSegments[i]; + if (!segment.IsSimple) + { + // Complex segments always require more processing + return true; + } + + var parameterPart = segment.Parts[0] as RoutePatternParameterPart; + if (parameterPart == null) + { + // It's a literal + return true; + } + + if (!parameterPart.IsOptional && + !parameterPart.IsCatchAll && + parameterPart.Default == null) + { + return true; + } + } + + return false; + } + + private void ApplyPolicies(DfaNode node) + { + if (node.Matches == null || node.Matches.Count == 0) + { + return; + } + + // Start with the current node as the root. + var work = new List() { node, }; + List previousWork = null; + for (var i = 0; i < _nodeBuilders.Length; i++) + { + var nodeBuilder = _nodeBuilders[i]; + + // Build a list of each + List nextWork; + if (previousWork == null) + { + nextWork = new List(); + } + else + { + // Reuse previous collection for the next collection + previousWork.Clear(); + nextWork = previousWork; + } + + for (var j = 0; j < work.Count; j++) + { + var parent = work[j]; + if (!nodeBuilder.AppliesToEndpoints(parent.Matches ?? (IReadOnlyList)Array.Empty())) + { + // This node-builder doesn't care about this node, so add it to the list + // to be processed by the next node-builder. + nextWork.Add(parent); + continue; + } + + // This node-builder does apply to this node, so we need to create new nodes for each edge, + // and then attach them to the parent. + var edges = nodeBuilder.GetEdges(parent.Matches ?? (IReadOnlyList)Array.Empty()); + for (var k = 0; k < edges.Count; k++) + { + var edge = edges[k]; + + var next = new DfaNode() + { + // If parent label is null then labels are not being included + Label = (parent.Label != null) ? parent.Label + " " + edge.State.ToString() : null, + }; + + if (edge.Endpoints.Count > 0) + { + next.AddMatches(edge.Endpoints); + } + nextWork.Add(next); + + parent.AddPolicyEdge(edge.State, next); + } + + // Associate the node-builder so we can build a jump table later. + parent.NodeBuilder = nodeBuilder; + + // The parent no longer has matches, it's not considered a terminal node. + parent.Matches?.Clear(); + } + + previousWork = work; + work = nextWork; + } + } + + private static (INodeBuilderPolicy[] nodeBuilderPolicies, IEndpointComparerPolicy[] endpointComparerPolicies, IEndpointSelectorPolicy[] endpointSelectorPolicies) ExtractPolicies(IEnumerable policies) + { + var nodeBuilderPolicies = new List(); + var endpointComparerPolicies = new List(); + var endpointSelectorPolicies = new List(); + + foreach (var policy in policies) + { + if (policy is INodeBuilderPolicy nodeBuilderPolicy) + { + nodeBuilderPolicies.Add(nodeBuilderPolicy); + } + + if (policy is IEndpointComparerPolicy endpointComparerPolicy) + { + endpointComparerPolicies.Add(endpointComparerPolicy); + } + + if (policy is IEndpointSelectorPolicy endpointSelectorPolicy) + { + endpointSelectorPolicies.Add(endpointSelectorPolicy); + } + } + + return (nodeBuilderPolicies.ToArray(), endpointComparerPolicies.ToArray(), endpointSelectorPolicies.ToArray()); + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DfaMatcherFactory.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DfaMatcherFactory.cs new file mode 100644 index 0000000000..c4b932d3df --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DfaMatcherFactory.cs @@ -0,0 +1,38 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal class DfaMatcherFactory : MatcherFactory + { + private readonly IServiceProvider _services; + + // Using the service provider here so we can avoid coupling to the dependencies + // of DfaMatcherBuilder. + public DfaMatcherFactory(IServiceProvider services) + { + if (services == null) + { + throw new ArgumentNullException(nameof(services)); + } + + _services = services; + } + + public override Matcher CreateMatcher(EndpointDataSource dataSource) + { + if (dataSource == null) + { + throw new ArgumentNullException(nameof(dataSource)); + } + + return new DataSourceDependentMatcher(dataSource, () => + { + return _services.GetRequiredService(); + }); + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DfaNode.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DfaNode.cs new file mode 100644 index 0000000000..f3f916b8e5 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DfaNode.cs @@ -0,0 +1,135 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // Intermediate data structure used to build the DFA. Not used at runtime. + [DebuggerDisplay("{DebuggerToString(),nq}")] + internal class DfaNode + { + // The depth of the node. The depth indicates the number of segments + // that must be processed to arrive at this node. + // + // This value is not computed for Policy nodes and will be set to -1. + public int PathDepth { get; set; } = -1; + + // Just for diagnostics and debugging + public string Label { get; set; } + + public List Matches { get; private set; } + + public Dictionary Literals { get; private set; } + + public DfaNode Parameters { get; set; } + + public DfaNode CatchAll { get; set; } + + public INodeBuilderPolicy NodeBuilder { get; set; } + + public Dictionary PolicyEdges { get; private set; } + + public void AddPolicyEdge(object state, DfaNode node) + { + if (PolicyEdges == null) + { + PolicyEdges = new Dictionary(); + } + + PolicyEdges.Add(state, node); + } + + public void AddLiteral(string literal, DfaNode node) + { + if (Literals == null) + { + Literals = new Dictionary(StringComparer.OrdinalIgnoreCase); + } + + Literals.Add(literal, node); + } + + public void AddMatch(Endpoint endpoint) + { + if (Matches == null) + { + Matches = new List(); + } + + Matches.Add(endpoint); + } + + public void AddMatches(IEnumerable endpoints) + { + if (Matches == null) + { + Matches = new List(endpoints); + } + else + { + Matches.AddRange(endpoints); + } + } + + public void Visit(Action visitor) + { + if (Literals != null) + { + foreach (var kvp in Literals) + { + kvp.Value.Visit(visitor); + } + } + + // Break cycles + if (Parameters != null && !ReferenceEquals(this, Parameters)) + { + Parameters.Visit(visitor); + } + + // Break cycles + if (CatchAll != null && !ReferenceEquals(this, CatchAll)) + { + CatchAll.Visit(visitor); + } + + if (PolicyEdges != null) + { + foreach (var kvp in PolicyEdges) + { + kvp.Value.Visit(visitor); + } + } + + visitor(this); + } + + private string DebuggerToString() + { + var builder = new StringBuilder(); + builder.Append(Label); + builder.Append(" d:"); + builder.Append(PathDepth); + builder.Append(" m:"); + builder.Append(Matches?.Count ?? 0); + builder.Append(" c: "); + if (Literals != null) + { + builder.Append(string.Join(", ", Literals.Select(kvp => $"{kvp.Key}->({FormatNode(kvp.Value)})"))); + } + return builder.ToString(); + + // DfaNodes can be self-referential, don't traverse cycles. + string FormatNode(DfaNode other) + { + return ReferenceEquals(this, other) ? "this" : other.DebuggerToString(); + } + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DfaState.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DfaState.cs new file mode 100644 index 0000000000..191177e54d --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DfaState.cs @@ -0,0 +1,36 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Diagnostics; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + [DebuggerDisplay("{DebuggerToString(),nq}")] + internal readonly struct DfaState + { + public readonly Candidate[] Candidates; + public readonly IEndpointSelectorPolicy[] Policies; + public readonly JumpTable PathTransitions; + public readonly PolicyJumpTable PolicyTransitions; + + public DfaState( + Candidate[] candidates, + IEndpointSelectorPolicy[] policies, + JumpTable pathTransitions, + PolicyJumpTable policyTransitions) + { + Candidates = candidates; + Policies = policies; + PathTransitions = pathTransitions; + PolicyTransitions = policyTransitions; + } + + public string DebuggerToString() + { + return + $"matches: {Candidates?.Length ?? 0}, " + + $"path: ({PathTransitions?.DebuggerToString()}), " + + $"policy: ({PolicyTransitions?.DebuggerToString()})"; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DictionaryJumpTable.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DictionaryJumpTable.cs new file mode 100644 index 0000000000..27445737e9 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/DictionaryJumpTable.cs @@ -0,0 +1,68 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal class DictionaryJumpTable : JumpTable + { + private readonly int _defaultDestination; + private readonly int _exitDestination; + private readonly Dictionary _dictionary; + + public DictionaryJumpTable( + int defaultDestination, + int exitDestination, + (string text, int destination)[] entries) + { + _defaultDestination = defaultDestination; + _exitDestination = exitDestination; + + _dictionary = new Dictionary(StringComparer.OrdinalIgnoreCase); + for (var i = 0; i < entries.Length; i++) + { + _dictionary.Add(entries[i].text, entries[i].destination); + } + } + + public override int GetDestination(string path, PathSegment segment) + { + if (segment.Length == 0) + { + return _exitDestination; + } + + var text = path.Substring(segment.Start, segment.Length); + if (_dictionary.TryGetValue(text, out var destination)) + { + return destination; + } + + return _defaultDestination; + } + + public override string DebuggerToString() + { + var builder = new StringBuilder(); + builder.Append("{ "); + + builder.Append(string.Join(", ", _dictionary.Select(kvp => $"{kvp.Key}: {kvp.Value}"))); + + builder.Append("$+: "); + builder.Append(_defaultDestination); + builder.Append(", "); + + builder.Append("$0: "); + builder.Append(_defaultDestination); + + builder.Append(" }"); + + + return builder.ToString(); + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/EndpointComparer.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/EndpointComparer.cs new file mode 100644 index 0000000000..4609b8c4f3 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/EndpointComparer.cs @@ -0,0 +1,163 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // Use to sort and group Endpoints. RouteEndpoints are sorted before other implementations. + // + // NOTE: + // When ordering endpoints, we compare the route templates as an absolute last resort. + // This is used as a factor to ensure that we always have a predictable ordering + // for tests, errors, etc. + // + // When we group endpoints we don't consider the route template, because we're trying + // to group endpoints not separate them. + // + // TLDR: + // IComparer implementation considers the template string as a tiebreaker. + // IEqualityComparer implementation does not. + // This is cool and good. + internal class EndpointComparer : IComparer, IEqualityComparer + { + private readonly IComparer[] _comparers; + + public EndpointComparer(IEndpointComparerPolicy[] policies) + { + // Order, Precedence, (others)... + _comparers = new IComparer[2 + policies.Length]; + _comparers[0] = OrderComparer.Instance; + _comparers[1] = PrecedenceComparer.Instance; + for (var i = 0; i < policies.Length; i++) + { + _comparers[i + 2] = policies[i].Comparer; + } + } + + public int Compare(Endpoint x, Endpoint y) + { + // We don't expose this publicly, and we should never call it on + // a null endpoint. + Debug.Assert(x != null); + Debug.Assert(y != null); + + var compare = CompareCore(x, y); + + // Since we're sorting, use the route template as a last resort. + return compare == 0 ? ComparePattern(x, y) : compare; + } + + private int ComparePattern(Endpoint x, Endpoint y) + { + // A RouteEndpoint always comes before a non-RouteEndpoint, regardless of its RawText value + var routeEndpointX = x as RouteEndpoint; + var routeEndpointY = y as RouteEndpoint; + + if (routeEndpointX != null) + { + if (routeEndpointY != null) + { + return routeEndpointX.RoutePattern.RawText.CompareTo(routeEndpointY.RoutePattern.RawText); + } + + return 1; + } + else if (routeEndpointY != null) + { + return -1; + } + + return 0; + } + + public bool Equals(Endpoint x, Endpoint y) + { + // We don't expose this publicly, and we should never call it on + // a null endpoint. + Debug.Assert(x != null); + Debug.Assert(y != null); + + return CompareCore(x, y) == 0; + } + + public int GetHashCode(Endpoint obj) + { + // This should not be possible to call publicly. + Debug.Fail("We don't expect this to be called."); + throw new System.NotImplementedException(); + } + + private int CompareCore(Endpoint x, Endpoint y) + { + for (var i = 0; i < _comparers.Length; i++) + { + var compare = _comparers[i].Compare(x, y); + if (compare != 0) + { + return compare; + } + } + + return 0; + } + + private class OrderComparer : IComparer + { + public static readonly IComparer Instance = new OrderComparer(); + + public int Compare(Endpoint x, Endpoint y) + { + var routeEndpointX = x as RouteEndpoint; + var routeEndpointY = y as RouteEndpoint; + + if (routeEndpointX != null) + { + if (routeEndpointY != null) + { + return routeEndpointX.Order.CompareTo(routeEndpointY.Order); + } + + return 1; + } + else if (routeEndpointY != null) + { + return -1; + } + + return 0; + } + } + + private class PrecedenceComparer : IComparer + { + public static readonly IComparer Instance = new PrecedenceComparer(); + + public int Compare(Endpoint x, Endpoint y) + { + var routeEndpointX = x as RouteEndpoint; + var routeEndpointY = y as RouteEndpoint; + + if (routeEndpointX != null) + { + if (routeEndpointY != null) + { + return routeEndpointX.RoutePattern.InboundPrecedence + .CompareTo(routeEndpointY.RoutePattern.InboundPrecedence); + } + + return 1; + } + else if (routeEndpointY != null) + { + return -1; + } + + return 0; + } + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/EndpointMetadataComparer.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/EndpointMetadataComparer.cs new file mode 100644 index 0000000000..721d1816dd --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/EndpointMetadataComparer.cs @@ -0,0 +1,101 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + /// + /// A base class for implementations that use + /// a specific type of metadata from for comparison. + /// Useful for implementing . + /// + /// + /// The type of metadata to compare. Typically this is a type of metadata related + /// to the application concern being handled. + /// + public abstract class EndpointMetadataComparer : IComparer where TMetadata : class + { + public static readonly EndpointMetadataComparer Default = new DefaultComparer(); + + /// + /// Compares two objects and returns a value indicating whether one is less than, equal to, + /// or greater than the other. + /// + /// The first object to compare. + /// The second object to compare. + /// + /// An implementation of this method must return a value less than zero if + /// x is less than y, zero if x is equal to y, or a value greater than zero if x is + /// greater than y. + /// + public int Compare(Endpoint x, Endpoint y) + { + if (x == null) + { + throw new ArgumentNullException(nameof(x)); + } + + if (y == null) + { + throw new ArgumentNullException(nameof(y)); + } + + return CompareMetadata(GetMetadata(x), GetMetadata(y)); + } + + /// + /// Gets the metadata of type from the provided endpoint. + /// + /// The . + /// The instance or null. + protected virtual TMetadata GetMetadata(Endpoint endpoint) + { + return endpoint.Metadata.GetMetadata(); + } + + /// + /// Compares two instances. + /// + /// The first object to compare. + /// The second object to compare. + /// + /// An implementation of this method must return a value less than zero if + /// x is less than y, zero if x is equal to y, or a value greater than zero if x is + /// greater than y. + /// + /// + /// The base-class implementation of this method will compare metadata based on whether + /// or not they are null. The effect of this is that when endpoints are being + /// compared, the endpoint that defines an instance of + /// will be considered higher priority. + /// + protected virtual int CompareMetadata(TMetadata x, TMetadata y) + { + // The default policy is that if x endpoint defines TMetadata, and + // y endpoint does not, then x is *more specific* than y. We return + // -1 for this case so that x will come first in the sort order. + + if (x == null && y != null) + { + // y is more specific + return 1; + } + else if (x != null && y == null) + { + // x is more specific + return -1; + } + + // both endpoints have this metadata, or both do not have it, they have + // the same specificity. + return 0; + } + + private class DefaultComparer : EndpointMetadataComparer where T : class + { + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/EndpointSelector.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/EndpointSelector.cs new file mode 100644 index 0000000000..ba1345bb5a --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/EndpointSelector.cs @@ -0,0 +1,33 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + /// + /// A service that is responsible for the final selection + /// decision. To use a custom register an implementation + /// of in the dependency injection container as a singleton. + /// + public abstract class EndpointSelector + { + /// + /// Asynchronously selects an from the . + /// + /// The associated with the current request. + /// The associated with the current request. + /// The . + /// A that completes asynchronously once endpoint selection is complete. + /// + /// An should assign the + /// and properties once an endpoint is selected. + /// + public abstract Task SelectAsync( + HttpContext httpContext, + EndpointSelectorContext context, + CandidateSet candidates); + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/FastPathTokenizer.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/FastPathTokenizer.cs new file mode 100644 index 0000000000..79fab9591f --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/FastPathTokenizer.cs @@ -0,0 +1,46 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // Low level implementation of our path tokenization algorithm. Alternative + // to PathTokenizer. + internal static class FastPathTokenizer + { + // This section tokenizes the path by marking the sequence of slashes, and their + // and the length of the text between them. + // + // If there is residue (text after last slash) then the length of the segment will + // computed based on the string length. + public static int Tokenize(string path, Span segments) + { + // This can happen in test scenarios. + if (path == string.Empty) + { + return 0; + } + + int count = 0; + int start = 1; // Paths always start with a leading / + int end; + var span = path.AsSpan(start); + while ((end = span.IndexOf('/')) >= 0 && count < segments.Length) + { + segments[count++] = new PathSegment(start, end); + start += end + 1; // resume search after the current character + span = path.AsSpan(start); + } + + // Residue + var length = span.Length; + if (length > 0 && count < segments.Length) + { + segments[count++] = new PathSegment(start, length); + } + + return count; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/HttpMethodMatcherPolicy.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/HttpMethodMatcherPolicy.cs new file mode 100644 index 0000000000..f1ec26d67d --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/HttpMethodMatcherPolicy.cs @@ -0,0 +1,412 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.Extensions.Internal; +using Microsoft.Extensions.Primitives; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + /// + /// An that implements filtering and selection by + /// the HTTP method of a request. + /// + public sealed class HttpMethodMatcherPolicy : MatcherPolicy, IEndpointComparerPolicy, INodeBuilderPolicy + { + // Used in tests + internal static readonly string OriginHeader = "Origin"; + internal static readonly string AccessControlRequestMethod = "Access-Control-Request-Method"; + internal static readonly string PreflightHttpMethod = "OPTIONS"; + + // Used in tests + internal const string Http405EndpointDisplayName = "405 HTTP Method Not Supported"; + + // Used in tests + internal const string AnyMethod = "*"; + + /// + /// For framework use only. + /// + public IComparer Comparer => new HttpMethodMetadataEndpointComparer(); + + // The order value is chosen to be less than 0, so that it comes before naively + // written policies. + /// + /// For framework use only. + /// + public override int Order => -1000; + + /// + /// For framework use only. + /// + /// + /// + public bool AppliesToEndpoints(IReadOnlyList endpoints) + { + if (endpoints == null) + { + throw new ArgumentNullException(nameof(endpoints)); + } + + for (var i = 0; i < endpoints.Count; i++) + { + if (endpoints[i].Metadata.GetMetadata()?.HttpMethods.Count > 0) + { + return true; + } + } + + return false; + } + + /// + /// For framework use only. + /// + /// + /// + public IReadOnlyList GetEdges(IReadOnlyList endpoints) + { + // The algorithm here is designed to be preserve the order of the endpoints + // while also being relatively simple. Preserving order is important. + + // First, build a dictionary of all possible HTTP method/CORS combinations + // that exist in this list of endpoints. + // + // For now we're just building up the set of keys. We don't add any endpoints + // to lists now because we don't want ordering problems. + var allHttpMethods = new List(); + var edges = new Dictionary>(); + for (var i = 0; i < endpoints.Count; i++) + { + var endpoint = endpoints[i]; + var (httpMethods, acceptCorsPreFlight) = GetHttpMethods(endpoint); + + // If the action doesn't list HTTP methods then it supports all methods. + // In this phase we use a sentinel value to represent the *other* HTTP method + // a state that represents any HTTP method that doesn't have a match. + if (httpMethods.Count == 0) + { + httpMethods = new[] { AnyMethod, }; + } + + for (var j = 0; j < httpMethods.Count; j++) + { + // An endpoint that allows CORS reqests will match both CORS and non-CORS + // so we model it as both. + var httpMethod = httpMethods[j]; + var key = new EdgeKey(httpMethod, acceptCorsPreFlight); + if (!edges.ContainsKey(key)) + { + edges.Add(key, new List()); + } + + // An endpoint that allows CORS reqests will match both CORS and non-CORS + // so we model it as both. + if (acceptCorsPreFlight) + { + key = new EdgeKey(httpMethod, false); + if (!edges.ContainsKey(key)) + { + edges.Add(key, new List()); + } + } + + // Also if it's not the *any* method key, then track it. + if (!string.Equals(AnyMethod, httpMethod, StringComparison.OrdinalIgnoreCase)) + { + if (!ContainsHttpMethod(allHttpMethods, httpMethod)) + { + allHttpMethods.Add(httpMethod); + } + } + } + } + + allHttpMethods.Sort(StringComparer.OrdinalIgnoreCase); + + // Now in a second loop, add endpoints to these lists. We've enumerated all of + // the states, so we want to see which states this endpoint matches. + for (var i = 0; i < endpoints.Count; i++) + { + var endpoint = endpoints[i]; + var (httpMethods, acceptCorsPreFlight) = GetHttpMethods(endpoint); + + if (httpMethods.Count == 0) + { + // OK this means that this endpoint matches *all* HTTP methods. + // So, loop and add it to all states. + foreach (var kvp in edges) + { + if (acceptCorsPreFlight || !kvp.Key.IsCorsPreflightRequest) + { + kvp.Value.Add(endpoint); + } + } + } + else + { + // OK this endpoint matches specific methods. + for (var j = 0; j < httpMethods.Count; j++) + { + var httpMethod = httpMethods[j]; + var key = new EdgeKey(httpMethod, acceptCorsPreFlight); + + edges[key].Add(endpoint); + + // An endpoint that allows CORS reqests will match both CORS and non-CORS + // so we model it as both. + if (acceptCorsPreFlight) + { + key = new EdgeKey(httpMethod, false); + edges[key].Add(endpoint); + } + } + } + } + + // Adds a very low priority endpoint that will reject the request with + // a 405 if nothing else can handle this verb. This is only done if + // no other actions exist that handle the 'all verbs'. + // + // The rationale for this is that we want to report a 405 if none of + // the supported methods match, but we don't want to report a 405 in a + // case where an application defines an endpoint that handles all verbs, but + // a constraint rejects the request, or a complex segment fails to parse. We + // consider a case like that a 'user input validation' failure rather than + // a semantic violation of HTTP. + // + // This will make 405 much more likely in API-focused applications, and somewhat + // unlikely in a traditional MVC application. That's good. + // + // We don't bother returning a 405 when the CORS preflight method doesn't exist. + // The developer calling the API will see it as a CORS error, which is fine because + // there isn't an endpoint to check for a CORS policy. + if (!edges.TryGetValue(new EdgeKey(AnyMethod, false), out var matches)) + { + // Methods sorted for testability. + var endpoint = CreateRejectionEndpoint(allHttpMethods); + matches = new List() { endpoint, }; + edges[new EdgeKey(AnyMethod, false)] = matches; + } + + var policyNodeEdges = new PolicyNodeEdge[edges.Count]; + var index = 0; + foreach (var kvp in edges) + { + policyNodeEdges[index++] = new PolicyNodeEdge(kvp.Key, kvp.Value); + } + + return policyNodeEdges; + + (IReadOnlyList httpMethods, bool acceptCorsPreflight) GetHttpMethods(Endpoint e) + { + var metadata = e.Metadata.GetMetadata(); + return metadata == null ? (Array.Empty(), false) : (metadata.HttpMethods, metadata.AcceptCorsPreflight); + } + } + + /// + /// For framework use only. + /// + /// + /// + /// + public PolicyJumpTable BuildJumpTable(int exitDestination, IReadOnlyList edges) + { + Dictionary destinations = null; + Dictionary corsPreflightDestinations = null; + for (var i = 0; i < edges.Count; i++) + { + // We create this data, so it's safe to cast it. + var key = (EdgeKey)edges[i].State; + if (key.IsCorsPreflightRequest) + { + if (corsPreflightDestinations == null) + { + corsPreflightDestinations = new Dictionary(StringComparer.OrdinalIgnoreCase); + } + + corsPreflightDestinations.Add(key.HttpMethod, edges[i].Destination); + } + else + { + if (destinations == null) + { + destinations = new Dictionary(StringComparer.OrdinalIgnoreCase); + } + + destinations.Add(key.HttpMethod, edges[i].Destination); + } + } + + int corsPreflightExitDestination = exitDestination; + if (corsPreflightDestinations != null && corsPreflightDestinations.TryGetValue(AnyMethod, out var matchesAnyVerb)) + { + // If we have endpoints that match any HTTP method, use that as the exit. + corsPreflightExitDestination = matchesAnyVerb; + corsPreflightDestinations.Remove(AnyMethod); + } + + if (destinations != null && destinations.TryGetValue(AnyMethod, out matchesAnyVerb)) + { + // If we have endpoints that match any HTTP method, use that as the exit. + exitDestination = matchesAnyVerb; + destinations.Remove(AnyMethod); + } + + return new HttpMethodPolicyJumpTable( + exitDestination, + destinations, + corsPreflightExitDestination, + corsPreflightDestinations); + } + + private Endpoint CreateRejectionEndpoint(IEnumerable httpMethods) + { + var allow = string.Join(", ", httpMethods); + return new Endpoint( + (context) => + { + context.Response.StatusCode = 405; + context.Response.Headers.Add("Allow", allow); + return Task.CompletedTask; + }, + EndpointMetadataCollection.Empty, + Http405EndpointDisplayName); + } + + private static bool ContainsHttpMethod(List httpMethods, string httpMethod) + { + for (var i = 0; i < httpMethods.Count; i++) + { + if (string.Equals(httpMethods[i], httpMethod, StringComparison.OrdinalIgnoreCase)) + { + return true; + } + } + + return false; + } + + private class HttpMethodPolicyJumpTable : PolicyJumpTable + { + private readonly int _exitDestination; + private readonly Dictionary _destinations; + private readonly int _corsPreflightExitDestination; + private readonly Dictionary _corsPreflightDestinations; + + private readonly bool _supportsCorsPreflight; + + public HttpMethodPolicyJumpTable( + int exitDestination, + Dictionary destinations, + int corsPreflightExitDestination, + Dictionary corsPreflightDestinations) + { + _exitDestination = exitDestination; + _destinations = destinations; + _corsPreflightExitDestination = corsPreflightExitDestination; + _corsPreflightDestinations = corsPreflightDestinations; + + _supportsCorsPreflight = _corsPreflightDestinations != null && _corsPreflightDestinations.Count > 0; + } + + public override int GetDestination(HttpContext httpContext) + { + int destination; + + var httpMethod = httpContext.Request.Method; + if (_supportsCorsPreflight && + string.Equals(httpMethod, PreflightHttpMethod, StringComparison.OrdinalIgnoreCase) && + httpContext.Request.Headers.ContainsKey(OriginHeader) && + httpContext.Request.Headers.TryGetValue(AccessControlRequestMethod, out var accessControlRequestMethod) && + !StringValues.IsNullOrEmpty(accessControlRequestMethod)) + { + return _corsPreflightDestinations != null && + _corsPreflightDestinations.TryGetValue(accessControlRequestMethod, out destination) + ? destination + : _corsPreflightExitDestination; + } + + return _destinations != null && + _destinations.TryGetValue(httpMethod, out destination) ? destination : _exitDestination; + } + } + + private class HttpMethodMetadataEndpointComparer : EndpointMetadataComparer + { + protected override int CompareMetadata(IHttpMethodMetadata x, IHttpMethodMetadata y) + { + // Ignore the metadata if it has an empty list of HTTP methods. + return base.CompareMetadata( + x?.HttpMethods.Count > 0 ? x : null, + y?.HttpMethods.Count > 0 ? y : null); + } + } + + internal readonly struct EdgeKey : IEquatable, IComparable, IComparable + { + // Note that in contrast with the metadata, the edge represents a possible state change + // rather than a list of what's allowed. We represent CORS and non-CORS requests as separate + // states. + public readonly bool IsCorsPreflightRequest; + public readonly string HttpMethod; + + public EdgeKey(string httpMethod, bool isCorsPreflightRequest) + { + HttpMethod = httpMethod; + IsCorsPreflightRequest = isCorsPreflightRequest; + } + + // These are comparable so they can be sorted in tests. + public int CompareTo(EdgeKey other) + { + var compare = HttpMethod.CompareTo(other.HttpMethod); + if (compare != 0) + { + return compare; + } + + return IsCorsPreflightRequest.CompareTo(other.IsCorsPreflightRequest); + } + + public int CompareTo(object obj) + { + return CompareTo((EdgeKey)obj); + } + + public bool Equals(EdgeKey other) + { + return + IsCorsPreflightRequest == other.IsCorsPreflightRequest && + string.Equals(HttpMethod, other.HttpMethod, StringComparison.OrdinalIgnoreCase); + } + + public override bool Equals(object obj) + { + var other = obj as EdgeKey?; + return other == null ? false : Equals(other.Value); + } + + public override int GetHashCode() + { + var hash = new HashCodeCombiner(); + hash.Add(IsCorsPreflightRequest ? 1 : 0); + hash.Add(HttpMethod, StringComparer.Ordinal); + return hash; + } + + // Used in GraphViz output. + public override string ToString() + { + return IsCorsPreflightRequest ? $"CORS: {HttpMethod}" : $"HTTP: {HttpMethod}"; + } + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/IEndpointComparerPolicy.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/IEndpointComparerPolicy.cs new file mode 100644 index 0000000000..a62cc8162d --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/IEndpointComparerPolicy.cs @@ -0,0 +1,35 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + /// + /// A interface that can be implemented to sort + /// endpoints. Implementations of must + /// inherit from and should be registered in + /// the dependency injection container as singleton services of type . + /// + /// + /// + /// Candidates in a are sorted based on their priority. Defining + /// a adds an additional criterion to the sorting + /// operation used to order candidates. + /// + /// + /// As an example, the implementation of implements + /// to ensure that endpoints matching specific HTTP + /// methods are sorted with a higher priority than endpoints without a specific HTTP method + /// requirement. + /// + /// + public interface IEndpointComparerPolicy + { + /// + /// Gets an that will be used to sort the endpoints. + /// + IComparer Comparer { get; } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/IEndpointSelectorPolicy.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/IEndpointSelectorPolicy.cs new file mode 100644 index 0000000000..cae20e085b --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/IEndpointSelectorPolicy.cs @@ -0,0 +1,51 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Http; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + /// + /// A interface that can implemented to filter endpoints + /// in a . Implementations of must + /// inherit from and should be registered in + /// the dependency injection container as singleton services of type . + /// + public interface IEndpointSelectorPolicy + { + /// + /// Returns a value that indicates whether the applies + /// to any endpoint in . + /// + /// The set of candidate values. + /// + /// true if the policy applies to any endpoint in , otherwise false. + /// + bool AppliesToEndpoints(IReadOnlyList endpoints); + + /// + /// Applies the policy to the . + /// + /// + /// The associated with the current request. + /// + /// + /// The associated with the current request. + /// + /// The . + /// + /// + /// Implementations of should implement this method + /// and filter the set of candidates in the by setting + /// to false where desired. + /// + /// + /// To signal an error condition, set to an + /// value that will produce the desired error when executed. + /// + /// + Task ApplyAsync(HttpContext httpContext, EndpointSelectorContext context, CandidateSet candidates); + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/ILEmitTrieFactory.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/ILEmitTrieFactory.cs new file mode 100644 index 0000000000..3b3528932f --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/ILEmitTrieFactory.cs @@ -0,0 +1,600 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +#if IL_EMIT +using System; +using System.Diagnostics; +using System.Linq; +using System.Reflection; +using System.Reflection.Emit; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal static class ILEmitTrieFactory + { + // The algorthm we use only works for ASCII text. If we find non-ASCII text in the input + // we need to reject it and let is be processed with a fallback technique. + public const int NotAscii = int.MinValue; + + // Creates a Func of (string path, int start, int length) => destination + // Not using PathSegment here because we don't want to mess with visibility checks and + // generating IL without it is easier. + public static Func Create( + int defaultDestination, + int exitDestination, + (string text, int destination)[] entries, + bool? vectorize) + { + var method = new DynamicMethod( + "GetDestination", + typeof(int), + new[] { typeof(string), typeof(int), typeof(int), }); + + GenerateMethodBody(method.GetILGenerator(), defaultDestination, exitDestination, entries, vectorize); + +#if IL_EMIT_SAVE_ASSEMBLY + SaveAssembly(method.GetILGenerator(), defaultDestination, exitDestination, entries, vectorize); +#endif + + return (Func)method.CreateDelegate(typeof(Func)); + } + + // Internal for testing + internal static bool ShouldVectorize((string text, int destination)[] entries) + { + // There's no value in vectorizing the computation if we're on 32bit or + // if no string is long enough. We do the vectorized comparison with uint64 ulongs + // which isn't beneficial if they don't map to the native size of the CPU. The + // vectorized algorithm introduces additional overhead for casing. + + // Vectorize by default on 64bit (allow override for testing) + return (IntPtr.Size == 8) && + + // Don't vectorize if all of the strings are small (prevents allocating unused locals) + entries.Any(e => e.text.Length >= 4); + } + + private static void GenerateMethodBody( + ILGenerator il, + int defaultDestination, + int exitDestination, + (string text, int destination)[] entries, + bool? vectorize) + { + + vectorize = vectorize ?? ShouldVectorize(entries); + + // See comments on Locals for details + var locals = new Locals(il, vectorize.Value); + + // See comments on Labels for details + var labels = new Labels() + { + ReturnDefault = il.DefineLabel(), + ReturnNotAscii = il.DefineLabel(), + }; + + // See comments on Methods for details + var methods = Methods.Instance; + + // Initializing top-level locals - this is similar to... + // ReadOnlySpan span = arg0.AsSpan(arg1, arg2); + // ref byte p = ref Unsafe.As(MemoryMarshal.GetReference(span)) + + // arg0.AsSpan(arg1, arg2) + il.Emit(OpCodes.Ldarg_0); + il.Emit(OpCodes.Ldarg_1); + il.Emit(OpCodes.Ldarg_2); + il.Emit(OpCodes.Call, methods.AsSpan); + + // ReadOnlySpan = ... + il.Emit(OpCodes.Stloc, locals.Span); + + // MemoryMarshal.GetReference(span) + il.Emit(OpCodes.Ldloc, locals.Span); + il.Emit(OpCodes.Call, methods.GetReference); + + // Unsafe.As(...) + il.Emit(OpCodes.Call, methods.As); + + // ref byte p = ... + il.Emit(OpCodes.Stloc_0, locals.P); + + var groups = entries.GroupBy(e => e.text.Length).ToArray(); + for (var i = 0; i < groups.Length; i++) + { + var group = groups[i]; + + // Similar to 'if (length != X) { ... } + var inside = il.DefineLabel(); + var next = il.DefineLabel(); + il.Emit(OpCodes.Ldarg_2); + il.Emit(OpCodes.Ldc_I4, group.Key); + il.Emit(OpCodes.Beq, inside); + il.Emit(OpCodes.Br, next); + + // Process the group + il.MarkLabel(inside); + EmitTable(il, group.ToArray(), 0, group.Key, locals, labels, methods); + il.MarkLabel(next); + } + + // Exit point - we end up here when the text doesn't match + il.MarkLabel(labels.ReturnDefault); + il.Emit(OpCodes.Ldc_I4, defaultDestination); + il.Emit(OpCodes.Ret); + + // Exit point - we end up here with the text contains non-ASCII text + il.MarkLabel(labels.ReturnNotAscii); + il.Emit(OpCodes.Ldc_I4, NotAscii); + il.Emit(OpCodes.Ret); + } + + private static void EmitTable( + ILGenerator il, + (string text, int destination)[] entries, + int index, + int length, + Locals locals, + Labels labels, + Methods methods) + { + // We've reached the end of the string. + if (index == length) + { + EmitReturnDestination(il, entries); + return; + } + + // If 4 or more characters remain, and we're vectorizing, we should process 4 characters at a time. + if (length - index >= 4 && locals.UInt64Value != null) + { + EmitVectorizedTable(il, entries, index, length, locals, labels, methods); + return; + } + + // Fall back to processing a character at a time. + EmitSingleCharacterTable(il, entries, index, length, locals, labels, methods); + } + + private static void EmitVectorizedTable( + ILGenerator il, + (string text, int destination)[] entries, + int index, + int length, + Locals locals, + Labels labels, + Methods methods) + { + // Emits code similar to: + // + // uint64Value = Unsafe.ReadUnaligned(ref p); + // p = ref Unsafe.Add(ref p, 8); + // + // if ((uint64Value & ~0x007F007F007F007FUL) == 0) + // { + // return NotAscii; + // } + // uint64LowerIndicator = value + (0x0080008000800080UL - 0x0041004100410041UL); + // uint64UpperIndicator = value + (0x0080008000800080UL - 0x005B005B005B005BUL); + // ulong temp1 = uint64LowerIndicator ^ uint64UpperIndicator + // ulong temp2 = temp1 & 0x0080008000800080UL; + // ulong temp3 = (temp2) >> 2; + // uint64Value = uint64Value ^ temp3; + // + // This is a vectorized non-branching technique for processing 4 utf16 characters + // at a time inside a single uint64. + // + // Similar to: + // https://github.com/GrabYourPitchforks/coreclr/commit/a3c1df25c4225995ffd6b18fd0fc39d6b81fd6a5#diff-d89b6ca07ea349899e45eed5f688a7ebR81 + // + // Basically we need to check if the text is non-ASCII first and bail if it is. + // The rest of the steps will convert the text to lowercase by checking all characters + // at a time to see if they are in the A-Z range, that's where 0x0041 and 0x005B come in. + + // IMPORTANT + // + // If you are modifying this code, be aware that the easiest way to make a mistake is by + // getting the set of casts wrong doing something like: + // + // il.Emit(OpCodes.Ldc_I8, ~0x007F007F007F007FUL); + // + // The IL Emit apis don't have overloads that accept ulong or ushort, and will resolve + // an overload that does an undesirable conversion (for instance convering ulong to float). + // + // IMPORTANT + + // Unsafe.ReadUnaligned(ref p) + il.Emit(OpCodes.Ldloc, locals.P); + il.Emit(OpCodes.Call, methods.ReadUnalignedUInt64); + + // uint64Value = ... + il.Emit(OpCodes.Stloc, locals.UInt64Value); + + // Unsafe.Add(ref p, 8) + il.Emit(OpCodes.Ldloc, locals.P); + il.Emit(OpCodes.Ldc_I4, 8); // 8 bytes were read + il.Emit(OpCodes.Call, methods.Add); + + // p = ref ... + il.Emit(OpCodes.Stloc, locals.P); + + // if ((uint64Value & ~0x007F007F007F007FUL) == 0) + // { + // goto: NotAscii; + // } + il.Emit(OpCodes.Ldloc, locals.UInt64Value); + il.Emit(OpCodes.Ldc_I8, unchecked((long)~0x007F007F007F007FUL)); + il.Emit(OpCodes.And); + il.Emit(OpCodes.Brtrue, labels.ReturnNotAscii); + + // uint64Value + (0x0080008000800080UL - 0x0041004100410041UL) + il.Emit(OpCodes.Ldloc, locals.UInt64Value); + il.Emit(OpCodes.Ldc_I8, unchecked((long)(0x0080008000800080UL - 0x0041004100410041UL))); + il.Emit(OpCodes.Add); + + // uint64LowerIndicator = ... + il.Emit(OpCodes.Stloc, locals.UInt64LowerIndicator); + + // value + (0x0080008000800080UL - 0x005B005B005B005BUL) + il.Emit(OpCodes.Ldloc, locals.UInt64Value); + il.Emit(OpCodes.Ldc_I8, unchecked((long)(0x0080008000800080UL - 0x005B005B005B005BUL))); + il.Emit(OpCodes.Add); + + // uint64UpperIndicator = ... + il.Emit(OpCodes.Stloc, locals.UInt64UpperIndicator); + + // ulongLowerIndicator ^ ulongUpperIndicator + il.Emit(OpCodes.Ldloc, locals.UInt64LowerIndicator); + il.Emit(OpCodes.Ldloc, locals.UInt64UpperIndicator); + il.Emit(OpCodes.Xor); + + // ... & 0x0080008000800080UL + il.Emit(OpCodes.Ldc_I8, unchecked((long)0x0080008000800080UL)); + il.Emit(OpCodes.And); + + // ... >> 2; + il.Emit(OpCodes.Ldc_I4, 2); + il.Emit(OpCodes.Shr_Un); + + // ... ^ uint64Value + il.Emit(OpCodes.Ldloc, locals.UInt64Value); + il.Emit(OpCodes.Xor); + + // uint64Value = ... + il.Emit(OpCodes.Stloc, locals.UInt64Value); + + // Now we generate an 'if' ladder with an entry for each of the unique 64 bit sections + // of the text. + var groups = entries.GroupBy(e => GetUInt64Key(e.text, index)); + foreach (var group in groups) + { + // if (uint64Value == 0x.....) { ... } + var next = il.DefineLabel(); + il.Emit(OpCodes.Ldloc, locals.UInt64Value); + il.Emit(OpCodes.Ldc_I8, unchecked((long)group.Key)); + il.Emit(OpCodes.Bne_Un, next); + + // Process the group + EmitTable(il, group.ToArray(), index + 4, length, locals, labels, methods); + il.MarkLabel(next); + } + + // goto: defaultDestination + il.Emit(OpCodes.Br, labels.ReturnDefault); + } + + private static void EmitSingleCharacterTable( + ILGenerator il, + (string text, int destination)[] entries, + int index, + int length, + Locals locals, + Labels labels, + Methods methods) + { + // See the vectorized code path for a much more thorough explanation. + + // IMPORTANT + // + // If you are modifying this code, be aware that the easiest way to make a mistake is by + // getting the set of casts wrong doing something like: + // + // il.Emit(OpCodes.Ldc_I4, ~0x007F); + // + // The IL Emit apis don't have overloads that accept ulong or ushort, and will resolve + // an overload that does an undesirable conversion (for instance convering ulong to float). + // + // IMPORTANT + + // Unsafe.ReadUnaligned(ref p) + il.Emit(OpCodes.Ldloc, locals.P); + il.Emit(OpCodes.Call, methods.ReadUnalignedUInt16); + + // uint16Value = ... + il.Emit(OpCodes.Stloc, locals.UInt16Value); + + // Unsafe.Add(ref p, 2) + il.Emit(OpCodes.Ldloc, locals.P); + il.Emit(OpCodes.Ldc_I4, 2); // 2 bytes were read + il.Emit(OpCodes.Call, methods.Add); + + // p = ref ... + il.Emit(OpCodes.Stloc, locals.P); + + // if ((uInt16Value & ~0x007FUL) == 0) + // { + // goto: NotAscii; + // } + il.Emit(OpCodes.Ldloc, locals.UInt16Value); + il.Emit(OpCodes.Ldc_I4, unchecked((int)((uint)~0x007F))); + il.Emit(OpCodes.And); + il.Emit(OpCodes.Brtrue, labels.ReturnNotAscii); + + // Since we're handling a single character at a time, it's easier to just + // generate an 'if' with two comparisons instead of doing complicated conversion + // logic. + + // Now we generate an 'if' ladder with an entry for each of the unique + // characters in the group. + var groups = entries.GroupBy(e => GetUInt16Key(e.text, index)); + foreach (var group in groups) + { + // if (uInt16Value == 'A' || uint16Value == 'a') { ... } + var next = il.DefineLabel(); + var inside = il.DefineLabel(); + il.Emit(OpCodes.Ldloc, locals.UInt16Value); + il.Emit(OpCodes.Ldc_I4, unchecked((int)((uint)group.Key))); + il.Emit(OpCodes.Beq, inside); + + var upper = (ushort)char.ToUpperInvariant((char)group.Key); + if (upper != group.Key) + { + il.Emit(OpCodes.Ldloc, locals.UInt16Value); + il.Emit(OpCodes.Ldc_I4, unchecked((int)((uint)upper))); + il.Emit(OpCodes.Beq, inside); + } + + il.Emit(OpCodes.Br, next); + + // Process the group + il.MarkLabel(inside); + EmitTable(il, group.ToArray(), index + 1, length, locals, labels, methods); + il.MarkLabel(next); + } + + // goto: defaultDestination + il.Emit(OpCodes.Br, labels.ReturnDefault); + } + + public static void EmitReturnDestination(ILGenerator il, (string text, int destination)[] entries) + { + Debug.Assert(entries.Length == 1, "We should have a single entry"); + il.Emit(OpCodes.Ldc_I4, entries[0].destination); + il.Emit(OpCodes.Ret); + } + + private static ulong GetUInt64Key(string text, int index) + { + Debug.Assert(index + 4 <= text.Length); + var span = text.ToLowerInvariant().AsSpan(index); + ref var p = ref Unsafe.As(ref MemoryMarshal.GetReference(span)); + return Unsafe.ReadUnaligned(ref p); + } + + private static ushort GetUInt16Key(string text, int index) + { + Debug.Assert(index + 1 <= text.Length); + return (ushort)char.ToLowerInvariant(text[index]); + } + + // We require a special build-time define since this is a testing/debugging + // feature that will litter the app directory with assemblies. +#if IL_EMIT_SAVE_ASSEMBLY + private static void SaveAssembly( + int defaultDestination, + int exitDestination, + (string text, int destination)[] entries, + bool? vectorize) + { + var assemblyName = "Microsoft.AspNetCore.Routing.ILEmitTrie" + DateTime.Now.Ticks; + var fileName = assemblyName + ".dll"; + var assembly = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName(assemblyName), AssemblyBuilderAccess.RunAndSave); + var module = assembly.DefineDynamicModule(assemblyName, fileName); + var type = module.DefineType("ILEmitTrie"); + var method = type.DefineMethod( + "GetDestination", + MethodAttributes.Public | MethodAttributes.Static, + CallingConventions.Standard, + typeof(int), + new [] { typeof(string), typeof(int), typeof(int), }; + + GenerateMethodBody(method.GetILGenerator(), defaultDestination, exitDestination, entries, vectorize); + + type.CreateTypeInfo(); + assembly.Save(fileName); + } +#endif + + private class Locals + { + public Locals(ILGenerator il, bool vectorize) + { + P = il.DeclareLocal(typeof(byte).MakeByRefType()); + Span = il.DeclareLocal(typeof(ReadOnlySpan)); + + UInt16Value = il.DeclareLocal(typeof(ushort)); + + if (vectorize) + { + UInt64Value = il.DeclareLocal(typeof(ulong)); + UInt64LowerIndicator = il.DeclareLocal(typeof(ulong)); + UInt64UpperIndicator = il.DeclareLocal(typeof(ulong)); + } + } + + /// + /// Holds current character when processing a character at a time. + /// + public LocalBuilder UInt16Value { get; } + + /// + /// Holds current character when processing 4 characters at a time. + /// + public LocalBuilder UInt64Value { get; } + + /// + /// Used to covert casing. See comments where it's used. + /// + public LocalBuilder UInt64LowerIndicator { get; } + + /// + /// Used to covert casing. See comments where it's used. + /// + public LocalBuilder UInt64UpperIndicator { get; } + + /// + /// Holds a 'ref byte' reference to the current character (in bytes). + /// + public LocalBuilder P { get; } + + /// + /// Holds the relevant portion of the path as a Span[byte]. + /// + public LocalBuilder Span { get; } + } + + private class Labels + { + /// + /// Label to goto that will return the default destination (not a match). + /// + public Label ReturnDefault { get; set; } + + /// + /// Label to goto that will return a sentinel value for non-ascii text. + /// + public Label ReturnNotAscii { get; set; } + } + + private class Methods + { + // Caching because the methods won't change, if we're being called once we're likely to + // be called again. + public static readonly Methods Instance = new Methods(); + + private Methods() + { + // Can't use GetMethod because the parameter is a generic method parameters. + Add = typeof(Unsafe) + .GetMethods(BindingFlags.Public | BindingFlags.Static) + .Where(m => m.Name == nameof(Unsafe.Add)) + .Where(m => m.GetGenericArguments().Length == 1) + .Where(m => m.GetParameters().Length == 2) + .FirstOrDefault() + ?.MakeGenericMethod(typeof(byte)); + if (Add == null) + { + throw new InvalidOperationException("Failed to find Unsafe.Add{T}(ref T, int)"); + } + + // Can't use GetMethod because the parameter is a generic method parameters. + As = typeof(Unsafe) + .GetMethods(BindingFlags.Public | BindingFlags.Static) + .Where(m => m.Name == nameof(Unsafe.As)) + .Where(m => m.GetGenericArguments().Length == 2) + .Where(m => m.GetParameters().Length == 1) + .FirstOrDefault() + ?.MakeGenericMethod(typeof(char), typeof(byte)); + if (Add == null) + { + throw new InvalidOperationException("Failed to find Unsafe.As{TFrom, TTo}(ref TFrom)"); + } + + AsSpan = typeof(MemoryExtensions).GetMethod( + nameof(MemoryExtensions.AsSpan), + BindingFlags.Public | BindingFlags.Static, + binder: null, + new[] { typeof(string), typeof(int), typeof(int), }, + modifiers: null); + if (AsSpan == null) + { + throw new InvalidOperationException("Failed to find MemoryExtensions.AsSpan(string, int, int)"); + } + + // Can't use GetMethod because the parameter is a generic method parameters. + GetReference = typeof(MemoryMarshal) + .GetMethods(BindingFlags.Public | BindingFlags.Static) + .Where(m => m.Name == nameof(MemoryMarshal.GetReference)) + .Where(m => m.GetGenericArguments().Length == 1) + .Where(m => m.GetParameters().Length == 1) + // Disambiguate between ReadOnlySpan<> and Span<> - this method is overloaded. + .Where(m => m.GetParameters()[0].ParameterType.GetGenericTypeDefinition() == typeof(ReadOnlySpan<>)) + .FirstOrDefault() + ?.MakeGenericMethod(typeof(char)); + if (GetReference == null) + { + throw new InvalidOperationException("Failed to find MemoryMarshal.GetReference{T}(ReadOnlySpan{T})"); + } + + ReadUnalignedUInt64 = typeof(Unsafe).GetMethod( + nameof(Unsafe.ReadUnaligned), + BindingFlags.Public | BindingFlags.Static, + binder: null, + new[] { typeof(byte).MakeByRefType(), }, + modifiers: null) + .MakeGenericMethod(typeof(ulong)); + if (ReadUnalignedUInt64 == null) + { + throw new InvalidOperationException("Failed to find Unsafe.ReadUnaligned{T}(ref byte)"); + } + + ReadUnalignedUInt16 = typeof(Unsafe).GetMethod( + nameof(Unsafe.ReadUnaligned), + BindingFlags.Public | BindingFlags.Static, + binder: null, + new[] { typeof(byte).MakeByRefType(), }, + modifiers: null) + .MakeGenericMethod(typeof(ushort)); + if (ReadUnalignedUInt16 == null) + { + throw new InvalidOperationException("Failed to find Unsafe.ReadUnaligned{T}(ref byte)"); + } + } + + /// + /// - Add[ref byte] + /// + public MethodInfo Add { get; } + + /// + /// - As[char, byte] + /// + public MethodInfo As { get; } + + /// + /// + /// + public MethodInfo AsSpan { get; } + + /// + /// - GetReference[char] + /// + public MethodInfo GetReference { get; } + + /// + /// - ReadUnaligned[ulong] + /// + public MethodInfo ReadUnalignedUInt64 { get; } + + /// + /// - ReadUnaligned[ushort] + /// + public MethodInfo ReadUnalignedUInt16 { get; } + } + } +} + +#endif diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/ILEmitTrieJumpTable.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/ILEmitTrieJumpTable.cs new file mode 100644 index 0000000000..3bd29c9695 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/ILEmitTrieJumpTable.cs @@ -0,0 +1,104 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +#if IL_EMIT + +using System; +using System.Threading; +using System.Threading.Tasks; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // Uses generated IL to implement the JumpTable contract. This approach requires + // a fallback jump table for two reasons: + // 1. We compute the IL lazily to avoid taking up significant time when processing a request + // 2. The generated IL only supports ASCII in the URL path + internal class ILEmitTrieJumpTable : JumpTable + { + private const int NotAscii = int.MinValue; + + private readonly int _defaultDestination; + private readonly int _exitDestination; + private readonly (string text, int destination)[] _entries; + + private readonly bool? _vectorize; + private readonly JumpTable _fallback; + + // Used to protect the initialization of the compiled delegate + private object _lock; + private bool _initializing; + private Task _task; + + // Will be replaced at runtime by the generated code. + // + // Internal for testing + internal Func _getDestination; + + public ILEmitTrieJumpTable( + int defaultDestination, + int exitDestination, + (string text, int destination)[] entries, + bool? vectorize, + JumpTable fallback) + { + _defaultDestination = defaultDestination; + _exitDestination = exitDestination; + _entries = entries; + _vectorize = vectorize; + _fallback = fallback; + + _getDestination = FallbackGetDestination; + } + + public override int GetDestination(string path, PathSegment segment) + { + return _getDestination(path, segment); + } + + // Used when we haven't yet initialized the IL trie. We defer compilation of the IL for startup + // performance. + private int FallbackGetDestination(string path, PathSegment segment) + { + if (path.Length == 0) + { + return _exitDestination; + } + + // We only hit this code path if the IL delegate is still initializing. + LazyInitializer.EnsureInitialized(ref _task, ref _initializing, ref _lock, InitializeILDelegateAsync); + + return _fallback.GetDestination(path, segment); + } + + // Internal for testing + internal async Task InitializeILDelegateAsync() + { + // Offload the creation of the IL delegate to the thread pool. + await Task.Run(() => + { + InitializeILDelegate(); + }); + } + + // Internal for testing + internal void InitializeILDelegate() + { + var generated = ILEmitTrieFactory.Create(_defaultDestination, _exitDestination, _entries, _vectorize); + _getDestination = (string path, PathSegment segment) => + { + if (segment.Length == 0) + { + return _exitDestination; + } + + var result = generated(path, segment.Start, segment.Length); + if (result == ILEmitTrieFactory.NotAscii) + { + result = _fallback.GetDestination(path, segment); + } + + return result; + }; + } + } +} +#endif diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/INodeBuilderPolicy.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/INodeBuilderPolicy.cs new file mode 100644 index 0000000000..0790c5f295 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/INodeBuilderPolicy.cs @@ -0,0 +1,17 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public interface INodeBuilderPolicy + { + bool AppliesToEndpoints(IReadOnlyList endpoints); + + IReadOnlyList GetEdges(IReadOnlyList endpoints); + + PolicyJumpTable BuildJumpTable(int exitDestination, IReadOnlyList edges); + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/JumpTable.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/JumpTable.cs new file mode 100644 index 0000000000..860ca80417 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/JumpTable.cs @@ -0,0 +1,18 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Diagnostics; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + [DebuggerDisplay("{DebuggerToString(),nq}")] + internal abstract class JumpTable + { + public abstract int GetDestination(string path, PathSegment segment); + + public virtual string DebuggerToString() + { + return GetType().Name; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/JumpTableBuilder.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/JumpTableBuilder.cs new file mode 100644 index 0000000000..efee38f0f1 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/JumpTableBuilder.cs @@ -0,0 +1,94 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal static class JumpTableBuilder + { + public static readonly int InvalidDestination = -1; + + public static JumpTable Build(int defaultDestination, int exitDestination, (string text, int destination)[] pathEntries) + { + if (defaultDestination == InvalidDestination) + { + var message = $"{nameof(defaultDestination)} is not set. Please report this as a bug."; + throw new InvalidOperationException(message); + } + + if (exitDestination == InvalidDestination) + { + var message = $"{nameof(exitDestination)} is not set. Please report this as a bug."; + throw new InvalidOperationException(message); + } + + // The JumpTable implementation is chosen based on the number of entries. + // + // Basically the concerns that we're juggling here are that different implementations + // make sense depending on the characteristics of the entries. + // + // On netcoreapp we support IL generation of optimized tries that is much faster + // than anything we can do with string.Compare or dictionaries. However the IL emit + // strategy requires us to produce a fallback jump table - see comments on the class. + + // We have an optimized fast path for zero entries since we don't have to + // do any string comparisons. + if (pathEntries == null || pathEntries.Length == 0) + { + return new ZeroEntryJumpTable(defaultDestination, exitDestination); + } + + // The IL Emit jump table is not faster for a single entry - but we have an optimized version when all text + // is ASCII + if (pathEntries.Length == 1 && Ascii.IsAscii(pathEntries[0].text)) + { + var entry = pathEntries[0]; + return new SingleEntryAsciiJumpTable(defaultDestination, exitDestination, entry.text, entry.destination); + } + + // We have a fallback that works for non-ASCII + if (pathEntries.Length == 1) + { + var entry = pathEntries[0]; + return new SingleEntryJumpTable(defaultDestination, exitDestination, entry.text, entry.destination); + } + + // We choose a hard upper bound of 100 as the limit for when we switch to a dictionary + // over a trie. The reason is that while the dictionary has a bigger constant factor, + // it is O(1) vs a trie which is O(M * log(N)). Our perf testing shows that the trie + // is better for ~90 entries based on all of Azure's route table. Anything above 100 edges + // we'd consider to be a very very large node, and so while we don't think anyone will + // have a node this large in practice, we want to make sure the performance is reasonable + // for any size. + // + // Additionally if we're on 32bit, the scalability is worse, so switch to the dictionary at 50 + // entries. + var threshold = IntPtr.Size == 8 ? 100 : 50; + if (pathEntries.Length >= threshold) + { + return new DictionaryJumpTable(defaultDestination, exitDestination, pathEntries); + } + + // If we have more than a single string, the IL emit strategy is the fastest - but we need to decide + // what do for the fallback case. + JumpTable fallback; + + // Based on our testing a linear search is still faster than a dictionary at ten entries. + if (pathEntries.Length <= 10) + { + fallback = new LinearSearchJumpTable(defaultDestination, exitDestination, pathEntries); + } + else + { + fallback = new DictionaryJumpTable(defaultDestination, exitDestination, pathEntries); + } + +#if IL_EMIT + return new ILEmitTrieJumpTable(defaultDestination, exitDestination, pathEntries, vectorize: null, fallback); +#else + return fallback; +#endif + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/LinearSearchJumpTable.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/LinearSearchJumpTable.cs new file mode 100644 index 0000000000..58f8b3d01d --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/LinearSearchJumpTable.cs @@ -0,0 +1,72 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Linq; +using System.Text; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal class LinearSearchJumpTable : JumpTable + { + private readonly int _defaultDestination; + private readonly int _exitDestination; + private readonly (string text, int destination)[] _entries; + + public LinearSearchJumpTable( + int defaultDestination, + int exitDestination, + (string text, int destination)[] entries) + { + _defaultDestination = defaultDestination; + _exitDestination = exitDestination; + _entries = entries; + } + + public override int GetDestination(string path, PathSegment segment) + { + if (segment.Length == 0) + { + return _exitDestination; + } + + var entries = _entries; + for (var i = 0; i < entries.Length; i++) + { + var text = entries[i].text; + if (segment.Length == text.Length && + string.Compare( + path, + segment.Start, + text, + 0, + segment.Length, + StringComparison.OrdinalIgnoreCase) == 0) + { + return entries[i].destination; + } + } + + return _defaultDestination; + } + + public override string DebuggerToString() + { + var builder = new StringBuilder(); + builder.Append("{ "); + + builder.Append(string.Join(", ", _entries.Select(e => $"{e.text}: {e.destination}"))); + + builder.Append("$+: "); + builder.Append(_defaultDestination); + builder.Append(", "); + + builder.Append("$0: "); + builder.Append(_defaultDestination); + + builder.Append(" }"); + + return builder.ToString(); + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/Matcher.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/Matcher.cs new file mode 100644 index 0000000000..b713e4bdf3 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/Matcher.cs @@ -0,0 +1,26 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + /// + /// An interface for components that can select an given the current request, as part + /// of the execution of . + /// + internal abstract class Matcher + { + /// + /// Attempts to asynchronously select an for the current request. + /// + /// The associated with the current request. + /// + /// The associated with the current request. The + /// will be mutated to contain the result of the operation. + /// A which represents the asynchronous completion of the operation. + public abstract Task MatchAsync(HttpContext httpContext, EndpointSelectorContext context); + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/MatcherBuilder.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/MatcherBuilder.cs new file mode 100644 index 0000000000..c8368d0456 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/MatcherBuilder.cs @@ -0,0 +1,12 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal abstract class MatcherBuilder + { + public abstract void AddEndpoint(RouteEndpoint endpoint); + + public abstract Matcher Build(); + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/MatcherFactory.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/MatcherFactory.cs new file mode 100644 index 0000000000..b6da9f0915 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/MatcherFactory.cs @@ -0,0 +1,10 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal abstract class MatcherFactory + { + public abstract Matcher CreateMatcher(EndpointDataSource dataSource); + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/MatcherPolicy.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/MatcherPolicy.cs new file mode 100644 index 0000000000..05a654efd9 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/MatcherPolicy.cs @@ -0,0 +1,28 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Routing.Matching; + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Defines a policy that applies behaviors to the URL matcher. Implementations + /// of and related interfaces must be registered + /// in the dependency injection container as singleton services of type + /// . + /// + /// + /// implementations can implement the following + /// interfaces , , + /// and . + /// + public abstract class MatcherPolicy + { + /// + /// Gets a value that determines the order the should + /// be applied. Policies are applied in ascending numeric value of the + /// property. + /// + public abstract int Order { get; } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/PathSegment.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/PathSegment.cs new file mode 100644 index 0000000000..a5f570f8b5 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/PathSegment.cs @@ -0,0 +1,39 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal readonly struct PathSegment : IEquatable + { + public readonly int Start; + public readonly int Length; + + public PathSegment(int start, int length) + { + Start = start; + Length = length; + } + + public override bool Equals(object obj) + { + return obj is PathSegment segment ? Equals(segment) : false; + } + + public bool Equals(PathSegment other) + { + return Start == other.Start && Length == other.Length; + } + + public override int GetHashCode() + { + return Start; + } + + public override string ToString() + { + return $"Segment({Start}:{Length})"; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/PolicyJumpTable.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/PolicyJumpTable.cs new file mode 100644 index 0000000000..e7c5a8f582 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/PolicyJumpTable.cs @@ -0,0 +1,17 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public abstract class PolicyJumpTable + { + public abstract int GetDestination(HttpContext httpContext); + + internal virtual string DebuggerToString() + { + return GetType().Name; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/PolicyJumpTableEdge.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/PolicyJumpTableEdge.cs new file mode 100644 index 0000000000..002ffae583 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/PolicyJumpTableEdge.cs @@ -0,0 +1,18 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public readonly struct PolicyJumpTableEdge + { + public PolicyJumpTableEdge(object state, int destination) + { + State = state ?? throw new System.ArgumentNullException(nameof(state)); + Destination = destination; + } + + public object State { get; } + + public int Destination { get; } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/PolicyNodeEdge.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/PolicyNodeEdge.cs new file mode 100644 index 0000000000..419c390e05 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/PolicyNodeEdge.cs @@ -0,0 +1,21 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public readonly struct PolicyNodeEdge + { + public PolicyNodeEdge(object state, IReadOnlyList endpoints) + { + State = state ?? throw new System.ArgumentNullException(nameof(state)); + Endpoints = endpoints ?? throw new System.ArgumentNullException(nameof(endpoints)); + } + + public IReadOnlyList Endpoints { get; } + + public object State { get; } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/SingleEntryAsciiJumpTable.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/SingleEntryAsciiJumpTable.cs new file mode 100644 index 0000000000..5ca0bab566 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/SingleEntryAsciiJumpTable.cs @@ -0,0 +1,55 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Runtime.CompilerServices; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // Optimized implementation for cases where we know that we're + // comparing to ASCII. + internal class SingleEntryAsciiJumpTable : JumpTable + { + private readonly int _defaultDestination; + private readonly int _exitDestination; + private readonly string _text; + private readonly int _destination; + + public SingleEntryAsciiJumpTable( + int defaultDestination, + int exitDestination, + string text, + int destination) + { + _defaultDestination = defaultDestination; + _exitDestination = exitDestination; + _text = text; + _destination = destination; + } + + public unsafe override int GetDestination(string path, PathSegment segment) + { + var length = segment.Length; + if (length == 0) + { + return _exitDestination; + } + + var text = _text; + if (length != text.Length) + { + return _defaultDestination; + } + + var a = path.AsSpan(segment.Start, length); + var b = text.AsSpan(); + + return Ascii.AsciiIgnoreCaseEquals(a, b, length) ? _destination : _defaultDestination; + } + + public override string DebuggerToString() + { + return $"{{ {_text}: {_destination}, $+: {_defaultDestination}, $0: {_exitDestination} }}"; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/SingleEntryJumpTable.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/SingleEntryJumpTable.cs new file mode 100644 index 0000000000..3901807ce5 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/SingleEntryJumpTable.cs @@ -0,0 +1,54 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal class SingleEntryJumpTable : JumpTable + { + private readonly int _defaultDestination; + private readonly int _exitDestination; + private readonly string _text; + private readonly int _destination; + + public SingleEntryJumpTable( + int defaultDestination, + int exitDestination, + string text, + int destination) + { + _defaultDestination = defaultDestination; + _exitDestination = exitDestination; + _text = text; + _destination = destination; + } + + public override int GetDestination(string path, PathSegment segment) + { + if (segment.Length == 0) + { + return _exitDestination; + } + + if (segment.Length == _text.Length && + string.Compare( + path, + segment.Start, + _text, + 0, + segment.Length, + StringComparison.OrdinalIgnoreCase) == 0) + { + return _destination; + } + + return _defaultDestination; + } + + public override string DebuggerToString() + { + return $"{{ {_text}: {_destination}, $+: {_defaultDestination}, $0: {_exitDestination} }}"; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/ZeroEntryJumpTable.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/ZeroEntryJumpTable.cs new file mode 100644 index 0000000000..a2100662e1 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Matching/ZeroEntryJumpTable.cs @@ -0,0 +1,27 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal class ZeroEntryJumpTable : JumpTable + { + private readonly int _defaultDestination; + private readonly int _exitDestination; + + public ZeroEntryJumpTable(int defaultDestination, int exitDestination) + { + _defaultDestination = defaultDestination; + _exitDestination = exitDestination; + } + + public override int GetDestination(string path, PathSegment segment) + { + return segment.Length == 0 ? _exitDestination : _defaultDestination; + } + + public override string DebuggerToString() + { + return $"{{ $+: {_defaultDestination}, $0: {_exitDestination} }}"; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Microsoft.AspNetCore.Routing.csproj b/src/Routing/src/Microsoft.AspNetCore.Routing/Microsoft.AspNetCore.Routing.csproj index f1e3d36a55..a2ff4ab1ba 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Microsoft.AspNetCore.Routing.csproj +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Microsoft.AspNetCore.Routing.csproj @@ -4,10 +4,23 @@ Commonly used types: Microsoft.AspNetCore.Routing.Route Microsoft.AspNetCore.Routing.RouteCollection - netstandard2.0 + netstandard2.0;netcoreapp2.2 $(NoWarn);CS1591 true aspnetcore;routing + true + + + + + true + false + IL_EMIT;$(DefineConstants) + IL_EMIT_SAVE_ASSEMBLIES;$(DefineConstants) diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/ParameterPolicyFactory.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/ParameterPolicyFactory.cs new file mode 100644 index 0000000000..cd875fc907 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/ParameterPolicyFactory.cs @@ -0,0 +1,60 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Diagnostics; +using Microsoft.AspNetCore.Routing.Patterns; + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Defines an abstraction for resolving inline parameter policies as instances of . + /// + public abstract class ParameterPolicyFactory + { + /// + /// Creates a parameter policy. + /// + /// The parameter the parameter policy is being created for. + /// The inline text to resolve. + /// The for the parameter. + public abstract IParameterPolicy Create(RoutePatternParameterPart parameter, string inlineText); + + /// + /// Creates a parameter policy. + /// + /// The parameter the parameter policy is being created for. + /// An existing parameter policy. + /// The for the parameter. + public abstract IParameterPolicy Create(RoutePatternParameterPart parameter, IParameterPolicy parameterPolicy); + + /// + /// Creates a parameter policy. + /// + /// The parameter the parameter policy is being created for. + /// The reference to resolve. + /// The for the parameter. + public IParameterPolicy Create(RoutePatternParameterPart parameter, RoutePatternParameterPolicyReference reference) + { + if (reference == null) + { + throw new ArgumentNullException(nameof(reference)); + } + + Debug.Assert(reference.ParameterPolicy != null || reference.Content != null); + + if (reference.ParameterPolicy != null) + { + return Create(parameter, reference.ParameterPolicy); + } + + if (reference.Content != null) + { + return Create(parameter, reference.Content); + } + + // Unreachable + throw new NotSupportedException(); + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RouteParameterParser.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RouteParameterParser.cs new file mode 100644 index 0000000000..49860dcb0f --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RouteParameterParser.cs @@ -0,0 +1,261 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Microsoft.AspNetCore.Routing.Patterns +{ + internal static class RouteParameterParser + { + // This code parses the inside of the route parameter + // + // Ex: {hello} - this method is responsible for parsing 'hello' + // The factoring between this class and RoutePatternParser is due to legacy. + public static RoutePatternParameterPart ParseRouteParameter(string parameter) + { + if (parameter == null) + { + throw new ArgumentNullException(nameof(parameter)); + } + + if (parameter.Length == 0) + { + return new RoutePatternParameterPart(string.Empty, null, RoutePatternParameterKind.Standard, Array.Empty()); + } + + var startIndex = 0; + var endIndex = parameter.Length - 1; + var encodeSlashes = true; + + var parameterKind = RoutePatternParameterKind.Standard; + + if (parameter.StartsWith("**", StringComparison.Ordinal)) + { + encodeSlashes = false; + parameterKind = RoutePatternParameterKind.CatchAll; + startIndex += 2; + } + else if (parameter[0] == '*') + { + parameterKind = RoutePatternParameterKind.CatchAll; + startIndex++; + } + + if (parameter[endIndex] == '?') + { + parameterKind = RoutePatternParameterKind.Optional; + endIndex--; + } + + var currentIndex = startIndex; + + // Parse parameter name + var parameterName = string.Empty; + + while (currentIndex <= endIndex) + { + var currentChar = parameter[currentIndex]; + + if ((currentChar == ':' || currentChar == '=') && startIndex != currentIndex) + { + // Parameter names are allowed to start with delimiters used to denote constraints or default values. + // i.e. "=foo" or ":bar" would be treated as parameter names rather than default value or constraint + // specifications. + parameterName = parameter.Substring(startIndex, currentIndex - startIndex); + + // Roll the index back and move to the constraint parsing stage. + currentIndex--; + break; + } + else if (currentIndex == endIndex) + { + parameterName = parameter.Substring(startIndex, currentIndex - startIndex + 1); + } + + currentIndex++; + } + + var parseResults = ParseConstraints(parameter, parameterName, currentIndex, endIndex); + currentIndex = parseResults.CurrentIndex; + + string defaultValue = null; + if (currentIndex <= endIndex && + parameter[currentIndex] == '=') + { + defaultValue = parameter.Substring(currentIndex + 1, endIndex - currentIndex); + } + + return new RoutePatternParameterPart( + parameterName, + defaultValue, + parameterKind, + parseResults.ParameterPolicies.ToArray(), + encodeSlashes); + } + + private static ParameterPolicyParseResults ParseConstraints( + string text, + string parameterName, + int currentIndex, + int endIndex) + { + var constraints = new List(); + var state = ParseState.Start; + var startIndex = currentIndex; + do + { + var currentChar = currentIndex > endIndex ? null : (char?)text[currentIndex]; + switch (state) + { + case ParseState.Start: + switch (currentChar) + { + case null: + state = ParseState.End; + break; + case ':': + state = ParseState.ParsingName; + startIndex = currentIndex + 1; + break; + case '(': + state = ParseState.InsideParenthesis; + break; + case '=': + state = ParseState.End; + currentIndex--; + break; + } + break; + case ParseState.InsideParenthesis: + switch (currentChar) + { + case null: + state = ParseState.End; + var constraintText = text.Substring(startIndex, currentIndex - startIndex); + constraints.Add(RoutePatternFactory.ParameterPolicy(constraintText)); + break; + case ')': + // Only consume a ')' token if + // (a) it is the last token + // (b) the next character is the start of the new constraint ':' + // (c) the next character is the start of the default value. + + var nextChar = currentIndex + 1 > endIndex ? null : (char?)text[currentIndex + 1]; + switch (nextChar) + { + case null: + state = ParseState.End; + constraintText = text.Substring(startIndex, currentIndex - startIndex + 1); + constraints.Add(RoutePatternFactory.ParameterPolicy(constraintText)); + break; + case ':': + state = ParseState.Start; + constraintText = text.Substring(startIndex, currentIndex - startIndex + 1); + constraints.Add(RoutePatternFactory.ParameterPolicy(constraintText)); + startIndex = currentIndex + 1; + break; + case '=': + state = ParseState.End; + constraintText = text.Substring(startIndex, currentIndex - startIndex + 1); + constraints.Add(RoutePatternFactory.ParameterPolicy(constraintText)); + break; + } + break; + case ':': + case '=': + // In the original implementation, the Regex would've backtracked if it encountered an + // unbalanced opening bracket followed by (not necessarily immediatiely) a delimiter. + // Simply verifying that the parantheses will eventually be closed should suffice to + // determine if the terminator needs to be consumed as part of the current constraint + // specification. + var indexOfClosingParantheses = text.IndexOf(')', currentIndex + 1); + if (indexOfClosingParantheses == -1) + { + constraintText = text.Substring(startIndex, currentIndex - startIndex); + constraints.Add(RoutePatternFactory.ParameterPolicy(constraintText)); + + if (currentChar == ':') + { + state = ParseState.ParsingName; + startIndex = currentIndex + 1; + } + else + { + state = ParseState.End; + currentIndex--; + } + } + else + { + currentIndex = indexOfClosingParantheses; + } + + break; + } + break; + case ParseState.ParsingName: + switch (currentChar) + { + case null: + state = ParseState.End; + var constraintText = text.Substring(startIndex, currentIndex - startIndex); + if (constraintText.Length > 0) + { + constraints.Add(RoutePatternFactory.ParameterPolicy(constraintText)); + } + break; + case ':': + constraintText = text.Substring(startIndex, currentIndex - startIndex); + if (constraintText.Length > 0) + { + constraints.Add(RoutePatternFactory.ParameterPolicy(constraintText)); + } + startIndex = currentIndex + 1; + break; + case '(': + state = ParseState.InsideParenthesis; + break; + case '=': + state = ParseState.End; + constraintText = text.Substring(startIndex, currentIndex - startIndex); + if (constraintText.Length > 0) + { + constraints.Add(RoutePatternFactory.ParameterPolicy(constraintText)); + } + currentIndex--; + break; + } + break; + } + + currentIndex++; + + } while (state != ParseState.End); + + return new ParameterPolicyParseResults(currentIndex, constraints); + } + + private enum ParseState + { + Start, + ParsingName, + InsideParenthesis, + End + } + + private readonly struct ParameterPolicyParseResults + { + public readonly int CurrentIndex; + + public readonly IReadOnlyList ParameterPolicies; + + public ParameterPolicyParseResults(int currentIndex, IReadOnlyList parameterPolicies) + { + CurrentIndex = currentIndex; + ParameterPolicies = parameterPolicies; + } + } + } +} \ No newline at end of file diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePattern.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePattern.cs new file mode 100644 index 0000000000..1f1bf7ee0a --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePattern.cs @@ -0,0 +1,118 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using Microsoft.AspNetCore.Routing.Template; + +namespace Microsoft.AspNetCore.Routing.Patterns +{ + /// + /// Represents a parsed route template with default values and constraints. + /// Use to create + /// instances. Instances of are immutable. + /// + [DebuggerDisplay("{DebuggerToString()}")] + public sealed class RoutePattern + { + private const string SeparatorString = "/"; + + internal RoutePattern( + string rawText, + IReadOnlyDictionary defaults, + IReadOnlyDictionary> parameterPolicies, + IReadOnlyList parameters, + IReadOnlyList pathSegments) + { + Debug.Assert(defaults != null); + Debug.Assert(parameterPolicies != null); + Debug.Assert(parameters != null); + Debug.Assert(pathSegments != null); + + RawText = rawText; + Defaults = defaults; + ParameterPolicies = parameterPolicies; + Parameters = parameters; + PathSegments = pathSegments; + + InboundPrecedence = RoutePrecedence.ComputeInbound(this); + OutboundPrecedence = RoutePrecedence.ComputeOutbound(this); + } + + /// + /// Gets the set of default values for the route pattern. + /// The keys of are the route parameter names. + /// + public IReadOnlyDictionary Defaults { get; } + + /// + /// Gets the set of parameter policy references for the route pattern. + /// The keys of are the route parameter names. + /// + public IReadOnlyDictionary> ParameterPolicies { get; } + + /// + /// Gets the precedence value of the route pattern for URL matching. + /// + /// + /// Precedence is a computed value based on the structure of the route pattern + /// used for building URL matching data structures. + /// + public decimal InboundPrecedence { get; } + + /// + /// Gets the precedence value of the route pattern for URL generation. + /// + /// + /// Precedence is a computed value based on the structure of the route pattern + /// used for building URL generation data structures. + /// + public decimal OutboundPrecedence { get; } + + /// + /// Gets the raw text supplied when parsing the route pattern. May be null. + /// + public string RawText { get; } + + /// + /// Gets the list of route parameters. + /// + public IReadOnlyList Parameters { get; } + + /// + /// Gets the list of path segments. + /// + public IReadOnlyList PathSegments { get; } + + /// + /// Gets the parameter matching the given name. + /// + /// The name of the parameter to match. + /// The matching parameter or null if no parameter matches the given name. + public RoutePatternParameterPart GetParameter(string name) + { + if (name == null) + { + throw new ArgumentNullException(nameof(name)); + } + + for (var i = 0; i < Parameters.Count; i++) + { + var parameter = Parameters[i]; + if (string.Equals(parameter.Name, name, StringComparison.OrdinalIgnoreCase)) + { + return parameter; + } + } + + return null; + } + + private string DebuggerToString() + { + return RawText ?? string.Join(SeparatorString, PathSegments.Select(s => s.DebuggerToString())); + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternException.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternException.cs new file mode 100644 index 0000000000..7b21ac0ac5 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternException.cs @@ -0,0 +1,58 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Runtime.Serialization; + +namespace Microsoft.AspNetCore.Routing.Patterns +{ + /// + /// An exception that is thrown for error constructing a . + /// + [Serializable] + public sealed class RoutePatternException : Exception + { + private RoutePatternException(SerializationInfo info, StreamingContext context) + : base(info, context) + { + Pattern = (string)info.GetValue(nameof(Pattern), typeof(string)); + } + + /// + /// Creates a new instance of . + /// + /// The route pattern as raw text. + /// The exception message. + public RoutePatternException(string pattern, string message) + : base(message) + { + if (pattern == null) + { + throw new ArgumentNullException(nameof(pattern)); + } + + if (message == null) + { + throw new ArgumentNullException(nameof(message)); + } + + Pattern = pattern; + } + + /// + /// Gets the route pattern associated with this exception. + /// + public string Pattern { get; } + + /// + /// Populates a with the data needed to serialize the target object. + /// + /// The to populate with data. + /// The destination () for this serialization. + public override void GetObjectData(SerializationInfo info, StreamingContext context) + { + info.AddValue(nameof(Pattern), Pattern); + base.GetObjectData(info, context); + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternFactory.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternFactory.cs new file mode 100644 index 0000000000..2f755a08e9 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternFactory.cs @@ -0,0 +1,806 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using Microsoft.AspNetCore.Routing.Constraints; + +namespace Microsoft.AspNetCore.Routing.Patterns +{ + /// + /// Contains factory methods for creating and related types. + /// Use to parse a route pattern in + /// string format. + /// + public static class RoutePatternFactory + { + private static readonly IReadOnlyDictionary EmptyDefaultsDictionary = + new ReadOnlyDictionary(new Dictionary()); + + private static readonly IReadOnlyDictionary> EmptyPoliciesDictionary = + new ReadOnlyDictionary>(new Dictionary>()); + + /// + /// Creates a from its string representation. + /// + /// The route pattern string to parse. + /// The . + public static RoutePattern Parse(string pattern) + { + if (pattern == null) + { + throw new ArgumentNullException(nameof(pattern)); + } + + return RoutePatternParser.Parse(pattern); + } + + /// + /// Creates a from its string representation along + /// with provided default values and parameter policies. + /// + /// The route pattern string to parse. + /// + /// Additional default values to associated with the route pattern. May be null. + /// The provided object will be converted to key-value pairs using + /// and then merged into the parsed route pattern. + /// + /// + /// Additional parameter policies to associated with the route pattern. May be null. + /// The provided object will be converted to key-value pairs using + /// and then merged into the parsed route pattern. + /// + /// The . + public static RoutePattern Parse(string pattern, object defaults, object parameterPolicies) + { + if (pattern == null) + { + throw new ArgumentNullException(nameof(pattern)); + } + + var original = RoutePatternParser.Parse(pattern); + return Pattern(original.RawText, defaults, parameterPolicies, original.PathSegments); + } + + /// + /// Creates a new instance of from a collection of segments. + /// + /// The collection of segments. + /// The . + public static RoutePattern Pattern(IEnumerable segments) + { + if (segments == null) + { + throw new ArgumentNullException(nameof(segments)); + } + + return PatternCore(null, null, null, segments); + } + + /// + /// Creates a new instance of from a collection of segments. + /// + /// The raw text to associate with the route pattern. May be null. + /// The collection of segments. + /// The . + public static RoutePattern Pattern(string rawText, IEnumerable segments) + { + if (segments == null) + { + throw new ArgumentNullException(nameof(segments)); + } + + return PatternCore(rawText, null, null, segments); + } + + /// + /// Creates a from a collection of segments along + /// with provided default values and parameter policies. + /// + /// + /// Additional default values to associated with the route pattern. May be null. + /// The provided object will be converted to key-value pairs using + /// and then merged into the route pattern. + /// + /// + /// Additional parameter policies to associated with the route pattern. May be null. + /// The provided object will be converted to key-value pairs using + /// and then merged into the route pattern. + /// + /// The collection of segments. + /// The . + public static RoutePattern Pattern( + object defaults, + object parameterPolicies, + IEnumerable segments) + { + if (segments == null) + { + throw new ArgumentNullException(nameof(segments)); + } + + return PatternCore(null, new RouteValueDictionary(defaults), new RouteValueDictionary(parameterPolicies), segments); + } + + /// + /// Creates a from a collection of segments along + /// with provided default values and parameter policies. + /// + /// The raw text to associate with the route pattern. + /// + /// Additional default values to associated with the route pattern. May be null. + /// The provided object will be converted to key-value pairs using + /// and then merged into the route pattern. + /// + /// + /// Additional parameter policies to associated with the route pattern. May be null. + /// The provided object will be converted to key-value pairs using + /// and then merged into the route pattern. + /// + /// The collection of segments. + /// The . + public static RoutePattern Pattern( + string rawText, + object defaults, + object parameterPolicies, + IEnumerable segments) + { + if (segments == null) + { + throw new ArgumentNullException(nameof(segments)); + } + + return PatternCore(rawText, new RouteValueDictionary(defaults), new RouteValueDictionary(parameterPolicies), segments); + } + + /// + /// Creates a new instance of from a collection of segments. + /// + /// The collection of segments. + /// The . + public static RoutePattern Pattern(params RoutePatternPathSegment[] segments) + { + if (segments == null) + { + throw new ArgumentNullException(nameof(segments)); + } + + return PatternCore(null, null, null, segments); + } + + /// + /// Creates a new instance of from a collection of segments. + /// + /// The raw text to associate with the route pattern. May be null. + /// The collection of segments. + /// The . + public static RoutePattern Pattern(string rawText, params RoutePatternPathSegment[] segments) + { + if (segments == null) + { + throw new ArgumentNullException(nameof(segments)); + } + + return PatternCore(rawText, null, null, segments); + } + + /// + /// Creates a from a collection of segments along + /// with provided default values and parameter policies. + /// + /// + /// Additional default values to associated with the route pattern. May be null. + /// The provided object will be converted to key-value pairs using + /// and then merged into the route pattern. + /// + /// + /// Additional parameter policies to associated with the route pattern. May be null. + /// The provided object will be converted to key-value pairs using + /// and then merged into the route pattern. + /// + /// The collection of segments. + /// The . + public static RoutePattern Pattern( + object defaults, + object parameterPolicies, + params RoutePatternPathSegment[] segments) + { + if (segments == null) + { + throw new ArgumentNullException(nameof(segments)); + } + + return PatternCore(null, new RouteValueDictionary(defaults), new RouteValueDictionary(parameterPolicies), segments); + } + + /// + /// Creates a from a collection of segments along + /// with provided default values and parameter policies. + /// + /// The raw text to associate with the route pattern. + /// + /// Additional default values to associated with the route pattern. May be null. + /// The provided object will be converted to key-value pairs using + /// and then merged into the route pattern. + /// + /// + /// Additional parameter policies to associated with the route pattern. May be null. + /// The provided object will be converted to key-value pairs using + /// and then merged into the route pattern. + /// + /// The collection of segments. + /// The . + public static RoutePattern Pattern( + string rawText, + object defaults, + object parameterPolicies, + params RoutePatternPathSegment[] segments) + { + if (segments == null) + { + throw new ArgumentNullException(nameof(segments)); + } + + return PatternCore(rawText, new RouteValueDictionary(defaults), new RouteValueDictionary(parameterPolicies), segments); + } + + private static RoutePattern PatternCore( + string rawText, + RouteValueDictionary defaults, + RouteValueDictionary parameterPolicies, + IEnumerable segments) + { + // We want to merge the segment data with the 'out of line' defaults and parameter policies. + // + // This means that for parameters that have 'out of line' defaults we will modify + // the parameter to contain the default (same story for parameter policies). + // + // We also maintain a collection of defaults and parameter policies that will also + // contain the values that don't match a parameter. + // + // It's important that these two views of the data are consistent. We don't want + // values specified out of line to have a different behavior. + + Dictionary updatedDefaults = null; + if (defaults != null && defaults.Count > 0) + { + updatedDefaults = new Dictionary(defaults.Count, StringComparer.OrdinalIgnoreCase); + + foreach (var kvp in defaults) + { + updatedDefaults.Add(kvp.Key, kvp.Value); + } + } + + Dictionary> updatedParameterPolicies = null; + if (parameterPolicies != null && parameterPolicies.Count > 0) + { + updatedParameterPolicies = new Dictionary>(parameterPolicies.Count, StringComparer.OrdinalIgnoreCase); + + foreach (var kvp in parameterPolicies) + { + updatedParameterPolicies.Add(kvp.Key, new List() + { + kvp.Value is IParameterPolicy parameterPolicy + ? ParameterPolicy(parameterPolicy) + : Constraint(kvp.Value), // Constraint will convert string values into regex constraints + }); + } + } + + List parameters = null; + var updatedSegments = segments.ToArray(); + for (var i = 0; i < updatedSegments.Length; i++) + { + var segment = VisitSegment(updatedSegments[i]); + updatedSegments[i] = segment; + + for (var j = 0; j < segment.Parts.Count; j++) + { + if (segment.Parts[j] is RoutePatternParameterPart parameter) + { + if (parameters == null) + { + parameters = new List(); + } + + parameters.Add(parameter); + } + } + } + + return new RoutePattern( + rawText, + updatedDefaults ?? EmptyDefaultsDictionary, + updatedParameterPolicies != null + ? updatedParameterPolicies.ToDictionary(kvp => kvp.Key, kvp => (IReadOnlyList)kvp.Value.ToArray()) + : EmptyPoliciesDictionary, + (IReadOnlyList)parameters ?? Array.Empty(), + updatedSegments); + + RoutePatternPathSegment VisitSegment(RoutePatternPathSegment segment) + { + RoutePatternPart[] updatedParts = null; + for (var i = 0; i < segment.Parts.Count; i++) + { + var part = segment.Parts[i]; + var updatedPart = VisitPart(part); + + if (part != updatedPart) + { + if (updatedParts == null) + { + updatedParts = segment.Parts.ToArray(); + } + + updatedParts[i] = updatedPart; + } + } + + if (updatedParts == null) + { + // Segment has not changed + return segment; + } + + return new RoutePatternPathSegment(updatedParts); + } + + RoutePatternPart VisitPart(RoutePatternPart part) + { + if (!part.IsParameter) + { + return part; + } + + var parameter = (RoutePatternParameterPart)part; + var @default = parameter.Default; + + if (updatedDefaults != null && updatedDefaults.TryGetValue(parameter.Name, out var newDefault)) + { + if (parameter.Default != null && !Equals(newDefault, parameter.Default)) + { + var message = Resources.FormatTemplateRoute_CannotHaveDefaultValueSpecifiedInlineAndExplicitly(parameter.Name); + throw new InvalidOperationException(message); + } + + if (parameter.IsOptional) + { + var message = Resources.TemplateRoute_OptionalCannotHaveDefaultValue; + throw new InvalidOperationException(message); + } + + @default = newDefault; + } + + if (parameter.Default != null) + { + if (updatedDefaults == null) + { + updatedDefaults = new Dictionary(StringComparer.OrdinalIgnoreCase); + } + + updatedDefaults[parameter.Name] = parameter.Default; + } + + List parameterConstraints = null; + if ((updatedParameterPolicies == null || !updatedParameterPolicies.TryGetValue(parameter.Name, out parameterConstraints)) && + parameter.ParameterPolicies.Count > 0) + { + if (updatedParameterPolicies == null) + { + updatedParameterPolicies = new Dictionary>(StringComparer.OrdinalIgnoreCase); + } + + parameterConstraints = new List(); + updatedParameterPolicies.Add(parameter.Name, parameterConstraints); + } + + if (parameter.ParameterPolicies.Count > 0) + { + parameterConstraints.AddRange(parameter.ParameterPolicies); + } + + if (Equals(parameter.Default, @default) + && parameter.ParameterPolicies.Count == 0 + && (parameterConstraints?.Count ?? 0) == 0) + { + // Part has not changed + return part; + } + + return ParameterPartCore( + parameter.Name, + @default, + parameter.ParameterKind, + parameterConstraints?.ToArray() ?? Array.Empty(), + parameter.EncodeSlashes); + } + } + + /// + /// Creates a from the provided collection + /// of parts. + /// + /// The collection of parts. + /// The . + public static RoutePatternPathSegment Segment(IEnumerable parts) + { + if (parts == null) + { + throw new ArgumentNullException(nameof(parts)); + } + + return SegmentCore(parts.ToArray()); + } + + /// + /// Creates a from the provided collection + /// of parts. + /// + /// The collection of parts. + /// The . + public static RoutePatternPathSegment Segment(params RoutePatternPart[] parts) + { + if (parts == null) + { + throw new ArgumentNullException(nameof(parts)); + } + + return SegmentCore((RoutePatternPart[]) parts.Clone()); + } + + private static RoutePatternPathSegment SegmentCore(RoutePatternPart[] parts) + { + return new RoutePatternPathSegment(parts); + } + + /// + /// Creates a from the provided text + /// content. + /// + /// The text content. + /// The . + public static RoutePatternLiteralPart LiteralPart(string content) + { + if (string.IsNullOrEmpty(content)) + { + throw new ArgumentException(Resources.Argument_NullOrEmpty, nameof(content)); + } + + if (content.IndexOf('?') >= 0) + { + throw new ArgumentException(Resources.FormatTemplateRoute_InvalidLiteral(content)); + } + + return LiteralPartCore(content); + } + + private static RoutePatternLiteralPart LiteralPartCore(string content) + { + return new RoutePatternLiteralPart(content); + } + + /// + /// Creates a from the provided text + /// content. + /// + /// The text content. + /// The . + public static RoutePatternSeparatorPart SeparatorPart(string content) + { + if (string.IsNullOrEmpty(content)) + { + throw new ArgumentException(Resources.Argument_NullOrEmpty, nameof(content)); + } + + return SeparatorPartCore(content); + } + + private static RoutePatternSeparatorPart SeparatorPartCore(string content) + { + return new RoutePatternSeparatorPart(content); + } + + /// + /// Creates a from the provided parameter name. + /// + /// The parameter name. + /// The . + public static RoutePatternParameterPart ParameterPart(string parameterName) + { + if (string.IsNullOrEmpty(parameterName)) + { + throw new ArgumentException(Resources.Argument_NullOrEmpty, nameof(parameterName)); + } + + if (parameterName.IndexOfAny(RoutePatternParser.InvalidParameterNameChars) >= 0) + { + throw new ArgumentException(Resources.FormatTemplateRoute_InvalidParameterName(parameterName)); + } + + return ParameterPartCore( + parameterName: parameterName, + @default: null, + parameterKind: RoutePatternParameterKind.Standard, + parameterPolicies: Array.Empty()); + } + + /// + /// Creates a from the provided parameter name + /// and default value. + /// + /// The parameter name. + /// The parameter default value. May be null. + /// The . + public static RoutePatternParameterPart ParameterPart(string parameterName, object @default) + { + if (string.IsNullOrEmpty(parameterName)) + { + throw new ArgumentException(Resources.Argument_NullOrEmpty, nameof(parameterName)); + } + + if (parameterName.IndexOfAny(RoutePatternParser.InvalidParameterNameChars) >= 0) + { + throw new ArgumentException(Resources.FormatTemplateRoute_InvalidParameterName(parameterName)); + } + + return ParameterPartCore( + parameterName: parameterName, + @default: @default, + parameterKind: RoutePatternParameterKind.Standard, + parameterPolicies: Array.Empty()); + } + + /// + /// Creates a from the provided parameter name + /// and default value, and parameter kind. + /// + /// The parameter name. + /// The parameter default value. May be null. + /// The parameter kind. + /// The . + public static RoutePatternParameterPart ParameterPart( + string parameterName, + object @default, + RoutePatternParameterKind parameterKind) + { + if (string.IsNullOrEmpty(parameterName)) + { + throw new ArgumentException(Resources.Argument_NullOrEmpty, nameof(parameterName)); + } + + if (parameterName.IndexOfAny(RoutePatternParser.InvalidParameterNameChars) >= 0) + { + throw new ArgumentException(Resources.FormatTemplateRoute_InvalidParameterName(parameterName)); + } + + if (@default != null && parameterKind == RoutePatternParameterKind.Optional) + { + throw new ArgumentNullException(Resources.TemplateRoute_OptionalCannotHaveDefaultValue, nameof(parameterKind)); + } + + return ParameterPartCore( + parameterName: parameterName, + @default: @default, + parameterKind: parameterKind, + parameterPolicies: Array.Empty()); + } + + /// + /// Creates a from the provided parameter name + /// and default value, parameter kind, and parameter policies. + /// + /// The parameter name. + /// The parameter default value. May be null. + /// The parameter kind. + /// The parameter policies to associated with the parameter. + /// The . + public static RoutePatternParameterPart ParameterPart( + string parameterName, + object @default, + RoutePatternParameterKind parameterKind, + IEnumerable parameterPolicies) + { + if (string.IsNullOrEmpty(parameterName)) + { + throw new ArgumentException(Resources.Argument_NullOrEmpty, nameof(parameterName)); + } + + if (parameterName.IndexOfAny(RoutePatternParser.InvalidParameterNameChars) >= 0) + { + throw new ArgumentException(Resources.FormatTemplateRoute_InvalidParameterName(parameterName)); + } + + if (@default != null && parameterKind == RoutePatternParameterKind.Optional) + { + throw new ArgumentNullException(Resources.TemplateRoute_OptionalCannotHaveDefaultValue, nameof(parameterKind)); + } + + if (parameterPolicies == null) + { + throw new ArgumentNullException(nameof(parameterPolicies)); + } + + return ParameterPartCore( + parameterName: parameterName, + @default: @default, + parameterKind: parameterKind, + parameterPolicies: parameterPolicies.ToArray()); + } + + /// + /// Creates a from the provided parameter name + /// and default value, parameter kind, and parameter policies. + /// + /// The parameter name. + /// The parameter default value. May be null. + /// The parameter kind. + /// The parameter policies to associated with the parameter. + /// The . + public static RoutePatternParameterPart ParameterPart( + string parameterName, + object @default, + RoutePatternParameterKind parameterKind, + params RoutePatternParameterPolicyReference[] parameterPolicies) + { + if (string.IsNullOrEmpty(parameterName)) + { + throw new ArgumentException(Resources.Argument_NullOrEmpty, nameof(parameterName)); + } + + if (parameterName.IndexOfAny(RoutePatternParser.InvalidParameterNameChars) >= 0) + { + throw new ArgumentException(Resources.FormatTemplateRoute_InvalidParameterName(parameterName)); + } + + if (@default != null && parameterKind == RoutePatternParameterKind.Optional) + { + throw new ArgumentNullException(Resources.TemplateRoute_OptionalCannotHaveDefaultValue, nameof(parameterKind)); + } + + if (parameterPolicies == null) + { + throw new ArgumentNullException(nameof(parameterPolicies)); + } + + return ParameterPartCore( + parameterName: parameterName, + @default: @default, + parameterKind: parameterKind, + parameterPolicies: (RoutePatternParameterPolicyReference[]) parameterPolicies.Clone()); + } + + private static RoutePatternParameterPart ParameterPartCore( + string parameterName, + object @default, + RoutePatternParameterKind parameterKind, + RoutePatternParameterPolicyReference[] parameterPolicies) + { + return ParameterPartCore(parameterName, @default, parameterKind, parameterPolicies, encodeSlashes: true); + } + + private static RoutePatternParameterPart ParameterPartCore( + string parameterName, + object @default, + RoutePatternParameterKind parameterKind, + RoutePatternParameterPolicyReference[] parameterPolicies, + bool encodeSlashes) + { + return new RoutePatternParameterPart( + parameterName, + @default, + parameterKind, + parameterPolicies, + encodeSlashes); + } + + /// + /// Creates a from the provided contraint. + /// + /// + /// The constraint object, which must be of type + /// or . If the constraint object is a + /// then it will be tranformed into an instance of . + /// + /// The . + public static RoutePatternParameterPolicyReference Constraint(object constraint) + { + // Similar to RouteConstraintBuilder + if (constraint is IRouteConstraint policy) + { + return ParameterPolicyCore(policy); + } + else if (constraint is string content) + { + return ParameterPolicyCore(new RegexRouteConstraint("^(" + content + ")$")); + } + else + { + throw new InvalidOperationException(Resources.FormatRoutePattern_InvalidConstraintReference( + constraint ?? "null", + typeof(IRouteConstraint))); + } + } + + /// + /// Creates a from the provided constraint. + /// + /// + /// The constraint object. + /// + /// The . + public static RoutePatternParameterPolicyReference Constraint(IRouteConstraint constraint) + { + if (constraint == null) + { + throw new ArgumentNullException(nameof(constraint)); + } + + return ParameterPolicyCore(constraint); + } + + /// + /// Creates a from the provided constraint. + /// + /// + /// The constraint text, which will be resolved by . + /// + /// The . + public static RoutePatternParameterPolicyReference Constraint(string constraint) + { + if (string.IsNullOrEmpty(constraint)) + { + throw new ArgumentException(Resources.Argument_NullOrEmpty, nameof(constraint)); + } + + return ParameterPolicyCore(constraint); + } + + /// + /// Creates a from the provided object. + /// + /// + /// The parameter policy object. + /// + /// The . + public static RoutePatternParameterPolicyReference ParameterPolicy(IParameterPolicy parameterPolicy) + { + if (parameterPolicy == null) + { + throw new ArgumentNullException(nameof(parameterPolicy)); + } + + return ParameterPolicyCore(parameterPolicy); + } + + /// + /// Creates a from the provided object. + /// + /// + /// The parameter policy text, which will be resolved by . + /// + /// The . + public static RoutePatternParameterPolicyReference ParameterPolicy(string parameterPolicy) + { + if (string.IsNullOrEmpty(parameterPolicy)) + { + throw new ArgumentException(Resources.Argument_NullOrEmpty, nameof(parameterPolicy)); + } + + return ParameterPolicyCore(parameterPolicy); + } + + private static RoutePatternParameterPolicyReference ParameterPolicyCore(string parameterPolicy) + { + return new RoutePatternParameterPolicyReference(parameterPolicy); + } + + private static RoutePatternParameterPolicyReference ParameterPolicyCore(IParameterPolicy parameterPolicy) + { + return new RoutePatternParameterPolicyReference(parameterPolicy); + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternLiteralPart.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternLiteralPart.cs new file mode 100644 index 0000000000..d9fcb22bc6 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternLiteralPart.cs @@ -0,0 +1,32 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Diagnostics; + +namespace Microsoft.AspNetCore.Routing.Patterns +{ + /// + /// Resprents a literal text part of a route pattern. Instances of + /// are immutable. + /// + [DebuggerDisplay("{DebuggerToString()}")] + public sealed class RoutePatternLiteralPart : RoutePatternPart + { + internal RoutePatternLiteralPart(string content) + : base(RoutePatternPartKind.Literal) + { + Debug.Assert(!string.IsNullOrEmpty(content)); + Content = content; + } + + /// + /// Gets the text content. + /// + public string Content { get; } + + internal override string DebuggerToString() + { + return Content; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternMatcher.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternMatcher.cs new file mode 100644 index 0000000000..7f90c882af --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternMatcher.cs @@ -0,0 +1,511 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Diagnostics; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Internal; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.Extensions.Primitives; + +namespace Microsoft.AspNetCore.Routing +{ + internal class RoutePatternMatcher + { + private const string SeparatorString = "/"; + private const char SeparatorChar = '/'; + + // Perf: This is a cache to avoid looking things up in 'Defaults' each request. + private readonly bool[] _hasDefaultValue; + private readonly object[] _defaultValues; + + private static readonly char[] Delimiters = new char[] { SeparatorChar }; + + public RoutePatternMatcher( + RoutePattern pattern, + RouteValueDictionary defaults) + { + if (pattern == null) + { + throw new ArgumentNullException(nameof(pattern)); + } + + RoutePattern = pattern; + Defaults = defaults ?? new RouteValueDictionary(); + + // Perf: cache the default value for each parameter (other than complex segments). + _hasDefaultValue = new bool[RoutePattern.PathSegments.Count]; + _defaultValues = new object[RoutePattern.PathSegments.Count]; + + for (var i = 0; i < RoutePattern.PathSegments.Count; i++) + { + var segment = RoutePattern.PathSegments[i]; + if (!segment.IsSimple) + { + continue; + } + + var part = segment.Parts[0]; + if (!part.IsParameter) + { + continue; + } + + var parameter = (RoutePatternParameterPart)part; + if (Defaults.TryGetValue(parameter.Name, out var value)) + { + _hasDefaultValue[i] = true; + _defaultValues[i] = value; + } + } + } + + public RouteValueDictionary Defaults { get; } + + public RoutePattern RoutePattern { get; } + + public bool TryMatch(PathString path, RouteValueDictionary values) + { + if (values == null) + { + throw new ArgumentNullException(nameof(values)); + } + + var i = 0; + var pathTokenizer = new PathTokenizer(path); + + // Perf: We do a traversal of the request-segments + route-segments twice. + // + // For most segment-types, we only really need to any work on one of the two passes. + // + // On the first pass, we're just looking to see if there's anything that would disqualify us from matching. + // The most common case would be a literal segment that doesn't match. + // + // On the second pass, we're almost certainly going to match the URL, so go ahead and allocate the 'values' + // and start capturing strings. + foreach (var stringSegment in pathTokenizer) + { + if (stringSegment.Length == 0) + { + return false; + } + + var pathSegment = i >= RoutePattern.PathSegments.Count ? null : RoutePattern.PathSegments[i]; + if (pathSegment == null && stringSegment.Length > 0) + { + // If pathSegment is null, then we're out of route segments. All we can match is the empty + // string. + return false; + } + else if (pathSegment.IsSimple && pathSegment.Parts[0] is RoutePatternParameterPart parameter && parameter.IsCatchAll) + { + // Nothing to validate for a catch-all - it can match any string, including the empty string. + // + // Also, a catch-all has to be the last part, so we're done. + break; + } + if (!TryMatchLiterals(i++, stringSegment, pathSegment)) + { + return false; + } + } + + for (; i < RoutePattern.PathSegments.Count; i++) + { + // We've matched the request path so far, but still have remaining route segments. These need + // to be all single-part parameter segments with default values or else they won't match. + var pathSegment = RoutePattern.PathSegments[i]; + Debug.Assert(pathSegment != null); + + if (!pathSegment.IsSimple) + { + // If the segment is a complex segment, it MUST contain literals, and we've parsed the full + // path so far, so it can't match. + return false; + } + + var part = pathSegment.Parts[0]; + if (part.IsLiteral || part.IsSeparator) + { + // If the segment is a simple literal - which need the URL to provide a value, so we don't match. + return false; + } + + var parameter = (RoutePatternParameterPart)part; + if (parameter.IsCatchAll) + { + // Nothing to validate for a catch-all - it can match any string, including the empty string. + // + // Also, a catch-all has to be the last part, so we're done. + break; + } + + // If we get here, this is a simple segment with a parameter. We need it to be optional, or for the + // defaults to have a value. + if (!_hasDefaultValue[i] && !parameter.IsOptional) + { + // There's no default for this (non-optional) parameter so it can't match. + return false; + } + } + + // At this point we've very likely got a match, so start capturing values for real. + i = 0; + foreach (var requestSegment in pathTokenizer) + { + var pathSegment = RoutePattern.PathSegments[i++]; + if (SavePathSegmentsAsValues(i, values, requestSegment, pathSegment)) + { + break; + } + if (!pathSegment.IsSimple) + { + if (!MatchComplexSegment(pathSegment, requestSegment.ToString(), values)) + { + return false; + } + } + } + + for (; i < RoutePattern.PathSegments.Count; i++) + { + // We've matched the request path so far, but still have remaining route segments. We already know these + // are simple parameters that either have a default, or don't need to produce a value. + var pathSegment = RoutePattern.PathSegments[i]; + Debug.Assert(pathSegment != null); + Debug.Assert(pathSegment.IsSimple); + + var part = pathSegment.Parts[0]; + Debug.Assert(part.IsParameter); + + // It's ok for a catch-all to produce a null value + if (part is RoutePatternParameterPart parameter && (parameter.IsCatchAll || _hasDefaultValue[i])) + { + // Don't replace an existing value with a null. + var defaultValue = _defaultValues[i]; + if (defaultValue != null || !values.ContainsKey(parameter.Name)) + { + values[parameter.Name] = defaultValue; + } + } + } + + // Copy all remaining default values to the route data + foreach (var kvp in Defaults) + { +#if RVD_TryAdd + values.TryAdd(kvp.Key, kvp.Value); +#else + if (!values.ContainsKey(kvp.Key)) + { + values.Add(kvp.Key, kvp.Value); + } +#endif + } + + return true; + } + + private bool TryMatchLiterals(int index, StringSegment stringSegment, RoutePatternPathSegment pathSegment) + { + if (pathSegment.IsSimple && !pathSegment.Parts[0].IsParameter) + { + // This is a literal segment, so we need to match the text, or the route isn't a match. + if (pathSegment.Parts[0].IsLiteral) + { + var part = (RoutePatternLiteralPart)pathSegment.Parts[0]; + + if (!stringSegment.Equals(part.Content, StringComparison.OrdinalIgnoreCase)) + { + return false; + } + } + else + { + var part = (RoutePatternSeparatorPart)pathSegment.Parts[0]; + + if (!stringSegment.Equals(part.Content, StringComparison.OrdinalIgnoreCase)) + { + return false; + } + } + } + else if (pathSegment.IsSimple && pathSegment.Parts[0].IsParameter) + { + // For a parameter, validate that it's a has some length, or we have a default, or it's optional. + var part = (RoutePatternParameterPart)pathSegment.Parts[0]; + if (stringSegment.Length == 0 && + !_hasDefaultValue[index] && + !part.IsOptional) + { + // There's no value for this parameter, the route can't match. + return false; + } + } + else + { + Debug.Assert(!pathSegment.IsSimple); + // Don't attempt to validate a complex segment at this point other than being non-emtpy, + // do it in the second pass. + } + return true; + } + + private bool SavePathSegmentsAsValues(int index, RouteValueDictionary values, StringSegment requestSegment, RoutePatternPathSegment pathSegment) + { + if (pathSegment.IsSimple && pathSegment.Parts[0] is RoutePatternParameterPart parameter && parameter.IsCatchAll) + { + // A catch-all captures til the end of the string. + var captured = requestSegment.Buffer.Substring(requestSegment.Offset); + if (captured.Length > 0) + { + values[parameter.Name] = captured; + } + else + { + // It's ok for a catch-all to produce a null value, so we don't check _hasDefaultValue. + values[parameter.Name] = _defaultValues[index]; + } + + // A catch-all has to be the last part, so we're done. + return true; + } + else if (pathSegment.IsSimple && pathSegment.Parts[0].IsParameter) + { + // A simple parameter captures the whole segment, or a default value if nothing was + // provided. + parameter = (RoutePatternParameterPart)pathSegment.Parts[0]; + if (requestSegment.Length > 0) + { + values[parameter.Name] = requestSegment.ToString(); + } + else + { + if (_hasDefaultValue[index]) + { + values[parameter.Name] = _defaultValues[index]; + } + } + } + return false; + } + + internal static bool MatchComplexSegment( + RoutePatternPathSegment routeSegment, + string requestSegment, + RouteValueDictionary values) + { + var indexOfLastSegment = routeSegment.Parts.Count - 1; + + // We match the request to the template starting at the rightmost parameter + // If the last segment of template is optional, then request can match the + // template with or without the last parameter. So we start with regular matching, + // but if it doesn't match, we start with next to last parameter. Example: + // Template: {p1}/{p2}.{p3?}. If the request is one/two.three it will match right away + // giving p3 value of three. But if the request is one/two, we start matching from the + // rightmost giving p3 the value of two, then we end up not matching the segment. + // In this case we start again from p2 to match the request and we succeed giving + // the value two to p2 + if (routeSegment.Parts[indexOfLastSegment] is RoutePatternParameterPart parameter && parameter.IsOptional && + routeSegment.Parts[indexOfLastSegment - 1].IsSeparator) + { + if (MatchComplexSegmentCore(routeSegment, requestSegment, values, indexOfLastSegment)) + { + return true; + } + else + { + var separator = (RoutePatternSeparatorPart)routeSegment.Parts[indexOfLastSegment - 1]; + if (requestSegment.EndsWith( + separator.Content, + StringComparison.OrdinalIgnoreCase)) + return false; + + return MatchComplexSegmentCore( + routeSegment, + requestSegment, + values, + indexOfLastSegment - 2); + } + } + else + { + return MatchComplexSegmentCore(routeSegment, requestSegment, values, indexOfLastSegment); + } + } + + private static bool MatchComplexSegmentCore( + RoutePatternPathSegment routeSegment, + string requestSegment, + RouteValueDictionary values, + int indexOfLastSegmentUsed) + { + Debug.Assert(routeSegment != null); + Debug.Assert(routeSegment.Parts.Count > 1); + + // Find last literal segment and get its last index in the string + var lastIndex = requestSegment.Length; + + RoutePatternParameterPart parameterNeedsValue = null; // Keeps track of a parameter segment that is pending a value + RoutePatternPart lastLiteral = null; // Keeps track of the left-most literal we've encountered + + var outValues = new RouteValueDictionary(); + + while (indexOfLastSegmentUsed >= 0) + { + var newLastIndex = lastIndex; + + var part = routeSegment.Parts[indexOfLastSegmentUsed]; + if (part.IsParameter) + { + // Hold on to the parameter so that we can fill it in when we locate the next literal + parameterNeedsValue = (RoutePatternParameterPart)part; + } + else + { + Debug.Assert(part.IsLiteral || part.IsSeparator); + lastLiteral = part; + + var startIndex = lastIndex - 1; + // If we have a pending parameter subsegment, we must leave at least one character for that + if (parameterNeedsValue != null) + { + startIndex--; + } + + if (startIndex < 0) + { + return false; + } + + int indexOfLiteral; + if (part.IsLiteral) + { + var literal = (RoutePatternLiteralPart)part; + indexOfLiteral = requestSegment.LastIndexOf( + literal.Content, + startIndex, + StringComparison.OrdinalIgnoreCase); + } + else + { + var literal = (RoutePatternSeparatorPart)part; + indexOfLiteral = requestSegment.LastIndexOf( + literal.Content, + startIndex, + StringComparison.OrdinalIgnoreCase); + } + + if (indexOfLiteral == -1) + { + // If we couldn't find this literal index, this segment cannot match + return false; + } + + // If the first subsegment is a literal, it must match at the right-most extent of the request URI. + // Without this check if your route had "/Foo/" we'd match the request URI "/somethingFoo/". + // This check is related to the check we do at the very end of this function. + if (indexOfLastSegmentUsed == (routeSegment.Parts.Count - 1)) + { + if (part is RoutePatternLiteralPart literal && ((indexOfLiteral + literal.Content.Length) != requestSegment.Length)) + { + return false; + } + else if (part is RoutePatternSeparatorPart separator && ((indexOfLiteral + separator.Content.Length) != requestSegment.Length)) + { + return false; + } + } + + newLastIndex = indexOfLiteral; + } + + if ((parameterNeedsValue != null) && + (((lastLiteral != null) && !part.IsParameter) || (indexOfLastSegmentUsed == 0))) + { + // If we have a pending parameter that needs a value, grab that value + + int parameterStartIndex; + int parameterTextLength; + + if (lastLiteral == null) + { + if (indexOfLastSegmentUsed == 0) + { + parameterStartIndex = 0; + } + else + { + parameterStartIndex = newLastIndex; + Debug.Assert(false, "indexOfLastSegementUsed should always be 0 from the check above"); + } + parameterTextLength = lastIndex; + } + else + { + // If we're getting a value for a parameter that is somewhere in the middle of the segment + if ((indexOfLastSegmentUsed == 0) && (part.IsParameter)) + { + parameterStartIndex = 0; + parameterTextLength = lastIndex; + } + else + { + if (lastLiteral.IsLiteral) + { + var literal = (RoutePatternLiteralPart)lastLiteral; + parameterStartIndex = newLastIndex + literal.Content.Length; + } + else + { + var separator = (RoutePatternSeparatorPart)lastLiteral; + parameterStartIndex = newLastIndex + separator.Content.Length; + } + parameterTextLength = lastIndex - parameterStartIndex; + } + } + + var parameterValueString = requestSegment.Substring(parameterStartIndex, parameterTextLength); + + if (string.IsNullOrEmpty(parameterValueString)) + { + // If we're here that means we have a segment that contains multiple sub-segments. + // For these segments all parameters must have non-empty values. If the parameter + // has an empty value it's not a match. + return false; + + } + else + { + // If there's a value in the segment for this parameter, use the subsegment value + outValues.Add(parameterNeedsValue.Name, parameterValueString); + } + + parameterNeedsValue = null; + lastLiteral = null; + } + + lastIndex = newLastIndex; + indexOfLastSegmentUsed--; + } + + // If the last subsegment is a parameter, it's OK that we didn't parse all the way to the left extent of + // the string since the parameter will have consumed all the remaining text anyway. If the last subsegment + // is a literal then we *must* have consumed the entire text in that literal. Otherwise we end up matching + // the route "Foo" to the request URI "somethingFoo". Thus we have to check that we parsed the *entire* + // request URI in order for it to be a match. + // This check is related to the check we do earlier in this function for LiteralSubsegments. + if (lastIndex == 0 || routeSegment.Parts[0].IsParameter) + { + foreach (var item in outValues) + { + values[item.Key] = item.Value; + } + + return true; + } + + return false; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternParameterKind.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternParameterKind.cs new file mode 100644 index 0000000000..0eb5b987de --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternParameterKind.cs @@ -0,0 +1,27 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing.Patterns +{ + /// + /// Defines the kinds of instances. + /// + public enum RoutePatternParameterKind + { + /// + /// The of a standard parameter + /// without optional or catch all behavior. + /// + Standard, + + /// + /// The of an optional parameter. + /// + Optional, + + /// + /// The of a catch-all parameter. + /// + CatchAll, + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternParameterPart.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternParameterPart.cs new file mode 100644 index 0000000000..2b5f408268 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternParameterPart.cs @@ -0,0 +1,117 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using System.Diagnostics; +using System.Text; + +namespace Microsoft.AspNetCore.Routing.Patterns +{ + /// + /// Represents a parameter part in a route pattern. Instances of + /// are immutable. + /// + [DebuggerDisplay("{DebuggerToString()}")] + public sealed class RoutePatternParameterPart : RoutePatternPart + { + internal RoutePatternParameterPart( + string parameterName, + object @default, + RoutePatternParameterKind parameterKind, + RoutePatternParameterPolicyReference[] parameterPolicies) + : this(parameterName, @default, parameterKind, parameterPolicies, encodeSlashes: true) + { + } + + internal RoutePatternParameterPart( + string parameterName, + object @default, + RoutePatternParameterKind parameterKind, + RoutePatternParameterPolicyReference[] parameterPolicies, + bool encodeSlashes) + : base(RoutePatternPartKind.Parameter) + { + // See #475 - this code should have some asserts, but it can't because of the design of RouteParameterParser. + + Name = parameterName; + Default = @default; + ParameterKind = parameterKind; + ParameterPolicies = parameterPolicies; + EncodeSlashes = encodeSlashes; + } + + /// + /// Gets the list of parameter policies associated with this parameter. + /// + public IReadOnlyList ParameterPolicies { get; } + + /// + /// Gets the value indicating if slashes in current parameter's value should be encoded. + /// + public bool EncodeSlashes { get; } + + /// + /// Gets the default value of this route parameter. May be null. + /// + public object Default { get; } + + /// + /// Returns true if this part is a catch-all parameter. + /// Otherwise returns false. + /// + public bool IsCatchAll => ParameterKind == RoutePatternParameterKind.CatchAll; + + /// + /// Returns true if this part is an optional parameter. + /// Otherwise returns false. + /// + public bool IsOptional => ParameterKind == RoutePatternParameterKind.Optional; + + /// + /// Gets the of this parameter. + /// + public RoutePatternParameterKind ParameterKind { get; } + + /// + /// Gets the parameter name. + /// + public string Name { get; } + + internal override string DebuggerToString() + { + var builder = new StringBuilder(); + builder.Append("{"); + + if (IsCatchAll) + { + builder.Append("*"); + if (!EncodeSlashes) + { + builder.Append("*"); + } + } + + builder.Append(Name); + + foreach (var constraint in ParameterPolicies) + { + builder.Append(":"); + builder.Append(constraint.ParameterPolicy); + } + + if (Default != null) + { + builder.Append("="); + builder.Append(Default); + } + + if (IsOptional) + { + builder.Append("?"); + } + + builder.Append("}"); + return builder.ToString(); + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternParameterPolicyReference.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternParameterPolicyReference.cs new file mode 100644 index 0000000000..65f58087c1 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternParameterPolicyReference.cs @@ -0,0 +1,41 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Diagnostics; +using Microsoft.AspNetCore.Routing.Matching; + +namespace Microsoft.AspNetCore.Routing.Patterns +{ + /// + /// The parsed representation of a policy in a parameter. Instances + /// of are immutable. + /// + [DebuggerDisplay("{DebuggerToString()}")] + public sealed class RoutePatternParameterPolicyReference + { + internal RoutePatternParameterPolicyReference(string content) + { + Content = content; + } + + internal RoutePatternParameterPolicyReference(IParameterPolicy parameterPolicy) + { + ParameterPolicy = parameterPolicy; + } + + /// + /// Gets the constraint text. + /// + public string Content { get; } + + /// + /// Gets a pre-existing that was used to construct this reference. + /// + public IParameterPolicy ParameterPolicy { get; } + + private string DebuggerToString() + { + return Content; + } + } +} \ No newline at end of file diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternParser.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternParser.cs new file mode 100644 index 0000000000..990d1854fc --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternParser.cs @@ -0,0 +1,577 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Diagnostics; + +namespace Microsoft.AspNetCore.Routing.Patterns +{ + internal static class RoutePatternParser + { + private const char Separator = '/'; + private const char OpenBrace = '{'; + private const char CloseBrace = '}'; + private const char EqualsSign = '='; + private const char QuestionMark = '?'; + private const char Asterisk = '*'; + private const string PeriodString = "."; + + internal static readonly char[] InvalidParameterNameChars = new char[] + { + Separator, + OpenBrace, + CloseBrace, + QuestionMark, + Asterisk + }; + + public static RoutePattern Parse(string pattern) + { + if (pattern == null) + { + throw new ArgumentNullException(nameof(pattern)); + } + + var trimmedPattern = TrimPrefix(pattern); + + var context = new Context(trimmedPattern); + var segments = new List(); + + while (context.MoveNext()) + { + var i = context.Index; + + if (context.Current == Separator) + { + // If we get here is means that there's a consecutive '/' character. + // Templates don't start with a '/' and parsing a segment consumes the separator. + throw new RoutePatternException(pattern, Resources.TemplateRoute_CannotHaveConsecutiveSeparators); + } + + if (!ParseSegment(context, segments)) + { + throw new RoutePatternException(pattern, context.Error); + } + + // A successful parse should always result in us being at the end or at a separator. + Debug.Assert(context.AtEnd() || context.Current == Separator); + + if (context.Index <= i) + { + // This shouldn't happen, but we want to crash if it does. + var message = "Infinite loop detected in the parser. Please open an issue."; + throw new InvalidProgramException(message); + } + } + + if (IsAllValid(context, segments)) + { + return RoutePatternFactory.Pattern(pattern, segments); + } + else + { + throw new RoutePatternException(pattern, context.Error); + } + } + + private static bool ParseSegment(Context context, List segments) + { + Debug.Assert(context != null); + Debug.Assert(segments != null); + + var parts = new List(); + + while (true) + { + var i = context.Index; + + if (context.Current == OpenBrace) + { + if (!context.MoveNext()) + { + // This is a dangling open-brace, which is not allowed + context.Error = Resources.TemplateRoute_MismatchedParameter; + return false; + } + + if (context.Current == OpenBrace) + { + // This is an 'escaped' brace in a literal, like "{{foo" + context.Back(); + if (!ParseLiteral(context, parts)) + { + return false; + } + } + else + { + // This is a parameter + context.Back(); + if (!ParseParameter(context, parts)) + { + return false; + } + } + } + else + { + if (!ParseLiteral(context, parts)) + { + return false; + } + } + + if (context.Current == Separator || context.AtEnd()) + { + // We've reached the end of the segment + break; + } + + if (context.Index <= i) + { + // This shouldn't happen, but we want to crash if it does. + var message = "Infinite loop detected in the parser. Please open an issue."; + throw new InvalidProgramException(message); + } + } + + if (IsSegmentValid(context, parts)) + { + segments.Add(new RoutePatternPathSegment(parts)); + return true; + } + else + { + return false; + } + } + + private static bool ParseParameter(Context context, List parts) + { + Debug.Assert(context.Current == OpenBrace); + context.Mark(); + + context.MoveNext(); + + while (true) + { + if (context.Current == OpenBrace) + { + // This is an open brace inside of a parameter, it has to be escaped + if (context.MoveNext()) + { + if (context.Current != OpenBrace) + { + // If we see something like "{p1:regex(^\d{3", we will come here. + context.Error = Resources.TemplateRoute_UnescapedBrace; + return false; + } + } + else + { + // This is a dangling open-brace, which is not allowed + // Example: "{p1:regex(^\d{" + context.Error = Resources.TemplateRoute_MismatchedParameter; + return false; + } + } + else if (context.Current == CloseBrace) + { + // When we encounter Closed brace here, it either means end of the parameter or it is a closed + // brace in the parameter, in that case it needs to be escaped. + // Example: {p1:regex(([}}])\w+}. First pair is escaped one and last marks end of the parameter + if (!context.MoveNext()) + { + // This is the end of the string -and we have a valid parameter + break; + } + + if (context.Current == CloseBrace) + { + // This is an 'escaped' brace in a parameter name + } + else + { + // This is the end of the parameter + break; + } + } + + if (!context.MoveNext()) + { + // This is a dangling open-brace, which is not allowed + context.Error = Resources.TemplateRoute_MismatchedParameter; + return false; + } + } + + var text = context.Capture(); + if (text == "{}") + { + context.Error = Resources.FormatTemplateRoute_InvalidParameterName(string.Empty); + return false; + } + + var inside = text.Substring(1, text.Length - 2); + var decoded = inside.Replace("}}", "}").Replace("{{", "{"); + + // At this point, we need to parse the raw name for inline constraint, + // default values and optional parameters. + var templatePart = RouteParameterParser.ParseRouteParameter(decoded); + + // See #475 - this is here because InlineRouteParameterParser can't return errors + if (decoded.StartsWith("*", StringComparison.Ordinal) && decoded.EndsWith("?", StringComparison.Ordinal)) + { + context.Error = Resources.TemplateRoute_CatchAllCannotBeOptional; + return false; + } + + if (templatePart.IsOptional && templatePart.Default != null) + { + // Cannot be optional and have a default value. + // The only way to declare an optional parameter is to have a ? at the end, + // hence we cannot have both default value and optional parameter within the template. + // A workaround is to add it as a separate entry in the defaults argument. + context.Error = Resources.TemplateRoute_OptionalCannotHaveDefaultValue; + return false; + } + + var parameterName = templatePart.Name; + if (IsValidParameterName(context, parameterName)) + { + parts.Add(templatePart); + return true; + } + else + { + return false; + } + } + + private static bool ParseLiteral(Context context, List parts) + { + context.Mark(); + + while (true) + { + if (context.Current == Separator) + { + // End of the segment + break; + } + else if (context.Current == OpenBrace) + { + if (!context.MoveNext()) + { + // This is a dangling open-brace, which is not allowed + context.Error = Resources.TemplateRoute_MismatchedParameter; + return false; + } + + if (context.Current == OpenBrace) + { + // This is an 'escaped' brace in a literal, like "{{foo" - keep going. + } + else + { + // We've just seen the start of a parameter, so back up. + context.Back(); + break; + } + } + else if (context.Current == CloseBrace) + { + if (!context.MoveNext()) + { + // This is a dangling close-brace, which is not allowed + context.Error = Resources.TemplateRoute_MismatchedParameter; + return false; + } + + if (context.Current == CloseBrace) + { + // This is an 'escaped' brace in a literal, like "{{foo" - keep going. + } + else + { + // This is an unbalanced close-brace, which is not allowed + context.Error = Resources.TemplateRoute_MismatchedParameter; + return false; + } + } + + if (!context.MoveNext()) + { + break; + } + } + + var encoded = context.Capture(); + var decoded = encoded.Replace("}}", "}").Replace("{{", "{"); + if (IsValidLiteral(context, decoded)) + { + parts.Add(RoutePatternFactory.LiteralPart(decoded)); + return true; + } + else + { + return false; + } + } + + private static bool IsAllValid(Context context, List segments) + { + // A catch-all parameter must be the last part of the last segment + for (var i = 0; i < segments.Count; i++) + { + var segment = segments[i]; + for (var j = 0; j < segment.Parts.Count; j++) + { + var part = segment.Parts[j]; + if (part is RoutePatternParameterPart parameter + && parameter.IsCatchAll && + (i != segments.Count - 1 || j != segment.Parts.Count - 1)) + { + context.Error = Resources.TemplateRoute_CatchAllMustBeLast; + return false; + } + } + } + + return true; + } + + private static bool IsSegmentValid(Context context, List parts) + { + // If a segment has multiple parts, then it can't contain a catch all. + for (var i = 0; i < parts.Count; i++) + { + var part = parts[i]; + if (part is RoutePatternParameterPart parameter && parameter.IsCatchAll && parts.Count > 1) + { + context.Error = Resources.TemplateRoute_CannotHaveCatchAllInMultiSegment; + return false; + } + } + + // if a segment has multiple parts, then only the last one parameter can be optional + // if it is following a optional seperator. + for (var i = 0; i < parts.Count; i++) + { + var part = parts[i]; + + if (part is RoutePatternParameterPart parameter && parameter.IsOptional && parts.Count > 1) + { + // This optional parameter is the last part in the segment + if (i == parts.Count - 1) + { + var previousPart = parts[i - 1]; + + if (!previousPart.IsLiteral && !previousPart.IsSeparator) + { + // The optional parameter is preceded by something that is not a literal or separator + // Example of error message: + // "In the segment '{RouteValue}{param?}', the optional parameter 'param' is preceded + // by an invalid segment '{RouteValue}'. Only a period (.) can precede an optional parameter. + context.Error = string.Format( + Resources.TemplateRoute_OptionalParameterCanbBePrecededByPeriod, + RoutePatternPathSegment.DebuggerToString(parts), + parameter.Name, + parts[i - 1].DebuggerToString()); + + return false; + } + else if (previousPart is RoutePatternLiteralPart literal && literal.Content != PeriodString) + { + // The optional parameter is preceded by a literal other than period. + // Example of error message: + // "In the segment '{RouteValue}-{param?}', the optional parameter 'param' is preceded + // by an invalid segment '-'. Only a period (.) can precede an optional parameter. + context.Error = string.Format( + Resources.TemplateRoute_OptionalParameterCanbBePrecededByPeriod, + RoutePatternPathSegment.DebuggerToString(parts), + parameter.Name, + parts[i - 1].DebuggerToString()); + + return false; + } + + parts[i - 1] = RoutePatternFactory.SeparatorPart(((RoutePatternLiteralPart)previousPart).Content); + } + else + { + // This optional parameter is not the last one in the segment + // Example: + // An optional parameter must be at the end of the segment. In the segment '{RouteValue?})', + // optional parameter 'RouteValue' is followed by ')' + context.Error = string.Format( + Resources.TemplateRoute_OptionalParameterHasTobeTheLast, + RoutePatternPathSegment.DebuggerToString(parts), + parameter.Name, + parts[i + 1].DebuggerToString()); + + return false; + } + } + } + + // A segment cannot contain two consecutive parameters + var isLastSegmentParameter = false; + for (var i = 0; i < parts.Count; i++) + { + var part = parts[i]; + if (part.IsParameter && isLastSegmentParameter) + { + context.Error = Resources.TemplateRoute_CannotHaveConsecutiveParameters; + return false; + } + + isLastSegmentParameter = part.IsParameter; + } + + return true; + } + + private static bool IsValidParameterName(Context context, string parameterName) + { + if (parameterName.Length == 0 || parameterName.IndexOfAny(InvalidParameterNameChars) >= 0) + { + context.Error = Resources.FormatTemplateRoute_InvalidParameterName(parameterName); + return false; + } + + if (!context.ParameterNames.Add(parameterName)) + { + context.Error = Resources.FormatTemplateRoute_RepeatedParameter(parameterName); + return false; + } + + return true; + } + + private static bool IsValidLiteral(Context context, string literal) + { + Debug.Assert(context != null); + Debug.Assert(literal != null); + + if (literal.IndexOf(QuestionMark) != -1) + { + context.Error = Resources.FormatTemplateRoute_InvalidLiteral(literal); + return false; + } + + return true; + } + + private static string TrimPrefix(string routePattern) + { + if (routePattern.StartsWith("~/", StringComparison.Ordinal)) + { + return routePattern.Substring(2); + } + else if (routePattern.StartsWith("/", StringComparison.Ordinal)) + { + return routePattern.Substring(1); + } + else if (routePattern.StartsWith("~", StringComparison.Ordinal)) + { + throw new RoutePatternException(routePattern, Resources.TemplateRoute_InvalidRouteTemplate); + } + return routePattern; + } + + [DebuggerDisplay("{DebuggerToString()}")] + private class Context + { + private readonly string _template; + private int _index; + private int? _mark; + + private readonly HashSet _parameterNames = new HashSet(StringComparer.OrdinalIgnoreCase); + + public Context(string template) + { + Debug.Assert(template != null); + _template = template; + + _index = -1; + } + + public char Current + { + get { return (_index < _template.Length && _index >= 0) ? _template[_index] : (char)0; } + } + + public int Index => _index; + + public string Error + { + get; + set; + } + + public HashSet ParameterNames + { + get { return _parameterNames; } + } + + public bool Back() + { + return --_index >= 0; + } + + public bool AtEnd() + { + return _index >= _template.Length; + } + + public bool MoveNext() + { + return ++_index < _template.Length; + } + + public void Mark() + { + Debug.Assert(_index >= 0); + + // Index is always the index of the character *past* Current - we want to 'mark' Current. + _mark = _index; + } + + public string Capture() + { + if (_mark.HasValue) + { + var value = _template.Substring(_mark.Value, _index - _mark.Value); + _mark = null; + return value; + } + else + { + return null; + } + } + + private string DebuggerToString() + { + if (_index == -1) + { + return _template; + } + else if (_mark.HasValue) + { + return _template.Substring(0, _mark.Value) + + "|" + + _template.Substring(_mark.Value, _index - _mark.Value) + + "|" + + _template.Substring(_index); + } + else + { + return _template.Substring(0, _index) + "|" + _template.Substring(_index); + } + } + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternPart.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternPart.cs new file mode 100644 index 0000000000..bc797cfee8 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternPart.cs @@ -0,0 +1,42 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing.Patterns +{ + /// + /// Represents a part of a route pattern. + /// + public abstract class RoutePatternPart + { + // This class is **not** an extensibility point - every part of the routing system + // needs to be aware of what kind of parts we support. + // + // It is abstract so we can add semantics later inside the library. + private protected RoutePatternPart(RoutePatternPartKind partKind) + { + PartKind = partKind; + } + + /// + /// Gets the of this part. + /// + public RoutePatternPartKind PartKind { get; } + + /// + /// Returns true if this part is literal text. Otherwise returns false. + /// + public bool IsLiteral => PartKind == RoutePatternPartKind.Literal; + + /// + /// Returns true if this part is a route parameter. Otherwise returns false. + /// + public bool IsParameter => PartKind == RoutePatternPartKind.Parameter; + + /// + /// Returns true if this part is an optional separator. Otherwise returns false. + /// + public bool IsSeparator => PartKind == RoutePatternPartKind.Separator; + + internal abstract string DebuggerToString(); + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternPartKind.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternPartKind.cs new file mode 100644 index 0000000000..1b67819322 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternPartKind.cs @@ -0,0 +1,26 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing.Patterns +{ + /// + /// Defines the kinds of instances. + /// + public enum RoutePatternPartKind + { + /// + /// The of a . + /// + Literal, + + /// + /// The of a . + /// + Parameter, + + /// + /// The of a . + /// + Separator, + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternPathSegment.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternPathSegment.cs new file mode 100644 index 0000000000..4e7b010518 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternPathSegment.cs @@ -0,0 +1,49 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; + +namespace Microsoft.AspNetCore.Routing.Patterns +{ + /// + /// Represents a path segment in a route pattern. Instances of are + /// immutable. + /// + /// + /// Route patterns are made up of URL path segments, delimited by /. A + /// contains a group of + /// that represent the structure of a segment + /// in a route pattern. + /// + [DebuggerDisplay("{DebuggerToString()}")] + public sealed class RoutePatternPathSegment + { + internal RoutePatternPathSegment(IReadOnlyList parts) + { + Parts = parts; + } + + /// + /// Returns true if the segment contains a single part; + /// otherwise returns false. + /// + public bool IsSimple => Parts.Count == 1; + + /// + /// Gets the list of parts in this segment. + /// + public IReadOnlyList Parts { get; } + + internal string DebuggerToString() + { + return DebuggerToString(Parts); + } + + internal static string DebuggerToString(IReadOnlyList parts) + { + return string.Join(string.Empty, parts.Select(p => p.DebuggerToString())); + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternSeparatorPart.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternSeparatorPart.cs new file mode 100644 index 0000000000..5512e62af4 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Patterns/RoutePatternSeparatorPart.cs @@ -0,0 +1,50 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Diagnostics; + +namespace Microsoft.AspNetCore.Routing.Patterns +{ + /// + /// Represents an optional separator part of a route pattern. Instances of + /// are immutable. + /// + /// + /// + /// An optional separator is a literal text delimiter that appears between + /// two parameter parts in the last segment of a route pattern. The only separator + /// that is recognized is .. + /// + /// + /// + /// In the route pattern /{controller}/{action}/{id?}.{extension?} + /// the . character is an optional separator. + /// + /// + /// + /// An optional separator character does not need to present in the URL path + /// of a request for the route pattern to match. + /// + /// + [DebuggerDisplay("{DebuggerToString()}")] + public sealed class RoutePatternSeparatorPart : RoutePatternPart + { + internal RoutePatternSeparatorPart(string content) + : base(RoutePatternPartKind.Separator) + { + Debug.Assert(!string.IsNullOrEmpty(content)); + + Content = content; + } + + /// + /// Gets the text content of the part. + /// + public string Content { get; } + + internal override string DebuggerToString() + { + return Content; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Properties/AssemblyInfo.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Properties/AssemblyInfo.cs index d8b03e1556..1da3395469 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Properties/AssemblyInfo.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Properties/AssemblyInfo.cs @@ -3,4 +3,6 @@ using System.Runtime.CompilerServices; +[assembly: InternalsVisibleTo("Microsoft.AspNetCore.Routing.Performance, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] [assembly: InternalsVisibleTo("Microsoft.AspNetCore.Routing.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] +[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Properties/Resources.Designer.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Properties/Resources.Designer.cs index 6d2bb0a7c9..72372c4a89 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Properties/Resources.Designer.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Properties/Resources.Designer.cs @@ -402,6 +402,146 @@ namespace Microsoft.AspNetCore.Routing internal static string FormatTemplateRoute_Exception(object p0, object p1) => string.Format(CultureInfo.CurrentCulture, GetString("TemplateRoute_Exception"), p0, p1); + /// + /// The request matched multiple endpoints. Matches: {0}{0}{1} + /// + internal static string AmbiguousEndpoints + { + get => GetString("AmbiguousEndpoints"); + } + + /// + /// The request matched multiple endpoints. Matches: {0}{0}{1} + /// + internal static string FormatAmbiguousEndpoints(object p0, object p1) + => string.Format(CultureInfo.CurrentCulture, GetString("AmbiguousEndpoints"), p0, p1); + + /// + /// Value cannot be null or empty. + /// + internal static string Argument_NullOrEmpty + { + get => GetString("Argument_NullOrEmpty"); + } + + /// + /// Value cannot be null or empty. + /// + internal static string FormatArgument_NullOrEmpty() + => GetString("Argument_NullOrEmpty"); + + /// + /// The collection cannot be empty. + /// + internal static string RoutePatternBuilder_CollectionCannotBeEmpty + { + get => GetString("RoutePatternBuilder_CollectionCannotBeEmpty"); + } + + /// + /// The collection cannot be empty. + /// + internal static string FormatRoutePatternBuilder_CollectionCannotBeEmpty() + => GetString("RoutePatternBuilder_CollectionCannotBeEmpty"); + + /// + /// The constraint entry '{0}' - '{1}' must have a string value or be of a type which implements '{2}'. + /// + internal static string ConstraintMustBeStringOrConstraint + { + get => GetString("ConstraintMustBeStringOrConstraint"); + } + + /// + /// The constraint entry '{0}' - '{1}' must have a string value or be of a type which implements '{2}'. + /// + internal static string FormatConstraintMustBeStringOrConstraint(object p0, object p1, object p2) + => string.Format(CultureInfo.CurrentCulture, GetString("ConstraintMustBeStringOrConstraint"), p0, p1, p2); + + /// + /// Invalid constraint '{0}'. A constraint must be of type 'string' or '{1}'. + /// + internal static string RoutePattern_InvalidConstraintReference + { + get => GetString("RoutePattern_InvalidConstraintReference"); + } + + /// + /// Invalid constraint '{0}'. A constraint must be of type 'string' or '{1}'. + /// + internal static string FormatRoutePattern_InvalidConstraintReference(object p0, object p1) + => string.Format(CultureInfo.CurrentCulture, GetString("RoutePattern_InvalidConstraintReference"), p0, p1); + + /// + /// Invalid constraint '{0}' for parameter '{1}'. A constraint must be of type 'string', '{2}', or '{3}'. + /// + internal static string RoutePattern_InvalidParameterConstraintReference + { + get => GetString("RoutePattern_InvalidParameterConstraintReference"); + } + + /// + /// Invalid constraint '{0}' for parameter '{1}'. A constraint must be of type 'string', '{2}', or '{3}'. + /// + internal static string FormatRoutePattern_InvalidParameterConstraintReference(object p0, object p1, object p2, object p3) + => string.Format(CultureInfo.CurrentCulture, GetString("RoutePattern_InvalidParameterConstraintReference"), p0, p1, p2, p3); + + /// + /// The constraint reference '{0}' could not be resolved to a type. Register the constraint type with '{1}.{2}'. + /// + internal static string RoutePattern_ConstraintReferenceNotFound + { + get => GetString("RoutePattern_ConstraintReferenceNotFound"); + } + + /// + /// The constraint reference '{0}' could not be resolved to a type. Register the constraint type with '{1}.{2}'. + /// + internal static string FormatRoutePattern_ConstraintReferenceNotFound(object p0, object p1, object p2) + => string.Format(CultureInfo.CurrentCulture, GetString("RoutePattern_ConstraintReferenceNotFound"), p0, p1, p2); + + /// + /// Invalid constraint type '{0}' registered as '{1}'. A constraint type must either implement '{2}', or inherit from '{3}'. + /// + internal static string RoutePattern_InvalidStringConstraintReference + { + get => GetString("RoutePattern_InvalidStringConstraintReference"); + } + + /// + /// Invalid constraint type '{0}' registered as '{1}'. A constraint type must either implement '{2}', or inherit from '{3}'. + /// + internal static string FormatRoutePattern_InvalidStringConstraintReference(object p0, object p1, object p2, object p3) + => string.Format(CultureInfo.CurrentCulture, GetString("RoutePattern_InvalidStringConstraintReference"), p0, p1, p2, p3); + + /// + /// Endpoints with endpoint name '{0}': + /// + internal static string DuplicateEndpointNameEntry + { + get => GetString("DuplicateEndpointNameEntry"); + } + + /// + /// Endpoints with endpoint name '{0}': + /// + internal static string FormatDuplicateEndpointNameEntry(object p0) + => string.Format(CultureInfo.CurrentCulture, GetString("DuplicateEndpointNameEntry"), p0); + + /// + /// The following endpoints with a duplicate endpoint name were found. + /// + internal static string DuplicateEndpointNameHeader + { + get => GetString("DuplicateEndpointNameHeader"); + } + + /// + /// The following endpoints with a duplicate endpoint name were found. + /// + internal static string FormatDuplicateEndpointNameHeader() + => GetString("DuplicateEndpointNameHeader"); + private static string GetString(string name, params string[] formatterNames) { var value = _resourceManager.GetString(name); diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Resources.resx b/src/Routing/src/Microsoft.AspNetCore.Routing/Resources.resx index d883906f7c..6ce5d8ff00 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Resources.resx +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Resources.resx @@ -201,4 +201,34 @@ An error occurred while creating the route with name '{0}' and template '{1}'. + + The request matched multiple endpoints. Matches: {0}{0}{1} + + + Value cannot be null or empty. + + + The collection cannot be empty. + + + The constraint entry '{0}' - '{1}' must have a string value or be of a type which implements '{2}'. + + + Invalid constraint '{0}'. A constraint must be of type 'string' or '{1}'. + + + Invalid constraint '{0}' for parameter '{1}'. A constraint must be of type 'string', '{2}', or '{3}'. + + + The constraint reference '{0}' could not be resolved to a type. Register the constraint type with '{1}.{2}'. + + + Invalid constraint type '{0}' registered as '{1}'. A constraint type must either implement '{2}', or inherit from '{3}'. + + + Endpoints with endpoint name '{0}': + + + The following endpoints with a duplicate endpoint name were found. + \ No newline at end of file diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/RouteBase.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/RouteBase.cs index 6d1eb7bd27..984862e1df 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/RouteBase.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/RouteBase.cs @@ -208,6 +208,14 @@ namespace Microsoft.AspNetCore.Routing { if (parameter.DefaultValue != null) { +#if RVD_TryAdd + if (!result.TryAdd(parameter.Name, parameter.DefaultValue)) + { + throw new InvalidOperationException( + Resources.FormatTemplateRoute_CannotHaveDefaultValueSpecifiedInlineAndExplicitly( + parameter.Name)); + } +#else if (result.ContainsKey(parameter.Name)) { throw new InvalidOperationException( @@ -218,6 +226,7 @@ namespace Microsoft.AspNetCore.Routing { result.Add(parameter.Name, parameter.DefaultValue); } +#endif } } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/RouteCollection.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/RouteCollection.cs index a2dae64291..555fdd63ae 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/RouteCollection.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/RouteCollection.cs @@ -91,8 +91,8 @@ namespace Microsoft.AspNetCore.Routing if (!string.IsNullOrEmpty(context.RouteName)) { VirtualPathData namedRoutePathData = null; - INamedRouter matchedNamedRoute; - if (_namedRoutes.TryGetValue(context.RouteName, out matchedNamedRoute)) + + if (_namedRoutes.TryGetValue(context.RouteName, out var matchedNamedRoute)) { namedRoutePathData = matchedNamedRoute.GetVirtualPath(context); } @@ -156,7 +156,12 @@ namespace Microsoft.AspNetCore.Routing urlWithoutQueryString = urlWithoutQueryString.ToLowerInvariant(); } - if (_options.AppendTrailingSlash && !urlWithoutQueryString.EndsWith("/")) + if (_options.LowercaseUrls && _options.LowercaseQueryStrings) + { + queryString = queryString.ToLowerInvariant(); + } + + if (_options.AppendTrailingSlash && !urlWithoutQueryString.EndsWith("/", StringComparison.Ordinal)) { urlWithoutQueryString += "/"; } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/RouteConstraintBuilder.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/RouteConstraintBuilder.cs index c230ed0e96..5bb40282a6 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/RouteConstraintBuilder.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/RouteConstraintBuilder.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using Microsoft.AspNetCore.Routing.Constraints; +using Microsoft.AspNetCore.Routing.Internal; namespace Microsoft.AspNetCore.Routing { @@ -22,7 +23,7 @@ namespace Microsoft.AspNetCore.Routing private readonly Dictionary> _constraints; private readonly HashSet _optionalParameters; /// - /// Creates a new instance. + /// Creates a new instance of instance. /// /// The . /// The display name (for use in error messages). @@ -158,6 +159,11 @@ namespace Microsoft.AspNetCore.Routing _displayName, _inlineConstraintResolver.GetType().Name)); } + else if (constraint == NullRouteConstraint.Instance) + { + // A null route constraint can be returned for other parameter policy types + return; + } Add(key, constraint); } @@ -178,8 +184,7 @@ namespace Microsoft.AspNetCore.Routing private void Add(string key, IRouteConstraint constraint) { - List list; - if (!_constraints.TryGetValue(key, out list)) + if (!_constraints.TryGetValue(key, out var list)) { list = new List(); _constraints.Add(key, list); diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/RouteConstraintMatcher.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/RouteConstraintMatcher.cs index 8601d85581..d19a743fad 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/RouteConstraintMatcher.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/RouteConstraintMatcher.cs @@ -51,8 +51,7 @@ namespace Microsoft.AspNetCore.Routing { if (routeDirection.Equals(RouteDirection.IncomingRequest)) { - object routeValue; - routeValues.TryGetValue(kvp.Key, out routeValue); + routeValues.TryGetValue(kvp.Key, out var routeValue); logger.RouteValueDoesNotMatchConstraint(routeValue, kvp.Key, kvp.Value); } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/RouteEndpoint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/RouteEndpoint.cs new file mode 100644 index 0000000000..a6750a2ef6 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/RouteEndpoint.cs @@ -0,0 +1,63 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Patterns; + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Represents an that can be used in URL matching or URL generation. + /// + public sealed class RouteEndpoint : Endpoint + { + /// + /// Initializes a new instance of the class. + /// + /// The delegate used to process requests for the endpoint. + /// The to use in URL matching. + /// The order assigned to the endpoint. + /// + /// The or metadata associated with the endpoint. + /// + /// The informational display name of the endpoint. + public RouteEndpoint( + RequestDelegate requestDelegate, + RoutePattern routePattern, + int order, + EndpointMetadataCollection metadata, + string displayName) + : base(requestDelegate, metadata, displayName) + { + if (requestDelegate == null) + { + throw new ArgumentNullException(nameof(requestDelegate)); + } + + if (routePattern == null) + { + throw new ArgumentNullException(nameof(routePattern)); + } + + RoutePattern = routePattern; + Order = order; + } + + /// + /// Gets the order value of endpoint. + /// + /// + /// The order value provides absolute control over the priority + /// of an endpoint. Endpoints with a lower numeric value of order have higher priority. + /// + public int Order { get; } + + /// + /// Gets the associated with the endpoint. + /// + public RoutePattern RoutePattern { get; } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/RouteOptions.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/RouteOptions.cs index 1ae47ed13f..efabde03a1 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/RouteOptions.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/RouteOptions.cs @@ -10,10 +10,17 @@ namespace Microsoft.AspNetCore.Routing public class RouteOptions { /// - /// Gets or sets a value indicating whether all generated URLs are lower-case. + /// Gets or sets a value indicating whether all generated paths URLs are lower-case. + /// Use to configure the behavior for query strings. /// public bool LowercaseUrls { get; set; } + /// + /// Gets or sets a value indicating whether a generated query strings are lower-case. + /// This property will not be used unless is also true. + /// + public bool LowercaseQueryStrings { get; set; } + /// /// Gets or sets a value indicating whether a trailing slash should be appended to the generated URLs. /// diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/RouteValuesAddress.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/RouteValuesAddress.cs new file mode 100644 index 0000000000..eec1660854 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/RouteValuesAddress.cs @@ -0,0 +1,26 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// An address of route name and values. + /// + public class RouteValuesAddress + { + /// + /// Gets or sets the route name. + /// + public string RouteName { get; set; } + + /// + /// Gets or sets the route values that are explicitly specified. + /// + public RouteValueDictionary ExplicitValues { get; set; } + + /// + /// Gets or sets ambient route values from the current HTTP request. + /// + public RouteValueDictionary AmbientValues { get; set; } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/RouteValuesAddressMetadata.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/RouteValuesAddressMetadata.cs new file mode 100644 index 0000000000..c901d185ee --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/RouteValuesAddressMetadata.cs @@ -0,0 +1,87 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using System.Linq; + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Metadata used during link generation to find the associated endpoint using route values. + /// + [DebuggerDisplay("{DebuggerToString(),nq}")] + public sealed class RouteValuesAddressMetadata : IRouteValuesAddressMetadata + { + private static readonly IReadOnlyDictionary EmptyRouteValues = + new ReadOnlyDictionary(new Dictionary()); + + /// + /// Creates a new instance of with the provided route name. + /// + /// The route name. Can be null. + public RouteValuesAddressMetadata(string routeName) : this(routeName, EmptyRouteValues) + { + } + + /// + /// Creates a new instance of with the provided required route values. + /// + /// The required route values. + public RouteValuesAddressMetadata(IReadOnlyDictionary requiredValues) : this(null, requiredValues) + { + } + + /// + /// Creates a new instance of with the provided route name and required route values. + /// + /// The route name. Can be null. + /// The required route values. + public RouteValuesAddressMetadata(string routeName, IReadOnlyDictionary requiredValues) + { + if (requiredValues == null) + { + throw new ArgumentNullException(nameof(requiredValues)); + } + + RouteName = routeName; + RequiredValues = requiredValues; + } + + /// + /// Gets the route name. Can be null. + /// + public string RouteName { get; } + + /// + /// Gets the required route values. + /// + public IReadOnlyDictionary RequiredValues { get; } + + internal string DebuggerToString() + { + return $"Name: {RouteName} - Required values: {string.Join(", ", FormatValues(RequiredValues))}"; + + IEnumerable FormatValues(IEnumerable> values) + { + if (values == null) + { + return Array.Empty(); + } + + return values.Select( + kvp => + { + var value = "null"; + if (kvp.Value != null) + { + value = "\"" + kvp.Value.ToString() + "\""; + } + return kvp.Key + " = " + value; + }); + } + } + } +} \ No newline at end of file diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/RouteValuesAddressScheme.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/RouteValuesAddressScheme.cs new file mode 100644 index 0000000000..ae7bd66705 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/RouteValuesAddressScheme.cs @@ -0,0 +1,171 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Internal; +using Microsoft.AspNetCore.Routing.Template; +using Microsoft.AspNetCore.Routing.Tree; +using Microsoft.Extensions.Primitives; + +namespace Microsoft.AspNetCore.Routing +{ + internal class RouteValuesAddressScheme : IEndpointAddressScheme + { + private readonly CompositeEndpointDataSource _dataSource; + private LinkGenerationDecisionTree _allMatchesLinkGenerationTree; + private Dictionary> _namedMatchResults; + + public RouteValuesAddressScheme(CompositeEndpointDataSource dataSource) + { + _dataSource = dataSource; + + // Build initial matches + BuildOutboundMatches(); + + // Register for changes in endpoints + ChangeToken.OnChange( + _dataSource.GetChangeToken, + HandleChange); + } + + public IEnumerable FindEndpoints(RouteValuesAddress address) + { + IList matchResults = null; + if (string.IsNullOrEmpty(address.RouteName)) + { + matchResults = _allMatchesLinkGenerationTree.GetMatches( + address.ExplicitValues, + address.AmbientValues); + } + else if (_namedMatchResults.TryGetValue(address.RouteName, out var namedMatchResults)) + { + matchResults = namedMatchResults; + } + + if (matchResults != null) + { + var matchCount = matchResults.Count; + if (matchCount > 0) + { + if (matchResults.Count == 1) + { + // Special case having a single result to avoid creating iterator state machine + return new[] { (RouteEndpoint)matchResults[0].Match.Entry.Data }; + } + else + { + // Use separate method since one cannot have regular returns in an iterator method + return GetEndpoints(matchResults, matchCount); + } + } + } + + return Array.Empty(); + } + + private static IEnumerable GetEndpoints(IList matchResults, int matchCount) + { + for (var i = 0; i < matchCount; i++) + { + yield return (RouteEndpoint)matchResults[i].Match.Entry.Data; + } + } + + private void HandleChange() + { + // rebuild the matches + BuildOutboundMatches(); + + // re-register the callback as the change token is one time use only and a new change token + // is produced every time + ChangeToken.OnChange( + _dataSource.GetChangeToken, + HandleChange); + } + + private void BuildOutboundMatches() + { + // Refresh the matches in the case where a datasource's endpoints changes. The following is OK to do + // as refresh of new endpoints happens within a lock and also these fields are not publicly accessible. + var (allMatches, namedMatchResults) = GetOutboundMatches(); + _namedMatchResults = namedMatchResults; + _allMatchesLinkGenerationTree = new LinkGenerationDecisionTree(allMatches); + } + + /// Decision tree is built using the 'required values' of actions. + /// - When generating a url using route values, decision tree checks the explicitly supplied route values + + /// ambient values to see if they have a match for the required-values-based-tree. + /// - When generating a url using route name, route values for controller, action etc.might not be provided + /// (this is expected because as a user I want to avoid writing all those and instead chose to use a + /// routename which is quick). So since these values are not provided and might not be even in ambient + /// values, decision tree would fail to find a match. So for this reason decision tree is not used for named + /// matches. Instead all named matches are returned as is and the LinkGenerator uses a TemplateBinder to + /// decide which of the matches can generate a url. + /// For example, for a route defined like below with current ambient values like new { controller = "Home", + /// action = "Index" } + /// "api/orders/{id}", + /// routeName: "OrdersApi", + /// defaults: new { controller = "Orders", action = "GetById" }, + /// requiredValues: new { controller = "Orders", action = "GetById" }, + /// A call to GetLink("OrdersApi", new { id = "10" }) cannot generate url as neither the supplied values or + /// current ambient values do not satisfy the decision tree that is built based on the required values. + protected virtual (List, Dictionary>) GetOutboundMatches() + { + var allOutboundMatches = new List(); + var namedOutboundMatchResults = new Dictionary>( + StringComparer.OrdinalIgnoreCase); + + foreach (var endpoint in _dataSource.Endpoints) + { + if (!(endpoint is RouteEndpoint routeEndpoint)) + { + continue; + } + + if (endpoint.Metadata.GetMetadata()?.SuppressLinkGeneration == true) + { + continue; + } + + var entry = CreateOutboundRouteEntry(routeEndpoint); + + var outboundMatch = new OutboundMatch() { Entry = entry }; + allOutboundMatches.Add(outboundMatch); + + if (string.IsNullOrEmpty(entry.RouteName)) + { + continue; + } + + if (!namedOutboundMatchResults.TryGetValue(entry.RouteName, out var matchResults)) + { + matchResults = new List(); + namedOutboundMatchResults.Add(entry.RouteName, matchResults); + } + matchResults.Add(new OutboundMatchResult(outboundMatch, isFallbackMatch: false)); + } + + return (allOutboundMatches, namedOutboundMatchResults); + } + + private OutboundRouteEntry CreateOutboundRouteEntry(RouteEndpoint endpoint) + { + var routeValuesAddressMetadata = endpoint.Metadata.GetMetadata(); + var entry = new OutboundRouteEntry() + { + Handler = NullRouter.Instance, + Order = endpoint.Order, + Precedence = RoutePrecedence.ComputeOutbound(endpoint.RoutePattern), + RequiredLinkValues = new RouteValueDictionary(routeValuesAddressMetadata?.RequiredValues), + RouteTemplate = new RouteTemplate(endpoint.RoutePattern), + Data = endpoint, + RouteName = routeValuesAddressMetadata?.RouteName, + }; + entry.Defaults = new RouteValueDictionary(endpoint.RoutePattern.Defaults); + return entry; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/SuppressLinkGenerationMetadata.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/SuppressLinkGenerationMetadata.cs new file mode 100644 index 0000000000..4ff3e86a9f --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/SuppressLinkGenerationMetadata.cs @@ -0,0 +1,17 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Represents metadata used during link generation. If is true + /// the associated endpoint will not be used for link generation. + /// + public sealed class SuppressLinkGenerationMetadata : ISuppressLinkGenerationMetadata + { + /// + /// Gets a value indicating whether the assocated endpoint should be used for link generation. + /// + public bool SuppressLinkGeneration => true; + } +} \ No newline at end of file diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/SuppressMatchingMetadata.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/SuppressMatchingMetadata.cs new file mode 100644 index 0000000000..b7edd60f16 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/SuppressMatchingMetadata.cs @@ -0,0 +1,17 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing +{ + /// + /// Metadata used to prevent URL matching. If is true the + /// associated endpoint will not be considered for URL matching. + /// + public sealed class SuppressMatchingMetadata : ISuppressMatchingMetadata + { + /// + /// Gets a value indicating whether the assocated endpoint should be used for URL matching. + /// + public bool SuppressMatching => true; + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Template/InlineConstraint.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Template/InlineConstraint.cs index 5c50eefb0e..a711ecb136 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Template/InlineConstraint.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Template/InlineConstraint.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using Microsoft.AspNetCore.Routing.Patterns; namespace Microsoft.AspNetCore.Routing.Template { @@ -11,7 +12,7 @@ namespace Microsoft.AspNetCore.Routing.Template public class InlineConstraint { /// - /// Creates a new . + /// Creates a new instance of . /// /// The constraint text. public InlineConstraint(string constraint) @@ -24,6 +25,16 @@ namespace Microsoft.AspNetCore.Routing.Template Constraint = constraint; } + public InlineConstraint(RoutePatternParameterPolicyReference other) + { + if (other == null) + { + throw new ArgumentNullException(nameof(other)); + } + + Constraint = other.Content; + } + /// /// Gets the constraint text. /// diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Template/RoutePrecedence.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Template/RoutePrecedence.cs index 663f455923..4d7ba66b35 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Template/RoutePrecedence.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Template/RoutePrecedence.cs @@ -4,6 +4,7 @@ using System; using System.Diagnostics; using System.Linq; +using Microsoft.AspNetCore.Routing.Patterns; namespace Microsoft.AspNetCore.Routing.Template { @@ -36,6 +37,24 @@ namespace Microsoft.AspNetCore.Routing.Template return precedence; } + // See description on ComputeInbound(RouteTemplate) + internal static decimal ComputeInbound(RoutePattern routePattern) + { + var precedence = 0m; + + for (var i = 0; i < routePattern.PathSegments.Count; i++) + { + var segment = routePattern.PathSegments[i]; + + var digit = ComputeInboundPrecedenceDigit(segment); + Debug.Assert(digit >= 0 && digit < 10); + + precedence += decimal.Divide(digit, (decimal)Math.Pow(10, i)); + } + + return precedence; + } + // Compute the precedence for generating a url // e.g.: /api/template == 5.5 // /api/template/{id} == 5.53 @@ -60,6 +79,26 @@ namespace Microsoft.AspNetCore.Routing.Template return precedence; } + // see description on ComputeOutbound(RouteTemplate) + internal static decimal ComputeOutbound(RoutePattern routePattern) + { + // Each precedence digit corresponds to one decimal place. For example, 3 segments with precedences 2, 1, + // and 4 results in a combined precedence of 2.14 (decimal). + var precedence = 0m; + + for (var i = 0; i < routePattern.PathSegments.Count; i++) + { + var segment = routePattern.PathSegments[i]; + + var digit = ComputeOutboundPrecedenceDigit(segment); + Debug.Assert(digit >= 0 && digit < 10); + + precedence += decimal.Divide(digit, (decimal)Math.Pow(10, i)); + } + + return precedence; + } + // Segments have the following order: // 5 - Literal segments // 4 - Multi-part segments && Constrained parameter segments @@ -92,6 +131,38 @@ namespace Microsoft.AspNetCore.Routing.Template } } + // See description on ComputeOutboundPrecedenceDigit(TemplateSegment segment) + private static int ComputeOutboundPrecedenceDigit(RoutePatternPathSegment pathSegment) + { + if (pathSegment.Parts.Count > 1) + { + return 4; + } + + var part = pathSegment.Parts[0]; + if (part.IsLiteral) + { + return 5; + } + else if (part is RoutePatternParameterPart parameterPart) + { + Debug.Assert(parameterPart != null); + var digit = parameterPart.IsCatchAll ? 1 : 3; + + if (parameterPart.ParameterPolicies.Count > 0) + { + digit++; + } + + return digit; + } + else + { + // Unreachable + throw new NotSupportedException(); + } + } + // Segments have the following order: // 1 - Literal segments // 2 - Constrained parameter segments / Multi-part segments @@ -127,5 +198,40 @@ namespace Microsoft.AspNetCore.Routing.Template return digit; } } + + // see description on ComputeInboundPrecedenceDigit(TemplateSegment segment) + private static int ComputeInboundPrecedenceDigit(RoutePatternPathSegment pathSegment) + { + if (pathSegment.Parts.Count > 1) + { + // Multi-part segments should appear after literal segments and along with parameter segments + return 2; + } + + var part = pathSegment.Parts[0]; + // Literal segments always go first + if (part.IsLiteral) + { + return 1; + } + else if (part is RoutePatternParameterPart parameterPart) + { + var digit = parameterPart.IsCatchAll ? 5 : 3; + + // If there is a route constraint for the parameter, reduce order by 1 + // Constrained parameters end up with order 2, Constrained catch alls end up with order 4 + if (parameterPart.ParameterPolicies.Count > 0) + { + digit--; + } + + return digit; + } + else + { + // Unreachable + throw new NotSupportedException(); + } + } } } \ No newline at end of file diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Template/RouteTemplate.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Template/RouteTemplate.cs index d482f3a1b4..ff41bf6af7 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Template/RouteTemplate.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Template/RouteTemplate.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using Microsoft.AspNetCore.Routing.Patterns; namespace Microsoft.AspNetCore.Routing.Template { @@ -13,6 +14,25 @@ namespace Microsoft.AspNetCore.Routing.Template { private const string SeparatorString = "/"; + public RouteTemplate(RoutePattern other) + { + TemplateText = other.RawText; + Segments = new List(other.PathSegments.Select(p => new TemplateSegment(p))); + Parameters = new List(); + for (var i = 0; i < Segments.Count; i++) + { + var segment = Segments[i]; + for (var j = 0; j < segment.Parts.Count; j++) + { + var part = segment.Parts[j]; + if (part.IsParameter) + { + Parameters.Add(part); + } + } + } + } + public RouteTemplate(string template, List segments) { if (segments == null) @@ -78,5 +98,16 @@ namespace Microsoft.AspNetCore.Routing.Template return null; } + + /// + /// Converts the to the equivalent + /// + /// + /// A . + public RoutePattern ToRoutePattern() + { + var segments = Segments.Select(s => s.ToRoutePatternPathSegment()); + return RoutePatternFactory.Pattern(TemplateText, segments); + } } } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplateBinder.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplateBinder.cs index 802352e935..7bba419d12 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplateBinder.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplateBinder.cs @@ -3,10 +3,15 @@ using System; using System.Collections; +using System.Collections.Generic; using System.Diagnostics; using System.Globalization; +using System.Linq; +using System.Runtime.CompilerServices; using System.Text.Encodings.Web; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Routing.Internal; +using Microsoft.AspNetCore.Routing.Patterns; using Microsoft.Extensions.ObjectPool; namespace Microsoft.AspNetCore.Routing.Template @@ -16,9 +21,17 @@ namespace Microsoft.AspNetCore.Routing.Template private readonly UrlEncoder _urlEncoder; private readonly ObjectPool _pool; + private readonly (string parameterName, IRouteConstraint constraint)[] _constraints; private readonly RouteValueDictionary _defaults; - private readonly RouteValueDictionary _filters; - private readonly RouteTemplate _template; + private readonly KeyValuePair[] _filters; + private readonly (string parameterName, IOutboundParameterTransformer transformer)[] _parameterTransformers; + private readonly RoutePattern _pattern; + private readonly string[] _requiredKeys; + + // A pre-allocated template for the 'known' route values that this template binder uses. + // + // We always make a copy of this and operate on the copy, so that we don't mutate shared state. + private readonly KeyValuePair[] _slots; /// /// Creates a new instance of . @@ -32,6 +45,28 @@ namespace Microsoft.AspNetCore.Routing.Template ObjectPool pool, RouteTemplate template, RouteValueDictionary defaults) + : this(urlEncoder, pool, template?.ToRoutePattern(), defaults, requiredKeys: null, parameterPolicies: null) + { + } + + /// + /// Creates a new instance of . + /// + /// The . + /// The . + /// The to bind values to. + /// The default values for . Optional. + /// Keys used to determine if the ambient values apply. Optional. + /// + /// A list of (, ) pairs to evalute when producing a URI. + /// + public TemplateBinder( + UrlEncoder urlEncoder, + ObjectPool pool, + RoutePattern pattern, + RouteValueDictionary defaults, + IEnumerable requiredKeys, + IEnumerable<(string parameterName, IParameterPolicy policy)> parameterPolicies) { if (urlEncoder == null) { @@ -43,30 +78,118 @@ namespace Microsoft.AspNetCore.Routing.Template throw new ArgumentNullException(nameof(pool)); } - if (template == null) + if (pattern == null) { - throw new ArgumentNullException(nameof(template)); + throw new ArgumentNullException(nameof(pattern)); } _urlEncoder = urlEncoder; _pool = pool; - _template = template; + _pattern = pattern; _defaults = defaults; + _requiredKeys = requiredKeys?.ToArray() ?? Array.Empty(); // Any default that doesn't have a corresponding parameter is a 'filter' and if a value // is provided for that 'filter' it must match the value in defaults. - _filters = new RouteValueDictionary(_defaults); - foreach (var parameter in _template.Parameters) + var filters = new RouteValueDictionary(_defaults); + for (var i = 0; i < pattern.Parameters.Count; i++) { - _filters.Remove(parameter.Name); + filters.Remove(pattern.Parameters[i].Name); } + _filters = filters.ToArray(); + + _constraints = parameterPolicies + ?.Where(p => p.policy is IRouteConstraint) + .Select(p => (p.parameterName, (IRouteConstraint)p.policy)) + .ToArray() ?? Array.Empty<(string, IRouteConstraint)>(); + _parameterTransformers = parameterPolicies + ?.Where(p => p.policy is IOutboundParameterTransformer) + .Select(p => (p.parameterName, (IOutboundParameterTransformer)p.policy)) + .ToArray() ?? Array.Empty<(string, IOutboundParameterTransformer)>(); + + _slots = AssignSlots(_pattern, _filters); } // Step 1: Get the list of values we're going to try to use to match and generate this URI public TemplateValuesResult GetValues(RouteValueDictionary ambientValues, RouteValueDictionary values) { - var context = new TemplateBindingContext(_defaults); + // Make a new copy of the slots array, we'll use this as 'scratch' space + // and then the RVD will take ownership of it. + var slots = new KeyValuePair[_slots.Length]; + Array.Copy(_slots, 0, slots, 0, slots.Length); + // Keeping track of the number of 'values' and 'ambient values' we've processed can be used to avoid doing + // some expensive 'merge' operations later. + var valueProcessedCount = 0; + var ambientValueProcessedCount = 0; + + // Start by copying all of the values out of the 'values' and into the slots. There's no success + // case where we *don't* use all of the 'values' so there's no reason not to do this up front + // to avoid visiting the values dictionary again and again. + for (var i = 0; i < slots.Length; i++) + { + var key = slots[i].Key; + if (values.TryGetValue(key, out var value)) + { + // We will need to know later if the value in the 'values' was an null value. + // This affects how we process ambient values. Since the 'slots' are initialized + // with null values, we use the null-object-pattern to track 'explicit null', which means that + // null means omitted. + value = IsRoutePartNonEmpty(value) ? value : SentinullValue.Instance; + slots[i] = new KeyValuePair(key, value); + + // Track the count of processed values - this allows a fast path later. + valueProcessedCount++; + } + } + + // In Endpoint Routing, patterns can have logical parameters that appear 'to the left' of + // the route template. This governs whether or not the template can be selected (they act like + // filters), and whether the remaining ambient values should be used. + // should be used. + // For example, in case of MVC it flattens out a route template like below + // {controller}/{action}/{id?} + // to + // Products/Index/{id?}, + // defaults: new { controller = "Products", action = "Index" }, + // requiredValues: new { controller = "Products", action = "Index" } + // In the above example, "controller" and "action" are no longer parameters. + var copyAmbientValues = ambientValues != null; + if (copyAmbientValues) + { + var requiredKeys = _requiredKeys; + for (var i = 0; i < requiredKeys.Length; i++) + { + // For each required key, the values and ambient values need to have the same value. + var key = requiredKeys[i]; + var hasExplicitValue = values.TryGetValue(key, out var value); + + if (ambientValues == null || !ambientValues.TryGetValue(key, out var ambientValue)) + { + ambientValue = null; + } + else + { + // Track the count of processed ambient values - this allows a fast path later. + ambientValueProcessedCount++; + } + + if (hasExplicitValue) + { + // Note that we don't increment valueProcessedCount here. We expect required values + // to also be filters, which are tracked when we populate 'slots'. + if (!RoutePartsEqual(value, ambientValue)) + { + copyAmbientValues = false; + break; + } + } + } + } + + // We can now process the rest of the parameters (from left to right) and copy the ambient + // values as long as the conditions are met. + // // Find out which entries in the URI are valid for the URI we want to generate. // If the URI had ordered parameters a="1", b="2", c="3" and the new values // specified that b="9", then we need to invalidate everything after it. The new @@ -74,202 +197,277 @@ namespace Microsoft.AspNetCore.Routing.Template // // We also handle the case where a parameter is optional but has no value - we shouldn't // accept additional parameters that appear *after* that parameter. - for (var i = 0; i < _template.Parameters.Count; i++) + var parameters = _pattern.Parameters; + var parameterCount = _pattern.Parameters.Count; + for (var i = 0; i < parameterCount; i++) { - var parameter = _template.Parameters[i]; + var key = slots[i].Key; + var value = slots[i].Value; - // If it's a parameter subsegment, examine the current value to see if it matches the new value - var parameterName = parameter.Name; + // Whether or not the value was explicitly provided is signficant when comparing + // ambient values. Remember that we're using a special sentinel value so that we + // can tell the difference between an omitted value and an explicitly specified null. + var hasExplicitValue = value != null; - object newParameterValue; - var hasNewParameterValue = values.TryGetValue(parameterName, out newParameterValue); + var hasAmbientValue = false; + var ambientValue = (object)null; - object currentParameterValue = null; - var hasCurrentParameterValue = ambientValues != null && - ambientValues.TryGetValue(parameterName, out currentParameterValue); + var parameter = parameters[i]; - if (hasNewParameterValue && hasCurrentParameterValue) + if (copyAmbientValues) { - if (!RoutePartsEqual(currentParameterValue, newParameterValue)) + hasAmbientValue = ambientValues != null && ambientValues.TryGetValue(key, out ambientValue); + if (hasAmbientValue) + { + // Track the count of processed ambient values - this allows a fast path later. + ambientValueProcessedCount++; + } + + if (hasExplicitValue && hasAmbientValue && !RoutePartsEqual(ambientValue, value)) { // Stop copying current values when we find one that doesn't match - break; + copyAmbientValues = false; } - } - if (!hasNewParameterValue && - !hasCurrentParameterValue && - _defaults?.ContainsKey(parameter.Name) != true) - { - // This is an unsatisfied parameter value and there are no defaults. We might still - // be able to generate a URL but we should stop 'accepting' ambient values. - // - // This might be a case like: - // template: a/{b?}/{c?} - // ambient: { c = 17 } - // values: { } - // - // We can still generate a URL from this ("/a") but we shouldn't accept 'c' because - // we can't use it. - // - // In the example above we should fall into this block for 'b'. - break; + if (!hasExplicitValue && + !hasAmbientValue && + _defaults?.ContainsKey(parameter.Name) != true) + { + // This is an unsatisfied parameter value and there are no defaults. We might still + // be able to generate a URL but we should stop 'accepting' ambient values. + // + // This might be a case like: + // template: a/{b?}/{c?} + // ambient: { c = 17 } + // values: { } + // + // We can still generate a URL from this ("/a") but we shouldn't accept 'c' because + // we can't use it. + // + // In the example above we should fall into this block for 'b'. + copyAmbientValues = false; + } } // If the parameter is a match, add it to the list of values we will use for URI generation - if (hasNewParameterValue) + if (hasExplicitValue && !ReferenceEquals(value, SentinullValue.Instance)) { - if (IsRoutePartNonEmpty(newParameterValue)) - { - context.Accept(parameterName, newParameterValue); - } + // Already has a value in the list, do nothing + } + else if (copyAmbientValues && hasAmbientValue) + { + slots[i] = new KeyValuePair(key, ambientValue); + } + else if (parameter.IsOptional || parameter.IsCatchAll) + { + // Value isn't needed for optional or catchall parameters - wipe out the key, so it + // will be omitted from the RVD. + slots[i] = default; + } + else if (_defaults != null && _defaults.TryGetValue(parameter.Name, out var defaultValue)) + { + + // Add the default value only if there isn't already a new value for it and + // only if it actually has a default value. + slots[i] = new KeyValuePair(key, defaultValue); } else { - if (hasCurrentParameterValue) - { - context.Accept(parameterName, currentParameterValue); - } - } - } - - // Add all remaining new values to the list of values we will use for URI generation - foreach (var kvp in values) - { - if (IsRoutePartNonEmpty(kvp.Value)) - { - context.Accept(kvp.Key, kvp.Value); - } - } - - // Accept all remaining default values if they match a required parameter - for (var i = 0; i < _template.Parameters.Count; i++) - { - var parameter = _template.Parameters[i]; - if (parameter.IsOptional || parameter.IsCatchAll) - { - continue; - } - - if (context.NeedsValue(parameter.Name)) - { - // Add the default value only if there isn't already a new value for it and - // only if it actually has a default value, which we determine based on whether - // the parameter value is required. - context.AcceptDefault(parameter.Name); - } - } - - // Validate that all required parameters have a value. - for (var i = 0; i < _template.Parameters.Count; i++) - { - var parameter = _template.Parameters[i]; - if (parameter.IsOptional || parameter.IsCatchAll) - { - continue; - } - - if (!context.AcceptedValues.ContainsKey(parameter.Name)) - { - // We don't have a value for this parameter, so we can't generate a url. + // If we get here, this parameter needs a value, but doesn't have one. This is a + // failure case. return null; } } // Any default values that don't appear as parameters are treated like filters. Any new values // provided must match these defaults. - foreach (var filter in _filters) + var filters = _filters; + for (var i = 0; i < filters.Length; i++) { - var parameter = GetParameter(filter.Key); - if (parameter != null) - { - continue; - } + var key = filters[i].Key; + var value = slots[i + parameterCount].Value; - object value; - if (values.TryGetValue(filter.Key, out value)) + // We use a sentinel value here so we can track the different between omission and explicit null. + // 'real null' means that the value was omitted. + var hasExplictValue = value != null; + if (hasExplictValue) { - if (!RoutePartsEqual(value, filter.Value)) + // If there is a non-parameterized value in the route and there is a + // new value for it and it doesn't match, this route won't match. + if (!RoutePartsEqual(value, filters[i].Value)) { - // If there is a non-parameterized value in the route and there is a - // new value for it and it doesn't match, this route won't match. return null; } } + else + { + // If no value was provided, then blank out this slot so that it doesn't show up in accepted values. + slots[i + parameterCount] = default; + } + } + + // At this point we've captured all of the 'known' route values, but we have't + // handled an extra route values that were provided in 'values'. These all + // need to be included in the accepted values. + var acceptedValues = RouteValueDictionary.FromArray(slots); + + if (valueProcessedCount < values.Count) + { + // There are some values in 'value' that are unaccounted for, merge them into + // the dictionary. + foreach (var kvp in values) + { + if (!_defaults.ContainsKey(kvp.Key)) + { +#if RVD_TryAdd + acceptedValues.TryAdd(kvp.Key, kvp.Value); +#else + if (!acceptedValues.ContainsKey(kvp.Key)) + { + acceptedValues.Add(kvp.Key, kvp.Value); + } +#endif + } + } } - // Add any ambient values that don't match parameters - they need to be visible to constraints - // but they will ignored by link generation. - var combinedValues = new RouteValueDictionary(context.AcceptedValues); - if (ambientValues != null) + // Currently this copy is required because BindValues will mutate the accepted values :( + var combinedValues = new RouteValueDictionary(acceptedValues); + if (ambientValueProcessedCount < (ambientValues?.Count ?? 0)) { - foreach (var kvp in ambientValues) - { - if (IsRoutePartNonEmpty(kvp.Value)) - { - var parameter = GetParameter(kvp.Key); - if (parameter == null && !context.AcceptedValues.ContainsKey(kvp.Key)) - { - combinedValues.Add(kvp.Key, kvp.Value); - } - } - } + // Add any ambient values that don't match parameters - they need to be visible to constraints + // but they will ignored by link generation. + CopyNonParameterAmbientValues( + ambientValues: ambientValues, + acceptedValues: acceptedValues, + combinedValues: combinedValues); } return new TemplateValuesResult() { - AcceptedValues = context.AcceptedValues, + AcceptedValues = acceptedValues, CombinedValues = combinedValues, }; } + // Step 1.5: Process constraints + // + // Processes the constraints **if** they were passed in to the TemplateBinder constructor. + // Returns true on success + // Returns false + sets the name/constraint for logging on failure. + public bool TryProcessConstraints(HttpContext httpContext, RouteValueDictionary combinedValues, out string parameterName, out IRouteConstraint constraint) + { + var constraints = _constraints; + for (var i = 0; i < constraints.Length; i++) + { + (parameterName, constraint) = constraints[i]; + + if (!constraint.Match(httpContext, NullRouter.Instance, parameterName, combinedValues, RouteDirection.UrlGeneration)) + { + return false; + } + } + + parameterName = null; + constraint = null; + return true; + } + // Step 2: If the route is a match generate the appropriate URI public string BindValues(RouteValueDictionary acceptedValues) { var context = _pool.Get(); - var result = BindValues(context, acceptedValues); - _pool.Return(context); - return result; + + try + { + return TryBindValuesCore(context, acceptedValues) ? context.ToString() : null; + } + finally + { + _pool.Return(context); + } } - private string BindValues(UriBuildingContext context, RouteValueDictionary acceptedValues) + // Step 2: If the route is a match generate the appropriate URI + internal bool TryBindValues( + RouteValueDictionary acceptedValues, + LinkOptions options, + LinkOptions globalOptions, + out (PathString path, QueryString query) result) { - for (var i = 0; i < _template.Segments.Count; i++) + var context = _pool.Get(); + + context.AppendTrailingSlash = options?.AppendTrailingSlash ?? globalOptions.AppendTrailingSlash ?? false; + context.LowercaseQueryStrings = options?.LowercaseQueryStrings ?? globalOptions.LowercaseQueryStrings ?? false; + context.LowercaseUrls = options?.LowercaseUrls ?? globalOptions.LowercaseUrls ?? false; + + try + { + if (TryBindValuesCore(context, acceptedValues)) + { + result = (context.ToPathString(), context.ToQueryString()); + return true; + } + + result = default; + return false; + } + finally + { + _pool.Return(context); + } + } + + private bool TryBindValuesCore(UriBuildingContext context, RouteValueDictionary acceptedValues) + { + // If we have any output parameter transformers, allow them a chance to influence the parameter values + // before we build the URI. + var parameterTransformers = _parameterTransformers; + for (var i = 0; i < parameterTransformers.Length; i++) + { + (var parameterName, var transformer) = parameterTransformers[i]; + if (acceptedValues.TryGetValue(parameterName, out var value)) + { + acceptedValues[parameterName] = transformer.TransformOutbound(value); + } + } + + for (var i = 0; i < _pattern.PathSegments.Count; i++) { Debug.Assert(context.BufferState == SegmentState.Beginning); Debug.Assert(context.UriState == SegmentState.Beginning); - var segment = _template.Segments[i]; + var segment = _pattern.PathSegments[i]; for (var j = 0; j < segment.Parts.Count; j++) { var part = segment.Parts[j]; - if (part.IsLiteral) + if (part is RoutePatternLiteralPart literalPart) { - if (!context.Accept(part.Text)) + if (!context.Accept(literalPart.Content)) { - return null; + return false; } } - else if (part.IsParameter) + else if (part is RoutePatternSeparatorPart separatorPart) + { + if (!context.Accept(separatorPart.Content)) + { + return false; + } + } + else if (part is RoutePatternParameterPart parameterPart) { // If it's a parameter, get its value - object value; - var hasValue = acceptedValues.TryGetValue(part.Name, out value); - if (hasValue) - { - acceptedValues.Remove(part.Name); - } + acceptedValues.Remove(parameterPart.Name, out var value); var isSameAsDefault = false; - object defaultValue; - if (_defaults != null && _defaults.TryGetValue(part.Name, out defaultValue)) + if (_defaults != null && + _defaults.TryGetValue(parameterPart.Name, out var defaultValue) && + RoutePartsEqual(value, defaultValue)) { - if (RoutePartsEqual(value, defaultValue)) - { - isSameAsDefault = true; - } + isSameAsDefault = true; } var converted = Convert.ToString(value, CultureInfo.InvariantCulture); @@ -279,7 +477,7 @@ namespace Microsoft.AspNetCore.Routing.Template // we won't necessarily add it to the URI we generate. if (!context.Buffer(converted)) { - return null; + return false; } } else @@ -287,20 +485,20 @@ namespace Microsoft.AspNetCore.Routing.Template // If the value is not accepted, it is null or empty value in the // middle of the segment. We accept this if the parameter is an // optional parameter and it is preceded by an optional seperator. - // I this case, we need to remove the optional seperator that we + // In this case, we need to remove the optional seperator that we // have added to the URI // Example: template = {id}.{format?}. parameters: id=5 // In this case after we have generated "5.", we wont find any value // for format, so we remove '.' and generate 5. - if (!context.Accept(converted)) + if (!context.Accept(converted, parameterPart.EncodeSlashes)) { - if (j != 0 && part.IsOptional && segment.Parts[j - 1].IsOptionalSeperator) + if (j != 0 && parameterPart.IsOptional && (separatorPart = segment.Parts[j - 1] as RoutePatternSeparatorPart) != null) { - context.Remove(segment.Parts[j - 1].Text); + context.Remove(separatorPart.Content); } else { - return null; + return false; } } } @@ -325,45 +523,38 @@ namespace Microsoft.AspNetCore.Routing.Template { foreach (var value in values) { - wroteFirst |= AddParameterToContext(context, kvp.Key, value, wroteFirst); + wroteFirst |= AddQueryKeyValueToContext(context, kvp.Key, value, wroteFirst); } } else { - wroteFirst |= AddParameterToContext(context, kvp.Key, kvp.Value, wroteFirst); + wroteFirst |= AddQueryKeyValueToContext(context, kvp.Key, kvp.Value, wroteFirst); } } - return context.ToString(); + + return true; } - private bool AddParameterToContext(UriBuildingContext context, string key, object value, bool wroteFirst) + private bool AddQueryKeyValueToContext(UriBuildingContext context, string key, object value, bool wroteFirst) { var converted = Convert.ToString(value, CultureInfo.InvariantCulture); if (!string.IsNullOrEmpty(converted)) { - context.Writer.Write(wroteFirst ? '&' : '?'); - _urlEncoder.Encode(context.Writer, key); - context.Writer.Write('='); - _urlEncoder.Encode(context.Writer, converted); + if (context.LowercaseQueryStrings) + { + key = key.ToLowerInvariant(); + converted = converted.ToLowerInvariant(); + } + + context.QueryWriter.Write(wroteFirst ? '&' : '?'); + _urlEncoder.Encode(context.QueryWriter, key); + context.QueryWriter.Write('='); + _urlEncoder.Encode(context.QueryWriter, converted); return true; } return false; } - private TemplatePart GetParameter(string name) - { - for (var i = 0; i < _template.Parameters.Count; i++) - { - var parameter = _template.Parameters[i]; - if (string.Equals(parameter.Name, name, StringComparison.OrdinalIgnoreCase)) - { - return parameter; - } - } - - return null; - } - /// /// Compares two objects for equality as parts of a case-insensitive path. /// @@ -372,10 +563,16 @@ namespace Microsoft.AspNetCore.Routing.Template /// True if the object are equal, otherwise false. public static bool RoutePartsEqual(object a, object b) { - var sa = a as string; - var sb = b as string; + var sa = a as string ?? (ReferenceEquals(SentinullValue.Instance, a) ? string.Empty : null); + var sb = b as string ?? (ReferenceEquals(SentinullValue.Instance, b) ? string.Empty : null); - if (sa != null && sb != null) + // In case of strings, consider empty and null the same. + // Since null cannot tell us the type, consider it to be a string if the other value is a string. + if ((sa == string.Empty && sb == null) || (sb == string.Empty && sa == null)) + { + return true; + } + else if (sa != null && sb != null) { // For strings do a case-insensitive comparison return string.Equals(sa, sb, StringComparison.OrdinalIgnoreCase); @@ -395,65 +592,78 @@ namespace Microsoft.AspNetCore.Routing.Template } } - private static bool IsRoutePartNonEmpty(object routePart) + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static bool IsRoutePartNonEmpty(object part) { - var routePartString = routePart as string; - if (routePartString == null) + if (part == null) { - return routePart != null; + return false; } - else + + if (ReferenceEquals(SentinullValue.Instance, part)) { - return routePartString.Length > 0; + return false; + } + + if (part is string stringPart && stringPart.Length == 0) + { + return false; + } + + return true; + } + + private void CopyNonParameterAmbientValues( + RouteValueDictionary ambientValues, + RouteValueDictionary acceptedValues, + RouteValueDictionary combinedValues) + { + if (ambientValues == null) + { + return; + } + + foreach (var kvp in ambientValues) + { + if (IsRoutePartNonEmpty(kvp.Value)) + { + var parameter = _pattern.GetParameter(kvp.Key); + if (parameter == null && !acceptedValues.ContainsKey(kvp.Key)) + { + combinedValues.Add(kvp.Key, kvp.Value); + } + } } } - [DebuggerDisplay("{DebuggerToString(),nq}")] - private struct TemplateBindingContext + private static KeyValuePair[] AssignSlots(RoutePattern pattern, KeyValuePair[] filters) { - private readonly RouteValueDictionary _defaults; - private readonly RouteValueDictionary _acceptedValues; + var slots = new KeyValuePair[pattern.Parameters.Count + filters.Length]; - public TemplateBindingContext(RouteValueDictionary defaults) + for (var i = 0; i < pattern.Parameters.Count; i++) { - _defaults = defaults; - - _acceptedValues = new RouteValueDictionary(); + slots[i] = new KeyValuePair(pattern.Parameters[i].Name, null); } - public RouteValueDictionary AcceptedValues + for (var i = 0; i < filters.Length; i++) { - get { return _acceptedValues; } + slots[i + pattern.Parameters.Count] = new KeyValuePair(filters[i].Key, null); } - public void Accept(string key, object value) + return slots; + } + + // This represents an 'explicit null' in the slots array. + [DebuggerDisplay("explicit null")] + private class SentinullValue + { + public static object Instance = new SentinullValue(); + + private SentinullValue() { - if (!_acceptedValues.ContainsKey(key)) - { - _acceptedValues.Add(key, value); - } } - public void AcceptDefault(string key) - { - Debug.Assert(!_acceptedValues.ContainsKey(key)); - - object value; - if (_defaults != null && _defaults.TryGetValue(key, out value)) - { - _acceptedValues.Add(key, value); - } - } - - public bool NeedsValue(string key) - { - return !_acceptedValues.ContainsKey(key); - } - - private string DebuggerToString() - { - return string.Format("{{Accepted: '{0}'}}", string.Join(", ", _acceptedValues.Keys)); - } + public override string ToString() => string.Empty; } } } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplateMatcher.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplateMatcher.cs index e7cc2ab9f5..31bb97d394 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplateMatcher.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplateMatcher.cs @@ -2,10 +2,8 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.Collections.Generic; -using System.Diagnostics; +using Microsoft.AspNetCore.Routing; using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Routing.Internal; namespace Microsoft.AspNetCore.Routing.Template { @@ -19,6 +17,7 @@ namespace Microsoft.AspNetCore.Routing.Template private readonly object[] _defaultValues; private static readonly char[] Delimiters = new char[] { SeparatorChar }; + private RoutePatternMatcher _routePatternMatcher; public TemplateMatcher( RouteTemplate template, @@ -50,13 +49,15 @@ namespace Microsoft.AspNetCore.Routing.Template continue; } - object value; - if (Defaults.TryGetValue(part.Name, out value)) + if (Defaults.TryGetValue(part.Name, out var value)) { _hasDefaultValue[i] = true; _defaultValues[i] = value; } } + + var routePattern = Template.ToRoutePattern(); + _routePatternMatcher = new RoutePatternMatcher(routePattern, Defaults); } public RouteValueDictionary Defaults { get; } @@ -70,387 +71,7 @@ namespace Microsoft.AspNetCore.Routing.Template throw new ArgumentNullException(nameof(values)); } - var i = 0; - var pathTokenizer = new PathTokenizer(path); - - // Perf: We do a traversal of the request-segments + route-segments twice. - // - // For most segment-types, we only really need to any work on one of the two passes. - // - // On the first pass, we're just looking to see if there's anything that would disqualify us from matching. - // The most common case would be a literal segment that doesn't match. - // - // On the second pass, we're almost certainly going to match the URL, so go ahead and allocate the 'values' - // and start capturing strings. - foreach (var pathSegment in pathTokenizer) - { - if (pathSegment.Length == 0) - { - return false; - } - - var routeSegment = Template.GetSegment(i++); - if (routeSegment == null && pathSegment.Length > 0) - { - // If routeSegment is null, then we're out of route segments. All we can match is the empty - // string. - return false; - } - else if (routeSegment.IsSimple && routeSegment.Parts[0].IsLiteral) - { - // This is a literal segment, so we need to match the text, or the route isn't a match. - var part = routeSegment.Parts[0]; - if (!pathSegment.Equals(part.Text, StringComparison.OrdinalIgnoreCase)) - { - return false; - } - } - else if (routeSegment.IsSimple && routeSegment.Parts[0].IsCatchAll) - { - // Nothing to validate for a catch-all - it can match any string, including the empty string. - // - // Also, a catch-all has to be the last part, so we're done. - break; - } - else if (routeSegment.IsSimple && routeSegment.Parts[0].IsParameter) - { - // For a parameter, validate that it's a has some length, or we have a default, or it's optional. - var part = routeSegment.Parts[0]; - if (pathSegment.Length == 0 && - !_hasDefaultValue[i] && - !part.IsOptional) - { - // There's no value for this parameter, the route can't match. - return false; - } - } - else - { - Debug.Assert(!routeSegment.IsSimple); - - // Don't attempt to validate a complex segment at this point other than being non-emtpy, - // do it in the second pass. - } - } - - for (; i < Template.Segments.Count; i++) - { - // We've matched the request path so far, but still have remaining route segments. These need - // to be all single-part parameter segments with default values or else they won't match. - var routeSegment = Template.GetSegment(i); - Debug.Assert(routeSegment != null); - - if (!routeSegment.IsSimple) - { - // If the segment is a complex segment, it MUST contain literals, and we've parsed the full - // path so far, so it can't match. - return false; - } - - var part = routeSegment.Parts[0]; - if (part.IsLiteral) - { - // If the segment is a simple literal - which need the URL to provide a value, so we don't match. - return false; - } - - if (part.IsCatchAll) - { - // Nothing to validate for a catch-all - it can match any string, including the empty string. - // - // Also, a catch-all has to be the last part, so we're done. - break; - } - - // If we get here, this is a simple segment with a parameter. We need it to be optional, or for the - // defaults to have a value. - Debug.Assert(routeSegment.IsSimple && part.IsParameter); - if (!_hasDefaultValue[i] && !part.IsOptional) - { - // There's no default for this (non-optional) parameter so it can't match. - return false; - } - } - - // At this point we've very likely got a match, so start capturing values for real. - - i = 0; - foreach (var requestSegment in pathTokenizer) - { - var routeSegment = Template.GetSegment(i++); - - if (routeSegment.IsSimple && routeSegment.Parts[0].IsCatchAll) - { - // A catch-all captures til the end of the string. - var part = routeSegment.Parts[0]; - var captured = requestSegment.Buffer.Substring(requestSegment.Offset); - if (captured.Length > 0) - { - values[part.Name] = captured; - } - else - { - // It's ok for a catch-all to produce a null value, so we don't check _hasDefaultValue. - values[part.Name] = _defaultValues[i]; - } - - // A catch-all has to be the last part, so we're done. - break; - } - else if (routeSegment.IsSimple && routeSegment.Parts[0].IsParameter) - { - // A simple parameter captures the whole segment, or a default value if nothing was - // provided. - var part = routeSegment.Parts[0]; - if (requestSegment.Length > 0) - { - values[part.Name] = requestSegment.ToString(); - } - else - { - if (_hasDefaultValue[i]) - { - values[part.Name] = _defaultValues[i]; - } - } - } - else if (!routeSegment.IsSimple) - { - if (!MatchComplexSegment(routeSegment, requestSegment.ToString(), Defaults, values)) - { - return false; - } - } - } - - for (; i < Template.Segments.Count; i++) - { - // We've matched the request path so far, but still have remaining route segments. We already know these - // are simple parameters that either have a default, or don't need to produce a value. - var routeSegment = Template.GetSegment(i); - Debug.Assert(routeSegment != null); - Debug.Assert(routeSegment.IsSimple); - - var part = routeSegment.Parts[0]; - Debug.Assert(part.IsParameter); - - // It's ok for a catch-all to produce a null value - if (_hasDefaultValue[i] || part.IsCatchAll) - { - // Don't replace an existing value with a null. - var defaultValue = _defaultValues[i]; - if (defaultValue != null || !values.ContainsKey(part.Name)) - { - values[part.Name] = defaultValue; - } - } - } - - // Copy all remaining default values to the route data - foreach (var kvp in Defaults) - { - if (!values.ContainsKey(kvp.Key)) - { - values.Add(kvp.Key, kvp.Value); - } - } - - return true; - } - - private bool MatchComplexSegment( - TemplateSegment routeSegment, - string requestSegment, - IReadOnlyDictionary defaults, - RouteValueDictionary values) - { - var indexOfLastSegment = routeSegment.Parts.Count - 1; - - // We match the request to the template starting at the rightmost parameter - // If the last segment of template is optional, then request can match the - // template with or without the last parameter. So we start with regular matching, - // but if it doesn't match, we start with next to last parameter. Example: - // Template: {p1}/{p2}.{p3?}. If the request is one/two.three it will match right away - // giving p3 value of three. But if the request is one/two, we start matching from the - // rightmost giving p3 the value of two, then we end up not matching the segment. - // In this case we start again from p2 to match the request and we succeed giving - // the value two to p2 - if (routeSegment.Parts[indexOfLastSegment].IsOptional && - routeSegment.Parts[indexOfLastSegment - 1].IsOptionalSeperator) - { - if (MatchComplexSegmentCore(routeSegment, requestSegment, Defaults, values, indexOfLastSegment)) - { - return true; - } - else - { - if (requestSegment.EndsWith( - routeSegment.Parts[indexOfLastSegment - 1].Text, - StringComparison.OrdinalIgnoreCase)) - { - return false; - } - - return MatchComplexSegmentCore( - routeSegment, - requestSegment, - Defaults, - values, - indexOfLastSegment - 2); - } - } - else - { - return MatchComplexSegmentCore(routeSegment, requestSegment, Defaults, values, indexOfLastSegment); - } - } - - private bool MatchComplexSegmentCore( - TemplateSegment routeSegment, - string requestSegment, - IReadOnlyDictionary defaults, - RouteValueDictionary values, - int indexOfLastSegmentUsed) - { - Debug.Assert(routeSegment != null); - Debug.Assert(routeSegment.Parts.Count > 1); - - // Find last literal segment and get its last index in the string - var lastIndex = requestSegment.Length; - - TemplatePart parameterNeedsValue = null; // Keeps track of a parameter segment that is pending a value - TemplatePart lastLiteral = null; // Keeps track of the left-most literal we've encountered - - var outValues = new RouteValueDictionary(); - - while (indexOfLastSegmentUsed >= 0) - { - var newLastIndex = lastIndex; - - var part = routeSegment.Parts[indexOfLastSegmentUsed]; - if (part.IsParameter) - { - // Hold on to the parameter so that we can fill it in when we locate the next literal - parameterNeedsValue = part; - } - else - { - Debug.Assert(part.IsLiteral); - lastLiteral = part; - - var startIndex = lastIndex - 1; - // If we have a pending parameter subsegment, we must leave at least one character for that - if (parameterNeedsValue != null) - { - startIndex--; - } - - if (startIndex < 0) - { - return false; - } - - var indexOfLiteral = requestSegment.LastIndexOf( - part.Text, - startIndex, - StringComparison.OrdinalIgnoreCase); - if (indexOfLiteral == -1) - { - // If we couldn't find this literal index, this segment cannot match - return false; - } - - // If the first subsegment is a literal, it must match at the right-most extent of the request URI. - // Without this check if your route had "/Foo/" we'd match the request URI "/somethingFoo/". - // This check is related to the check we do at the very end of this function. - if (indexOfLastSegmentUsed == (routeSegment.Parts.Count - 1)) - { - if ((indexOfLiteral + part.Text.Length) != requestSegment.Length) - { - return false; - } - } - - newLastIndex = indexOfLiteral; - } - - if ((parameterNeedsValue != null) && - (((lastLiteral != null) && (part.IsLiteral)) || (indexOfLastSegmentUsed == 0))) - { - // If we have a pending parameter that needs a value, grab that value - - int parameterStartIndex; - int parameterTextLength; - - if (lastLiteral == null) - { - if (indexOfLastSegmentUsed == 0) - { - parameterStartIndex = 0; - } - else - { - parameterStartIndex = newLastIndex; - Debug.Assert(false, "indexOfLastSegementUsed should always be 0 from the check above"); - } - parameterTextLength = lastIndex; - } - else - { - // If we're getting a value for a parameter that is somewhere in the middle of the segment - if ((indexOfLastSegmentUsed == 0) && (part.IsParameter)) - { - parameterStartIndex = 0; - parameterTextLength = lastIndex; - } - else - { - parameterStartIndex = newLastIndex + lastLiteral.Text.Length; - parameterTextLength = lastIndex - parameterStartIndex; - } - } - - var parameterValueString = requestSegment.Substring(parameterStartIndex, parameterTextLength); - - if (string.IsNullOrEmpty(parameterValueString)) - { - // If we're here that means we have a segment that contains multiple sub-segments. - // For these segments all parameters must have non-empty values. If the parameter - // has an empty value it's not a match. - return false; - - } - else - { - // If there's a value in the segment for this parameter, use the subsegment value - outValues.Add(parameterNeedsValue.Name, parameterValueString); - } - - parameterNeedsValue = null; - lastLiteral = null; - } - - lastIndex = newLastIndex; - indexOfLastSegmentUsed--; - } - - // If the last subsegment is a parameter, it's OK that we didn't parse all the way to the left extent of - // the string since the parameter will have consumed all the remaining text anyway. If the last subsegment - // is a literal then we *must* have consumed the entire text in that literal. Otherwise we end up matching - // the route "Foo" to the request URI "somethingFoo". Thus we have to check that we parsed the *entire* - // request URI in order for it to be a match. - // This check is related to the check we do earlier in this function for LiteralSubsegments. - if (lastIndex == 0 || routeSegment.Parts[0].IsParameter) - { - foreach (var item in outValues) - { - values.Add(item.Key, item.Value); - } - - return true; - } - - return false; + return _routePatternMatcher.TryMatch(path, values); } } } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplateParser.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplateParser.cs index 0168b22a4b..ad1afe86e6 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplateParser.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplateParser.cs @@ -1,539 +1,29 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Globalization; +using Microsoft.AspNetCore.Routing.Patterns; namespace Microsoft.AspNetCore.Routing.Template { public static class TemplateParser { - private const char Separator = '/'; - private const char OpenBrace = '{'; - private const char CloseBrace = '}'; - private const char EqualsSign = '='; - private const char QuestionMark = '?'; - private const char Asterisk = '*'; - private const string PeriodString = "."; - public static RouteTemplate Parse(string routeTemplate) { if (routeTemplate == null) { - routeTemplate = String.Empty; + throw new ArgumentNullException(routeTemplate); } - var trimmedRouteTemplate = TrimPrefix(routeTemplate); - - var context = new TemplateParserContext(trimmedRouteTemplate); - var segments = new List(); - - while (context.Next()) + try { - if (context.Current == Separator) - { - // If we get here is means that there's a consecutive '/' character. - // Templates don't start with a '/' and parsing a segment consumes the separator. - throw new ArgumentException(Resources.TemplateRoute_CannotHaveConsecutiveSeparators, - nameof(routeTemplate)); - } - else - { - if (!ParseSegment(context, segments)) - { - throw new ArgumentException(context.Error, nameof(routeTemplate)); - } - } + var inner = RoutePatternFactory.Parse(routeTemplate); + return new RouteTemplate(inner); } - - if (IsAllValid(context, segments)) + catch (RoutePatternException ex) { - return new RouteTemplate(routeTemplate, segments); - } - else - { - throw new ArgumentException(context.Error, nameof(routeTemplate)); - } - } - - private static string TrimPrefix(string routeTemplate) - { - if (routeTemplate.StartsWith("~/", StringComparison.Ordinal)) - { - return routeTemplate.Substring(2); - } - else if (routeTemplate.StartsWith("/", StringComparison.Ordinal)) - { - return routeTemplate.Substring(1); - } - else if (routeTemplate.StartsWith("~", StringComparison.Ordinal)) - { - throw new ArgumentException(Resources.TemplateRoute_InvalidRouteTemplate, nameof(routeTemplate)); - } - return routeTemplate; - } - - private static bool ParseSegment(TemplateParserContext context, List segments) - { - Debug.Assert(context != null); - Debug.Assert(segments != null); - - var segment = new TemplateSegment(); - - while (true) - { - if (context.Current == OpenBrace) - { - if (!context.Next()) - { - // This is a dangling open-brace, which is not allowed - context.Error = Resources.TemplateRoute_MismatchedParameter; - return false; - } - - if (context.Current == OpenBrace) - { - // This is an 'escaped' brace in a literal, like "{{foo" - context.Back(); - if (!ParseLiteral(context, segment)) - { - return false; - } - } - else - { - // This is the inside of a parameter - if (!ParseParameter(context, segment)) - { - return false; - } - } - } - else if (context.Current == Separator) - { - // We've reached the end of the segment - break; - } - else - { - if (!ParseLiteral(context, segment)) - { - return false; - } - } - - if (!context.Next()) - { - // We've reached the end of the string - break; - } - } - - if (IsSegmentValid(context, segment)) - { - segments.Add(segment); - return true; - } - else - { - return false; - } - } - - private static bool ParseParameter(TemplateParserContext context, TemplateSegment segment) - { - context.Mark(); - - while (true) - { - if (context.Current == OpenBrace) - { - // This is an open brace inside of a parameter, it has to be escaped - if (context.Next()) - { - if (context.Current != OpenBrace) - { - // If we see something like "{p1:regex(^\d{3", we will come here. - context.Error = Resources.TemplateRoute_UnescapedBrace; - return false; - } - } - else - { - // This is a dangling open-brace, which is not allowed - // Example: "{p1:regex(^\d{" - context.Error = Resources.TemplateRoute_MismatchedParameter; - return false; - } - } - else if (context.Current == CloseBrace) - { - // When we encounter Closed brace here, it either means end of the parameter or it is a closed - // brace in the parameter, in that case it needs to be escaped. - // Example: {p1:regex(([}}])\w+}. First pair is escaped one and last marks end of the parameter - if (!context.Next()) - { - // This is the end of the string -and we have a valid parameter - context.Back(); - break; - } - - if (context.Current == CloseBrace) - { - // This is an 'escaped' brace in a parameter name - } - else - { - // This is the end of the parameter - context.Back(); - break; - } - } - - if (!context.Next()) - { - // This is a dangling open-brace, which is not allowed - context.Error = Resources.TemplateRoute_MismatchedParameter; - return false; - } - } - - var rawParameter = context.Capture(); - var decoded = rawParameter.Replace("}}", "}").Replace("{{", "{"); - - // At this point, we need to parse the raw name for inline constraint, - // default values and optional parameters. - var templatePart = InlineRouteParameterParser.ParseRouteParameter(decoded); - - if (templatePart.IsCatchAll && templatePart.IsOptional) - { - context.Error = Resources.TemplateRoute_CatchAllCannotBeOptional; - return false; - } - - if (templatePart.IsOptional && templatePart.DefaultValue != null) - { - // Cannot be optional and have a default value. - // The only way to declare an optional parameter is to have a ? at the end, - // hence we cannot have both default value and optional parameter within the template. - // A workaround is to add it as a separate entry in the defaults argument. - context.Error = Resources.TemplateRoute_OptionalCannotHaveDefaultValue; - return false; - } - - var parameterName = templatePart.Name; - if (IsValidParameterName(context, parameterName)) - { - segment.Parts.Add(templatePart); - return true; - } - else - { - return false; - } - } - - private static bool ParseLiteral(TemplateParserContext context, TemplateSegment segment) - { - context.Mark(); - - string encoded; - while (true) - { - if (context.Current == Separator) - { - encoded = context.Capture(); - context.Back(); - break; - } - else if (context.Current == OpenBrace) - { - if (!context.Next()) - { - // This is a dangling open-brace, which is not allowed - context.Error = Resources.TemplateRoute_MismatchedParameter; - return false; - } - - if (context.Current == OpenBrace) - { - // This is an 'escaped' brace in a literal, like "{{foo" - keep going. - } - else - { - // We've just seen the start of a parameter, so back up and return - context.Back(); - encoded = context.Capture(); - context.Back(); - break; - } - } - else if (context.Current == CloseBrace) - { - if (!context.Next()) - { - // This is a dangling close-brace, which is not allowed - context.Error = Resources.TemplateRoute_MismatchedParameter; - return false; - } - - if (context.Current == CloseBrace) - { - // This is an 'escaped' brace in a literal, like "{{foo" - keep going. - } - else - { - // This is an unbalanced close-brace, which is not allowed - context.Error = Resources.TemplateRoute_MismatchedParameter; - return false; - } - } - - if (!context.Next()) - { - encoded = context.Capture(); - break; - } - } - - var decoded = encoded.Replace("}}", "}").Replace("{{", "{"); - if (IsValidLiteral(context, decoded)) - { - segment.Parts.Add(TemplatePart.CreateLiteral(decoded)); - return true; - } - else - { - return false; - } - } - - private static bool IsAllValid(TemplateParserContext context, List segments) - { - // A catch-all parameter must be the last part of the last segment - for (var i = 0; i < segments.Count; i++) - { - var segment = segments[i]; - for (var j = 0; j < segment.Parts.Count; j++) - { - var part = segment.Parts[j]; - if (part.IsParameter && - part.IsCatchAll && - (i != segments.Count - 1 || j != segment.Parts.Count - 1)) - { - context.Error = Resources.TemplateRoute_CatchAllMustBeLast; - return false; - } - } - } - - return true; - } - - private static bool IsSegmentValid(TemplateParserContext context, TemplateSegment segment) - { - // If a segment has multiple parts, then it can't contain a catch all. - for (var i = 0; i < segment.Parts.Count; i++) - { - var part = segment.Parts[i]; - if (part.IsParameter && part.IsCatchAll && segment.Parts.Count > 1) - { - context.Error = Resources.TemplateRoute_CannotHaveCatchAllInMultiSegment; - return false; - } - } - - // if a segment has multiple parts, then only the last one parameter can be optional - // if it is following a optional seperator. - for (var i = 0; i < segment.Parts.Count; i++) - { - var part = segment.Parts[i]; - - if (part.IsParameter && part.IsOptional && segment.Parts.Count > 1) - { - // This optional parameter is the last part in the segment - if (i == segment.Parts.Count - 1) - { - if (!segment.Parts[i - 1].IsLiteral) - { - // The optional parameter is preceded by something that is not a literal. - // Example of error message: - // "In the segment '{RouteValue}{param?}', the optional parameter 'param' is preceded - // by an invalid segment '{RouteValue}'. Only a period (.) can precede an optional parameter. - context.Error = string.Format( - Resources.TemplateRoute_OptionalParameterCanbBePrecededByPeriod, - segment.DebuggerToString(), - part.Name, - segment.Parts[i - 1].DebuggerToString()); - - return false; - } - else if (segment.Parts[i - 1].Text != PeriodString) - { - // The optional parameter is preceded by a literal other than period. - // Example of error message: - // "In the segment '{RouteValue}-{param?}', the optional parameter 'param' is preceded - // by an invalid segment '-'. Only a period (.) can precede an optional parameter. - context.Error = string.Format( - Resources.TemplateRoute_OptionalParameterCanbBePrecededByPeriod, - segment.DebuggerToString(), - part.Name, - segment.Parts[i - 1].Text); - - return false; - } - - segment.Parts[i - 1].IsOptionalSeperator = true; - } - else - { - // This optional parameter is not the last one in the segment - // Example: - // An optional parameter must be at the end of the segment.In the segment '{RouteValue?})', - // optional parameter 'RouteValue' is followed by ')' - var nextPart = segment.Parts[i + 1]; - var invalidPartText = nextPart.IsParameter ? nextPart.Name : nextPart.Text; - - context.Error = string.Format( - Resources.TemplateRoute_OptionalParameterHasTobeTheLast, - segment.DebuggerToString(), - segment.Parts[i].Name, - invalidPartText); - - return false; - } - } - } - - // A segment cannot contain two consecutive parameters - var isLastSegmentParameter = false; - for (var i = 0; i < segment.Parts.Count; i++) - { - var part = segment.Parts[i]; - if (part.IsParameter && isLastSegmentParameter) - { - context.Error = Resources.TemplateRoute_CannotHaveConsecutiveParameters; - return false; - } - - isLastSegmentParameter = part.IsParameter; - } - - return true; - } - - private static bool IsValidParameterName(TemplateParserContext context, string parameterName) - { - if (parameterName.Length == 0) - { - context.Error = String.Format(CultureInfo.CurrentCulture, - Resources.TemplateRoute_InvalidParameterName, parameterName); - return false; - } - - for (var i = 0; i < parameterName.Length; i++) - { - var c = parameterName[i]; - if (c == Separator || c == OpenBrace || c == CloseBrace || c == QuestionMark || c == Asterisk) - { - context.Error = String.Format(CultureInfo.CurrentCulture, - Resources.TemplateRoute_InvalidParameterName, parameterName); - return false; - } - } - - if (!context.ParameterNames.Add(parameterName)) - { - context.Error = String.Format(CultureInfo.CurrentCulture, - Resources.TemplateRoute_RepeatedParameter, parameterName); - return false; - } - - return true; - } - - private static bool IsValidLiteral(TemplateParserContext context, string literal) - { - Debug.Assert(context != null); - Debug.Assert(literal != null); - - if (literal.IndexOf(QuestionMark) != -1) - { - context.Error = String.Format(CultureInfo.CurrentCulture, - Resources.TemplateRoute_InvalidLiteral, literal); - return false; - } - - return true; - } - - private static bool IsInvalidRouteTemplate(string routeTemplate) - { - return routeTemplate.StartsWith("~", StringComparison.Ordinal) || - routeTemplate.StartsWith("/", StringComparison.Ordinal); - } - - private class TemplateParserContext - { - private readonly string _template; - private int _index; - private int? _mark; - - private HashSet _parameterNames = new HashSet(StringComparer.OrdinalIgnoreCase); - - public TemplateParserContext(string template) - { - Debug.Assert(template != null); - _template = template; - - _index = -1; - } - - public char Current - { - get { return (_index < _template.Length && _index >= 0) ? _template[_index] : (char)0; } - } - - public string Error - { - get; - set; - } - - public HashSet ParameterNames - { - get { return _parameterNames; } - } - - public bool Back() - { - return --_index >= 0; - } - - public bool Next() - { - return ++_index < _template.Length; - } - - public void Mark() - { - _mark = _index; - } - - public string Capture() - { - if (_mark.HasValue) - { - var value = _template.Substring(_mark.Value, _index - _mark.Value); - _mark = null; - return value; - } - else - { - return null; - } + // Preserving the existing behavior of this API even though the logic moved. + throw new ArgumentException(ex.Message, nameof(routeTemplate), ex); } } } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplatePart.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplatePart.cs index 70f588a41a..5d84969a9c 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplatePart.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplatePart.cs @@ -5,12 +5,47 @@ using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using Microsoft.AspNetCore.Routing.Patterns; namespace Microsoft.AspNetCore.Routing.Template { [DebuggerDisplay("{DebuggerToString()}")] public class TemplatePart { + public TemplatePart() + { + } + + public TemplatePart(RoutePatternPart other) + { + IsLiteral = other.IsLiteral || other.IsSeparator; + IsParameter = other.IsParameter; + + if (other.IsLiteral && other is RoutePatternLiteralPart literal) + { + Text = literal.Content; + } + else if (other.IsParameter && other is RoutePatternParameterPart parameter) + { + // Text is unused by TemplatePart and assumed to be null when the part is a parameter. + Name = parameter.Name; + IsCatchAll = parameter.IsCatchAll; + IsOptional = parameter.IsOptional; + DefaultValue = parameter.Default; + InlineConstraints = parameter.ParameterPolicies?.Select(p => new InlineConstraint(p)); + } + else if (other.IsSeparator && other is RoutePatternSeparatorPart separator) + { + Text = separator.Content; + IsOptionalSeperator = true; + } + else + { + // Unreachable + throw new NotSupportedException(); + } + } + public static TemplatePart CreateLiteral(string text) { return new TemplatePart() @@ -20,11 +55,12 @@ namespace Microsoft.AspNetCore.Routing.Template }; } - public static TemplatePart CreateParameter(string name, - bool isCatchAll, - bool isOptional, - object defaultValue, - IEnumerable inlineConstraints) + public static TemplatePart CreateParameter( + string name, + bool isCatchAll, + bool isOptional, + object defaultValue, + IEnumerable inlineConstraints) { if (name == null) { @@ -63,5 +99,28 @@ namespace Microsoft.AspNetCore.Routing.Template return Text; } } + + public RoutePatternPart ToRoutePatternPart() + { + if (IsLiteral && IsOptionalSeperator) + { + return RoutePatternFactory.SeparatorPart(Text); + } + else if (IsLiteral) + { + return RoutePatternFactory.LiteralPart(Text); + } + else + { + var kind = IsCatchAll ? + RoutePatternParameterKind.CatchAll : + IsOptional ? + RoutePatternParameterKind.Optional : + RoutePatternParameterKind.Standard; + + var constraints = InlineConstraints.Select(c => new RoutePatternParameterPolicyReference(c.Constraint)); + return RoutePatternFactory.ParameterPart(Name, DefaultValue, kind, constraints); + } + } } } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplateSegment.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplateSegment.cs index 4a86526509..304472653e 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplateSegment.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Template/TemplateSegment.cs @@ -1,22 +1,50 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using Microsoft.AspNetCore.Routing.Patterns; namespace Microsoft.AspNetCore.Routing.Template { [DebuggerDisplay("{DebuggerToString()}")] public class TemplateSegment { + public TemplateSegment() + { + Parts = new List(); + } + + public TemplateSegment(RoutePatternPathSegment other) + { + if (other == null) + { + throw new ArgumentNullException(nameof(other)); + } + + var partCount = other.Parts.Count; + Parts = new List(partCount); + for (var i = 0; i < partCount; i++) + { + Parts.Add(new TemplatePart(other.Parts[i])); + } + } + public bool IsSimple => Parts.Count == 1; - public List Parts { get; } = new List(); + public List Parts { get; } internal string DebuggerToString() { return string.Join(string.Empty, Parts.Select(p => p.DebuggerToString())); } + + public RoutePatternPathSegment ToRoutePatternPathSegment() + { + var parts = Parts.Select(p => p.ToRoutePatternPart()); + return RoutePatternFactory.Segment(parts); + } } } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/OutboundRouteEntry.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/OutboundRouteEntry.cs index 2364c3f350..9c5258df1a 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/OutboundRouteEntry.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/OutboundRouteEntry.cs @@ -58,5 +58,10 @@ namespace Microsoft.AspNetCore.Routing.Tree /// Gets or sets the . /// public RouteTemplate RouteTemplate { get; set; } + + /// + /// Gets or sets the data that is associated with this entry. + /// + public object Data { get; set; } } } \ No newline at end of file diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/TreeEnumerator.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/TreeEnumerator.cs new file mode 100644 index 0000000000..cdd7ec6f81 --- /dev/null +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/TreeEnumerator.cs @@ -0,0 +1,111 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using Microsoft.AspNetCore.Routing.Internal; + +namespace Microsoft.AspNetCore.Routing.Tree +{ + internal struct TreeEnumerator : IEnumerator + { + private readonly Stack _stack; + private readonly PathTokenizer _tokenizer; + + public TreeEnumerator(UrlMatchingNode root, PathTokenizer tokenizer) + { + _stack = new Stack(); + _tokenizer = tokenizer; + Current = null; + + _stack.Push(root); + } + + public UrlMatchingNode Current { get; private set; } + + object IEnumerator.Current => Current; + + public void Dispose() + { + } + + public bool MoveNext() + { + if (_stack == null) + { + return false; + } + + while (_stack.Count > 0) + { + var next = _stack.Pop(); + + // In case of wild card segment, the request path segment length can be greater + // Example: + // Template: a/{*path} + // Request Url: a/b/c/d + if (next.IsCatchAll && next.Matches.Count > 0) + { + Current = next; + return true; + } + // Next template has the same length as the url we are trying to match + // The only possible matching segments are either our current matches or + // any catch-all segment after this segment in which the catch all is empty. + else if (next.Depth == _tokenizer.Count) + { + if (next.Matches.Count > 0) + { + Current = next; + return true; + } + else + { + // We can stop looking as any other child node from this node will be + // either a literal, a constrained parameter or a parameter. + // (Catch alls and constrained catch alls will show up as candidate matches). + continue; + } + } + + if (next.CatchAlls != null) + { + _stack.Push(next.CatchAlls); + } + + if (next.ConstrainedCatchAlls != null) + { + _stack.Push(next.ConstrainedCatchAlls); + } + + if (next.Parameters != null) + { + _stack.Push(next.Parameters); + } + + if (next.ConstrainedParameters != null) + { + _stack.Push(next.ConstrainedParameters); + } + + if (next.Literals.Count > 0) + { + Debug.Assert(next.Depth < _tokenizer.Count); + if (next.Literals.TryGetValue(_tokenizer[next.Depth].Value, out var node)) + { + _stack.Push(node); + } + } + } + + return false; + } + + public void Reset() + { + _stack.Clear(); + Current = null; + } + } +} diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/TreeRouteBuilder.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/TreeRouteBuilder.cs index a746e7d170..f796328a82 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/TreeRouteBuilder.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/TreeRouteBuilder.cs @@ -259,14 +259,13 @@ namespace Microsoft.AspNetCore.Routing.Tree foreach (var entry in InboundEntries) { - UrlMatchingTree tree; - if (!trees.TryGetValue(entry.Order, out tree)) + if (!trees.TryGetValue(entry.Order, out var tree)) { tree = new UrlMatchingTree(entry.Order); trees.Add(entry.Order, tree); } - AddEntryToTree(tree, entry); + tree.AddEntry(entry); } return new TreeRouter( @@ -288,167 +287,5 @@ namespace Microsoft.AspNetCore.Routing.Tree InboundEntries.Clear(); OutboundEntries.Clear(); } - - private void AddEntryToTree(UrlMatchingTree tree, InboundRouteEntry entry) - { - // The url matching tree represents all the routes asociated with a given - // order. Each node in the tree represents all the different categories - // a segment can have for which there is a defined inbound route entry. - // Each node contains a set of Matches that indicate all the routes for which - // a URL is a potential match. This list contains the routes with the same - // number of segments and the routes with the same number of segments plus an - // additional catch all parameter (as it can be empty). - // For example, for a set of routes like: - // 'Customer/Index/{id}' - // '{Controller}/{Action}/{*parameters}' - // - // The route tree will look like: - // Root -> - // Literals: Customer -> - // Literals: Index -> - // Parameters: {id} - // Matches: 'Customer/Index/{id}' - // Parameters: {Controller} -> - // Parameters: {Action} -> - // Matches: '{Controller}/{Action}/{*parameters}' - // CatchAlls: {*parameters} - // Matches: '{Controller}/{Action}/{*parameters}' - // - // When the tree router tries to match a route, it iterates the list of url matching trees - // in ascending order. For each tree it traverses each node starting from the root in the - // following order: Literals, constrained parameters, parameters, constrained catch all routes, catch alls. - // When it gets to a node of the same length as the route its trying to match, it simply looks at the list of - // candidates (which is in precence order) and tries to match the url against it. - // - - var current = tree.Root; - var matcher = new TemplateMatcher(entry.RouteTemplate, entry.Defaults); - - for (var i = 0; i < entry.RouteTemplate.Segments.Count; i++) - { - var segment = entry.RouteTemplate.Segments[i]; - if (!segment.IsSimple) - { - // Treat complex segments as a constrained parameter - if (current.ConstrainedParameters == null) - { - current.ConstrainedParameters = new UrlMatchingNode(length: i + 1); - } - - current = current.ConstrainedParameters; - continue; - } - - Debug.Assert(segment.Parts.Count == 1); - var part = segment.Parts[0]; - if (part.IsLiteral) - { - UrlMatchingNode next; - if (!current.Literals.TryGetValue(part.Text, out next)) - { - next = new UrlMatchingNode(length: i + 1); - current.Literals.Add(part.Text, next); - } - - current = next; - continue; - } - - // We accept templates that have intermediate optional values, but we ignore - // those values for route matching. For that reason, we need to add the entry - // to the list of matches, only if the remaining segments are optional. For example: - // /{controller}/{action=Index}/{id} will be equivalent to /{controller}/{action}/{id} - // for the purposes of route matching. - if (part.IsParameter && - RemainingSegmentsAreOptional(entry.RouteTemplate.Segments, i)) - { - current.Matches.Add(new InboundMatch() { Entry = entry, TemplateMatcher = matcher }); - } - - if (part.IsParameter && part.InlineConstraints.Any() && !part.IsCatchAll) - { - if (current.ConstrainedParameters == null) - { - current.ConstrainedParameters = new UrlMatchingNode(length: i + 1); - } - - current = current.ConstrainedParameters; - continue; - } - - if (part.IsParameter && !part.IsCatchAll) - { - if (current.Parameters == null) - { - current.Parameters = new UrlMatchingNode(length: i + 1); - } - - current = current.Parameters; - continue; - } - - if (part.IsParameter && part.InlineConstraints.Any() && part.IsCatchAll) - { - if (current.ConstrainedCatchAlls == null) - { - current.ConstrainedCatchAlls = new UrlMatchingNode(length: i + 1) { IsCatchAll = true }; - } - - current = current.ConstrainedCatchAlls; - continue; - } - - if (part.IsParameter && part.IsCatchAll) - { - if (current.CatchAlls == null) - { - current.CatchAlls = new UrlMatchingNode(length: i + 1) { IsCatchAll = true }; - } - - current = current.CatchAlls; - continue; - } - - Debug.Fail("We shouldn't get here."); - } - - current.Matches.Add(new InboundMatch() { Entry = entry, TemplateMatcher = matcher }); - current.Matches.Sort((x, y) => - { - var result = x.Entry.Precedence.CompareTo(y.Entry.Precedence); - return result == 0 ? x.Entry.RouteTemplate.TemplateText.CompareTo(y.Entry.RouteTemplate.TemplateText) : result; - }); - } - - private static bool RemainingSegmentsAreOptional(IList segments, int currentParameterIndex) - { - for (var i = currentParameterIndex; i < segments.Count; i++) - { - if (!segments[i].IsSimple) - { - // /{complex}-{segment} - return false; - } - - var part = segments[i].Parts[0]; - if (!part.IsParameter) - { - // /literal - return false; - } - - var isOptionlCatchAllOrHasDefaultValue = part.IsOptional || - part.IsCatchAll || - part.DefaultValue != null; - - if (!isOptionlCatchAllOrHasDefaultValue) - { - // /{parameter} - return false; - } - } - - return true; - } } } diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/TreeRouter.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/TreeRouter.cs index 31a1091093..3f98325641 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/TreeRouter.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/TreeRouter.cs @@ -2,9 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.Collections; using System.Collections.Generic; -using System.Diagnostics; using System.Text.Encodings.Web; using System.Threading.Tasks; using Microsoft.AspNetCore.Routing.Internal; @@ -32,7 +30,7 @@ namespace Microsoft.AspNetCore.Routing.Tree private readonly ILogger _constraintLogger; /// - /// Creates a new . + /// Creates a new instance of . /// /// The list of that contains the route entries. /// The set of . @@ -105,8 +103,7 @@ namespace Microsoft.AspNetCore.Routing.Tree // We only need to keep one OutboundMatch per route template // so in case two entries have the same name and the same template we only keep // the first entry. - OutboundMatch namedMatch; - if (_namedEntries.TryGetValue(entry.RouteName, out namedMatch) && + if (_namedEntries.TryGetValue(entry.RouteName, out var namedMatch) && !string.Equals( namedMatch.Entry.RouteTemplate.TemplateText, entry.RouteTemplate.TemplateText, @@ -152,7 +149,7 @@ namespace Microsoft.AspNetCore.Routing.Tree // The decision tree will give us back all entries that match the provided route data in the correct // order. We just need to iterate them and use the first one that can generate a link. - var matches = _linkGenerationTree.GetMatches(context); + var matches = _linkGenerationTree.GetMatches(context.Values, context.AmbientValues); if (matches == null) { @@ -233,112 +230,9 @@ namespace Microsoft.AspNetCore.Routing.Tree } } - private struct TreeEnumerator : IEnumerator - { - private readonly Stack _stack; - private readonly PathTokenizer _tokenizer; - - public TreeEnumerator(UrlMatchingNode root, PathTokenizer tokenizer) - { - _stack = new Stack(); - _tokenizer = tokenizer; - Current = null; - - _stack.Push(root); - } - - public UrlMatchingNode Current { get; private set; } - - object IEnumerator.Current => Current; - - public void Dispose() - { - } - - public bool MoveNext() - { - if (_stack == null) - { - return false; - } - - while (_stack.Count > 0) - { - var next = _stack.Pop(); - - // In case of wild card segment, the request path segment length can be greater - // Example: - // Template: a/{*path} - // Request Url: a/b/c/d - if (next.IsCatchAll && next.Matches.Count > 0) - { - Current = next; - return true; - } - // Next template has the same length as the url we are trying to match - // The only possible matching segments are either our current matches or - // any catch-all segment after this segment in which the catch all is empty. - else if (next.Depth == _tokenizer.Count) - { - if (next.Matches.Count > 0) - { - Current = next; - return true; - } - else - { - // We can stop looking as any other child node from this node will be - // either a literal, a constrained parameter or a parameter. - // (Catch alls and constrained catch alls will show up as candidate matches). - continue; - } - } - - if (next.CatchAlls != null) - { - _stack.Push(next.CatchAlls); - } - - if (next.ConstrainedCatchAlls != null) - { - _stack.Push(next.ConstrainedCatchAlls); - } - - if (next.Parameters != null) - { - _stack.Push(next.Parameters); - } - - if (next.ConstrainedParameters != null) - { - _stack.Push(next.ConstrainedParameters); - } - - if (next.Literals.Count > 0) - { - UrlMatchingNode node; - Debug.Assert(next.Depth < _tokenizer.Count); - if (next.Literals.TryGetValue(_tokenizer[next.Depth].Value, out node)) - { - _stack.Push(node); - } - } - } - - return false; - } - - public void Reset() - { - _stack.Clear(); - Current = null; - } - } - private VirtualPathData GetVirtualPathForNamedRoute(VirtualPathContext context) { - OutboundMatch match; - if (_namedEntries.TryGetValue(context.RouteName, out match)) + if (_namedEntries.TryGetValue(context.RouteName, out var match)) { var path = GenerateVirtualPath(context, match.Entry, match.TemplateBinder); if (path != null) diff --git a/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/UrlMatchingTree.cs b/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/UrlMatchingTree.cs index 90528d75b9..570dce1b3a 100644 --- a/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/UrlMatchingTree.cs +++ b/src/Routing/src/Microsoft.AspNetCore.Routing/Tree/UrlMatchingTree.cs @@ -1,6 +1,11 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using Microsoft.AspNetCore.Routing.Template; + namespace Microsoft.AspNetCore.Routing.Tree { /// @@ -26,5 +31,166 @@ namespace Microsoft.AspNetCore.Routing.Tree /// Gets the root of the . /// public UrlMatchingNode Root { get; } = new UrlMatchingNode(length: 0); + + internal void AddEntry(InboundRouteEntry entry) + { + // The url matching tree represents all the routes asociated with a given + // order. Each node in the tree represents all the different categories + // a segment can have for which there is a defined inbound route entry. + // Each node contains a set of Matches that indicate all the routes for which + // a URL is a potential match. This list contains the routes with the same + // number of segments and the routes with the same number of segments plus an + // additional catch all parameter (as it can be empty). + // For example, for a set of routes like: + // 'Customer/Index/{id}' + // '{Controller}/{Action}/{*parameters}' + // + // The route tree will look like: + // Root -> + // Literals: Customer -> + // Literals: Index -> + // Parameters: {id} + // Matches: 'Customer/Index/{id}' + // Parameters: {Controller} -> + // Parameters: {Action} -> + // Matches: '{Controller}/{Action}/{*parameters}' + // CatchAlls: {*parameters} + // Matches: '{Controller}/{Action}/{*parameters}' + // + // When the tree router tries to match a route, it iterates the list of url matching trees + // in ascending order. For each tree it traverses each node starting from the root in the + // following order: Literals, constrained parameters, parameters, constrained catch all routes, catch alls. + // When it gets to a node of the same length as the route its trying to match, it simply looks at the list of + // candidates (which is in precence order) and tries to match the url against it. + // + + var current = Root; + var matcher = new TemplateMatcher(entry.RouteTemplate, entry.Defaults); + + for (var i = 0; i < entry.RouteTemplate.Segments.Count; i++) + { + var segment = entry.RouteTemplate.Segments[i]; + if (!segment.IsSimple) + { + // Treat complex segments as a constrained parameter + if (current.ConstrainedParameters == null) + { + current.ConstrainedParameters = new UrlMatchingNode(length: i + 1); + } + + current = current.ConstrainedParameters; + continue; + } + + Debug.Assert(segment.Parts.Count == 1); + var part = segment.Parts[0]; + if (part.IsLiteral) + { + if (!current.Literals.TryGetValue(part.Text, out var next)) + { + next = new UrlMatchingNode(length: i + 1); + current.Literals.Add(part.Text, next); + } + + current = next; + continue; + } + + // We accept templates that have intermediate optional values, but we ignore + // those values for route matching. For that reason, we need to add the entry + // to the list of matches, only if the remaining segments are optional. For example: + // /{controller}/{action=Index}/{id} will be equivalent to /{controller}/{action}/{id} + // for the purposes of route matching. + if (part.IsParameter && + RemainingSegmentsAreOptional(entry.RouteTemplate.Segments, i)) + { + current.Matches.Add(new InboundMatch() { Entry = entry, TemplateMatcher = matcher }); + } + + if (part.IsParameter && part.InlineConstraints.Any() && !part.IsCatchAll) + { + if (current.ConstrainedParameters == null) + { + current.ConstrainedParameters = new UrlMatchingNode(length: i + 1); + } + + current = current.ConstrainedParameters; + continue; + } + + if (part.IsParameter && !part.IsCatchAll) + { + if (current.Parameters == null) + { + current.Parameters = new UrlMatchingNode(length: i + 1); + } + + current = current.Parameters; + continue; + } + + if (part.IsParameter && part.InlineConstraints.Any() && part.IsCatchAll) + { + if (current.ConstrainedCatchAlls == null) + { + current.ConstrainedCatchAlls = new UrlMatchingNode(length: i + 1) { IsCatchAll = true }; + } + + current = current.ConstrainedCatchAlls; + continue; + } + + if (part.IsParameter && part.IsCatchAll) + { + if (current.CatchAlls == null) + { + current.CatchAlls = new UrlMatchingNode(length: i + 1) { IsCatchAll = true }; + } + + current = current.CatchAlls; + continue; + } + + Debug.Fail("We shouldn't get here."); + } + + current.Matches.Add(new InboundMatch() { Entry = entry, TemplateMatcher = matcher }); + current.Matches.Sort((x, y) => + { + var result = x.Entry.Precedence.CompareTo(y.Entry.Precedence); + return result == 0 ? x.Entry.RouteTemplate.TemplateText.CompareTo(y.Entry.RouteTemplate.TemplateText) : result; + }); + } + + private static bool RemainingSegmentsAreOptional(IList segments, int currentParameterIndex) + { + for (var i = currentParameterIndex; i < segments.Count; i++) + { + if (!segments[i].IsSimple) + { + // /{complex}-{segment} + return false; + } + + var part = segments[i].Parts[0]; + if (!part.IsParameter) + { + // /literal + return false; + } + + var isOptionlCatchAllOrHasDefaultValue = part.IsOptional || + part.IsCatchAll || + part.DefaultValue != null; + + if (!isOptionlCatchAllOrHasDefaultValue) + { + // /{parameter} + return false; + } + } + + return true; + } } } diff --git a/src/Routing/test/Directory.Build.props b/src/Routing/test/Directory.Build.props index 02caa062ac..c126684d3f 100644 --- a/src/Routing/test/Directory.Build.props +++ b/src/Routing/test/Directory.Build.props @@ -1,16 +1,18 @@ - + - netcoreapp2.1 + netcoreapp2.2 $(DeveloperBuildTestTfms) - $(StandardTestTfms);netcoreapp2.0 + $(StandardTestTfms) $(StandardTestTfms);net461 + + false + + - - diff --git a/src/Routing/test/Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests/EndpointMetadataCollectionTests.cs b/src/Routing/test/Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests/EndpointMetadataCollectionTests.cs new file mode 100644 index 0000000000..9f37f3ebec --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests/EndpointMetadataCollectionTests.cs @@ -0,0 +1,142 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Text; +using Microsoft.AspNetCore.Http; +using Xunit; + +namespace Microsoft.AspNetCore.Routing +{ + public class EndpointMetadataCollectionTests + { + [Fact] + public void Constructor_Enumeration_ContainsValues() + { + // Arrange & Act + var metadata = new EndpointMetadataCollection(new List + { + 1, + 2, + 3, + }); + + // Assert + Assert.Equal(3, metadata.Count); + + Assert.Collection(metadata, + value => Assert.Equal(1, value), + value => Assert.Equal(2, value), + value => Assert.Equal(3, value)); + } + + [Fact] + public void Constructor_ParamsArray_ContainsValues() + { + // Arrange & Act + var metadata = new EndpointMetadataCollection(1, 2, 3); + + // Assert + Assert.Equal(3, metadata.Count); + + Assert.Collection(metadata, + value => Assert.Equal(1, value), + value => Assert.Equal(2, value), + value => Assert.Equal(3, value)); + } + + [Fact] + public void GetMetadata_Match_ReturnsLastMatchingEntry() + { + // Arrange + var items = new object[] + { + new Metadata1(), + new Metadata2(), + new Metadata3(), + }; + + var metadata = new EndpointMetadataCollection(items); + + // Act + var result = metadata.GetMetadata(); + + // Assert + Assert.Same(items[1], result); + } + + [Fact] + public void GetMetadata_NoMatch_ReturnsNull() + { + // Arrange + var items = new object[] + { + new Metadata3(), + new Metadata3(), + new Metadata3(), + }; + + var metadata = new EndpointMetadataCollection(items); + + // Act + var result = metadata.GetMetadata(); + + // Assert + Assert.Null(result); + } + + [Fact] + public void GetOrderedMetadata_Match_ReturnsItemsInAscendingOrder() + { + // Arrange + var items = new object[] + { + new Metadata1(), + new Metadata2(), + new Metadata3(), + }; + + var metadata = new EndpointMetadataCollection(items); + + // Act + var result = metadata.GetOrderedMetadata(); + + // Assert + Assert.Collection( + result, + i => Assert.Same(items[0], i), + i => Assert.Same(items[1], i)); + } + + [Fact] + public void GetOrderedMetadata_NoMatch_ReturnsEmpty() + { + // Arrange + var items = new object[] + { + new Metadata3(), + new Metadata3(), + new Metadata3(), + }; + + var metadata = new EndpointMetadataCollection(items); + + // Act + var result = metadata.GetOrderedMetadata(); + + // Assert + Assert.Empty(result); + } + + private interface IMetadata1 { } + private interface IMetadata2 { } + private interface IMetadata3 { } + private interface IMetadata4 { } + private interface IMetadata5 { } + private class Metadata1 : IMetadata1, IMetadata4, IMetadata5 { } + private class Metadata2 : IMetadata2, IMetadata5 { } + private class Metadata3 : IMetadata3 { } + + } +} \ No newline at end of file diff --git a/src/Routing/test/Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests/Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests.csproj b/src/Routing/test/Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests/Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests.csproj index fce9e366fc..c5fa909119 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests/Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests.csproj +++ b/src/Routing/test/Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests/Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests.csproj @@ -1,4 +1,4 @@ - + $(StandardTestTfms) @@ -8,4 +8,8 @@ + + + + diff --git a/src/Routing/test/Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests/RouteValueDictionaryTests.cs b/src/Routing/test/Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests/RouteValueDictionaryTests.cs index 764f773e16..35b8031fe8 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests/RouteValueDictionaryTests.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests/RouteValueDictionaryTests.cs @@ -20,7 +20,8 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Empty(dict); - Assert.IsType(dict._storage); + Assert.Empty(dict._arrayStorage); + Assert.Null(dict._propertyStorage); } [Fact] @@ -32,11 +33,12 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Empty(dict); - Assert.IsType(dict._storage); + Assert.Empty(dict._arrayStorage); + Assert.Null(dict._propertyStorage); } [Fact] - public void CreateFromRouteValueDictionary_WithListStorage_CopiesStorage() + public void CreateFromRouteValueDictionary_WithArrayStorage_CopiesStorage() { // Arrange var other = new RouteValueDictionary() @@ -50,8 +52,8 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Equal(other, dict); - var storage = Assert.IsType(dict._storage); - var otherStorage = Assert.IsType(other._storage); + var storage = Assert.IsType[]>(dict._arrayStorage); + var otherStorage = Assert.IsType[]>(other._arrayStorage); Assert.NotSame(otherStorage, storage); } @@ -67,25 +69,8 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Equal(other, dict); - var storage = Assert.IsType(dict._storage); - var otherStorage = Assert.IsType(other._storage); - Assert.Same(otherStorage, storage); - } - - [Fact] - public void CreateFromRouteValueDictionary_WithEmptyStorage_SharedInstance() - { - // Arrange - var other = new RouteValueDictionary(); - - // Act - var dict = new RouteValueDictionary(other); - - // Assert - Assert.Equal(other, dict); - - var storage = Assert.IsType(dict._storage); - var otherStorage = Assert.IsType(other._storage); + var storage = dict._propertyStorage; + var otherStorage = other._propertyStorage; Assert.Same(otherStorage, storage); } @@ -135,7 +120,7 @@ namespace Microsoft.AspNetCore.Routing.Tests var dict = new RouteValueDictionary(values); // Assert - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); Assert.Collection( dict.OrderBy(kvp => kvp.Key), kvp => @@ -157,7 +142,7 @@ namespace Microsoft.AspNetCore.Routing.Tests var dict = new RouteValueDictionary(values); // Assert - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); Assert.Collection( dict.OrderBy(kvp => kvp.Key), kvp => { Assert.Equal("First Name", kvp.Key); Assert.Equal("James", kvp.Value); }, @@ -178,7 +163,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Act & Assert ExceptionAssert.ThrowsArgument( () => new RouteValueDictionary(values), - "values", + "key", $"An element with the key 'Name' already exists in the {nameof(RouteValueDictionary)}."); } @@ -195,7 +180,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Act & Assert ExceptionAssert.ThrowsArgument( () => new RouteValueDictionary(values), - "values", + "key", $"An element with the key 'Name' already exists in the {nameof(RouteValueDictionary)}."); } @@ -209,7 +194,7 @@ namespace Microsoft.AspNetCore.Routing.Tests var dict = new RouteValueDictionary(obj); // Assert - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); Assert.Collection( dict.OrderBy(kvp => kvp.Key), kvp => { Assert.Equal("awesome", kvp.Key); Assert.Equal(123, kvp.Value); }, @@ -226,7 +211,7 @@ namespace Microsoft.AspNetCore.Routing.Tests var dict = new RouteValueDictionary(obj); // Assert - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); Assert.Collection( dict.OrderBy(kvp => kvp.Key), kvp => @@ -252,7 +237,7 @@ namespace Microsoft.AspNetCore.Routing.Tests var dict = new RouteValueDictionary(obj); // Assert - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); Assert.Collection( dict.OrderBy(kvp => kvp.Key), kvp => @@ -273,7 +258,7 @@ namespace Microsoft.AspNetCore.Routing.Tests var dict = new RouteValueDictionary(obj); // Assert - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); Assert.Empty(dict); } @@ -287,7 +272,7 @@ namespace Microsoft.AspNetCore.Routing.Tests var dict = new RouteValueDictionary(obj); // Assert - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); Assert.Empty(dict); } @@ -301,7 +286,7 @@ namespace Microsoft.AspNetCore.Routing.Tests var dict = new RouteValueDictionary(obj); // Assert - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); Assert.Collection( dict.OrderBy(kvp => kvp.Key), kvp => @@ -328,7 +313,7 @@ namespace Microsoft.AspNetCore.Routing.Tests var dict = new RouteValueDictionary(obj); // Assert - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); Assert.Collection( dict.OrderBy(kvp => kvp.Key), kvp => { Assert.Equal("DerivedProperty", kvp.Key); Assert.Equal(5, kvp.Value); }); @@ -344,7 +329,7 @@ namespace Microsoft.AspNetCore.Routing.Tests var dict = new RouteValueDictionary(obj); // Assert - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); Assert.Empty(dict); } @@ -395,6 +380,19 @@ namespace Microsoft.AspNetCore.Routing.Tests Assert.False(result); } + [Fact] + public void IndexGet_EmptyStringIsAllowed() + { + // Arrange + var dict = new RouteValueDictionary(); + + // Act + var value = dict[""]; + + // Assert + Assert.Null(value); + } + [Fact] public void IndexGet_EmptyStorage_ReturnsNull() { @@ -406,7 +404,6 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Null(value); - Assert.IsType(dict._storage); } [Fact] @@ -420,7 +417,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Null(value); - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); } [Fact] @@ -434,7 +431,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Equal("value", value); - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); } [Fact] @@ -448,11 +445,11 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Equal("value", value); - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); } [Fact] - public void IndexGet_ListStorage_NoMatch_ReturnsNull() + public void IndexGet_ArrayStorage_NoMatch_ReturnsNull() { // Arrange var dict = new RouteValueDictionary() @@ -465,7 +462,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Null(value); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -482,7 +479,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Equal("value", value); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -499,7 +496,20 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Equal("value", value); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); + } + + [Fact] + public void IndexSet_EmptyStringIsAllowed() + { + // Arrange + var dict = new RouteValueDictionary(); + + // Act + dict[""] = "foo"; + + // Assert + Assert.Equal("foo", dict[""]); } [Fact] @@ -513,7 +523,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -530,7 +540,7 @@ namespace Microsoft.AspNetCore.Routing.Tests dict.OrderBy(kvp => kvp.Key), kvp => { Assert.Equal("age", kvp.Key); Assert.Equal(30, kvp.Value); }, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -544,7 +554,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -558,7 +568,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Collection(dict, kvp => { Assert.Equal("kEy", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -578,7 +588,7 @@ namespace Microsoft.AspNetCore.Routing.Tests dict.OrderBy(kvp => kvp.Key), kvp => { Assert.Equal("age", kvp.Key); Assert.Equal(30, kvp.Value); }, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -595,7 +605,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -612,7 +622,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -626,7 +636,6 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Equal(0, count); - Assert.IsType(dict._storage); } [Fact] @@ -640,7 +649,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Equal(1, count); - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); } [Fact] @@ -657,7 +666,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Equal(1, count); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -671,7 +680,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Empty(keys); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -685,7 +694,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Equal(new[] { "key" }, keys); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -702,7 +711,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Equal(new[] { "key" }, keys); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -716,7 +725,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Empty(values); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -730,7 +739,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Equal(new object[] { "value" }, values); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -747,7 +756,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Equal(new object[] { "value" }, values); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -761,7 +770,20 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); + } + + [Fact] + public void Add_EmptyStringIsAllowed() + { + // Arrange + var dict = new RouteValueDictionary(); + + // Act + dict.Add("", "foo"); + + // Assert + Assert.Equal("foo", dict[""]); } [Fact] @@ -778,7 +800,15 @@ namespace Microsoft.AspNetCore.Routing.Tests dict.OrderBy(kvp => kvp.Key), kvp => { Assert.Equal("age", kvp.Key); Assert.Equal(30, kvp.Value); }, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); + + // The upgrade from property -> array should make space for at least 4 entries + Assert.Collection( + dict._arrayStorage, + kvp => Assert.Equal(new KeyValuePair("age", 30), kvp), + kvp => Assert.Equal(new KeyValuePair("key", "value"), kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp)); } [Fact] @@ -798,7 +828,7 @@ namespace Microsoft.AspNetCore.Routing.Tests dict.OrderBy(kvp => kvp.Key), kvp => { Assert.Equal("age", kvp.Key); Assert.Equal(30, kvp.Value); }, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -819,7 +849,7 @@ namespace Microsoft.AspNetCore.Routing.Tests Assert.Collection( dict.OrderBy(kvp => kvp.Key), kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -840,7 +870,7 @@ namespace Microsoft.AspNetCore.Routing.Tests Assert.Collection( dict.OrderBy(kvp => kvp.Key), kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -860,7 +890,7 @@ namespace Microsoft.AspNetCore.Routing.Tests dict.OrderBy(kvp => kvp.Key), kvp => { Assert.Equal("age", kvp.Key); Assert.Equal(30, kvp.Value); }, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -874,7 +904,6 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Empty(dict); - Assert.IsType(dict._storage); } [Fact] @@ -888,7 +917,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Empty(dict); - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); } [Fact] @@ -902,7 +931,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Empty(dict); - Assert.IsType(dict._storage); + Assert.Null(dict._propertyStorage); } [Fact] @@ -919,7 +948,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.Empty(dict); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -938,7 +967,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.True(result); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -957,7 +986,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.True(result); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -976,7 +1005,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.False(result); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } // Value comparisons use the default equality comparer. @@ -996,7 +1025,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.False(result); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -1010,7 +1039,19 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.False(result); - Assert.IsType(dict._storage); + } + + [Fact] + public void ContainsKey_EmptyStringIsAllowed() + { + // Arrange + var dict = new RouteValueDictionary(); + + // Act + var result = dict.ContainsKey(""); + + // Assert + Assert.False(result); } [Fact] @@ -1024,7 +1065,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.False(result); - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); } [Fact] @@ -1038,7 +1079,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.True(result); - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); } [Fact] @@ -1052,7 +1093,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.True(result); - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); } [Fact] @@ -1069,7 +1110,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.False(result); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -1086,7 +1127,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.True(result); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -1103,7 +1144,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.True(result); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -1128,7 +1169,7 @@ namespace Microsoft.AspNetCore.Routing.Tests new KeyValuePair("key", "value") }, array); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -1148,7 +1189,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.True(result); Assert.Empty(dict); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -1168,7 +1209,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.True(result); Assert.Empty(dict); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -1188,7 +1229,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.False(result); Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } // Value comparisons use the default equality comparer. @@ -1209,7 +1250,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.False(result); Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -1223,7 +1264,19 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.False(result); - Assert.IsType(dict._storage); + } + + [Fact] + public void Remove_EmptyStringIsAllowed() + { + // Arrange + var dict = new RouteValueDictionary(); + + // Act + var result = dict.Remove(""); + + // Assert + Assert.False(result); } [Fact] @@ -1238,7 +1291,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.False(result); Assert.Empty(dict); - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); } [Fact] @@ -1253,7 +1306,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.False(result); Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -1268,7 +1321,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.True(result); Assert.Empty(dict); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -1283,7 +1336,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.True(result); Assert.Empty(dict); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -1301,7 +1354,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.False(result); Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -1319,7 +1372,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.True(result); Assert.Empty(dict); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -1337,7 +1390,362 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.True(result); Assert.Empty(dict); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); + } + + + [Fact] + public void Remove_KeyAndOutValue_EmptyStorage() + { + // Arrange + var dict = new RouteValueDictionary(); + + // Act + var result = dict.Remove("key", out var removedValue); + + // Assert + Assert.False(result); + Assert.Null(removedValue); + } + + [Fact] + public void Remove_KeyAndOutValue_EmptyStringIsAllowed() + { + // Arrange + var dict = new RouteValueDictionary(); + + // Act + var result = dict.Remove("", out var removedValue); + + // Assert + Assert.False(result); + Assert.Null(removedValue); + } + + [Fact] + public void Remove_KeyAndOutValue_PropertyStorage_Empty() + { + // Arrange + var dict = new RouteValueDictionary(new { }); + + // Act + var result = dict.Remove("other", out var removedValue); + + // Assert + Assert.False(result); + Assert.Null(removedValue); + Assert.Empty(dict); + Assert.NotNull(dict._propertyStorage); + } + + [Fact] + public void Remove_KeyAndOutValue_PropertyStorage_False() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); + + // Act + var result = dict.Remove("other", out var removedValue); + + // Assert + Assert.False(result); + Assert.Null(removedValue); + Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType[]>(dict._arrayStorage); + } + + [Fact] + public void Remove_KeyAndOutValue_PropertyStorage_True() + { + // Arrange + object value = "value"; + var dict = new RouteValueDictionary(new { key = value }); + + // Act + var result = dict.Remove("key", out var removedValue); + + // Assert + Assert.True(result); + Assert.Same(value, removedValue); + Assert.Empty(dict); + Assert.IsType[]>(dict._arrayStorage); + } + + [Fact] + public void Remove_KeyAndOutValue_PropertyStorage_True_CaseInsensitive() + { + // Arrange + object value = "value"; + var dict = new RouteValueDictionary(new { key = value }); + + // Act + var result = dict.Remove("kEy", out var removedValue); + + // Assert + Assert.True(result); + Assert.Same(value, removedValue); + Assert.Empty(dict); + Assert.IsType[]>(dict._arrayStorage); + } + + [Fact] + public void Remove_KeyAndOutValue_ListStorage_False() + { + // Arrange + var dict = new RouteValueDictionary() + { + { "key", "value" }, + }; + + // Act + var result = dict.Remove("other", out var removedValue); + + // Assert + Assert.False(result); + Assert.Null(removedValue); + Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType[]>(dict._arrayStorage); + } + + [Fact] + public void Remove_KeyAndOutValue_ListStorage_True() + { + // Arrange + object value = "value"; + var dict = new RouteValueDictionary() + { + { "key", value } + }; + + // Act + var result = dict.Remove("key", out var removedValue); + + // Assert + Assert.True(result); + Assert.Same(value, removedValue); + Assert.Empty(dict); + Assert.IsType[]>(dict._arrayStorage); + } + + [Fact] + public void Remove_KeyAndOutValue_ListStorage_True_CaseInsensitive() + { + // Arrange + object value = "value"; + var dict = new RouteValueDictionary() + { + { "key", value } + }; + + // Act + var result = dict.Remove("kEy", out var removedValue); + + // Assert + Assert.True(result); + Assert.Same(value, removedValue); + Assert.Empty(dict); + Assert.IsType[]>(dict._arrayStorage); + } + + [Fact] + public void Remove_KeyAndOutValue_ListStorage_KeyExists_First() + { + // Arrange + object value = "value"; + var dict = new RouteValueDictionary() + { + { "key", value }, + { "other", 5 }, + { "dotnet", "rocks" } + }; + + // Act + var result = dict.Remove("key", out var removedValue); + + // Assert + Assert.True(result); + Assert.Same(value, removedValue); + Assert.Equal(2, dict.Count); + Assert.False(dict.ContainsKey("key")); + Assert.True(dict.ContainsKey("other")); + Assert.True(dict.ContainsKey("dotnet")); + Assert.IsType[]>(dict._arrayStorage); + } + + [Fact] + public void Remove_KeyAndOutValue_ListStorage_KeyExists_Middle() + { + // Arrange + object value = "value"; + var dict = new RouteValueDictionary() + { + { "other", 5 }, + { "key", value }, + { "dotnet", "rocks" } + }; + + // Act + var result = dict.Remove("key", out var removedValue); + + // Assert + Assert.True(result); + Assert.Same(value, removedValue); + Assert.Equal(2, dict.Count); + Assert.False(dict.ContainsKey("key")); + Assert.True(dict.ContainsKey("other")); + Assert.True(dict.ContainsKey("dotnet")); + Assert.IsType[]>(dict._arrayStorage); + } + + [Fact] + public void Remove_KeyAndOutValue_ListStorage_KeyExists_Last() + { + // Arrange + object value = "value"; + var dict = new RouteValueDictionary() + { + { "other", 5 }, + { "dotnet", "rocks" }, + { "key", value } + }; + + // Act + var result = dict.Remove("key", out var removedValue); + + // Assert + Assert.True(result); + Assert.Same(value, removedValue); + Assert.Equal(2, dict.Count); + Assert.False(dict.ContainsKey("key")); + Assert.True(dict.ContainsKey("other")); + Assert.True(dict.ContainsKey("dotnet")); + Assert.IsType[]>(dict._arrayStorage); + } + + [Fact] + public void TryAdd_EmptyStringIsAllowed() + { + // Arrange + var dict = new RouteValueDictionary(); + + // Act + var result = dict.TryAdd("", "foo"); + + // Assert + Assert.True(result); + } + + // We always 'upgrade' if you are trying to write to the dictionary. + [Fact] + public void TryAdd_ConvertsPropertyStorage_ToArrayStorage() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value", }); + + // Act + var result = dict.TryAdd("key", "value"); + + // Assert + Assert.False(result); + Assert.Null(dict._propertyStorage); + Assert.Collection( + dict._arrayStorage, + kvp => Assert.Equal(new KeyValuePair("key", "value"), kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp)); + } + + [Fact] + public void TryAdd_EmptyStorage_CanAdd() + { + // Arrange + var dict = new RouteValueDictionary(); + + // Act + var result = dict.TryAdd("key", "value"); + + // Assert + Assert.True(result); + Assert.Collection( + dict._arrayStorage, + kvp => Assert.Equal(new KeyValuePair("key", "value"), kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp)); + } + + [Fact] + public void TryAdd_ArrayStorage_CanAdd() + { + // Arrange + var dict = new RouteValueDictionary() + { + { "key0", "value0" }, + }; + + // Act + var result = dict.TryAdd("key1", "value1"); + + // Assert + Assert.True(result); + Assert.Collection( + dict._arrayStorage, + kvp => Assert.Equal(new KeyValuePair("key0", "value0"), kvp), + kvp => Assert.Equal(new KeyValuePair("key1", "value1"), kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp)); + } + + [Fact] + public void TryAdd_ArrayStorage_CanAddWithResize() + { + // Arrange + var dict = new RouteValueDictionary() + { + { "key0", "value0" }, + { "key1", "value1" }, + { "key2", "value2" }, + { "key3", "value3" }, + }; + + // Act + var result = dict.TryAdd("key4", "value4"); + + // Assert + Assert.True(result); + Assert.Collection( + dict._arrayStorage, + kvp => Assert.Equal(new KeyValuePair("key0", "value0"), kvp), + kvp => Assert.Equal(new KeyValuePair("key1", "value1"), kvp), + kvp => Assert.Equal(new KeyValuePair("key2", "value2"), kvp), + kvp => Assert.Equal(new KeyValuePair("key3", "value3"), kvp), + kvp => Assert.Equal(new KeyValuePair("key4", "value4"), kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp)); + } + + [Fact] + public void TryAdd_ArrayStorage_DoesNotAddWhenKeyIsPresent() + { + // Arrange + var dict = new RouteValueDictionary() + { + { "key0", "value0" }, + }; + + // Act + var result = dict.TryAdd("key0", "value1"); + + // Assert + Assert.False(result); + Assert.Collection( + dict._arrayStorage, + kvp => Assert.Equal(new KeyValuePair("key0", "value0"), kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp)); } [Fact] @@ -1353,7 +1761,20 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.False(result); Assert.Null(value); - Assert.IsType(dict._storage); + } + + [Fact] + public void TryGetValue_EmptyStringIsAllowed() + { + // Arrange + var dict = new RouteValueDictionary(); + + // Act + var result = dict.TryGetValue("", out var value); + + // Assert + Assert.False(result); + Assert.Null(value); } [Fact] @@ -1369,7 +1790,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.False(result); Assert.Null(value); - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); } [Fact] @@ -1385,7 +1806,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.True(result); Assert.Equal("value", value); - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); } [Fact] @@ -1401,7 +1822,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.True(result); Assert.Equal("value", value); - Assert.IsType(dict._storage); + Assert.NotNull(dict._propertyStorage); } [Fact] @@ -1420,7 +1841,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.False(result); Assert.Null(value); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -1439,7 +1860,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.True(result); Assert.Equal("value", value); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -1458,7 +1879,7 @@ namespace Microsoft.AspNetCore.Routing.Tests // Assert Assert.True(result); Assert.Equal("value", value); - Assert.IsType(dict._storage); + Assert.IsType[]>(dict._arrayStorage); } [Fact] @@ -1471,8 +1892,8 @@ namespace Microsoft.AspNetCore.Routing.Tests dict.Add("key", "value"); // Assert 1 - var storage = Assert.IsType(dict._storage); - Assert.Equal(4, storage.Capacity); + var storage = Assert.IsType[]>(dict._arrayStorage); + Assert.Equal(4, storage.Length); // Act 2 dict.Add("key2", "value2"); @@ -1481,7 +1902,8 @@ namespace Microsoft.AspNetCore.Routing.Tests dict.Add("key5", "value5"); // Assert 2 - Assert.Equal(8, storage.Capacity); + storage = Assert.IsType[]>(dict._arrayStorage); + Assert.Equal(8, storage.Length); } [Fact] @@ -1494,20 +1916,89 @@ namespace Microsoft.AspNetCore.Routing.Tests dict.Add("key3", "value3"); // Assert 1 - var storage = Assert.IsType(dict._storage); - Assert.Equal(3, storage.Count); + var storage = Assert.IsType[]>(dict._arrayStorage); + Assert.Equal(3, dict.Count); // Act dict.Remove("key2"); // Assert 2 - Assert.Equal(2, storage.Count); + storage = Assert.IsType[]>(dict._arrayStorage); + Assert.Equal(2, dict.Count); Assert.Equal("key", storage[0].Key); Assert.Equal("value", storage[0].Value); Assert.Equal("key3", storage[1].Key); Assert.Equal("value3", storage[1].Value); + } - Assert.Throws(() => storage[2]); + [Fact] + public void FromArray_TakesOwnershipOfArray() + { + // Arrange + var array = new KeyValuePair[] + { + new KeyValuePair("a", 0), + new KeyValuePair("b", 1), + new KeyValuePair("c", 2), + }; + + var dictionary = RouteValueDictionary.FromArray(array); + + // Act - modifying the array should modify the dictionary + array[0] = new KeyValuePair("aa", 10); + + // Assert + Assert.Equal(3, dictionary.Count); + Assert.Equal(10, dictionary["aa"]); + } + + [Fact] + public void FromArray_EmptyArray() + { + // Arrange + var array = Array.Empty>(); + + // Act + var dictionary = RouteValueDictionary.FromArray(array); + + // Assert + Assert.Empty(dictionary); + } + + [Fact] + public void FromArray_RemovesGapsInArray() + { + // Arrange + var array = new KeyValuePair[] + { + new KeyValuePair(null, null), + new KeyValuePair("a", 0), + new KeyValuePair(null, null), + new KeyValuePair(null, null), + new KeyValuePair("b", 1), + new KeyValuePair("c", 2), + new KeyValuePair("d", 3), + new KeyValuePair(null, null), + }; + + // Act - calling From should modify the array + var dictionary = RouteValueDictionary.FromArray(array); + + // Assert + Assert.Equal(4, dictionary.Count); + Assert.Equal( + new KeyValuePair[] + { + new KeyValuePair("d", 3), + new KeyValuePair("a", 0), + new KeyValuePair("c", 2), + new KeyValuePair("b", 1), + new KeyValuePair(null, null), + new KeyValuePair(null, null), + new KeyValuePair(null, null), + new KeyValuePair(null, null), + }, + array); } private class RegularType @@ -1569,4 +2060,4 @@ namespace Microsoft.AspNetCore.Routing.Tests public string State { get; set; } } } -} +} \ No newline at end of file diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.DecisionTree.Sources.Tests/Microsoft.AspNetCore.Routing.DecisionTree.Sources.Tests.csproj b/src/Routing/test/Microsoft.AspNetCore.Routing.DecisionTree.Sources.Tests/Microsoft.AspNetCore.Routing.DecisionTree.Sources.Tests.csproj index 3d127f0370..286e462426 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.DecisionTree.Sources.Tests/Microsoft.AspNetCore.Routing.DecisionTree.Sources.Tests.csproj +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.DecisionTree.Sources.Tests/Microsoft.AspNetCore.Routing.DecisionTree.Sources.Tests.csproj @@ -1,4 +1,4 @@ - + $(StandardTestTfms) diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/Benchmarks/EndpointRoutingBenchmarkTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/Benchmarks/EndpointRoutingBenchmarkTest.cs new file mode 100644 index 0000000000..2e39f5846c --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/Benchmarks/EndpointRoutingBenchmarkTest.cs @@ -0,0 +1,60 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +#if NETCOREAPP2_2 +using System; +using System.Net; +using System.Net.Http; +using System.Threading.Tasks; +using Microsoft.AspNetCore.TestHost; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.FunctionalTests +{ + public class EndpointRoutingBenchmarkTest : IDisposable + { + private readonly HttpClient _client; + private readonly TestServer _testServer; + + public EndpointRoutingBenchmarkTest() + { + // This switch and value are set by benchmark server when running the app for profiling. + var args = new[] { "--scenarios", "PlaintextEndpointRouting" }; + var webHostBuilder = Benchmarks.Program.GetWebHostBuilder(args); + + // Make sure we are using the right startup + var startupName = webHostBuilder.GetSetting("Startup"); + Assert.Equal(nameof(Benchmarks.StartupUsingEndpointRouting), startupName); + + _testServer = new TestServer(webHostBuilder); + _client = _testServer.CreateClient(); + _client.BaseAddress = new Uri("http://localhost"); + } + + [Fact] + public async Task RouteEndpoint_ReturnsPlaintextResponse() + { + // Arrange + var expectedContentType = "text/plain"; + var expectedContent = "Hello, World!"; + + // Act + var response = await _client.GetAsync("/plaintext"); + + // Assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + Assert.NotNull(response.Content.Headers.ContentType); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType.MediaType); + var actualContent = await response.Content.ReadAsStringAsync(); + Assert.Equal(expectedContent, actualContent); + } + + public void Dispose() + { + _testServer.Dispose(); + _client.Dispose(); + } + } +} +#endif \ No newline at end of file diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/Benchmarks/RouterBenchmarkTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/Benchmarks/RouterBenchmarkTest.cs new file mode 100644 index 0000000000..bb7300388b --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/Benchmarks/RouterBenchmarkTest.cs @@ -0,0 +1,60 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +#if NETCOREAPP2_2 +using System; +using System.Net; +using System.Net.Http; +using System.Threading.Tasks; +using Microsoft.AspNetCore.TestHost; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.FunctionalTests +{ + public class RouterBenchmarkTest : IDisposable + { + private readonly HttpClient _client; + private readonly TestServer _testServer; + + public RouterBenchmarkTest() + { + // This switch and value are set by benchmark server when running the app for profiling. + var args = new[] { "--scenarios", "PlaintextRouting" }; + var webHostBuilder = Benchmarks.Program.GetWebHostBuilder(args); + + // Make sure we are using the right startup + var startupName = webHostBuilder.GetSetting("Startup"); + Assert.Equal(nameof(Benchmarks.StartupUsingRouter), startupName); + + _testServer = new TestServer(webHostBuilder); + _client = _testServer.CreateClient(); + _client.BaseAddress = new Uri("http://localhost"); + } + + [Fact] + public async Task RouteHandlerWritesResponse() + { + // Arrange + var expectedContentType = "text/plain"; + var expectedContent = "Hello, World!"; + + // Act + var response = await _client.GetAsync("/plaintext"); + + // Assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + Assert.NotNull(response.Content.Headers.ContentType); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType.MediaType); + var actualContent = await response.Content.ReadAsStringAsync(); + Assert.Equal(expectedContent, actualContent); + } + + public void Dispose() + { + _testServer.Dispose(); + _client.Dispose(); + } + } +} +#endif \ No newline at end of file diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/EndpointRoutingSampleTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/EndpointRoutingSampleTest.cs new file mode 100644 index 0000000000..6f5a978c5f --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/EndpointRoutingSampleTest.cs @@ -0,0 +1,187 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Net; +using System.Net.Http; +using System.Threading.Tasks; +using Microsoft.AspNetCore.TestHost; +using RoutingWebSite; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.FunctionalTests +{ + public class EndpointRoutingSampleTest : IDisposable + { + private readonly HttpClient _client; + private readonly TestServer _testServer; + + public EndpointRoutingSampleTest() + { + var webHostBuilder = Program.GetWebHostBuilder(new[] { Program.EndpointRoutingScenario, }); + _testServer = new TestServer(webHostBuilder); + _client = _testServer.CreateClient(); + _client.BaseAddress = new Uri("http://localhost"); + } + + [Fact] + public async Task MatchesRootPath_AndReturnsPlaintext() + { + // Arrange + var expectedContentType = "text/plain"; + var expectedContent = "Endpoint Routing sample endpoints:" + Environment.NewLine + "/plaintext"; + + // Act + var response = await _client.GetAsync("/"); + + // Assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + Assert.NotNull(response.Content.Headers.ContentType); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType.MediaType); + var actualContent = await response.Content.ReadAsStringAsync(); + Assert.Equal(expectedContent, actualContent); + } + + [Fact] + public async Task MatchesStaticRouteTemplate_AndReturnsPlaintext() + { + // Arrange + var expectedContentType = "text/plain"; + var expectedContent = "Hello, World!"; + + // Act + var response = await _client.GetAsync("/plaintext"); + + // Assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + Assert.NotNull(response.Content.Headers.ContentType); + Assert.Equal(expectedContentType, response.Content.Headers.ContentType.MediaType); + var actualContent = await response.Content.ReadAsStringAsync(); + Assert.Equal(expectedContent, actualContent); + } + + [Fact] + public async Task MatchesEndpoint_WithSuccessfulConstraintMatch() + { + // Arrange + var expectedContent = "WithConstraints"; + + // Act + var response = await _client.GetAsync("/withconstraints/555_001"); + + // Assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + var actualContent = await response.Content.ReadAsStringAsync(); + Assert.Equal(expectedContent, actualContent); + } + + [Fact] + public async Task DoesNotMatchEndpoint_IfConstraintMatchFails() + { + // Arrange & Act + var response = await _client.GetAsync("/withconstraints/555"); + + // Assert + Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); + } + + [Fact] + public async Task MatchesEndpoint_WithSuccessful_OptionalConstraintMatch() + { + // Arrange + var expectedContent = "withoptionalconstraints"; + + // Act + var response = await _client.GetAsync("/withoptionalconstraints/555_001"); + + // Assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + var actualContent = await response.Content.ReadAsStringAsync(); + Assert.Equal(expectedContent, actualContent); + } + + [Fact] + public async Task MatchesEndpoint_WithSuccessful_OptionalConstraintMatch_NoValueForParameter() + { + // Arrange + var expectedContent = "withoptionalconstraints"; + + // Act + var response = await _client.GetAsync("/withoptionalconstraints"); + + // Assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + var actualContent = await response.Content.ReadAsStringAsync(); + Assert.Equal(expectedContent, actualContent); + } + + [Fact] + public async Task DoesNotMatchEndpoint_IfOptionalConstraintMatchFails() + { + // Arrange & Act + var response = await _client.GetAsync("/withoptionalconstraints/555"); + + // Assert + Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); + } + + [Theory] + [InlineData("/WithSingleAsteriskCatchAll/a/b/c", "Link: /WithSingleAsteriskCatchAll/a%2Fb%2Fc")] + [InlineData("/WithSingleAsteriskCatchAll/a/b b1/c c1", "Link: /WithSingleAsteriskCatchAll/a%2Fb%20b1%2Fc%20c1")] + public async Task GeneratesLink_ToEndpointWithSingleAsteriskCatchAllParameter_EncodesValue( + string url, + string expected) + { + // Arrange & Act + var response = await _client.GetAsync(url); + + // Assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + var actualContent = await response.Content.ReadAsStringAsync(); + Assert.Equal(expected, actualContent); + } + + [Theory] + [InlineData("/WithDoubleAsteriskCatchAll/a/b/c", "Link: /WithDoubleAsteriskCatchAll/a/b/c")] + [InlineData("/WithDoubleAsteriskCatchAll/a/b/c/", "Link: /WithDoubleAsteriskCatchAll/a/b/c/")] + [InlineData("/WithDoubleAsteriskCatchAll/a//b/c", "Link: /WithDoubleAsteriskCatchAll/a//b/c")] + public async Task GeneratesLink_ToEndpointWithDoubleAsteriskCatchAllParameter_DoesNotEncodeSlashes( + string url, + string expected) + { + // Arrange & Act + var response = await _client.GetAsync(url); + + // Assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + var actualContent = await response.Content.ReadAsStringAsync(); + Assert.Equal(expected, actualContent); + } + + [Fact] + public async Task GeneratesLink_ToEndpointWithDoubleAsteriskCatchAllParameter_EncodesContentOtherThanSlashes() + { + // Arrange & Act + var response = await _client.GetAsync("/WithDoubleAsteriskCatchAll/a/b b1/c c1"); + + // Assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + var actualContent = await response.Content.ReadAsStringAsync(); + Assert.Equal("Link: /WithDoubleAsteriskCatchAll/a/b%20b1/c%20c1", actualContent); + } + + public void Dispose() + { + _testServer.Dispose(); + _client.Dispose(); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/Microsoft.AspNetCore.Routing.FunctionalTests.csproj b/src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/Microsoft.AspNetCore.Routing.FunctionalTests.csproj index ee8a57c08f..0fecc56388 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/Microsoft.AspNetCore.Routing.FunctionalTests.csproj +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/Microsoft.AspNetCore.Routing.FunctionalTests.csproj @@ -1,4 +1,4 @@ - + $(StandardTestTfms) @@ -6,11 +6,15 @@ - + + + + + - + \ No newline at end of file diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/RoutingSampleTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/RouterSampleTest.cs similarity index 92% rename from src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/RoutingSampleTest.cs rename to src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/RouterSampleTest.cs index 8869103f40..315dcc1b68 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/RoutingSampleTest.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.FunctionalTests/RouterSampleTest.cs @@ -6,18 +6,19 @@ using System.Net; using System.Net.Http; using System.Threading.Tasks; using Microsoft.AspNetCore.TestHost; +using RoutingWebSite; using Xunit; namespace Microsoft.AspNetCore.Routing.FunctionalTests { - public class RoutingSampleTest : IDisposable + public class RouterSampleTest : IDisposable { private readonly HttpClient _client; private readonly TestServer _testServer; - public RoutingSampleTest() + public RouterSampleTest() { - var webHostBuilder = RoutingSample.Web.Program.GetWebHostBuilder(); + var webHostBuilder = Program.GetWebHostBuilder(new[] { Program.RouterScenario, }); _testServer = new TestServer(webHostBuilder); _client = _testServer.CreateClient(); _client.BaseAddress = new Uri("http://localhost"); diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Builder/EndpointRoutingBuilderExtensionsTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Builder/EndpointRoutingBuilderExtensionsTest.cs new file mode 100644 index 0000000000..106a47e27b --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Builder/EndpointRoutingBuilderExtensionsTest.cs @@ -0,0 +1,156 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder.Internal; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; +using Microsoft.AspNetCore.Internal; +using Microsoft.AspNetCore.Routing; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.Extensions.DependencyInjection; +using Moq; +using Xunit; + +namespace Microsoft.AspNetCore.Builder +{ + public class EndpointRoutingBuilderExtensionsTest + { + [Fact] + public void UseEndpointRouting_ServicesNotRegistered_Throws() + { + // Arrange + var app = new ApplicationBuilder(Mock.Of()); + + // Act + var ex = Assert.Throws(() => app.UseEndpointRouting()); + + // Assert + Assert.Equal( + "Unable to find the required services. " + + "Please add all the required services by calling 'IServiceCollection.AddRouting' " + + "inside the call to 'ConfigureServices(...)' in the application startup code.", + ex.Message); + } + + [Fact] + public void UseEndpoint_ServicesNotRegistered_Throws() + { + // Arrange + var app = new ApplicationBuilder(Mock.Of()); + + // Act + var ex = Assert.Throws(() => app.UseEndpoint()); + + // Assert + Assert.Equal( + "Unable to find the required services. " + + "Please add all the required services by calling 'IServiceCollection.AddRouting' " + + "inside the call to 'ConfigureServices(...)' in the application startup code.", + ex.Message); + } + + [Fact] + public async Task UseEndpointRouting_ServicesRegistered_NoMatch_DoesNotSetFeature() + { + // Arrange + var services = CreateServices(); + + var app = new ApplicationBuilder(services); + + app.UseEndpointRouting(); + + var appFunc = app.Build(); + var httpContext = new DefaultHttpContext(); + + // Act + await appFunc(httpContext); + + // Assert + Assert.Null(httpContext.Features.Get()); + } + + [Fact] + public async Task UseEndpointRouting_ServicesRegistered_Match_DoesNotSetsFeature() + { + // Arrange + var endpoint = new RouteEndpoint( + TestConstants.EmptyRequestDelegate, + RoutePatternFactory.Parse("{*p}"), + 0, + EndpointMetadataCollection.Empty, + "Test"); + + var services = CreateServices(endpoint); + + var app = new ApplicationBuilder(services); + + app.UseEndpointRouting(); + + var appFunc = app.Build(); + var httpContext = new DefaultHttpContext(); + + // Act + await appFunc(httpContext); + + // Assert + var feature = httpContext.Features.Get(); + Assert.NotNull(feature); + Assert.Same(endpoint, feature.Endpoint); + } + + [Fact] + public void UseEndpoint_WithoutRoutingServicesRegistered_Throws() + { + // Arrange + var services = CreateServices(); + + var app = new ApplicationBuilder(services); + + // Act + var ex = Assert.Throws(() => app.UseEndpoint()); + + // Assert + Assert.Equal( + "EndpointRoutingMiddleware must be added to the request execution pipeline before EndpointMiddleware. " + + "Please add EndpointRoutingMiddleware by calling 'IApplicationBuilder.UseEndpointRouting' " + + "inside the call to 'Configure(...)' in the application startup code.", + ex.Message); + } + + [Fact] + public async Task UseEndpoint_ServicesRegisteredAndEndpointRoutingRegistered_NoMatch_DoesNotSetFeature() + { + // Arrange + var services = CreateServices(); + + var app = new ApplicationBuilder(services); + + app.UseEndpointRouting(); + app.UseEndpoint(); + + var appFunc = app.Build(); + var httpContext = new DefaultHttpContext(); + + // Act + await appFunc(httpContext); + + // Assert + Assert.Null(httpContext.Features.Get()); + } + + private IServiceProvider CreateServices(params Endpoint[] endpoints) + { + var services = new ServiceCollection(); + + services.AddLogging(); + services.AddOptions(); + services.AddRouting(); + + services.AddSingleton(new DefaultEndpointDataSource(endpoints)); + + return services.BuildServiceProvider(); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RoutingBuilderExtensionsTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Builder/RoutingBuilderExtensionsTest.cs similarity index 75% rename from src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RoutingBuilderExtensionsTest.cs rename to src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Builder/RoutingBuilderExtensionsTest.cs index 9499a6cdeb..136950cfce 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RoutingBuilderExtensionsTest.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Builder/RoutingBuilderExtensionsTest.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; @@ -14,6 +14,28 @@ namespace Microsoft.AspNetCore.Builder { public class RoutingBuilderExtensionsTest { + [Fact] + public void UseRouter_ThrowsInvalidOperationException_IfRoutingMarkerServiceIsNotRegistered() + { + // Arrange + var applicationBuilderMock = new Mock(); + applicationBuilderMock + .Setup(s => s.ApplicationServices) + .Returns(Mock.Of()); + + var router = Mock.Of(); + + // Act & Assert + var exception = Assert.Throws( + () => applicationBuilderMock.Object.UseRouter(router)); + + Assert.Equal( + "Unable to find the required services. Please add all the required services by calling " + + "'IServiceCollection.AddRouting' inside the call to 'ConfigureServices(...)'" + + " in the application startup code.", + exception.Message); + } + [Fact] public void UseRouter_IRouter_ThrowsWithoutCallingAddRouting() { @@ -59,7 +81,7 @@ namespace Microsoft.AspNetCore.Builder var router = new Mock(MockBehavior.Strict); router .Setup(r => r.RouteAsync(It.IsAny())) - .Returns(Task.FromResult(0)) + .Returns(Task.CompletedTask) .Verifiable(); app.UseRouter(router.Object); @@ -84,7 +106,7 @@ namespace Microsoft.AspNetCore.Builder var router = new Mock(MockBehavior.Strict); router .Setup(r => r.RouteAsync(It.IsAny())) - .Returns(Task.FromResult(0)) + .Returns(Task.CompletedTask) .Verifiable(); app.UseRouter(b => diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/BuilderExtensionsTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/BuilderExtensionsTest.cs deleted file mode 100644 index ca297f89d2..0000000000 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/BuilderExtensionsTest.cs +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System; -using Microsoft.AspNetCore.Routing; -using Moq; -using Xunit; - -namespace Microsoft.AspNetCore.Builder -{ - public class BuilderExtensionsTest - { - [Fact] - public void UseRouter_ThrowsInvalidOperationException_IfRoutingMarkerServiceIsNotRegistered() - { - // Arrange - var applicationBuilderMock = new Mock(); - applicationBuilderMock - .Setup(s => s.ApplicationServices) - .Returns(Mock.Of()); - - var router = Mock.Of(); - - // Act & Assert - var exception = Assert.Throws( - () => applicationBuilderMock.Object.UseRouter(router)); - - Assert.Equal( - "Unable to find the required services. Please add all the required services by calling " + - "'IServiceCollection.AddRouting' inside the call to 'ConfigureServices(...)'" + - " in the application startup code.", - exception.Message); - } - } -} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/CompositeEndpointDataSourceTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/CompositeEndpointDataSourceTest.cs new file mode 100644 index 0000000000..cd98416c4a --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/CompositeEndpointDataSourceTest.cs @@ -0,0 +1,179 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Matching; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.AspNetCore.Routing.TestObjects; +using Microsoft.Extensions.Primitives; +using Xunit; + +namespace Microsoft.AspNetCore.Routing +{ + public class CompositeEndpointDataSourceTest + { + [Fact] + public void CreatesShallowCopyOf_ListOfEndpoints() + { + // Arrange + var endpoint1 = CreateEndpoint("/a"); + var endpoint2 = CreateEndpoint("/b"); + var dataSource = new DefaultEndpointDataSource(new Endpoint[] { endpoint1, endpoint2 }); + var compositeDataSource = new CompositeEndpointDataSource(new[] { dataSource }); + + // Act + var endpoints = compositeDataSource.Endpoints; + + // Assert + Assert.NotSame(endpoints, dataSource.Endpoints); + Assert.Equal(endpoints, dataSource.Endpoints); + } + + [Fact] + public void Endpoints_ReturnsAllEndpoints_FromMultipleDataSources() + { + // Arrange + var endpoint1 = CreateEndpoint("/a"); + var endpoint2 = CreateEndpoint("/b"); + var endpoint3 = CreateEndpoint("/c"); + var endpoint4 = CreateEndpoint("/d"); + var endpoint5 = CreateEndpoint("/e"); + var compositeDataSource = new CompositeEndpointDataSource(new[] + { + new DefaultEndpointDataSource(new Endpoint[] { endpoint1, endpoint2 }), + new DefaultEndpointDataSource(new Endpoint[] { endpoint3, endpoint4 }), + new DefaultEndpointDataSource(new Endpoint[] { endpoint5 }), + }); + + // Act + var endpoints = compositeDataSource.Endpoints; + + // Assert + Assert.Collection( + endpoints, + (ep) => Assert.Same(endpoint1, ep), + (ep) => Assert.Same(endpoint2, ep), + (ep) => Assert.Same(endpoint3, ep), + (ep) => Assert.Same(endpoint4, ep), + (ep) => Assert.Same(endpoint5, ep)); + } + + [Fact] + public void DataSourceChanges_AreReflected_InEndpoints() + { + // Arrange1 + var endpoint1 = CreateEndpoint("/a"); + var dataSource1 = new DynamicEndpointDataSource(endpoint1); + var compositeDataSource = new CompositeEndpointDataSource(new[] { dataSource1 }); + + // Act1 + var endpoints = compositeDataSource.Endpoints; + + // Assert1 + var endpoint = Assert.Single(endpoints); + Assert.Same(endpoint1, endpoint); + + // Arrange2 + var endpoint2 = CreateEndpoint("/b"); + + // Act2 + dataSource1.AddEndpoint(endpoint2); + + // Assert2 + Assert.Collection( + compositeDataSource.Endpoints, + (ep) => Assert.Same(endpoint1, ep), + (ep) => Assert.Same(endpoint2, ep)); + + // Arrange3 + var endpoint3 = CreateEndpoint("/c"); + + // Act2 + dataSource1.AddEndpoint(endpoint3); + + // Assert2 + Assert.Collection( + compositeDataSource.Endpoints, + (ep) => Assert.Same(endpoint1, ep), + (ep) => Assert.Same(endpoint2, ep), + (ep) => Assert.Same(endpoint3, ep)); + } + + [Fact] + public void ConsumerChangeToken_IsRefreshed_WhenDataSourceCallbackFires() + { + // Arrange1 + var endpoint1 = CreateEndpoint("/a"); + var dataSource1 = new DynamicEndpointDataSource(endpoint1); + var compositeDataSource = new CompositeEndpointDataSource(new[] { dataSource1 }); + + // Act1 + var endpoints = compositeDataSource.Endpoints; + + // Assert1 + var changeToken1 = compositeDataSource.GetChangeToken(); + var token = Assert.IsType(changeToken1); + Assert.False(token.HasChanged); // initial state + + // Arrange2 + var endpoint2 = CreateEndpoint("/b"); + + // Act2 + dataSource1.AddEndpoint(endpoint2); + + // Assert2 + Assert.True(changeToken1.HasChanged); // old token is expected to be changed + var changeToken2 = compositeDataSource.GetChangeToken(); // new token is in a unchanged state + Assert.NotSame(changeToken2, changeToken1); + token = Assert.IsType(changeToken2); + Assert.False(token.HasChanged); + + // Arrange3 + var endpoint3 = CreateEndpoint("/c"); + + // Act2 + dataSource1.AddEndpoint(endpoint3); + + // Assert2 + Assert.True(changeToken2.HasChanged); // old token is expected to be changed + var changeToken3 = compositeDataSource.GetChangeToken(); // new token is in a unchanged state + Assert.NotSame(changeToken3, changeToken2); + Assert.NotSame(changeToken3, changeToken1); + token = Assert.IsType(changeToken3); + Assert.False(token.HasChanged); + } + + private RouteEndpoint CreateEndpoint( + string template, + object defaults = null, + int order = 0, + string routeName = null) + { + return new RouteEndpoint( + TestConstants.EmptyRequestDelegate, + RoutePatternFactory.Parse(template, defaults, parameterPolicies: null), + order, + EndpointMetadataCollection.Empty, + null); + } + + private class CustomEndpointDataSource : EndpointDataSource + { + private readonly CancellationTokenSource _cts; + private readonly CancellationChangeToken _token; + + public CustomEndpointDataSource() + { + _cts = new CancellationTokenSource(); + _token = new CancellationChangeToken(_cts.Token); + } + + public override IChangeToken GetChangeToken() => _token; + public override IReadOnlyList Endpoints => Array.Empty(); + } + } +} \ No newline at end of file diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/ConstraintMatcherTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/ConstraintMatcherTest.cs index 4d9b436e81..59194e3a0b 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/ConstraintMatcherTest.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/ConstraintMatcherTest.cs @@ -56,7 +56,7 @@ namespace Microsoft.AspNetCore.Routing }; var sink = SetUpMatch(constraints, loggerEnabled: true); var expectedMessage = "Route value 'value' with key 'b' did not match the constraint " + - $"'{typeof(FailConstraint).FullName}'."; + $"'{typeof(FailConstraint).FullName}'"; // Assert Assert.Empty(sink.Scopes); diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Constraints/ConstraintsTestHelper.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Constraints/ConstraintsTestHelper.cs index a86c7f4910..6e0d7e7e0d 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Constraints/ConstraintsTestHelper.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Constraints/ConstraintsTestHelper.cs @@ -10,21 +10,12 @@ namespace Microsoft.AspNetCore.Routing.Tests { public class ConstraintsTestHelper { - public static bool TestConstraint(IRouteConstraint constraint, object value, Action routeConfig = null) + public static bool TestConstraint(IRouteConstraint constraint, object value) { - var context = new Mock(); - - var route = new RouteCollection(); - - if (routeConfig != null) - { - routeConfig(route); - } - var parameterName = "fake"; var values = new RouteValueDictionary() { { parameterName, value } }; var routeDirection = RouteDirection.IncomingRequest; - return constraint.Match(context.Object, route, parameterName, values, routeDirection); + return constraint.Match(httpContext: null, route: null, parameterName, values, routeDirection); } } } diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DataSourceDependentCacheTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DataSourceDependentCacheTest.cs new file mode 100644 index 0000000000..33da589661 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DataSourceDependentCacheTest.cs @@ -0,0 +1,80 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Text; +using Microsoft.AspNetCore.Routing.TestObjects; +using Xunit; + +namespace Microsoft.AspNetCore.Routing +{ + public class DataSourceDependentCacheTest + { + [Fact] + public void Cache_Initializes_WhenEnsureInitializedCalled() + { + // Arrange + var called = false; + + var dataSource = new DynamicEndpointDataSource(); + var cache = new DataSourceDependentCache(dataSource, (endpoints) => + { + called = true; + return "hello, world!"; + }); + + // Act + cache.EnsureInitialized(); + + // Assert + Assert.True(called); + Assert.Equal("hello, world!", cache.Value); + } + + [Fact] + public void Cache_DoesNotInitialize_WhenValueCalled() + { + // Arrange + var called = false; + + var dataSource = new DynamicEndpointDataSource(); + var cache = new DataSourceDependentCache(dataSource, (endpoints) => + { + called = true; + return "hello, world!"; + }); + + // Act + GC.KeepAlive(cache.Value); + + // Assert + Assert.False(called); + Assert.Null(cache.Value); + } + + [Fact] + public void Cache_Reinitializes_WhenDataSourceChanges() + { + // Arrange + var count = 0; + + var dataSource = new DynamicEndpointDataSource(); + var cache = new DataSourceDependentCache(dataSource, (endpoints) => + { + count++; + return $"hello, {count}!"; + }); + + cache.EnsureInitialized(); + Assert.Equal("hello, 1!", cache.Value); + + // Act + dataSource.AddEndpoint(null); + + // Assert + Assert.Equal(2, count); + Assert.Equal("hello, 2!", cache.Value); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DefaultEndpointDataSourceTests.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DefaultEndpointDataSourceTests.cs new file mode 100644 index 0000000000..033f32ab55 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DefaultEndpointDataSourceTests.cs @@ -0,0 +1,100 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; +using Xunit; + +namespace Microsoft.AspNetCore.Routing +{ + public class DefaultEndpointDataSourceTests + { + [Fact] + public void Constructor_Params_EndpointsInitialized() + { + // Arrange & Act + var dataSource = new DefaultEndpointDataSource( + new Endpoint(TestConstants.EmptyRequestDelegate, EndpointMetadataCollection.Empty, "1"), + new Endpoint(TestConstants.EmptyRequestDelegate, EndpointMetadataCollection.Empty, "2") + ); + + // Assert + Assert.Collection(dataSource.Endpoints, + endpoint => Assert.Equal("1", endpoint.DisplayName), + endpoint => Assert.Equal("2", endpoint.DisplayName)); + } + + [Fact] + public void Constructor_Params_ShouldMakeCopyOfEndpoints() + { + // Arrange + var endpoint1 = new Endpoint(TestConstants.EmptyRequestDelegate, EndpointMetadataCollection.Empty, "1"); + var endpoint2 = new Endpoint(TestConstants.EmptyRequestDelegate, EndpointMetadataCollection.Empty, "2"); + var endpoints = new[] { endpoint1, endpoint2 }; + + // Act + var dataSource = new DefaultEndpointDataSource(endpoints); + Array.Resize(ref endpoints, 1); + endpoints[0] = null; + + // Assert + Assert.Equal(2, dataSource.Endpoints.Count); + Assert.Contains(endpoint1, dataSource.Endpoints); + Assert.Contains(endpoint2, dataSource.Endpoints); + } + + [Fact] + public void Constructor_Params_ShouldThrowArgumentNullExceptionWhenEndpointsIsNull() + { + Endpoint[] endpoints = null; + + var actual = Assert.Throws(() => new DefaultEndpointDataSource(endpoints)); + Assert.Equal("endpoints", actual.ParamName); + } + + [Fact] + public void Constructor_Enumerable_EndpointsInitialized() + { + // Arrange & Act + var dataSource = new DefaultEndpointDataSource(new List + { + new Endpoint(TestConstants.EmptyRequestDelegate, EndpointMetadataCollection.Empty, "1"), + new Endpoint(TestConstants.EmptyRequestDelegate, EndpointMetadataCollection.Empty, "2") + }); + + // Assert + Assert.Collection(dataSource.Endpoints, + endpoint => Assert.Equal("1", endpoint.DisplayName), + endpoint => Assert.Equal("2", endpoint.DisplayName)); + } + + [Fact] + public void Constructor_Enumerable_ShouldMakeCopyOfEndpoints() + { + // Arrange + var endpoint1 = new Endpoint(TestConstants.EmptyRequestDelegate, EndpointMetadataCollection.Empty, "1"); + var endpoint2 = new Endpoint(TestConstants.EmptyRequestDelegate, EndpointMetadataCollection.Empty, "2"); + var endpoints = new List { endpoint1, endpoint2 }; + + // Act + var dataSource = new DefaultEndpointDataSource((IEnumerable)endpoints); + endpoints.RemoveAt(0); + endpoints[0] = null; + + // Assert + Assert.Equal(2, dataSource.Endpoints.Count); + Assert.Contains(endpoint1, dataSource.Endpoints); + Assert.Contains(endpoint2, dataSource.Endpoints); + } + + [Fact] + public void Constructor_Enumerable_ShouldThrowArgumentNullExceptionWhenEndpointsIsNull() + { + IEnumerable endpoints = null; + + var actual = Assert.Throws(() => new DefaultEndpointDataSource(endpoints)); + Assert.Equal("endpoints", actual.ParamName); + } + } +} \ No newline at end of file diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DefaultInlineConstraintResolverTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DefaultInlineConstraintResolverTest.cs index bba78fb6b2..63aef81de4 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DefaultInlineConstraintResolverTest.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DefaultInlineConstraintResolverTest.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Routing.Constraints; +using Microsoft.AspNetCore.Routing.TestObjects; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Moq; @@ -324,11 +325,33 @@ namespace Microsoft.AspNetCore.Routing.Tests ex.Message); } - private IInlineConstraintResolver GetInlineConstraintResolver(RouteOptions routeOptions) + [Fact] + public void ResolveConstraint_HasArguments_NoServiceProvider() + { + // Arrange + var routeOptions = new RouteOptions(); + var constraintResolver = GetInlineConstraintResolver(routeOptions, hasServiceProvider: false); + + // Act + var constraint = constraintResolver.ResolveConstraint("regex(ab,1)"); + + // Assert + Assert.IsType(constraint); + } + + private IInlineConstraintResolver GetInlineConstraintResolver(RouteOptions routeOptions, bool hasServiceProvider = true) { var optionsAccessor = new Mock>(); optionsAccessor.SetupGet(o => o.Value).Returns(routeOptions); + + if (hasServiceProvider) + { + return new DefaultInlineConstraintResolver(optionsAccessor.Object, new TestServiceProvider()); + } + +#pragma warning disable CS0618 // Type or member is obsolete return new DefaultInlineConstraintResolver(optionsAccessor.Object); +#pragma warning restore CS0618 // Type or member is obsolete } private class MultiConstructorRouteConstraint : IRouteConstraint diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DefaultLinkGeneratorProcessTemplateTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DefaultLinkGeneratorProcessTemplateTest.cs new file mode 100644 index 0000000000..4f6792b47f --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DefaultLinkGeneratorProcessTemplateTest.cs @@ -0,0 +1,1583 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using System.Linq; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Constraints; +using Microsoft.AspNetCore.Routing.TestObjects; +using Moq; +using Xunit; + +namespace Microsoft.AspNetCore.Routing +{ + // Detailed coverage for how DefaultLinkGenerator processes templates + public class DefaultLinkGeneratorProcessTemplateTest : LinkGeneratorTestBase + { + [Fact] + public void TryProcessTemplate_EncodesIntermediate_DefaultValues() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{p1}/{p2=a b}/{p3=foo}"); + var linkGenerator = CreateLinkGenerator(endpoint); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: null, + endpoint: endpoint, + values: new RouteValueDictionary(new { p1 = "Home", p3 = "bar", }), + ambientValues: null, + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/a%20b/bar", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Theory] + [InlineData("a/b/c", "/Home/Index/a%2Fb%2Fc")] + [InlineData("a/b b1/c c1", "/Home/Index/a%2Fb%20b1%2Fc%20c1")] + public void TryProcessTemplate_EncodesValue_OfSingleAsteriskCatchAllParameter(string routeValue, string expected) + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{*path}"); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home", action = "Index" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { path = routeValue, }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal(expected, result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Theory] + [InlineData("/", "/Home/Index//")] + [InlineData("a", "/Home/Index/a")] + [InlineData("a/", "/Home/Index/a/")] + [InlineData("a/b", "/Home/Index/a/b")] + [InlineData("a/b/c", "/Home/Index/a/b/c")] + [InlineData("a/b/cc", "/Home/Index/a/b/cc")] + [InlineData("a/b/c/", "/Home/Index/a/b/c/")] + [InlineData("a/b/c//", "/Home/Index/a/b/c//")] + [InlineData("a//b//c", "/Home/Index/a//b//c")] + public void TryProcessTemplate_DoesNotEncodeSlashes_OfDoubleAsteriskCatchAllParameter(string routeValue, string expected) + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{**path}"); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home", action = "Index" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { path = routeValue, }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal(expected, result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_EncodesContentOtherThanSlashes_OfDoubleAsteriskCatchAllParameter() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{**path}"); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home", action = "Index" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { path = "a/b b1/c c1" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index/a/b%20b1/c%20c1", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_EncodesValues() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}"); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home", action = "Index" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { name = "name with %special #characters" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index", result.path.ToUriComponent()); + Assert.Equal("?name=name%20with%20%25special%20%23characters", result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_ForListOfStrings() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}"); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home", action = "Index" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { color = new List { "red", "green", "blue" } }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index", result.path.ToUriComponent()); + Assert.Equal("?color=red&color=green&color=blue", result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_ForListOfInts() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}"); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home", action = "Index" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { items = new List { 10, 20, 30 } }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index", result.path.ToUriComponent()); + Assert.Equal("?items=10&items=20&items=30", result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_ForList_Empty() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}"); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home", action = "Index" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { color = new List { } }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_ForList_StringWorkaround() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}"); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home", action = "Index" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { page = 1, color = new List { "red", "green", "blue" }, message = "textfortest" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index", result.path.ToUriComponent()); + Assert.Equal("?page=1&color=red&color=green&color=blue&message=textfortest", result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_Success_AmbientValues() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}"); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_GeneratesLowercaseUrl_SetOnRouteOptions() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}"); + var linkGenerator = CreateLinkGenerator(new RouteOptions() { LowercaseUrls = true }, endpoints: new[] { endpoint, }); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/home/index", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + // Regression test for https://github.com/aspnet/Routing/issues/802 + [Fact] + public void TryProcessTemplate_GeneratesLowercaseUrl_Includes_BufferedValues_SetOnRouteOptions() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("Foo/{bar=BAR}/{id?}"); + var linkGenerator = CreateLinkGenerator(new RouteOptions() { LowercaseUrls = true }, endpoints: new[] { endpoint, }); + var httpContext = CreateHttpContext(); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { id = "18" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/foo/bar/18", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + // Regression test for https://github.com/aspnet/Routing/issues/802 + [Fact] + public void TryProcessTemplate_ParameterPolicy_Includes_BufferedValues() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("Foo/{bar=MyBar}/{id?}", policies: new { bar = new SlugifyParameterTransformer(), }); + var linkGenerator = CreateLinkGenerator(endpoints: new[] { endpoint, }); + var httpContext = CreateHttpContext(); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { id = "18" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Foo/my-bar/18", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + // Regression test for aspnet/Routing#435 + // + // In this issue we used to lowercase URLs after parameters were encoded, meaning that if a character needed + // encoding (such as a cyrillic character, it would not be encoded). + [Fact] + public void TryProcessTemplate_GeneratesLowercaseUrl_SetOnRouteOptions_CanLowercaseCharactersThatNeedEncoding() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}"); + var linkGenerator = CreateLinkGenerator(new RouteOptions() { LowercaseUrls = true }, endpoints: new[] { endpoint, }); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "П" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), // Cryillic uppercase Pe + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/home/%D0%BF", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + + // Convert back to decoded. + // + // This is Cyrillic lowercase Pe (not an n). + Assert.Equal("/home/п", PathString.FromUriComponent(result.path.ToUriComponent()).Value); + } + + [Fact] + public void TryProcessTemplate_GeneratesLowercaseQueryString_SetOnRouteOptions() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}"); + var linkGenerator = CreateLinkGenerator( + new RouteOptions() { LowercaseUrls = true, LowercaseQueryStrings = true }, + endpoints: new[] { endpoint, }); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", ShowStatus = "True", INFO = "DETAILED" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/home/index", result.path.ToUriComponent()); + Assert.Equal("?showstatus=true&info=detailed", result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_AppendsTrailingSlash_SetOnRouteOptions() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}"); + var linkGenerator = CreateLinkGenerator( + new RouteOptions() { AppendTrailingSlash = true }, + endpoints: new[] { endpoint }); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index/", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_GeneratesLowercaseQueryStringAndTrailingSlash_SetOnRouteOptions() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}"); + var linkGenerator = CreateLinkGenerator( + new RouteOptions() { LowercaseUrls = true, LowercaseQueryStrings = true, AppendTrailingSlash = true }, + endpoints: new[] { endpoint }); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", ShowStatus = "True", INFO = "DETAILED" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/home/index/", result.path.ToUriComponent()); + Assert.Equal("?showstatus=true&info=detailed", result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_LowercaseUrlSetToTrue_OnRouteOptions_OverridenByCallsiteValue() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}"); + var linkGenerator = CreateLinkGenerator( + new RouteOptions() { LowercaseUrls = true }, + endpoints: new[] { endpoint }); + var httpContext = CreateHttpContext(ambientValues: new { controller = "HoMe" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "InDex" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: new LinkOptions + { + LowercaseUrls = false + }, + result: out var result); + + + // Assert + Assert.True(success); + Assert.Equal("/HoMe/InDex", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_LowercaseUrlSetToFalse_OnRouteOptions_OverridenByCallsiteValue() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}"); + var linkGenerator = CreateLinkGenerator( + new RouteOptions() { LowercaseUrls = false }, + endpoints: new[] { endpoint }); + var httpContext = CreateHttpContext(ambientValues: new { controller = "HoMe" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "InDex" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: new LinkOptions() + { + LowercaseUrls = true + }, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/home/index", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_LowercaseUrlQueryStringsSetToTrue_OnRouteOptions_OverridenByCallsiteValue() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}"); + var linkGenerator = CreateLinkGenerator( + new RouteOptions() { LowercaseUrls = true, LowercaseQueryStrings = true }, + endpoints: new[] { endpoint }); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", ShowStatus = "True", INFO = "DETAILED" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: new LinkOptions + { + LowercaseUrls = false, + LowercaseQueryStrings = false + }, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index", result.path.ToUriComponent()); + Assert.Equal("?ShowStatus=True&INFO=DETAILED", result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_LowercaseUrlQueryStringsSetToFalse_OnRouteOptions_OverridenByCallsiteValue() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}"); + var linkGenerator = CreateLinkGenerator( + new RouteOptions() { LowercaseUrls = false, LowercaseQueryStrings = false }, + endpoints: new[] { endpoint }); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", ShowStatus = "True", INFO = "DETAILED" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: new LinkOptions() + { + LowercaseUrls = true, + LowercaseQueryStrings = true, + }, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/home/index", result.path.ToUriComponent()); + Assert.Equal("?showstatus=true&info=detailed", result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_AppendTrailingSlashSetToFalse_OnRouteOptions_OverridenByCallsiteValue() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}"); + var linkGenerator = CreateLinkGenerator( + new RouteOptions() { AppendTrailingSlash = false }, + endpoints: new[] { endpoint }); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: new LinkOptions() { AppendTrailingSlash = true, }, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index/", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void RouteGenerationRejectsConstraints() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + "{p1}/{p2}", + defaults: new { p2 = "catchall" }, + policies: new { p2 = "\\d{4}" }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { p1 = "abcd" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.False(success); + } + + [Fact] + public void RouteGenerationAcceptsConstraints() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + "{p1}/{p2}", + defaults: new { p2 = "catchall" }, + policies: new { p2 = new RegexRouteConstraint("\\d{4}"), }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { p1 = "hello", p2 = "1234" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/hello/1234", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void RouteWithCatchAllRejectsConstraints() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + "{p1}/{*p2}", + defaults: new { p2 = "catchall" }, + policies: new { p2 = new RegexRouteConstraint("\\d{4}") }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { p1 = "abcd" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.False(success); + } + + [Fact] + public void RouteWithCatchAllAcceptsConstraints() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + "{p1}/{*p2}", + defaults: new { p2 = "catchall" }, + policies: new { p2 = new RegexRouteConstraint("\\d{4}") }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { p1 = "hello", p2 = "1234" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/hello/1234", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void GetLinkWithNonParameterConstraintReturnsUrlWithoutQueryString() + { + // Arrange + var target = new Mock(); + target + .Setup( + e => e.Match( + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny(), + It.IsAny())) + .Returns(true) + .Verifiable(); + var endpoint = EndpointFactory.CreateRouteEndpoint( + "{p1}/{p2}", + defaults: new { p2 = "catchall" }, + policies: new { p2 = target.Object }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { p1 = "hello", p2 = "1234" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/hello/1234", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + + target.VerifyAll(); + } + + + // Any ambient values from the current request should be visible to constraint, even + // if they have nothing to do with the route generating a link + [Fact] + public void TryProcessTemplate_ConstraintsSeeAmbientValues() + { + // Arrange + var constraint = new CapturingConstraint(); + var endpoint = EndpointFactory.CreateRouteEndpoint( + template: "slug/Home/Store", + defaults: new { controller = "Home", action = "Store" }, + policies: new { c = constraint }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext( + ambientValues: new { controller = "Home", action = "Blog", extra = "42" }); + var expectedValues = new RouteValueDictionary( + new { controller = "Home", action = "Store", extra = "42" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Store" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/slug/Home/Store", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + + Assert.Equal(expectedValues.OrderBy(kvp => kvp.Key), constraint.Values.OrderBy(kvp => kvp.Key)); + } + + // Non-parameter default values from the routing generating a link are not in the 'values' + // collection when constraints are processed. + [Fact] + public void TryProcessTemplate_ConstraintsDontSeeDefaults_WhenTheyArentParameters() + { + // Arrange + var constraint = new CapturingConstraint(); + var endpoint = EndpointFactory.CreateRouteEndpoint( + template: "slug/Home/Store", + defaults: new { controller = "Home", action = "Store", otherthing = "17" }, + policies: new { c = constraint }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home", action = "Blog" }); + var expectedValues = new RouteValueDictionary( + new { controller = "Home", action = "Store" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Store" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/slug/Home/Store", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + + Assert.Equal(expectedValues.OrderBy(kvp => kvp.Key), constraint.Values.OrderBy(kvp => kvp.Key)); + } + + // Default values are visible to the constraint when they are used to fill a parameter. + [Fact] + public void TryProcessTemplate_ConstraintsSeesDefault_WhenThereItsAParamter() + { + // Arrange + var constraint = new CapturingConstraint(); + var endpoint = EndpointFactory.CreateRouteEndpoint( + template: "slug/{controller}/{action}", + defaults: new { action = "Index" }, + policies: new { c = constraint, }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { controller = "Home", action = "Blog" }); + var expectedValues = new RouteValueDictionary( + new { controller = "Shopping", action = "Index" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { controller = "Shopping" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/slug/Shopping", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + Assert.Equal(expectedValues, constraint.Values); + } + + // Default values from the routing generating a link are in the 'values' collection when + // constraints are processed - IFF they are specified as values or ambient values. + [Fact] + public void TryProcessTemplate_ConstraintsSeeDefaults_IfTheyAreSpecifiedOrAmbient() + { + // Arrange + var constraint = new CapturingConstraint(); + var endpoint = EndpointFactory.CreateRouteEndpoint( + template: "slug/Home/Store", + defaults: new { controller = "Home", action = "Store", otherthing = "17", thirdthing = "13" }, + policies: new { c = constraint, }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext( + ambientValues: new { controller = "Home", action = "Blog", otherthing = "17" }); + + var expectedValues = new RouteValueDictionary( + new { controller = "Home", action = "Store", otherthing = "17", thirdthing = "13" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Store", thirdthing = "13" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/slug/Home/Store", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + + Assert.Equal(expectedValues.OrderBy(kvp => kvp.Key), constraint.Values.OrderBy(kvp => kvp.Key)); + } + + [Theory] + [InlineData(true)] + [InlineData(false)] + public void TryProcessTemplate_InlineConstraints_Success(bool hasHttpContext) + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + template: "Home/Index/{id:int}", + defaults: new { controller = "Home", action = "Index" }, + policies: new { }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = hasHttpContext ? CreateHttpContext(new { }) : null; + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", controller = "Home", id = 4 }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index/4", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_InlineConstraints_NonMatchingvalue() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + template: "Home/Index/{id}", + defaults: new { controller = "Home", action = "Index" }, + policies: new { id = "int" }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", controller = "Home", id = "not-an-integer" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.False(success); + } + + [Theory] + [InlineData(true)] + [InlineData(false)] + public void TryProcessTemplate_InlineConstraints_OptionalParameter_ValuePresent(bool hasHttpContext) + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + template: "Home/Index/{id:int?}", + defaults: new { controller = "Home", action = "Index" }, + policies: new { }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = hasHttpContext ? CreateHttpContext(new { }) : null; + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", controller = "Home", id = 98 }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index/98", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_InlineConstraints_OptionalParameter_ValueNotPresent() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + template: "Home/Index/{id?}", + defaults: new { controller = "Home", action = "Index" }, + policies: new { id = "int" }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", controller = "Home" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_InlineConstraints_OptionalParameter_ValuePresent_ConstraintFails() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + template: "Home/Index/{id?}", + defaults: new { controller = "Home", action = "Index" }, + policies: new { id = "int" }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", controller = "Home", id = "not-an-integer" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.False(success); + } + + [Theory] + [InlineData(true)] + [InlineData(false)] + public void TryProcessTemplate_InlineConstraints_MultipleInlineConstraints(bool hasHttpContext) + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + template: "Home/Index/{id:int:range(1,20)}", + defaults: new { controller = "Home", action = "Index" }, + policies: new { }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = hasHttpContext ? CreateHttpContext(new { }) : null; + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", controller = "Home", id = 14 }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index/14", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Theory] + [InlineData(true)] + [InlineData(false)] + public void TryProcessTemplate_InlineConstraints_CompositeInlineConstraint_Fails(bool hasHttpContext) + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + template: "Home/Index/{id:int:range(1,20)}", + defaults: new { controller = "Home", action = "Index" }, + policies: new { }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = hasHttpContext ? CreateHttpContext(new { }) : null; + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", controller = "Home", id = 50 }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.False(success); + } + + [Fact] + public void TryProcessTemplate_InlineConstraints_CompositeConstraint_FromConstructor() + { + // Arrange + var constraint = new MaxLengthRouteConstraint(20); + var endpoint = EndpointFactory.CreateRouteEndpoint( + template: "Home/Index/{name}", + defaults: new { controller = "Home", action = "Index" }, + policies: new { name = constraint }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", controller = "Home", name = "products" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index/products", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_OptionalParameter_ParameterPresentInValues() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{name?}"); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", controller = "Home", name = "products" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index/products", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_OptionalParameter_ParameterNotPresentInValues() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{name?}"); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", controller = "Home" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_OptionalParameter_ParameterPresentInValuesAndDefaults() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + template: "{controller}/{action}/{name}", + defaults: new { name = "default-products" }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", controller = "Home", name = "products" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index/products", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_OptionalParameter_ParameterNotPresentInValues_PresentInDefaults() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + template: "{controller}/{action}/{name}", + defaults: new { name = "products" }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", controller = "Home" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_ParameterNotPresentInTemplate_PresentInValues() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{name}"); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", controller = "Home", name = "products", format = "json" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index/products", result.path.ToUriComponent()); + Assert.Equal("?format=json", result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_OptionalParameter_FollowedByDotAfterSlash_ParameterPresent() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + template: "{controller}/{action}/.{name?}"); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", controller = "Home", name = "products" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index/.products", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_OptionalParameter_FollowedByDotAfterSlash_ParameterNotPresent() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/.{name?}"); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", controller = "Home" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + + Assert.True(success); + Assert.Equal("/Home/Index/", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_OptionalParameter_InSimpleSegment() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{name?}"); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { action = "Index", controller = "Home" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Home/Index", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_TwoOptionalParameters_OneValueFromAmbientValues() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("a/{b=15}/{c?}/{d?}"); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { c = "17" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/a/15/17", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_OptionalParameterAfterDefault_OneValueFromAmbientValues() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("a/{b=15}/{c?}"); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { c = "17" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/a/15/17", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_TwoOptionalParametersAfterDefault_LastValueFromAmbientValues() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("a/{b=15}/{c?}/{d?}"); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { d = "17" }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/a", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + public static TheoryData DoesNotDiscardAmbientValuesData + { + get + { + // - ambient values + // - explicit values + // - required values + // - defaults + return new TheoryData + { + // link to same action on same controller + { + new { controller = "Products", action = "Edit", id = 10 }, + new { controller = "Products", action = "Edit" }, + new { area = (string)null, controller = "Products", action = "Edit", page = (string)null }, + new { area = (string)null, controller = "Products", action = "Edit", page = (string)null } + }, + + // link to same action on same controller - ignoring case + { + new { controller = "ProDUcts", action = "EDit", id = 10 }, + new { controller = "ProDUcts", action = "EDit" }, + new { area = (string)null, controller = "Products", action = "Edit", page = (string)null }, + new { area = (string)null, controller = "Products", action = "Edit", page = (string)null } + }, + + // link to same action and same controller on same area + { + new { area = "Admin", controller = "Products", action = "Edit", id = 10 }, + new { area = "Admin", controller = "Products", action = "Edit" }, + new { area = "Admin", controller = "Products", action = "Edit", page = (string)null }, + new { area = "Admin", controller = "Products", action = "Edit", page = (string)null } + }, + + // link to same action and same controller on same area + { + new { area = "Admin", controller = "Products", action = "Edit", id = 10 }, + new { controller = "Products", action = "Edit" }, + new { area = "Admin", controller = "Products", action = "Edit", page = (string)null }, + new { area = "Admin", controller = "Products", action = "Edit", page = (string)null } + }, + + // link to same action and same controller + { + new { controller = "Products", action = "Edit", id = 10 }, + new { controller = "Products", action = "Edit" }, + new { area = (string)null, controller = "Products", action = "Edit", page = (string)null }, + new { area = (string)null, controller = "Products", action = "Edit", page = (string)null } + }, + { + new { controller = "Products", action = "Edit", id = 10 }, + new { controller = "Products", action = "Edit" }, + new { area = (string)null, controller = "Products", action = "Edit", page = (string)null }, + new { area = (string)null, controller = "Products", action = "Edit", page = (string)null } + }, + { + new { controller = "Products", action = "Edit", id = 10 }, + new { controller = "Products", action = "Edit" }, + new { area = "", controller = "Products", action = "Edit", page = "" }, + new { area = "", controller = "Products", action = "Edit", page = "" } + }, + + // link to same page + { + new { page = "Products/Edit", id = 10 }, + new { page = "Products/Edit" }, + new { area = (string)null, controller = (string)null, action = (string)null, page = "Products/Edit" }, + new { area = (string)null, controller = (string)null, action = (string)null, page = "Products/Edit" } + }, + }; + } + } + + [Theory] + [MemberData(nameof(DoesNotDiscardAmbientValuesData))] + public void TryProcessTemplate_DoesNotDiscardAmbientValues_IfAllRequiredKeysMatch( + object ambientValues, + object explicitValues, + object requiredValues, + object defaults) + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + "Products/Edit/{id}", + requiredValues: requiredValues, + defaults: defaults); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(explicitValues), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Products/Edit/10", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_DoesNotDiscardAmbientValues_IfAllRequiredValuesMatch_ForGenericKeys() + { + // Verifying that discarding works in general usage case i.e when keys are not like controller, action etc. + + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + "Products/Edit/{id}", + requiredValues: new { c = "Products", a = "Edit" }, + defaults: new { c = "Products", a = "Edit" }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { c = "Products", a = "Edit", id = 10 }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { c = "Products", a = "Edit" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.True(success); + Assert.Equal("/Products/Edit/10", result.path.ToUriComponent()); + Assert.Equal(string.Empty, result.query.ToUriComponent()); + } + + [Fact] + public void TryProcessTemplate_DiscardsAmbientValues_ForGenericKeys() + { + // Verifying that discarding works in general usage case i.e when keys are not like controller, action etc. + + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + "Products/Edit/{id}", + requiredValues: new { c = "Products", a = "Edit" }, + defaults: new { c = "Products", a = "Edit" }); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues: new { c = "Products", a = "Edit", id = 10 }); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(new { c = "Products", a = "List" }), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.False(success); + } + + public static TheoryData DiscardAmbientValuesData + { + get + { + // - ambient values + // - explicit values + // - required values + // - defaults + return new TheoryData + { + // link to different action on same controller + { + new { controller = "Products", action = "Edit", id = 10 }, + new { controller = "Products", action = "List" }, + new { area = (string)null, controller = "Products", action = "List", page = (string)null }, + new { area = (string)null, controller = "Products", action = "List", page = (string)null } + }, + + // link to different action on same controller and same area + { + new { area = "Customer", controller = "Products", action = "Edit", id = 10 }, + new { area = "Customer", controller = "Products", action = "List" }, + new { area = "Customer", controller = "Products", action = "List", page = (string)null }, + new { area = "Customer", controller = "Products", action = "List", page = (string)null } + }, + + // link from one area to a different one + { + new { area = "Admin", controller = "Products", action = "Edit", id = 10 }, + new { area = "Consumer", controller = "Products", action = "Edit" }, + new { area = "Consumer", controller = "Products", action = "Edit", page = (string)null }, + new { area = "Consumer", controller = "Products", action = "Edit", page = (string)null } + }, + + // link from non-area to a area one + { + new { controller = "Products", action = "Edit", id = 10 }, + new { area = "Consumer", controller = "Products", action = "Edit" }, + new { area = "Consumer", controller = "Products", action = "Edit", page = (string)null }, + new { area = "Consumer", controller = "Products", action = "Edit", page = (string)null } + }, + + // link from area to a non-area based action + { + new { area = "Admin", controller = "Products", action = "Edit", id = 10 }, + new { area = "", controller = "Products", action = "Edit" }, + new { area = "", controller = "Products", action = "Edit", page = (string)null }, + new { area = "", controller = "Products", action = "Edit", page = (string)null } + }, + + // link from controller-action to a page + { + new { controller = "Products", action = "Edit", id = 10 }, + new { page = "Products/Edit" }, + new { area = (string)null, controller = (string)null, action = (string)null, page = "Products/Edit"}, + new { area = (string)null, controller = (string)null, action = (string)null, page = "Products/Edit"} + }, + + // link from a page to controller-action + { + new { page = "Products/Edit", id = 10 }, + new { controller = "Products", action = "Edit" }, + new { area = (string)null, controller = "Products", action = "Edit", page = (string)null }, + new { area = (string)null, controller = "Products", action = "Edit", page = (string)null } + }, + + // link from one page to a different page + { + new { page = "Products/Details", id = 10 }, + new { page = "Products/Edit" }, + new { area = (string)null, controller = (string)null, action = (string)null, page = "Products/Edit" }, + new { area = (string)null, controller = (string)null, action = (string)null, page = "Products/Edit" } + }, + }; + } + } + + [Theory] + [MemberData(nameof(DiscardAmbientValuesData))] + public void TryProcessTemplate_DiscardsAmbientValues_IfAnyAmbientValue_IsDifferentThan_EndpointRequiredValues( + object ambientValues, + object explicitValues, + object requiredValues, + object defaults) + { + // Linking to a different action on the same controller + + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + "Products/Edit/{id}", + requiredValues: requiredValues, + defaults: defaults); + var linkGenerator = CreateLinkGenerator(endpoint); + var httpContext = CreateHttpContext(ambientValues); + + // Act + var success = linkGenerator.TryProcessTemplate( + httpContext: httpContext, + endpoint: endpoint, + values: new RouteValueDictionary(explicitValues), + ambientValues: DefaultLinkGenerator.GetAmbientValues(httpContext), + options: null, + result: out var result); + + // Assert + Assert.False(success); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DefaultLinkGeneratorTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DefaultLinkGeneratorTest.cs new file mode 100644 index 0000000000..3c20c704a0 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DefaultLinkGeneratorTest.cs @@ -0,0 +1,732 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; +using Microsoft.AspNetCore.Routing.TestObjects; +using Microsoft.Extensions.DependencyInjection; +using Xunit; + +namespace Microsoft.AspNetCore.Routing +{ + // Tests LinkGenerator functionality using GetXyzByAddress - see tests for the extension + // methods for more E2E tests. + // + // Does not cover template processing in detail, those scenarios are validated by TemplateBinderTests + // and DefaultLinkGeneratorProcessTemplateTest + public class DefaultLinkGeneratorTest : LinkGeneratorTestBase + { + [Fact] + public void GetPathByAddress_WithoutHttpContext_NoMatches_ReturnsNull() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint); + + // Act + var path = linkGenerator.GetPathByAddress(0, values: null); + + // Assert + Assert.Null(path); + } + + [Fact] + public void GetPathByAddress_WithHttpContext_NoMatches_ReturnsNull() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint); + + // Act + var path = linkGenerator.GetPathByAddress(CreateHttpContext(), 0, values: null); + + // Assert + Assert.Null(path); + } + + [Fact] + public void GetUriByAddress_WithoutHttpContext_NoMatches_ReturnsNull() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint); + + // Act + var uri = linkGenerator.GetUriByAddress(0, values: null, "http", new HostString("example.com")); + + // Assert + Assert.Null(uri); + } + + [Fact] + public void GetUriByAddress_WithHttpContext_NoMatches_ReturnsNull() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint); + + // Act + var uri = linkGenerator.GetUriByAddress(CreateHttpContext(), 0, values: null); + + // Assert + Assert.Null(uri); + } + + [Fact] + public void GetPathByAddress_WithoutHttpContext_HasMatches_ReturnsFirstSuccessfulTemplateResult() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + // Act + var path = linkGenerator.GetPathByAddress(1, values: new RouteValueDictionary(new { controller = "Home", action = "Index", })); + + // Assert + Assert.Equal("/Home/Index", path); + } + + [Fact] + public void GetPathByAddress_WithHttpContext_HasMatches_ReturnsFirstSuccessfulTemplateResult() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + // Act + var path = linkGenerator.GetPathByAddress(CreateHttpContext(), 1, values: new RouteValueDictionary(new { controller = "Home", action = "Index", })); + + // Assert + Assert.Equal("/Home/Index", path); + } + + [Fact] + public void GetUriByAddress_WithoutHttpContext_HasMatches_ReturnsFirstSuccessfulTemplateResult() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + // Act + var path = linkGenerator.GetUriByAddress( + 1, + values: new RouteValueDictionary(new { controller = "Home", action = "Index", }), + "http", + new HostString("example.com")); + + // Assert + Assert.Equal("http://example.com/Home/Index", path); + } + + [Fact] + public void GetUriByAddress_WithHttpContext_HasMatches_ReturnsFirstSuccessfulTemplateResult() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + var httpContext = CreateHttpContext(); + httpContext.Request.Scheme = "http"; + httpContext.Request.Host = new HostString("example.com"); + + // Act + var uri = linkGenerator.GetUriByAddress(httpContext, 1, values: new RouteValueDictionary(new { controller = "Home", action = "Index", })); + + // Assert + Assert.Equal("http://example.com/Home/Index", uri); + } + + [Fact] + public void GetPathByAddress_WithoutHttpContext_WithLinkOptions() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + // Act + var path = linkGenerator.GetPathByAddress( + 1, + values: new RouteValueDictionary(new { controller = "Home", action = "Index", }), + options: new LinkOptions() { AppendTrailingSlash = true, }); + + // Assert + Assert.Equal("/Home/Index/", path); + } + + [Fact] + public void GetPathByAddress_WithParameterTransformer() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller:slugify}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller:slugify}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var routeOptions = new RouteOptions(); + routeOptions.ConstraintMap["slugify"] = typeof(SlugifyParameterTransformer); + + var linkGenerator = CreateLinkGenerator(routeOptions: routeOptions, configureServices: null, endpoint1, endpoint2); + + // Act + var path = linkGenerator.GetPathByAddress( + 1, + values: new RouteValueDictionary(new { controller = "TestController", action = "Index", })); + + // Assert + Assert.Equal("/test-controller/Index", path); + } + + [Fact] + public void GetPathByAddress_WithParameterTransformer_WithLowercaseUrl() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller:slugify}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller:slugify}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var routeOptions = new RouteOptions(); + routeOptions.ConstraintMap["slugify"] = typeof(SlugifyParameterTransformer); + + var linkGenerator = CreateLinkGenerator(routeOptions: routeOptions, configureServices: null, endpoint1, endpoint2); + + // Act + var path = linkGenerator.GetPathByAddress( + 1, + values: new RouteValueDictionary(new { controller = "TestController", action = "Index", }), + options: new LinkOptions() { LowercaseUrls = true, }); + + // Assert + Assert.Equal("/test-controller/index", path); + } + + [Fact] + public void GetPathByAddress_WithHttpContext_WithLinkOptions() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + // Act + var path = linkGenerator.GetPathByAddress( + CreateHttpContext(), + 1, + values: new RouteValueDictionary(new { controller = "Home", action = "Index", }), + options: new LinkOptions() { AppendTrailingSlash = true, }); + + // Assert + Assert.Equal("/Home/Index/", path); + } + + [Fact] + public void GetUriByAddress_WithoutHttpContext_WithLinkOptions() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + // Act + var path = linkGenerator.GetUriByAddress( + 1, + values: new RouteValueDictionary(new { controller = "Home", action = "Index", }), + "http", + new HostString("example.com"), + options: new LinkOptions() { AppendTrailingSlash = true, }); + + // Assert + Assert.Equal("http://example.com/Home/Index/", path); + } + + [Fact] + public void GetUriByAddress_WithHttpContext_WithLinkOptions() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + var httpContext = CreateHttpContext(); + httpContext.Request.Scheme = "http"; + httpContext.Request.Host = new HostString("example.com"); + + // Act + var uri = linkGenerator.GetUriByAddress( + httpContext, + 1, + values: new RouteValueDictionary(new { controller = "Home", action = "Index", }), + options: new LinkOptions() { AppendTrailingSlash = true, }); + + // Assert + Assert.Equal("http://example.com/Home/Index/", uri); + } + + // Includes characters that need to be encoded + [Fact] + public void GetPathByAddress_WithoutHttpContext_WithPathBaseAndFragment() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + // Act + var path = linkGenerator.GetPathByAddress( + 1, + values: new RouteValueDictionary(new { controller = "Home", action = "In?dex", query = "some?query" }), + new PathString("/Foo/Bar?encodeme?"), + new FragmentString("#Fragment?")); + + // Assert + Assert.Equal("/Foo/Bar%3Fencodeme%3F/Home/In%3Fdex?query=some%3Fquery#Fragment?", path); + } + + private class UpperCaseParameterTransform : IOutboundParameterTransformer + { + public string TransformOutbound(object value) + { + return value?.ToString()?.ToUpperInvariant(); + } + } + + [Fact] + public void GetLink_ParameterTransformer() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller:upper-case}/{name}"); + + var routeOptions = new RouteOptions(); + routeOptions.ConstraintMap["upper-case"] = typeof(UpperCaseParameterTransform); + + Action configure = (s) => + { + s.AddSingleton(typeof(UpperCaseParameterTransform), new UpperCaseParameterTransform()); + }; + + var linkGenerator = CreateLinkGenerator(routeOptions, configure, endpoint); + + // Act + var link = linkGenerator.GetPathByRouteValues(routeName: null, new { controller = "Home", name = "Test" }); + + // Assert + Assert.Equal("/HOME/Test", link); + } + + [Fact] + public void GetLink_ParameterTransformer_ForQueryString() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint("{controller:upper-case}/{name}", policies: new { c = new UpperCaseParameterTransform(), }); + + var routeOptions = new RouteOptions(); + routeOptions.ConstraintMap["upper-case"] = typeof(UpperCaseParameterTransform); + + Action configure = (s) => + { + s.AddSingleton(typeof(UpperCaseParameterTransform), new UpperCaseParameterTransform()); + }; + + var linkGenerator = CreateLinkGenerator(routeOptions, configure, endpoint); + + // Act + var link = linkGenerator.GetPathByRouteValues(routeName: null, new { controller = "Home", name = "Test", c = "hithere", }); + + // Assert + Assert.Equal("/HOME/Test?c=HITHERE", link); + } + + // Includes characters that need to be encoded + [Fact] + public void GetPathByAddress_WithHttpContext_WithPathBaseAndFragment() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + var httpContext = CreateHttpContext(); + httpContext.Request.PathBase = new PathString("/Foo/Bar?encodeme?"); + + // Act + var path = linkGenerator.GetPathByAddress( + httpContext, + 1, + values: new RouteValueDictionary(new { controller = "Home", action = "In?dex", query = "some?query" }), + fragment: new FragmentString("#Fragment?")); + + // Assert + Assert.Equal("/Foo/Bar%3Fencodeme%3F/Home/In%3Fdex?query=some%3Fquery#Fragment?", path); + } + + // Includes characters that need to be encoded + [Fact] + public void GetUriByAddress_WithoutHttpContext_WithPathBaseAndFragment() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + // Act + var path = linkGenerator.GetUriByAddress( + 1, + values: new RouteValueDictionary(new { controller = "Home", action = "In?dex", query = "some?query" }), + "http", + new HostString("example.com"), + new PathString("/Foo/Bar?encodeme?"), + new FragmentString("#Fragment?")); + + // Assert + Assert.Equal("http://example.com/Foo/Bar%3Fencodeme%3F/Home/In%3Fdex?query=some%3Fquery#Fragment?", path); + } + + // Includes characters that need to be encoded + [Fact] + public void GetUriByAddress_WithHttpContext_WithPathBaseAndFragment() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + var httpContext = CreateHttpContext(); + httpContext.Request.Scheme = "http"; + httpContext.Request.Host = new HostString("example.com"); + httpContext.Request.PathBase = new PathString("/Foo/Bar?encodeme?"); + + // Act + var uri = linkGenerator.GetUriByAddress( + httpContext, + 1, + values: new RouteValueDictionary(new { controller = "Home", action = "In?dex", query = "some?query" }), + fragment: new FragmentString("#Fragment?")); + + // Assert + Assert.Equal("http://example.com/Foo/Bar%3Fencodeme%3F/Home/In%3Fdex?query=some%3Fquery#Fragment?", uri); + } + + [Fact] + public void GetPathByAddress_WithHttpContext_IncludesAmbientValues() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + var httpContext = CreateHttpContext(); + httpContext.Request.Scheme = "http"; + httpContext.Request.Host = new HostString("example.com"); + + // Act + var uri = linkGenerator.GetPathByAddress( + httpContext, + 1, + values: new RouteValueDictionary(new { action = "Index", }), + ambientValues: new RouteValueDictionary(new { controller = "Home", })); + + // Assert + Assert.Equal("/Home/Index", uri); + } + + [Fact] + public void GetUriByAddress_WithHttpContext_IncludesAmbientValues() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + var httpContext = CreateHttpContext(); + httpContext.Request.Scheme = "http"; + httpContext.Request.Host = new HostString("example.com"); + + // Act + var uri = linkGenerator.GetUriByAddress( + httpContext, + 1, + values: new RouteValueDictionary(new { action = "Index", }), + ambientValues: new RouteValueDictionary(new { controller = "Home", })); + + // Assert + Assert.Equal("http://example.com/Home/Index", uri); + } + + [Fact] + public void GetPathByAddress_WithHttpContext_CanOverrideUriParts() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + var httpContext = CreateHttpContext(); + httpContext.Request.PathBase = "/Foo"; + + // Act + var uri = linkGenerator.GetPathByAddress( + httpContext, + 1, + values: new RouteValueDictionary(new { action = "Index", controller = "Home", }), + pathBase: "/"); + + // Assert + Assert.Equal("/Home/Index", uri); + } + + [Fact] + public void GetUriByAddress_WithHttpContext_CanOverrideUriParts() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id?}", metadata: new object[] { new IntMetadata(1), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + var httpContext = CreateHttpContext(); + httpContext.Request.Scheme = "http"; + httpContext.Request.Host = new HostString("example.com"); + httpContext.Request.PathBase = "/Foo"; + + // Act + var uri = linkGenerator.GetUriByAddress( + httpContext, + 1, + values: new RouteValueDictionary(new { action = "Index", controller = "Home", }), + scheme: "ftp", + host: new HostString("example.com:5000"), + pathBase: "/"); + + // Assert + Assert.Equal("ftp://example.com:5000/Home/Index", uri); + } + + [Fact] + public void GetTemplateBinder_CanCache() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var dataSource = new DynamicEndpointDataSource(endpoint1); + + var linkGenerator = CreateLinkGenerator(dataSources: new[] { dataSource }); + + var expected = linkGenerator.GetTemplateBinder(endpoint1); + + // Act + var actual = linkGenerator.GetTemplateBinder(endpoint1); + + // Assert + Assert.Same(expected, actual); + } + + [Fact] + public void GetTemplateBinder_CanClearCache() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + var dataSource = new DynamicEndpointDataSource(endpoint1); + + var linkGenerator = CreateLinkGenerator(dataSources: new[] { dataSource }); + var original = linkGenerator.GetTemplateBinder(endpoint1); + + var endpoint2 = EndpointFactory.CreateRouteEndpoint("{controller}/{action}/{id}", metadata: new object[] { new IntMetadata(1), }); + dataSource.AddEndpoint(endpoint2); + + // Act + var actual = linkGenerator.GetTemplateBinder(endpoint1); + + // Assert + Assert.NotSame(original, actual); + } + + [Theory] + [InlineData(new string[] { }, new string[] { }, "/")] + [InlineData(new string[] { "id" }, new string[] { "3" }, "/Home/Index/3")] + [InlineData(new string[] { "custom" }, new string[] { "Custom" }, "/?custom=Custom")] + public void GetPathByRouteValues_UsesFirstTemplateThatSucceeds(string[] routeNames, string[] routeValues, string expectedPath) + { + // Arrange + var endpointControllerAction = EndpointFactory.CreateRouteEndpoint( + "Home/Index", + order: 3, + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); + var endpointController = EndpointFactory.CreateRouteEndpoint( + "Home", + order: 2, + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); + var endpointEmpty = EndpointFactory.CreateRouteEndpoint( + "", + order: 1, + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); + + // This endpoint should be used to generate the link when an id is present + var endpointControllerActionParameter = EndpointFactory.CreateRouteEndpoint( + "Home/Index/{id}", + order: 0, + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); + + var linkGenerator = CreateLinkGenerator(endpointControllerAction, endpointController, endpointEmpty, endpointControllerActionParameter); + + var context = new EndpointSelectorContext() + { + RouteValues = new RouteValueDictionary(new { controller = "Home", action = "Index", }) + }; + var httpContext = CreateHttpContext(); + httpContext.Features.Set(context); + + var values = new RouteValueDictionary(); + for (int i = 0; i < routeNames.Length; i++) + { + values[routeNames[i]] = routeValues[i]; + } + + // Act + var generatedPath = linkGenerator.GetPathByRouteValues( + httpContext, + routeName: null, + values: values); + + // Assert + Assert.Equal(expectedPath, generatedPath); + } + + [Theory] + [InlineData(new string[] { }, new string[] { }, "/")] + [InlineData(new string[] { "id" }, new string[] { "3" }, "/Home/Index/3")] + [InlineData(new string[] { "custom" }, new string[] { "Custom" }, "/?custom=Custom")] + [InlineData(new string[] { "controller", "action", "id" }, new string[] { "Home", "Login", "3" }, "/Home/Login/3")] + [InlineData(new string[] { "controller", "action", "id" }, new string[] { "Home", "Fake", "3" }, null)] + public void GetPathByRouteValues_ParameterMatchesRequireValues_HasAmbientValues(string[] routeNames, string[] routeValues, string expectedPath) + { + // Arrange + var homeIndex = EndpointFactory.CreateRouteEndpoint( + "{controller}/{action}/{id?}", + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); + var homeLogin = EndpointFactory.CreateRouteEndpoint( + "{controller}/{action}/{id?}", + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Login", })) }); + + var linkGenerator = CreateLinkGenerator(homeIndex, homeLogin); + + var context = new EndpointSelectorContext() + { + RouteValues = new RouteValueDictionary(new { controller = "Home", action = "Index", }) + }; + var httpContext = CreateHttpContext(); + httpContext.Features.Set(context); + + var values = new RouteValueDictionary(); + for (int i = 0; i < routeNames.Length; i++) + { + values[routeNames[i]] = routeValues[i]; + } + + // Act + var generatedPath = linkGenerator.GetPathByRouteValues( + httpContext, + routeName: null, + values: values); + + // Assert + Assert.Equal(expectedPath, generatedPath); + } + + [Theory] + [InlineData(new string[] { }, new string[] { }, null)] + [InlineData(new string[] { "id" }, new string[] { "3" }, null)] + [InlineData(new string[] { "custom" }, new string[] { "Custom" }, null)] + [InlineData(new string[] { "controller", "action", "id" }, new string[] { "Home", "Login", "3" }, "/Home/Login/3")] + [InlineData(new string[] { "controller", "action", "id" }, new string[] { "Home", "Fake", "3" }, null)] + public void GetPathByRouteValues_ParameterMatchesRequireValues_NoAmbientValues(string[] routeNames, string[] routeValues, string expectedPath) + { + // Arrange + var homeIndex = EndpointFactory.CreateRouteEndpoint( + "{controller}/{action}/{id?}", + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); + var homeLogin = EndpointFactory.CreateRouteEndpoint( + "{controller}/{action}/{id?}", + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Login", })) }); + + var linkGenerator = CreateLinkGenerator(homeIndex, homeLogin); + + var context = new EndpointSelectorContext(); + var httpContext = CreateHttpContext(); + httpContext.Features.Set(context); + + var values = new RouteValueDictionary(); + for (int i = 0; i < routeNames.Length; i++) + { + values[routeNames[i]] = routeValues[i]; + } + + // Act + var generatedPath = linkGenerator.GetPathByRouteValues( + httpContext, + routeName: null, + values: values); + + // Assert + Assert.Equal(expectedPath, generatedPath); + } + + protected override void AddAdditionalServices(IServiceCollection services) + { + services.AddSingleton, IntAddressScheme>(); + } + + private class IntAddressScheme : IEndpointAddressScheme + { + private readonly CompositeEndpointDataSource _dataSource; + + public IntAddressScheme(CompositeEndpointDataSource dataSource) + { + _dataSource = dataSource; + } + + public IEnumerable FindEndpoints(int address) + { + return _dataSource.Endpoints.Where(e => e.Metadata.GetMetadata().Value == address); + } + } + + private class IntMetadata + { + public IntMetadata(int value) + { + Value = value; + } + public int Value { get; } + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DefaultParameterPolicyFactoryTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DefaultParameterPolicyFactoryTest.cs new file mode 100644 index 0000000000..69761f3a0d --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/DefaultParameterPolicyFactoryTest.cs @@ -0,0 +1,533 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Globalization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Constraints; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using Xunit; + +namespace Microsoft.AspNetCore.Routing +{ + public class DefaultParameterPolicyFactoryTest + { + [Fact] + public void Create_ThrowsException_IfNoConstraintOrParameterPolicy_FoundInMap() + { + // Arrange + var factory = GetParameterPolicyFactory(); + + // Act + var exception = Assert.Throws( + () => factory.Create(RoutePatternFactory.ParameterPart("id", @default: null, RoutePatternParameterKind.Optional), @"notpresent(\d+)")); + + // Assert + Assert.Equal( + $"The constraint reference 'notpresent' could not be resolved to a type. " + + $"Register the constraint type with '{typeof(RouteOptions)}.{nameof(RouteOptions.ConstraintMap)}'.", + exception.Message); + } + + [Fact] + public void Create_ThrowsException_OnInvalidType() + { + // Arrange + var options = new RouteOptions(); + options.ConstraintMap.Add("bad", typeof(string)); + + var services = new ServiceCollection(); + + var factory = GetParameterPolicyFactory(options, services); + + // Act + var exception = Assert.Throws( + () => factory.Create(RoutePatternFactory.ParameterPart("id"), @"bad")); + + // Assert + Assert.Equal( + $"The constraint type '{typeof(string)}' which is mapped to constraint key 'bad' must implement the '{nameof(IParameterPolicy)}' interface.", + exception.Message); + } + + [Fact] + public void Create_CreatesParameterPolicy_FromRoutePattern_String() + { + // Arrange + var factory = GetParameterPolicyFactory(); + + var parameter = RoutePatternFactory.ParameterPart( + "id", + @default: null, + parameterKind: RoutePatternParameterKind.Standard, + parameterPolicies: new[] { RoutePatternFactory.Constraint("int"), }); + + // Act + var parameterPolicy = factory.Create(parameter, parameter.ParameterPolicies[0]); + + // Assert + Assert.IsType(parameterPolicy); + } + + [Fact] + public void Create_CreatesParameterPolicy_FromRoutePattern_String_Optional() + { + // Arrange + var factory = GetParameterPolicyFactory(); + + var parameter = RoutePatternFactory.ParameterPart( + "id", + @default: null, + parameterKind: RoutePatternParameterKind.Optional, + parameterPolicies: new[] { RoutePatternFactory.Constraint("int"), }); + + // Act + var parameterPolicy = factory.Create(parameter, parameter.ParameterPolicies[0]); + + // Assert + var optionalConstraint = Assert.IsType(parameterPolicy); + Assert.IsType(optionalConstraint.InnerConstraint); + } + + [Fact] + public void Create_CreatesParameterPolicy_FromRoutePattern_Constraint() + { + // Arrange + var factory = GetParameterPolicyFactory(); + + var parameter = RoutePatternFactory.ParameterPart( + "id", + @default: null, + parameterKind: RoutePatternParameterKind.Standard, + parameterPolicies: new[] { RoutePatternFactory.ParameterPolicy(new IntRouteConstraint()), }); + + // Act + var parameterPolicy = factory.Create(parameter, parameter.ParameterPolicies[0]); + + // Assert + Assert.IsType(parameterPolicy); + } + + [Fact] + public void Create_CreatesParameterPolicy_FromRoutePattern_Constraint_Optional() + { + // Arrange + var factory = GetParameterPolicyFactory(); + + var parameter = RoutePatternFactory.ParameterPart( + "id", + @default: null, + parameterKind: RoutePatternParameterKind.Optional, + parameterPolicies: new[] { RoutePatternFactory.ParameterPolicy(new IntRouteConstraint()), }); + + // Act + var parameterPolicy = factory.Create(parameter, parameter.ParameterPolicies[0]); + + // Assert + var optionalConstraint = Assert.IsType(parameterPolicy); + Assert.IsType(optionalConstraint.InnerConstraint); + } + + [Fact] + public void Create_CreatesParameterPolicy_FromRoutePattern_ParameterPolicy() + { + // Arrange + var factory = GetParameterPolicyFactory(); + + var parameter = RoutePatternFactory.ParameterPart( + "id", + @default: null, + parameterKind: RoutePatternParameterKind.Standard, + parameterPolicies: new[] { RoutePatternFactory.ParameterPolicy(new CustomParameterPolicy()), }); + + // Act + var parameterPolicy = factory.Create(parameter, parameter.ParameterPolicies[0]); + + // Assert + Assert.IsType(parameterPolicy); + } + + [Fact] + public void Create_CreatesParameterPolicy_FromConstraintText_AndRouteConstraint() + { + // Arrange + var factory = GetParameterPolicyFactory(); + + // Act + var parameterPolicy = factory.Create(RoutePatternFactory.ParameterPart("id"), "int"); + + // Assert + Assert.IsType(parameterPolicy); + } + + [Fact] + public void Create_CreatesParameterPolicy_FromConstraintText_AndRouteConstraintWithArgument() + { + // Arrange + var factory = GetParameterPolicyFactory(); + + // Act + var parameterPolicy = factory.Create(RoutePatternFactory.ParameterPart("id"), "range(1,20)"); + + // Assert + var constraint = Assert.IsType(parameterPolicy); + Assert.Equal(1, constraint.Min); + Assert.Equal(20, constraint.Max); + } + + [Fact] + public void Create_CreatesParameterPolicy_FromConstraintText_AndRouteConstraint_Optional() + { + // Arrange + var factory = GetParameterPolicyFactory(); + + // Act + var parameterPolicy = factory.Create(RoutePatternFactory.ParameterPart("id", @default: null, RoutePatternParameterKind.Optional), "int"); + + // Assert + var optionalConstraint = Assert.IsType(parameterPolicy); + Assert.IsType(optionalConstraint.InnerConstraint); + } + + [Fact] + public void Create_CreatesParameterPolicy_FromConstraintText_AndParameterPolicy() + { + // Arrange + var options = new RouteOptions(); + options.ConstraintMap.Add("customParameterPolicy", typeof(CustomParameterPolicy)); + + var services = new ServiceCollection(); + services.AddTransient(); + + var factory = GetParameterPolicyFactory(options, services); + + // Act + var parameterPolicy = factory.Create(RoutePatternFactory.ParameterPart("id", @default: null, RoutePatternParameterKind.Optional), "customParameterPolicy"); + + // Assert + Assert.IsType(parameterPolicy); + } + + [Fact] + public void Create_CreatesParameterPolicy_FromConstraintText_AndParameterPolicyWithArgumentAndServices() + { + // Arrange + var options = new RouteOptions(); + options.ConstraintMap.Add("customConstraintPolicy", typeof(CustomParameterPolicyWithArguments)); + + var services = new ServiceCollection(); + services.AddTransient(); + + var factory = GetParameterPolicyFactory(options, services); + + // Act + var parameterPolicy = factory.Create(RoutePatternFactory.ParameterPart("id"), "customConstraintPolicy(20)"); + + // Assert + var constraint = Assert.IsType(parameterPolicy); + Assert.Equal(20, constraint.Count); + Assert.NotNull(constraint.TestService); + } + + [Fact] + public void Create_CreatesParameterPolicy_FromConstraintText_AndParameterPolicyWithArgumentAndMultipleServices() + { + // Arrange + var options = new RouteOptions(); + options.ConstraintMap.Add("customConstraintPolicy", typeof(CustomParameterPolicyWithMultipleArguments)); + + var services = new ServiceCollection(); + services.AddTransient(); + + var factory = GetParameterPolicyFactory(options, services); + + // Act + var parameterPolicy = factory.Create(RoutePatternFactory.ParameterPart("id"), "customConstraintPolicy(20,-1)"); + + // Assert + var constraint = Assert.IsType(parameterPolicy); + Assert.Equal(20, constraint.First); + Assert.Equal(-1, constraint.Second); + Assert.NotNull(constraint.TestService1); + Assert.NotNull(constraint.TestService2); + } + + [Fact] + public void Create_CreatesParameterPolicy_FromConstraintText_AndParameterPolicyWithOnlyServiceArguments() + { + // Arrange + var options = new RouteOptions(); + options.ConstraintMap.Add("customConstraintPolicy", typeof(CustomParameterPolicyWithOnlyServiceArguments)); + + var services = new ServiceCollection(); + services.AddTransient(); + + var factory = GetParameterPolicyFactory(options, services); + + // Act + var parameterPolicy = factory.Create(RoutePatternFactory.ParameterPart("id"), "customConstraintPolicy"); + + // Assert + var constraint = Assert.IsType(parameterPolicy); + Assert.NotNull(constraint.TestService1); + Assert.NotNull(constraint.TestService2); + } + + [Fact] + public void Create_CreatesParameterPolicy_FromConstraintText_AndParameterPolicyWithMultipleMatchingCtors() + { + // Arrange + var options = new RouteOptions(); + options.ConstraintMap.Add("customConstraintPolicy", typeof(CustomParameterPolicyWithMultpleCtors)); + + var services = new ServiceCollection(); + services.AddTransient(); + + var factory = GetParameterPolicyFactory(options, services); + + // Act + var parameterPolicy = factory.Create(RoutePatternFactory.ParameterPart("id"), "customConstraintPolicy(1)"); + + // Assert + var constraint = Assert.IsType(parameterPolicy); + Assert.NotNull(constraint.TestService); + Assert.Equal(1, constraint.Count); + } + + [Fact] + public void Create_CreatesParameterPolicy_FromConstraintText_AndParameterPolicyWithAmbigiousMatchingCtors() + { + // Arrange + var options = new RouteOptions(); + options.ConstraintMap.Add("customConstraintPolicy", typeof(CustomParameterPolicyWithAmbigiousMultpleCtors)); + + var services = new ServiceCollection(); + services.AddTransient(); + + var factory = GetParameterPolicyFactory(options, services); + + // Act + var exception = Assert.Throws( + () => factory.Create(RoutePatternFactory.ParameterPart("id"), "customConstraintPolicy(1)")); + + // Assert + Assert.Equal($"The constructor to use for activating the constraint type '{nameof(CustomParameterPolicyWithAmbigiousMultpleCtors)}' is ambiguous. " + + $"Multiple constructors were found with the following number of parameters: 2.", exception.Message); + } + + [Fact] + public void Create_CreatesParameterPolicy_FromConstraintText_AndParameterPolicyWithSingleArgumentAndServiceArgument() + { + // Arrange + var options = new RouteOptions(); + options.ConstraintMap.Add("regex-service", typeof(RegexInlineRouteConstraintWithService)); + + var services = new ServiceCollection(); + services.AddTransient(); + + var factory = GetParameterPolicyFactory(options, services); + + // Act + var parameterPolicy = factory.Create(RoutePatternFactory.ParameterPart("id"), @"regex-service(\\d{1,2})"); + + // Assert + var constraint = Assert.IsType(parameterPolicy); + Assert.NotNull(constraint.TestService); + Assert.Equal("\\\\d{1,2}", constraint.Constraint.ToString()); + } + + [Fact] + public void Create_CreatesParameterPolicy_FromConstraintText_AndParameterPolicyWithArgumentAndUnresolvedServices_Throw() + { + // Arrange + var options = new RouteOptions(); + options.ConstraintMap.Add("customConstraintPolicy", typeof(CustomParameterPolicyWithArguments)); + + var services = new ServiceCollection(); + + var factory = GetParameterPolicyFactory(options, services); + + // Act + var exception = Assert.Throws( + () => factory.Create(RoutePatternFactory.ParameterPart("id"), "customConstraintPolicy(20)")); + + // Assert + var inner = Assert.IsType(exception.InnerException); + Assert.Equal($"No service for type '{typeof(ITestService).FullName}' has been registered.", inner.Message); + } + + [Fact] + public void Create_CreatesParameterPolicy_FromConstraintText_AndParameterPolicy_Optional() + { + // Arrange + var options = new RouteOptions(); + options.ConstraintMap.Add("customParameterPolicy", typeof(CustomParameterPolicy)); + + var services = new ServiceCollection(); + services.AddTransient(); + + var factory = GetParameterPolicyFactory(options, services); + + // Act + var parameterPolicy = factory.Create(RoutePatternFactory.ParameterPart("id", @default: null, RoutePatternParameterKind.Optional), "customParameterPolicy"); + + // Assert + Assert.IsType(parameterPolicy); + } + + private DefaultParameterPolicyFactory GetParameterPolicyFactory( + RouteOptions options = null, + ServiceCollection services = null) + { + if (options == null) + { + options = new RouteOptions(); + } + + if (services == null) + { + services = new ServiceCollection(); + } + + return new DefaultParameterPolicyFactory( + Options.Create(options), + services.BuildServiceProvider()); + } + + private class TestRouteConstraint : IRouteConstraint + { + private TestRouteConstraint() { } + + public HttpContext HttpContext { get; private set; } + public IRouter Route { get; private set; } + public string RouteKey { get; private set; } + public RouteValueDictionary Values { get; private set; } + public RouteDirection RouteDirection { get; private set; } + + public static TestRouteConstraint Create() + { + return new TestRouteConstraint(); + } + + public bool Match( + HttpContext httpContext, + IRouter route, + string routeKey, + RouteValueDictionary values, + RouteDirection routeDirection) + { + HttpContext = httpContext; + Route = route; + RouteKey = routeKey; + Values = values; + RouteDirection = routeDirection; + return false; + } + } + } + + public class CustomParameterPolicy : IParameterPolicy + { + } + + public class CustomParameterPolicyWithArguments : IParameterPolicy + { + public CustomParameterPolicyWithArguments(ITestService testService, int count) + { + TestService = testService; + Count = count; + } + + public ITestService TestService { get; } + public int Count { get; } + } + + public class CustomParameterPolicyWithMultpleCtors : IParameterPolicy + { + public CustomParameterPolicyWithMultpleCtors(ITestService testService, int count) + { + TestService = testService; + Count = count; + } + + public CustomParameterPolicyWithMultpleCtors(int count) + : this(testService: null, count) + { + } + + public ITestService TestService { get; } + public int Count { get; } + } + + public class CustomParameterPolicyWithAmbigiousMultpleCtors : IParameterPolicy + { + public CustomParameterPolicyWithAmbigiousMultpleCtors(ITestService testService, int count) + { + TestService = testService; + Count = count; + } + + public CustomParameterPolicyWithAmbigiousMultpleCtors(object testService, int count) + : this(testService: null, count) + { + } + + public CustomParameterPolicyWithAmbigiousMultpleCtors(int count) + : this(testService: null, count) + { + } + + public ITestService TestService { get; } + public int Count { get; } + } + + public class CustomParameterPolicyWithMultipleArguments : IParameterPolicy + { + public CustomParameterPolicyWithMultipleArguments(int first, ITestService testService1, int second, ITestService testService2) + { + First = first; + TestService1 = testService1; + Second = second; + TestService2 = testService2; + } + + public int First { get; } + public ITestService TestService1 { get; } + public int Second { get; } + public ITestService TestService2 { get; } + } + + public class CustomParameterPolicyWithOnlyServiceArguments : IParameterPolicy + { + public CustomParameterPolicyWithOnlyServiceArguments(ITestService testService1, ITestService testService2) + { + TestService1 = testService1; + TestService2 = testService2; + } + + public ITestService TestService1 { get; } + public ITestService TestService2 { get; } + } + + public interface ITestService + { + } + + public class TestService : ITestService + { + + } + + public class RegexInlineRouteConstraintWithService : RegexRouteConstraint + { + public RegexInlineRouteConstraintWithService(string regexPattern, ITestService testService) + : base(regexPattern) + { + TestService = testService; + } + + public ITestService TestService { get; } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/EndpointFactory.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/EndpointFactory.cs new file mode 100644 index 0000000000..e3a5b0f802 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/EndpointFactory.cs @@ -0,0 +1,36 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Patterns; +using System; +using System.Collections.Generic; + +namespace Microsoft.AspNetCore.Routing +{ + internal static class EndpointFactory + { + public static RouteEndpoint CreateRouteEndpoint( + string template, + object defaults = null, + object policies = null, + object requiredValues = null, + int order = 0, + string displayName = null, + params object[] metadata) + { + var d = new List(metadata ?? Array.Empty()); + if (requiredValues != null) + { + d.Add(new RouteValuesAddressMetadata(new RouteValueDictionary(requiredValues))); + } + + return new RouteEndpoint( + TestConstants.EmptyRequestDelegate, + RoutePatternFactory.Parse(template, defaults, policies), + order, + new EndpointMetadataCollection(d), + displayName); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/EndpointMiddlewareTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/EndpointMiddlewareTest.cs new file mode 100644 index 0000000000..3958222fa4 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/EndpointMiddlewareTest.cs @@ -0,0 +1,101 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; +using Microsoft.Extensions.Logging.Abstractions; +using Xunit; + +namespace Microsoft.AspNetCore.Routing +{ + public class EndpointMiddlewareTest + { + [Fact] + public async Task Invoke_NoFeature_NoOps() + { + // Arrange + var httpContext = new DefaultHttpContext(); + httpContext.RequestServices = new ServiceProvider(); + + RequestDelegate next = (c) => + { + return Task.CompletedTask; + }; + + var middleware = new EndpointMiddleware(NullLogger.Instance, next); + + // Act + await middleware.Invoke(httpContext); + + // Assert - does not throw + } + + [Fact] + public async Task Invoke_NoEndpoint_NoOps() + { + // Arrange + var httpContext = new DefaultHttpContext(); + httpContext.RequestServices = new ServiceProvider(); + + httpContext.Features.Set(new EndpointSelectorContext() + { + Endpoint = null, + }); + + RequestDelegate next = (c) => + { + return Task.CompletedTask; + }; + + var middleware = new EndpointMiddleware(NullLogger.Instance, next); + + // Act + await middleware.Invoke(httpContext); + + // Assert - does not throw + } + + [Fact] + public async Task Invoke_WithEndpoint_InvokesDelegate() + { + // Arrange + var httpContext = new DefaultHttpContext(); + httpContext.RequestServices = new ServiceProvider(); + + var invoked = false; + RequestDelegate endpointFunc = (c) => + { + invoked = true; + return Task.CompletedTask; + }; + + httpContext.Features.Set(new EndpointSelectorContext() + { + Endpoint = new Endpoint(endpointFunc, EndpointMetadataCollection.Empty, "Test"), + }); + + RequestDelegate next = (c) => + { + return Task.CompletedTask; + }; + + var middleware = new EndpointMiddleware(NullLogger.Instance, next); + + // Act + await middleware.Invoke(httpContext); + + // Assert + Assert.True(invoked); + } + + private class ServiceProvider : IServiceProvider + { + public object GetService(Type serviceType) + { + throw new NotImplementedException(); + } + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/EndpointNameAddressSchemeTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/EndpointNameAddressSchemeTest.cs new file mode 100644 index 0000000000..d643372063 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/EndpointNameAddressSchemeTest.cs @@ -0,0 +1,204 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Linq; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.TestObjects; +using Xunit; + +namespace Microsoft.AspNetCore.Routing +{ + public class EndpointNameAddressSchemeTest + { + [Fact] + public void AddressScheme_Match_ReturnsMatchingEndpoint() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint( + "/a", + metadata: new object[] { new EndpointNameMetadata("name1"), }); + + var endpoint2 = EndpointFactory.CreateRouteEndpoint( + "/b", + metadata: new object[] { new EndpointNameMetadata("name2"), }); + + var addressScheme = CreateAddressScheme(endpoint1, endpoint2); + + // Act + var endpoints = addressScheme.FindEndpoints("name2"); + + // Assert + Assert.Collection( + endpoints, + e => Assert.Same(endpoint2, e)); + } + + [Fact] + public void AddressScheme_NoMatch_ReturnsEmptyCollection() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + "/a", + metadata: new object[] { new EndpointNameMetadata("name1"), new SuppressLinkGenerationMetadata(), }); + + var addressScheme = CreateAddressScheme(endpoint); + + // Act + var endpoints = addressScheme.FindEndpoints("name2"); + + // Assert + Assert.Empty(endpoints); + } + + [Fact] + public void AddressScheme_NoMatch_CaseSensitive() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + "/a", + metadata: new object[] { new EndpointNameMetadata("name1"), new SuppressLinkGenerationMetadata(), }); + + var addressScheme = CreateAddressScheme(endpoint); + + // Act + var endpoints = addressScheme.FindEndpoints("NAME1"); + + // Assert + Assert.Empty(endpoints); + } + + [Fact] + public void AddressScheme_UpdatesWhenDataSourceChanges() + { + var endpoint1 = EndpointFactory.CreateRouteEndpoint( + "/a", + metadata: new object[] { new EndpointNameMetadata("name1"), }); + var dynamicDataSource = new DynamicEndpointDataSource(new[] { endpoint1 }); + + // Act 1 + var addressScheme = CreateAddressScheme(dynamicDataSource); + + // Assert 1 + var match = Assert.Single(addressScheme.Entries); + Assert.Same(endpoint1, match.Value.Single()); + + // Arrange 2 + var endpoint2 = EndpointFactory.CreateRouteEndpoint( + "/b", + metadata: new object[] { new EndpointNameMetadata("name2"), }); + + // Act 2 + // Trigger change + dynamicDataSource.AddEndpoint(endpoint2); + + // Assert 2 + Assert.Collection( + addressScheme.Entries.OrderBy(kvp => kvp.Key), + (m) => + { + Assert.Same(endpoint1, m.Value.Single()); + }, + (m) => + { + Assert.Same(endpoint2, m.Value.Single()); + }); + } + + [Fact] + public void AddressScheme_IgnoresEndpointsWithSuppressLinkGeneration() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + "/a", + metadata: new object[] { new EndpointNameMetadata("name1"), new SuppressLinkGenerationMetadata(), }); + + // Act + var addressScheme = CreateAddressScheme(endpoint); + + // Assert + Assert.Empty(addressScheme.Entries); + } + + [Fact] + public void AddressScheme_UnsuppressedEndpoint_IsUsed() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + "/a", + metadata: new object[] { new EndpointNameMetadata("name1"), new SuppressLinkGenerationMetadata(), new EncourageLinkGenerationMetadata(), }); + + // Act + var addressScheme = CreateAddressScheme(endpoint); + + // Assert + Assert.Same(endpoint, Assert.Single(Assert.Single(addressScheme.Entries).Value)); + } + + [Fact] + public void AddressScheme_IgnoresEndpointsWithoutEndpointName() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + "/a", + metadata: new object[] { }); + + // Act + var addressScheme = CreateAddressScheme(endpoint); + + // Assert + Assert.Empty(addressScheme.Entries); + } + + [Fact] + public void AddressScheme_ThrowsExceptionForDuplicateEndpoints() + { + // Arrange + var endpoints = new Endpoint[] + { + EndpointFactory.CreateRouteEndpoint("/a", displayName: "a", metadata: new object[] { new EndpointNameMetadata("name1"), }), + EndpointFactory.CreateRouteEndpoint("/b", displayName: "b", metadata: new object[] { new EndpointNameMetadata("name1"), }), + EndpointFactory.CreateRouteEndpoint("/c", displayName: "c", metadata: new object[] { new EndpointNameMetadata("name1"), }), + + //// Not a duplicate + EndpointFactory.CreateRouteEndpoint("/d", displayName: "d", metadata: new object[] { new EndpointNameMetadata("NAME1"), }), + + EndpointFactory.CreateRouteEndpoint("/e", displayName: "e", metadata: new object[] { new EndpointNameMetadata("name2"), }), + EndpointFactory.CreateRouteEndpoint("/f", displayName: "f", metadata: new object[] { new EndpointNameMetadata("name2"), }), + }; + + var addressScheme = CreateAddressScheme(endpoints); + + // Act + var ex = Assert.Throws(() => addressScheme.FindEndpoints("any name")); + + // Assert + Assert.Equal(@"The following endpoints with a duplicate endpoint name were found. + +Endpoints with endpoint name 'name1': +a +b +c + +Endpoints with endpoint name 'name2': +e +f +", ex.Message); + } + + private EndpointNameAddressScheme CreateAddressScheme(params Endpoint[] endpoints) + { + return CreateAddressScheme(new DefaultEndpointDataSource(endpoints)); + } + + private EndpointNameAddressScheme CreateAddressScheme(params EndpointDataSource[] dataSources) + { + return new EndpointNameAddressScheme(new CompositeEndpointDataSource(dataSources)); + } + + private class EncourageLinkGenerationMetadata : ISuppressLinkGenerationMetadata + { + public bool SuppressLinkGeneration => false; + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/EndpointRoutingMiddlewareTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/EndpointRoutingMiddlewareTest.cs new file mode 100644 index 0000000000..48861da09b --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/EndpointRoutingMiddlewareTest.cs @@ -0,0 +1,164 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; +using Microsoft.AspNetCore.Routing.Matching; +using Microsoft.AspNetCore.Routing.TestObjects; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Microsoft.Extensions.Logging.Testing; +using Microsoft.Extensions.Options; +using Moq; +using Xunit; + +namespace Microsoft.AspNetCore.Routing +{ + public class EndpointRoutingMiddlewareTest + { + [Fact] + public async Task Invoke_OnCall_SetsEndpointFeature() + { + // Arrange + var httpContext = CreateHttpContext(); + + var middleware = CreateMiddleware(); + + // Act + await middleware.Invoke(httpContext); + + // Assert + var endpointFeature = httpContext.Features.Get(); + Assert.NotNull(endpointFeature); + } + + [Fact] + public async Task Invoke_OnCall_WritesToConfiguredLogger() + { + // Arrange + var expectedMessage = "Request matched endpoint 'Test endpoint'"; + + var sink = new TestSink( + TestSink.EnableWithTypeName, + TestSink.EnableWithTypeName); + var loggerFactory = new TestLoggerFactory(sink, enabled: true); + + var httpContext = CreateHttpContext(); + + var logger = new Logger(loggerFactory); + var middleware = CreateMiddleware(logger); + + // Act + await middleware.Invoke(httpContext); + + // Assert + Assert.Empty(sink.Scopes); + var write = Assert.Single(sink.Writes); + Assert.Equal(expectedMessage, write.State?.ToString()); + } + + [Fact] + public async Task Invoke_BackCompatGetRouteValue_ValueUsedFromEndpointFeature() + { + // Arrange + var httpContext = CreateHttpContext(); + + var middleware = CreateMiddleware(); + + // Act + await middleware.Invoke(httpContext); + var routeData = httpContext.GetRouteData(); + var routeValue = httpContext.GetRouteValue("controller"); + var routeValuesFeature = httpContext.Features.Get(); + + // Assert + Assert.NotNull(routeData); + Assert.Equal("Home", (string)routeValue); + + // changing route data value is reflected in endpoint feature values + routeData.Values["testKey"] = "testValue"; + Assert.Equal("testValue", routeValuesFeature.RouteValues["testKey"]); + } + + [Fact] + public async Task Invoke_BackCompatGetDataTokens_ValueUsedFromEndpointMetadata() + { + // Arrange + var httpContext = CreateHttpContext(); + + var middleware = CreateMiddleware(); + + // Act + await middleware.Invoke(httpContext); + var routeData = httpContext.GetRouteData(); + var routeValue = httpContext.GetRouteValue("controller"); + var routeValuesFeature = httpContext.Features.Get(); + + // Assert + Assert.NotNull(routeData); + Assert.Equal("Home", (string)routeValue); + + // changing route data value is reflected in endpoint feature values + routeData.Values["testKey"] = "testValue"; + Assert.Equal("testValue", routeValuesFeature.RouteValues["testKey"]); + } + + [Fact] + public async Task Invoke_InitializationFailure_AllowsReinitialization() + { + // Arrange + var httpContext = CreateHttpContext(); + + var matcherFactory = new Mock(); + matcherFactory + .Setup(f => f.CreateMatcher(It.IsAny())) + .Throws(new InvalidTimeZoneException()) + .Verifiable(); + + var middleware = CreateMiddleware(matcherFactory: matcherFactory.Object); + + // Act + await Assert.ThrowsAsync(async () => await middleware.Invoke(httpContext)); + await Assert.ThrowsAsync(async () => await middleware.Invoke(httpContext)); + + // Assert + matcherFactory + .Verify(f => f.CreateMatcher(It.IsAny()), Times.Exactly(2)); + } + + private HttpContext CreateHttpContext() + { + var context = new EndpointSelectorContext(); + + var httpContext = new DefaultHttpContext(); + httpContext.Features.Set(context); + httpContext.Features.Set(context); + + httpContext.RequestServices = new TestServiceProvider(); + + return httpContext; + } + + private EndpointRoutingMiddleware CreateMiddleware( + Logger logger = null, + MatcherFactory matcherFactory = null) + { + RequestDelegate next = (c) => Task.FromResult(null); + + logger = logger ?? new Logger(NullLoggerFactory.Instance); + matcherFactory = matcherFactory ?? new TestMatcherFactory(true); + + var options = Options.Create(new EndpointOptions()); + var middleware = new EndpointRoutingMiddleware( + matcherFactory, + new CompositeEndpointDataSource(Array.Empty()), + logger, + next); + + return middleware; + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/EndpointSelectorContextTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/EndpointSelectorContextTest.cs new file mode 100644 index 0000000000..05ca8850da --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/EndpointSelectorContextTest.cs @@ -0,0 +1,59 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Linq; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Matching; +using Microsoft.AspNetCore.Routing.Patterns; +using Xunit; + +namespace Microsoft.AspNetCore.Routing +{ + public class EndpointSelectorContextTest + { + [Fact] + public void RouteData_CanIntializeDataTokens_WithMetadata() + { + // Arrange + var expected = new RouteValueDictionary(new { foo = 17, bar = "hello", }); + + var context = new EndpointSelectorContext() + { + Endpoint = new RouteEndpoint( + TestConstants.EmptyRequestDelegate, + RoutePatternFactory.Parse("/"), + 0, + new EndpointMetadataCollection(new DataTokensMetadata(expected)), + "test"), + }; + + // Act + var routeData = ((IRoutingFeature)context).RouteData; + + // Assert + Assert.NotSame(expected, routeData.DataTokens); + Assert.Equal(expected.OrderBy(kvp => kvp.Key), routeData.DataTokens.OrderBy(kvp => kvp.Key)); + } + + [Fact] + public void RouteData_DataTokensIsEmpty_WithoutMetadata() + { + // Arrange + var context = new EndpointSelectorContext() + { + Endpoint = new RouteEndpoint( + TestConstants.EmptyRequestDelegate, + RoutePatternFactory.Parse("/"), + 0, + new EndpointMetadataCollection(), + "test"), + }; + + // Act + var routeData = ((IRoutingFeature)context).RouteData; + + // Assert + Assert.Empty(routeData.DataTokens); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/InlineRouteParameterParserTests.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/InlineRouteParameterParserTests.cs index 0e570c49cc..ccd44a8318 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/InlineRouteParameterParserTests.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/InlineRouteParameterParserTests.cs @@ -968,7 +968,7 @@ namespace Microsoft.AspNetCore.Routing.Tests .Add("test", typeof(TestRouteConstraint))); var serviceProvider = services.BuildServiceProvider(); var accessor = serviceProvider.GetRequiredService>(); - return new DefaultInlineConstraintResolver(accessor); + return new DefaultInlineConstraintResolver(accessor, serviceProvider); } private class TestRouteConstraint : IRouteConstraint diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Internal/DfaGraphWriterTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Internal/DfaGraphWriterTest.cs new file mode 100644 index 0000000000..bcabc39d37 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Internal/DfaGraphWriterTest.cs @@ -0,0 +1,95 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.IO; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Primitives; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Internal +{ + public class DfaGraphWriterTest + { + private DfaGraphWriter CreateGraphWriter() + { + ServiceCollection services = new ServiceCollection(); + services.AddLogging(); + services.AddRouting(); + + return new DfaGraphWriter(services.BuildServiceProvider()); + } + + [Fact] + public void Write_ExcludeNonRouteEndpoint() + { + // Arrange + var graphWriter = CreateGraphWriter(); + var writer = new StringWriter(); + var endpointsDataSource = new DefaultEndpointDataSource(new Endpoint((context) => null, EndpointMetadataCollection.Empty, string.Empty)); + + // Act + graphWriter.Write(endpointsDataSource, writer); + + // Assert + Assert.Equal(@"digraph DFA { +0 [label=""/""] +} +", writer.ToString()); + } + + [Fact] + public void Write_ExcludeRouteEndpointWithSuppressMatchingMetadata() + { + // Arrange + var graphWriter = CreateGraphWriter(); + var writer = new StringWriter(); + var endpointsDataSource = new DefaultEndpointDataSource( + new RouteEndpoint( + (context) => null, + RoutePatternFactory.Parse("/"), + 0, + new EndpointMetadataCollection(new SuppressMatchingMetadata()), + string.Empty)); + + // Act + graphWriter.Write(endpointsDataSource, writer); + + // Assert + Assert.Equal(@"digraph DFA { +0 [label=""/""] +} +", writer.ToString()); + } + + [Fact] + public void Write_IncludeRouteEndpointWithPolicy() + { + // Arrange + var graphWriter = CreateGraphWriter(); + var writer = new StringWriter(); + var endpointsDataSource = new DefaultEndpointDataSource( + new RouteEndpoint( + (context) => null, + RoutePatternFactory.Parse("/"), + 0, + new EndpointMetadataCollection(new HttpMethodMetadata(new[] { "GET" })), + string.Empty)); + + // Act + graphWriter.Write(endpointsDataSource, writer); + + // Assert + var sdf = writer.ToString(); + Assert.Equal(@"digraph DFA { +0 [label=""/ HTTP: GET""] +1 [label=""/ HTTP: *""] +2 -> 0 [label=""HTTP: GET""] +2 -> 1 [label=""HTTP: *""] +2 [label=""/""] +} +", sdf); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Internal/LinkGenerationDecisionTreeTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Internal/LinkGenerationDecisionTreeTest.cs index 8a35edcf13..94568c2cd8 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Internal/LinkGenerationDecisionTreeTest.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Internal/LinkGenerationDecisionTreeTest.cs @@ -1,9 +1,11 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System; using System.Collections.Generic; using System.Linq; using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Patterns; using Microsoft.AspNetCore.Routing.Template; using Microsoft.AspNetCore.Routing.Tree; using Xunit; @@ -12,6 +14,26 @@ namespace Microsoft.AspNetCore.Routing.Internal.Routing { public class LinkGenerationDecisionTreeTest { + [Fact] + public void GetMatches_AllowsNullAmbientValues() + { + // Arrange + var entries = new List(); + + var entry = CreateMatch(new { }); + entries.Add(entry); + + var tree = new LinkGenerationDecisionTree(entries); + + var context = CreateContext(new { }); + + // Act + var matches = tree.GetMatches(context.Values, ambientValues: null); + + // Assert + Assert.Same(entry, Assert.Single(matches).Match); + } + [Fact] public void SelectSingleEntry_NoCriteria() { @@ -26,7 +48,7 @@ namespace Microsoft.AspNetCore.Routing.Internal.Routing var context = CreateContext(new { }); // Act - var matches = tree.GetMatches(context); + var matches = tree.GetMatches(context.Values, context.AmbientValues); // Assert Assert.Same(entry, Assert.Single(matches).Match); @@ -46,7 +68,7 @@ namespace Microsoft.AspNetCore.Routing.Internal.Routing var context = CreateContext(new { controller = "Store", action = "Buy" }); // Act - var matches = tree.GetMatches(context); + var matches = tree.GetMatches(context.Values, context.AmbientValues); // Assert Assert.Same(entry, Assert.Single(matches).Match); @@ -66,7 +88,7 @@ namespace Microsoft.AspNetCore.Routing.Internal.Routing var context = CreateContext(values: null, ambientValues: new { controller = "Store", action = "Buy" }); // Act - var matches = tree.GetMatches(context); + var matches = tree.GetMatches(context.Values, context.AmbientValues); // Assert var match = Assert.Single(matches); @@ -90,7 +112,7 @@ namespace Microsoft.AspNetCore.Routing.Internal.Routing ambientValues: new { controller = "Store", action = "Cart" }); // Act - var matches = tree.GetMatches(context); + var matches = tree.GetMatches(context.Values, context.AmbientValues); // Assert var match = Assert.Single(matches); @@ -114,7 +136,7 @@ namespace Microsoft.AspNetCore.Routing.Internal.Routing ambientValues: new { controller = "Store", action = "Buy" }); // Act - var matches = tree.GetMatches(context); + var matches = tree.GetMatches(context.Values, context.AmbientValues); // Assert var match = Assert.Single(matches); @@ -136,7 +158,7 @@ namespace Microsoft.AspNetCore.Routing.Internal.Routing var context = CreateContext(new { controller = "Store", action = "AddToCart" }); // Act - var matches = tree.GetMatches(context); + var matches = tree.GetMatches(context.Values, context.AmbientValues); // Assert Assert.Empty(matches); @@ -158,7 +180,7 @@ namespace Microsoft.AspNetCore.Routing.Internal.Routing ambientValues: new { controller = "Store", action = "Cart" }); // Act - var matches = tree.GetMatches(context); + var matches = tree.GetMatches(context.Values, context.AmbientValues); // Assert Assert.Empty(matches); @@ -183,7 +205,7 @@ namespace Microsoft.AspNetCore.Routing.Internal.Routing ambientValues: new { controller = "Store", action = "Buy" }); // Act - var matches = tree.GetMatches(context); + var matches = tree.GetMatches(context.Values, context.AmbientValues); // Assert Assert.Same(entry1, Assert.Single(matches).Match); @@ -209,7 +231,7 @@ namespace Microsoft.AspNetCore.Routing.Internal.Routing ambientValues: new { controller = "Store", action = "Buy" }); // Act - var matches = tree.GetMatches(context).Select(m => m.Match).ToList(); + var matches = tree.GetMatches(context.Values, context.AmbientValues).Select(m => m.Match).ToList(); // Assert Assert.Equal(entries, matches); @@ -233,7 +255,7 @@ namespace Microsoft.AspNetCore.Routing.Internal.Routing var context = CreateContext(new { controller = "Store", action = "Buy", slug = "1234" }); // Act - var matches = tree.GetMatches(context).Select(m => m.Match).ToList(); + var matches = tree.GetMatches(context.Values, context.AmbientValues).Select(m => m.Match).ToList(); // Assert Assert.Equal(entries, matches); @@ -260,7 +282,7 @@ namespace Microsoft.AspNetCore.Routing.Internal.Routing var context = CreateContext(new { controller = "Store", action = "Buy" }); // Act - var matches = tree.GetMatches(context).Select(m => m.Match).ToList(); + var matches = tree.GetMatches(context.Values, context.AmbientValues).Select(m => m.Match).ToList(); // Assert Assert.Equal(entries, matches); @@ -286,7 +308,7 @@ namespace Microsoft.AspNetCore.Routing.Internal.Routing var context = CreateContext(new { controller = "Store", action = "Buy" }); // Act - var matches = tree.GetMatches(context).Select(m => m.Match).ToList(); + var matches = tree.GetMatches(context.Values, context.AmbientValues).Select(m => m.Match).ToList(); // Assert Assert.Equal(entries, matches); @@ -312,17 +334,51 @@ namespace Microsoft.AspNetCore.Routing.Internal.Routing var context = CreateContext(new { controller = "Store", action = "Buy" }); // Act - var matches = tree.GetMatches(context).Select(m => m.Match).ToList(); + var matches = tree.GetMatches(context.Values, context.AmbientValues).Select(m => m.Match).ToList(); // Assert Assert.Equal(entries, matches); } - private OutboundMatch CreateMatch(object requiredValues) + [Fact] + public void ToDebuggerDisplayString_GivesAFlattenedTree() + { + // Arrange + var entries = new List(); + entries.Add(CreateMatch(new { action = "Buy", controller = "Store", version = "V1" }, "Store/Buy/V1")); + entries.Add(CreateMatch(new { action = "Buy", controller = "Store", area = "Admin" }, "Admin/Store/Buy")); + entries.Add(CreateMatch(new { action = "Buy", controller = "Products" }, "Products/Buy")); + entries.Add(CreateMatch(new { action = "Buy", controller = "Store", version = "V2" }, "Store/Buy/V2")); + entries.Add(CreateMatch(new { action = "Cart", controller = "Store" }, "Store/Cart")); + entries.Add(CreateMatch(new { action = "Index", controller = "Home" }, "Home/Index/{id?}")); + var tree = new LinkGenerationDecisionTree(entries); + var newLine = Environment.NewLine; + var expected = + " => action: Buy => controller: Store => version: V1 (Matches: Store/Buy/V1)" + newLine + + " => action: Buy => controller: Store => version: V2 (Matches: Store/Buy/V2)" + newLine + + " => action: Buy => controller: Store => area: Admin (Matches: Admin/Store/Buy)" + newLine + + " => action: Buy => controller: Products (Matches: Products/Buy)" + newLine + + " => action: Cart => controller: Store (Matches: Store/Cart)" + newLine + + " => action: Index => controller: Home (Matches: Home/Index/{id?})" + newLine; + + // Act + var flattenedTree = tree.DebuggerDisplayString; + + // Assert + Assert.Equal(expected, flattenedTree); + } + + private OutboundMatch CreateMatch(object requiredValues, string routeTemplate = null) { var match = new OutboundMatch(); match.Entry = new OutboundRouteEntry(); match.Entry.RequiredLinkValues = new RouteValueDictionary(requiredValues); + + if (!string.IsNullOrEmpty(routeTemplate)) + { + match.Entry.RouteTemplate = new RouteTemplate(RoutePatternFactory.Parse(routeTemplate)); + } + return match; } diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Internal/UriBuildingContextTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Internal/UriBuildingContextTest.cs new file mode 100644 index 0000000000..cfd1531a5d --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Internal/UriBuildingContextTest.cs @@ -0,0 +1,100 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.Extensions.WebEncoders.Testing; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Internal +{ + public class UriBuildingContextTest + { + [Fact] + public void EncodeValue_EncodesEntireValue_WhenEncodeSlashes_IsFalse() + { + // Arrange + var urlTestEncoder = new UrlTestEncoder(); + var value = "a/b b1/c"; + var expected = "/UrlEncode[[a/b b1/c]]"; + var uriBuilldingContext = new UriBuildingContext(urlTestEncoder); + + // Act + uriBuilldingContext.EncodeValue(value, 0, value.Length, encodeSlashes: true); + + // Assert + Assert.Equal(expected, uriBuilldingContext.ToString()); + } + + [Fact] + public void EncodeValue_EncodesOnlySlashes_WhenEncodeSlashes_IsFalse() + { + // Arrange + var urlTestEncoder = new UrlTestEncoder(); + var value = "a/b b1/c"; + var expected = "/UrlEncode[[a]]/UrlEncode[[b b1]]/UrlEncode[[c]]"; + var uriBuilldingContext = new UriBuildingContext(urlTestEncoder); + + // Act + uriBuilldingContext.EncodeValue(value, 0, value.Length, encodeSlashes: false); + + // Assert + Assert.Equal(expected, uriBuilldingContext.ToString()); + } + + [Theory] + [InlineData("a/b b1/c", 0, 2, "/UrlEncode[[a]]/")] + [InlineData("a/b b1/c", 3, 4, "/UrlEncode[[ b1]]/")] + [InlineData("a/b b1/c", 3, 5, "/UrlEncode[[ b1]]/UrlEncode[[c]]")] + [InlineData("a/b b1/c/", 8, 1, "/")] + [InlineData("/", 0, 1, "/")] + [InlineData("/a", 0, 2, "/UrlEncode[[a]]")] + [InlineData("a", 0, 1, "/UrlEncode[[a]]")] + [InlineData("a/", 0, 2, "/UrlEncode[[a]]/")] + public void EncodeValue_EncodesOnlySlashes_WithinSubsegment_WhenEncodeSlashes_IsFalse( + string value, + int startIndex, + int characterCount, + string expected) + { + // Arrange + var urlTestEncoder = new UrlTestEncoder(); + var uriBuilldingContext = new UriBuildingContext(urlTestEncoder); + + // Act + uriBuilldingContext.EncodeValue(value, startIndex, characterCount, encodeSlashes: false); + + // Assert + Assert.Equal(expected, uriBuilldingContext.ToString()); + } + + [Theory] + [InlineData("/Author", false, false, "/UrlEncode[[Author]]")] + [InlineData("/Author", false, true, "/UrlEncode[[Author]]")] + [InlineData("/Author", true, false, "/UrlEncode[[Author]]/")] + [InlineData("/Author", true, true, "/UrlEncode[[Author]]/")] + [InlineData("/Author/", false, false, "/UrlEncode[[Author]]/")] + [InlineData("/Author/", false, true, "/UrlEncode[[Author/]]")] + [InlineData("/Author/", true, false, "/UrlEncode[[Author]]/")] + [InlineData("/Author/", true, true, "/UrlEncode[[Author/]]/")] + [InlineData("Author", false, false, "/UrlEncode[[Author]]")] + [InlineData("Author", false, true, "/UrlEncode[[Author]]")] + [InlineData("Author", true, false, "/UrlEncode[[Author]]/")] + [InlineData("Author", true, true, "/UrlEncode[[Author]]/")] + [InlineData("", false, false, "")] + [InlineData("", false, true, "")] + [InlineData("", true, false, "")] + [InlineData("", true, true, "")] + public void ToPathString(string url, bool appendTrailingSlash, bool encodeSlashes, string expected) + { + // Arrange + var urlTestEncoder = new UrlTestEncoder(); + var uriBuilldingContext = new UriBuildingContext(urlTestEncoder); + uriBuilldingContext.AppendTrailingSlash = appendTrailingSlash; + + // Act + uriBuilldingContext.Accept(url, encodeSlashes); + + // Assert + Assert.Equal(expected, uriBuilldingContext.ToPathString().Value); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/LinkGeneratorEndpointNameExtensionsTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/LinkGeneratorEndpointNameExtensionsTest.cs new file mode 100644 index 0000000000..e2a9382281 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/LinkGeneratorEndpointNameExtensionsTest.cs @@ -0,0 +1,153 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Linq; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; +using Xunit; + +namespace Microsoft.AspNetCore.Routing +{ + // Integration tests for GetXyzByName. These are basic because important behavioral details + // are covered elsewhere. + // + // Does not cover template processing in detail, those scenarios are validated by TemplateBinderTests + // and DefaultLinkGeneratorProcessTemplateTest + // + // Does not cover the EndpointNameAddressScheme in detail. see EndpointNameAddressSchemeTest + public class LinkGeneratorEndpointNameExtensionsTest : LinkGeneratorTestBase + { + [Fact] + public void GetPathByName_WithHttpContext_DoesNotUseAmbientValues() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("some-endpoint/{p}", metadata: new[] { new EndpointNameMetadata("name1"), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("some#-other-endpoint/{p}", metadata: new[] { new EndpointNameMetadata("name2"), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + var context = new EndpointSelectorContext() + { + RouteValues = new RouteValueDictionary(new { p = "5", }) + }; + var httpContext = CreateHttpContext(); + httpContext.Features.Set(context); + httpContext.Request.PathBase = new PathString("/Foo/Bar?encodeme?"); + + var values = new { query = "some?query", }; + + // Act + var path = linkGenerator.GetPathByName( + httpContext, + endpointName: "name2", + values, + fragment: new FragmentString("#Fragment?"), + options: new LinkOptions() { AppendTrailingSlash = true, }); + + // Assert + Assert.Null(path); + } + + [Fact] + public void GetPathByName_WithoutHttpContext_WithPathBaseAndFragment() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("some-endpoint/{p}", metadata: new[] { new EndpointNameMetadata("name1"), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("some#-other-endpoint/{p}", metadata: new[] { new EndpointNameMetadata("name2"), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + var values = new { p = "In?dex", query = "some?query", }; + + // Act + var path = linkGenerator.GetPathByName( + endpointName: "name2", + values, + new PathString("/Foo/Bar?encodeme?"), + new FragmentString("#Fragment?"), + new LinkOptions() { AppendTrailingSlash = true, }); + + // Assert + Assert.Equal("/Foo/Bar%3Fencodeme%3F/some%23-other-endpoint/In%3Fdex/?query=some%3Fquery#Fragment?", path); + } + + [Fact] + public void GetPathByName_WithHttpContext_WithPathBaseAndFragment() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("some-endpoint/{p}", metadata: new[] { new EndpointNameMetadata("name1"), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("some#-other-endpoint/{p}", metadata: new[] { new EndpointNameMetadata("name2"), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + var httpContext = CreateHttpContext(); + httpContext.Request.PathBase = new PathString("/Foo/Bar?encodeme?"); + + var values = new { p = "In?dex", query = "some?query", }; + + // Act + var path = linkGenerator.GetPathByName( + httpContext, + endpointName: "name2", + values, + fragment: new FragmentString("#Fragment?"), + options: new LinkOptions() { AppendTrailingSlash = true, }); + + // Assert + Assert.Equal("/Foo/Bar%3Fencodeme%3F/some%23-other-endpoint/In%3Fdex/?query=some%3Fquery#Fragment?", path); + } + + [Fact] + public void GetUriByRouteValues_WithoutHttpContext_WithPathBaseAndFragment() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("some-endpoint/{p}", metadata: new[] { new EndpointNameMetadata("name1"), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("some#-other-endpoint/{p}", metadata: new[] { new EndpointNameMetadata("name2"), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + var values = new { p = "In?dex", query = "some?query", }; + + // Act + var path = linkGenerator.GetUriByName( + endpointName: "name2", + values, + "http", + new HostString("example.com"), + new PathString("/Foo/Bar?encodeme?"), + new FragmentString("#Fragment?"), + new LinkOptions() { AppendTrailingSlash = true, }); + + // Assert + Assert.Equal("http://example.com/Foo/Bar%3Fencodeme%3F/some%23-other-endpoint/In%3Fdex/?query=some%3Fquery#Fragment?", path); + } + + [Fact] + public void GetUriByName_WithHttpContext_WithPathBaseAndFragment() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint("some-endpoint/{p}", metadata: new[] { new EndpointNameMetadata("name1"), }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint("some#-other-endpoint/{p}", metadata: new[] { new EndpointNameMetadata("name2"), }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + var httpContext = CreateHttpContext(); + httpContext.Request.Scheme = "http"; + httpContext.Request.Host = new HostString("example.com"); + httpContext.Request.PathBase = new PathString("/Foo/Bar?encodeme?"); + + var values = new { p = "In?dex", query = "some?query", }; + + // Act + var uri = linkGenerator.GetUriByName( + httpContext, + endpointName: "name2", + values, + fragment: new FragmentString("#Fragment?"), + options: new LinkOptions() { AppendTrailingSlash = true, }); + + // Assert + Assert.Equal("http://example.com/Foo/Bar%3Fencodeme%3F/some%23-other-endpoint/In%3Fdex/?query=some%3Fquery#Fragment?", uri); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/LinkGeneratorRouteValuesAddressExtensionsTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/LinkGeneratorRouteValuesAddressExtensionsTest.cs new file mode 100644 index 0000000000..b317929355 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/LinkGeneratorRouteValuesAddressExtensionsTest.cs @@ -0,0 +1,205 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Linq; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; +using Xunit; + +namespace Microsoft.AspNetCore.Routing +{ + // Integration tests for GetXyzByRouteValues. These are basic because important behavioral details + // are covered elsewhere. + // + // Does not cover template processing in detail, those scenarios are validated by TemplateBinderTests + // and DefaultLinkGeneratorProcessTemplateTest + // + // Does not cover the RouteValuesAddressScheme in detail. see RouteValuesAddressSchemeTest + public class LinkGeneratorRouteValuesAddressExtensionsTest : LinkGeneratorTestBase + { + [Fact] + public void GetPathByRouteValues_WithHttpContext_UsesAmbientValues() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint( + "Home/Index/{id}", + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint( + "Home/Index/{id?}", + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + var context = new EndpointSelectorContext() + { + RouteValues = new RouteValueDictionary(new { action = "Index", }) + }; + var httpContext = CreateHttpContext(); + httpContext.Features.Set(context); + httpContext.Request.PathBase = new PathString("/Foo/Bar?encodeme?"); + + // Act + var path = linkGenerator.GetPathByRouteValues( + httpContext, + routeName: null, + values: new RouteValueDictionary(new { controller = "Home", query = "some?query" }), + fragment: new FragmentString("#Fragment?"), + options: new LinkOptions() { AppendTrailingSlash = true, }); + + // Assert + Assert.Equal("/Foo/Bar%3Fencodeme%3F/Home/Index/?query=some%3Fquery#Fragment?", path); + } + + [Fact] + public void GetPathByRouteValues_WithoutHttpContext_WithPathBaseAndFragment() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint( + "Home/Index/{id}", + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint( + "Home/Index/{id?}", + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + // Act + var path = linkGenerator.GetPathByRouteValues( + routeName: null, + values: new RouteValueDictionary(new { controller = "Home", action = "Index", query = "some?query" }), + new PathString("/Foo/Bar?encodeme?"), + new FragmentString("#Fragment?"), + new LinkOptions() { AppendTrailingSlash = true, }); + + // Assert + Assert.Equal("/Foo/Bar%3Fencodeme%3F/Home/Index/?query=some%3Fquery#Fragment?", path); + } + + [Fact] + public void GetPathByRouteValues_WithHttpContext_WithPathBaseAndFragment() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint( + "Home/Index/{id}", + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint( + "Home/Index/{id?}", + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + var httpContext = CreateHttpContext(); + httpContext.Request.PathBase = new PathString("/Foo/Bar?encodeme?"); + + // Act + var path = linkGenerator.GetPathByRouteValues( + httpContext, + routeName: null, + values: new RouteValueDictionary(new { controller = "Home", action = "Index", query = "some?query" }), + fragment: new FragmentString("#Fragment?"), + options: new LinkOptions() { AppendTrailingSlash = true, }); + + // Assert + Assert.Equal("/Foo/Bar%3Fencodeme%3F/Home/Index/?query=some%3Fquery#Fragment?", path); + } + + [Fact] + public void GetUriByRouteValues_WithoutHttpContext_WithPathBaseAndFragment() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint( + "Home/Index/{id}", + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint( + "Home/Index/{id?}", + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + // Act + var path = linkGenerator.GetUriByRouteValues( + routeName: null, + values: new RouteValueDictionary(new { controller = "Home", action = "Index", query = "some?query" }), + "http", + new HostString("example.com"), + new PathString("/Foo/Bar?encodeme?"), + new FragmentString("#Fragment?"), + new LinkOptions() { AppendTrailingSlash = true, }); + + // Assert + Assert.Equal("http://example.com/Foo/Bar%3Fencodeme%3F/Home/Index/?query=some%3Fquery#Fragment?", path); + } + + [Fact] + public void GetUriByRouteValues_WithHttpContext_WithPathBaseAndFragment() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint( + "Home/Index/{id}", + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint( + "Home/Index/{id?}", + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + var httpContext = CreateHttpContext(); + httpContext.Request.Scheme = "http"; + httpContext.Request.Host = new HostString("example.com"); + httpContext.Request.PathBase = new PathString("/Foo/Bar?encodeme?"); + + // Act + var uri = linkGenerator.GetUriByRouteValues( + httpContext, + routeName: null, + values: new RouteValueDictionary(new { controller = "Home", action = "Index", query = "some?query" }), + fragment: new FragmentString("#Fragment?"), + options: new LinkOptions() { AppendTrailingSlash = true, }); + + // Assert + Assert.Equal("http://example.com/Foo/Bar%3Fencodeme%3F/Home/Index/?query=some%3Fquery#Fragment?", uri); + } + + [Fact] + public void GetUriByRouteValues_WithHttpContext_CanUseAmbientValues() + { + // Arrange + var endpoint1 = EndpointFactory.CreateRouteEndpoint( + "Home/Index/{id}", + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); + var endpoint2 = EndpointFactory.CreateRouteEndpoint( + "Home/Index/{id?}", + defaults: new { controller = "Home", action = "Index", }, + metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); + + var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); + + var httpContext = CreateHttpContext(new { controller = "Home", }); + httpContext.Request.Scheme = "http"; + httpContext.Request.Host = new HostString("example.com"); + httpContext.Request.PathBase = new PathString("/Foo/Bar?encodeme?"); + + // Act + var uri = linkGenerator.GetUriByRouteValues( + httpContext, + routeName: null, + values: new RouteValueDictionary(new { action = "Index", query = "some?query" }), + fragment: new FragmentString("#Fragment?"), + options: new LinkOptions() { AppendTrailingSlash = true, }); + + // Assert + Assert.Equal("http://example.com/Foo/Bar%3Fencodeme%3F/Home/Index/?query=some%3Fquery#Fragment?", uri); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/LinkGeneratorTestBase.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/LinkGeneratorTestBase.cs new file mode 100644 index 0000000000..a2a9c22db9 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/LinkGeneratorTestBase.cs @@ -0,0 +1,100 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; +using Microsoft.AspNetCore.Routing.Internal; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging.Abstractions; +using Microsoft.Extensions.ObjectPool; +using Microsoft.Extensions.Options; +using System; + +namespace Microsoft.AspNetCore.Routing +{ + public abstract class LinkGeneratorTestBase + { + protected HttpContext CreateHttpContext(object ambientValues = null) + { + var httpContext = new DefaultHttpContext(); + + var context = new EndpointSelectorContext + { + RouteValues = new RouteValueDictionary(ambientValues) + }; + + httpContext.Features.Set(context); + httpContext.Features.Set(context); + return httpContext; + } + + protected ServiceCollection GetBasicServices() + { + var services = new ServiceCollection(); + services.AddSingleton(); + services.AddOptions(); + services.AddRouting(); + services.AddLogging(); + return services; + } + + protected virtual void AddAdditionalServices(IServiceCollection services) + { + } + + private protected DefaultLinkGenerator CreateLinkGenerator(params Endpoint[] endpoints) + { + return CreateLinkGenerator(routeOptions: null, endpoints); + } + + private protected DefaultLinkGenerator CreateLinkGenerator(RouteOptions routeOptions, params Endpoint[] endpoints) + { + return CreateLinkGenerator(routeOptions, configureServices: null, endpoints); + } + + private protected DefaultLinkGenerator CreateLinkGenerator( + RouteOptions routeOptions, + Action configureServices, + params Endpoint[] endpoints) + { + return CreateLinkGenerator(routeOptions, configureServices, new[] { new DefaultEndpointDataSource(endpoints ?? Array.Empty()) }); + } + + private protected DefaultLinkGenerator CreateLinkGenerator(EndpointDataSource[] dataSources) + { + return CreateLinkGenerator(routeOptions: null, configureServices: null, dataSources); + } + + private protected DefaultLinkGenerator CreateLinkGenerator( + RouteOptions routeOptions, + Action configureServices, + EndpointDataSource[] dataSources) + { + var services = GetBasicServices(); + AddAdditionalServices(services); + configureServices?.Invoke(services); + + routeOptions = routeOptions ?? new RouteOptions(); + dataSources = dataSources ?? Array.Empty(); + + services.Configure((o) => + { + for (var i = 0; i < dataSources.Length; i++) + { + o.DataSources.Add(dataSources[i]); + } + }); + + var options = Options.Create(routeOptions); + var serviceProvider = services.BuildServiceProvider(); + + return new DefaultLinkGenerator( + new DefaultParameterPolicyFactory(options, serviceProvider), + serviceProvider.GetRequiredService(), + new DefaultObjectPool(new UriBuilderContextPooledObjectPolicy()), + options, + NullLogger.Instance, + serviceProvider); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/AsciiTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/AsciiTest.cs new file mode 100644 index 0000000000..c6266183a8 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/AsciiTest.cs @@ -0,0 +1,114 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // Note that while we don't intend for this code to be used with non-ASCII test, + // we still call into these methods with some non-ASCII characters so that + // we are sure of how it behaves. + public class AsciiTest + { + [Fact] + public void IsAscii_ReturnsTrueForAscii() + { + // Arrange + var text = "abcd\u007F"; + + // Act + var result = Ascii.IsAscii(text); + + // Assert + Assert.True(result); + } + + [Fact] + public void IsAscii_ReturnsFalseForNonAscii() + { + // Arrange + var text = "abcd\u0080"; + + // Act + var result = Ascii.IsAscii(text); + + // Assert + Assert.False(result); + } + + [Theory] + + // Identity + [InlineData('c', 'c')] + [InlineData('C', 'C')] + [InlineData('#', '#')] + [InlineData('\u0080', '\u0080')] + + // Case-insensitive + [InlineData('c', 'C')] + public void AsciiIgnoreCaseEquals_ReturnsTrue(char x, char y) + { + // Arrange + + // Act + var result = Ascii.AsciiIgnoreCaseEquals(x, y); + + // Assert + Assert.True(result); + } + + [Theory] + + // Different letter + [InlineData('c', 'd')] + [InlineData('C', 'D')] + + // Non-letter + casing difference - 'a' and 'A' are 32 bits apart and so are ' ' and '@' + [InlineData(' ', '@')] + [InlineData('\u0080', '\u0080' + 32)] // Outside of ASCII range + public void AsciiIgnoreCaseEquals_ReturnsFalse(char x, char y) + { + // Arrange + + // Act + var result = Ascii.AsciiIgnoreCaseEquals(x, y); + + // Assert + Assert.False(result); + } + + [Theory] + [InlineData("", "", 0)] + [InlineData("abCD", "abcF", 3)] + [InlineData("ab#\u0080-$%", "Ab#\u0080-$%", 7)] + public void UnsafeAsciiIgnoreCaseEquals_ReturnsTrue(string x, string y, int length) + { + // Arrange + var spanX = x.AsSpan(); + var spanY = y.AsSpan(); + + // Act + var result = Ascii.AsciiIgnoreCaseEquals(spanX, spanY, length); + + // Assert + Assert.True(result); + } + + [Theory] + [InlineData("abcD", "abCE", 4)] + [InlineData("ab#\u0080-$%", "Ab#\u0081-$%", 7)] + public void UnsafeAsciiIgnoreCaseEquals_ReturnsFalse(string x, string y, int length) + { + // Arrange + var spanX = x.AsSpan(); + var spanY = y.AsSpan(); + + // Act + var result = Ascii.AsciiIgnoreCaseEquals(spanX, spanY, length); + + // Assert + Assert.False(result); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/BarebonesMatcher.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/BarebonesMatcher.cs new file mode 100644 index 0000000000..f1501b423f --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/BarebonesMatcher.cs @@ -0,0 +1,136 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // A test-only matcher implementation - used as a baseline for more compilated + // perf tests. The idea with this matcher is that we can cheat on the requirements + // to establish a lower bound for perf comparisons. + internal class BarebonesMatcher : Matcher + { + public readonly InnerMatcher[] Matchers; + + public BarebonesMatcher(InnerMatcher[] matchers) + { + Matchers = matchers; + } + + public override Task MatchAsync(HttpContext httpContext, EndpointSelectorContext context) + { + if (httpContext == null) + { + throw new ArgumentNullException(nameof(httpContext)); + } + + if (context == null) + { + throw new ArgumentNullException(nameof(context)); + } + + var path = httpContext.Request.Path.Value; + for (var i = 0; i < Matchers.Length; i++) + { + if (Matchers[i].TryMatch(path)) + { + context.Endpoint = Matchers[i].Endpoint; + context.RouteValues = new RouteValueDictionary(); + } + } + + return Task.CompletedTask; + } + + public sealed class InnerMatcher : Matcher + { + public readonly RouteEndpoint Endpoint; + + private readonly string[] _segments; + private readonly Candidate[] _candidates; + + public InnerMatcher(string[] segments, RouteEndpoint endpoint) + { + _segments = segments; + Endpoint = endpoint; + + _candidates = new Candidate[] { new Candidate(endpoint), }; + } + + public bool TryMatch(string path) + { + var segment = 0; + + var start = 1; // PathString always has a leading slash + var end = 0; + while ((end = path.IndexOf('/', start)) >= 0) + { + var comparand = _segments.Length > segment ? _segments[segment] : null; + if ((comparand == null && end - start == 0) || + (comparand != null && + (comparand.Length != end - start || + string.Compare( + path, + start, + comparand, + 0, + comparand.Length, + StringComparison.OrdinalIgnoreCase) != 0))) + { + return false; + } + + start = end + 1; + segment++; + } + + // residue + var length = path.Length - start; + if (length > 0) + { + var comparand = _segments.Length > segment ? _segments[segment] : null; + if (comparand != null && + (comparand.Length != length || + string.Compare( + path, + start, + comparand, + 0, + comparand.Length, + StringComparison.OrdinalIgnoreCase) != 0)) + { + return false; + } + + segment++; + } + + return segment == _segments.Length; + } + + internal Candidate[] FindCandidateSet(string path, ReadOnlySpan segments) + { + if (TryMatch(path)) + { + return _candidates; + } + + return Array.Empty(); + } + + public override Task MatchAsync(HttpContext httpContext, EndpointSelectorContext context) + { + if (TryMatch(httpContext.Request.Path.Value)) + { + context.Endpoint = Endpoint; + context.RouteValues = new RouteValueDictionary(); + } + + return Task.CompletedTask; + } + } + } +} \ No newline at end of file diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/BarebonesMatcherBuilder.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/BarebonesMatcherBuilder.cs new file mode 100644 index 0000000000..d55d0dcdf0 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/BarebonesMatcherBuilder.cs @@ -0,0 +1,36 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using System.Linq; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.AspNetCore.Routing.Template; +using static Microsoft.AspNetCore.Routing.Matching.BarebonesMatcher; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal class BarebonesMatcherBuilder : MatcherBuilder + { + private List _endpoints = new List(); + + public override void AddEndpoint(RouteEndpoint endpoint) + { + _endpoints.Add(endpoint); + } + + public override Matcher Build() + { + var matchers = new InnerMatcher[_endpoints.Count]; + for (var i = 0; i < _endpoints.Count; i++) + { + var endpoint = _endpoints[i]; + var pathSegments = endpoint.RoutePattern.PathSegments + .Select(s => s.IsSimple && s.Parts[0] is RoutePatternLiteralPart literalPart ? literalPart.Content : null) + .ToArray(); + matchers[i] = new InnerMatcher(pathSegments, _endpoints[i]); + } + + return new BarebonesMatcher(matchers); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/BarebonesMatcherConformanceTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/BarebonesMatcherConformanceTest.cs new file mode 100644 index 0000000000..a8745ef2ed --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/BarebonesMatcherConformanceTest.cs @@ -0,0 +1,59 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Threading.Tasks; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class BarebonesMatcherConformanceTest : MatcherConformanceTest + { + // Route values not supported + [Fact] + public override Task Match_SingleParameter() + { + return Task.CompletedTask; + } + + // Route values not supported + [Fact] + public override Task Match_SingleParameter_TrailingSlash() + { + return Task.CompletedTask; + } + + // Route values not supported + [Fact] + public override Task Match_SingleParameter_WierdNames() + { + return Task.CompletedTask; + } + + // Route values not supported + [Theory] + [InlineData(null, null, null, null)] + public override Task Match_MultipleParameters(string template, string path, string[] keys, string[] values) + { + GC.KeepAlive(new object [] { template, path, keys, values }); + return Task.CompletedTask; + } + + // Route constraints not supported + [Fact] + public override Task Match_Constraint() + { + return Task.CompletedTask; + } + + internal override Matcher CreateMatcher(params RouteEndpoint[] endpoints) + { + var builder = new BarebonesMatcherBuilder(); + for (var i = 0; i < endpoints.Length; i++) + { + builder.AddEndpoint(endpoints[i]); + } + return builder.Build(); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/CandidateSetTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/CandidateSetTest.cs new file mode 100644 index 0000000000..470103e283 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/CandidateSetTest.cs @@ -0,0 +1,127 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Linq; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.Extensions.Logging.Abstractions; +using Moq; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class CandidateSetTest + { + // We special case low numbers of candidates, so we want to verify that it works correctly for a variety + // of input sizes. + [Theory] + [InlineData(0)] + [InlineData(1)] + [InlineData(2)] + [InlineData(3)] + [InlineData(4)] + [InlineData(5)] // this is the break-point where we start to use a list. + [InlineData(6)] + [InlineData(31)] + [InlineData(32)] // this is the break point where we use a BitArray + [InlineData(33)] + public void Create_CreatesCandidateSet(int count) + { + // Arrange + var endpoints = new RouteEndpoint[count]; + for (var i = 0; i < endpoints.Length; i++) + { + endpoints[i] = CreateEndpoint($"/{i}"); + } + + var builder = CreateDfaMatcherBuilder(); + var candidates = builder.CreateCandidates(endpoints); + + // Act + var candidateSet = new CandidateSet(candidates); + + // Assert + for (var i = 0; i < candidateSet.Count; i++) + { + ref var state = ref candidateSet[i]; + Assert.True(candidateSet.IsValidCandidate(i)); + Assert.Same(endpoints[i], state.Endpoint); + Assert.Equal(candidates[i].Score, state.Score); + Assert.Null(state.Values); + + candidateSet.SetValidity(i, false); + Assert.False(candidateSet.IsValidCandidate(i)); + } + } + + // We special case low numbers of candidates, so we want to verify that it works correctly for a variety + // of input sizes. + [Theory] + [InlineData(0)] + [InlineData(1)] + [InlineData(2)] + [InlineData(3)] + [InlineData(4)] + [InlineData(5)] // this is the break-point where we start to use a list. + [InlineData(6)] + [InlineData(31)] + [InlineData(32)] // this is the break point where we use a BitArray + [InlineData(33)] + public void Create_CreatesCandidateSet_TestConstructor(int count) + { + // Arrange + var endpoints = new RouteEndpoint[count]; + for (var i = 0; i < endpoints.Length; i++) + { + endpoints[i] = CreateEndpoint($"/{i}"); + } + + var values = new RouteValueDictionary[count]; + for (var i = 0; i < endpoints.Length; i++) + { + values[i] = new RouteValueDictionary() + { + { "i", i } + }; + } + + // Act + var candidateSet = new CandidateSet(endpoints, values, Enumerable.Range(0, count).ToArray()); + + // Assert + for (var i = 0; i < candidateSet.Count; i++) + { + ref var state = ref candidateSet[i]; + Assert.True(candidateSet.IsValidCandidate(i)); + Assert.Same(endpoints[i], state.Endpoint); + Assert.Equal(i, state.Score); + Assert.NotNull(state.Values); + Assert.Equal(i, state.Values["i"]); + + candidateSet.SetValidity(i, false); + Assert.False(candidateSet.IsValidCandidate(i)); + } + } + + private RouteEndpoint CreateEndpoint(string template) + { + return new RouteEndpoint( + TestConstants.EmptyRequestDelegate, + RoutePatternFactory.Parse(template), + 0, + EndpointMetadataCollection.Empty, + "test"); + } + + private static DfaMatcherBuilder CreateDfaMatcherBuilder(params MatcherPolicy[] policies) + { + var dataSource = new CompositeEndpointDataSource(Array.Empty()); + return new DfaMatcherBuilder( + NullLoggerFactory.Instance, + Mock.Of(), + Mock.Of(), + policies); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/DataSourceDependentMatcherTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/DataSourceDependentMatcherTest.cs new file mode 100644 index 0000000000..3559dd529b --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/DataSourceDependentMatcherTest.cs @@ -0,0 +1,168 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.AspNetCore.Routing.TestObjects; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class DataSourceDependentMatcherTest + { + [Fact] + public void Matcher_Initializes_InConstructor() + { + // Arrange + var dataSource = new DynamicEndpointDataSource(); + + // Act + var matcher = new DataSourceDependentMatcher(dataSource, TestMatcherBuilder.Create); + + // Assert + var inner = Assert.IsType(matcher.CurrentMatcher); + Assert.Empty(inner.Endpoints); + } + + [Fact] + public void Matcher_Reinitializes_WhenDataSourceChanges() + { + // Arrange + var dataSource = new DynamicEndpointDataSource(); + var matcher = new DataSourceDependentMatcher(dataSource, TestMatcherBuilder.Create); + + var endpoint = new RouteEndpoint( + TestConstants.EmptyRequestDelegate, + RoutePatternFactory.Parse("a/b/c"), + 0, + EndpointMetadataCollection.Empty, + "test"); + + // Act + dataSource.AddEndpoint(endpoint); + + // Assert + var inner = Assert.IsType(matcher.CurrentMatcher); + Assert.Collection( + inner.Endpoints, + e => Assert.Same(endpoint, e)); + } + + [Fact] + public void Matcher_Ignores_NonRouteEndpoint() + { + // Arrange + var dataSource = new DynamicEndpointDataSource(); + var endpoint = new Endpoint(TestConstants.EmptyRequestDelegate, EndpointMetadataCollection.Empty, "test"); + dataSource.AddEndpoint(endpoint); + + // Act + var matcher = new DataSourceDependentMatcher(dataSource, TestMatcherBuilder.Create); + + // Assert + var inner = Assert.IsType(matcher.CurrentMatcher); + Assert.Empty(inner.Endpoints); + } + + [Fact] + public void Matcher_Ignores_SuppressedEndpoint() + { + // Arrange + var dataSource = new DynamicEndpointDataSource(); + var endpoint = new RouteEndpoint( + TestConstants.EmptyRequestDelegate, + RoutePatternFactory.Parse("/"), + 0, + new EndpointMetadataCollection(new SuppressMatchingMetadata()), + "test"); + dataSource.AddEndpoint(endpoint); + + // Act + var matcher = new DataSourceDependentMatcher(dataSource, TestMatcherBuilder.Create); + + // Assert + var inner = Assert.IsType(matcher.CurrentMatcher); + Assert.Empty(inner.Endpoints); + } + + [Fact] + public void Matcher_UnsuppressedEndpoint_IsUsed() + { + // Arrange + var dataSource = new DynamicEndpointDataSource(); + var endpoint = new RouteEndpoint( + TestConstants.EmptyRequestDelegate, + RoutePatternFactory.Parse("/"), + 0, + new EndpointMetadataCollection(new SuppressMatchingMetadata(), new EncourageMatchingMetadata()), + "test"); + dataSource.AddEndpoint(endpoint); + + // Act + var matcher = new DataSourceDependentMatcher(dataSource, TestMatcherBuilder.Create); + + // Assert + var inner = Assert.IsType(matcher.CurrentMatcher); + Assert.Same(endpoint, Assert.Single(inner.Endpoints)); + } + + [Fact] + public void Cache_Reinitializes_WhenDataSourceChanges() + { + // Arrange + var count = 0; + + var dataSource = new DynamicEndpointDataSource(); + var cache = new DataSourceDependentCache(dataSource, (endpoints) => + { + count++; + return $"hello, {count}!"; + }); + + cache.EnsureInitialized(); + Assert.Equal("hello, 1!", cache.Value); + + // Act + dataSource.AddEndpoint(null); + + // Assert + Assert.Equal(2, count); + Assert.Equal("hello, 2!", cache.Value); + } + + private class TestMatcherBuilder : MatcherBuilder + { + public static Func Create = () => new TestMatcherBuilder(); + + private List Endpoints { get; } = new List(); + + public override void AddEndpoint(RouteEndpoint endpoint) + { + Endpoints.Add(endpoint); + } + + public override Matcher Build() + { + return new TestMatcher() { Endpoints = Endpoints, }; + } + } + + private class TestMatcher : Matcher + { + public IReadOnlyList Endpoints { get; set; } + + public override Task MatchAsync(HttpContext httpContext, EndpointSelectorContext context) + { + throw new NotImplementedException(); + } + } + + private class EncourageMatchingMetadata : ISuppressMatchingMetadata + { + public bool SuppressMatching => false; + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/DefaultEndpointSelectorTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/DefaultEndpointSelectorTest.cs new file mode 100644 index 0000000000..7c5bdbdd95 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/DefaultEndpointSelectorTest.cs @@ -0,0 +1,207 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; +using Microsoft.AspNetCore.Routing.Patterns; +using Moq; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class DefaultEndpointSelectorTest + { + [Fact] + public async Task SelectAsync_NoCandidates_DoesNothing() + { + // Arrange + var endpoints = new RouteEndpoint[] { }; + var scores = new int[] { }; + var candidateSet = CreateCandidateSet(endpoints, scores); + + var (httpContext, context) = CreateContext(); + var selector = CreateSelector(); + + // Act + await selector.SelectAsync(httpContext, context, candidateSet); + + // Assert + Assert.Null(context.Endpoint); + } + + [Fact] + public async Task SelectAsync_NoValidCandidates_DoesNothing() + { + // Arrange + var endpoints = new RouteEndpoint[] { CreateEndpoint("/test"), }; + var scores = new int[] { 0, }; + var candidateSet = CreateCandidateSet(endpoints, scores); + + candidateSet[0].Values = new RouteValueDictionary(); + candidateSet.SetValidity(0, false); + + var (httpContext, context) = CreateContext(); + var selector = CreateSelector(); + + // Act + await selector.SelectAsync(httpContext, context, candidateSet); + + // Assert + Assert.Null(context.Endpoint); + } + + [Fact] + public async Task SelectAsync_SingleCandidate_ChoosesCandidate() + { + // Arrange + var endpoints = new RouteEndpoint[] { CreateEndpoint("/test"), }; + var scores = new int[] { 0, }; + var candidateSet = CreateCandidateSet(endpoints, scores); + + candidateSet[0].Values = new RouteValueDictionary(); + candidateSet.SetValidity(0, true); + + var (httpContext, context) = CreateContext(); + var selector = CreateSelector(); + + // Act + await selector.SelectAsync(httpContext, context, candidateSet); + + // Assert + Assert.Same(endpoints[0], context.Endpoint); + } + + [Fact] + public async Task SelectAsync_SingleValidCandidate_ChoosesCandidate() + { + // Arrange + var endpoints = new RouteEndpoint[] { CreateEndpoint("/test1"), CreateEndpoint("/test2"), }; + var scores = new int[] { 0, 0 }; + var candidateSet = CreateCandidateSet(endpoints, scores); + + candidateSet.SetValidity(0, false); + candidateSet.SetValidity(1, true); + + var (httpContext, context) = CreateContext(); + var selector = CreateSelector(); + + // Act + await selector.SelectAsync(httpContext, context, candidateSet); + + // Assert + Assert.Same(endpoints[1], context.Endpoint); + } + + [Fact] + public async Task SelectAsync_SingleValidCandidateInGroup_ChoosesCandidate() + { + // Arrange + var endpoints = new RouteEndpoint[] { CreateEndpoint("/test1"), CreateEndpoint("/test2"), CreateEndpoint("/test3"), }; + var scores = new int[] { 0, 0, 1 }; + var candidateSet = CreateCandidateSet(endpoints, scores); + + candidateSet.SetValidity(0, false); + candidateSet.SetValidity(1, true); + candidateSet.SetValidity(2, true); + + var (httpContext, context) = CreateContext(); + var selector = CreateSelector(); + + // Act + await selector.SelectAsync(httpContext, context, candidateSet); + + // Assert + Assert.Same(endpoints[1], context.Endpoint); + } + + [Fact] + public async Task SelectAsync_ManyGroupsLastCandidate_ChoosesCandidate() + { + // Arrange + var endpoints = new RouteEndpoint[] + { + CreateEndpoint("/test1"), + CreateEndpoint("/test2"), + CreateEndpoint("/test3"), + CreateEndpoint("/test4"), + CreateEndpoint("/test5"), + }; + var scores = new int[] { 0, 1, 2, 3, 4 }; + var candidateSet = CreateCandidateSet(endpoints, scores); + + candidateSet.SetValidity(0, false); + candidateSet.SetValidity(1, false); + candidateSet.SetValidity(2, false); + candidateSet.SetValidity(3, false); + candidateSet.SetValidity(4, true); + + var (httpContext, context) = CreateContext(); + var selector = CreateSelector(); + + // Act + await selector.SelectAsync(httpContext, context, candidateSet); + + // Assert + Assert.Same(endpoints[4], context.Endpoint); + } + + [Fact] + public async Task SelectAsync_MultipleValidCandidatesInGroup_ReportsAmbiguity() + { + // Arrange + var endpoints = new RouteEndpoint[] { CreateEndpoint("/test1"), CreateEndpoint("/test2"), CreateEndpoint("/test3"), }; + var scores = new int[] { 0, 1, 1 }; + var candidateSet = CreateCandidateSet(endpoints, scores); + + candidateSet.SetValidity(0, false); + candidateSet.SetValidity(1, true); + candidateSet.SetValidity(2, true); + + var (httpContext, context) = CreateContext(); + var selector = CreateSelector(); + + // Act + var ex = await Assert.ThrowsAsync(() => selector.SelectAsync(httpContext, context, candidateSet)); + + // Assert + Assert.Equal( +@"The request matched multiple endpoints. Matches: + +test: /test2 +test: /test3", ex.Message); + Assert.Null(context.Endpoint); + } + + private static (HttpContext httpContext, EndpointSelectorContext context) CreateContext() + { + var context = new EndpointSelectorContext(); + var httpContext = new DefaultHttpContext(); + httpContext.Features.Set(context); + httpContext.Features.Set(context); + + return (httpContext, context); + } + + private static RouteEndpoint CreateEndpoint(string template) + { + return new RouteEndpoint( + TestConstants.EmptyRequestDelegate, + RoutePatternFactory.Parse(template), + 0, + EndpointMetadataCollection.Empty, + $"test: {template}"); + } + + private static CandidateSet CreateCandidateSet(RouteEndpoint[] endpoints, int[] scores) + { + return new CandidateSet(endpoints, new RouteValueDictionary[endpoints.Length], scores); + } + + private static DefaultEndpointSelector CreateSelector() + { + return new DefaultEndpointSelector(); + } + } +} \ No newline at end of file diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/DfaMatcherBuilderTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/DfaMatcherBuilderTest.cs new file mode 100644 index 0000000000..2eff433602 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/DfaMatcherBuilderTest.cs @@ -0,0 +1,1104 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Constraints; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.Extensions.Logging.Abstractions; +using Microsoft.Extensions.Options; +using Moq; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class DfaMatcherBuilderTest + { + [Fact] + public void BuildDfaTree_SingleEndpoint_Empty() + { + // Arrange + var builder = CreateDfaMatcherBuilder(); + + var endpoint = CreateEndpoint("/"); + builder.AddEndpoint(endpoint); + + // Act + var root = builder.BuildDfaTree(); + + // Assert + Assert.Same(endpoint, Assert.Single(root.Matches)); + Assert.Null(root.Parameters); + Assert.Null(root.Literals); + } + + [Fact] + public void BuildDfaTree_SingleEndpoint_Literals() + { + // Arrange + var builder = CreateDfaMatcherBuilder(); + + var endpoint = CreateEndpoint("a/b/c"); + builder.AddEndpoint(endpoint); + + // Act + var root = builder.BuildDfaTree(); + + // Assert + Assert.Null(root.Matches); + Assert.Null(root.Parameters); + + var next = Assert.Single(root.Literals); + Assert.Equal("a", next.Key); + + var a = next.Value; + Assert.Null(a.Matches); + Assert.Null(a.Parameters); + + next = Assert.Single(a.Literals); + Assert.Equal("b", next.Key); + + var b = next.Value; + Assert.Null(b.Matches); + Assert.Null(b.Parameters); + + next = Assert.Single(b.Literals); + Assert.Equal("c", next.Key); + + var c = next.Value; + Assert.Same(endpoint, Assert.Single(c.Matches)); + Assert.Null(c.Parameters); + Assert.Null(c.Literals); + } + + [Fact] + public void BuildDfaTree_SingleEndpoint_Parameters() + { + // Arrange + var builder = CreateDfaMatcherBuilder(); + + var endpoint = CreateEndpoint("{a}/{b}/{c}"); + builder.AddEndpoint(endpoint); + + // Act + var root = builder.BuildDfaTree(); + + // Assert + Assert.Null(root.Matches); + Assert.Null(root.Literals); + + var a = root.Parameters; + Assert.Null(a.Matches); + Assert.Null(a.Literals); + + var b = a.Parameters; + Assert.Null(b.Matches); + Assert.Null(b.Literals); + + var c = b.Parameters; + Assert.Same(endpoint, Assert.Single(c.Matches)); + Assert.Null(c.Parameters); + Assert.Null(c.Literals); + } + + [Fact] + public void BuildDfaTree_SingleEndpoint_CatchAll() + { + // Arrange + var builder = CreateDfaMatcherBuilder(); + + var endpoint = CreateEndpoint("{a}/{*b}"); + builder.AddEndpoint(endpoint); + + // Act + var root = builder.BuildDfaTree(); + + // Assert + Assert.Null(root.Matches); + Assert.Null(root.Literals); + + var a = root.Parameters; + + // The catch all can match a path like '/a' + Assert.Same(endpoint, Assert.Single(a.Matches)); + Assert.Null(a.Literals); + Assert.Null(a.Parameters); + + // Catch-all nodes include an extra transition that loops to process + // extra segments. + var catchAll = a.CatchAll; + Assert.Same(endpoint, Assert.Single(catchAll.Matches)); + Assert.Null(catchAll.Literals); + Assert.Same(catchAll, catchAll.Parameters); + Assert.Same(catchAll, catchAll.CatchAll); + } + + [Fact] + public void BuildDfaTree_SingleEndpoint_CatchAllAtRoot() + { + // Arrange + var builder = CreateDfaMatcherBuilder(); + + var endpoint = CreateEndpoint("{*a}"); + builder.AddEndpoint(endpoint); + + // Act + var root = builder.BuildDfaTree(); + + // Assert + Assert.Same(endpoint, Assert.Single(root.Matches)); + Assert.Null(root.Literals); + + // Catch-all nodes include an extra transition that loops to process + // extra segments. + var catchAll = root.CatchAll; + Assert.Same(endpoint, Assert.Single(catchAll.Matches)); + Assert.Null(catchAll.Literals); + Assert.Same(catchAll, catchAll.Parameters); + } + + [Fact] + public void BuildDfaTree_MultipleEndpoint_LiteralAndLiteral() + { + // Arrange + var builder = CreateDfaMatcherBuilder(); + + var endpoint1 = CreateEndpoint("a/b1/c"); + builder.AddEndpoint(endpoint1); + + var endpoint2 = CreateEndpoint("a/b2/c"); + builder.AddEndpoint(endpoint2); + + // Act + var root = builder.BuildDfaTree(); + + // Assert + Assert.Null(root.Matches); + Assert.Null(root.Parameters); + + var next = Assert.Single(root.Literals); + Assert.Equal("a", next.Key); + + var a = next.Value; + Assert.Null(a.Matches); + + Assert.Equal(2, a.Literals.Count); + + var b1 = a.Literals["b1"]; + Assert.Null(b1.Matches); + Assert.Null(b1.Parameters); + + next = Assert.Single(b1.Literals); + Assert.Equal("c", next.Key); + + var c1 = next.Value; + Assert.Same(endpoint1, Assert.Single(c1.Matches)); + Assert.Null(c1.Parameters); + Assert.Null(c1.Literals); + + var b2 = a.Literals["b2"]; + Assert.Null(b2.Matches); + Assert.Null(b2.Parameters); + + next = Assert.Single(b2.Literals); + Assert.Equal("c", next.Key); + + var c2 = next.Value; + Assert.Same(endpoint2, Assert.Single(c2.Matches)); + Assert.Null(c2.Parameters); + Assert.Null(c2.Literals); + } + + [Fact] + public void BuildDfaTree_MultipleEndpoint_LiteralDifferentCase() + { + // Arrange + var builder = CreateDfaMatcherBuilder(); + + var endpoint1 = CreateEndpoint("a/b1/c"); + builder.AddEndpoint(endpoint1); + + var endpoint2 = CreateEndpoint("A/b2/c"); + builder.AddEndpoint(endpoint2); + + // Act + var root = builder.BuildDfaTree(); + + // Assert + Assert.Null(root.Matches); + Assert.Null(root.Parameters); + + var next = Assert.Single(root.Literals); + Assert.Equal("a", next.Key); + + var a = next.Value; + Assert.Null(a.Matches); + + Assert.Equal(2, a.Literals.Count); + + var b1 = a.Literals["b1"]; + Assert.Null(b1.Matches); + Assert.Null(b1.Parameters); + + next = Assert.Single(b1.Literals); + Assert.Equal("c", next.Key); + + var c1 = next.Value; + Assert.Same(endpoint1, Assert.Single(c1.Matches)); + Assert.Null(c1.Parameters); + Assert.Null(c1.Literals); + + var b2 = a.Literals["b2"]; + Assert.Null(b2.Matches); + Assert.Null(b2.Parameters); + + next = Assert.Single(b2.Literals); + Assert.Equal("c", next.Key); + + var c2 = next.Value; + Assert.Same(endpoint2, Assert.Single(c2.Matches)); + Assert.Null(c2.Parameters); + Assert.Null(c2.Literals); + } + + [Fact] + public void BuildDfaTree_MultipleEndpoint_LiteralAndParameter() + { + // Arrange + var builder = CreateDfaMatcherBuilder(); + + var endpoint1 = CreateEndpoint("a/b/c"); + builder.AddEndpoint(endpoint1); + + var endpoint2 = CreateEndpoint("a/{b}/c"); + builder.AddEndpoint(endpoint2); + + // Act + var root = builder.BuildDfaTree(); + + // Assert + Assert.Null(root.Matches); + Assert.Null(root.Parameters); + + var next = Assert.Single(root.Literals); + Assert.Equal("a", next.Key); + + var a = next.Value; + Assert.Null(a.Matches); + + next = Assert.Single(a.Literals); + Assert.Equal("b", next.Key); + + var b = next.Value; + Assert.Null(b.Matches); + Assert.Null(b.Parameters); + + next = Assert.Single(b.Literals); + Assert.Equal("c", next.Key); + + var c1 = next.Value; + Assert.Collection( + c1.Matches, + e => Assert.Same(endpoint1, e), + e => Assert.Same(endpoint2, e)); + Assert.Null(c1.Parameters); + Assert.Null(c1.Literals); + + var b2 = a.Parameters; + Assert.Null(b2.Matches); + Assert.Null(b2.Parameters); + + next = Assert.Single(b2.Literals); + Assert.Equal("c", next.Key); + + var c2 = next.Value; + Assert.Same(endpoint2, Assert.Single(c2.Matches)); + Assert.Null(c2.Parameters); + Assert.Null(c2.Literals); + } + + [Fact] + public void BuildDfaTree_MultipleEndpoint_ParameterAndParameter() + { + // Arrange + var builder = CreateDfaMatcherBuilder(); + + var endpoint1 = CreateEndpoint("a/{b1}/c"); + builder.AddEndpoint(endpoint1); + + var endpoint2 = CreateEndpoint("a/{b2}/c"); + builder.AddEndpoint(endpoint2); + + // Act + var root = builder.BuildDfaTree(); + + // Assert + Assert.Null(root.Matches); + Assert.Null(root.Parameters); + + var next = Assert.Single(root.Literals); + Assert.Equal("a", next.Key); + + var a = next.Value; + Assert.Null(a.Matches); + Assert.Null(a.Literals); + + var b = a.Parameters; + Assert.Null(b.Matches); + Assert.Null(b.Parameters); + + next = Assert.Single(b.Literals); + Assert.Equal("c", next.Key); + + var c = next.Value; + Assert.Collection( + c.Matches, + e => Assert.Same(endpoint1, e), + e => Assert.Same(endpoint2, e)); + Assert.Null(c.Parameters); + Assert.Null(c.Literals); + } + + [Fact] + public void BuildDfaTree_MultipleEndpoint_LiteralAndCatchAll() + { + // Arrange + var builder = CreateDfaMatcherBuilder(); + + var endpoint1 = CreateEndpoint("a/b/c"); + builder.AddEndpoint(endpoint1); + + var endpoint2 = CreateEndpoint("a/{*b}"); + builder.AddEndpoint(endpoint2); + + // Act + var root = builder.BuildDfaTree(); + + // Assert + Assert.Null(root.Matches); + Assert.Null(root.Parameters); + + var next = Assert.Single(root.Literals); + Assert.Equal("a", next.Key); + + var a = next.Value; + Assert.Same(endpoint2, Assert.Single(a.Matches)); + + next = Assert.Single(a.Literals); + Assert.Equal("b", next.Key); + + var b1 = next.Value; + Assert.Same(endpoint2, Assert.Single(a.Matches)); + Assert.Null(b1.Parameters); + + next = Assert.Single(b1.Literals); + Assert.Equal("c", next.Key); + + var c1 = next.Value; + Assert.Collection( + c1.Matches, + e => Assert.Same(endpoint1, e), + e => Assert.Same(endpoint2, e)); + Assert.Null(c1.Parameters); + Assert.Null(c1.Literals); + + var catchAll = a.CatchAll; + Assert.Same(endpoint2, Assert.Single(catchAll.Matches)); + Assert.Same(catchAll, catchAll.Parameters); + Assert.Same(catchAll, catchAll.CatchAll); + } + + [Fact] + public void BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll() + { + // Arrange + var builder = CreateDfaMatcherBuilder(); + + var endpoint1 = CreateEndpoint("a/{b}/c"); + builder.AddEndpoint(endpoint1); + + var endpoint2 = CreateEndpoint("a/{*b}"); + builder.AddEndpoint(endpoint2); + + // Act + var root = builder.BuildDfaTree(); + + // Assert + Assert.Null(root.Matches); + Assert.Null(root.Parameters); + + var next = Assert.Single(root.Literals); + Assert.Equal("a", next.Key); + + var a = next.Value; + Assert.Same(endpoint2, Assert.Single(a.Matches)); + Assert.Null(a.Literals); + + var b1 = a.Parameters; + Assert.Same(endpoint2, Assert.Single(a.Matches)); + Assert.Null(b1.Parameters); + + next = Assert.Single(b1.Literals); + Assert.Equal("c", next.Key); + + var c1 = next.Value; + Assert.Collection( + c1.Matches, + e => Assert.Same(endpoint1, e), + e => Assert.Same(endpoint2, e)); + Assert.Null(c1.Parameters); + Assert.Null(c1.Literals); + + var catchAll = a.CatchAll; + Assert.Same(endpoint2, Assert.Single(catchAll.Matches)); + Assert.Same(catchAll, catchAll.Parameters); + Assert.Same(catchAll, catchAll.CatchAll); + } + + [Fact] + public void BuildDfaTree_WithPolicies() + { + // Arrange + var builder = CreateDfaMatcherBuilder(new TestMetadata1MatcherPolicy(), new TestMetadata2MatcherPolicy()); + + var endpoint1 = CreateEndpoint("/a", metadata: new object[] { new TestMetadata1(0), new TestMetadata2(true), }); + builder.AddEndpoint(endpoint1); + + // Act + var root = builder.BuildDfaTree(); + + // Assert + Assert.Null(root.Matches); + Assert.Null(root.Parameters); + + var next = Assert.Single(root.Literals); + Assert.Equal("a", next.Key); + + var a = next.Value; + Assert.Empty(a.Matches); + Assert.IsType(a.NodeBuilder); + Assert.Collection( + a.PolicyEdges.OrderBy(e => e.Key), + e => Assert.Equal(0, e.Key)); + + var test1_0 = a.PolicyEdges[0]; + Assert.Empty(a.Matches); + Assert.IsType(test1_0.NodeBuilder); + Assert.Collection( + test1_0.PolicyEdges.OrderBy(e => e.Key), + e => Assert.Equal(true, e.Key)); + + var test2_true = test1_0.PolicyEdges[true]; + Assert.Same(endpoint1, Assert.Single(test2_true.Matches)); + Assert.Null(test2_true.NodeBuilder); + Assert.Null(test2_true.PolicyEdges); + } + + [Fact] + public void BuildDfaTree_WithPolicies_AndBranches() + { + // Arrange + var builder = CreateDfaMatcherBuilder(new TestMetadata1MatcherPolicy(), new TestMetadata2MatcherPolicy()); + + var endpoint1 = CreateEndpoint("/a", metadata: new object[] { new TestMetadata1(0), new TestMetadata2(true), }); + builder.AddEndpoint(endpoint1); + + var endpoint2 = CreateEndpoint("/a", metadata: new object[] { new TestMetadata1(1), new TestMetadata2(true), }); + builder.AddEndpoint(endpoint2); + + var endpoint3 = CreateEndpoint("/a", metadata: new object[] { new TestMetadata1(1), new TestMetadata2(false), }); + builder.AddEndpoint(endpoint3); + + // Act + var root = builder.BuildDfaTree(); + + // Assert + Assert.Null(root.Matches); + Assert.Null(root.Parameters); + + var next = Assert.Single(root.Literals); + Assert.Equal("a", next.Key); + + var a = next.Value; + Assert.Empty(a.Matches); + Assert.IsType(a.NodeBuilder); + Assert.Collection( + a.PolicyEdges.OrderBy(e => e.Key), + e => Assert.Equal(0, e.Key), + e => Assert.Equal(1, e.Key)); + + var test1_0 = a.PolicyEdges[0]; + Assert.Empty(test1_0.Matches); + Assert.IsType(test1_0.NodeBuilder); + Assert.Collection( + test1_0.PolicyEdges.OrderBy(e => e.Key), + e => Assert.Equal(true, e.Key)); + + var test2_true = test1_0.PolicyEdges[true]; + Assert.Same(endpoint1, Assert.Single(test2_true.Matches)); + Assert.Null(test2_true.NodeBuilder); + Assert.Null(test2_true.PolicyEdges); + + var test1_1 = a.PolicyEdges[1]; + Assert.Empty(test1_1.Matches); + Assert.IsType(test1_1.NodeBuilder); + Assert.Collection( + test1_1.PolicyEdges.OrderBy(e => e.Key), + e => Assert.Equal(false, e.Key), + e => Assert.Equal(true, e.Key)); + + test2_true = test1_1.PolicyEdges[true]; + Assert.Same(endpoint2, Assert.Single(test2_true.Matches)); + Assert.Null(test2_true.NodeBuilder); + Assert.Null(test2_true.PolicyEdges); + + var test2_false = test1_1.PolicyEdges[false]; + Assert.Same(endpoint3, Assert.Single(test2_false.Matches)); + Assert.Null(test2_false.NodeBuilder); + Assert.Null(test2_false.PolicyEdges); + } + + [Fact] + public void BuildDfaTree_WithPolicies_AndBranches_FirstPolicySkipped() + { + // Arrange + var builder = CreateDfaMatcherBuilder(new TestMetadata1MatcherPolicy(), new TestMetadata2MatcherPolicy()); + + var endpoint1 = CreateEndpoint("/a", metadata: new object[] { new TestMetadata2(true), }); + builder.AddEndpoint(endpoint1); + + var endpoint2 = CreateEndpoint("/a", metadata: new object[] { new TestMetadata2(true), }); + builder.AddEndpoint(endpoint2); + + var endpoint3 = CreateEndpoint("/a", metadata: new object[] { new TestMetadata2(false), }); + builder.AddEndpoint(endpoint3); + + // Act + var root = builder.BuildDfaTree(); + + // Assert + Assert.Null(root.Matches); + Assert.Null(root.Parameters); + + var next = Assert.Single(root.Literals); + Assert.Equal("a", next.Key); + + var a = next.Value; + Assert.Empty(a.Matches); + Assert.IsType(a.NodeBuilder); + Assert.Collection( + a.PolicyEdges.OrderBy(e => e.Key), + e => Assert.Equal(false, e.Key), + e => Assert.Equal(true, e.Key)); + + var test2_true = a.PolicyEdges[true]; + Assert.Equal(new[] { endpoint1, endpoint2, }, test2_true.Matches); + Assert.Null(test2_true.NodeBuilder); + Assert.Null(test2_true.PolicyEdges); + + var test2_false = a.PolicyEdges[false]; + Assert.Equal(new[] { endpoint3, }, test2_false.Matches); + Assert.Null(test2_false.NodeBuilder); + Assert.Null(test2_false.PolicyEdges); + } + + [Fact] + public void BuildDfaTree_WithPolicies_AndBranches_SecondSkipped() + { + // Arrange + var builder = CreateDfaMatcherBuilder(new TestMetadata1MatcherPolicy(), new TestMetadata2MatcherPolicy()); + + var endpoint1 = CreateEndpoint("/a", metadata: new object[] { new TestMetadata1(0), }); + builder.AddEndpoint(endpoint1); + + var endpoint2 = CreateEndpoint("/a", metadata: new object[] { new TestMetadata1(1), }); + builder.AddEndpoint(endpoint2); + + var endpoint3 = CreateEndpoint("/a", metadata: new object[] { new TestMetadata1(1), }); + builder.AddEndpoint(endpoint3); + + // Act + var root = builder.BuildDfaTree(); + + // Assert + Assert.Null(root.Matches); + Assert.Null(root.Parameters); + + var next = Assert.Single(root.Literals); + Assert.Equal("a", next.Key); + + var a = next.Value; + Assert.Empty(a.Matches); + Assert.IsType(a.NodeBuilder); + Assert.Collection( + a.PolicyEdges.OrderBy(e => e.Key), + e => Assert.Equal(0, e.Key), + e => Assert.Equal(1, e.Key)); + + var test1_0 = a.PolicyEdges[0]; + Assert.Equal(new[] { endpoint1, }, test1_0.Matches); + Assert.Null(test1_0.NodeBuilder); + Assert.Null(test1_0.PolicyEdges); + + var test1_1 = a.PolicyEdges[1]; + Assert.Equal(new[] { endpoint2, endpoint3, }, test1_1.Matches); + Assert.Null(test1_1.NodeBuilder); + Assert.Null(test1_1.PolicyEdges); + } + + [Fact] + public void BuildDfaTree_WithPolicies_AndBranches_NonRouteEndpoint() + { + // Arrange + var builder = CreateDfaMatcherBuilder(new TestNonRoutePatternMatcherPolicy()); + + var endpoint1 = CreateEndpoint("/a", metadata: new object[] { new TestMetadata1(0), }); + builder.AddEndpoint(endpoint1); + + var endpoint2 = CreateEndpoint("/a", metadata: new object[] { new TestMetadata1(1), }); + builder.AddEndpoint(endpoint2); + + var endpoint3 = CreateEndpoint("/a", metadata: new object[] { new TestMetadata1(1), }); + builder.AddEndpoint(endpoint3); + + // Act + var root = builder.BuildDfaTree(); + + // Assert + Assert.Null(root.Matches); + Assert.Null(root.Parameters); + + var next = Assert.Single(root.Literals); + Assert.Equal("a", next.Key); + + var a = next.Value; + Assert.Empty(a.Matches); + Assert.IsType(a.NodeBuilder); + Assert.Collection( + a.PolicyEdges.OrderBy(e => e.Key), + e => Assert.Equal(0, e.Key), + e => Assert.Equal(1, e.Key), + e => Assert.Equal(int.MaxValue, e.Key)); + + var test1_0 = a.PolicyEdges[0]; + Assert.Equal(new[] { endpoint1, }, test1_0.Matches); + Assert.Null(test1_0.NodeBuilder); + Assert.Null(test1_0.PolicyEdges); + + var test1_1 = a.PolicyEdges[1]; + Assert.Equal(new[] { endpoint2, endpoint3, }, test1_1.Matches); + Assert.Null(test1_1.NodeBuilder); + Assert.Null(test1_1.PolicyEdges); + + var nonRouteEndpoint = a.PolicyEdges[int.MaxValue]; + Assert.Equal("MaxValueEndpoint", Assert.Single(nonRouteEndpoint.Matches).DisplayName); + } + + [Fact] + public void BuildDfaTree_WithPolicies_AndBranches_BothPoliciesSkipped() + { + // Arrange + var builder = CreateDfaMatcherBuilder(new TestMetadata1MatcherPolicy(), new TestMetadata2MatcherPolicy()); + + var endpoint1 = CreateEndpoint("/a", metadata: new object[] { }); + builder.AddEndpoint(endpoint1); + + var endpoint2 = CreateEndpoint("/a", metadata: new object[] { }); + builder.AddEndpoint(endpoint2); + + var endpoint3 = CreateEndpoint("/a", metadata: new object[] { }); + builder.AddEndpoint(endpoint3); + + // Act + var root = builder.BuildDfaTree(); + + // Assert + Assert.Null(root.Matches); + Assert.Null(root.Parameters); + + var next = Assert.Single(root.Literals); + Assert.Equal("a", next.Key); + + var a = next.Value; + Assert.Equal(new[] { endpoint1, endpoint2, endpoint3, }, a.Matches); + Assert.Null(a.NodeBuilder); + Assert.Null(a.PolicyEdges); + } + + [Fact] + public void CreateCandidate_JustLiterals() + { + // Arrange + var endpoint = CreateEndpoint("/a/b/c"); + + var builder = CreateDfaMatcherBuilder(); + + // Act + var candidate = builder.CreateCandidate(endpoint, score: 0); + + // Assert + Assert.Equal(Candidate.CandidateFlags.None, candidate.Flags); + Assert.Empty(candidate.Slots); + Assert.Empty(candidate.Captures); + Assert.Equal(default, candidate.CatchAll); + Assert.Empty(candidate.ComplexSegments); + Assert.Empty(candidate.Constraints); + } + + [Fact] + public void CreateCandidate_Parameters() + { + // Arrange + var endpoint = CreateEndpoint("/{a}/{b}/{c}"); + + var builder = CreateDfaMatcherBuilder(); + + // Act + var candidate = builder.CreateCandidate(endpoint, score: 0); + + // Assert + Assert.Equal(Candidate.CandidateFlags.HasCaptures, candidate.Flags); + Assert.Equal(3, candidate.Slots.Length); + Assert.Collection( + candidate.Captures, + c => Assert.Equal(("a", 0, 0), c), + c => Assert.Equal(("b", 1, 1), c), + c => Assert.Equal(("c", 2, 2), c)); + Assert.Equal(default, candidate.CatchAll); + Assert.Empty(candidate.ComplexSegments); + Assert.Empty(candidate.Constraints); + } + + [Fact] + public void CreateCandidate_Parameters_WithDefaults() + { + // Arrange + var endpoint = CreateEndpoint("/{a=aa}/{b=bb}/{c=cc}"); + + var builder = CreateDfaMatcherBuilder(); + + // Act + var candidate = builder.CreateCandidate(endpoint, score: 0); + + // Assert + Assert.Equal( + Candidate.CandidateFlags.HasDefaults | Candidate.CandidateFlags.HasCaptures, + candidate.Flags); + Assert.Collection( + candidate.Slots, + s => Assert.Equal(new KeyValuePair("a", "aa"), s), + s => Assert.Equal(new KeyValuePair("b", "bb"), s), + s => Assert.Equal(new KeyValuePair("c", "cc"), s)); + Assert.Collection( + candidate.Captures, + c => Assert.Equal(("a", 0, 0), c), + c => Assert.Equal(("b", 1, 1), c), + c => Assert.Equal(("c", 2, 2), c)); + Assert.Equal(default, candidate.CatchAll); + Assert.Empty(candidate.ComplexSegments); + Assert.Empty(candidate.Constraints); + } + + [Fact] + public void CreateCandidate_Parameters_CatchAll() + { + // Arrange + var endpoint = CreateEndpoint("/{a}/{b}/{*c=cc}"); + + var builder = CreateDfaMatcherBuilder(); + + // Act + var candidate = builder.CreateCandidate(endpoint, score: 0); + + // Assert + Assert.Equal( + Candidate.CandidateFlags.HasDefaults | + Candidate.CandidateFlags.HasCaptures | + Candidate.CandidateFlags.HasCatchAll, + candidate.Flags); + Assert.Collection( + candidate.Slots, + s => Assert.Equal(new KeyValuePair("c", "cc"), s), + s => Assert.Equal(new KeyValuePair(null, null), s), + s => Assert.Equal(new KeyValuePair(null, null), s)); + Assert.Collection( + candidate.Captures, + c => Assert.Equal(("a", 0, 1), c), + c => Assert.Equal(("b", 1, 2), c)); + Assert.Equal(("c", 2, 0), candidate.CatchAll); + Assert.Empty(candidate.ComplexSegments); + Assert.Empty(candidate.Constraints); + } + + // Defaults are processed first, which affects the slot ordering. + [Fact] + public void CreateCandidate_Parameters_OutOfLineDefaults() + { + // Arrange + var endpoint = CreateEndpoint("/{a}/{b}/{c=cc}", new { a = "aa", d = "dd", }); + + var builder = CreateDfaMatcherBuilder(); + + // Act + var candidate = builder.CreateCandidate(endpoint, score: 0); + + // Assert + Assert.Equal( + Candidate.CandidateFlags.HasDefaults | Candidate.CandidateFlags.HasCaptures, + candidate.Flags); + Assert.Collection( + candidate.Slots, + s => Assert.Equal(new KeyValuePair("a", "aa"), s), + s => Assert.Equal(new KeyValuePair("d", "dd"), s), + s => Assert.Equal(new KeyValuePair("c", "cc"), s), + s => Assert.Equal(new KeyValuePair(null, null), s)); + Assert.Collection( + candidate.Captures, + c => Assert.Equal(("a", 0, 0), c), + c => Assert.Equal(("b", 1, 3), c), + c => Assert.Equal(("c", 2, 2), c)); + Assert.Equal(default, candidate.CatchAll); + Assert.Empty(candidate.ComplexSegments); + Assert.Empty(candidate.Constraints); + } + + [Fact] + public void CreateCandidate_Parameters_ComplexSegments() + { + // Arrange + var endpoint = CreateEndpoint("/{a}-{b=bb}/{c}"); + + var builder = CreateDfaMatcherBuilder(); + + // Act + var candidate = builder.CreateCandidate(endpoint, score: 0); + + // Assert + Assert.Equal( + Candidate.CandidateFlags.HasDefaults | + Candidate.CandidateFlags.HasCaptures | + Candidate.CandidateFlags.HasComplexSegments, + candidate.Flags); + Assert.Collection( + candidate.Slots, + s => Assert.Equal(new KeyValuePair("b", "bb"), s), + s => Assert.Equal(new KeyValuePair(null, null), s)); + Assert.Collection( + candidate.Captures, + c => Assert.Equal(("c", 1, 1), c)); + Assert.Equal(default, candidate.CatchAll); + Assert.Collection( + candidate.ComplexSegments, + s => Assert.Equal(0, s.segmentIndex)); + Assert.Empty(candidate.Constraints); + } + + [Fact] + public void CreateCandidate_RouteConstraints() + { + // Arrange + var endpoint = CreateEndpoint("/a/b/c", constraints: new { a = new IntRouteConstraint(), }); + + var builder = CreateDfaMatcherBuilder(); + + // Act + var candidate = builder.CreateCandidate(endpoint, score: 0); + + // Assert + Assert.Equal(Candidate.CandidateFlags.HasConstraints, candidate.Flags); + Assert.Empty(candidate.Slots); + Assert.Empty(candidate.Captures); + Assert.Equal(default, candidate.CatchAll); + Assert.Empty(candidate.ComplexSegments); + Assert.Single(candidate.Constraints); + } + + [Fact] + public void CreateCandidate_CustomParameterPolicy() + { + // Arrange + var endpoint = CreateEndpoint("/a/b/c", constraints: new { a = new CustomParameterPolicy(), }); + + var builder = CreateDfaMatcherBuilder(); + + // Act + var candidate = builder.CreateCandidate(endpoint, score: 0); + + // Assert + Assert.Equal(Candidate.CandidateFlags.None, candidate.Flags); + Assert.Empty(candidate.Slots); + Assert.Empty(candidate.Captures); + Assert.Equal(default, candidate.CatchAll); + Assert.Empty(candidate.ComplexSegments); + Assert.Empty(candidate.Constraints); + } + + private class CustomParameterPolicy : IParameterPolicy + { + } + + [Fact] + public void CreateCandidates_CreatesScoresCorrectly() + { + // Arrange + var endpoints = new[] + { + CreateEndpoint("/a/b/c", constraints: new { a = new IntRouteConstraint(), }, metadata: new object[] { new TestMetadata1(), new TestMetadata2(), }), + CreateEndpoint("/a/b/c", constraints: new { a = new AlphaRouteConstraint(), }, metadata: new object[] { new TestMetadata1(), new TestMetadata2(), }), + CreateEndpoint("/a/b/c", constraints: new { a = new IntRouteConstraint(), }, metadata: new object[] { new TestMetadata1(), }), + CreateEndpoint("/a/b/c", constraints: new { a = new IntRouteConstraint(), }, metadata: new object[] { new TestMetadata2(), }), + CreateEndpoint("/a/b/c", constraints: new { }, metadata: new object[] { }), + CreateEndpoint("/a/b/c", constraints: new { }, metadata: new object[] { }), + }; + + var builder = CreateDfaMatcherBuilder(new TestMetadata1MatcherPolicy(), new TestMetadata2MatcherPolicy()); + + // Act + var candidates = builder.CreateCandidates(endpoints); + + // Assert + Assert.Collection( + candidates, + c => Assert.Equal(0, c.Score), + c => Assert.Equal(0, c.Score), + c => Assert.Equal(1, c.Score), + c => Assert.Equal(2, c.Score), + c => Assert.Equal(3, c.Score), + c => Assert.Equal(3, c.Score)); + } + + private static DfaMatcherBuilder CreateDfaMatcherBuilder(params MatcherPolicy[] policies) + { + var dataSource = new CompositeEndpointDataSource(Array.Empty()); + return new DfaMatcherBuilder( + NullLoggerFactory.Instance, + new DefaultParameterPolicyFactory(Options.Create(new RouteOptions()), Mock.Of()), + Mock.Of(), + policies); + } + + private RouteEndpoint CreateEndpoint( + string template, + object defaults = null, + object constraints = null, + params object[] metadata) + { + return new RouteEndpoint( + TestConstants.EmptyRequestDelegate, + RoutePatternFactory.Parse(template, new RouteValueDictionary(defaults), new RouteValueDictionary(constraints)), + 0, + new EndpointMetadataCollection(metadata), + "test"); + } + + private class TestMetadata1 + { + public TestMetadata1() + { + } + + public TestMetadata1(int state) + { + State = state; + } + + public int State { get; set; } + } + + private class TestMetadata1MatcherPolicy : MatcherPolicy, IEndpointComparerPolicy, INodeBuilderPolicy + { + public override int Order => 100; + + public IComparer Comparer => EndpointMetadataComparer.Default; + + public bool AppliesToEndpoints(IReadOnlyList endpoints) + { + return endpoints.Any(e => e.Metadata.GetMetadata() != null); + } + + public PolicyJumpTable BuildJumpTable(int exitDestination, IReadOnlyList edges) + { + throw new NotImplementedException(); + } + + public IReadOnlyList GetEdges(IReadOnlyList endpoints) + { + return endpoints + .GroupBy(e => e.Metadata.GetMetadata().State) + .Select(g => new PolicyNodeEdge(g.Key, g.ToArray())) + .ToArray(); + } + } + + private class TestMetadata2 + { + public TestMetadata2() + { + } + + public TestMetadata2(bool state) + { + State = state; + } + + public bool State { get; set; } + } + + private class TestMetadata2MatcherPolicy : MatcherPolicy, IEndpointComparerPolicy, INodeBuilderPolicy + { + public override int Order => 101; + + public IComparer Comparer => EndpointMetadataComparer.Default; + + public bool AppliesToEndpoints(IReadOnlyList endpoints) + { + return endpoints.Any(e => e.Metadata.GetMetadata() != null); + } + + public PolicyJumpTable BuildJumpTable(int exitDestination, IReadOnlyList edges) + { + throw new NotImplementedException(); + } + + public IReadOnlyList GetEdges(IReadOnlyList endpoints) + { + return endpoints + .GroupBy(e => e.Metadata.GetMetadata().State) + .Select(g => new PolicyNodeEdge(g.Key, g.ToArray())) + .ToArray(); + } + } + + private class TestNonRoutePatternMatcherPolicy : MatcherPolicy, IEndpointComparerPolicy, INodeBuilderPolicy + { + public override int Order => 100; + + public IComparer Comparer => EndpointMetadataComparer.Default; + + public bool AppliesToEndpoints(IReadOnlyList endpoints) + { + return endpoints.Any(e => e.Metadata.GetMetadata() != null); + } + + public PolicyJumpTable BuildJumpTable(int exitDestination, IReadOnlyList edges) + { + throw new NotImplementedException(); + } + + public IReadOnlyList GetEdges(IReadOnlyList endpoints) + { + var edges = endpoints + .GroupBy(e => e.Metadata.GetMetadata().State) + .Select(g => new PolicyNodeEdge(g.Key, g.ToArray())) + .ToList(); + + var maxValueEndpoint = new Endpoint(TestConstants.EmptyRequestDelegate, EndpointMetadataCollection.Empty, "MaxValueEndpoint"); + edges.Add(new PolicyNodeEdge(int.MaxValue, new[] { maxValueEndpoint })); + + return edges; + } + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/DfaMatcherConformanceTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/DfaMatcherConformanceTest.cs new file mode 100644 index 0000000000..e34abbd5b3 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/DfaMatcherConformanceTest.cs @@ -0,0 +1,42 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class DfaMatcherConformanceTest : FullFeaturedMatcherConformanceTest + { + // See the comments in the base class. DfaMatcher fixes a long-standing bug + // with catchall parameters and empty segments. + public override async Task Quirks_CatchAllParameter(string template, string path, string[] keys, string[] values) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint, keys, values); + } + + internal override Matcher CreateMatcher(params RouteEndpoint[] endpoints) + { + var services = new ServiceCollection() + .AddLogging() + .AddOptions() + .AddRouting() + .BuildServiceProvider(); + + var builder = services.GetRequiredService(); + for (var i = 0; i < endpoints.Length; i++) + { + builder.AddEndpoint(endpoints[i]); + } + return builder.Build(); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/DfaMatcherTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/DfaMatcherTest.cs new file mode 100644 index 0000000000..6227bda5b1 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/DfaMatcherTest.cs @@ -0,0 +1,478 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Testing; +using Moq; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // Many of these are integration tests that exercise the system end to end, + // so we're reusing the services here. + public class DfaMatcherTest + { + private RouteEndpoint CreateEndpoint(string template, int order, object defaults = null, EndpointMetadataCollection metadata = null) + { + return new RouteEndpoint( + TestConstants.EmptyRequestDelegate, + RoutePatternFactory.Parse(template, defaults, parameterPolicies: null), + order, + metadata ?? EndpointMetadataCollection.Empty, + template); + } + + private Matcher CreateDfaMatcher( + EndpointDataSource dataSource, + MatcherPolicy[] policies = null, + EndpointSelector endpointSelector = null, + ILoggerFactory loggerFactory = null) + { + var serviceCollection = new ServiceCollection() + .AddLogging() + .AddOptions() + .AddRouting(); + + if (policies != null) + { + for (var i = 0; i < policies.Length; i++) + { + serviceCollection.AddSingleton(policies[i]); + } + } + + if (endpointSelector != null) + { + serviceCollection.AddSingleton(endpointSelector); + } + + if (loggerFactory != null) + { + serviceCollection.AddSingleton(loggerFactory); + } + + var services = serviceCollection.BuildServiceProvider(); + + var factory = services.GetRequiredService(); + return Assert.IsType(factory.CreateMatcher(dataSource)); + } + + [Fact] + public async Task MatchAsync_ValidRouteConstraint_EndpointMatched() + { + // Arrange + var endpointDataSource = new DefaultEndpointDataSource(new List + { + CreateEndpoint("/{p:int}", 0) + }); + + var matcher = CreateDfaMatcher(endpointDataSource); + + var (httpContext, context) = CreateContext(); + httpContext.Request.Path = "/1"; + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + Assert.NotNull(context.Endpoint); + } + + [Fact] + public async Task MatchAsync_InvalidRouteConstraint_NoEndpointMatched() + { + // Arrange + var endpointDataSource = new DefaultEndpointDataSource(new List + { + CreateEndpoint("/{p:int}", 0) + }); + + var matcher = CreateDfaMatcher(endpointDataSource); + + var (httpContext, context) = CreateContext(); + httpContext.Request.Path = "/One"; + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + Assert.Null(context.Endpoint); + } + + [Fact] + public async Task MatchAsync_DuplicateTemplatesAndDifferentOrder_LowerOrderEndpointMatched() + { + // Arrange + var higherOrderEndpoint = CreateEndpoint("/Teams", 1); + var lowerOrderEndpoint = CreateEndpoint("/Teams", 0); + + var endpointDataSource = new DefaultEndpointDataSource(new List + { + higherOrderEndpoint, + lowerOrderEndpoint + }); + + var matcher = CreateDfaMatcher(endpointDataSource); + + var (httpContext, context) = CreateContext(); + httpContext.Request.Path = "/Teams"; + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + Assert.Equal(lowerOrderEndpoint, context.Endpoint); + } + + [Fact] + public async Task MatchAsync_MultipleMatches_EndpointSelectorCalled() + { + // Arrange + var endpoint1 = CreateEndpoint("/Teams", 0); + var endpoint2 = CreateEndpoint("/Teams", 1); + + var endpointSelector = new Mock(); + endpointSelector + .Setup(s => s.SelectAsync(It.IsAny(), It.IsAny(), It.IsAny())) + .Callback((c, f, cs) => + { + Assert.Equal(2, cs.Count); + + Assert.Same(endpoint1, cs[0].Endpoint); + Assert.True(cs.IsValidCandidate(0)); + Assert.Equal(0, cs[0].Score); + Assert.Empty(cs[0].Values); + + Assert.Same(endpoint2, cs[1].Endpoint); + Assert.True(cs.IsValidCandidate(1)); + Assert.Equal(1, cs[1].Score); + Assert.Empty(cs[1].Values); + + f.Endpoint = endpoint2; + }) + .Returns(Task.CompletedTask); + + var endpointDataSource = new DefaultEndpointDataSource(new List + { + endpoint1, + endpoint2 + }); + + var matcher = CreateDfaMatcher(endpointDataSource, endpointSelector: endpointSelector.Object); + + var (httpContext, context) = CreateContext(); + httpContext.Request.Path = "/Teams"; + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + Assert.Equal(endpoint2, context.Endpoint); + } + + [Fact] + public async Task MatchAsync_NoCandidates_Logging() + { + // Arrange + var endpointDataSource = new DefaultEndpointDataSource(new List + { + CreateEndpoint("/{p:int}", 0) + }); + + var sink = new TestSink(); + var matcher = CreateDfaMatcher(endpointDataSource, loggerFactory: new TestLoggerFactory(sink, enabled: true)); + + var (httpContext, context) = CreateContext(); + httpContext.Request.Path = "/"; + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + Assert.Null(context.Endpoint); + + Assert.Collection( + sink.Writes, + (log) => + { + Assert.Equal(DfaMatcher.EventIds.CandidatesNotFound, log.EventId); + Assert.Equal("No candidates found for the request path '/'", log.Message); + }); + } + + [Fact] + public async Task MatchAsync_ConstraintRejectsEndpoint_Logging() + { + // Arrange + var endpointDataSource = new DefaultEndpointDataSource(new List + { + CreateEndpoint("/{p:int}", 0) + }); + + var sink = new TestSink(); + var matcher = CreateDfaMatcher(endpointDataSource, loggerFactory: new TestLoggerFactory(sink, enabled: true)); + + var (httpContext, context) = CreateContext(); + httpContext.Request.Path = "/One"; + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + Assert.Null(context.Endpoint); + + Assert.Collection( + sink.Writes, + (log) => + { + Assert.Equal(DfaMatcher.EventIds.CandidatesFound, log.EventId); + Assert.Equal("1 candidate(s) found for the request path '/One'", log.Message); + }, + (log) => + { + Assert.Equal(DfaMatcher.EventIds.CandidateRejectedByConstraint, log.EventId); + Assert.Equal("Endpoint '/{p:int}' with route pattern '/{p:int}' was rejected by constraint 'p':'Microsoft.AspNetCore.Routing.Constraints.IntRouteConstraint' with value 'One' for the request path '/One'", log.Message); + }, + (log) => + { + Assert.Equal(DfaMatcher.EventIds.CandidateNotValid, log.EventId); + Assert.Equal("Endpoint '/{p:int}' with route pattern '/{p:int}' is not valid for the request path '/One'", log.Message); + }); + } + + [Fact] + public async Task MatchAsync_ComplexSegmentRejectsEndpoint_Logging() + { + // Arrange + var endpointDataSource = new DefaultEndpointDataSource(new List + { + CreateEndpoint("/x-{id}-y", 0) + }); + + var sink = new TestSink(); + var matcher = CreateDfaMatcher(endpointDataSource, loggerFactory: new TestLoggerFactory(sink, enabled: true)); + + var (httpContext, context) = CreateContext(); + httpContext.Request.Path = "/One"; + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + Assert.Null(context.Endpoint); + + Assert.Collection( + sink.Writes, + (log) => + { + Assert.Equal(DfaMatcher.EventIds.CandidatesFound, log.EventId); + Assert.Equal("1 candidate(s) found for the request path '/One'", log.Message); + }, + (log) => + { + Assert.Equal(DfaMatcher.EventIds.CandidateRejectedByComplexSegment, log.EventId); + Assert.Equal("Endpoint '/x-{id}-y' with route pattern '/x-{id}-y' was rejected by complex segment 'x-{id}-y' for the request path '/One'", log.Message); + }, + (log) => + { + Assert.Equal(DfaMatcher.EventIds.CandidateNotValid, log.EventId); + Assert.Equal("Endpoint '/x-{id}-y' with route pattern '/x-{id}-y' is not valid for the request path '/One'", log.Message); + }); + } + + [Fact] + public async Task MatchAsync_MultipleCandidates_Logging() + { + // Arrange + var endpointDataSource = new DefaultEndpointDataSource(new List + { + CreateEndpoint("/One", 0), + CreateEndpoint("/{p:int}", 0), + CreateEndpoint("/x-{id}-y", 0), + }); + + var sink = new TestSink(); + var matcher = CreateDfaMatcher(endpointDataSource, loggerFactory: new TestLoggerFactory(sink, enabled: true)); + + var (httpContext, context) = CreateContext(); + httpContext.Request.Path = "/One"; + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + Assert.Same(endpointDataSource.Endpoints[0], context.Endpoint); + + Assert.Collection( + sink.Writes, + (log) => + { + Assert.Equal(DfaMatcher.EventIds.CandidatesFound, log.EventId); + Assert.Equal("3 candidate(s) found for the request path '/One'", log.Message); + }, + (log) => + { + Assert.Equal(DfaMatcher.EventIds.CandidateValid, log.EventId); + Assert.Equal("Endpoint '/One' with route pattern '/One' is valid for the request path '/One'", log.Message); + }, + (log) => + { + Assert.Equal(DfaMatcher.EventIds.CandidateRejectedByConstraint, log.EventId); + Assert.Equal("Endpoint '/{p:int}' with route pattern '/{p:int}' was rejected by constraint 'p':'Microsoft.AspNetCore.Routing.Constraints.IntRouteConstraint' with value 'One' for the request path '/One'", log.Message); + }, + (log) => + { + Assert.Equal(DfaMatcher.EventIds.CandidateNotValid, log.EventId); + Assert.Equal("Endpoint '/{p:int}' with route pattern '/{p:int}' is not valid for the request path '/One'", log.Message); + }, + (log) => + { + Assert.Equal(DfaMatcher.EventIds.CandidateRejectedByComplexSegment, log.EventId); + Assert.Equal("Endpoint '/x-{id}-y' with route pattern '/x-{id}-y' was rejected by complex segment 'x-{id}-y' for the request path '/One'", log.Message); + }, + (log) => + { + Assert.Equal(DfaMatcher.EventIds.CandidateNotValid, log.EventId); + Assert.Equal("Endpoint '/x-{id}-y' with route pattern '/x-{id}-y' is not valid for the request path '/One'", log.Message); + }); + } + + [Fact] + public async Task MatchAsync_RunsApplicableEndpointSelectorPolicies() + { + // Arrange + var dataSource = new DefaultEndpointDataSource(new List + { + CreateEndpoint("/test/{id:alpha}", 0), + CreateEndpoint("/test/{id:int}", 0), + CreateEndpoint("/test/{id}", 0), + }); + + var policy = new Mock(); + policy + .As() + .Setup(p => p.AppliesToEndpoints(It.IsAny>())).Returns(true); + policy + .As() + .Setup(p => p.ApplyAsync(It.IsAny(), It.IsAny(), It.IsAny())) + .Returns((c, f, cs) => + { + cs.SetValidity(1, false); + return Task.CompletedTask; + }); + + var matcher = CreateDfaMatcher(dataSource, policies: new[] { policy.Object, }); + + var (httpContext, context) = CreateContext(); + httpContext.Request.Path = "/test/17"; + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + Assert.Same(dataSource.Endpoints[2], context.Endpoint); + } + + [Fact] + public async Task MatchAsync_SkipsNonApplicableEndpointSelectorPolicies() + { + // Arrange + var dataSource = new DefaultEndpointDataSource(new List + { + CreateEndpoint("/test/{id:alpha}", 0), + CreateEndpoint("/test/{id:int}", 0), + CreateEndpoint("/test/{id}", 0), + }); + + var policy = new Mock(); + policy + .As() + .Setup(p => p.AppliesToEndpoints(It.IsAny>())).Returns(false); + policy + .As() + .Setup(p => p.ApplyAsync(It.IsAny(), It.IsAny(), It.IsAny())) + .Returns((c, f, cs) => + { + throw null; // Won't be called. + }); + + var matcher = CreateDfaMatcher(dataSource, policies: new[] { policy.Object, }); + + var (httpContext, context) = CreateContext(); + httpContext.Request.Path = "/test/17"; + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + Assert.Same(dataSource.Endpoints[1], context.Endpoint); + } + + [Fact] + public async Task MatchAsync_RunsEndpointSelectorPolicies_CanShortCircuit() + { + // Arrange + var dataSource = new DefaultEndpointDataSource(new List + { + CreateEndpoint("/test/{id:alpha}", 0), + CreateEndpoint("/test/{id:int}", 0), + CreateEndpoint("/test/{id}", 0), + }); + + var policy1 = new Mock(); + policy1 + .As() + .Setup(p => p.AppliesToEndpoints(It.IsAny>())).Returns(true); + policy1 + .As() + .Setup(p => p.ApplyAsync(It.IsAny(), It.IsAny(), It.IsAny())) + .Returns((c, f, cs) => + { + f.Endpoint = cs[0].Endpoint; + return Task.CompletedTask; + }); + + // This should never run, it's after policy1 which short circuits + var policy2 = new Mock(); + policy2 + .SetupGet(p => p.Order) + .Returns(1000); + policy2 + .As() + .Setup(p => p.AppliesToEndpoints(It.IsAny>())).Returns(true); + policy2 + .As() + .Setup(p => p.ApplyAsync(It.IsAny(), It.IsAny(), It.IsAny())) + .Throws(new InvalidOperationException()); + + var matcher = CreateDfaMatcher(dataSource, policies: new[] { policy1.Object, policy2.Object, }); + + var (httpContext, context) = CreateContext(); + httpContext.Request.Path = "/test/17"; + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + Assert.Same(dataSource.Endpoints[0], context.Endpoint); + } + + private (HttpContext httpContext, EndpointSelectorContext context) CreateContext() + { + var context = new EndpointSelectorContext(); + + var httpContext = new DefaultHttpContext(); + httpContext.Features.Set(context); + httpContext.Features.Set(context); + + return (httpContext, context); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/DictionaryJumpTableTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/DictionaryJumpTableTest.cs new file mode 100644 index 0000000000..d04ca502c7 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/DictionaryJumpTableTest.cs @@ -0,0 +1,16 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class DictionaryJumpTableTest : MultipleEntryJumpTableTest + { + internal override JumpTable CreateTable( + int defaultDestination, + int exitDestination, + params (string text, int destination)[] entries) + { + return new DictionaryJumpTable(defaultDestination, exitDestination, entries); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/EndpointMetadataComparerTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/EndpointMetadataComparerTest.cs new file mode 100644 index 0000000000..918262e469 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/EndpointMetadataComparerTest.cs @@ -0,0 +1,91 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class EndpointMetadataComparerTest + { + [Fact] + public void Compare_EndpointWithMetadata_MoreSpecific() + { + // Arrange + var endpoint1 = new Endpoint(TestConstants.EmptyRequestDelegate, new EndpointMetadataCollection(new object[] { new TestMetadata(), }), "test1"); + var endpoint2 = new Endpoint(TestConstants.EmptyRequestDelegate, new EndpointMetadataCollection(new object[] { }), "test2"); + + // Act + var result = EndpointMetadataComparer.Default.Compare(endpoint1, endpoint2); + + // Assert + Assert.Equal(-1, result); + } + + [Fact] + public void Compare_EndpointWithMetadata_ReverseOrder_MoreSpecific() + { + // Arrange + var endpoint1 = new Endpoint(TestConstants.EmptyRequestDelegate, new EndpointMetadataCollection(new object[] { }), "test1"); + var endpoint2 = new Endpoint(TestConstants.EmptyRequestDelegate, new EndpointMetadataCollection(new object[] { new TestMetadata(), }), "test2"); + + // Act + var result = EndpointMetadataComparer.Default.Compare(endpoint1, endpoint2); + + // Assert + Assert.Equal(1, result); + } + + [Fact] + public void Compare_BothEndpointsWithMetadata_Equal() + { + // Arrange + var endpoint1 = new Endpoint(TestConstants.EmptyRequestDelegate, new EndpointMetadataCollection(new object[] { new TestMetadata(), }), "test1"); + var endpoint2 = new Endpoint(TestConstants.EmptyRequestDelegate, new EndpointMetadataCollection(new object[] { new TestMetadata(), }), "test2"); + + // Act + var result = EndpointMetadataComparer.Default.Compare(endpoint1, endpoint2); + + // Assert + Assert.Equal(0, result); + } + + [Fact] + public void Compare_BothEndpointsWithoutMetadata_Equal() + { + // Arrange + var endpoint1 = new Endpoint(TestConstants.EmptyRequestDelegate, new EndpointMetadataCollection(new object[] { }), "test1"); + var endpoint2 = new Endpoint(TestConstants.EmptyRequestDelegate, new EndpointMetadataCollection(new object[] { }), "test2"); + + // Act + var result = EndpointMetadataComparer.Default.Compare(endpoint1, endpoint2); + + // Assert + Assert.Equal(0, result); + } + + [Fact] + public void Sort_EndpointWithMetadata_FirstInList() + { + // Arrange + var endpoint1 = new Endpoint(TestConstants.EmptyRequestDelegate, new EndpointMetadataCollection(new object[] { new TestMetadata(), }), "test1"); + var endpoint2 = new Endpoint(TestConstants.EmptyRequestDelegate, new EndpointMetadataCollection(new object[] { }), "test2"); + + var list = new List() { endpoint2, endpoint1, }; + + // Act + list.Sort(EndpointMetadataComparer.Default); + + // Assert + Assert.Collection( + list, + e => Assert.Same(endpoint1, e), + e => Assert.Same(endpoint2, e)); + } + + private class TestMetadata + { + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/FastPathTokenizerTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/FastPathTokenizerTest.cs new file mode 100644 index 0000000000..51e2489ee4 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/FastPathTokenizerTest.cs @@ -0,0 +1,133 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class FastPathTokenizerTest + { + // Generally this will only happen in tests when the HttpContext hasn't been + // initialized. We still don't want to crash in this case. + [Fact] + public void Tokenize_EmptyString() + { + // Arrange + Span segments = stackalloc PathSegment[1]; + + // Act + var count = FastPathTokenizer.Tokenize("", segments); + + // Assert + Assert.Equal(0, count); + } + + [Fact] + public void Tokenize_RootPath() + { + // Arrange + Span segments = stackalloc PathSegment[1]; + + // Act + var count = FastPathTokenizer.Tokenize("/", segments); + + // Assert + Assert.Equal(0, count); + } + + [Fact] + public void Tokenize_SingleSegment() + { + // Arrange + Span segments = stackalloc PathSegment[1]; + + // Act + var count = FastPathTokenizer.Tokenize("/abc", segments); + + // Assert + Assert.Equal(1, count); + Assert.Equal(new PathSegment(1, 3), segments[0]); + } + + [Fact] + public void Tokenize_WithSomeSegments() + { + // Arrange + Span segments = stackalloc PathSegment[3]; + + // Act + var count = FastPathTokenizer.Tokenize("/a/b/c", segments); + + // Assert + Assert.Equal(3, count); + Assert.Equal(new PathSegment(1, 1), segments[0]); + Assert.Equal(new PathSegment(3, 1), segments[1]); + Assert.Equal(new PathSegment(5, 1), segments[2]); + } + + [Fact] // Empty trailing / is ignored + public void Tokenize_WithSomeSegments_TrailingSlash() + { + // Arrange + Span segments = stackalloc PathSegment[3]; + + // Act + var count = FastPathTokenizer.Tokenize("/a/b/c/", segments); + + // Assert + Assert.Equal(3, count); + Assert.Equal(new PathSegment(1, 1), segments[0]); + Assert.Equal(new PathSegment(3, 1), segments[1]); + Assert.Equal(new PathSegment(5, 1), segments[2]); + } + + [Fact] + public void Tokenize_LongerSegments() + { + // Arrange + Span segments = stackalloc PathSegment[3]; + + // Act + var count = FastPathTokenizer.Tokenize("/aaa/bb/ccccc", segments); + + // Assert + Assert.Equal(3, count); + Assert.Equal(new PathSegment(1, 3), segments[0]); + Assert.Equal(new PathSegment(5, 2), segments[1]); + Assert.Equal(new PathSegment(8, 5), segments[2]); + } + + [Fact] + public void Tokenize_EmptySegments() + { + // Arrange + Span segments = stackalloc PathSegment[3]; + + // Act + var count = FastPathTokenizer.Tokenize("///c", segments); + + // Assert + Assert.Equal(3, count); + Assert.Equal(new PathSegment(1, 0), segments[0]); + Assert.Equal(new PathSegment(2, 0), segments[1]); + Assert.Equal(new PathSegment(3, 1), segments[2]); + } + + [Fact] + public void Tokenize_TooManySegments() + { + // Arrange + Span segments = stackalloc PathSegment[3]; + + // Act + var count = FastPathTokenizer.Tokenize("/a/b/c/d", segments); + + // Assert + Assert.Equal(3, count); + Assert.Equal(new PathSegment(1, 1), segments[0]); + Assert.Equal(new PathSegment(3, 1), segments[1]); + Assert.Equal(new PathSegment(5, 1), segments[2]); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/FullFeaturedMatcherConformanceTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/FullFeaturedMatcherConformanceTest.cs new file mode 100644 index 0000000000..b470d9369f --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/FullFeaturedMatcherConformanceTest.cs @@ -0,0 +1,446 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Linq; +using System.Threading.Tasks; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // This class includes features that we have not yet implemented in the DFA + // and instruction matchers. + // + // As those matchers add features we can move tests from this class into + // MatcherConformanceTest and delete this. + public abstract class FullFeaturedMatcherConformanceTest : MatcherConformanceTest + { + [Theory] + [InlineData("/a/{b=15}", "/a/b", new string[] { "b", }, new string[] { "b", })] + [InlineData("/a/{b=15}", "/a/", new string[] { "b", }, new string[] { "15", })] + [InlineData("/a/{b=15}", "/a", new string[] { "b", }, new string[] { "15", })] + [InlineData("/{a}/{b=15}", "/54/b", new string[] { "a", "b", }, new string[] { "54", "b", })] + [InlineData("/{a=19}/{b=15}", "/54/b", new string[] { "a", "b", }, new string[] { "54", "b", })] + [InlineData("/{a=19}/{b=15}", "/54/", new string[] { "a", "b", }, new string[] { "54", "15", })] + [InlineData("/{a=19}/{b=15}", "/54", new string[] { "a", "b", }, new string[] { "54", "15", })] + [InlineData("/{a=19}/{b=15}", "/", new string[] { "a", "b", }, new string[] { "19", "15", })] + public virtual async Task Match_DefaultValues(string template, string path, string[] keys, string[] values) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint, keys, values); + } + + [Fact] + public virtual async Task Match_NonInlineDefaultValues() + { + // Arrange + var endpoint = CreateEndpoint("/a/{b}/{c}", new { b = "17", c = "18", }); + var matcher = CreateMatcher(endpoint); + var (httpContext, context) = CreateContext("/a"); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint, new { b = "17", c = "18", }); + } + + [Fact] + public virtual async Task Match_ExtraDefaultValues() + { + // Arrange + var endpoint = CreateEndpoint("/a/{b}/{c}", new { b = "17", c = "18", d = "19" }); + var matcher = CreateMatcher(endpoint); + var (httpContext, context) = CreateContext("/a"); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint, new { b = "17", c = "18", d = "19" }); + } + + [Theory] + [InlineData("/a/{b=15}", "/54/b")] + [InlineData("/a/{b=15}", "/54/")] + [InlineData("/a/{b=15}", "/54")] + [InlineData("/a/{b=15}", "/a//")] + [InlineData("/a/{b=15}", "/54/43/23")] + [InlineData("/{a=19}/{b=15}", "/54/b/c")] + [InlineData("/a/{b=15}/c", "/a/b")] // Intermediate default values don't act like optional segments + [InlineData("a/{b=3}/c/{d?}/e/{*f}", "/a")] + [InlineData("a/{b=3}/c/{d?}/e/{*f}", "/a/b")] + [InlineData("a/{b=3}/c/{d?}/e/{*f}", "/a/b/c")] + [InlineData("a/{b=3}/c/{d?}/e/{*f}", "/a/b/c/d")] + public virtual async Task NotMatch_DefaultValues(string template, string path) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertNotMatch(context, httpContext); + } + + [Theory] + [InlineData("/{a?}/{b?}/{c?}", "/", null, null)] + [InlineData("/{a?}/{b?}/{c?}", "/a", new[] { "a", }, new[] { "a", })] + [InlineData("/{a?}/{b?}/{c?}", "/a/", new[] { "a", }, new[] { "a", })] + [InlineData("/{a?}/{b?}/{c?}", "/a/b", new[] { "a", "b", }, new[] { "a", "b", })] + [InlineData("/{a?}/{b?}/{c?}", "/a/b/", new[] { "a", "b", }, new[] { "a", "b", })] + [InlineData("/{a?}/{b?}/{c?}", "/a/b/c", new[] { "a", "b", "c", }, new[] { "a", "b", "c", })] + [InlineData("/{a?}/{b?}/{c?}", "/a/b/c/", new[] { "a", "b", "c", }, new[] { "a", "b", "c", })] + [InlineData("/{c}/{a?}", "/h/i", new[] { "c", "a", }, new[] { "h", "i", })] + [InlineData("/{c}/{a?}", "/h/", new[] { "c", }, new[] { "h", })] + [InlineData("/{c}/{a?}", "/h", new[] { "c", }, new[] { "h", })] + [InlineData("/{c?}/{a?}", "/", null, null)] + [InlineData("/{c}/{a?}/{id?}", "/h/i/18", new[] { "c", "a", "id", }, new[] { "h", "i", "18", })] + [InlineData("/{c}/{a?}/{id?}", "/h/i", new[] { "c", "a", }, new[] { "h", "i", })] + [InlineData("/{c}/{a?}/{id?}", "/h", new[] { "c", }, new[] { "h", })] + [InlineData("template/{p:int?}", "/template/5", new[] { "p", }, new[] { "5", })] + [InlineData("template/{p:int?}", "/template", null, null)] + [InlineData("a/{b=3}/c/{d?}/e/{*f}", "/a/b/c/d/e", new[] { "b", "d", "f" }, new[] { "b", "d", null, })] + [InlineData("a/{b=3}/c/{d?}/e/{*f}", "/a/b/c/d/e/f", new[] { "b", "d", "f", }, new[] { "b", "d", "f", })] + public virtual async Task Match_OptionalParameter(string template, string path, string[] keys, string[] values) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint, keys, values); + } + + [Theory] + [InlineData("/{a?}/{b?}/{c?}", "///")] + [InlineData("/{a?}/{b?}/{c?}", "/a//")] + [InlineData("/{a?}/{b?}/{c?}", "/a/b//")] + [InlineData("/{a?}/{b?}/{c?}", "//b//")] + [InlineData("/{a?}/{b?}/{c?}", "///c")] + [InlineData("/{a?}/{b?}/{c?}", "///c/")] + [InlineData("/{a?}/{b?}/{c?}", "/a/b/c/d")] + [InlineData("/a/{b?}/{c?}", "/")] + [InlineData("template/{parameter:int?}", "/template/qwer")] + public virtual async Task NotMatch_OptionalParameter(string template, string path) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertNotMatch(context, httpContext); + } + + [Theory] + [InlineData("/{a}/{*b}", "/a", new[] { "a", "b", }, new[] { "a", null, })] + [InlineData("/{a}/{*b}", "/a/", new[] { "a", "b", }, new[] { "a", null, })] + [InlineData("/{a}/{*b=b}", "/a", new[] { "a", "b", }, new[] { "a", "b", })] + [InlineData("/{a}/{*b=b}", "/a/", new[] { "a", "b", }, new[] { "a", "b", })] + [InlineData("/{a}/{*b=b}", "/a/hello", new[] { "a", "b", }, new[] { "a", "hello", })] + [InlineData("/{a}/{*b=b}", "/a/hello/goodbye", new[] { "a", "b", }, new[] { "a", "hello/goodbye", })] + [InlineData("/{a}/{*b=b}", "/a/b//", new[] { "a", "b", }, new[] { "a", "b//", })] + [InlineData("/{a}/{*b=b}", "/a/b/c/", new[] { "a", "b", }, new[] { "a", "b/c/", })] + [InlineData("/{a=1}/{b=2}/{c=3}/{d=4}", "/a/b/c", new[] { "a", "b", "c", "d", }, new[] { "a", "b", "c", "4", })] + [InlineData("a/{*path:regex(10/20/30)}", "/a/10/20/30", new[] { "path", }, new[] { "10/20/30" })] + public virtual async Task Match_CatchAllParameter(string template, string path, string[] keys, string[] values) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint, keys, values); + } + + // Historically catchall segments don't match an empty segment, but only if it's + // the first one. So `/a/b//` would match, but `/a//` would not. This is pretty + // wierd and inconsistent with the intent of using a catch all. The DfaMatcher + // fixes this issue. + [Theory] + [InlineData("/{a}/{*b=b}", "/a///", new[] { "a", "b", }, new[] { "a", "//" })] + [InlineData("/{a}/{*b=b}", "/a//c/", new[] { "a", "b", }, new[] { "a", "/c/" })] + public virtual async Task Quirks_CatchAllParameter(string template, string path, string[] keys, string[] values) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertNotMatch(context, httpContext); + + // Need to access these to prevent a warning from the xUnit analyzer. + // Some of these tests will match (and process the values) and some will not. + GC.KeepAlive(keys); + GC.KeepAlive(values); + } + + [Theory] + [InlineData("{p}x{s}", "/xxxxxxxxxx", new[] { "p", "s" }, new[] { "xxxxxxxx", "x", })] + [InlineData("{p}xyz{s}", "/xxxxyzxyzxxxxxxyz", new[] { "p", "s" }, new[] { "xxxxyz", "xxxxxxyz", })] + [InlineData("{p}xyz{s}", "/abcxxxxyzxyzxxxxxxyzxx", new[] { "p", "s" }, new[] { "abcxxxxyzxyzxxxxx", "xx", })] + [InlineData("{p}xyz{s}", "/xyzxyzxyzxyzxyz", new[] { "p", "s" }, new[] { "xyzxyzxyz", "xyz", })] + [InlineData("{p}xyz{s}", "/xyzxyzxyzxyzxyz1", new[] { "p", "s" }, new[] { "xyzxyzxyzxyz", "1", })] + [InlineData("{p}xyz{s}", "/xyzxyzxyz", new[] { "p", "s" }, new[] { "xyz", "xyz", })] + [InlineData("{p}aa{s}", "/aaaaa", new[] { "p", "s" }, new[] { "aa", "a", })] + [InlineData("{p}aaa{s}", "/aaaaa", new[] { "p", "s" }, new[] { "a", "a", })] + [InlineData("language/{lang=en}-{region=US}", "/language/xx-yy", new[] { "lang", "region" }, new[] { "xx", "yy", })] + [InlineData("language/{lang}-{region}", "/language/en-US", new[] { "lang", "region" }, new[] { "en", "US", })] + [InlineData("language/{lang}-{region}a", "/language/en-USa", new[] { "lang", "region" }, new[] { "en", "US", })] + [InlineData("language/a{lang}-{region}", "/language/aen-US", new[] { "lang", "region" }, new[] { "en", "US", })] + [InlineData("language/a{lang}-{region}a", "/language/aen-USa", new[] { "lang", "region" }, new[] { "en", "US", })] + [InlineData("language/{lang}-", "/language/en-", new[] { "lang", }, new[] { "en", })] + [InlineData("language/a{lang}", "/language/aen", new[] { "lang", }, new[] { "en", })] + [InlineData("language/a{lang}a", "/language/aena", new[] { "lang", }, new[] { "en", })] + public virtual async Task Match_ComplexSegment(string template, string path, string[] keys, string[] values) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint, keys, values); + } + + [Theory] + [InlineData("language/a{lang}-{region}a", "/language/a-USa")] + [InlineData("language/a{lang}-{region}a", "/language/aen-a")] + [InlineData("language/{lang=en}-{region=US}", "/language")] + [InlineData("language/{lang=en}-{region=US}", "/language/-")] + [InlineData("language/{lang=en}-{region=US}", "/language/xx-")] + [InlineData("language/{lang=en}-{region=US}", "/language/-xx")] + public virtual async Task NotMatch_ComplexSegment(string template, string path) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertNotMatch(context, httpContext); + } + + [Theory] + [InlineData("moo/{p1}.{p2?}", "/moo/foo.bar", new[] { "p1", "p2", }, new[] { "foo", "bar" })] + [InlineData("moo/{p1}.{p2?}", "/moo/foo", new[] { "p1", }, new[] { "foo", })] + [InlineData("moo/{p1}.{p2?}", "/moo/.foo", new[] { "p1", }, new[] { ".foo", })] + [InlineData("moo/{p1}.{p2?}", "/moo/foo..bar", new[] { "p1", "p2", }, new[] { "foo.", "bar" })] + [InlineData("moo/{p1}.{p2?}", "/moo/foo.moo.bar", new[] { "p1", "p2", }, new[] { "foo.moo", "bar" })] + [InlineData("moo/foo.{p1}.{p2?}", "/moo/foo.moo", new[] { "p1", }, new[] { "moo", })] + [InlineData("moo/foo.{p1}.{p2?}", "/moo/foo.foo.bar", new[] { "p1", "p2", }, new[] { "foo", "bar" })] + [InlineData("moo/.{p2?}", "/moo/.foo", new[] { "p2", }, new[] { "foo", })] + [InlineData("moo/{p1}.{p2}.{p3?}", "/moo/foo.moo.bar", new[] { "p1", "p2", "p3" }, new[] { "foo", "moo", "bar" })] + [InlineData("moo/{p1}.{p2}.{p3?}", "/moo/foo.moo", new[] { "p1", "p2", }, new[] { "foo", "moo" })] + [InlineData("moo/{p1}.{p2}.{p3}.{p4?}", "/moo/foo.moo.bar", new[] { "p1", "p2", "p3" }, new[] { "foo", "moo", "bar" })] + [InlineData("{p1}.{p2?}/{p3}", "/foo.moo/bar", new[] { "p1", "p2", "p3" }, new[] { "foo", "moo", "bar" })] + [InlineData("{p1}.{p2?}/{p3}", "/foo/bar", new[] { "p1", "p3" }, new[] { "foo", "bar" })] + [InlineData("{p1}.{p2?}/{p3}", "/.foo/bar", new[] { "p1", "p3" }, new[] { ".foo", "bar" })] + [InlineData("{p1}/{p2}/{p3?}", "/foo/bar/baz", new[] { "p1", "p2", "p3" }, new[] { "foo", "bar", "baz" })] + public virtual async Task Match_OptionalSeparator(string template, string path, string[] keys, string[] values) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint, keys, values); + } + + [Theory] + [InlineData("moo/{p1}.{p2?}", "/moo/foo.")] + [InlineData("moo/{p1}.{p2?}", "/moo/.")] + [InlineData("moo/{p1}.{p2}", "/foo.")] + [InlineData("moo/{p1}.{p2}", "/foo")] + [InlineData("moo/{p1}.{p2}.{p3?}", "/moo/foo.moo.")] + [InlineData("moo/foo.{p2}.{p3?}", "/moo/bar.foo.moo")] + [InlineData("moo/foo.{p2}.{p3?}", "/moo/kungfoo.moo.bar")] + [InlineData("moo/foo.{p2}.{p3?}", "/moo/kungfoo.moo")] + [InlineData("moo/{p1}.{p2}.{p3?}", "/moo/foo")] + [InlineData("{p1}.{p2?}/{p3}", "/foo./bar")] + [InlineData("moo/.{p2?}", "/moo/.")] + [InlineData("{p1}.{p2}/{p3}", "/.foo/bar")] + public virtual async Task NotMatch_OptionalSeparator(string template, string path) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertNotMatch(context, httpContext); + } + + // Most of are copied from old routing tests that date back to the VS 2010 era. Enjoy! + [Theory] + [InlineData("{Controller}.mvc/../{action}", "/Home.mvc/../index", new string[] { "Controller", "action" }, new string[] { "Home", "index" })] + [InlineData("{Controller}.mvc/.../{action}", "/Home.mvc/.../index", new string[] { "Controller", "action" }, new string[] { "Home", "index" })] + [InlineData("{Controller}.mvc/../../../{action}", "/Home.mvc/../../../index", new string[] { "Controller", "action" }, new string[] { "Home", "index" })] + [InlineData("{Controller}.mvc!/{action}", "/Home.mvc!/index", new string[] { "Controller", "action" }, new string[] { "Home", "index" })] + [InlineData("../{Controller}.mvc", "/../Home.mvc", new string[] { "Controller", }, new string[] { "Home", })] + [InlineData(@"\{Controller}.mvc", @"/\Home.mvc", new string[] { "Controller", }, new string[] { "Home", })] + [InlineData(@"{Controller}.mvc\{id}\{Param1}", @"/Home.mvc\123\p1", new string[] { "Controller", "id", "Param1" }, new string[] { "Home", "123", "p1" })] + [InlineData("(Controller).mvc", "/(Controller).mvc", new string[] { }, new string[] { })] + [InlineData("Controller.mvc/ ", "/Controller.mvc/ ", new string[] { }, new string[] { })] + [InlineData("Controller.mvc ", "/Controller.mvc ", new string[] { }, new string[] { })] + public virtual async Task Match_WierdCharacterCases(string template, string path, string[] keys, string[] values) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint, keys, values); + } + + [Theory] + [InlineData("template/5", "template/{parameter:int}")] + [InlineData("template/5", "template/{parameter}")] + [InlineData("template/5", "template/{*parameter:int}")] + [InlineData("template/5", "template/{*parameter}")] + [InlineData("template/{parameter}", "template/{parameter:alpha}")] // constraint doesn't match + [InlineData("template/{parameter:int}", "template/{parameter}")] + [InlineData("template/{parameter:int}", "template/{*parameter:int}")] + [InlineData("template/{parameter:int}", "template/{*parameter}")] + [InlineData("template/{parameter}", "template/{*parameter:int}")] + [InlineData("template/{parameter}", "template/{*parameter}")] + [InlineData("template/{*parameter:int}", "template/{*parameter}")] + public virtual async Task Match_SelectEndpoint_BasedOnPrecedence(string template1, string template2) + { + // Arrange + var expected = CreateEndpoint(template1); + var other = CreateEndpoint(template2); + var path = "/template/5"; + + // Arrange + var matcher = CreateMatcher(other, expected); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, expected, ignoreValues: true); + } + + [Theory] + [InlineData("template/5", "template/{parameter:int}")] + [InlineData("template/5", "template/{parameter}")] + [InlineData("template/5", "template/{*parameter:int}")] + [InlineData("template/5", "template/{*parameter}")] + [InlineData("template/{parameter:int}", "template/{parameter}")] + [InlineData("template/{parameter:int}", "template/{*parameter:int}")] + [InlineData("template/{parameter:int}", "template/{*parameter}")] + [InlineData("template/{parameter}", "template/{*parameter:int}")] + [InlineData("template/{parameter}", "template/{*parameter}")] + [InlineData("template/{*parameter:int}", "template/{*parameter}")] + [InlineData("template/5", "template/5")] + [InlineData("template/{parameter:int}", "template/{parameter:int}")] + [InlineData("template/{parameter}", "template/{parameter}")] + [InlineData("template/{*parameter:int}", "template/{*parameter:int}")] + [InlineData("template/{*parameter}", "template/{*parameter}")] + public virtual async Task Match_SelectEndpoint_BasedOnOrder(string template1, string template2) + { + // Arrange + var expected = CreateEndpoint(template1, order: 0); + var other = CreateEndpoint(template2, order: 1); + var path = "/template/5"; + + // Arrange + var matcher = CreateMatcher(other, expected); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, expected, ignoreValues: true); + } + + [Theory] + [InlineData("/", "")] + [InlineData("/Literal1", "Literal1")] + [InlineData("/Literal1/Literal2", "Literal1/Literal2")] + [InlineData("/Literal1/Literal2/Literal3", "Literal1/Literal2/Literal3")] + [InlineData("/Literal1/Literal2/Literal3/4", "Literal1/Literal2/Literal3/{*constrainedCatchAll:int}")] + [InlineData("/Literal1/Literal2/Literal3/Literal4", "Literal1/Literal2/Literal3/{*catchAll}")] + [InlineData("/1", "{constrained1:int}")] + [InlineData("/1/2", "{constrained1:int}/{constrained2:int}")] + [InlineData("/1/2/3", "{constrained1:int}/{constrained2:int}/{constrained3:int}")] + [InlineData("/1/2/3/4", "{constrained1:int}/{constrained2:int}/{constrained3:int}/{*constrainedCatchAll:int}")] + [InlineData("/1/2/3/CatchAll4", "{constrained1:int}/{constrained2:int}/{constrained3:int}/{*catchAll}")] + [InlineData("/parameter1", "{parameter1}")] + [InlineData("/parameter1/parameter2", "{parameter1}/{parameter2}")] + [InlineData("/parameter1/parameter2/parameter3", "{parameter1}/{parameter2}/{parameter3}")] + [InlineData("/parameter1/parameter2/parameter3/4", "{parameter1}/{parameter2}/{parameter3}/{*constrainedCatchAll:int}")] + [InlineData("/parameter1/parameter2/parameter3/CatchAll4", "{parameter1}/{parameter2}/{parameter3}/{*catchAll}")] + public virtual async Task Match_IntegrationTest_MultipleEndpoints(string path, string expectedTemplate) + { + // Arrange + var templates = new[] + { + "", + "Literal1", + "Literal1/Literal2", + "Literal1/Literal2/Literal3", + "Literal1/Literal2/Literal3/{*constrainedCatchAll:int}", + "Literal1/Literal2/Literal3/{*catchAll}", + "{constrained1:int}", + "{constrained1:int}/{constrained2:int}", + "{constrained1:int}/{constrained2:int}/{constrained3:int}", + "{constrained1:int}/{constrained2:int}/{constrained3:int}/{*constrainedCatchAll:int}", + "{constrained1:int}/{constrained2:int}/{constrained3:int}/{*catchAll}", + "{parameter1}", + "{parameter1}/{parameter2}", + "{parameter1}/{parameter2}/{parameter3}", + "{parameter1}/{parameter2}/{parameter3}/{*constrainedCatchAll:int}", + "{parameter1}/{parameter2}/{parameter3}/{*catchAll}", + }; + + var endpoints = templates.Select((t) => CreateEndpoint(t)).ToArray(); + var expected = endpoints[Array.IndexOf(templates, expectedTemplate)]; + + var matcher = CreateMatcher(endpoints); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, expected, ignoreValues: true); + } + } +} \ No newline at end of file diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/HttpMethodMatcherPolicyIntegrationTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/HttpMethodMatcherPolicyIntegrationTest.cs new file mode 100644 index 0000000000..1aca0d5a64 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/HttpMethodMatcherPolicyIntegrationTest.cs @@ -0,0 +1,358 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.Extensions.DependencyInjection; +using Xunit; +using static Microsoft.AspNetCore.Routing.Matching.HttpMethodMatcherPolicy; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // End-to-end tests for the HTTP method matching functionality + public class HttpMethodMatcherPolicyIntegrationTest + { + [Fact] + public async Task Match_HttpMethod() + { + // Arrange + var endpoint = CreateEndpoint("/hello", httpMethods: new string[] { "GET", }); + + var matcher = CreateMatcher(endpoint); + var (httpContext, context) = CreateContext("/hello", "GET"); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint); + } + + [Fact] + public async Task Match_HttpMethod_CORS() + { + // Arrange + var endpoint = CreateEndpoint("/hello", httpMethods: new string[] { "GET", }, acceptCorsPreflight: true); + + var matcher = CreateMatcher(endpoint); + var (httpContext, context) = CreateContext("/hello", "GET"); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint); + } + + [Fact] + public async Task Match_HttpMethod_CORS_Preflight() + { + // Arrange + var endpoint = CreateEndpoint("/hello", httpMethods: new string[] { "GET", }, acceptCorsPreflight: true); + + var matcher = CreateMatcher(endpoint); + var (httpContext, context) = CreateContext("/hello", "GET", corsPreflight: true); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint); + } + + + [Fact] // Nothing here supports OPTIONS, so it goes to a 405. + public async Task NotMatch_HttpMethod_CORS_Preflight() + { + // Arrange + var endpoint = CreateEndpoint("/hello", httpMethods: new string[] { "GET", }, acceptCorsPreflight: false); + + var matcher = CreateMatcher(endpoint); + var (httpContext, context) = CreateContext("/hello", "GET", corsPreflight: true); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + Assert.NotSame(endpoint, context.Endpoint); + Assert.Same(HttpMethodMatcherPolicy.Http405EndpointDisplayName, context.Endpoint.DisplayName); + } + + [Fact] + public async Task Match_HttpMethod_CaseInsensitive() + { + // Arrange + var endpoint = CreateEndpoint("/hello", httpMethods: new string[] { "GeT", }); + + var matcher = CreateMatcher(endpoint); + var (httpContext, context) = CreateContext("/hello", "GET"); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint); + } + + [Fact] + public async Task Match_HttpMethod_CaseInsensitive_CORS_Preflight() + { + // Arrange + var endpoint = CreateEndpoint("/hello", httpMethods: new string[] { "GeT", }, acceptCorsPreflight: true); + + var matcher = CreateMatcher(endpoint); + var (httpContext, context) = CreateContext("/hello", "GET", corsPreflight: true); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint); + } + + [Fact] + public async Task Match_NoMetadata_MatchesAnyHttpMethod() + { + // Arrange + var endpoint = CreateEndpoint("/hello"); + + var matcher = CreateMatcher(endpoint); + var (httpContext, context) = CreateContext("/hello", "GET"); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint); + } + + [Fact] + public async Task Match_NoMetadata_MatchesAnyHttpMethod_CORS_Preflight() + { + // Arrange + var endpoint = CreateEndpoint("/hello", acceptCorsPreflight: true); + + var matcher = CreateMatcher(endpoint); + var (httpContext, context) = CreateContext("/hello", "GET", corsPreflight: true); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint); + } + + [Fact] // This matches because the endpoint accepts OPTIONS + public async Task Match_NoMetadata_MatchesAnyHttpMethod_CORS_Preflight_DoesNotSupportPreflight() + { + // Arrange + var endpoint = CreateEndpoint("/hello", acceptCorsPreflight: false); + + var matcher = CreateMatcher(endpoint); + var (httpContext, context) = CreateContext("/hello", "GET", corsPreflight: true); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint); + } + + [Fact] + public async Task Match_EmptyMethodList_MatchesAnyHttpMethod() + { + // Arrange + var endpoint = CreateEndpoint("/hello", httpMethods: new string[] { }); + + var matcher = CreateMatcher(endpoint); + var (httpContext, context) = CreateContext("/hello", "GET"); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint); + } + + [Fact] // When all of the candidates handles specific verbs, use a 405 endpoint + public async Task NotMatch_HttpMethod_Returns405Endpoint() + { + // Arrange + var endpoint1 = CreateEndpoint("/hello", httpMethods: new string[] { "GET", "PUT" }); + var endpoint2 = CreateEndpoint("/hello", httpMethods: new string[] { "DELETE" }); + + var matcher = CreateMatcher(endpoint1, endpoint2); + var (httpContext, context) = CreateContext("/hello", "POST"); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + Assert.NotSame(endpoint1, context.Endpoint); + Assert.NotSame(endpoint2, context.Endpoint); + + Assert.Same(HttpMethodMatcherPolicy.Http405EndpointDisplayName, context.Endpoint.DisplayName); + + // Invoke the endpoint + await context.Endpoint.RequestDelegate(httpContext); + Assert.Equal(405, httpContext.Response.StatusCode); + Assert.Equal("DELETE, GET, PUT", httpContext.Response.Headers["Allow"]); + } + + [Fact] // When all of the candidates handles specific verbs, use a 405 endpoint + public async Task NotMatch_HttpMethod_CORS_DoesNotReturn405() + { + // Arrange + var endpoint1 = CreateEndpoint("/hello", httpMethods: new string[] { "GET", "PUT" }, acceptCorsPreflight: true); + var endpoint2 = CreateEndpoint("/hello", httpMethods: new string[] { "DELETE" }); + + var matcher = CreateMatcher(endpoint1, endpoint2); + var (httpContext, context) = CreateContext("/hello", "POST", corsPreflight: true); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertNotMatch(context, httpContext); + } + + [Fact] // When one of the candidates handles all verbs, dont use a 405 endpoint + public async Task NotMatch_HttpMethod_WithAllMethodEndpoint_DoesNotReturn405() + { + // Arrange + var endpoint1 = CreateEndpoint("/{x:int}", httpMethods: new string[] { }); + var endpoint2 = CreateEndpoint("/hello", httpMethods: new string[] { "DELETE" }); + + var matcher = CreateMatcher(endpoint1, endpoint2); + var (httpContext, context) = CreateContext("/hello", "POST"); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertNotMatch(context, httpContext); + } + + [Fact] + public async Task Match_EndpointWithHttpMethodPreferred() + { + // Arrange + var endpoint1 = CreateEndpoint("/hello", httpMethods: new string[] { "GET", }); + var endpoint2 = CreateEndpoint("/bar"); + + var matcher = CreateMatcher(endpoint1, endpoint2); + var (httpContext, context) = CreateContext("/hello", "GET"); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint1); + } + + [Fact] + public async Task Match_EndpointWithHttpMethodPreferred_EmptyList() + { + // Arrange + var endpoint1 = CreateEndpoint("/hello", httpMethods: new string[] { "GET", }); + var endpoint2 = CreateEndpoint("/bar", httpMethods: new string[] { }); + + var matcher = CreateMatcher(endpoint1, endpoint2); + var (httpContext, context) = CreateContext("/hello", "GET"); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint1); + } + + [Fact] // The non-http-method-specific endpoint is part of the same candidate set + public async Task Match_EndpointWithHttpMethodPreferred_FallsBackToNonSpecific() + { + // Arrange + var endpoint1 = CreateEndpoint("/{x}", httpMethods: new string[] { "GET", }); + var endpoint2 = CreateEndpoint("/{x}", httpMethods: new string[] { }); + + var matcher = CreateMatcher(endpoint1, endpoint2); + var (httpContext, context) = CreateContext("/hello", "POST"); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint2, ignoreValues: true); + } + + private static Matcher CreateMatcher(params RouteEndpoint[] endpoints) + { + var services = new ServiceCollection() + .AddOptions() + .AddLogging() + .AddRouting() + .BuildServiceProvider(); + + var builder = services.GetRequiredService(); + for (var i = 0; i < endpoints.Length; i++) + { + builder.AddEndpoint(endpoints[i]); + } + + return builder.Build(); + } + + internal static (HttpContext httpContext, EndpointSelectorContext context) CreateContext( + string path, + string httpMethod, + bool corsPreflight = false) + { + var httpContext = new DefaultHttpContext(); + httpContext.Request.Method = corsPreflight ? PreflightHttpMethod : httpMethod; + httpContext.Request.Path = path; + + if (corsPreflight) + { + httpContext.Request.Headers[OriginHeader] = "example.com"; + httpContext.Request.Headers[AccessControlRequestMethod] = httpMethod; + } + + var context = new EndpointSelectorContext(); + httpContext.Features.Set(context); + httpContext.Features.Set(context); + + return (httpContext, context); + } + internal static RouteEndpoint CreateEndpoint( + string template, + object defaults = null, + object constraints = null, + int order = 0, + string[] httpMethods = null, + bool acceptCorsPreflight = false) + { + var metadata = new List(); + if (httpMethods != null) + { + metadata.Add(new HttpMethodMetadata(httpMethods ?? Array.Empty(), acceptCorsPreflight)); + } + + var displayName = "endpoint: " + template + " " + string.Join(", ", httpMethods ?? new[] { "(any)" }); + return new RouteEndpoint( + TestConstants.EmptyRequestDelegate, + RoutePatternFactory.Parse(template, defaults, constraints), + order, + new EndpointMetadataCollection(metadata), + displayName); + } + + internal (Matcher matcher, RouteEndpoint endpoint) CreateMatcher(string template) + { + var endpoint = CreateEndpoint(template); + return (CreateMatcher(endpoint), endpoint); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/HttpMethodMatcherPolicyTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/HttpMethodMatcherPolicyTest.cs new file mode 100644 index 0000000000..37353903d0 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/HttpMethodMatcherPolicyTest.cs @@ -0,0 +1,301 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Patterns; +using Xunit; +using static Microsoft.AspNetCore.Routing.Matching.HttpMethodMatcherPolicy; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class HttpMethodMatcherPolicyTest + { + [Fact] + public void AppliesToNode_EndpointWithoutMetadata_ReturnsFalse() + { + // Arrange + var endpoints = new[] { CreateEndpoint("/", null), }; + + var policy = CreatePolicy(); + + // Act + var result = policy.AppliesToEndpoints(endpoints); + + // Assert + Assert.False(result); + } + + [Fact] + public void AppliesToNode_EndpointWithoutHttpMethods_ReturnsFalse() + { + // Arrange + var endpoints = new[] + { + CreateEndpoint("/", new HttpMethodMetadata(Array.Empty())), + }; + + var policy = CreatePolicy(); + + // Act + var result = policy.AppliesToEndpoints(endpoints); + + // Assert + Assert.False(result); + } + + [Fact] + public void AppliesToNode_EndpointHasHttpMethods_ReturnsTrue() + { + // Arrange + var endpoints = new[] + { + CreateEndpoint("/", new HttpMethodMetadata(Array.Empty())), + CreateEndpoint("/", new HttpMethodMetadata(new[] { "GET", })), + }; + + var policy = CreatePolicy(); + + // Act + var result = policy.AppliesToEndpoints(endpoints); + + // Assert + Assert.True(result); + } + + [Fact] + public void GetEdges_GroupsByHttpMethod() + { + // Arrange + var endpoints = new[] + { + // These are arrange in an order that we won't actually see in a product scenario. It's done + // this way so we can verify that ordering is preserved by GetEdges. + CreateEndpoint("/", new HttpMethodMetadata(new[] { "GET", })), + CreateEndpoint("/", new HttpMethodMetadata(Array.Empty())), + CreateEndpoint("/", new HttpMethodMetadata(new[] { "GET", "PUT", "POST" })), + CreateEndpoint("/", new HttpMethodMetadata(new[] { "PUT", "POST" })), + CreateEndpoint("/", new HttpMethodMetadata(Array.Empty())), + }; + + var policy = CreatePolicy(); + + // Act + var edges = policy.GetEdges(endpoints); + + // Assert + Assert.Collection( + edges.OrderBy(e => e.State), + e => + { + Assert.Equal(new EdgeKey(AnyMethod, isCorsPreflightRequest: false), e.State); + Assert.Equal(new[] { endpoints[1], endpoints[4], }, e.Endpoints.ToArray()); + }, + e => + { + Assert.Equal(new EdgeKey("GET", isCorsPreflightRequest: false), e.State); + Assert.Equal(new[] { endpoints[0], endpoints[1], endpoints[2], endpoints[4], }, e.Endpoints.ToArray()); + }, + e => + { + Assert.Equal(new EdgeKey("POST", isCorsPreflightRequest: false), e.State); + Assert.Equal(new[] { endpoints[1], endpoints[2], endpoints[3], endpoints[4], }, e.Endpoints.ToArray()); + }, + e => + { + Assert.Equal(new EdgeKey("PUT", isCorsPreflightRequest: false), e.State); + Assert.Equal(new[] { endpoints[1], endpoints[2], endpoints[3], endpoints[4], }, e.Endpoints.ToArray()); + }); + } + + [Fact] + public void GetEdges_GroupsByHttpMethod_Cors() + { + // Arrange + var endpoints = new[] + { + // These are arrange in an order that we won't actually see in a product scenario. It's done + // this way so we can verify that ordering is preserved by GetEdges. + CreateEndpoint("/", new HttpMethodMetadata(new[] { "GET", })), + CreateEndpoint("/", new HttpMethodMetadata(Array.Empty())), + CreateEndpoint("/", new HttpMethodMetadata(new[] { "GET", "PUT", "POST" }, acceptCorsPreflight: true)), + CreateEndpoint("/", new HttpMethodMetadata(new[] { "PUT", "POST" })), + CreateEndpoint("/", new HttpMethodMetadata(Array.Empty(), acceptCorsPreflight: true)), + }; + + var policy = CreatePolicy(); + + // Act + var edges = policy.GetEdges(endpoints); + + // Assert + Assert.Collection( + edges.OrderBy(e => e.State), + e => + { + Assert.Equal(new EdgeKey(AnyMethod, isCorsPreflightRequest: false), e.State); + Assert.Equal(new[] { endpoints[1], endpoints[4], }, e.Endpoints.ToArray()); + }, + e => + { + Assert.Equal(new EdgeKey(AnyMethod, isCorsPreflightRequest: true), e.State); + Assert.Equal(new[] { endpoints[4], }, e.Endpoints.ToArray()); + }, + e => + { + Assert.Equal(new EdgeKey("GET", isCorsPreflightRequest: false), e.State); + Assert.Equal(new[] { endpoints[0], endpoints[1], endpoints[2], endpoints[4], }, e.Endpoints.ToArray()); + }, + e => + { + Assert.Equal(new EdgeKey("GET", isCorsPreflightRequest: true), e.State); + Assert.Equal(new[] { endpoints[2], endpoints[4], }, e.Endpoints.ToArray()); + }, + e => + { + Assert.Equal(new EdgeKey("POST", isCorsPreflightRequest: false), e.State); + Assert.Equal(new[] { endpoints[1], endpoints[2], endpoints[3], endpoints[4], }, e.Endpoints.ToArray()); + }, + e => + { + Assert.Equal(new EdgeKey("POST", isCorsPreflightRequest: true), e.State); + Assert.Equal(new[] { endpoints[2], endpoints[4], }, e.Endpoints.ToArray()); + }, + e => + { + Assert.Equal(new EdgeKey("PUT", isCorsPreflightRequest: false), e.State); + Assert.Equal(new[] { endpoints[1], endpoints[2], endpoints[3], endpoints[4], }, e.Endpoints.ToArray()); + }, + e => + { + Assert.Equal(new EdgeKey("PUT", isCorsPreflightRequest: true), e.State); + Assert.Equal(new[] { endpoints[2], endpoints[4], }, e.Endpoints.ToArray()); + }); + } + + [Fact] // See explanation in GetEdges for how this case is different + public void GetEdges_GroupsByHttpMethod_CreatesHttp405Endpoint() + { + // Arrange + var endpoints = new[] + { + // These are arrange in an order that we won't actually see in a product scenario. It's done + // this way so we can verify that ordering is preserved by GetEdges. + CreateEndpoint("/", new HttpMethodMetadata(new[] { "GET", })), + CreateEndpoint("/", new HttpMethodMetadata(new[] { "GET", "PUT", "POST" })), + CreateEndpoint("/", new HttpMethodMetadata(new[] { "PUT", "POST" })), + }; + + var policy = CreatePolicy(); + + // Act + var edges = policy.GetEdges(endpoints); + + // Assert + Assert.Collection( + edges.OrderBy(e => e.State), + e => + { + Assert.Equal(new EdgeKey(AnyMethod, isCorsPreflightRequest: false), e.State); + Assert.Equal(Http405EndpointDisplayName, e.Endpoints.Single().DisplayName); + }, + e => + { + Assert.Equal(new EdgeKey("GET", isCorsPreflightRequest: false), e.State); + Assert.Equal(new[] { endpoints[0], endpoints[1], }, e.Endpoints.ToArray()); + }, + e => + { + Assert.Equal(new EdgeKey("POST", isCorsPreflightRequest: false), e.State); + Assert.Equal(new[] { endpoints[1], endpoints[2], }, e.Endpoints.ToArray()); + }, + e => + { + Assert.Equal(new EdgeKey("PUT", isCorsPreflightRequest: false), e.State); + Assert.Equal(new[] { endpoints[1], endpoints[2], }, e.Endpoints.ToArray()); + }); + + } + + [Fact] // See explanation in GetEdges for how this case is different + public void GetEdges_GroupsByHttpMethod_CreatesHttp405Endpoint_CORS() + { + // Arrange + var endpoints = new[] + { + // These are arrange in an order that we won't actually see in a product scenario. It's done + // this way so we can verify that ordering is preserved by GetEdges. + CreateEndpoint("/", new HttpMethodMetadata(new[] { "GET", })), + CreateEndpoint("/", new HttpMethodMetadata(new[] { "GET", "PUT", "POST" }, acceptCorsPreflight: true)), + CreateEndpoint("/", new HttpMethodMetadata(new[] { "PUT", "POST" })), + }; + + var policy = CreatePolicy(); + + // Act + var edges = policy.GetEdges(endpoints); + + // Assert + Assert.Collection( + edges.OrderBy(e => e.State), + e => + { + Assert.Equal(new EdgeKey(AnyMethod, isCorsPreflightRequest: false), e.State); + Assert.Equal(Http405EndpointDisplayName, e.Endpoints.Single().DisplayName); + }, + e => + { + Assert.Equal(new EdgeKey("GET", isCorsPreflightRequest: false), e.State); + Assert.Equal(new[] { endpoints[0], endpoints[1], }, e.Endpoints.ToArray()); + }, + e => + { + Assert.Equal(new EdgeKey("GET", isCorsPreflightRequest: true), e.State); + Assert.Equal(new[] { endpoints[1], }, e.Endpoints.ToArray()); + }, + e => + { + Assert.Equal(new EdgeKey("POST", isCorsPreflightRequest: false), e.State); + Assert.Equal(new[] { endpoints[1], endpoints[2], }, e.Endpoints.ToArray()); + }, + e => + { + Assert.Equal(new EdgeKey("POST", isCorsPreflightRequest: true), e.State); + Assert.Equal(new[] { endpoints[1], }, e.Endpoints.ToArray()); + }, + e => + { + Assert.Equal(new EdgeKey("PUT", isCorsPreflightRequest: false), e.State); + Assert.Equal(new[] { endpoints[1], endpoints[2], }, e.Endpoints.ToArray()); + }, + e => + { + Assert.Equal(new EdgeKey("PUT", isCorsPreflightRequest: true), e.State); + Assert.Equal(new[] { endpoints[1], }, e.Endpoints.ToArray()); + }); + } + + private static RouteEndpoint CreateEndpoint(string template, HttpMethodMetadata httpMethodMetadata) + { + var metadata = new List(); + if (httpMethodMetadata != null) + { + metadata.Add(httpMethodMetadata); + } + + return new RouteEndpoint( + TestConstants.EmptyRequestDelegate, + RoutePatternFactory.Parse(template), + 0, + new EndpointMetadataCollection(metadata), + $"test: {template}"); + } + + private static HttpMethodMatcherPolicy CreatePolicy() + { + return new HttpMethodMatcherPolicy(); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/ILEmitTrieFactoryTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/ILEmitTrieFactoryTest.cs new file mode 100644 index 0000000000..738646dc11 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/ILEmitTrieFactoryTest.cs @@ -0,0 +1,53 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +#if IL_EMIT +using System; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class ILEmitTrieFactoryTest + { + // We never vectorize on 32bit, so that's part of the test. + [Fact] + public void ShouldVectorize_ReturnsTrue_ForLargeEnoughStrings() + { + // Arrange + var is64Bit = IntPtr.Size == 8; + var expected = is64Bit; + + var entries = new[] + { + ("foo", 0), + ("badr", 0), + ("", 0), + }; + + // Act + var actual = ILEmitTrieFactory.ShouldVectorize(entries); + + // Assert + Assert.Equal(expected, actual); + } + + [Fact] + public void ShouldVectorize_ReturnsFalseForSmallStrings() + { + // Arrange + var entries = new[] + { + ("foo", 0), + ("sma", 0), + ("", 0), + }; + + // Act + var actual = ILEmitTrieFactory.ShouldVectorize(entries); + + // Assert + Assert.False(actual); + } + } +} +#endif diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/ILEmitTrieJumpTableTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/ILEmitTrieJumpTableTest.cs new file mode 100644 index 0000000000..5106b40beb --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/ILEmitTrieJumpTableTest.cs @@ -0,0 +1,228 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +#if IL_EMIT +using Moq; +using System.Threading.Tasks; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // We get a lot of good coverage of basics since this implementation is used + // as the default in many cases. The tests here are focused on details of the + // implementation (boundaries, casing, non-ASCII). + public abstract class ILEmitTreeJumpTableTestBase : MultipleEntryJumpTableTest + { + public abstract bool Vectorize { get; } + + internal override JumpTable CreateTable( + int defaultDestination, + int exitDestination, + params (string text, int destination)[] entries) + { + var fallback = new DictionaryJumpTable(defaultDestination, exitDestination, entries); + var table = new ILEmitTrieJumpTable(defaultDestination, exitDestination, entries, Vectorize, fallback); + table.InitializeILDelegate(); + return table; + } + + [Fact] // Not calling CreateTable here because we want to test the initialization + public async Task InitializeILDelegateAsync_ReplacesDelegate() + { + // Arrange + var table = new ILEmitTrieJumpTable(0, -1, new[] { ("hi", 1), }, Vectorize, Mock.Of()); + var original = table._getDestination; + + // Act + await table.InitializeILDelegateAsync(); + + // Assert + Assert.NotSame(original, table._getDestination); + } + + // Tests that we can detect non-ASCII characters and use the fallback jump table. + // Testing different indices since that affects which part of the code is running. + // \u007F = lowest non-ASCII character + // \uFFFF = highest non-ASCII character + [Theory] + + // non-ASCII character in first section non-vectorized comparisons + [InlineData("he\u007F", "he\u007Flo-world", 0, 3)] + [InlineData("he\uFFFF", "he\uFFFFlo-world", 0, 3)] + [InlineData("e\u007F", "he\u007Flo-world", 1, 2)] + [InlineData("e\uFFFF", "he\uFFFFlo-world", 1, 2)] + [InlineData("\u007F", "he\u007Flo-world", 2, 1)] + [InlineData("\uFFFF", "he\uFFFFlo-world", 2, 1)] + + // non-ASCII character in first section vectorized comparions + [InlineData("hel\u007F", "hel\u007Fo-world", 0, 4)] + [InlineData("hel\uFFFF", "hel\uFFFFo-world", 0, 4)] + [InlineData("el\u007Fo", "hel\u007Fo-world", 1, 4)] + [InlineData("el\uFFFFo", "hel\uFFFFo-world", 1, 4)] + [InlineData("l\u007Fo-", "hel\u007Fo-world", 2, 4)] + [InlineData("l\uFFFFo-", "hel\uFFFFo-world", 2, 4)] + [InlineData("\u007Fo-w", "hel\u007Fo-world", 3, 4)] + [InlineData("\uFFFFo-w", "hel\uFFFFo-world", 3, 4)] + + // non-ASCII character in second section non-vectorized comparisons + [InlineData("hello-\u007F", "hello-\u007Forld", 0, 7)] + [InlineData("hello-\uFFFF", "hello-\uFFFForld", 0, 7)] + [InlineData("ello-\u007F", "hello-\u007Forld", 1, 6)] + [InlineData("ello-\uFFFF", "hello-\uFFFForld", 1, 6)] + [InlineData("llo-\u007F", "hello-\u007Forld", 2, 5)] + [InlineData("llo-\uFFFF", "hello-\uFFFFForld", 2, 5)] + + // non-ASCII character in first section vectorized comparions + [InlineData("hello-w\u007F", "hello-w\u007Forld", 0, 8)] + [InlineData("hello-w\uFFFF", "hello-w\uFFFForld", 0, 8)] + [InlineData("ello-w\u007Fo", "hello-w\u007Forld", 1, 8)] + [InlineData("ello-w\uFFFFo", "hello-w\uFFFForld", 1, 8)] + [InlineData("llo-w\u007For", "hello-w\u007Forld", 2, 8)] + [InlineData("llo-w\uFFFFor", "hello-w\uFFFForld", 2, 8)] + [InlineData("lo-w\u007Forl", "hello-w\u007Forld", 3, 8)] + [InlineData("lo-w\uFFFForl", "hello-w\uFFFForld", 3, 8)] + public void GetDestination_Found_IncludesNonAsciiCharacters(string entry, string path, int start, int length) + { + // Makes it easy to spot invalid tests + Assert.Equal(entry.Length, length); + Assert.Equal(entry, path.Substring(start, length), ignoreCase: true); + + // Arrange + var table = CreateTable(0, -1, new[] { (entry, 1), }); + + var segment = new PathSegment(start, length); + + // Act + var result = table.GetDestination(path, segment); + + // Assert + Assert.Equal(1, result); + } + + // Tests for difference in casing with ASCII casing rules. Verifies our case + // manipulation algorthm is correct. + // + // We convert from upper case to lower + // 'A' and 'a' are 32 bits apart at the low end + // 'Z' and 'z' are 32 bits apart at the high end + [Theory] + + // character in first section non-vectorized comparisons + [InlineData("heA", "healo-world", 0, 3)] + [InlineData("heZ", "hezlo-world", 0, 3)] + [InlineData("eA", "healo-world", 1, 2)] + [InlineData("eZ", "hezlo-world", 1, 2)] + [InlineData("A", "healo-world", 2, 1)] + [InlineData("Z", "hezlo-world", 2, 1)] + + // character in first section vectorized comparions + [InlineData("helA", "helao-world", 0, 4)] + [InlineData("helZ", "helzo-world", 0, 4)] + [InlineData("elAo", "helao-world", 1, 4)] + [InlineData("elZo", "helzo-world", 1, 4)] + [InlineData("lAo-", "helao-world", 2, 4)] + [InlineData("lZo-", "helzo-world", 2, 4)] + [InlineData("Ao-w", "helao-world", 3, 4)] + [InlineData("Zo-w", "helzo-world", 3, 4)] + + // character in second section non-vectorized comparisons + [InlineData("hello-A", "hello-aorld", 0, 7)] + [InlineData("hello-Z", "hello-zorld", 0, 7)] + [InlineData("ello-A", "hello-aorld", 1, 6)] + [InlineData("ello-Z", "hello-zorld", 1, 6)] + [InlineData("llo-A", "hello-aorld", 2, 5)] + [InlineData("llo-Z", "hello-zForld", 2, 5)] + + // character in first section vectorized comparions + [InlineData("hello-wA", "hello-waorld", 0, 8)] + [InlineData("hello-wZ", "hello-wzorld", 0, 8)] + [InlineData("ello-wAo", "hello-waorld", 1, 8)] + [InlineData("ello-wZo", "hello-wzorld", 1, 8)] + [InlineData("llo-wAor", "hello-waorld", 2, 8)] + [InlineData("llo-wZor", "hello-wzorld", 2, 8)] + [InlineData("lo-wAorl", "hello-waorld", 3, 8)] + [InlineData("lo-wZorl", "hello-wzorld", 3, 8)] + public void GetDestination_Found_IncludesCharactersWithCasingDifference(string entry, string path, int start, int length) + { + // Makes it easy to spot invalid tests + Assert.Equal(entry.Length, length); + Assert.Equal(entry, path.Substring(start, length), ignoreCase: true); + + // Arrange + var table = CreateTable(0, -1, new[] { (entry, 1), }); + + var segment = new PathSegment(start, length); + + // Act + var result = table.GetDestination(path, segment); + + // Assert + Assert.Equal(1, result); + } + + // Tests for difference in casing with ASCII casing rules. Verifies our case + // manipulation algorthm is correct. + // + // We convert from upper case to lower + // '@' and '`' are 32 bits apart at the low end + // '[' and '}' are 32 bits apart at the high end + // + // How to understand these tests: + // "an @ should not be converted to a ` since it is out of range" + [Theory] + + // character in first section non-vectorized comparisons + [InlineData("he@", "he`lo-world", 0, 3)] + [InlineData("he[", "he{lo-world", 0, 3)] + [InlineData("e@", "he`lo-world", 1, 2)] + [InlineData("e[", "he{lo-world", 1, 2)] + [InlineData("@", "he`lo-world", 2, 1)] + [InlineData("[", "he{lo-world", 2, 1)] + + // character in first section vectorized comparions + [InlineData("hel@", "hel`o-world", 0, 4)] + [InlineData("hel[", "hel{o-world", 0, 4)] + [InlineData("el@o", "hel`o-world", 1, 4)] + [InlineData("el[o", "hel{o-world", 1, 4)] + [InlineData("l@o-", "hel`o-world", 2, 4)] + [InlineData("l[o-", "hel{o-world", 2, 4)] + [InlineData("@o-w", "hel`o-world", 3, 4)] + [InlineData("[o-w", "hel{o-world", 3, 4)] + + // character in second section non-vectorized comparisons + [InlineData("hello-@", "hello-`orld", 0, 7)] + [InlineData("hello-[", "hello-{orld", 0, 7)] + [InlineData("ello-@", "hello-`orld", 1, 6)] + [InlineData("ello-[", "hello-{orld", 1, 6)] + [InlineData("llo-@", "hello-`orld", 2, 5)] + [InlineData("llo-[", "hello-{Forld", 2, 5)] + + // character in first section vectorized comparions + [InlineData("hello-w@", "hello-w`orld", 0, 8)] + [InlineData("hello-w[", "hello-w{orld", 0, 8)] + [InlineData("ello-w@o", "hello-w`orld", 1, 8)] + [InlineData("ello-w[o", "hello-w{orld", 1, 8)] + [InlineData("llo-w@or", "hello-w`orld", 2, 8)] + [InlineData("llo-w[or", "hello-w{orld", 2, 8)] + [InlineData("lo-w@orl", "hello-w`orld", 3, 8)] + [InlineData("lo-w[orl", "hello-w{orld", 3, 8)] + public void GetDestination_NotFound_IncludesCharactersWithCasingDifference(string entry, string path, int start, int length) + { + // Makes it easy to spot invalid tests + Assert.Equal(entry.Length, length); + Assert.NotEqual(entry, path.Substring(start, length)); + + // Arrange + var table = CreateTable(0, -1, new[] { (entry, 1), }); + + var segment = new PathSegment(start, length); + + // Act + var result = table.GetDestination(path, segment); + + // Assert + Assert.Equal(0, result); + } + } +} +#endif diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/LinearSearchJumpTableTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/LinearSearchJumpTableTest.cs new file mode 100644 index 0000000000..b7557488a4 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/LinearSearchJumpTableTest.cs @@ -0,0 +1,17 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class LinearSearchJumpTableTest : MultipleEntryJumpTableTest + { + internal override JumpTable CreateTable( + int defaultDestination, + int existDestination, + params (string text, int destination)[] entries) + { + return new LinearSearchJumpTable(defaultDestination, existDestination, entries); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/MatcherAssert.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/MatcherAssert.cs new file mode 100644 index 0000000000..6053946310 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/MatcherAssert.cs @@ -0,0 +1,99 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; +using Xunit.Sdk; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal static class MatcherAssert + { + public static void AssertMatch(EndpointSelectorContext context, HttpContext httpContext, Endpoint expected) + { + AssertMatch(context, httpContext, expected, new RouteValueDictionary()); + } + + public static void AssertMatch(EndpointSelectorContext context, HttpContext httpContext, Endpoint expected, bool ignoreValues) + { + AssertMatch(context, httpContext, expected, new RouteValueDictionary(), ignoreValues); + } + + public static void AssertMatch(EndpointSelectorContext context, HttpContext httpContext, Endpoint expected, object values) + { + AssertMatch(context, httpContext, expected, new RouteValueDictionary(values)); + } + + public static void AssertMatch(EndpointSelectorContext context, HttpContext httpContext, Endpoint expected, string[] keys, string[] values) + { + keys = keys ?? Array.Empty(); + values = values ?? Array.Empty(); + + if (keys.Length != values.Length) + { + throw new XunitException($"Keys and Values must be the same length."); + } + + var zipped = keys.Zip(values, (k, v) => new KeyValuePair(k, v)); + AssertMatch(context, httpContext, expected, new RouteValueDictionary(zipped)); + } + + public static void AssertMatch( + EndpointSelectorContext context, + HttpContext httpContext, + Endpoint expected, + RouteValueDictionary values, + bool ignoreValues = false) + { + if (context.Endpoint == null) + { + throw new XunitException($"Was expected to match '{expected.DisplayName}' but did not match."); + } + + var actualValues = httpContext.Features.Get().RouteValues; + + if (actualValues == null) + { + throw new XunitException("RouteValues is null."); + } + + if (!object.ReferenceEquals(expected, context.Endpoint)) + { + throw new XunitException( + $"Was expected to match '{expected.DisplayName}' but matched " + + $"'{context.Endpoint.DisplayName}' with values: {FormatRouteValues(actualValues)}."); + } + + if (!ignoreValues) + { + // Note: this comparison is intended for unit testing, and is stricter than necessary to make tests + // more precise. Route value comparisons in product code are more flexible than a simple .Equals. + if (values.Count != actualValues.Count || + !values.OrderBy(kvp => kvp.Key).SequenceEqual(actualValues.OrderBy(kvp => kvp.Key))) + { + throw new XunitException( + $"Was expected to match '{expected.DisplayName}' with values {FormatRouteValues(values)} but matched " + + $"values: {FormatRouteValues(actualValues)}."); + } + } + } + + public static void AssertNotMatch(EndpointSelectorContext context, HttpContext httpContext) + { + if (context.Endpoint != null) + { + throw new XunitException( + $"Was expected not to match '{context.Endpoint.DisplayName}' " + + $"but matched with values: {FormatRouteValues(httpContext.Features.Get().RouteValues)}."); + } + } + + private static string FormatRouteValues(RouteValueDictionary values) + { + return "{" + string.Join(", ", values.Select(kvp => $"{kvp.Key} = '{kvp.Value}'")) + "}"; + } + } +} \ No newline at end of file diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/MatcherConformanceTest.MultipleEndpoint.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/MatcherConformanceTest.MultipleEndpoint.cs new file mode 100644 index 0000000000..5379da2938 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/MatcherConformanceTest.MultipleEndpoint.cs @@ -0,0 +1,9 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public abstract partial class MatcherConformanceTest + { + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/MatcherConformanceTest.SingleEndpoint.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/MatcherConformanceTest.SingleEndpoint.cs new file mode 100644 index 0000000000..667b5f3f1e --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/MatcherConformanceTest.SingleEndpoint.cs @@ -0,0 +1,329 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading.Tasks; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public abstract partial class MatcherConformanceTest + { + [Fact] + public virtual async Task Match_EmptyRoute() + { + // Arrange + var (matcher, endpoint) = CreateMatcher("/"); + var (httpContext, context) = CreateContext("/"); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint); + } + + [Fact] + public virtual async Task Match_SingleLiteralSegment() + { + // Arrange + var (matcher, endpoint) = CreateMatcher("/simple"); + var (httpContext, context) = CreateContext("/simple"); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint); + } + + [Fact] + public virtual async Task Match_SingleLiteralSegment_TrailingSlash() + { + // Arrange + var (matcher, endpoint) = CreateMatcher("/simple"); + var (httpContext, context) = CreateContext("/simple/"); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint); + } + + [Theory] + [InlineData("/simple")] + [InlineData("/sImpLe")] + [InlineData("/SIMPLE")] + public virtual async Task Match_SingleLiteralSegment_CaseInsensitive(string path) + { + // Arrange + var (matcher, endpoint) = CreateMatcher("/Simple"); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint); + } + + // Some matchers will optimize for the ASCII case + [Theory] + [InlineData("/SÏmple", "/SÏmple")] + [InlineData("/ab\uD834\uDD1Ecd", "/ab\uD834\uDD1Ecd")] // surrogate pair + public virtual async Task Match_SingleLiteralSegment_Unicode(string template, string path) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint); + } + + // Matchers should operate on the decoded representation - a matcher that calls + // `httpContext.Request.Path.ToString()` will break this test. + [Theory] + [InlineData("/S%mple", "/S%mple")] + [InlineData("/S\\imple", "/S\\imple")] // surrogate pair + public virtual async Task Match_SingleLiteralSegment_PercentEncoded(string template, string path) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint); + } + + [Theory] + [InlineData("/")] + [InlineData("/imple")] + [InlineData("/siple")] + [InlineData("/simple1")] + [InlineData("/simple/not-simple")] + [InlineData("/simple/a/b/c")] + public virtual async Task NotMatch_SingleLiteralSegment(string path) + { + // Arrange + var (matcher, endpoint) = CreateMatcher("/simple"); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertNotMatch(context, httpContext); + } + + [Theory] + [InlineData("simple")] + [InlineData("/simple")] + [InlineData("~/simple")] + public virtual async Task Match_Sanitizies_Template(string template) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext("/simple"); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint); + } + + // Matchers do their own 'splitting' of the path into segments, so including + // some extra variation here + [Theory] + [InlineData("/a/b", "/a/b")] + [InlineData("/a/b", "/A/B")] + [InlineData("/a/b", "/a/b/")] + [InlineData("/a/b/c", "/a/b/c")] + [InlineData("/a/b/c", "/a/b/c/")] + [InlineData("/a/b/c/d", "/a/b/c/d")] + [InlineData("/a/b/c/d", "/a/b/c/d/")] + public virtual async Task Match_MultipleLiteralSegments(string template, string path) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint); + } + + // Matchers do their own 'splitting' of the path into segments, so including + // some extra variation here + [Theory] + [InlineData("/a/b", "/")] + [InlineData("/a/b", "/a")] + [InlineData("/a/b", "/a/")] + [InlineData("/a/b", "/a//")] + [InlineData("/a/b", "/aa/")] + [InlineData("/a/b", "/a/bb")] + [InlineData("/a/b", "/a/bb/")] + [InlineData("/a/b/c", "/aa/b/c")] + [InlineData("/a/b/c", "/a/bb/c/")] + [InlineData("/a/b/c", "/a/b/cab")] + [InlineData("/a/b/c", "/d/b/c/")] + [InlineData("/a/b/c", "//b/c")] + [InlineData("/a/b/c", "/a/b//")] + [InlineData("/a/b/c", "/a/b/c/d")] + [InlineData("/a/b/c", "/a/b/c/d/e")] + public virtual async Task NotMatch_MultipleLiteralSegments(string template, string path) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertNotMatch(context, httpContext); + } + + [Fact] + public virtual async Task Match_SingleParameter() + { + // Arrange + var (matcher, endpoint) = CreateMatcher("/{p}"); + var (httpContext, context) = CreateContext("/14"); + var values = new RouteValueDictionary(new { p = "14", }); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint, values); + } + + [Fact] + public virtual async Task Match_Constraint() + { + // Arrange + var (matcher, endpoint) = CreateMatcher("/{p:int}"); + var (httpContext, context) = CreateContext("/14"); + var values = new RouteValueDictionary(new { p = "14", }); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint, values); + } + + [Fact] + public virtual async Task Match_SingleParameter_TrailingSlash() + { + // Arrange + var (matcher, endpoint) = CreateMatcher("/{p}"); + var (httpContext, context) = CreateContext("/14/"); + var values = new RouteValueDictionary(new { p = "14", }); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint, values); + } + + [Fact] + public virtual async Task Match_SingleParameter_WierdNames() + { + // Arrange + var (matcher, endpoint) = CreateMatcher("/foo/{ }/{.!$%}/{dynamic.data}"); + var (httpContext, context) = CreateContext("/foo/space/weirdmatch/matcherid"); + var values = new RouteValueDictionary() + { + { " ", "space" }, + { ".!$%", "weirdmatch" }, + { "dynamic.data", "matcherid" }, + }; + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint, values); + } + + [Theory] + [InlineData("/")] + [InlineData("/a/b")] + [InlineData("/a/b/c")] + [InlineData("//")] + public virtual async Task NotMatch_SingleParameter(string path) + { + // Arrange + var (matcher, endpoint) = CreateMatcher("/{p}"); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertNotMatch(context, httpContext); + } + + [Theory] + [InlineData("/{a}/b", "/54/b", new string[] { "a", }, new string[] { "54", })] + [InlineData("/{a}/b", "/54/b/", new string[] { "a", }, new string[] { "54", })] + [InlineData("/{a}/{b}", "/54/73", new string[] { "a", "b" }, new string[] { "54", "73", })] + [InlineData("/a/{b}/c", "/a/b/c", new string[] { "b", }, new string[] { "b", })] + [InlineData("/a/{b}/c/", "/a/b/c", new string[] { "b", }, new string[] { "b", })] + [InlineData("/{a}/b/{c}", "/54/b/c", new string[] { "a", "c", }, new string[] { "54", "c", })] + [InlineData("/{a}/{b}/{c}", "/54/b/c", new string[] { "a", "b", "c", }, new string[] { "54", "b", "c", })] + public virtual async Task Match_MultipleParameters(string template, string path, string[] keys, string[] values) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertMatch(context, httpContext, endpoint, keys, values); + } + + [Theory] + [InlineData("/{a}/b", "/54/bb")] + [InlineData("/{a}/b", "/54/b/17")] + [InlineData("/{a}/b", "/54/b//")] + [InlineData("/{a}/{b}", "//73")] + [InlineData("/{a}/{b}", "/54//")] + [InlineData("/{a}/{b}", "/54/73/18")] + [InlineData("/a/{b}/c", "/aa/b/c")] + [InlineData("/a/{b}/c", "/a/b/cc")] + [InlineData("/a/{b}/c", "/a/b/c/d")] + [InlineData("/{a}/b/{c}", "/54/bb/c")] + [InlineData("/{a}/{b}/{c}", "/54/b/c/d")] + [InlineData("/{a}/{b}/{c}", "/54/b/c//")] + [InlineData("/{a}/{b}/{c}", "//b/c/")] + [InlineData("/{a}/{b}/{c}", "/54//c/")] + [InlineData("/{a}/{b}/{c}", "/54/b//")] + public virtual async Task NotMatch_MultipleParameters(string template, string path) + { + // Arrange + var (matcher, endpoint) = CreateMatcher(template); + var (httpContext, context) = CreateContext(path); + + // Act + await matcher.MatchAsync(httpContext, context); + + // Assert + MatcherAssert.AssertNotMatch(context, httpContext); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/MatcherConformanceTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/MatcherConformanceTest.cs new file mode 100644 index 0000000000..de2f525a21 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/MatcherConformanceTest.cs @@ -0,0 +1,59 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public abstract partial class MatcherConformanceTest + { + internal abstract Matcher CreateMatcher(params RouteEndpoint[] endpoints); + + internal static (HttpContext httpContext, EndpointSelectorContext context) CreateContext(string path) + { + var httpContext = new DefaultHttpContext(); + httpContext.Request.Method = "TEST"; + httpContext.Request.Path = path; + httpContext.RequestServices = CreateServices(); + + var context = new EndpointSelectorContext(); + httpContext.Features.Set(context); + httpContext.Features.Set(context); + + return (httpContext, context); + } + + // The older routing implementations retrieve services when they first execute. + internal static IServiceProvider CreateServices() + { + var services = new ServiceCollection(); + services.AddLogging(); + return services.BuildServiceProvider(); + } + + internal static RouteEndpoint CreateEndpoint( + string template, + object defaults = null, + object constraints = null, + int? order = null) + { + return new RouteEndpoint( + TestConstants.EmptyRequestDelegate, + RoutePatternFactory.Parse(template, defaults, constraints), + order ?? 0, + EndpointMetadataCollection.Empty, + "endpoint: " + template); + } + + internal (Matcher matcher, RouteEndpoint endpoint) CreateMatcher(string template) + { + var endpoint = CreateEndpoint(template); + return (CreateMatcher(endpoint), endpoint); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/MultipleEntryJumpTableTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/MultipleEntryJumpTableTest.cs new file mode 100644 index 0000000000..1a1a00de2a --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/MultipleEntryJumpTableTest.cs @@ -0,0 +1,80 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public abstract class MultipleEntryJumpTableTest + { + internal abstract JumpTable CreateTable( + int defaultDestination, + int exitDestination, + params (string text, int destination)[] entries); + + [Fact] + public void GetDestination_ZeroLengthSegment_JumpsToExit() + { + // Arrange + var table = CreateTable(0, 1, ("text", 2)); + + // Act + var result = table.GetDestination("ignored", new PathSegment(0, 0)); + + // Assert + Assert.Equal(1, result); + } + + [Fact] + public void GetDestination_NonMatchingSegment_JumpsToDefault() + { + // Arrange + var table = CreateTable(0, 1, ("text", 2)); + + // Act + var result = table.GetDestination("text", new PathSegment(1, 2)); + + // Assert + Assert.Equal(0, result); + } + + [Fact] + public void GetDestination_SegmentMatchingText_JumpsToDestination() + { + // Arrange + var table = CreateTable(0, 1, ("text", 2)); + + // Act + var result = table.GetDestination("some-text", new PathSegment(5, 4)); + + // Assert + Assert.Equal(2, result); + } + + [Fact] + public void GetDestination_SegmentMatchingTextIgnoreCase_JumpsToDestination() + { + // Arrange + var table = CreateTable(0, 1, ("text", 2)); + + // Act + var result = table.GetDestination("some-tExt", new PathSegment(5, 4)); + + // Assert + Assert.Equal(2, result); + } + + [Fact] + public void GetDestination_SegmentMatchingTextIgnoreCase_MultipleEntries() + { + // Arrange + var table = CreateTable(0, 1, ("tezt", 2), ("text", 3)); + + // Act + var result = table.GetDestination("some-tExt", new PathSegment(5, 4)); + + // Assert + Assert.Equal(3, result); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/NonVectorizedILEmitTrieJumpTableTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/NonVectorizedILEmitTrieJumpTableTest.cs new file mode 100644 index 0000000000..3e5b59baf6 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/NonVectorizedILEmitTrieJumpTableTest.cs @@ -0,0 +1,12 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +#if IL_EMIT +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class NonVectorizedILEmitTrieJumpTableTest : ILEmitTreeJumpTableTestBase + { + public override bool Vectorize => false; + } +} +#endif diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/RouteEndpointComparerTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/RouteEndpointComparerTest.cs new file mode 100644 index 0000000000..b6f44d8186 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/RouteEndpointComparerTest.cs @@ -0,0 +1,254 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Patterns; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class RouteEndpointComparerTest + { + [Fact] + public void Compare_PrefersOrder_IfDifferent() + { + // Arrange + var endpoint1 = CreateEndpoint("/", order: 1); + var endpoint2 = CreateEndpoint("/api/foo", order: -1); + + var comparer = CreateComparer(); + + // Act + var result = comparer.Compare(endpoint1, endpoint2); + + // Assert + Assert.Equal(1, result); + } + + [Fact] + public void Compare_PrefersPrecedence_IfOrderIsSame() + { + // Arrange + var endpoint1 = CreateEndpoint("/api/foo", order: 1); + var endpoint2 = CreateEndpoint("/", order: 1); + + var comparer = CreateComparer(); + + // Act + var result = comparer.Compare(endpoint1, endpoint2); + + // Assert + Assert.Equal(1, result); + } + + [Fact] + public void Compare_PrefersPolicy_IfPrecedenceIsSame() + { + // Arrange + var endpoint1 = CreateEndpoint("/", order: 1, new TestMetadata1()); + var endpoint2 = CreateEndpoint("/", order: 1); + + var comparer = CreateComparer(new TestMetadata1Policy()); + + // Act + var result = comparer.Compare(endpoint1, endpoint2); + + // Assert + Assert.Equal(-1, result); + } + + [Fact] + public void Compare_PrefersSecondPolicy_IfFirstPolicyIsSame() + { + // Arrange + var endpoint1 = CreateEndpoint("/", order: 1, new TestMetadata1()); + var endpoint2 = CreateEndpoint("/", order: 1, new TestMetadata1(), new TestMetadata2()); + + var comparer = CreateComparer(new TestMetadata1Policy(), new TestMetadata2Policy()); + + // Act + var result = comparer.Compare(endpoint1, endpoint2); + + // Assert + Assert.Equal(1, result); + } + + [Fact] + public void Compare_PrefersTemplate_IfOtherCriteriaIsSame() + { + // Arrange + var endpoint1 = CreateEndpoint("/foo", order: 1, new TestMetadata1()); + var endpoint2 = CreateEndpoint("/bar", order: 1, new TestMetadata1()); + + var comparer = CreateComparer(new TestMetadata1Policy(), new TestMetadata2Policy()); + + // Act + var result = comparer.Compare(endpoint1, endpoint2); + + // Assert + Assert.Equal(1, result); + } + + [Fact] + public void Compare_ReturnsZero_WhenIdentical() + { + // Arrange + var endpoint1 = CreateEndpoint("/foo", order: 1, new TestMetadata1()); + var endpoint2 = CreateEndpoint("/foo", order: 1, new TestMetadata1()); + + var comparer = CreateComparer(new TestMetadata1Policy(), new TestMetadata2Policy()); + + // Act + var result = comparer.Compare(endpoint1, endpoint2); + + // Assert + Assert.Equal(0, result); + } + + [Fact] + public void Equals_NotEqual_IfOrderDifferent() + { + // Arrange + var endpoint1 = CreateEndpoint("/", order: 1); + var endpoint2 = CreateEndpoint("/api/foo", order: -1); + + var comparer = CreateComparer(); + + // Act + var result = comparer.Equals(endpoint1, endpoint2); + + // Assert + Assert.False(result); + } + + [Fact] + public void Equals_NotEqual_IfPrecedenceDifferent() + { + // Arrange + var endpoint1 = CreateEndpoint("/api/foo", order: 1); + var endpoint2 = CreateEndpoint("/", order: 1); + + var comparer = CreateComparer(); + + // Act + var result = comparer.Equals(endpoint1, endpoint2); + + // Assert + Assert.False(result); + } + + [Fact] + public void Equals_NotEqual_IfFirstPolicyDifferent() + { + // Arrange + var endpoint1 = CreateEndpoint("/", order: 1, new TestMetadata1()); + var endpoint2 = CreateEndpoint("/", order: 1); + + var comparer = CreateComparer(new TestMetadata1Policy()); + + // Act + var result = comparer.Equals(endpoint1, endpoint2); + + // Assert + Assert.False(result); + } + + [Fact] + public void Equals_NotEqual_IfSecondPolicyDifferent() + { + // Arrange + var endpoint1 = CreateEndpoint("/", order: 1, new TestMetadata1()); + var endpoint2 = CreateEndpoint("/", order: 1, new TestMetadata1(), new TestMetadata2()); + + var comparer = CreateComparer(new TestMetadata1Policy(), new TestMetadata2Policy()); + + // Act + var result = comparer.Equals(endpoint1, endpoint2); + + // Assert + Assert.False(result); + } + + [Fact] + public void Equals_Equals_WhenTemplateIsDifferent() + { + // Arrange + var endpoint1 = CreateEndpoint("/foo", order: 1, new TestMetadata1()); + var endpoint2 = CreateEndpoint("/bar", order: 1, new TestMetadata1()); + + var comparer = CreateComparer(new TestMetadata1Policy(), new TestMetadata2Policy()); + + // Act + var result = comparer.Equals(endpoint1, endpoint2); + + // Assert + Assert.True(result); + } + + [Fact] + public void Sort_MoreSpecific_FirstInList() + { + // Arrange + var endpoint1 = CreateEndpoint("/foo", order: -1); + var endpoint2 = CreateEndpoint("/bar/{baz}", order: -1); + var endpoint3 = CreateEndpoint("/bar", order: 0, new TestMetadata1()); + var endpoint4 = CreateEndpoint("/foo", order: 0, new TestMetadata2()); + var endpoint5 = CreateEndpoint("/foo", order: 0); + var endpoint6 = CreateEndpoint("/a{baz}", order: 0, new TestMetadata1(), new TestMetadata2()); + var endpoint7 = CreateEndpoint("/bar{baz}", order: 0, new TestMetadata1(), new TestMetadata2()); + + // Endpoints listed in reverse of the desired order. + var list = new List() { endpoint7, endpoint6, endpoint5, endpoint4, endpoint3, endpoint2, endpoint1, }; + + var comparer = CreateComparer(new TestMetadata1Policy(), new TestMetadata2Policy()); + + // Act + list.Sort(comparer); + + // Assert + Assert.Collection( + list, + e => Assert.Same(endpoint1, e), + e => Assert.Same(endpoint2, e), + e => Assert.Same(endpoint3, e), + e => Assert.Same(endpoint4, e), + e => Assert.Same(endpoint5, e), + e => Assert.Same(endpoint6, e), + e => Assert.Same(endpoint7, e)); + } + + private static RouteEndpoint CreateEndpoint(string template, int order, params object[] metadata) + { + return new RouteEndpoint( + TestConstants.EmptyRequestDelegate, + RoutePatternFactory.Parse(template), + order, + new EndpointMetadataCollection(metadata), + "test: " + template); + } + + private static EndpointComparer CreateComparer(params IEndpointComparerPolicy[] policies) + { + return new EndpointComparer(policies); + } + + private class TestMetadata1 + { + } + + private class TestMetadata1Policy : IEndpointComparerPolicy + { + public IComparer Comparer => EndpointMetadataComparer.Default; + } + + private class TestMetadata2 + { + } + + private class TestMetadata2Policy : IEndpointComparerPolicy + { + public IComparer Comparer => EndpointMetadataComparer.Default; + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/RouteMatcher.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/RouteMatcher.cs new file mode 100644 index 0000000000..39eaee6cdd --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/RouteMatcher.cs @@ -0,0 +1,43 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // This is an adapter to use Route in the conformance tests + internal class RouteMatcher : Matcher + { + private readonly RouteCollection _inner; + + internal RouteMatcher(RouteCollection inner) + { + _inner = inner; + } + + public async override Task MatchAsync(HttpContext httpContext, EndpointSelectorContext context) + { + if (httpContext == null) + { + throw new ArgumentNullException(nameof(httpContext)); + } + + if (context == null) + { + throw new ArgumentNullException(nameof(context)); + } + + var routeContext = new RouteContext(httpContext); + await _inner.RouteAsync(routeContext); + + if (routeContext.Handler != null) + { + context.RouteValues = routeContext.RouteData.Values; + await routeContext.Handler(httpContext); + } + } + } +} + diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/RouteMatcherBuilder.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/RouteMatcherBuilder.cs new file mode 100644 index 0000000000..da068f5198 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/RouteMatcherBuilder.cs @@ -0,0 +1,112 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http.Features; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.AspNetCore.Routing.TestObjects; +using Microsoft.Extensions.Options; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal class RouteMatcherBuilder : MatcherBuilder + { + private readonly IInlineConstraintResolver _constraintResolver; + private readonly List _endpoints; + + public RouteMatcherBuilder() + { + _constraintResolver = new DefaultInlineConstraintResolver(Options.Create(new RouteOptions()), new TestServiceProvider()); + _endpoints = new List(); + } + + public override void AddEndpoint(RouteEndpoint endpoint) + { + _endpoints.Add(endpoint); + } + + public override Matcher Build() + { + var selector = new DefaultEndpointSelector(); + + var groups = _endpoints + .GroupBy(e => (e.Order, e.RoutePattern.InboundPrecedence, e.RoutePattern.RawText)) + .OrderBy(g => g.Key.Order) + .ThenBy(g => g.Key.InboundPrecedence); + + var routes = new RouteCollection(); + + foreach (var group in groups) + { + var candidates = group.ToArray(); + var endpoint = group.First(); + + // RoutePattern.Defaults contains the default values parsed from the template + // as well as those specified with a literal. We need to separate those + // for legacy cases. + // + // To do this we re-parse the original text and compare. + var withoutDefaults = RoutePatternFactory.Parse(endpoint.RoutePattern.RawText); + var defaults = new RouteValueDictionary(endpoint.RoutePattern.Defaults); + for (var i = 0; i < withoutDefaults.Parameters.Count; i++) + { + var parameter = withoutDefaults.Parameters[i]; + if (parameter.Default != null) + { + defaults.Remove(parameter.Name); + } + } + + routes.Add(new Route( + new SelectorRouter(selector, candidates), + endpoint.RoutePattern.RawText, + defaults, + new Dictionary(), + new RouteValueDictionary(), + _constraintResolver)); + } + + return new RouteMatcher(routes); + } + + private class SelectorRouter : IRouter + { + private readonly EndpointSelector _selector; + private readonly RouteEndpoint[] _candidates; + private readonly RouteValueDictionary[] _values; + private readonly int[] _scores; + + public SelectorRouter(EndpointSelector selector, RouteEndpoint[] candidates) + { + _selector = selector; + _candidates = candidates; + + _values = new RouteValueDictionary[_candidates.Length]; + _scores = new int[_candidates.Length]; + } + + public VirtualPathData GetVirtualPath(VirtualPathContext context) + { + throw new NotImplementedException(); + } + + public async Task RouteAsync(RouteContext routeContext) + { + var context = (EndpointSelectorContext)routeContext.HttpContext.Features.Get(); + + // This is needed due to a quirk of our tests - they reuse the endpoint feature + // across requests. + context.Endpoint = null; + + await _selector.SelectAsync(routeContext.HttpContext, context, new CandidateSet(_candidates, _values, _scores)); + if (context.Endpoint != null) + { + routeContext.Handler = (_) => Task.CompletedTask; + } + } + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/RouteMatcherConformanceTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/RouteMatcherConformanceTest.cs new file mode 100644 index 0000000000..1690696951 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/RouteMatcherConformanceTest.cs @@ -0,0 +1,18 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class RouteMatcherConformanceTest : FullFeaturedMatcherConformanceTest + { + internal override Matcher CreateMatcher(params RouteEndpoint[] endpoints) + { + var builder = new RouteMatcherBuilder(); + for (var i = 0; i < endpoints.Length; i++) + { + builder.AddEndpoint(endpoints[i]); + } + return builder.Build(); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/SingleEntryAsciiJumpTableTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/SingleEntryAsciiJumpTableTest.cs new file mode 100644 index 0000000000..bd068178e9 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/SingleEntryAsciiJumpTableTest.cs @@ -0,0 +1,13 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class SingleEntryAsciiJumpTableTest : SingleEntryJumpTableTestBase + { + private protected override JumpTable CreateJumpTable(int defaultDestination, int exitDestination, string text, int destination) + { + return new SingleEntryAsciiJumpTable(defaultDestination, exitDestination, text, destination); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/SingleEntryJumpTableTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/SingleEntryJumpTableTest.cs new file mode 100644 index 0000000000..77c3366f70 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/SingleEntryJumpTableTest.cs @@ -0,0 +1,13 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class SingleEntryJumpTableTest : SingleEntryJumpTableTestBase + { + private protected override JumpTable CreateJumpTable(int defaultDestination, int exitDestination, string text, int destination) + { + return new SingleEntryJumpTable(defaultDestination, exitDestination, text, destination); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/SingleEntryJumpTableTestBase.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/SingleEntryJumpTableTestBase.cs new file mode 100644 index 0000000000..dd3c5953a6 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/SingleEntryJumpTableTestBase.cs @@ -0,0 +1,68 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public abstract class SingleEntryJumpTableTestBase + { + private protected abstract JumpTable CreateJumpTable( + int defaultDestination, + int exitDestination, + string text, + int destination); + + [Fact] + public void GetDestination_ZeroLengthSegment_JumpsToExit() + { + // Arrange + var table = CreateJumpTable(0, 1, "text", 2); + + // Act + var result = table.GetDestination("ignored", new PathSegment(0, 0)); + + // Assert + Assert.Equal(1, result); + } + + [Fact] + public void GetDestination_NonMatchingSegment_JumpsToDefault() + { + // Arrange + var table = CreateJumpTable(0, 1, "text", 2); + + // Act + var result = table.GetDestination("text", new PathSegment(1, 2)); + + // Assert + Assert.Equal(0, result); + } + + [Fact] + public void GetDestination_SegmentMatchingText_JumpsToDestination() + { + // Arrange + var table = CreateJumpTable(0, 1, "text", 2); + + // Act + var result = table.GetDestination("some-text", new PathSegment(5, 4)); + + // Assert + Assert.Equal(2, result); + } + + [Fact] + public void GetDestination_SegmentMatchingTextIgnoreCase_JumpsToDestination() + { + // Arrange + var table = CreateJumpTable(0, 1, "text", 2); + + // Act + var result = table.GetDestination("some-tExt", new PathSegment(5, 4)); + + // Assert + Assert.Equal(2, result); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/TreeRouterMatcher.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/TreeRouterMatcher.cs new file mode 100644 index 0000000000..c7477e4611 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/TreeRouterMatcher.cs @@ -0,0 +1,45 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; +using Microsoft.AspNetCore.Routing.Tree; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + // This is an adapter to use TreeRouter in the conformance tests + internal class TreeRouterMatcher : Matcher + { + private readonly TreeRouter _inner; + + internal TreeRouterMatcher(TreeRouter inner) + { + _inner = inner; + } + + public async override Task MatchAsync(HttpContext httpContext, EndpointSelectorContext context) + { + if (httpContext == null) + { + throw new ArgumentNullException(nameof(httpContext)); + } + + if (context == null) + { + throw new ArgumentNullException(nameof(context)); + } + + var routeContext = new RouteContext(httpContext); + await _inner.RouteAsync(routeContext); + + if (routeContext.Handler != null) + { + context.RouteValues = routeContext.RouteData.Values; + await routeContext.Handler(httpContext); + } + } + } +} + diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/TreeRouterMatcherBuilder.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/TreeRouterMatcherBuilder.cs new file mode 100644 index 0000000000..b6346b0f14 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/TreeRouterMatcherBuilder.cs @@ -0,0 +1,113 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http.Features; +using Microsoft.AspNetCore.Routing.Internal; +using Microsoft.AspNetCore.Routing.Template; +using Microsoft.AspNetCore.Routing.TestObjects; +using Microsoft.AspNetCore.Routing.Tree; +using Microsoft.Extensions.Logging.Abstractions; +using Microsoft.Extensions.ObjectPool; +using Microsoft.Extensions.Options; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + internal class TreeRouterMatcherBuilder : MatcherBuilder + { + private readonly List _endpoints; + + public TreeRouterMatcherBuilder() + { + _endpoints = new List(); + } + + public override void AddEndpoint(RouteEndpoint endpoint) + { + _endpoints.Add(endpoint); + } + + public override Matcher Build() + { + var builder = new TreeRouteBuilder( + NullLoggerFactory.Instance, + new DefaultObjectPool(new UriBuilderContextPooledObjectPolicy()), + new DefaultInlineConstraintResolver(Options.Create(new RouteOptions()), new TestServiceProvider())); + + var selector = new DefaultEndpointSelector(); + + var groups = _endpoints + .GroupBy(e => (e.Order, e.RoutePattern.InboundPrecedence, e.RoutePattern.RawText)) + .OrderBy(g => g.Key.Order) + .ThenBy(g => g.Key.InboundPrecedence); + + var routes = new RouteCollection(); + + foreach (var group in groups) + { + var candidates = group.ToArray(); + + // RouteEndpoint.Values contains the default values parsed from the template + // as well as those specified with a literal. We need to separate those + // for legacy cases. + var endpoint = group.First(); + var defaults = new RouteValueDictionary(endpoint.RoutePattern.Defaults); + for (var i = 0; i < endpoint.RoutePattern.Parameters.Count; i++) + { + var parameter = endpoint.RoutePattern.Parameters[i]; + if (parameter.Default != null) + { + defaults.Remove(parameter.Name); + } + } + + builder.MapInbound( + new SelectorRouter(selector, candidates), + new RouteTemplate(endpoint.RoutePattern), + routeName: null, + order: endpoint.Order); + } + + return new TreeRouterMatcher(builder.Build()); + } + + private class SelectorRouter : IRouter + { + private readonly EndpointSelector _selector; + private readonly RouteEndpoint[] _candidates; + private readonly RouteValueDictionary[] _values; + private readonly int[] _scores; + + public SelectorRouter(EndpointSelector selector, RouteEndpoint[] candidates) + { + _selector = selector; + _candidates = candidates; + + _values = new RouteValueDictionary[_candidates.Length]; + _scores = new int[_candidates.Length]; + } + + public VirtualPathData GetVirtualPath(VirtualPathContext context) + { + throw new NotImplementedException(); + } + + public async Task RouteAsync(RouteContext routeContext) + { + var context = (EndpointSelectorContext)routeContext.HttpContext.Features.Get(); + + // This is needed due to a quirk of our tests - they reuse the endpoint feature. + context.Endpoint = null; + + await _selector.SelectAsync(routeContext.HttpContext, context, new CandidateSet(_candidates, _values, _scores)); + if (context.Endpoint != null) + { + routeContext.Handler = (_) => Task.CompletedTask; + } + } + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/TreeRouterMatcherConformanceTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/TreeRouterMatcherConformanceTest.cs new file mode 100644 index 0000000000..e2c3a73108 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/TreeRouterMatcherConformanceTest.cs @@ -0,0 +1,35 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading.Tasks; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class TreeRouterMatcherConformanceTest : FullFeaturedMatcherConformanceTest + { + // TreeRouter doesn't support non-inline default values. + [Fact] + public override Task Match_NonInlineDefaultValues() + { + return Task.CompletedTask; + } + + // TreeRouter doesn't support non-inline default values. + [Fact] + public override Task Match_ExtraDefaultValues() + { + return Task.CompletedTask; + } + + internal override Matcher CreateMatcher(params RouteEndpoint[] endpoints) + { + var builder = new TreeRouterMatcherBuilder(); + for (var i = 0; i < endpoints.Length; i++) + { + builder.AddEndpoint(endpoints[i]); + } + return builder.Build(); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/VectorizedILEmitTrieJumpTableTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/VectorizedILEmitTrieJumpTableTest.cs new file mode 100644 index 0000000000..fc5e7c555a --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/VectorizedILEmitTrieJumpTableTest.cs @@ -0,0 +1,14 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +#if IL_EMIT +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class VectorizedILEmitTrieJumpTableTest : ILEmitTreeJumpTableTestBase + { + // We can still run the vectorized implementation on 32 bit, we just + // don't expect it to be performant - it will still be correct. + public override bool Vectorize => true; + } +} +#endif diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/ZeroEntryJumpTableTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/ZeroEntryJumpTableTest.cs new file mode 100644 index 0000000000..036fef0c03 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Matching/ZeroEntryJumpTableTest.cs @@ -0,0 +1,36 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Matching +{ + public class ZeroEntryJumpTableTest + { + [Fact] + public void GetDestination_ZeroLengthSegment_JumpsToExit() + { + // Arrange + var table = new ZeroEntryJumpTable(0, 1); + + // Act + var result = table.GetDestination("ignored", new PathSegment(0, 0)); + + // Assert + Assert.Equal(1, result); + } + + [Fact] + public void GetDestination_SegmentWithLength_JumpsToDefault() + { + // Arrange + var table = new ZeroEntryJumpTable(0, 1); + + // Act + var result = table.GetDestination("ignored", new PathSegment(0, 1)); + + // Assert + Assert.Equal(0, result); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Microsoft.AspNetCore.Routing.Tests.csproj b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Microsoft.AspNetCore.Routing.Tests.csproj index ee389c233d..540f151fed 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Microsoft.AspNetCore.Routing.Tests.csproj +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Microsoft.AspNetCore.Routing.Tests.csproj @@ -1,7 +1,21 @@ - + $(StandardTestTfms) + Microsoft.AspNetCore.Routing + true + + + + + true + IL_EMIT;$(DefineConstants) + + + diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Patterns/InlineRouteParameterParserTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Patterns/InlineRouteParameterParserTest.cs new file mode 100644 index 0000000000..1a4b5dddb8 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Patterns/InlineRouteParameterParserTest.cs @@ -0,0 +1,1076 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Linq; +using Microsoft.AspNetCore.Routing.Constraints; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Patterns +{ + public class InlineRouteParameterParserTest + { + [Theory] + [InlineData("=")] + [InlineData(":")] + public void ParseRouteParameter_WithoutADefaultValue(string parameterName) + { + // Arrange & Act + var templatePart = ParseParameter(parameterName); + + // Assert + Assert.Equal(parameterName, templatePart.Name); + Assert.Null(templatePart.Default); + Assert.Empty(templatePart.ParameterPolicies); + } + + [Fact] + public void ParseRouteParameter_WithEmptyDefaultValue() + { + // Arrange & Act + var templatePart = ParseParameter("param="); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Equal("", templatePart.Default); + Assert.Empty(templatePart.ParameterPolicies); + } + + [Fact] + public void ParseRouteParameter_WithoutAConstraintName() + { + // Arrange & Act + var templatePart = ParseParameter("param:"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Null(templatePart.Default); + Assert.Empty(templatePart.ParameterPolicies); + } + + [Fact] + public void ParseRouteParameter_WithoutAConstraintNameOrParameterName() + { + // Arrange & Act + var templatePart = ParseParameter("param:="); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Equal("", templatePart.Default); + Assert.Empty(templatePart.ParameterPolicies); + } + + [Fact] + public void ParseRouteParameter_WithADefaultValueContainingConstraintSeparator() + { + // Arrange & Act + var templatePart = ParseParameter("param=:"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Equal(":", templatePart.Default); + Assert.Empty(templatePart.ParameterPolicies); + } + + [Fact] + public void ParseRouteParameter_ConstraintAndDefault_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter("param:int=111111"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Equal("111111", templatePart.Default); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal("int", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithArgumentsAndDefault_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\d+)=111111"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Equal("111111", templatePart.Default); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\d+)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintAndOptional_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:int?"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.True(templatePart.IsOptional); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal("int", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintAndOptional_WithDefaultValue_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:int=12?"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Equal("12", templatePart.Default); + Assert.True(templatePart.IsOptional); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal("int", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintAndOptional_WithDefaultValueWithQuestionMark_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:int=12??"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Equal("12?", templatePart.Default); + Assert.True(templatePart.IsOptional); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal("int", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithArgumentsAndOptional_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\d+)?"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.True(templatePart.IsOptional); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\d+)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithArgumentsAndOptional_WithDefaultValue_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\d+)=abc?"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.True(templatePart.IsOptional); + + Assert.Equal("abc", templatePart.Default); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\d+)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ChainedConstraints_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(d+):test(w+)"); + + // Assert + Assert.Equal("param", templatePart.Name); + + Assert.Collection(templatePart.ParameterPolicies, + constraint => Assert.Equal(@"test(d+)", constraint.Content), + constraint => Assert.Equal(@"test(w+)", constraint.Content)); + } + + [Fact] + public void ParseRouteParameter_ChainedConstraints_DoubleDelimiters_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param::test(d+)::test(w+)"); + + // Assert + Assert.Equal("param", templatePart.Name); + + Assert.Collection( + templatePart.ParameterPolicies, + constraint => Assert.Equal(@"test(d+)", constraint.Content), + constraint => Assert.Equal(@"test(w+)", constraint.Content)); + } + + [Fact] + public void ParseRouteParameter_ChainedConstraints_ColonInPattern_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\d+):test(\w:+)"); + + // Assert + Assert.Equal("param", templatePart.Name); + + Assert.Collection(templatePart.ParameterPolicies, + constraint => Assert.Equal(@"test(\d+)", constraint.Content), + constraint => Assert.Equal(@"test(\w:+)", constraint.Content)); + } + + [Fact] + public void ParseRouteParameter_ChainedConstraints_WithDefaultValue_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\d+):test(\w+)=qwer"); + + // Assert + Assert.Equal("param", templatePart.Name); + + Assert.Equal("qwer", templatePart.Default); + + Assert.Collection(templatePart.ParameterPolicies, + constraint => Assert.Equal(@"test(\d+)", constraint.Content), + constraint => Assert.Equal(@"test(\w+)", constraint.Content)); + } + + [Fact] + public void ParseRouteParameter_ChainedConstraints_WithDefaultValue_DoubleDelimiters_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\d+)::test(\w+)==qwer"); + + // Assert + Assert.Equal("param", templatePart.Name); + + Assert.Equal("=qwer", templatePart.Default); + + Assert.Collection( + templatePart.ParameterPolicies, + constraint => Assert.Equal(@"test(\d+)", constraint.Content), + constraint => Assert.Equal(@"test(\w+)", constraint.Content)); + } + + [Theory] + [InlineData("=")] + [InlineData("+=")] + [InlineData(">= || <= || ==")] + public void ParseRouteParameter_WithDefaultValue_ContainingDelimiter(string defaultValue) + { + // Arrange & Act + var templatePart = ParseParameter($"comparison-operator:length(6)={defaultValue}"); + + // Assert + Assert.Equal("comparison-operator", templatePart.Name); + Assert.Equal(defaultValue, templatePart.Default); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal("length(6)", constraint.Content); + } + + [Fact] + public void ParseRouteTemplate_ConstraintsDefaultsAndOptionalsInMultipleSections_ParsedCorrectly() + { + // Arrange & Act + var routePattern = RoutePatternFactory.Parse(@"some/url-{p1:int:test(3)=hello}/{p2=abc}/{p3?}"); + + // Assert + var parameters = routePattern.Parameters.ToArray(); + + var param1 = parameters[0]; + Assert.Equal("p1", param1.Name); + Assert.Equal("hello", param1.Default); + Assert.False(param1.IsOptional); + + Assert.Collection(param1.ParameterPolicies, + constraint => Assert.Equal("int", constraint.Content), + constraint => Assert.Equal("test(3)", constraint.Content) + ); + + var param2 = parameters[1]; + Assert.Equal("p2", param2.Name); + Assert.Equal("abc", param2.Default); + Assert.False(param2.IsOptional); + + var param3 = parameters[2]; + Assert.Equal("p3", param3.Name); + Assert.True(param3.IsOptional); + } + + [Fact] + public void ParseRouteParameter_NoTokens_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter("world"); + + // Assert + Assert.Equal("world", templatePart.Name); + } + + [Fact] + public void ParseRouteParameter_ParamDefault_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter("param=world"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Equal("world", templatePart.Default); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithClosingBraceInPattern_ClosingBraceIsParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\})"); + + // Assert + Assert.Equal("param", templatePart.Name); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\})", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithClosingBraceInPattern_WithDefaultValue_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\})=wer"); + + // Assert + Assert.Equal("param", templatePart.Name); + + Assert.Equal("wer", templatePart.Default); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\})", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithClosingParenInPattern_ClosingParenIsParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\))"); + + // Assert + Assert.Equal("param", templatePart.Name); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\))", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithClosingParenInPattern_WithDefaultValue_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\))=fsd"); + + // Assert + Assert.Equal("param", templatePart.Name); + + Assert.Equal("fsd", templatePart.Default); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\))", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithColonInPattern_ColonIsParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(:)"); + + // Assert + Assert.Equal("param", templatePart.Name); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(:)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithColonInPattern_WithDefaultValue_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(:)=mnf"); + + // Assert + Assert.Equal("param", templatePart.Name); + + Assert.Equal("mnf", templatePart.Default); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(:)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithColonsInPattern_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(a:b:c)"); + + // Assert + Assert.Equal("param", templatePart.Name); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(a:b:c)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithColonInParamName_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@":param:test=12"); + + // Assert + Assert.Equal(":param", templatePart.Name); + + Assert.Equal("12", templatePart.Default); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal("test", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithTwoColonInParamName_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@":param::test=12"); + + // Assert + Assert.Equal(":param", templatePart.Name); + + Assert.Equal("12", templatePart.Default); + + Assert.Collection( + templatePart.ParameterPolicies, + constraint => Assert.Equal("test", constraint.Content)); + } + + [Fact] + public void ParseRouteParameter_EmptyConstraint_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@":param:test:"); + + // Assert + Assert.Equal(":param", templatePart.Name); + + Assert.Collection( + templatePart.ParameterPolicies, + constraint => Assert.Equal("test", constraint.Content)); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithCommaInPattern_PatternIsParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\w,\w)"); + + // Assert + Assert.Equal("param", templatePart.Name); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\w,\w)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithCommaInName_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"par,am:test(\w)"); + + // Assert + Assert.Equal("par,am", templatePart.Name); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\w)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithCommaInPattern_WithDefaultValue_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\w,\w)=jsd"); + + // Assert + Assert.Equal("param", templatePart.Name); + + Assert.Equal("jsd", templatePart.Default); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\w,\w)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithEqualsFollowedByQuestionMark_PatternIsParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:int=?"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Equal("", templatePart.Default); + + Assert.True(templatePart.IsOptional); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal("int", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithEqualsSignInPattern_PatternIsParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(=)"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Null(templatePart.Default); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal("test(=)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_EqualsSignInDefaultValue_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param=test=bar"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Equal("test=bar", templatePart.Default); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithEqualEqualSignInPattern_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(a==b)"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Null(templatePart.Default); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal("test(a==b)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithEqualEqualSignInPattern_WithDefaultValue_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(a==b)=dvds"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Equal("dvds", templatePart.Default); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal("test(a==b)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_EqualEqualSignInName_WithDefaultValue_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"par==am:test=dvds"); + + // Assert + Assert.Equal("par", templatePart.Name); + Assert.Equal("=am:test=dvds", templatePart.Default); + } + + [Fact] + public void ParseRouteParameter_EqualEqualSignInDefaultValue_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test==dvds"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Equal("=dvds", templatePart.Default); + } + + [Fact] + public void ParseRouteParameter_DefaultValueWithColonAndParens_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"par=am:test(asd)"); + + // Assert + Assert.Equal("par", templatePart.Name); + Assert.Equal("am:test(asd)", templatePart.Default); + } + + [Fact] + public void ParseRouteParameter_DefaultValueWithEqualsSignIn_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"par=test(am):est=asd"); + + // Assert + Assert.Equal("par", templatePart.Name); + Assert.Equal("test(am):est=asd", templatePart.Default); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithEqualsSignInPattern_WithDefaultValue_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(=)=sds"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Equal("sds", templatePart.Default); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal("test(=)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithOpenBraceInPattern_PatternIsParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\{)"); + + // Assert + Assert.Equal("param", templatePart.Name); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\{)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithOpenBraceInName_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"par{am:test(\sd)"); + + // Assert + Assert.Equal("par{am", templatePart.Name); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\sd)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithOpenBraceInPattern_WithDefaultValue_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\{)=xvc"); + + // Assert + Assert.Equal("param", templatePart.Name); + + Assert.Equal("xvc", templatePart.Default); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\{)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithOpenParenInName_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"par(am:test(\()"); + + // Assert + Assert.Equal("par(am", templatePart.Name); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\()", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithOpenParenInPattern_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\()"); + + // Assert + Assert.Equal("param", templatePart.Name); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\()", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithOpenParenNoCloseParen_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(#$%"); + + // Assert + Assert.Equal("param", templatePart.Name); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal("test(#$%", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithOpenParenAndColon_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(#:test1"); + + // Assert + Assert.Equal("param", templatePart.Name); + + Assert.Collection(templatePart.ParameterPolicies, + constraint => Assert.Equal(@"test(#", constraint.Content), + constraint => Assert.Equal(@"test1", constraint.Content)); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithOpenParenAndColonWithDefaultValue_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(abc:somevalue):name(test1:differentname=default-value"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Equal("default-value", templatePart.Default); + + Assert.Collection(templatePart.ParameterPolicies, + constraint => Assert.Equal(@"test(abc:somevalue)", constraint.Content), + constraint => Assert.Equal(@"name(test1", constraint.Content), + constraint => Assert.Equal(@"differentname", constraint.Content)); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithOpenParenAndDefaultValue_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(constraintvalue=test1"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Equal("test1", templatePart.Default); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(constraintvalue", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithOpenParenInPattern_WithDefaultValue_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\()=djk"); + + // Assert + Assert.Equal("param", templatePart.Name); + + Assert.Equal("djk", templatePart.Default); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\()", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithQuestionMarkInPattern_PatternIsParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\?)"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Null(templatePart.Default); + Assert.False(templatePart.IsOptional); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\?)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithQuestionMarkInPattern_Optional_PatternIsParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\?)?"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Null(templatePart.Default); + Assert.True(templatePart.IsOptional); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\?)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithQuestionMarkInPattern_WithDefaultValue_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\?)=sdf"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Equal("sdf", templatePart.Default); + Assert.False(templatePart.IsOptional); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\?)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithQuestionMarkInPattern_Optional_WithDefaultValue_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(\?)=sdf?"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Equal("sdf", templatePart.Default); + Assert.True(templatePart.IsOptional); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\?)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithQuestionMarkInName_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"par?am:test(\?)"); + + // Assert + Assert.Equal("par?am", templatePart.Name); + Assert.Null(templatePart.Default); + Assert.False(templatePart.IsOptional); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(\?)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithClosedParenAndColonInPattern_ParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(#):$)"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Null(templatePart.Default); + Assert.False(templatePart.IsOptional); + + Assert.Collection(templatePart.ParameterPolicies, + constraint => Assert.Equal(@"test(#)", constraint.Content), + constraint => Assert.Equal(@"$)", constraint.Content)); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithColonAndClosedParenInPattern_PatternIsParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"param:test(#:)$)"); + + // Assert + Assert.Equal("param", templatePart.Name); + Assert.Null(templatePart.Default); + Assert.False(templatePart.IsOptional); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"test(#:)$)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ContainingMultipleUnclosedParenthesisInConstraint() + { + // Arrange & Act + var templatePart = ParseParameter(@"foo:regex(\\(\\(\\(\\()"); + + // Assert + Assert.Equal("foo", templatePart.Name); + Assert.Null(templatePart.Default); + Assert.False(templatePart.IsOptional); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"regex(\\(\\(\\(\\()", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithBraces_PatternIsParsedCorrectly() + { + // Arrange & Act + var templatePart = ParseParameter(@"p1:regex(^\d{{3}}-\d{{3}}-\d{{4}}$)"); // ssn + + // Assert + Assert.Equal("p1", templatePart.Name); + Assert.Null(templatePart.Default); + Assert.False(templatePart.IsOptional); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"regex(^\d{{3}}-\d{{3}}-\d{{4}}$)", constraint.Content); + } + + [Fact] + public void ParseRouteParameter_ConstraintWithBraces_WithDefaultValue() + { + // Arrange & Act + var templatePart = ParseParameter(@"p1:regex(^\d{{3}}-\d{{3}}-\d{{4}}$)=123-456-7890"); // ssn + + // Assert + Assert.Equal("p1", templatePart.Name); + Assert.Equal("123-456-7890", templatePart.Default); + Assert.False(templatePart.IsOptional); + + var constraint = Assert.Single(templatePart.ParameterPolicies); + Assert.Equal(@"regex(^\d{{3}}-\d{{3}}-\d{{4}}$)", constraint.Content); + } + + [Theory] + [InlineData("", "")] + [InlineData("?", "")] + [InlineData("*", "")] + [InlineData("**", "")] + [InlineData(" ", " ")] + [InlineData("\t", "\t")] + [InlineData("#!@#$%Q@#@%", "#!@#$%Q@#@%")] + [InlineData(",,,", ",,,")] + public void ParseRouteParameter_ParameterWithoutInlineConstraint_ReturnsTemplatePartWithEmptyInlineValues( + string parameter, + string expectedParameterName) + { + // Arrange & Act + var templatePart = ParseParameter(parameter); + + // Assert + Assert.Equal(expectedParameterName, templatePart.Name); + Assert.Empty(templatePart.ParameterPolicies); + Assert.Null(templatePart.Default); + } + + [Fact] + public void ParseRouteParameter_WithSingleAsteriskCatchAll_IsParsedCorrectly() + { + // Arrange & Act + var parameterPart = ParseParameter("*path"); + + // Assert + Assert.Equal("path", parameterPart.Name); + Assert.True(parameterPart.IsCatchAll); + Assert.Equal(RoutePatternParameterKind.CatchAll, parameterPart.ParameterKind); + Assert.True(parameterPart.EncodeSlashes); + } + + [Fact] + public void ParseRouteParameter_WithSingleAsteriskCatchAll_AndDefaultValue_IsParsedCorrectly() + { + // Arrange & Act + var parameterPart = ParseParameter("*path=a/b/c"); + + // Assert + Assert.Equal("path", parameterPart.Name); + Assert.True(parameterPart.IsCatchAll); + Assert.NotNull(parameterPart.Default); + Assert.Equal("a/b/c", parameterPart.Default.ToString()); + Assert.Equal(RoutePatternParameterKind.CatchAll, parameterPart.ParameterKind); + Assert.True(parameterPart.EncodeSlashes); + } + + [Fact] + public void ParseRouteParameter_WithSingleAsteriskCatchAll_AndConstraints_IsParsedCorrectly() + { + // Arrange + var constraintContent = "regex(^(/[^/ ]*)+/?$)"; + + // Act + var parameterPart = ParseParameter($"*path:{constraintContent}"); + + // Assert + Assert.Equal("path", parameterPart.Name); + Assert.True(parameterPart.IsCatchAll); + Assert.Equal(RoutePatternParameterKind.CatchAll, parameterPart.ParameterKind); + var constraintReference = Assert.Single(parameterPart.ParameterPolicies); + Assert.Equal(constraintContent, constraintReference.Content); + Assert.True(parameterPart.EncodeSlashes); + } + + [Fact] + public void ParseRouteParameter_WithSingleAsteriskCatchAll_AndConstraints_AndDefaultValue_IsParsedCorrectly() + { + // Arrange + var constraintContent = "regex(^(/[^/ ]*)+/?$)"; + + // Act + var parameterPart = ParseParameter($"*path:{constraintContent}=a/b/c"); + + // Assert + Assert.Equal("path", parameterPart.Name); + Assert.True(parameterPart.IsCatchAll); + Assert.Equal(RoutePatternParameterKind.CatchAll, parameterPart.ParameterKind); + var constraintReference = Assert.Single(parameterPart.ParameterPolicies); + Assert.Equal(constraintContent, constraintReference.Content); + Assert.NotNull(parameterPart.Default); + Assert.Equal("a/b/c", parameterPart.Default.ToString()); + Assert.True(parameterPart.EncodeSlashes); + } + + [Fact] + public void ParseRouteParameter_WithDoubleAsteriskCatchAll_IsParsedCorrectly() + { + // Arrange & Act + var parameterPart = ParseParameter("**path"); + + // Assert + Assert.Equal("path", parameterPart.Name); + Assert.True(parameterPart.IsCatchAll); + Assert.False(parameterPart.EncodeSlashes); + } + + [Fact] + public void ParseRouteParameter_WithDoubleAsteriskCatchAll_AndDefaultValue_IsParsedCorrectly() + { + // Arrange & Act + var parameterPart = ParseParameter("**path=a/b/c"); + + // Assert + Assert.Equal("path", parameterPart.Name); + Assert.True(parameterPart.IsCatchAll); + Assert.NotNull(parameterPart.Default); + Assert.Equal("a/b/c", parameterPart.Default.ToString()); + Assert.False(parameterPart.EncodeSlashes); + } + + [Fact] + public void ParseRouteParameter_WithDoubleAsteriskCatchAll_AndConstraints_IsParsedCorrectly() + { + // Arrange + var constraintContent = "regex(^(/[^/ ]*)+/?$)"; + + // Act + var parameterPart = ParseParameter($"**path:{constraintContent}"); + + // Assert + Assert.Equal("path", parameterPart.Name); + Assert.True(parameterPart.IsCatchAll); + Assert.False(parameterPart.EncodeSlashes); + var constraintReference = Assert.Single(parameterPart.ParameterPolicies); + Assert.Equal(constraintContent, constraintReference.Content); + } + + [Fact] + public void ParseRouteParameter_WithDoubleAsteriskCatchAll_AndConstraints_AndDefaultValue_IsParsedCorrectly() + { + // Arrange + var constraintContent = "regex(^(/[^/ ]*)+/?$)"; + + // Act + var parameterPart = ParseParameter($"**path:{constraintContent}=a/b/c"); + + // Assert + Assert.Equal("path", parameterPart.Name); + Assert.True(parameterPart.IsCatchAll); + Assert.False(parameterPart.EncodeSlashes); + var constraintReference = Assert.Single(parameterPart.ParameterPolicies); + Assert.Equal(constraintContent, constraintReference.Content); + Assert.NotNull(parameterPart.Default); + Assert.Equal("a/b/c", parameterPart.Default.ToString()); + } + + private RoutePatternParameterPart ParseParameter(string routeParameter) + { + // See: #475 - these tests don't pass the 'whole' text. + var templatePart = RouteParameterParser.ParseRouteParameter(routeParameter); + return templatePart; + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Patterns/RoutePatternFactoryTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Patterns/RoutePatternFactoryTest.cs new file mode 100644 index 0000000000..b56465dd7a --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Patterns/RoutePatternFactoryTest.cs @@ -0,0 +1,540 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.AspNetCore.Routing.Constraints; +using Microsoft.AspNetCore.Routing.Template; +using Moq; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Patterns +{ + public class RoutePatternFactoryTest + { + [Fact] + public void Pattern_MergesDefaultValues() + { + // Arrange + var template = "{a}/{b}/{c=19}"; + var defaults = new { a = "15", b = 17 }; + var constraints = new { }; + + var original = RoutePatternFactory.Parse(template); + + // Act + var actual = RoutePatternFactory.Pattern( + original.RawText, + defaults, + constraints, + original.PathSegments); + + // Assert + Assert.Equal("15", actual.GetParameter("a").Default); + Assert.Equal(17, actual.GetParameter("b").Default); + Assert.Equal("19", actual.GetParameter("c").Default); + + Assert.Collection( + actual.Defaults.OrderBy(kvp => kvp.Key), + kvp => { Assert.Equal("a", kvp.Key); Assert.Equal("15", kvp.Value); }, + kvp => { Assert.Equal("b", kvp.Key); Assert.Equal(17, kvp.Value); }, + kvp => { Assert.Equal("c", kvp.Key); Assert.Equal("19", kvp.Value); }); + } + + [Fact] + public void Pattern_ExtraDefaultValues() + { + // Arrange + var template = "{a}/{b}/{c}"; + var defaults = new { d = "15", e = 17 }; + var constraints = new { }; + + var original = RoutePatternFactory.Parse(template); + + // Act + var actual = RoutePatternFactory.Pattern( + original.RawText, + defaults, + constraints, + original.PathSegments); + + // Assert + Assert.Collection( + actual.Defaults.OrderBy(kvp => kvp.Key), + kvp => { Assert.Equal("d", kvp.Key); Assert.Equal("15", kvp.Value); }, + kvp => { Assert.Equal("e", kvp.Key); Assert.Equal(17, kvp.Value); }); + } + + [Fact] + public void Pattern_DifferentDuplicateDefaultValue_Throws() + { + // Arrange + var template = "{a=13}/{b}/{c}"; + var defaults = new { a = "15", }; + var constraints = new { }; + + var original = RoutePatternFactory.Parse(template); + + // Act + var ex = Assert.Throws(() => RoutePatternFactory.Pattern( + original.RawText, + defaults, + constraints, + original.PathSegments)); + + // Assert + Assert.Equal( + "The route parameter 'a' has both an inline default value and an explicit default " + + "value specified. A route parameter cannot contain an inline default value when a " + + "default value is specified explicitly. Consider removing one of them.", + ex.Message); + } + + [Fact] + public void Pattern_SameDuplicateDefaultValue() + { + // Arrange + var template = "{a=13}/{b}/{c}"; + var defaults = new { a = "13", }; + var constraints = new { }; + + var original = RoutePatternFactory.Parse(template); + + // Act + var actual = RoutePatternFactory.Pattern( + original.RawText, + defaults, + constraints, + original.PathSegments); + + // Assert + Assert.Collection( + actual.Defaults, + kvp => { Assert.Equal("a", kvp.Key); Assert.Equal("13", kvp.Value); }); + } + + [Fact] + public void Pattern_OptionalParameterDefaultValue_Throws() + { + // Arrange + var template = "{a}/{b}/{c?}"; + var defaults = new { c = "15", }; + var constraints = new { }; + + var original = RoutePatternFactory.Parse(template); + + // Act + var ex = Assert.Throws(() => RoutePatternFactory.Pattern( + original.RawText, + defaults, + constraints, + original.PathSegments)); + + // Assert + Assert.Equal( + "An optional parameter cannot have default value.", + ex.Message); + } + + [Fact] + public void Pattern_MergesConstraints() + { + // Arrange + var template = "{a:int}/{b}/{c}"; + var defaults = new { }; + var constraints = new { a = new RegexRouteConstraint("foo"), b = new RegexRouteConstraint("bar") }; + + var original = RoutePatternFactory.Parse(template); + + // Act + var actual = RoutePatternFactory.Pattern( + original.RawText, + defaults, + constraints, + original.PathSegments); + + // Assert + Assert.Collection( + actual.GetParameter("a").ParameterPolicies, + c => Assert.IsType(c.ParameterPolicy), + c => Assert.Equal("int", c.Content)); + Assert.Collection( + actual.GetParameter("b").ParameterPolicies, + c => Assert.IsType(c.ParameterPolicy)); + + Assert.Collection( + actual.ParameterPolicies.OrderBy(kvp => kvp.Key), + kvp => + { + Assert.Equal("a", kvp.Key); + Assert.Collection( + kvp.Value, + c => Assert.IsType(c.ParameterPolicy), + c => Assert.Equal("int", c.Content)); + }, + kvp => + { + Assert.Equal("b", kvp.Key); + Assert.Collection( + kvp.Value, + c => Assert.IsType(c.ParameterPolicy)); + }); + } + + [Fact] + public void Pattern_ExtraConstraints() + { + // Arrange + var template = "{a}/{b}/{c}"; + var defaults = new { }; + var constraints = new { d = new RegexRouteConstraint("foo"), e = new RegexRouteConstraint("bar") }; + + var original = RoutePatternFactory.Parse(template); + + // Act + var actual = RoutePatternFactory.Pattern( + original.RawText, + defaults, + constraints, + original.PathSegments); + + // Assert + Assert.Collection( + actual.ParameterPolicies.OrderBy(kvp => kvp.Key), + kvp => + { + Assert.Equal("d", kvp.Key); + Assert.Collection( + kvp.Value, + c => Assert.IsType(c.ParameterPolicy)); + }, + kvp => + { + Assert.Equal("e", kvp.Key); + Assert.Collection( + kvp.Value, + c => Assert.IsType(c.ParameterPolicy)); + }); + } + + [Fact] + public void Pattern_ExtraConstraints_RouteConstraint() + { + // Arrange + var template = "{a}/{b}/{c}"; + var defaults = new { }; + var constraints = new { d = Mock.Of(), e = Mock.Of(), }; + + var original = RoutePatternFactory.Parse(template); + + // Act + var actual = RoutePatternFactory.Pattern( + original.RawText, + defaults, + constraints, + original.PathSegments); + + // Assert + Assert.Collection( + actual.ParameterPolicies.OrderBy(kvp => kvp.Key), + kvp => + { + Assert.Equal("d", kvp.Key); + Assert.Collection( + kvp.Value, + c => Assert.NotNull(c.ParameterPolicy)); + }, + kvp => + { + Assert.Equal("e", kvp.Key); + Assert.Collection( + kvp.Value, + c => Assert.NotNull(c.ParameterPolicy)); + }); + } + + [Fact] + public void Pattern_CreatesConstraintFromString() + { + // Arrange + var template = "{a}/{b}/{c}"; + var defaults = new { }; + var constraints = new { d = "foo", }; + + var original = RoutePatternFactory.Parse(template); + + // Act + var actual = RoutePatternFactory.Pattern( + original.RawText, + defaults, + constraints, + original.PathSegments); + + // Assert + Assert.Collection( + actual.ParameterPolicies.OrderBy(kvp => kvp.Key), + kvp => + { + Assert.Equal("d", kvp.Key); + var regex = Assert.IsType(Assert.Single(kvp.Value).ParameterPolicy); + Assert.Equal("^(foo)$", regex.Constraint.ToString()); + }); + } + + [Fact] + public void Pattern_InvalidConstraintTypeThrows() + { + // Arrange + var template = "{a}/{b}/{c}"; + var defaults = new { }; + var constraints = new { d = 17, }; + + var original = RoutePatternFactory.Parse(template); + + // Act + var ex = Assert.Throws(() => RoutePatternFactory.Pattern( + original.RawText, + defaults, + constraints, + original.PathSegments)); + + // Assert + Assert.Equal( + $"Invalid constraint '17'. A constraint must be of type 'string' or '{typeof(IRouteConstraint)}'.", + ex.Message); + } + + [Fact] + public void Pattern_ArrayOfSegments_ShouldMakeCopyOfArrayOfSegments() + { + // Arrange + var literalPartA = RoutePatternFactory.LiteralPart("A"); + var paramPartB = RoutePatternFactory.ParameterPart("B"); + var paramPartC = RoutePatternFactory.ParameterPart("C"); + var paramPartD = RoutePatternFactory.ParameterPart("D"); + var segments = new[] + { + RoutePatternFactory.Segment(literalPartA, paramPartB), + RoutePatternFactory.Segment(paramPartC, literalPartA), + RoutePatternFactory.Segment(paramPartD), + RoutePatternFactory.Segment(literalPartA) + }; + + // Act + var actual = RoutePatternFactory.Pattern(segments); + segments[1] = RoutePatternFactory.Segment(RoutePatternFactory.ParameterPart("E")); + Array.Resize(ref segments, 2); + + // Assert + Assert.Equal(3, actual.Parameters.Count); + Assert.Same(paramPartB, actual.Parameters[0]); + Assert.Same(paramPartC, actual.Parameters[1]); + Assert.Same(paramPartD, actual.Parameters[2]); + } + + [Fact] + public void Pattern_RawTextAndArrayOfSegments_ShouldMakeCopyOfArrayOfSegments() + { + // Arrange + var rawText = "raw"; + var literalPartA = RoutePatternFactory.LiteralPart("A"); + var paramPartB = RoutePatternFactory.ParameterPart("B"); + var paramPartC = RoutePatternFactory.ParameterPart("C"); + var paramPartD = RoutePatternFactory.ParameterPart("D"); + var segments = new[] + { + RoutePatternFactory.Segment(literalPartA, paramPartB), + RoutePatternFactory.Segment(paramPartC, literalPartA), + RoutePatternFactory.Segment(paramPartD), + RoutePatternFactory.Segment(literalPartA) + }; + + // Act + var actual = RoutePatternFactory.Pattern(rawText, segments); + segments[1] = RoutePatternFactory.Segment(RoutePatternFactory.ParameterPart("E")); + Array.Resize(ref segments, 2); + + // Assert + Assert.Equal(3, actual.Parameters.Count); + Assert.Same(paramPartB, actual.Parameters[0]); + Assert.Same(paramPartC, actual.Parameters[1]); + Assert.Same(paramPartD, actual.Parameters[2]); + } + + [Fact] + public void Pattern_DefaultsAndParameterPoliciesAndArrayOfSegments_ShouldMakeCopyOfArrayOfSegments() + { + // Arrange + object defaults = new { B = 12, C = 4 }; + object parameterPolicies = null; + var literalPartA = RoutePatternFactory.LiteralPart("A"); + var paramPartB = RoutePatternFactory.ParameterPart("B"); + var paramPartC = RoutePatternFactory.ParameterPart("C"); + var paramPartD = RoutePatternFactory.ParameterPart("D"); + var segments = new[] + { + RoutePatternFactory.Segment(literalPartA, paramPartB), + RoutePatternFactory.Segment(paramPartC, literalPartA), + RoutePatternFactory.Segment(paramPartD), + RoutePatternFactory.Segment(literalPartA) + }; + + // Act + var actual = RoutePatternFactory.Pattern(defaults, parameterPolicies, segments); + segments[1] = RoutePatternFactory.Segment(RoutePatternFactory.ParameterPart("E")); + Array.Resize(ref segments, 2); + + // Assert + Assert.Equal(3, actual.Parameters.Count); + Assert.Equal(paramPartB.Name, actual.Parameters[0].Name); + Assert.Equal(12, actual.Parameters[0].Default); + Assert.Null(paramPartB.Default); + Assert.NotSame(paramPartB, actual.Parameters[0]); + Assert.Equal(paramPartC.Name, actual.Parameters[1].Name); + Assert.Equal(4, actual.Parameters[1].Default); + Assert.NotSame(paramPartC, actual.Parameters[1]); + Assert.Null(paramPartC.Default); + Assert.Equal(paramPartD.Name, actual.Parameters[2].Name); + Assert.Null(actual.Parameters[2].Default); + Assert.Same(paramPartD, actual.Parameters[2]); + Assert.Null(paramPartD.Default); + } + + [Fact] + public void Pattern_RawTextAndDefaultsAndParameterPoliciesAndArrayOfSegments_ShouldMakeCopyOfArrayOfSegments() + { + // Arrange + var rawText = "raw"; + object defaults = new { B = 12, C = 4 }; + object parameterPolicies = null; + var literalPartA = RoutePatternFactory.LiteralPart("A"); + var paramPartB = RoutePatternFactory.ParameterPart("B"); + var paramPartC = RoutePatternFactory.ParameterPart("C"); + var paramPartD = RoutePatternFactory.ParameterPart("D"); + var segments = new[] + { + RoutePatternFactory.Segment(literalPartA, paramPartB), + RoutePatternFactory.Segment(paramPartC, literalPartA), + RoutePatternFactory.Segment(paramPartD), + RoutePatternFactory.Segment(literalPartA) + }; + + // Act + var actual = RoutePatternFactory.Pattern(rawText, defaults, parameterPolicies, segments); + segments[1] = RoutePatternFactory.Segment(RoutePatternFactory.ParameterPart("E")); + Array.Resize(ref segments, 2); + + // Assert + Assert.Equal(3, actual.Parameters.Count); + Assert.Equal(paramPartB.Name, actual.Parameters[0].Name); + Assert.Equal(12, actual.Parameters[0].Default); + Assert.Null(paramPartB.Default); + Assert.NotSame(paramPartB, actual.Parameters[0]); + Assert.Equal(paramPartC.Name, actual.Parameters[1].Name); + Assert.Equal(4, actual.Parameters[1].Default); + Assert.NotSame(paramPartC, actual.Parameters[1]); + Assert.Null(paramPartC.Default); + Assert.Equal(paramPartD.Name, actual.Parameters[2].Name); + Assert.Null(actual.Parameters[2].Default); + Assert.Same(paramPartD, actual.Parameters[2]); + Assert.Null(paramPartD.Default); + } + + [Fact] + public void ParameterPart_ParameterNameAndDefaultAndParameterKindAndArrayOfParameterPolicies_ShouldMakeCopyOfParameterPolicies() + { + // Arrange (going through hoops to get an array of RoutePatternParameterPolicyReference) + const string name = "Id"; + var defaults = new { a = "13", }; + var x = new InlineConstraint("x"); + var y = new InlineConstraint("y"); + var z = new InlineConstraint("z"); + var constraints = new[] { x, y, z }; + var templatePart = TemplatePart.CreateParameter("t", false, false, null, constraints); + var routePatternParameterPart = (RoutePatternParameterPart) templatePart.ToRoutePatternPart(); + var policies = routePatternParameterPart.ParameterPolicies.ToArray(); + + // Act + var parameterPart = RoutePatternFactory.ParameterPart(name, defaults, RoutePatternParameterKind.Standard, policies); + policies[0] = null; + Array.Resize(ref policies, 2); + + // Assert + Assert.NotNull(parameterPart.ParameterPolicies); + Assert.Equal(3, parameterPart.ParameterPolicies.Count); + Assert.NotNull(parameterPart.ParameterPolicies[0]); + Assert.NotNull(parameterPart.ParameterPolicies[1]); + Assert.NotNull(parameterPart.ParameterPolicies[2]); + } + + [Fact] + public void ParameterPart_ParameterNameAndDefaultAndParameterKindAndEnumerableOfParameterPolicies_ShouldMakeCopyOfParameterPolicies() + { + // Arrange (going through hoops to get an enumerable of RoutePatternParameterPolicyReference) + const string name = "Id"; + var defaults = new { a = "13", }; + var x = new InlineConstraint("x"); + var y = new InlineConstraint("y"); + var z = new InlineConstraint("z"); + var constraints = new[] { x, y, z }; + var templatePart = TemplatePart.CreateParameter("t", false, false, null, constraints); + var routePatternParameterPart = (RoutePatternParameterPart)templatePart.ToRoutePatternPart(); + var policies = routePatternParameterPart.ParameterPolicies.ToList(); + + // Act + var parameterPart = RoutePatternFactory.ParameterPart(name, defaults, RoutePatternParameterKind.Standard, policies); + policies[0] = null; + policies.RemoveAt(1); + + // Assert + Assert.NotNull(parameterPart.ParameterPolicies); + Assert.Equal(3, parameterPart.ParameterPolicies.Count); + Assert.NotNull(parameterPart.ParameterPolicies[0]); + Assert.NotNull(parameterPart.ParameterPolicies[1]); + Assert.NotNull(parameterPart.ParameterPolicies[2]); + } + + [Fact] + public void Segment_EnumerableOfParts() + { + // Arrange + var paramPartB = RoutePatternFactory.ParameterPart("B"); + var paramPartC = RoutePatternFactory.ParameterPart("C"); + var paramPartD = RoutePatternFactory.ParameterPart("D"); + var parts = new[] { paramPartB, paramPartC, paramPartD }; + + // Act + var actual = RoutePatternFactory.Segment((IEnumerable) parts); + parts[1] = RoutePatternFactory.ParameterPart("E"); + Array.Resize(ref parts, 2); + + // Assert + Assert.Equal(3, actual.Parts.Count); + Assert.Same(paramPartB, actual.Parts[0]); + Assert.Same(paramPartC, actual.Parts[1]); + Assert.Same(paramPartD, actual.Parts[2]); + } + + [Fact] + public void Segment_ArrayOfParts() + { + // Arrange + var paramPartB = RoutePatternFactory.ParameterPart("B"); + var paramPartC = RoutePatternFactory.ParameterPart("C"); + var paramPartD = RoutePatternFactory.ParameterPart("D"); + var parts = new[] { paramPartB, paramPartC, paramPartD }; + + // Act + var actual = RoutePatternFactory.Segment(parts); + parts[1] = RoutePatternFactory.ParameterPart("E"); + Array.Resize(ref parts, 2); + + // Assert + Assert.Equal(3, actual.Parts.Count); + Assert.Same(paramPartB, actual.Parts[0]); + Assert.Same(paramPartC, actual.Parts[1]); + Assert.Same(paramPartD, actual.Parts[2]); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Patterns/RoutePatternMatcherTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Patterns/RoutePatternMatcherTest.cs new file mode 100644 index 0000000000..b9a3f7f997 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Patterns/RoutePatternMatcherTest.cs @@ -0,0 +1,1131 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.AspNetCore.Http; +using Xunit; + +namespace Microsoft.AspNetCore.Routing +{ + public class RoutePatternMatcherTest + { + [Fact] + public void TryMatch_Success() + { + // Arrange + var matcher = CreateMatcher("{controller}/{action}/{id}"); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/Bank/DoAction/123", values); + + // Assert + Assert.True(match); + Assert.Equal("Bank", values["controller"]); + Assert.Equal("DoAction", values["action"]); + Assert.Equal("123", values["id"]); + } + + [Fact] + public void TryMatch_Fails() + { + // Arrange + var matcher = CreateMatcher("{controller}/{action}/{id}"); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/Bank/DoAction", values); + + // Assert + Assert.False(match); + } + + [Fact] + public void TryMatch_WithDefaults_Success() + { + // Arrange + var matcher = CreateMatcher("{controller}/{action}/{id}", new { id = "default id" }); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/Bank/DoAction", values); + + // Assert + Assert.True(match); + Assert.Equal("Bank", values["controller"]); + Assert.Equal("DoAction", values["action"]); + Assert.Equal("default id", values["id"]); + } + + [Fact] + public void TryMatch_WithDefaults_Fails() + { + // Arrange + var matcher = CreateMatcher("{controller}/{action}/{id}", new { id = "default id" }); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/Bank", values); + + // Assert + Assert.False(match); + } + + [Fact] + public void TryMatch_WithLiterals_Success() + { + // Arrange + var matcher = CreateMatcher("moo/{p1}/bar/{p2}", new { p2 = "default p2" }); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/moo/111/bar/222", values); + + // Assert + Assert.True(match); + Assert.Equal("111", values["p1"]); + Assert.Equal("222", values["p2"]); + } + + [Fact] + public void TryMatch_RouteWithLiteralsAndDefaults_Success() + { + // Arrange + var matcher = CreateMatcher("moo/{p1}/bar/{p2}", new { p2 = "default p2" }); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/moo/111/bar/", values); + + // Assert + Assert.True(match); + Assert.Equal("111", values["p1"]); + Assert.Equal("default p2", values["p2"]); + } + + [Theory] + [InlineData(@"{p1:regex(^\d{{3}}-\d{{3}}-\d{{4}}$)}", "/123-456-7890")] // ssn + [InlineData(@"{p1:regex(^\w+\@\w+\.\w+)}", "/asd@assds.com")] // email + [InlineData(@"{p1:regex(([}}])\w+)}", "/}sda")] // Not balanced } + [InlineData(@"{p1:regex(([{{)])\w+)}", "/})sda")] // Not balanced { + public void TryMatch_RegularExpressionConstraint_Valid( + string template, + string path) + { + // Arrange + var matcher = CreateMatcher(template); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch(path, values); + + // Assert + Assert.True(match); + } + + [Theory] + [InlineData("moo/{p1}.{p2?}", "/moo/foo.bar", true, "foo", "bar")] + [InlineData("moo/{p1?}", "/moo/foo", true, "foo", null)] + [InlineData("moo/{p1?}", "/moo", true, null, null)] + [InlineData("moo/{p1}.{p2?}", "/moo/foo", true, "foo", null)] + [InlineData("moo/{p1}.{p2?}", "/moo/foo..bar", true, "foo.", "bar")] + [InlineData("moo/{p1}.{p2?}", "/moo/foo.moo.bar", true, "foo.moo", "bar")] + [InlineData("moo/{p1}.{p2}", "/moo/foo.bar", true, "foo", "bar")] + [InlineData("moo/foo.{p1}.{p2?}", "/moo/foo.moo.bar", true, "moo", "bar")] + [InlineData("moo/foo.{p1}.{p2?}", "/moo/foo.moo", true, "moo", null)] + [InlineData("moo/.{p2?}", "/moo/.foo", true, null, "foo")] + [InlineData("moo/.{p2?}", "/moo", false, null, null)] + [InlineData("moo/{p1}.{p2?}", "/moo/....", true, "..", ".")] + [InlineData("moo/{p1}.{p2?}", "/moo/.bar", true, ".bar", null)] + public void TryMatch_OptionalParameter_FollowedByPeriod_Valid( + string template, + string path, + bool expectedMatch, + string p1, + string p2) + { + // Arrange + var matcher = CreateMatcher(template); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch(path, values); + + // Assert + Assert.Equal(expectedMatch, match); + if (p1 != null) + { + Assert.Equal(p1, values["p1"]); + } + if (p2 != null) + { + Assert.Equal(p2, values["p2"]); + } + } + + [Theory] + [InlineData("moo/{p1}.{p2}.{p3?}", "/moo/foo.moo.bar", "foo", "moo", "bar")] + [InlineData("moo/{p1}.{p2}.{p3?}", "/moo/foo.moo", "foo", "moo", null)] + [InlineData("moo/{p1}.{p2}.{p3}.{p4?}", "/moo/foo.moo.bar", "foo", "moo", "bar")] + [InlineData("{p1}.{p2?}/{p3}", "/foo.moo/bar", "foo", "moo", "bar")] + [InlineData("{p1}.{p2?}/{p3}", "/foo/bar", "foo", null, "bar")] + [InlineData("{p1}.{p2?}/{p3}", "/.foo/bar", ".foo", null, "bar")] + [InlineData("{p1}/{p2}/{p3?}", "/foo/bar/baz", "foo", "bar", "baz")] + public void TryMatch_OptionalParameter_FollowedByPeriod_3Parameters_Valid( + string template, + string path, + string p1, + string p2, + string p3) + { + // Arrange + var matcher = CreateMatcher(template); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch(path, values); + + // Assert + Assert.True(match); + Assert.Equal(p1, values["p1"]); + + if (p2 != null) + { + Assert.Equal(p2, values["p2"]); + } + + if (p3 != null) + { + Assert.Equal(p3, values["p3"]); + } + } + + [Theory] + [InlineData("moo/{p1}.{p2?}", "/moo/foo.")] + [InlineData("moo/{p1}.{p2?}", "/moo/.")] + [InlineData("moo/{p1}.{p2}", "/foo.")] + [InlineData("moo/{p1}.{p2}", "/foo")] + [InlineData("moo/{p1}.{p2}.{p3?}", "/moo/foo.moo.")] + [InlineData("moo/foo.{p2}.{p3?}", "/moo/bar.foo.moo")] + [InlineData("moo/foo.{p2}.{p3?}", "/moo/kungfoo.moo.bar")] + [InlineData("moo/foo.{p2}.{p3?}", "/moo/kungfoo.moo")] + [InlineData("moo/{p1}.{p2}.{p3?}", "/moo/foo")] + [InlineData("{p1}.{p2?}/{p3}", "/foo./bar")] + [InlineData("moo/.{p2?}", "/moo/.")] + [InlineData("{p1}.{p2}/{p3}", "/.foo/bar")] + public void TryMatch_OptionalParameter_FollowedByPeriod_Invalid(string template, string path) + { + // Arrange + var matcher = CreateMatcher(template); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch(path, values); + + // Assert + Assert.False(match); + } + + [Fact] + public void TryMatch_RouteWithOnlyLiterals_Success() + { + // Arrange + var matcher = CreateMatcher("moo/bar"); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/moo/bar", values); + + // Assert + Assert.True(match); + Assert.Empty(values); + } + + [Fact] + public void TryMatch_RouteWithOnlyLiterals_Fails() + { + // Arrange + var matcher = CreateMatcher("moo/bars"); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/moo/bar", values); + + // Assert + Assert.False(match); + } + + [Fact] + public void TryMatch_RouteWithExtraSeparators_Success() + { + // Arrange + var matcher = CreateMatcher("moo/bar"); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/moo/bar/", values); + + // Assert + Assert.True(match); + Assert.Empty(values); + } + + [Fact] + public void TryMatch_UrlWithExtraSeparators_Success() + { + // Arrange + var matcher = CreateMatcher("moo/bar/"); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/moo/bar", values); + + // Assert + Assert.True(match); + Assert.Empty(values); + } + + [Fact] + public void TryMatch_RouteWithParametersAndExtraSeparators_Success() + { + // Arrange + var matcher = CreateMatcher("{p1}/{p2}/"); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/moo/bar", values); + + // Assert + Assert.True(match); + Assert.Equal("moo", values["p1"]); + Assert.Equal("bar", values["p2"]); + } + + [Fact] + public void TryMatch_RouteWithDifferentLiterals_Fails() + { + // Arrange + var matcher = CreateMatcher("{p1}/{p2}/baz"); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/moo/bar/boo", values); + + // Assert + Assert.False(match); + } + + [Fact] + public void TryMatch_LongerUrl_Fails() + { + // Arrange + var matcher = CreateMatcher("{p1}"); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/moo/bar", values); + + // Assert + Assert.False(match); + } + + [Fact] + public void TryMatch_SimpleFilename_Success() + { + // Arrange + var matcher = CreateMatcher("DEFAULT.ASPX"); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/default.aspx", values); + + // Assert + Assert.True(match); + } + + [Theory] + [InlineData("{prefix}x{suffix}", "/xxxxxxxxxx")] + [InlineData("{prefix}xyz{suffix}", "/xxxxyzxyzxxxxxxyz")] + [InlineData("{prefix}xyz{suffix}", "/abcxxxxyzxyzxxxxxxyzxx")] + [InlineData("{prefix}xyz{suffix}", "/xyzxyzxyzxyzxyz")] + [InlineData("{prefix}xyz{suffix}", "/xyzxyzxyzxyzxyz1")] + [InlineData("{prefix}xyz{suffix}", "/xyzxyzxyz")] + [InlineData("{prefix}aa{suffix}", "/aaaaa")] + [InlineData("{prefix}aaa{suffix}", "/aaaaa")] + public void TryMatch_RouteWithComplexSegment_Success(string template, string path) + { + var matcher = CreateMatcher(template); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch(path, values); + + // Assert + Assert.True(match); + } + + [Fact] + public void TryMatch_RouteWithExtraDefaultValues_Success() + { + // Arrange + var matcher = CreateMatcher("{p1}/{p2}", new { p2 = (string)null, foo = "bar" }); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/v1", values); + + // Assert + Assert.True(match); + Assert.Equal(3, values.Count); + Assert.Equal("v1", values["p1"]); + Assert.Null(values["p2"]); + Assert.Equal("bar", values["foo"]); + } + + [Fact] + public void TryMatch_PrettyRouteWithExtraDefaultValues_Success() + { + // Arrange + var matcher = CreateMatcher( + "date/{y}/{m}/{d}", + new { controller = "blog", action = "showpost", m = (string)null, d = (string)null }); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/date/2007/08", values); + + // Assert + Assert.True(match); + Assert.Equal(5, values.Count); + Assert.Equal("blog", values["controller"]); + Assert.Equal("showpost", values["action"]); + Assert.Equal("2007", values["y"]); + Assert.Equal("08", values["m"]); + Assert.Null(values["d"]); + } + + [Fact] + public void TryMatch_WithMultiSegmentParamsOnBothEndsMatches() + { + RunTest( + "language/{lang}-{region}", + "/language/en-US", + null, + new RouteValueDictionary(new { lang = "en", region = "US" })); + } + + [Fact] + public void TryMatch_WithMultiSegmentParamsOnLeftEndMatches() + { + RunTest( + "language/{lang}-{region}a", + "/language/en-USa", + null, + new RouteValueDictionary(new { lang = "en", region = "US" })); + } + + [Fact] + public void TryMatch_WithMultiSegmentParamsOnRightEndMatches() + { + RunTest( + "language/a{lang}-{region}", + "/language/aen-US", + null, + new RouteValueDictionary(new { lang = "en", region = "US" })); + } + + [Fact] + public void TryMatch_WithMultiSegmentParamsOnNeitherEndMatches() + { + RunTest( + "language/a{lang}-{region}a", + "/language/aen-USa", + null, + new RouteValueDictionary(new { lang = "en", region = "US" })); + } + + [Fact] + public void TryMatch_WithMultiSegmentParamsOnNeitherEndDoesNotMatch() + { + RunTest( + "language/a{lang}-{region}a", + "/language/a-USa", + null, + null); + } + + [Fact] + public void TryMatch_WithMultiSegmentParamsOnNeitherEndDoesNotMatch2() + { + RunTest( + "language/a{lang}-{region}a", + "/language/aen-a", + null, + null); + } + + [Fact] + public void TryMatch_WithSimpleMultiSegmentParamsOnBothEndsMatches() + { + RunTest( + "language/{lang}", + "/language/en", + null, + new RouteValueDictionary(new { lang = "en" })); + } + + [Fact] + public void TryMatch_WithSimpleMultiSegmentParamsOnBothEndsTrailingSlashDoesNotMatch() + { + RunTest( + "language/{lang}", + "/language/", + null, + null); + } + + [Fact] + public void TryMatch_WithSimpleMultiSegmentParamsOnBothEndsDoesNotMatch() + { + RunTest( + "language/{lang}", + "/language", + null, + null); + } + + [Fact] + public void TryMatch_WithSimpleMultiSegmentParamsOnLeftEndMatches() + { + RunTest( + "language/{lang}-", + "/language/en-", + null, + new RouteValueDictionary(new { lang = "en" })); + } + + [Fact] + public void TryMatch_WithSimpleMultiSegmentParamsOnRightEndMatches() + { + RunTest( + "language/a{lang}", + "/language/aen", + null, + new RouteValueDictionary(new { lang = "en" })); + } + + [Fact] + public void TryMatch_WithSimpleMultiSegmentParamsOnNeitherEndMatches() + { + RunTest( + "language/a{lang}a", + "/language/aena", + null, + new RouteValueDictionary(new { lang = "en" })); + } + + [Fact] + public void TryMatch_WithMultiSegmentStandamatchMvcRouteMatches() + { + RunTest( + "{controller}.mvc/{action}/{id}", + "/home.mvc/index", + new RouteValueDictionary(new { action = "Index", id = (string)null }), + new RouteValueDictionary(new { controller = "home", action = "index", id = (string)null })); + } + + [Fact] + public void TryMatch_WithMultiSegmentParamsOnBothEndsWithDefaultValuesMatches() + { + RunTest( + "language/{lang}-{region}", + "/language/-", + new RouteValueDictionary(new { lang = "xx", region = "yy" }), + null); + } + + [Fact] + public void TryMatch_WithUrlWithMultiSegmentWithRepeatedDots() + { + RunTest( + "{Controller}..mvc/{id}/{Param1}", + "/Home..mvc/123/p1", + null, + new RouteValueDictionary(new { Controller = "Home", id = "123", Param1 = "p1" })); + } + + [Fact] + public void TryMatch_WithUrlWithTwoRepeatedDots() + { + RunTest( + "{Controller}.mvc/../{action}", + "/Home.mvc/../index", + null, + new RouteValueDictionary(new { Controller = "Home", action = "index" })); + } + + [Fact] + public void TryMatch_WithUrlWithThreeRepeatedDots() + { + RunTest( + "{Controller}.mvc/.../{action}", + "/Home.mvc/.../index", + null, + new RouteValueDictionary(new { Controller = "Home", action = "index" })); + } + + [Fact] + public void TryMatch_WithUrlWithManyRepeatedDots() + { + RunTest( + "{Controller}.mvc/../../../{action}", + "/Home.mvc/../../../index", + null, + new RouteValueDictionary(new { Controller = "Home", action = "index" })); + } + + [Fact] + public void TryMatch_WithUrlWithExclamationPoint() + { + RunTest( + "{Controller}.mvc!/{action}", + "/Home.mvc!/index", + null, + new RouteValueDictionary(new { Controller = "Home", action = "index" })); + } + + [Fact] + public void TryMatch_WithUrlWithStartingDotDotSlash() + { + RunTest( + "../{Controller}.mvc", + "/../Home.mvc", + null, + new RouteValueDictionary(new { Controller = "Home" })); + } + + [Fact] + public void TryMatch_WithUrlWithStartingBackslash() + { + RunTest( + @"\{Controller}.mvc", + @"/\Home.mvc", + null, + new RouteValueDictionary(new { Controller = "Home" })); + } + + [Fact] + public void TryMatch_WithUrlWithBackslashSeparators() + { + RunTest( + @"{Controller}.mvc\{id}\{Param1}", + @"/Home.mvc\123\p1", + null, + new RouteValueDictionary(new { Controller = "Home", id = "123", Param1 = "p1" })); + } + + [Fact] + public void TryMatch_WithUrlWithParenthesesLiterals() + { + RunTest( + @"(Controller).mvc", + @"/(Controller).mvc", + null, + new RouteValueDictionary()); + } + + [Fact] + public void TryMatch_WithUrlWithTrailingSlashSpace() + { + RunTest( + @"Controller.mvc/ ", + @"/Controller.mvc/ ", + null, + new RouteValueDictionary()); + } + + [Fact] + public void TryMatch_WithUrlWithTrailingSpace() + { + RunTest( + @"Controller.mvc ", + @"/Controller.mvc ", + null, + new RouteValueDictionary()); + } + + [Fact] + public void TryMatch_WithCatchAllCapturesDots() + { + // DevDiv Bugs 189892: UrlRouting: Catch all parameter cannot capture url segments that contain the "." + RunTest( + "Home/ShowPilot/{missionId}/{*name}", + "/Home/ShowPilot/777/12345./foobar", + new RouteValueDictionary(new + { + controller = "Home", + action = "ShowPilot", + missionId = (string)null, + name = (string)null + }), + new RouteValueDictionary(new { controller = "Home", action = "ShowPilot", missionId = "777", name = "12345./foobar" })); + } + + [Fact] + public void TryMatch_RouteWithCatchAll_MatchesMultiplePathSegments() + { + // Arrange + var matcher = CreateMatcher("{p1}/{*p2}"); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/v1/v2/v3", values); + + // Assert + Assert.True(match); + Assert.Equal(2, values.Count); + Assert.Equal("v1", values["p1"]); + Assert.Equal("v2/v3", values["p2"]); + } + + [Fact] + public void TryMatch_RouteWithCatchAll_MatchesTrailingSlash() + { + // Arrange + var matcher = CreateMatcher("{p1}/{*p2}"); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/v1/", values); + + // Assert + Assert.True(match); + Assert.Equal(2, values.Count); + Assert.Equal("v1", values["p1"]); + Assert.Null(values["p2"]); + } + + [Fact] + public void TryMatch_RouteWithCatchAll_MatchesEmptyContent() + { + // Arrange + var matcher = CreateMatcher("{p1}/{*p2}"); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch("/v1", values); + + // Assert + Assert.True(match); + Assert.Equal(2, values.Count); + Assert.Equal("v1", values["p1"]); + Assert.Null(values["p2"]); + } + + [Fact] + public void TryMatch_RouteWithCatchAll_MatchesEmptyContent_DoesNotReplaceExistingRouteValue() + { + // Arrange + var matcher = CreateMatcher("{p1}/{*p2}"); + + var values = new RouteValueDictionary(new { p2 = "hello" }); + + // Act + var match = matcher.TryMatch("/v1", values); + + // Assert + Assert.True(match); + Assert.Equal(2, values.Count); + Assert.Equal("v1", values["p1"]); + Assert.Equal("hello", values["p2"]); + } + + [Fact] + public void TryMatch_RouteWithCatchAll_UsesDefaultValueForEmptyContent() + { + // Arrange + var matcher = CreateMatcher("{p1}/{*p2}", new { p2 = "catchall" }); + + var values = new RouteValueDictionary(new { p2 = "overridden" }); + + // Act + var match = matcher.TryMatch("/v1", values); + + // Assert + Assert.True(match); + Assert.Equal(2, values.Count); + Assert.Equal("v1", values["p1"]); + Assert.Equal("catchall", values["p2"]); + } + + [Fact] + public void TryMatch_RouteWithCatchAll_IgnoresDefaultValueForNonEmptyContent() + { + // Arrange + var matcher = CreateMatcher("{p1}/{*p2}", new { p2 = "catchall" }); + + var values = new RouteValueDictionary(new { p2 = "overridden" }); + + // Act + var match = matcher.TryMatch("/v1/hello/whatever", values); + + // Assert + Assert.True(match); + Assert.Equal(2, values.Count); + Assert.Equal("v1", values["p1"]); + Assert.Equal("hello/whatever", values["p2"]); + } + + [Fact] + public void TryMatch_DoesNotMatchOnlyLeftLiteralMatch() + { + // DevDiv Bugs 191180: UrlRouting: Wrong template getting matched if a url segment is a substring of the requested url + RunTest( + "foo", + "/fooBAR", + null, + null); + } + + [Fact] + public void TryMatch_DoesNotMatchOnlyRightLiteralMatch() + { + // DevDiv Bugs 191180: UrlRouting: Wrong template getting matched if a url segment is a substring of the requested url + RunTest( + "foo", + "/BARfoo", + null, + null); + } + + [Fact] + public void TryMatch_DoesNotMatchMiddleLiteralMatch() + { + // DevDiv Bugs 191180: UrlRouting: Wrong template getting matched if a url segment is a substring of the requested url + RunTest( + "foo", + "/BARfooBAR", + null, + null); + } + + [Fact] + public void TryMatch_DoesMatchesExactLiteralMatch() + { + // DevDiv Bugs 191180: UrlRouting: Wrong template getting matched if a url segment is a substring of the requested url + RunTest( + "foo", + "/foo", + null, + new RouteValueDictionary()); + } + + [Fact] + public void TryMatch_WithWeimatchParameterNames() + { + RunTest( + "foo/{ }/{.!$%}/{dynamic.data}/{op.tional}", + "/foo/space/weimatch/omatcherid", + new RouteValueDictionary() { { " ", "not a space" }, { "op.tional", "default value" }, { "ran!dom", "va@lue" } }, + new RouteValueDictionary() { { " ", "space" }, { ".!$%", "weimatch" }, { "dynamic.data", "omatcherid" }, { "op.tional", "default value" }, { "ran!dom", "va@lue" } }); + } + + [Fact] + public void TryMatch_DoesNotMatchRouteWithLiteralSeparatomatchefaultsButNoValue() + { + RunTest( + "{controller}/{language}-{locale}", + "/foo", + new RouteValueDictionary(new { language = "en", locale = "US" }), + null); + } + + [Fact] + public void TryMatch_DoesNotMatchesRouteWithLiteralSeparatomatchefaultsAndLeftValue() + { + RunTest( + "{controller}/{language}-{locale}", + "/foo/xx-", + new RouteValueDictionary(new { language = "en", locale = "US" }), + null); + } + + [Fact] + public void TryMatch_DoesNotMatchesRouteWithLiteralSeparatomatchefaultsAndRightValue() + { + RunTest( + "{controller}/{language}-{locale}", + "/foo/-yy", + new RouteValueDictionary(new { language = "en", locale = "US" }), + null); + } + + [Fact] + public void TryMatch_MatchesRouteWithLiteralSeparatomatchefaultsAndValue() + { + RunTest( + "{controller}/{language}-{locale}", + "/foo/xx-yy", + new RouteValueDictionary(new { language = "en", locale = "US" }), + new RouteValueDictionary { { "language", "xx" }, { "locale", "yy" }, { "controller", "foo" } }); + } + + [Fact] + public void TryMatch_SetsOptionalParameter() + { + // Arrange + var route = CreateMatcher("{controller}/{action?}"); + var url = "/Home/Index"; + + var values = new RouteValueDictionary(); + + // Act + var match = route.TryMatch(url, values); + + // Assert + Assert.True(match); + Assert.Equal(2, values.Count); + Assert.Equal("Home", values["controller"]); + Assert.Equal("Index", values["action"]); + } + + [Fact] + public void TryMatch_DoesNotSetOptionalParameter() + { + // Arrange + var route = CreateMatcher("{controller}/{action?}"); + var url = "/Home"; + + var values = new RouteValueDictionary(); + + // Act + var match = route.TryMatch(url, values); + + // Assert + Assert.True(match); + Assert.Single(values); + Assert.Equal("Home", values["controller"]); + Assert.False(values.ContainsKey("action")); + } + + [Fact] + public void TryMatch_DoesNotSetOptionalParameter_EmptyString() + { + // Arrange + var route = CreateMatcher("{controller?}"); + var url = ""; + + var values = new RouteValueDictionary(); + + // Act + var match = route.TryMatch(url, values); + + // Assert + Assert.True(match); + Assert.Empty(values); + Assert.False(values.ContainsKey("controller")); + } + + [Fact] + public void TryMatch__EmptyRouteWith_EmptyString() + { + // Arrange + var route = CreateMatcher(""); + var url = ""; + + var values = new RouteValueDictionary(); + + // Act + var match = route.TryMatch(url, values); + + // Assert + Assert.True(match); + Assert.Empty(values); + } + + [Fact] + public void TryMatch_MultipleOptionalParameters() + { + // Arrange + var route = CreateMatcher("{controller}/{action?}/{id?}"); + var url = "/Home/Index"; + + var values = new RouteValueDictionary(); + + // Act + var match = route.TryMatch(url, values); + + // Assert + Assert.True(match); + Assert.Equal(2, values.Count); + Assert.Equal("Home", values["controller"]); + Assert.Equal("Index", values["action"]); + Assert.False(values.ContainsKey("id")); + } + + [Theory] + [InlineData("///")] + [InlineData("/a//")] + [InlineData("/a/b//")] + [InlineData("//b//")] + [InlineData("///c")] + [InlineData("///c/")] + public void TryMatch_MultipleOptionalParameters_WithEmptyIntermediateSegmentsDoesNotMatch(string url) + { + // Arrange + var route = CreateMatcher("{controller?}/{action?}/{id?}"); + + var values = new RouteValueDictionary(); + + // Act + var match = route.TryMatch(url, values); + + // Assert + Assert.False(match); + } + + [Theory] + [InlineData("")] + [InlineData("/")] + [InlineData("/a")] + [InlineData("/a/")] + [InlineData("/a/b")] + [InlineData("/a/b/")] + [InlineData("/a/b/c")] + [InlineData("/a/b/c/")] + public void TryMatch_MultipleOptionalParameters_WithIncrementalOptionalValues(string url) + { + // Arrange + var route = CreateMatcher("{controller?}/{action?}/{id?}"); + + var values = new RouteValueDictionary(); + + // Act + var match = route.TryMatch(url, values); + + // Assert + Assert.True(match); + } + + [Theory] + [InlineData("///")] + [InlineData("////")] + [InlineData("/a//")] + [InlineData("/a///")] + [InlineData("//b/")] + [InlineData("//b//")] + [InlineData("///c")] + [InlineData("///c/")] + public void TryMatch_MultipleParameters_WithEmptyValues(string url) + { + // Arrange + var route = CreateMatcher("{controller}/{action}/{id}"); + + var values = new RouteValueDictionary(); + + // Act + var match = route.TryMatch(url, values); + + // Assert + Assert.False(match); + } + + [Theory] + [InlineData("/a/b/c//")] + [InlineData("/a/b/c/////")] + public void TryMatch_CatchAllParameters_WithEmptyValuesAtTheEnd(string url) + { + // Arrange + var route = CreateMatcher("{controller}/{action}/{*id}"); + + var values = new RouteValueDictionary(); + + // Act + var match = route.TryMatch(url, values); + + // Assert + Assert.True(match); + } + + [Theory] + [InlineData("/a/b//")] + [InlineData("/a/b///c")] + public void TryMatch_CatchAllParameters_WithEmptyValues(string url) + { + // Arrange + var route = CreateMatcher("{controller}/{action}/{*id}"); + + var values = new RouteValueDictionary(); + + // Act + var match = route.TryMatch(url, values); + + // Assert + Assert.False(match); + } + + private RoutePatternMatcher CreateMatcher(string template, object defaults = null) + { + return new RoutePatternMatcher( + RoutePatternParser.Parse(template), + new RouteValueDictionary(defaults)); + } + + private static void RunTest( + string template, + string path, + RouteValueDictionary defaults, + IDictionary expected) + { + // Arrange + var matcher = new RoutePatternMatcher( + RoutePatternParser.Parse(template), + defaults ?? new RouteValueDictionary()); + + var values = new RouteValueDictionary(); + + // Act + var match = matcher.TryMatch(new PathString(path), values); + + // Assert + if (expected == null) + { + Assert.False(match); + } + else + { + Assert.True(match); + Assert.Equal(expected.Count, values.Count); + foreach (string key in values.Keys) + { + Assert.Equal(expected[key], values[key]); + } + } + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Patterns/RoutePatternParserTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Patterns/RoutePatternParserTest.cs new file mode 100644 index 0000000000..b564805d31 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Patterns/RoutePatternParserTest.cs @@ -0,0 +1,763 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using Microsoft.AspNetCore.Testing; +using Xunit; +using static Microsoft.AspNetCore.Routing.Patterns.RoutePatternFactory; + +namespace Microsoft.AspNetCore.Routing.Patterns +{ + public class RoutePatternParameterParserTest + { + [Fact] + public void Parse_SingleLiteral() + { + // Arrange + var template = "cool"; + + var expected = Pattern( + template, + Segment(LiteralPart("cool"))); + + // Act + var actual = RoutePatternParser.Parse(template); + + // Assert + Assert.Equal(expected, actual, new RoutePatternEqualityComparer()); + } + + [Fact] + public void Parse_SingleParameter() + { + // Arrange + var template = "{p}"; + + var expected = Pattern(template, Segment(ParameterPart("p"))); + + // Act + var actual = RoutePatternParser.Parse(template); + + // Assert + Assert.Equal(expected, actual, new RoutePatternEqualityComparer()); + } + + [Fact] + public void Parse_OptionalParameter() + { + // Arrange + var template = "{p?}"; + + var expected = Pattern(template, Segment(ParameterPart("p", null, RoutePatternParameterKind.Optional))); + + // Act + var actual = RoutePatternParser.Parse(template); + + // Assert + Assert.Equal(expected, actual, new RoutePatternEqualityComparer()); + } + + [Fact] + public void Parse_MultipleLiterals() + { + // Arrange + var template = "cool/awesome/super"; + + var expected = Pattern( + template, + Segment(LiteralPart("cool")), + Segment(LiteralPart("awesome")), + Segment(LiteralPart("super"))); + + // Act + var actual = RoutePatternParser.Parse(template); + + // Assert + Assert.Equal(expected, actual, new RoutePatternEqualityComparer()); + } + + [Fact] + public void Parse_MultipleParameters() + { + // Arrange + var template = "{p1}/{p2}/{*p3}"; + + var expected = Pattern( + template, + Segment(ParameterPart("p1")), + Segment(ParameterPart("p2")), + Segment(ParameterPart("p3", null, RoutePatternParameterKind.CatchAll))); + + // Act + var actual = RoutePatternParser.Parse(template); + + // Assert + Assert.Equal(expected, actual, new RoutePatternEqualityComparer()); + } + + [Fact] + public void Parse_ComplexSegment_LP() + { + // Arrange + var template = "cool-{p1}"; + + var expected = Pattern( + template, + Segment( + LiteralPart("cool-"), + ParameterPart("p1"))); + + // Act + var actual = RoutePatternParser.Parse(template); + + // Assert + Assert.Equal(expected, actual, new RoutePatternEqualityComparer()); + } + + [Fact] + public void Parse_ComplexSegment_PL() + { + // Arrange + var template = "{p1}-cool"; + + var expected = Pattern( + template, + Segment( + ParameterPart("p1"), + LiteralPart("-cool"))); + + // Act + var actual = RoutePatternParser.Parse(template); + + // Assert + Assert.Equal(expected, actual, new RoutePatternEqualityComparer()); + } + + [Fact] + public void Parse_ComplexSegment_PLP() + { + // Arrange + var template = "{p1}-cool-{p2}"; + + var expected = Pattern( + template, + Segment( + ParameterPart("p1"), + LiteralPart("-cool-"), + ParameterPart("p2"))); + + // Act + var actual = RoutePatternParser.Parse(template); + + // Assert + Assert.Equal(expected, actual, new RoutePatternEqualityComparer()); + } + + [Fact] + public void Parse_ComplexSegment_LPL() + { + // Arrange + var template = "cool-{p1}-awesome"; + + var expected = Pattern( + template, + Segment( + LiteralPart("cool-"), + ParameterPart("p1"), + LiteralPart("-awesome"))); + + // Act + var actual = RoutePatternParser.Parse(template); + + // Assert + Assert.Equal(expected, actual, new RoutePatternEqualityComparer()); + } + + [Fact] + public void Parse_ComplexSegment_OptionalParameterFollowingPeriod() + { + // Arrange + var template = "{p1}.{p2?}"; + + var expected = Pattern( + template, + Segment( + ParameterPart("p1"), + SeparatorPart("."), + ParameterPart("p2", null, RoutePatternParameterKind.Optional))); + + // Act + var actual = RoutePatternParser.Parse(template); + + // Assert + Assert.Equal(expected, actual, new RoutePatternEqualityComparer()); + } + + [Fact] + public void Parse_ComplexSegment_ParametersFollowingPeriod() + { + // Arrange + var template = "{p1}.{p2}"; + + var expected = Pattern( + template, + Segment( + ParameterPart("p1"), + LiteralPart("."), + ParameterPart("p2"))); + + // Act + var actual = RoutePatternParser.Parse(template); + + // Assert + Assert.Equal(expected, actual, new RoutePatternEqualityComparer()); + } + + [Fact] + public void Parse_ComplexSegment_OptionalParameterFollowingPeriod_ThreeParameters() + { + // Arrange + var template = "{p1}.{p2}.{p3?}"; + + var expected = Pattern( + template, + Segment( + ParameterPart("p1"), + LiteralPart("."), + ParameterPart("p2"), + SeparatorPart("."), + ParameterPart("p3", null, RoutePatternParameterKind.Optional))); + + // Act + var actual = RoutePatternParser.Parse(template); + + // Assert + Assert.Equal(expected, actual, new RoutePatternEqualityComparer()); + } + + [Fact] + public void Parse_ComplexSegment_ThreeParametersSeperatedByPeriod() + { + // Arrange + var template = "{p1}.{p2}.{p3}"; + + var expected = Pattern( + template, + Segment( + ParameterPart("p1"), + LiteralPart("."), + ParameterPart("p2"), + LiteralPart("."), + ParameterPart("p3"))); + + // Act + var actual = RoutePatternParser.Parse(template); + + // Assert + Assert.Equal(expected, actual, new RoutePatternEqualityComparer()); + } + + [Fact] + public void Parse_ComplexSegment_OptionalParameterFollowingPeriod_MiddleSegment() + { + // Arrange + var template = "{p1}.{p2?}/{p3}"; + + var expected = Pattern( + template, + Segment( + ParameterPart("p1"), + SeparatorPart("."), + ParameterPart("p2", null, RoutePatternParameterKind.Optional)), + Segment( + ParameterPart("p3"))); + + // Act + var actual = RoutePatternParser.Parse(template); + + // Assert + Assert.Equal(expected, actual, new RoutePatternEqualityComparer()); + } + + [Fact] + public void Parse_ComplexSegment_OptionalParameterFollowingPeriod_LastSegment() + { + // Arrange + var template = "{p1}/{p2}.{p3?}"; + + var expected = Pattern( + template, + Segment( + ParameterPart("p1")), + Segment( + ParameterPart("p2"), + SeparatorPart("."), + ParameterPart("p3", null, RoutePatternParameterKind.Optional))); + + // Act + var actual = RoutePatternParser.Parse(template); + + // Assert + Assert.Equal(expected, actual, new RoutePatternEqualityComparer()); + } + + [Fact] + public void Parse_ComplexSegment_OptionalParameterFollowingPeriod_PeriodAfterSlash() + { + // Arrange + var template = "{p2}/.{p3?}"; + + var expected = Pattern( + template, + Segment(ParameterPart("p2")), + Segment( + SeparatorPart("."), + ParameterPart("p3", null, RoutePatternParameterKind.Optional))); + + // Act + var actual = RoutePatternParser.Parse(template); + + // Assert + Assert.Equal(expected, actual, new RoutePatternEqualityComparer()); + } + + [Theory] + [InlineData(@"{p1:regex(^\d{{3}}-\d{{3}}-\d{{4}}$)}", @"regex(^\d{3}-\d{3}-\d{4}$)")] // ssn + [InlineData(@"{p1:regex(^\d{{1,2}}\/\d{{1,2}}\/\d{{4}}$)}", @"regex(^\d{1,2}\/\d{1,2}\/\d{4}$)")] // date + [InlineData(@"{p1:regex(^\w+\@\w+\.\w+)}", @"regex(^\w+\@\w+\.\w+)")] // email + [InlineData(@"{p1:regex(([}}])\w+)}", @"regex(([}])\w+)")] // Not balanced } + [InlineData(@"{p1:regex(([{{(])\w+)}", @"regex(([{(])\w+)")] // Not balanced { + public void Parse_RegularExpressions(string template, string constraint) + { + // Arrange + var expected = Pattern( + template, + Segment( + ParameterPart( + "p1", + null, + RoutePatternParameterKind.Standard, + Constraint(constraint)))); + + // Act + var actual = RoutePatternParser.Parse(template); + + // Assert + Assert.Equal(expected, actual, new RoutePatternEqualityComparer()); + } + + [Theory] + [InlineData(@"{p1:regex(^\d{{3}}-\d{{3}}-\d{{4}}}$)}")] // extra } + [InlineData(@"{p1:regex(^\d{{3}}-\d{{3}}-\d{{4}}$)}}")] // extra } at the end + [InlineData(@"{{p1:regex(^\d{{3}}-\d{{3}}-\d{{4}}$)}")] // extra { at the begining + [InlineData(@"{p1:regex(([}])\w+}")] // Not escaped } + [InlineData(@"{p1:regex(^\d{{3}}-\d{{3}}-\d{{4}$)}")] // Not escaped } + [InlineData(@"{p1:regex(abc)")] + public void Parse_RegularExpressions_Invalid(string template) + { + // Act and Assert + ExceptionAssert.Throws( + () => RoutePatternParser.Parse(template), + "There is an incomplete parameter in the route template. Check that each '{' character has a matching " + + "'}' character."); + } + + [Theory] + [InlineData(@"{p1:regex(^\d{{3}}-\d{{3}}-\d{{{4}}$)}")] // extra { + [InlineData(@"{p1:regex(^\d{{3}}-\d{{3}}-\d{4}}$)}")] // Not escaped { + public void Parse_RegularExpressions_Unescaped(string template) + { + // Act and Assert + ExceptionAssert.Throws( + () => RoutePatternParser.Parse(template), + "In a route parameter, '{' and '}' must be escaped with '{{' and '}}'."); + } + + [Theory] + [InlineData("{p1}.{p2?}.{p3}", "p2", ".")] + [InlineData("{p1?}{p2}", "p1", "{p2}")] + [InlineData("{p1?}{p2?}", "p1", "{p2?}")] + [InlineData("{p1}.{p2?})", "p2", ")")] + [InlineData("{foorb?}-bar-{z}", "foorb", "-bar-")] + public void Parse_ComplexSegment_OptionalParameter_NotTheLastPart( + string template, + string parameter, + string invalid) + { + // Act and Assert + ExceptionAssert.Throws( + () => RoutePatternParser.Parse(template), + "An optional parameter must be at the end of the segment. In the segment '" + template + + "', optional parameter '" + parameter + "' is followed by '" + invalid + "'."); + } + + [Theory] + [InlineData("{p1}-{p2?}", "-")] + [InlineData("{p1}..{p2?}", "..")] + [InlineData("..{p2?}", "..")] + [InlineData("{p1}.abc.{p2?}", ".abc.")] + [InlineData("{p1}{p2?}", "{p1}")] + public void Parse_ComplexSegment_OptionalParametersSeperatedByPeriod_Invalid(string template, string parameter) + { + // Act and Assert + ExceptionAssert.Throws( + () => RoutePatternParser.Parse(template), + "In the segment '" + template + "', the optional parameter 'p2' is preceded by an invalid " + + "segment '" + parameter + "'. Only a period (.) can precede an optional parameter."); + } + + [Fact] + public void InvalidTemplate_WithRepeatedParameter() + { + var ex = ExceptionAssert.Throws( + () => RoutePatternParser.Parse("{Controller}.mvc/{id}/{controller}"), + "The route parameter name 'controller' appears more than one time in the route template."); + } + + [Theory] + [InlineData("123{a}abc{")] + [InlineData("123{a}abc}")] + [InlineData("xyz}123{a}abc}")] + [InlineData("{{p1}")] + [InlineData("{p1}}")] + [InlineData("p1}}p2{")] + public void InvalidTemplate_WithMismatchedBraces(string template) + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse(template), + @"There is an incomplete parameter in the route template. Check that each '{' character has a " + + "matching '}' character."); + } + + [Fact] + public void InvalidTemplate_CannotHaveCatchAllInMultiSegment() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("123{a}abc{*moo}"), + "A path segment that contains more than one section, such as a literal section or a parameter, " + + "cannot contain a catch-all parameter."); + } + + [Fact] + public void InvalidTemplate_CannotHaveMoreThanOneCatchAll() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("{*p1}/{*p2}"), + "A catch-all parameter can only appear as the last segment of the route template."); + } + + [Fact] + public void InvalidTemplate_CannotHaveMoreThanOneCatchAllInMultiSegment() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("{*p1}abc{*p2}"), + "A path segment that contains more than one section, such as a literal section or a parameter, " + + "cannot contain a catch-all parameter."); + } + + [Fact] + public void InvalidTemplate_CannotHaveCatchAllWithNoName() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("foo/{*}"), + "The route parameter name '' is invalid. Route parameter names must be non-empty and cannot" + + " contain these characters: '{', '}', '/'. The '?' character marks a parameter as optional," + + " and can occur only at the end of the parameter. The '*' character marks a parameter as catch-all," + + " and can occur only at the start of the parameter."); + } + + [Theory] + [InlineData("{a*}", "a*")] + [InlineData("{*a*}", "a*")] + [InlineData("{*a*:int}", "a*")] + [InlineData("{*a*=5}", "a*")] + [InlineData("{*a*b=5}", "a*b")] + [InlineData("{p1?}.{p2/}/{p3}", "p2/")] + [InlineData("{p{{}", "p{")] + [InlineData("{p}}}", "p}")] + [InlineData("{p/}", "p/")] + public void ParseRouteParameter_ThrowsIf_ParameterContainsSpecialCharacters( + string template, + string parameterName) + { + // Arrange + var expectedMessage = "The route parameter name '" + parameterName + "' is invalid. Route parameter " + + "names must be non-empty and cannot contain these characters: '{', '}', '/'. The '?' character " + + "marks a parameter as optional, and can occur only at the end of the parameter. The '*' character " + + "marks a parameter as catch-all, and can occur only at the start of the parameter."; + + // Act & Assert + ExceptionAssert.Throws(() => RoutePatternParser.Parse(template), expectedMessage); + } + + [Fact] + public void InvalidTemplate_CannotHaveConsecutiveOpenBrace() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("foo/{{p1}"), + "There is an incomplete parameter in the route template. Check that each '{' character has a " + + "matching '}' character."); + } + + [Fact] + public void InvalidTemplate_CannotHaveConsecutiveCloseBrace() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("foo/{p1}}"), + "There is an incomplete parameter in the route template. Check that each '{' character has a " + + "matching '}' character."); + } + + [Fact] + public void InvalidTemplate_SameParameterTwiceThrows() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("{aaa}/{AAA}"), + "The route parameter name 'AAA' appears more than one time in the route template."); + } + + [Fact] + public void InvalidTemplate_SameParameterTwiceAndOneCatchAllThrows() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("{aaa}/{*AAA}"), + "The route parameter name 'AAA' appears more than one time in the route template."); + } + + [Fact] + public void InvalidTemplate_InvalidParameterNameWithCloseBracketThrows() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("{a}/{aa}a}/{z}"), + "There is an incomplete parameter in the route template. Check that each '{' character has a " + + "matching '}' character."); + } + + [Fact] + public void InvalidTemplate_InvalidParameterNameWithOpenBracketThrows() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("{a}/{a{aa}/{z}"), + "In a route parameter, '{' and '}' must be escaped with '{{' and '}}'."); + } + + [Fact] + public void InvalidTemplate_InvalidParameterNameWithEmptyNameThrows() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("{a}/{}/{z}"), + "The route parameter name '' is invalid. Route parameter names must be non-empty and cannot" + + " contain these characters: '{', '}', '/'. The '?' character marks a parameter as optional, and" + + " can occur only at the end of the parameter. The '*' character marks a parameter as catch-all," + + " and can occur only at the start of the parameter."); + } + + [Fact] + public void InvalidTemplate_InvalidParameterNameWithQuestionThrows() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("{Controller}.mvc/{?}"), + "The route parameter name '' is invalid. Route parameter names must be non-empty and cannot" + + " contain these characters: '{', '}', '/'. The '?' character marks a parameter as optional, and" + + " can occur only at the end of the parameter. The '*' character marks a parameter as catch-all," + + " and can occur only at the start of the parameter."); + } + + [Fact] + public void InvalidTemplate_ConsecutiveSeparatorsSlashSlashThrows() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("{a}//{z}"), + "The route template separator character '/' cannot appear consecutively. It must be separated by " + + "either a parameter or a literal value."); + } + + [Fact] + public void InvalidTemplate_WithCatchAllNotAtTheEndThrows() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("foo/{p1}/{*p2}/{p3}"), + "A catch-all parameter can only appear as the last segment of the route template."); + } + + [Fact] + public void InvalidTemplate_RepeatedParametersThrows() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("foo/aa{p1}{p2}"), + "A path segment cannot contain two consecutive parameters. They must be separated by a '/' or by " + + "a literal string."); + } + + [Theory] + [InlineData("/foo")] + [InlineData("~/foo")] + public void ValidTemplate_CanStartWithSlashOrTildeSlash(string routePattern) + { + // Arrange & Act + var pattern = RoutePatternParser.Parse(routePattern); + + // Assert + Assert.Equal(routePattern, pattern.RawText); + } + + [Fact] + public void InvalidTemplate_CannotStartWithTilde() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("~foo"), + "The route template cannot start with a '~' character unless followed by a '/'."); + } + + [Fact] + public void InvalidTemplate_CannotContainQuestionMark() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("foor?bar"), + "The literal section 'foor?bar' is invalid. Literal sections cannot contain the '?' character."); + } + + [Fact] + public void InvalidTemplate_ParameterCannotContainQuestionMark_UnlessAtEnd() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("{foor?b}"), + "The route parameter name 'foor?b' is invalid. Route parameter names must be non-empty and cannot" + + " contain these characters: '{', '}', '/'. The '?' character marks a parameter as optional, and" + + " can occur only at the end of the parameter. The '*' character marks a parameter as catch-all," + + " and can occur only at the start of the parameter."); + } + + [Fact] + public void InvalidTemplate_CatchAllMarkedOptional() + { + ExceptionAssert.Throws( + () => RoutePatternParser.Parse("{a}/{*b?}"), + "A catch-all parameter cannot be marked optional."); + } + + private class RoutePatternEqualityComparer : + IEqualityComparer, + IEqualityComparer + { + public bool Equals(RoutePattern x, RoutePattern y) + { + if (x == null && y == null) + { + return true; + } + else if (x == null || y == null) + { + return false; + } + else + { + if (!string.Equals(x.RawText, y.RawText, StringComparison.Ordinal)) + { + return false; + } + + if (x.PathSegments.Count != y.PathSegments.Count) + { + return false; + } + + for (var i = 0; i < x.PathSegments.Count; i++) + { + if (x.PathSegments[i].Parts.Count != y.PathSegments[i].Parts.Count) + { + return false; + } + + for (int j = 0; j < x.PathSegments[i].Parts.Count; j++) + { + if (!Equals(x.PathSegments[i].Parts[j], y.PathSegments[i].Parts[j])) + { + return false; + } + } + } + + if (x.Parameters.Count != y.Parameters.Count) + { + return false; + } + + for (var i = 0; i < x.Parameters.Count; i++) + { + if (!Equals(x.Parameters[i], y.Parameters[i])) + { + return false; + } + } + + return true; + } + } + + private bool Equals(RoutePatternPart x, RoutePatternPart y) + { + if (x.GetType() != y.GetType()) + { + return false; + } + + if (x.IsLiteral && y.IsLiteral) + { + return Equals((RoutePatternLiteralPart)x, (RoutePatternLiteralPart)y); + } + else if (x.IsParameter && y.IsParameter) + { + return Equals((RoutePatternParameterPart)x, (RoutePatternParameterPart)y); + } + else if (x.IsSeparator && y.IsSeparator) + { + return Equals((RoutePatternSeparatorPart)x, (RoutePatternSeparatorPart)y); + } + + Debug.Fail("This should not be reachable. Do you need to update the comparison logic?"); + return false; + } + + private bool Equals(RoutePatternLiteralPart x, RoutePatternLiteralPart y) + { + return x.Content == y.Content; + } + + private bool Equals(RoutePatternParameterPart x, RoutePatternParameterPart y) + { + return + x.Name == y.Name && + x.Default == y.Default && + x.ParameterKind == y.ParameterKind && + Enumerable.SequenceEqual(x.ParameterPolicies, y.ParameterPolicies, this); + + } + + public bool Equals(RoutePatternParameterPolicyReference x, RoutePatternParameterPolicyReference y) + { + return + x.Content == y.Content && + x.ParameterPolicy == y.ParameterPolicy; + } + + private bool Equals(RoutePatternSeparatorPart x, RoutePatternSeparatorPart y) + { + return x.Content == y.Content; + } + + public int GetHashCode(RoutePattern obj) + { + throw new NotImplementedException(); + } + + public int GetHashCode(RoutePatternParameterPolicyReference obj) + { + throw new NotImplementedException(); + } + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RequestDelegateRouteBuilderExtensionsTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RequestDelegateRouteBuilderExtensionsTest.cs index 534c193a93..825204db5d 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RequestDelegateRouteBuilderExtensionsTest.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RequestDelegateRouteBuilderExtensionsTest.cs @@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Routing // add routes that behave as advertised. public class RequestDelegateRouteBuilderExtensionsTest { - private static readonly RequestDelegate NullHandler = (c) => Task.FromResult(0); + private static readonly RequestDelegate NullHandler = (c) => Task.CompletedTask; public static TheoryData, Action> MatchingActions { diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteCollectionTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteCollectionTest.cs index c0d5a0187a..c7e33f2754 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteCollectionTest.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteCollectionTest.cs @@ -19,7 +19,7 @@ namespace Microsoft.AspNetCore.Routing { public class RouteCollectionTest { - private static readonly RequestDelegate NullHandler = (c) => Task.FromResult(0); + private static readonly RequestDelegate NullHandler = (c) => Task.CompletedTask; [Theory] [InlineData(@"Home/Index/23", "/home/index/23", true, false)] @@ -89,6 +89,44 @@ namespace Microsoft.AspNetCore.Routing Assert.Empty(pathData.DataTokens); } + [Theory] + [InlineData(@"Home/Index/23?Param1=ABC&Param2=Xyz", "/Home/Index/23?Param1=ABC&Param2=Xyz", false, true, false)] + [InlineData(@"Home/Index/23?Param1=ABC&Param2=Xyz", "/Home/Index/23?Param1=ABC&Param2=Xyz", false, false, false)] + [InlineData(@"Home/Index/23?Param1=ABC&Param2=Xyz", "/home/index/23/?param1=abc¶m2=xyz", true, true, true)] + [InlineData(@"Home/Index/23#Param1=ABC&Param2=Xyz", "/Home/Index/23/#Param1=ABC&Param2=Xyz", false, true, true)] + [InlineData(@"Home/Index/23#Param1=ABC&Param2=Xyz", "/home/index/23#Param1=ABC&Param2=Xyz", true, false, false)] + [InlineData(@"Home/Index/23/?Param1=ABC&Param2=Xyz", "/home/index/23/?param1=abc¶m2=xyz", true, true, true)] + [InlineData(@"Home/Index/23/#Param1=ABC&Param2=Xyz", "/home/index/23/#Param1=ABC&Param2=Xyz", true, false, true)] + [InlineData(@"Home/Index/23/#Param1=ABC&Param2=Xyz", "/home/index/23/#param1=abc¶m2=xyz", true, true, true)] + public void GetVirtualPath_CanLowerCaseUrls_QueryStrings_BasedOnOptions( + string returnUrl, + string expectedUrl, + bool lowercaseUrls, + bool lowercaseQueryStrings, bool appendTrailingSlash) + { + // Arrange + var target = new Mock(MockBehavior.Strict); + target + .Setup(e => e.GetVirtualPath(It.IsAny())) + .Returns(new VirtualPathData(target.Object, returnUrl)); + + var routeCollection = new RouteCollection(); + routeCollection.Add(target.Object); + var virtualPathContext = CreateVirtualPathContext( + options: GetRouteOptions( + lowerCaseUrls: lowercaseUrls, + lowercaseQueryStrings: lowercaseQueryStrings, + appendTrailingSlash: appendTrailingSlash)); + + // Act + var pathData = routeCollection.GetVirtualPath(virtualPathContext); + + // Assert + Assert.Equal(expectedUrl, pathData.VirtualPath); + Assert.Same(target.Object, pathData.Router); + Assert.Empty(pathData.DataTokens); + } + [Theory] [MemberData(nameof(DataTokensTestData))] public void GetVirtualPath_ReturnsDataTokens(RouteValueDictionary dataTokens, string routerName) @@ -663,12 +701,14 @@ namespace Microsoft.AspNetCore.Routing private static Action GetRouteOptions( bool lowerCaseUrls = false, - bool appendTrailingSlash = false) + bool appendTrailingSlash = false, + bool lowercaseQueryStrings = false) { return (options) => { options.LowercaseUrls = lowerCaseUrls; options.AppendTrailingSlash = appendTrailingSlash; + options.LowercaseQueryStrings = lowercaseQueryStrings; }; } } diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteConstraintBuilderTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteConstraintBuilderTest.cs index 9eca4d7759..6fb5df1c3d 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteConstraintBuilderTest.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteConstraintBuilderTest.cs @@ -5,6 +5,7 @@ using System; using System.Linq; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Routing.Constraints; +using Microsoft.AspNetCore.Routing.TestObjects; using Microsoft.AspNetCore.Testing; using Microsoft.Extensions.Options; using Moq; @@ -183,7 +184,7 @@ namespace Microsoft.AspNetCore.Routing .SetupGet(o => o.Value) .Returns(new RouteOptions()); - var inlineConstraintResolver = new DefaultInlineConstraintResolver(options.Object); + var inlineConstraintResolver = new DefaultInlineConstraintResolver(options.Object, new TestServiceProvider()); return new RouteConstraintBuilder(inlineConstraintResolver, template); } } diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteTest.cs index a09935fcd5..668a54ee8a 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteTest.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteTest.cs @@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Routing.Constraints; using Microsoft.AspNetCore.Routing.Internal; +using Microsoft.AspNetCore.Routing.TestObjects; using Microsoft.AspNetCore.Testing; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; @@ -23,7 +24,7 @@ namespace Microsoft.AspNetCore.Routing { public class RouteTest { - private static readonly RequestDelegate NullHandler = (c) => Task.FromResult(0); + private static readonly RequestDelegate NullHandler = (c) => Task.CompletedTask; private static IInlineConstraintResolver _inlineConstraintResolver = GetInlineConstraintResolver(); [Fact] @@ -1581,7 +1582,6 @@ namespace Microsoft.AspNetCore.Routing // Assert var templateRoute = (Route)routeBuilder.Routes[0]; - // Assert Assert.Equal(expectedDictionary.Count, templateRoute.DataTokens.Count); foreach (var expectedKey in expectedDictionary.Keys) { @@ -1590,6 +1590,22 @@ namespace Microsoft.AspNetCore.Routing } } + [Fact] + public void RegisteringRoute_WithParameterPolicy_AbleToAddTheRoute() + { + // Arrange + var routeBuilder = CreateRouteBuilder(); + + // Act + routeBuilder.MapRoute("mockName", + "{controller:test-policy}/{action}"); + + // Assert + var templateRoute = (Route)routeBuilder.Routes[0]; + + Assert.Empty(templateRoute.Constraints); + } + [Fact] public void RegisteringRouteWithInvalidConstraints_Throws() { @@ -1751,6 +1767,8 @@ namespace Microsoft.AspNetCore.Routing var services = new ServiceCollection(); services.AddSingleton(_inlineConstraintResolver); services.AddSingleton(); + services.AddSingleton(); + services.Configure(ConfigureRouteOptions); var applicationBuilder = Mock.Of(); applicationBuilder.ApplicationServices = services.BuildServiceProvider(); @@ -1836,28 +1854,24 @@ namespace Microsoft.AspNetCore.Routing private static IInlineConstraintResolver GetInlineConstraintResolver() { - var routeOptions = new Mock>(); - routeOptions - .SetupGet(o => o.Value) - .Returns(new RouteOptions()); + var routeOptions = new RouteOptions(); + ConfigureRouteOptions(routeOptions); - return new DefaultInlineConstraintResolver(routeOptions.Object); + var routeOptionsMock = new Mock>(); + routeOptionsMock + .SetupGet(o => o.Value) + .Returns(routeOptions); + + return new DefaultInlineConstraintResolver(routeOptionsMock.Object, new TestServiceProvider()); } - private class CapturingConstraint : IRouteConstraint + private static void ConfigureRouteOptions(RouteOptions options) { - public IDictionary Values { get; private set; } + options.ConstraintMap["test-policy"] = typeof(TestPolicy); + } - public bool Match( - HttpContext httpContext, - IRouter route, - string routeKey, - RouteValueDictionary values, - RouteDirection routeDirection) - { - Values = new RouteValueDictionary(values); - return true; - } + private class TestPolicy : IParameterPolicy + { } } } diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteValueEqualityComparerTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteValueEqualityComparerTest.cs new file mode 100644 index 0000000000..4f6dc0a87d --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteValueEqualityComparerTest.cs @@ -0,0 +1,41 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Xunit; + +namespace Microsoft.AspNetCore.Routing +{ + public class RouteValueEqualityComparerTest + { + private readonly RouteValueEqualityComparer _comparer; + + public RouteValueEqualityComparerTest() + { + _comparer = new RouteValueEqualityComparer(); + } + + [Theory] + [InlineData(5, 7, false)] + [InlineData("foo", "foo", true)] + [InlineData("foo", "FoO", true)] + [InlineData("foo", "boo", false)] + [InlineData("7", 7, true)] + [InlineData(7, "7", true)] + [InlineData(5.7d, 5.7d, true)] + [InlineData(null, null, true)] + [InlineData(null, "foo", false)] + [InlineData("foo", null, false)] + [InlineData(null, "", true)] + [InlineData("", null, true)] + [InlineData("", "", true)] + [InlineData("", "foo", false)] + [InlineData("foo", "", false)] + [InlineData(true, true, true)] + [InlineData(true, false, false)] + public void EqualsTest(object x, object y, bool expected) + { + var actual = _comparer.Equals(x, y); + Assert.Equal(expected, actual); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteValuesAddressMetadataTests.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteValuesAddressMetadataTests.cs new file mode 100644 index 0000000000..1a237c2ad1 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteValuesAddressMetadataTests.cs @@ -0,0 +1,33 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Text; +using Xunit; + +namespace Microsoft.AspNetCore.Routing +{ + public class RouteValuesAddressMetadataTests + { + [Fact] + public void DebuggerToString_NoNameAndRequiredValues_ReturnsString() + { + var metadata = new RouteValuesAddressMetadata(null, new Dictionary()); + + Assert.Equal("Name: - Required values: ", metadata.DebuggerToString()); + } + + [Fact] + public void DebuggerToString_HasNameAndRequiredValues_ReturnsString() + { + var metadata = new RouteValuesAddressMetadata("Name!", new Dictionary + { + ["requiredValue1"] = "One", + ["requiredValue2"] = 2, + }); + + Assert.Equal("Name: Name! - Required values: requiredValue1 = \"One\", requiredValue2 = \"2\"", metadata.DebuggerToString()); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteValuesAddressSchemeTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteValuesAddressSchemeTest.cs new file mode 100644 index 0000000000..fc92eeab27 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouteValuesAddressSchemeTest.cs @@ -0,0 +1,375 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using System.Linq; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Internal; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.AspNetCore.Routing.TestObjects; +using Microsoft.AspNetCore.Routing.Tree; +using Xunit; + +namespace Microsoft.AspNetCore.Routing +{ + public class RouteValuesAddressSchemeTest + { + [Fact] + public void GetOutboundMatches_GetsNamedMatchesFor_EndpointsHaving_IRouteNameMetadata() + { + // Arrange + var endpoint1 = CreateEndpoint("/a"); + var endpoint2 = CreateEndpoint("/a", routeName: "named"); + + // Act + var addressScheme = CreateAddressScheme(endpoint1, endpoint2); + + // Assert + Assert.NotNull(addressScheme.AllMatches); + Assert.Equal(2, addressScheme.AllMatches.Count()); + Assert.NotNull(addressScheme.NamedMatches); + Assert.True(addressScheme.NamedMatches.TryGetValue("named", out var namedMatches)); + var namedMatch = Assert.Single(namedMatches); + var actual = Assert.IsType(namedMatch.Match.Entry.Data); + Assert.Same(endpoint2, actual); + } + + [Fact] + public void GetOutboundMatches_GroupsMultipleEndpoints_WithSameName() + { + // Arrange + var endpoint1 = CreateEndpoint("/a"); + var endpoint2 = CreateEndpoint("/a", routeName: "named"); + var endpoint3 = CreateEndpoint("/b", routeName: "named"); + + // Act + var addressScheme = CreateAddressScheme(endpoint1, endpoint2, endpoint3); + + // Assert + Assert.NotNull(addressScheme.AllMatches); + Assert.Equal(3, addressScheme.AllMatches.Count()); + Assert.NotNull(addressScheme.NamedMatches); + Assert.True(addressScheme.NamedMatches.TryGetValue("named", out var namedMatches)); + Assert.Equal(2, namedMatches.Count); + Assert.Same(endpoint2, Assert.IsType(namedMatches[0].Match.Entry.Data)); + Assert.Same(endpoint3, Assert.IsType(namedMatches[1].Match.Entry.Data)); + } + + [Fact] + public void GetOutboundMatches_GroupsMultipleEndpoints_WithSameName_IgnoringCase() + { + // Arrange + var endpoint1 = CreateEndpoint("/a"); + var endpoint2 = CreateEndpoint("/a", routeName: "named"); + var endpoint3 = CreateEndpoint("/b", routeName: "NaMed"); + + // Act + var addressScheme = CreateAddressScheme(endpoint1, endpoint2, endpoint3); + + // Assert + Assert.NotNull(addressScheme.AllMatches); + Assert.Equal(3, addressScheme.AllMatches.Count()); + Assert.NotNull(addressScheme.NamedMatches); + Assert.True(addressScheme.NamedMatches.TryGetValue("named", out var namedMatches)); + Assert.Equal(2, namedMatches.Count); + Assert.Same(endpoint2, Assert.IsType(namedMatches[0].Match.Entry.Data)); + Assert.Same(endpoint3, Assert.IsType(namedMatches[1].Match.Entry.Data)); + } + + [Fact] + public void EndpointDataSource_ChangeCallback_Refreshes_OutboundMatches() + { + // Arrange 1 + var endpoint1 = CreateEndpoint("/a"); + var dynamicDataSource = new DynamicEndpointDataSource(new[] { endpoint1 }); + + // Act 1 + var addressScheme = new CustomRouteValuesBasedAddressScheme(new CompositeEndpointDataSource(new[] { dynamicDataSource })); + + // Assert 1 + Assert.NotNull(addressScheme.AllMatches); + var match = Assert.Single(addressScheme.AllMatches); + var actual = Assert.IsType(match.Entry.Data); + Assert.Same(endpoint1, actual); + + // Arrange 2 + var endpoint2 = CreateEndpoint("/b"); + + // Act 2 + // Trigger change + dynamicDataSource.AddEndpoint(endpoint2); + + // Arrange 2 + var endpoint3 = CreateEndpoint("/c"); + + // Act 2 + // Trigger change + dynamicDataSource.AddEndpoint(endpoint3); + + // Arrange 3 + var endpoint4 = CreateEndpoint("/d"); + + // Act 3 + // Trigger change + dynamicDataSource.AddEndpoint(endpoint4); + + // Assert 3 + Assert.NotNull(addressScheme.AllMatches); + Assert.Collection( + addressScheme.AllMatches, + (m) => + { + actual = Assert.IsType(m.Entry.Data); + Assert.Same(endpoint1, actual); + }, + (m) => + { + actual = Assert.IsType(m.Entry.Data); + Assert.Same(endpoint2, actual); + }, + (m) => + { + actual = Assert.IsType(m.Entry.Data); + Assert.Same(endpoint3, actual); + }, + (m) => + { + actual = Assert.IsType(m.Entry.Data); + Assert.Same(endpoint4, actual); + }); + } + + [Fact] + public void FindEndpoints_LookedUpByCriteria_NoMatch() + { + // Arrange + var endpoint1 = CreateEndpoint( + "api/orders/{id}/{name?}/{urgent=true}/{zipCode}", + defaults: new { zipCode = 3510 }, + requiredValues: new { id = 7 }, + routeName: "OrdersApi"); + var endpoint2 = CreateEndpoint( + "api/orders/{id}/{name?}/{urgent=true}/{zipCode}", + defaults: new { id = 12 }, + requiredValues: new { zipCode = 3510 }, + routeName: "OrdersApi"); + var addressScheme = CreateAddressScheme(endpoint1, endpoint2); + + // Act + var foundEndpoints = addressScheme.FindEndpoints( + new RouteValuesAddress + { + ExplicitValues = new RouteValueDictionary(new { id = 8 }), + AmbientValues = new RouteValueDictionary(new { urgent = false }), + }); + + // Assert + Assert.Empty(foundEndpoints); + } + + [Fact] + public void FindEndpoints_LookedUpByCriteria_OneMatch() + { + // Arrange + var endpoint1 = CreateEndpoint( + "api/orders/{id}/{name?}/{urgent=true}/{zipCode}", + defaults: new { zipCode = 3510 }, + requiredValues: new { id = 7 }, + routeName: "OrdersApi"); + var endpoint2 = CreateEndpoint( + "api/orders/{id}/{name?}/{urgent=true}/{zipCode}", + defaults: new { id = 12 }, + routeName: "OrdersApi"); + var addressScheme = CreateAddressScheme(endpoint1, endpoint2); + + // Act + var foundEndpoints = addressScheme.FindEndpoints( + new RouteValuesAddress + { + ExplicitValues = new RouteValueDictionary(new { id = 13 }), + AmbientValues = new RouteValueDictionary(new { zipCode = 3500 }), + }); + + // Assert + var actual = Assert.Single(foundEndpoints); + Assert.Same(endpoint2, actual); + } + + [Fact] + public void FindEndpoints_LookedUpByCriteria_MultipleMatches() + { + // Arrange + var endpoint1 = CreateEndpoint( + "api/orders/{id}/{name?}/{urgent=true}/{zipCode}", + defaults: new { zipCode = 3510 }, + requiredValues: new { id = 7 }, + routeName: "OrdersApi"); + var endpoint2 = CreateEndpoint( + "api/orders/{id}/{name?}/{urgent}/{zipCode}", + defaults: new { id = 12 }, + routeName: "OrdersApi"); + var endpoint3 = CreateEndpoint( + "api/orders/{id}/{name?}/{urgent=true}/{zipCode}", + defaults: new { id = 12 }, + routeName: "OrdersApi"); + var addressScheme = CreateAddressScheme(endpoint1, endpoint2, endpoint3); + + // Act + var foundEndpoints = addressScheme.FindEndpoints( + new RouteValuesAddress + { + ExplicitValues = new RouteValueDictionary(new { id = 7 }), + AmbientValues = new RouteValueDictionary(new { zipCode = 3500 }), + }); + + // Assert + Assert.Contains(endpoint1, foundEndpoints); + Assert.Contains(endpoint1, foundEndpoints); + } + + [Fact] + public void FindEndpoints_ReturnsEndpoint_WhenLookedUpByRouteName() + { + // Arrange + var expected = CreateEndpoint( + "api/orders/{id}", + defaults: new { controller = "Orders", action = "GetById" }, + requiredValues: new { controller = "Orders", action = "GetById" }, + routeName: "OrdersApi"); + var addressScheme = CreateAddressScheme(expected); + + // Act + var foundEndpoints = addressScheme.FindEndpoints( + new RouteValuesAddress + { + ExplicitValues = new RouteValueDictionary(new { id = 10 }), + AmbientValues = new RouteValueDictionary(new { controller = "Home", action = "Index" }), + RouteName = "OrdersApi" + }); + + // Assert + var actual = Assert.Single(foundEndpoints); + Assert.Same(expected, actual); + } + + [Fact] + public void FindEndpoints_AlwaysReturnsEndpointsByRouteName_IgnoringMissingRequiredParameterValues() + { + // Here 'id' is the required value. The endpoint addressScheme would always return an endpoint by looking up + // name only. Its the link generator which uses these endpoints finally to generate a link or not + // based on the required parameter values being present or not. + + // Arrange + var expected = CreateEndpoint( + "api/orders/{id}", + defaults: new { controller = "Orders", action = "GetById" }, + requiredValues: new { controller = "Orders", action = "GetById" }, + routeName: "OrdersApi"); + var addressScheme = CreateAddressScheme(expected); + + // Act + var foundEndpoints = addressScheme.FindEndpoints( + new RouteValuesAddress + { + ExplicitValues = new RouteValueDictionary(), + AmbientValues = new RouteValueDictionary(), + RouteName = "OrdersApi" + }); + + // Assert + var actual = Assert.Single(foundEndpoints); + Assert.Same(expected, actual); + } + + [Fact] + public void GetOutboundMatches_DoesNotInclude_EndpointsWithSuppressLinkGenerationMetadata() + { + // Arrange + var endpoint = CreateEndpoint( + "/a", + metadataCollection: new EndpointMetadataCollection(new[] { new SuppressLinkGenerationMetadata() })); + + // Act + var addressScheme = CreateAddressScheme(endpoint); + + // Assert + Assert.Empty(addressScheme.AllMatches); + } + + [Fact] + public void AddressScheme_UnsuppressedEndpoint_IsUsed() + { + // Arrange + var endpoint = EndpointFactory.CreateRouteEndpoint( + "/a", + metadata: new object[] { new SuppressLinkGenerationMetadata(), new EncourageLinkGenerationMetadata(), }); + + // Act + var addressScheme = CreateAddressScheme(endpoint); + + // Assert + Assert.Same(endpoint, Assert.Single(addressScheme.AllMatches).Entry.Data); + } + + private CustomRouteValuesBasedAddressScheme CreateAddressScheme(params Endpoint[] endpoints) + { + return CreateAddressScheme(new DefaultEndpointDataSource(endpoints)); + } + + private CustomRouteValuesBasedAddressScheme CreateAddressScheme(params EndpointDataSource[] dataSources) + { + return new CustomRouteValuesBasedAddressScheme(new CompositeEndpointDataSource(dataSources)); + } + + private RouteEndpoint CreateEndpoint( + string template, + object defaults = null, + object requiredValues = null, + int order = 0, + string routeName = null, + EndpointMetadataCollection metadataCollection = null) + { + if (metadataCollection == null) + { + var metadata = new List(); + if (!string.IsNullOrEmpty(routeName) || requiredValues != null) + { + metadata.Add(new RouteValuesAddressMetadata(routeName, new RouteValueDictionary(requiredValues))); + } + metadataCollection = new EndpointMetadataCollection(metadata); + } + + return new RouteEndpoint( + TestConstants.EmptyRequestDelegate, + RoutePatternFactory.Parse(template, defaults, parameterPolicies: null), + order, + metadataCollection, + null); + } + + private class CustomRouteValuesBasedAddressScheme : RouteValuesAddressScheme + { + public CustomRouteValuesBasedAddressScheme(CompositeEndpointDataSource dataSource) + : base(dataSource) + { + } + + public IEnumerable AllMatches { get; private set; } + + public IDictionary> NamedMatches { get; private set; } + + protected override (List, Dictionary>) GetOutboundMatches() + { + var matches = base.GetOutboundMatches(); + AllMatches = matches.Item1; + NamedMatches = matches.Item2; + return matches; + } + } + + private class EncourageLinkGenerationMetadata : ISuppressLinkGenerationMetadata + { + public bool SuppressLinkGeneration => false; + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouterMiddlewareTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouterMiddlewareTest.cs index 464a389b44..3df8f6ad48 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouterMiddlewareTest.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/RouterMiddlewareTest.cs @@ -13,10 +13,10 @@ namespace Microsoft.AspNetCore.Routing public class RouterMiddlewareTest { [Fact] - public async void Invoke_LogsCorrectValues_WhenNotHandled() + public async Task Invoke_LogsCorrectValues_WhenNotHandled() { // Arrange - var expectedMessage = "Request did not match any routes."; + var expectedMessage = "Request did not match any routes"; var isHandled = false; var sink = new TestSink( @@ -45,7 +45,7 @@ namespace Microsoft.AspNetCore.Routing } [Fact] - public async void Invoke_DoesNotLog_WhenHandled() + public async Task Invoke_DoesNotLog_WhenHandled() { // Arrange var isHandled = true; @@ -90,7 +90,7 @@ namespace Microsoft.AspNetCore.Routing public Task RouteAsync(RouteContext context) { - context.Handler = _isHandled ? (RequestDelegate)((c) => Task.FromResult(0)) : null; + context.Handler = _isHandled ? (RequestDelegate)((c) => Task.CompletedTask) : null; return Task.FromResult(null); } } diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Template/TemplateBinderTests.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Template/TemplateBinderTests.cs index d4dacaaa6b..5817d5ae03 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Template/TemplateBinderTests.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Template/TemplateBinderTests.cs @@ -5,7 +5,10 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text.Encodings.Web; +using Microsoft.AspNetCore.Routing.Constraints; using Microsoft.AspNetCore.Routing.Internal; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.AspNetCore.Routing.TestObjects; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.ObjectPool; using Microsoft.Extensions.Options; @@ -708,7 +711,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] - public void TemplateBinder_KeepsExplicitlySuppliedRouteValues_OnFailedRouetMatch() + public void TemplateBinder_KeepsExplicitlySuppliedRouteValues_OnFailedRouteMatch() { // Arrange var template = "{area?}/{controller=Home}/{action=Index}/{id?}"; @@ -1211,6 +1214,8 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests [Theory] [InlineData(null, null, true)] + [InlineData("", null, true)] + [InlineData(null, "", true)] [InlineData("blog", null, false)] [InlineData(null, "store", false)] [InlineData("Cool", "cool", true)] @@ -1228,12 +1233,96 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } } + [Fact] + public void GetValues_SuccessfullyMatchesRouteValues_ForExplicitEmptyStringValue_AndNullDefault() + { + // Arrange + var expected = "/Home/Index"; + var template = "Home/Index"; + var defaults = new RouteValueDictionary(new { controller = "Home", action = "Index", area = (string)null }); + var ambientValues = new RouteValueDictionary(new { controller = "Rail", action = "Schedule", area = "Travel" }); + var explicitValues = new RouteValueDictionary(new { controller = "Home", action = "Index", area = "" }); + var binder = new TemplateBinder( + UrlEncoder.Default, + new DefaultObjectPoolProvider().Create(new UriBuilderContextPooledObjectPolicy()), + TemplateParser.Parse(template), + defaults); + + // Act1 + var result = binder.GetValues(ambientValues, explicitValues); + + // Assert1 + Assert.NotNull(result); + + // Act2 + var boundTemplate = binder.BindValues(result.AcceptedValues); + + // Assert2 + Assert.NotNull(boundTemplate); + Assert.Equal(expected, boundTemplate); + } + + [Fact] + public void GetValues_SuccessfullyMatchesRouteValues_ForExplicitNullValue_AndEmptyStringDefault() + { + // Arrange + var expected = "/Home/Index"; + var template = "Home/Index"; + var defaults = new RouteValueDictionary(new { controller = "Home", action = "Index", area = "" }); + var ambientValues = new RouteValueDictionary(new { controller = "Rail", action = "Schedule", area = "Travel" }); + var explicitValues = new RouteValueDictionary(new { controller = "Home", action = "Index", area = (string)null }); + var binder = new TemplateBinder( + UrlEncoder.Default, + new DefaultObjectPoolProvider().Create(new UriBuilderContextPooledObjectPolicy()), + TemplateParser.Parse(template), + defaults); + + // Act1 + var result = binder.GetValues(ambientValues, explicitValues); + + // Assert1 + Assert.NotNull(result); + + // Act2 + var boundTemplate = binder.BindValues(result.AcceptedValues); + + // Assert2 + Assert.NotNull(boundTemplate); + Assert.Equal(expected, boundTemplate); + } + + [Fact] + public void BindValues_ParameterTransformer() + { + // Arrange + var expected = "/ConventionalTransformerRoute/conventional-transformer/Param/my-value"; + + var template = "ConventionalTransformerRoute/conventional-transformer/Param/{param:length(500):slugify?}"; + var defaults = new RouteValueDictionary(new { controller = "ConventionalTransformer", action = "Param" }); + var ambientValues = new RouteValueDictionary(new { controller = "ConventionalTransformer", action = "Param" }); + var explicitValues = new RouteValueDictionary(new { controller = "ConventionalTransformer", action = "Param", param = "MyValue" }); + var binder = new TemplateBinder( + UrlEncoder.Default, + new DefaultObjectPoolProvider().Create(new UriBuilderContextPooledObjectPolicy()), + RoutePatternFactory.Parse(template), + defaults, + requiredKeys: defaults.Keys, + parameterPolicies: new (string, IParameterPolicy)[] { ("param", new LengthRouteConstraint(500)), ("param", new SlugifyParameterTransformer()), }); + + // Act + var result = binder.GetValues(ambientValues, explicitValues); + var boundTemplate = binder.BindValues(result.AcceptedValues); + + // Assert + Assert.Equal(expected, boundTemplate); + } + private static IInlineConstraintResolver GetInlineConstraintResolver() { var services = new ServiceCollection().AddOptions(); var serviceProvider = services.BuildServiceProvider(); var accessor = serviceProvider.GetRequiredService>(); - return new DefaultInlineConstraintResolver(accessor); + return new DefaultInlineConstraintResolver(accessor, serviceProvider); } private class PathAndQuery diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Template/TemplateMatcherTests.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Template/TemplateMatcherTests.cs index 1e5eb7c39e..fc78ef4cdc 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Template/TemplateMatcherTests.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Template/TemplateMatcherTests.cs @@ -1136,7 +1136,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests var services = new ServiceCollection().AddOptions(); var serviceProvider = services.BuildServiceProvider(); var accessor = serviceProvider.GetRequiredService>(); - return new DefaultInlineConstraintResolver(accessor); + return new DefaultInlineConstraintResolver(accessor, serviceProvider); } } } diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Template/TemplateParserTests.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Template/TemplateParserTests.cs index 7f9f9b8b40..9873a641bd 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Template/TemplateParserTests.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Template/TemplateParserTests.cs @@ -5,9 +5,6 @@ using System; using System.Collections.Generic; using System.Linq; using Microsoft.AspNetCore.Testing; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Options; -using Moq; using Xunit; namespace Microsoft.AspNetCore.Routing.Template.Tests @@ -505,6 +502,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests [InlineData(@"{p1:regex(([}])\w+}")] // Not escaped } [InlineData(@"{p1:regex(^\d{{3}}-\d{{3}}-\d{{4}$)}")] // Not escaped } [InlineData(@"{p1:regex(abc)")] + [ReplaceCulture] public void Parse_RegularExpressions_Invalid(string template) { // Act and Assert @@ -517,6 +515,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests [Theory] [InlineData(@"{p1:regex(^\d{{3}}-\d{{3}}-\d{{{4}}$)}")] // extra { [InlineData(@"{p1:regex(^\d{{3}}-\d{{3}}-\d{4}}$)}")] // Not escaped { + [ReplaceCulture] public void Parse_RegularExpressions_Unescaped(string template) { // Act and Assert @@ -528,10 +527,11 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests [Theory] [InlineData("{p1}.{p2?}.{p3}", "p2", ".")] - [InlineData("{p1?}{p2}", "p1", "p2")] - [InlineData("{p1?}{p2?}", "p1", "p2")] + [InlineData("{p1?}{p2}", "p1", "{p2}")] + [InlineData("{p1?}{p2?}", "p1", "{p2?}")] [InlineData("{p1}.{p2?})", "p2", ")")] [InlineData("{foorb?}-bar-{z}", "foorb", "-bar-")] + [ReplaceCulture] public void Parse_ComplexSegment_OptionalParameter_NotTheLastPart( string template, string parameter, @@ -551,6 +551,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests [InlineData("..{p2?}", "..")] [InlineData("{p1}.abc.{p2?}", ".abc.")] [InlineData("{p1}{p2?}", "{p1}")] + [ReplaceCulture] public void Parse_ComplexSegment_OptionalParametersSeperatedByPeriod_Invalid(string template, string parameter) { // Act and Assert @@ -562,6 +563,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] + [ReplaceCulture] public void InvalidTemplate_WithRepeatedParameter() { var ex = ExceptionAssert.Throws( @@ -577,6 +579,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests [InlineData("{{p1}")] [InlineData("{p1}}")] [InlineData("p1}}p2{")] + [ReplaceCulture] public void InvalidTemplate_WithMismatchedBraces(string template) { ExceptionAssert.Throws( @@ -587,6 +590,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] + [ReplaceCulture] public void InvalidTemplate_CannotHaveCatchAllInMultiSegment() { ExceptionAssert.Throws( @@ -597,6 +601,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] + [ReplaceCulture] public void InvalidTemplate_CannotHaveMoreThanOneCatchAll() { ExceptionAssert.Throws( @@ -607,6 +612,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] + [ReplaceCulture] public void InvalidTemplate_CannotHaveMoreThanOneCatchAllInMultiSegment() { ExceptionAssert.Throws( @@ -617,6 +623,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] + [ReplaceCulture] public void InvalidTemplate_CannotHaveCatchAllWithNoName() { ExceptionAssert.Throws( @@ -629,7 +636,6 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Theory] - [InlineData("{**}", "*")] [InlineData("{a*}", "a*")] [InlineData("{*a*}", "a*")] [InlineData("{*a*:int}", "a*")] @@ -639,6 +645,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests [InlineData("{p{{}", "p{")] [InlineData("{p}}}", "p}")] [InlineData("{p/}", "p/")] + [ReplaceCulture] public void ParseRouteParameter_ThrowsIf_ParameterContainsSpecialCharacters( string template, string parameterName) @@ -655,19 +662,8 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests "Parameter name: routeTemplate"); } - [Theory] - [InlineData("/foo")] - [InlineData("~/foo")] - public void ValidTemplate_CanStartWithSlashOrTildeSlash(string routeTemplate) - { - // Arrange & Act - var template = TemplateParser.Parse(routeTemplate); - - // Assert - Assert.Equal(routeTemplate, template.TemplateText); - } - [Fact] + [ReplaceCulture] public void InvalidTemplate_CannotHaveConsecutiveOpenBrace() { ExceptionAssert.Throws( @@ -678,6 +674,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] + [ReplaceCulture] public void InvalidTemplate_CannotHaveConsecutiveCloseBrace() { ExceptionAssert.Throws( @@ -688,6 +685,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] + [ReplaceCulture] public void InvalidTemplate_SameParameterTwiceThrows() { ExceptionAssert.Throws( @@ -698,6 +696,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] + [ReplaceCulture] public void InvalidTemplate_SameParameterTwiceAndOneCatchAllThrows() { ExceptionAssert.Throws( @@ -708,6 +707,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] + [ReplaceCulture] public void InvalidTemplate_InvalidParameterNameWithCloseBracketThrows() { ExceptionAssert.Throws( @@ -718,6 +718,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] + [ReplaceCulture] public void InvalidTemplate_InvalidParameterNameWithOpenBracketThrows() { ExceptionAssert.Throws( @@ -727,6 +728,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] + [ReplaceCulture] public void InvalidTemplate_InvalidParameterNameWithEmptyNameThrows() { ExceptionAssert.Throws( @@ -739,6 +741,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] + [ReplaceCulture] public void InvalidTemplate_InvalidParameterNameWithQuestionThrows() { ExceptionAssert.Throws( @@ -751,6 +754,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] + [ReplaceCulture] public void InvalidTemplate_ConsecutiveSeparatorsSlashSlashThrows() { ExceptionAssert.Throws( @@ -761,6 +765,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] + [ReplaceCulture] public void InvalidTemplate_WithCatchAllNotAtTheEndThrows() { ExceptionAssert.Throws( @@ -771,6 +776,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] + [ReplaceCulture] public void InvalidTemplate_RepeatedParametersThrows() { ExceptionAssert.Throws( @@ -780,7 +786,20 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests "Parameter name: routeTemplate"); } + [Theory] + [InlineData("/foo")] + [InlineData("~/foo")] + public void ValidTemplate_CanStartWithSlashOrTildeSlash(string routeTemplate) + { + // Arrange & Act + var pattern = TemplateParser.Parse(routeTemplate); + + // Assert + Assert.Equal(routeTemplate, pattern.TemplateText); + } + [Fact] + [ReplaceCulture] public void InvalidTemplate_CannotStartWithTilde() { ExceptionAssert.Throws( @@ -790,6 +809,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] + [ReplaceCulture] public void InvalidTemplate_CannotContainQuestionMark() { ExceptionAssert.Throws( @@ -800,6 +820,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] + [ReplaceCulture] public void InvalidTemplate_ParameterCannotContainQuestionMark_UnlessAtEnd() { ExceptionAssert.Throws( @@ -812,6 +833,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests } [Fact] + [ReplaceCulture] public void InvalidTemplate_CatchAllMarkedOptional() { ExceptionAssert.Throws( @@ -844,7 +866,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests return false; } - for (int i = 0; i < x.Segments.Count; i++) + for (var i = 0; i < x.Segments.Count; i++) { if (x.Segments[i].Parts.Count != y.Segments[i].Parts.Count) { @@ -865,7 +887,7 @@ namespace Microsoft.AspNetCore.Routing.Template.Tests return false; } - for (int i = 0; i < x.Parameters.Count; i++) + for (var i = 0; i < x.Parameters.Count; i++) { if (!Equals(x.Parameters[i], y.Parameters[i])) { diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Template/TemplateSegmentTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Template/TemplateSegmentTest.cs new file mode 100644 index 0000000000..62f56f20b7 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Template/TemplateSegmentTest.cs @@ -0,0 +1,49 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using Microsoft.AspNetCore.Routing.Patterns; +using Xunit; + +namespace Microsoft.AspNetCore.Routing.Template +{ + public class TemplateSegmentTest + { + [Fact] + public void Ctor_RoutePatternPathSegment_ShouldThrowArgumentNullExceptionWhenOtherIsNull() + { + const RoutePatternPathSegment other = null; + + var actual = Assert.ThrowsAny(() => new TemplateSegment(other)); + Assert.Equal(nameof(other), actual.ParamName); + } + + [Fact] + public void ToRoutePatternPathSegment() + { + // Arrange + var literalPartA = RoutePatternFactory.LiteralPart("A"); + var paramPartB = RoutePatternFactory.ParameterPart("B"); + var paramPartC = RoutePatternFactory.ParameterPart("C"); + var paramPartD = RoutePatternFactory.ParameterPart("D"); + var separatorPartE = RoutePatternFactory.SeparatorPart("E"); + var templateSegment = new TemplateSegment(RoutePatternFactory.Segment(paramPartC, literalPartA, separatorPartE, paramPartB)); + + // Act + var routePatternPathSegment = templateSegment.ToRoutePatternPathSegment(); + templateSegment.Parts[1] = new TemplatePart(RoutePatternFactory.ParameterPart("D")); + templateSegment.Parts.RemoveAt(0); + + // Assert + Assert.Equal(4, routePatternPathSegment.Parts.Count); + Assert.IsType(routePatternPathSegment.Parts[0]); + Assert.Equal(paramPartC.Name, ((RoutePatternParameterPart) routePatternPathSegment.Parts[0]).Name); + Assert.IsType(routePatternPathSegment.Parts[1]); + Assert.Equal(literalPartA.Content, ((RoutePatternLiteralPart) routePatternPathSegment.Parts[1]).Content); + Assert.IsType(routePatternPathSegment.Parts[2]); + Assert.Equal(separatorPartE.Content, ((RoutePatternSeparatorPart) routePatternPathSegment.Parts[2]).Content); + Assert.IsType(routePatternPathSegment.Parts[3]); + Assert.Equal(paramPartB.Name, ((RoutePatternParameterPart) routePatternPathSegment.Parts[3]).Name); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TemplateParserDefaultValuesTests.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TemplateParserDefaultValuesTests.cs index 96c126fd30..ac3d032491 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TemplateParserDefaultValuesTests.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TemplateParserDefaultValuesTests.cs @@ -4,6 +4,7 @@ using System; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Routing.Internal; +using Microsoft.AspNetCore.Testing; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Moq; @@ -76,6 +77,7 @@ namespace Microsoft.AspNetCore.Routing.Tests } [Fact] + [ReplaceCulture] public void EmptyDefaultValue_WithOptionalParameter_Throws() { // Arrange @@ -99,6 +101,7 @@ namespace Microsoft.AspNetCore.Routing.Tests } [Fact] + [ReplaceCulture] public void NonEmptyDefaultValue_WithOptionalParameter_Throws() { // Arrange @@ -129,6 +132,8 @@ namespace Microsoft.AspNetCore.Routing.Tests var services = new ServiceCollection(); services.AddSingleton(_inlineConstraintResolver); services.AddSingleton(); + services.AddSingleton(); + services.Configure(options => { }); var applicationBuilder = Mock.Of(); applicationBuilder.ApplicationServices = services.BuildServiceProvider(); @@ -143,7 +148,7 @@ namespace Microsoft.AspNetCore.Routing.Tests var services = new ServiceCollection().AddOptions(); var serviceProvider = services.BuildServiceProvider(); var accessor = serviceProvider.GetRequiredService>(); - return new DefaultInlineConstraintResolver(accessor); + return new DefaultInlineConstraintResolver(accessor, serviceProvider); } } } diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestConstants.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestConstants.cs new file mode 100644 index 0000000000..0a32a95155 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestConstants.cs @@ -0,0 +1,13 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing +{ + public static class TestConstants + { + internal static readonly RequestDelegate EmptyRequestDelegate = (context) => Task.CompletedTask; + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestObjects/CapturingConstraint.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestObjects/CapturingConstraint.cs new file mode 100644 index 0000000000..94834493df --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestObjects/CapturingConstraint.cs @@ -0,0 +1,24 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; + +namespace Microsoft.AspNetCore.Routing.TestObjects +{ + internal class CapturingConstraint : IRouteConstraint + { + public IDictionary Values { get; private set; } + + public bool Match( + HttpContext httpContext, + IRouter route, + string routeKey, + RouteValueDictionary values, + RouteDirection routeDirection) + { + Values = new RouteValueDictionary(values); + return true; + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestObjects/DynamicEndpointDataSource.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestObjects/DynamicEndpointDataSource.cs new file mode 100644 index 0000000000..5459883875 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestObjects/DynamicEndpointDataSource.cs @@ -0,0 +1,54 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using System.Threading; +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Primitives; + +namespace Microsoft.AspNetCore.Routing.TestObjects +{ + public class DynamicEndpointDataSource : EndpointDataSource + { + private readonly List _endpoints; + private CancellationTokenSource _cts; + private CancellationChangeToken _changeToken; + private readonly object _lock; + + public DynamicEndpointDataSource(params Endpoint[] endpoints) + { + _endpoints = new List(); + _endpoints.AddRange(endpoints); + _lock = new object(); + + CreateChangeToken(); + } + + public override IChangeToken GetChangeToken() => _changeToken; + + public override IReadOnlyList Endpoints => _endpoints; + + // Trigger change + public void AddEndpoint(Endpoint endpoint) + { + _endpoints.Add(endpoint); + + // Capture the old tokens so that we can raise the callbacks on them. This is important so that + // consumers do not register callbacks on an inflight event causing a stackoverflow. + var oldTokenSource = _cts; + var oldToken = _changeToken; + + CreateChangeToken(); + + // Raise consumer callbacks. Any new callback registration would happen on the new token + // created in earlier step. + oldTokenSource.Cancel(); + } + + private void CreateChangeToken() + { + _cts = new CancellationTokenSource(); + _changeToken = new CancellationChangeToken(_cts.Token); + } + } +} \ No newline at end of file diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestObjects/SlugifyParameterTransformer.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestObjects/SlugifyParameterTransformer.cs new file mode 100644 index 0000000000..625a5c3137 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestObjects/SlugifyParameterTransformer.cs @@ -0,0 +1,16 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Text.RegularExpressions; + +namespace Microsoft.AspNetCore.Routing.TestObjects +{ + public class SlugifyParameterTransformer : IOutboundParameterTransformer + { + public string TransformOutbound(object value) + { + // Slugify value + return value == null ? null : Regex.Replace(value.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower(); + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestObjects/TestMatcher.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestObjects/TestMatcher.cs new file mode 100644 index 0000000000..151ca9c67a --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestObjects/TestMatcher.cs @@ -0,0 +1,31 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; +using Microsoft.AspNetCore.Routing.Matching; + +namespace Microsoft.AspNetCore.Routing.TestObjects +{ + internal class TestMatcher : Matcher + { + private readonly bool _isHandled; + + public TestMatcher(bool isHandled) + { + _isHandled = isHandled; + } + + public override Task MatchAsync(HttpContext httpContext, EndpointSelectorContext context) + { + if (_isHandled) + { + context.RouteValues = new RouteValueDictionary(new { controller = "Home", action = "Index" }); + context.Endpoint = new Endpoint(TestConstants.EmptyRequestDelegate, EndpointMetadataCollection.Empty, "Test endpoint"); + } + + return Task.CompletedTask; + } + } +} diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestObjects/TestMatcherFactory.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestObjects/TestMatcherFactory.cs new file mode 100644 index 0000000000..17fd346132 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestObjects/TestMatcherFactory.cs @@ -0,0 +1,22 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Routing.Matching; + +namespace Microsoft.AspNetCore.Routing.TestObjects +{ + internal class TestMatcherFactory : MatcherFactory + { + private readonly bool _isHandled; + + public TestMatcherFactory(bool isHandled) + { + _isHandled = isHandled; + } + + public override Matcher CreateMatcher(EndpointDataSource dataSource) + { + return new TestMatcher(_isHandled); + } + } +} \ No newline at end of file diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestObjects/TestServiceProvider.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestObjects/TestServiceProvider.cs new file mode 100644 index 0000000000..a9470edb24 --- /dev/null +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/TestObjects/TestServiceProvider.cs @@ -0,0 +1,15 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; + +namespace Microsoft.AspNetCore.Routing.TestObjects +{ + internal class TestServiceProvider : IServiceProvider + { + public object GetService(Type serviceType) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Tree/TreeRouteBuilderTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Tree/TreeRouteBuilderTest.cs index 2645e78439..dc9d2c7594 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Tree/TreeRouteBuilderTest.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Tree/TreeRouteBuilderTest.cs @@ -260,7 +260,7 @@ namespace Microsoft.AspNetCore.Routing.Tree var services = new ServiceCollection().AddOptions(); var serviceProvider = services.BuildServiceProvider(); var accessor = serviceProvider.GetRequiredService>(); - return new DefaultInlineConstraintResolver(accessor); + return new DefaultInlineConstraintResolver(accessor, serviceProvider); } } } diff --git a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Tree/TreeRouterTest.cs b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Tree/TreeRouterTest.cs index 66d15c5314..f18cb657bc 100644 --- a/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Tree/TreeRouterTest.cs +++ b/src/Routing/test/Microsoft.AspNetCore.Routing.Tests/Tree/TreeRouterTest.cs @@ -9,6 +9,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Routing.Internal; using Microsoft.AspNetCore.Routing.Template; +using Microsoft.AspNetCore.Routing.TestObjects; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.ObjectPool; @@ -20,7 +21,7 @@ namespace Microsoft.AspNetCore.Routing.Tree { public class TreeRouterTest { - private static readonly RequestDelegate NullHandler = (c) => Task.FromResult(0); + private static readonly RequestDelegate NullHandler = (c) => Task.CompletedTask; private static ObjectPool Pool = new DefaultObjectPoolProvider().Create( new UriBuilderContextPooledObjectPolicy()); @@ -38,7 +39,7 @@ namespace Microsoft.AspNetCore.Routing.Tree var expectedRouteGroup = CreateRouteGroup(0, "{parameter1=1}/{parameter2=2}/{parameter3=3}/{*parameter4=4}"); var routeValueKeys = new[] { "parameter1", "parameter2", "parameter3", "parameter4" }; var expectedRouteValues = new RouteValueDictionary(); - for (int i = 0; i < routeValueKeys.Length; i++) + for (var i = 0; i < routeValueKeys.Length; i++) { expectedRouteValues.Add(routeValueKeys[i], routeValues[i]); } @@ -209,7 +210,7 @@ namespace Microsoft.AspNetCore.Routing.Tree var expectedRouteGroup = CreateRouteGroup(0, "{parameter1=1}/{parameter2=2}/{parameter3=3}/{parameter4=4}"); var routeValueKeys = new[] { "parameter1", "parameter2", "parameter3", "parameter4" }; var expectedRouteValues = new RouteValueDictionary(); - for (int i = 0; i < routeValueKeys.Length; i++) + for (var i = 0; i < routeValueKeys.Length; i++) { expectedRouteValues.Add(routeValueKeys[i], routeValues[i]); } @@ -261,7 +262,7 @@ namespace Microsoft.AspNetCore.Routing.Tree var expectedRouteGroup = CreateRouteGroup(0, "{parameter1:int=1}/{parameter2:int=2}/{parameter3:int=3}/{parameter4:int=4}"); var routeValueKeys = new[] { "parameter1", "parameter2", "parameter3", "parameter4" }; var expectedRouteValues = new RouteValueDictionary(); - for (int i = 0; i < routeValueKeys.Length; i++) + for (var i = 0; i < routeValueKeys.Length; i++) { expectedRouteValues.Add(routeValueKeys[i], routeValues[i]); } @@ -304,7 +305,7 @@ namespace Microsoft.AspNetCore.Routing.Tree var expectedRouteGroup = CreateRouteGroup(0, "{parameter1=1}/{parameter2=2}/{parameter3=3}/{*parameter4=4}"); var routeValueKeys = new[] { "parameter1", "parameter2", "parameter3", "parameter4" }; var expectedRouteValues = new RouteValueDictionary(); - for (int i = 0; i < routeValueKeys.Length; i++) + for (var i = 0; i < routeValueKeys.Length; i++) { expectedRouteValues.Add(routeValueKeys[i], routeValues[i]); } @@ -1819,7 +1820,7 @@ namespace Microsoft.AspNetCore.Routing.Tree nestedRouters = new List(c.RouteData.Routers); c.Handler = null; // Not a match }) - .Returns(Task.FromResult(0)); + .Returns(Task.CompletedTask); var builder = CreateBuilder(); MapInboundEntry(builder, "api/Store", handler: next.Object); @@ -1856,7 +1857,7 @@ namespace Microsoft.AspNetCore.Routing.Tree nestedRouters = new List(c.RouteData.Routers); c.Handler = null; // Not a match }) - .Returns(Task.FromResult(0)); + .Returns(Task.CompletedTask); var builder = CreateBuilder(); MapInboundEntry(builder, "api/Store", handler: next.Object); @@ -1900,7 +1901,7 @@ namespace Microsoft.AspNetCore.Routing.Tree nestedRouters = new List(c.RouteData.Routers); throw new Exception(); }) - .Returns(Task.FromResult(0)); + .Returns(Task.CompletedTask); var builder = CreateBuilder(); MapInboundEntry(builder, "api/Store", handler: next.Object); @@ -2133,7 +2134,7 @@ namespace Microsoft.AspNetCore.Routing.Tree var optionsMock = new Mock>(); optionsMock.SetupGet(o => o.Value).Returns(options); - return new DefaultInlineConstraintResolver(optionsMock.Object); + return new DefaultInlineConstraintResolver(optionsMock.Object, new TestServiceProvider()); } private static TreeRouteBuilder CreateBuilder() diff --git a/src/Routing/test/WebSites/Directory.Build.props b/src/Routing/test/WebSites/Directory.Build.props new file mode 100644 index 0000000000..2ff6b1fb54 --- /dev/null +++ b/src/Routing/test/WebSites/Directory.Build.props @@ -0,0 +1,11 @@ + + + + + + netcoreapp2.2 + $(DeveloperBuildTestWebsiteTfms) + netcoreapp2.2 + $(StandardTestWebsiteTfms);net461 + + diff --git a/src/Routing/test/WebSites/RoutingWebSite/EndsWithStringRouteConstraint.cs b/src/Routing/test/WebSites/RoutingWebSite/EndsWithStringRouteConstraint.cs new file mode 100644 index 0000000000..efb8431e2a --- /dev/null +++ b/src/Routing/test/WebSites/RoutingWebSite/EndsWithStringRouteConstraint.cs @@ -0,0 +1,33 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Globalization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing; + +namespace RoutingWebSite +{ + internal class EndsWithStringRouteConstraint : IRouteConstraint + { + private readonly string _endsWith; + + public EndsWithStringRouteConstraint(string endsWith) + { + _endsWith = endsWith; + } + + public bool Match(HttpContext httpContext, IRouter route, string routeKey, RouteValueDictionary values, RouteDirection routeDirection) + { + var value = values[routeKey]; + if (value == null) + { + return false; + } + + var valueString = Convert.ToString(value, CultureInfo.InvariantCulture); + var endsWith = valueString.EndsWith(_endsWith, StringComparison.OrdinalIgnoreCase); + return endsWith; + } + } +} diff --git a/src/Routing/test/WebSites/RoutingWebSite/Program.cs b/src/Routing/test/WebSites/RoutingWebSite/Program.cs new file mode 100644 index 0000000000..d96af1814f --- /dev/null +++ b/src/Routing/test/WebSites/RoutingWebSite/Program.cs @@ -0,0 +1,72 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Logging; + +namespace RoutingWebSite +{ + public class Program + { + public const string EndpointRoutingScenario = "endpointrouting"; + public const string RouterScenario = "router"; + + public static void Main(string[] args) + { + var webHost = GetWebHostBuilder(args).Build(); + webHost.Run(); + } + + // For unit testing + public static IWebHostBuilder GetWebHostBuilder(string[] args) + { + string scenario; + if (args.Length == 0) + { + Console.WriteLine("Choose a sample to run:"); + Console.WriteLine($"1. {EndpointRoutingScenario}"); + Console.WriteLine($"2. {RouterScenario}"); + Console.WriteLine(); + + scenario = Console.ReadLine(); + } + else + { + scenario = args[0]; + } + + Type startupType; + switch (scenario) + { + case "1": + case EndpointRoutingScenario: + startupType = typeof(UseEndpointRoutingStartup); + break; + + case "2": + case RouterScenario: + startupType = typeof(UseRouterStartup); + break; + + default: + Console.WriteLine($"unknown scenario {scenario}"); + Console.WriteLine($"usage: dotnet run -- ({EndpointRoutingScenario}|{RouterScenario})"); + throw new InvalidOperationException(); + + } + + return new WebHostBuilder() + .UseKestrel() + .UseIISIntegration() + .ConfigureLogging(b => + { + b.AddConsole(); + b.SetMinimumLevel(LogLevel.Critical); + }) + .UseContentRoot(Environment.CurrentDirectory) + .UseStartup(startupType); + } + } +} diff --git a/src/Routing/test/WebSites/RoutingWebSite/RoutingWebSite.csproj b/src/Routing/test/WebSites/RoutingWebSite/RoutingWebSite.csproj new file mode 100644 index 0000000000..d462c5fbbc --- /dev/null +++ b/src/Routing/test/WebSites/RoutingWebSite/RoutingWebSite.csproj @@ -0,0 +1,19 @@ + + + + netcoreapp2.2 + $(TargetFrameworks);net461 + + + + + + + + + + + + + + diff --git a/src/Routing/test/WebSites/RoutingWebSite/UseEndpointRoutingStartup.cs b/src/Routing/test/WebSites/RoutingWebSite/UseEndpointRoutingStartup.cs new file mode 100644 index 0000000000..57bc673573 --- /dev/null +++ b/src/Routing/test/WebSites/RoutingWebSite/UseEndpointRoutingStartup.cs @@ -0,0 +1,148 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.IO; +using System.Text; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Internal; +using Microsoft.AspNetCore.Routing; +using Microsoft.AspNetCore.Routing.Internal; +using Microsoft.AspNetCore.Routing.Patterns; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; + +namespace RoutingWebSite +{ + public class UseEndpointRoutingStartup + { + private static readonly byte[] _homePayload = Encoding.UTF8.GetBytes("Endpoint Routing sample endpoints:" + Environment.NewLine + "/plaintext"); + private static readonly byte[] _helloWorldPayload = Encoding.UTF8.GetBytes("Hello, World!"); + + public void ConfigureServices(IServiceCollection services) + { + services.AddTransient(); + + services.AddRouting(options => + { + options.ConstraintMap.Add("endsWith", typeof(EndsWithStringRouteConstraint)); + }); + + var endpointDataSource = new DefaultEndpointDataSource(new[] + { + new RouteEndpoint((httpContext) => + { + var response = httpContext.Response; + var payloadLength = _homePayload.Length; + response.StatusCode = 200; + response.ContentType = "text/plain"; + response.ContentLength = payloadLength; + return response.Body.WriteAsync(_homePayload, 0, payloadLength); + }, + RoutePatternFactory.Parse("/"), + 0, + EndpointMetadataCollection.Empty, + "Home"), + new RouteEndpoint((httpContext) => + { + var response = httpContext.Response; + var payloadLength = _helloWorldPayload.Length; + response.StatusCode = 200; + response.ContentType = "text/plain"; + response.ContentLength = payloadLength; + return response.Body.WriteAsync(_helloWorldPayload, 0, payloadLength); + }, + RoutePatternFactory.Parse("/plaintext"), + 0, + EndpointMetadataCollection.Empty, + "Plaintext"), + new RouteEndpoint((httpContext) => + { + var response = httpContext.Response; + response.StatusCode = 200; + response.ContentType = "text/plain"; + return response.WriteAsync("WithConstraints"); + }, + RoutePatternFactory.Parse("/withconstraints/{id:endsWith(_001)}"), + 0, + EndpointMetadataCollection.Empty, + "withconstraints"), + new RouteEndpoint((httpContext) => + { + var response = httpContext.Response; + response.StatusCode = 200; + response.ContentType = "text/plain"; + return response.WriteAsync("withoptionalconstraints"); + }, + RoutePatternFactory.Parse("/withoptionalconstraints/{id:endsWith(_001)?}"), + 0, + EndpointMetadataCollection.Empty, + "withoptionalconstraints"), + new RouteEndpoint((httpContext) => + { + using (var writer = new StreamWriter(httpContext.Response.Body, Encoding.UTF8, 1024, leaveOpen: true)) + { + var graphWriter = httpContext.RequestServices.GetRequiredService(); + var dataSource = httpContext.RequestServices.GetRequiredService(); + graphWriter.Write(dataSource, writer); + } + + return Task.CompletedTask; + }, + RoutePatternFactory.Parse("/graph"), + 0, + new EndpointMetadataCollection(new HttpMethodMetadata(new[]{ "GET", })), + "DFA Graph"), + new RouteEndpoint((httpContext) => + { + var linkGenerator = httpContext.RequestServices.GetRequiredService(); + + var response = httpContext.Response; + response.StatusCode = 200; + response.ContentType = "text/plain"; + return response.WriteAsync( + "Link: " + linkGenerator.GetPathByRouteValues(httpContext, "WithSingleAsteriskCatchAll", new { })); + }, + RoutePatternFactory.Parse("/WithSingleAsteriskCatchAll/{*path}"), + 0, + new EndpointMetadataCollection( + new RouteValuesAddressMetadata( + routeName: "WithSingleAsteriskCatchAll", + requiredValues: new RouteValueDictionary())), + "WithSingleAsteriskCatchAll"), + new RouteEndpoint((httpContext) => + { + var linkGenerator = httpContext.RequestServices.GetRequiredService(); + + var response = httpContext.Response; + response.StatusCode = 200; + response.ContentType = "text/plain"; + return response.WriteAsync( + "Link: " + linkGenerator.GetPathByRouteValues(httpContext, "WithDoubleAsteriskCatchAll", new { })); + }, + RoutePatternFactory.Parse("/WithDoubleAsteriskCatchAll/{**path}"), + 0, + new EndpointMetadataCollection( + new RouteValuesAddressMetadata( + routeName: "WithDoubleAsteriskCatchAll", + requiredValues: new RouteValueDictionary())), + "WithDoubleAsteriskCatchAll"), + }); + + services.TryAddEnumerable(ServiceDescriptor.Singleton(endpointDataSource)); + } + + public void Configure(IApplicationBuilder app) + { + app.UseEndpointRouting(); + + app.UseStaticFiles(); + + // Imagine some more stuff here... + + app.UseEndpoint(); + } + } +} diff --git a/src/Routing/test/WebSites/RoutingWebSite/UseRouterStartup.cs b/src/Routing/test/WebSites/RoutingWebSite/UseRouterStartup.cs new file mode 100644 index 0000000000..fb27ce550f --- /dev/null +++ b/src/Routing/test/WebSites/RoutingWebSite/UseRouterStartup.cs @@ -0,0 +1,43 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Text.RegularExpressions; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing; +using Microsoft.AspNetCore.Routing.Constraints; +using Microsoft.Extensions.DependencyInjection; + +namespace RoutingWebSite +{ + public class UseRouterStartup + { + private static readonly TimeSpan RegexMatchTimeout = TimeSpan.FromSeconds(10); + + public void ConfigureServices(IServiceCollection services) + { + services.AddRouting(); + } + + public void Configure(IApplicationBuilder app) + { + app.UseRouter(routes => + { + routes.DefaultHandler = new RouteHandler((httpContext) => + { + var request = httpContext.Request; + return httpContext.Response.WriteAsync($"Verb = {request.Method.ToUpperInvariant()} - Path = {request.Path} - Route values - {string.Join(", ", httpContext.GetRouteData().Values)}"); + }); + + routes.MapGet("api/get/{id}", (request, response, routeData) => response.WriteAsync($"API Get {routeData.Values["id"]}")) + .MapMiddlewareRoute("api/middleware", (appBuilder) => appBuilder.Use((httpContext, next) => httpContext.Response.WriteAsync("Middleware!"))) + .MapRoute( + name: "AllVerbs", + template: "api/all/{name}/{lastName?}", + defaults: new { lastName = "Doe" }, + constraints: new { lastName = new RegexRouteConstraint(new Regex("[a-zA-Z]{3}", RegexOptions.CultureInvariant, RegexMatchTimeout)) }); + }); + } + } +} diff --git a/src/Routing/tools/Swaggatherer/Program.cs b/src/Routing/tools/Swaggatherer/Program.cs new file mode 100644 index 0000000000..6aa30e254b --- /dev/null +++ b/src/Routing/tools/Swaggatherer/Program.cs @@ -0,0 +1,14 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace Swaggatherer +{ + internal static class Program + { + public static void Main(string[] args) + { + var application = new SwaggathererApplication(); + application.Execute(args); + } + } +} diff --git a/src/Routing/tools/Swaggatherer/README.md b/src/Routing/tools/Swaggatherer/README.md new file mode 100644 index 0000000000..aed8bce696 --- /dev/null +++ b/src/Routing/tools/Swaggatherer/README.md @@ -0,0 +1,23 @@ +# Swaggatherer (Swagger + Gatherer) + +This is a cli tool that can generate a routing benchmark using a Swagger 2.0 spec as an input. + +## Usage + +Generate a benchmark from a swagger file: +``` +dotnet run -- -i swagger.json -o MyGeneratedBenchark.generated.cs +``` + +Generate a benchmark from a directory of swagger files: +``` +dotnet run -- -d /some/directory -o MyGeneratedBenchark.generated.cs +``` + +The directory mode will recursively search for `.json` files. + +## Resources + +A big repository of swagger docs: https://github.com/APIs-guru/openapi-directory +Swagger editor + yaml <-> json conversion tool: https://editor2.swagger.io +Azure's official swagger docs: https://github.com/Azure/azure-rest-api-specs \ No newline at end of file diff --git a/src/Routing/tools/Swaggatherer/RouteEntry.cs b/src/Routing/tools/Swaggatherer/RouteEntry.cs new file mode 100644 index 0000000000..6aea6f322f --- /dev/null +++ b/src/Routing/tools/Swaggatherer/RouteEntry.cs @@ -0,0 +1,15 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Routing.Template; + +namespace Swaggatherer +{ + internal class RouteEntry + { + public RouteTemplate Template { get; set; } + public string Method { get; set; } + public decimal Precedence { get; set; } + public string RequestUrl { get; set; } + } +} diff --git a/src/Routing/tools/Swaggatherer/Swaggatherer.csproj b/src/Routing/tools/Swaggatherer/Swaggatherer.csproj new file mode 100644 index 0000000000..6874d1d5da --- /dev/null +++ b/src/Routing/tools/Swaggatherer/Swaggatherer.csproj @@ -0,0 +1,17 @@ + + + + Exe + netcoreapp2.0 + + + + + + + + + + + + diff --git a/src/Routing/tools/Swaggatherer/SwaggathererApplication.cs b/src/Routing/tools/Swaggatherer/SwaggathererApplication.cs new file mode 100644 index 0000000000..5cebbf96a2 --- /dev/null +++ b/src/Routing/tools/Swaggatherer/SwaggathererApplication.cs @@ -0,0 +1,261 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using Microsoft.AspNetCore.Routing.Template; +using Microsoft.Extensions.CommandLineUtils; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace Swaggatherer +{ + internal class SwaggathererApplication : CommandLineApplication + { + public SwaggathererApplication() + { + Invoke = InvokeCore; + + HttpMethods = Option("-m|--method", "allow multiple endpoints with different http method", CommandOptionType.NoValue); + Input = Option("-i", "input swagger 2.0 JSON file", CommandOptionType.MultipleValue); + InputDirectory = Option("-d", "input directory", CommandOptionType.SingleValue); + Output = Option("-o", "output", CommandOptionType.SingleValue); + + HelpOption("-h|--help"); + } + + public CommandOption Input { get; } + + public CommandOption InputDirectory { get; } + + // Support multiple endpoints that are distinguished only by http method. + public CommandOption HttpMethods { get; } + + public CommandOption Output { get; } + + private int InvokeCore() + { + if (!Input.HasValue() && !InputDirectory.HasValue()) + { + ShowHelp(); + return 1; + } + + if (Input.HasValue() && InputDirectory.HasValue()) + { + ShowHelp(); + return 1; + } + + if (!Output.HasValue()) + { + Output.Values.Add("Out.generated.cs"); + } + + if (InputDirectory.HasValue()) + { + Input.Values.AddRange(Directory.EnumerateFiles(InputDirectory.Value(), "*.json", SearchOption.AllDirectories)); + } + + Console.WriteLine($"Processing {Input.Values.Count} files..."); + var entries = new List(); + for (var i = 0; i < Input.Values.Count; i++) + { + var input = ReadInput(Input.Values[i]); + ParseEntries(input, entries); + } + + // We don't yet want to support complex segments. + for (var i = entries.Count - 1; i >= 0; i--) + { + if (HasComplexSegment(entries[i])) + { + Out.WriteLine("Skipping route with complex segment: " + entries[i].Template.TemplateText); + entries.RemoveAt(i); + } + } + + // The data that we're provided by might be unambiguous. + // Remove any routes that would be ambiguous in our system. + var routesByPrecedence = new Dictionary>(); + for (var i = entries.Count - 1; i >= 0; i--) + { + var entry = entries[i]; + var precedence = RoutePrecedence.ComputeInbound(entries[i].Template); + + if (!routesByPrecedence.TryGetValue(precedence, out var matches)) + { + matches = new List(); + routesByPrecedence.Add(precedence, matches); + } + + if (IsDuplicateTemplate(entry, matches)) + { + Out.WriteLine("Duplicate route template: " + entries[i].Template.TemplateText); + entries.RemoveAt(i); + continue; + } + + matches.Add(entry); + } + + // We're not too sophisticated with how we generate parameter values, just hoping for + // the best. For parameters we generate a segment that is the same length as the parameter name + // but with a minimum of 5 characters to avoid collisions. + for (var i = entries.Count - 1; i >= 0; i--) + { + entries[i].RequestUrl = GenerateRequestUrl(entries[i].Template); + if (entries[i].RequestUrl == null) + { + Out.WriteLine("Failed to create a request for: " + entries[i].Template.TemplateText); + entries.RemoveAt(i); + continue; + } + } + + Sort(entries); + + var text = Template.Execute(entries); + File.WriteAllText(Output.Value(), text); + return 0; + } + + private JObject ReadInput(string input) + { + using (var reader = File.OpenText(input)) + { + try + { + return JObject.Load(new JsonTextReader(reader)); + } + catch (JsonReaderException ex) + { + Out.WriteLine($"Error reading: {input}"); + Out.WriteLine(ex); + return new JObject(); + } + } + } + + private void ParseEntries(JObject input, List entries) + { + var basePath = ""; + if (input["basePath"] is JProperty basePathProperty) + { + basePath = basePathProperty.Value(); + } + + if (input["paths"] is JObject paths) + { + foreach (var path in paths.Properties()) + { + foreach (var method in ((JObject)path.Value).Properties()) + { + var template = basePath + path.Name; + var parsed = TemplateParser.Parse(template); + entries.Add(new RouteEntry() + { + Method = HttpMethods.HasValue() ? method.Name.ToString() : null, + Template = parsed, + Precedence = RoutePrecedence.ComputeInbound(parsed), + }); + } + } + } + } + + private bool HasComplexSegment(RouteEntry entry) + { + for (var i = 0; i < entry.Template.Segments.Count; i++) + { + if (!entry.Template.Segments[i].IsSimple) + { + return true; + } + } + + return false; + } + + private bool IsDuplicateTemplate(RouteEntry entry, List others) + { + for (var j = 0; j < others.Count; j++) + { + // This is another route with the same precedence. It is guaranteed to have the same number of segments + // of the same kinds and in the same order. We just need to check the literals. + var other = others[j]; + + var isSame = true; + for (var k = 0; k < entry.Template.Segments.Count; k++) + { + if (!string.Equals( + entry.Template.Segments[k].Parts[0].Text, + other.Template.Segments[k].Parts[0].Text, + StringComparison.OrdinalIgnoreCase)) + { + isSame = false; + break; + } + + if (HttpMethods.HasValue() && + !string.Equals(entry.Method, other.Method, StringComparison.OrdinalIgnoreCase)) + { + isSame = false; + break; + } + } + + if (isSame) + { + return true; + } + } + + return false; + } + + private static void Sort(List entries) + { + // We need to sort these in precedence order for the linear matchers. + entries.Sort((x, y) => + { + var comparison = RoutePrecedence.ComputeInbound(x.Template).CompareTo(RoutePrecedence.ComputeInbound(y.Template)); + if (comparison != 0) + { + return comparison; + } + + return x.Template.TemplateText.CompareTo(y.Template.TemplateText); + }); + } + + private static string GenerateRequestUrl(RouteTemplate template) + { + if (template.Segments.Count == 0) + { + return "/"; + } + + var url = new StringBuilder(); + for (var i = 0; i < template.Segments.Count; i++) + { + // We don't yet handle complex segments + var part = template.Segments[i].Parts[0]; + + url.Append("/"); + url.Append(part.IsLiteral ? part.Text : GenerateParameterValue(part)); + } + + return url.ToString(); + } + + private static string GenerateParameterValue(TemplatePart part) + { + var text = Guid.NewGuid().ToString(); + var length = Math.Min(text.Length, Math.Max(5, part.Name.Length)); + return text.Substring(0, length); + } + } +} diff --git a/src/Routing/tools/Swaggatherer/Template.cs b/src/Routing/tools/Swaggatherer/Template.cs new file mode 100644 index 0000000000..8774c6f578 --- /dev/null +++ b/src/Routing/tools/Swaggatherer/Template.cs @@ -0,0 +1,135 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; + +namespace Swaggatherer +{ + internal static class Template + { + public static string Execute(IReadOnlyList entries) + { + var controllerCount = 0; + var templatesVisited = new Dictionary( + StringComparer.OrdinalIgnoreCase); + + var setupEndpointsLines = new List(); + for (var i = 0; i < entries.Count; i++) + { + var entry = entries[i]; + + // In attribute routing, same template is used for all actions within that controller. The following + // simulates that where we only increment the controller count when a new endpoint for a new template + // is being created. + var template = entry.Template.TemplateText; + if (!templatesVisited.TryGetValue(template, out var visitedTemplateInfo)) + { + controllerCount++; + visitedTemplateInfo = (controllerCount, 0); + } + + // Increment the action count within a controller template + visitedTemplateInfo.ActionIndex++; + templatesVisited[template] = visitedTemplateInfo; + + var controllerName = $"Controller{visitedTemplateInfo.ControllerIndex}"; + var actionName = $"Action{visitedTemplateInfo.ActionIndex}"; + + var httpMethodText = entry.Method == null ? "httpMethod: null" : $"\"{entry.Method.ToUpperInvariant()}\""; + setupEndpointsLines.Add($" Endpoints[{i}] = CreateEndpoint(\"{template}\", \"{controllerName}\", \"{actionName}\", {httpMethodText});"); + } + + var setupRequestsLines = new List(); + for (var i = 0; i < entries.Count; i++) + { + var entry = entries[i]; + setupRequestsLines.Add($" Requests[{i}] = new DefaultHttpContext();"); + setupRequestsLines.Add($" Requests[{i}].RequestServices = CreateServices();"); + + if (entry.Method != null) + { + setupRequestsLines.Add($" Requests[{i}].Request.Method = \"{entries[i].Method.ToUpperInvariant()}\";"); + } + + setupRequestsLines.Add($" Requests[{i}].Request.Path = \"{entries[i].RequestUrl}\";"); + } + + var setupMatcherLines = new List(); + for (var i = 0; i < entries.Count; i++) + { + setupMatcherLines.Add($" builder.AddEndpoint(Endpoints[{i}]);"); + } + + return string.Format(@" +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing.Matching; + +namespace Microsoft.AspNetCore.Routing +{{ + // This code was generated by the Swaggatherer + public partial class GeneratedBenchmark : EndpointRoutingBenchmarkBase + {{ + private protected const int EndpointCount = {3}; + + private protected void SetupEndpoints() + {{ + Endpoints = new RouteEndpoint[{3}]; +{0} + }} + + private protected void SetupRequests() + {{ + Requests = new HttpContext[{3}]; +{1} + }} + + private protected Matcher SetupMatcher(MatcherBuilder builder) + {{ +{2} + return builder.Build(); + }} + + private RouteEndpoint CreateEndpoint(string template, string controllerName, string actionName, string httpMethod) + {{ + var requiredValues = new + {{ + area = (string)null, + controller = controllerName, + action = actionName, + page = (string)null + }}; + var defaults = new + {{ + area = (string)null, + controller = controllerName, + action = actionName, + page = (string)null + }}; + + var metadata = new List(); + if (httpMethod != null) + {{ + metadata.Add(new HttpMethodMetadata(new string[] {{ httpMethod }})); + }} + + return CreateEndpoint( + template, + defaults: defaults, + requiredValues: requiredValues, + metadata: metadata, + routeName: controllerName); + }} + }} +}}", + string.Join(Environment.NewLine, setupEndpointsLines), + string.Join(Environment.NewLine, setupRequestsLines), + string.Join(Environment.NewLine, setupMatcherLines), + entries.Count); + } + } +} diff --git a/src/Routing/version.props b/src/Routing/version.props index 669c874829..4889a26987 100644 --- a/src/Routing/version.props +++ b/src/Routing/version.props @@ -1,6 +1,6 @@ - + - 2.1.1 + 2.2.0 rtm $(VersionPrefix) $(VersionPrefix)-$(VersionSuffix)-final